@visactor/vrender-animate 1.0.12 → 1.0.13

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 (80) hide show
  1. package/cjs/custom/disappear/base/CustomEffectBase.d.ts +32 -0
  2. package/cjs/custom/disappear/base/CustomEffectBase.js +81 -0
  3. package/cjs/custom/disappear/base/CustomEffectBase.js.map +1 -0
  4. package/cjs/custom/disappear/base/DisappearAnimateBase.d.ts +34 -0
  5. package/cjs/custom/disappear/base/DisappearAnimateBase.js +138 -0
  6. package/cjs/custom/disappear/base/DisappearAnimateBase.js.map +1 -0
  7. package/cjs/custom/disappear/base/ImageProcessUtils.d.ts +20 -0
  8. package/cjs/custom/disappear/base/ImageProcessUtils.js +80 -0
  9. package/cjs/custom/disappear/base/ImageProcessUtils.js.map +1 -0
  10. package/cjs/custom/disappear/dissolve.d.ts +27 -0
  11. package/cjs/custom/disappear/dissolve.js +237 -0
  12. package/cjs/custom/disappear/dissolve.js.map +1 -0
  13. package/cjs/custom/disappear/distortion.d.ts +22 -0
  14. package/cjs/custom/disappear/distortion.js +120 -0
  15. package/cjs/custom/disappear/distortion.js.map +1 -0
  16. package/cjs/custom/disappear/gaussian-blur.d.ts +13 -0
  17. package/cjs/custom/disappear/gaussian-blur.js +65 -0
  18. package/cjs/custom/disappear/gaussian-blur.js.map +1 -0
  19. package/cjs/custom/disappear/glitch.d.ts +20 -0
  20. package/cjs/custom/disappear/glitch.js +161 -0
  21. package/cjs/custom/disappear/glitch.js.map +1 -0
  22. package/cjs/custom/disappear/grayscale.d.ts +23 -0
  23. package/cjs/custom/disappear/grayscale.js +126 -0
  24. package/cjs/custom/disappear/grayscale.js.map +1 -0
  25. package/cjs/custom/disappear/particle.d.ts +49 -0
  26. package/cjs/custom/disappear/particle.js +191 -0
  27. package/cjs/custom/disappear/particle.js.map +1 -0
  28. package/cjs/custom/disappear/pixelation.d.ts +13 -0
  29. package/cjs/custom/disappear/pixelation.js +48 -0
  30. package/cjs/custom/disappear/pixelation.js.map +1 -0
  31. package/cjs/custom/register.d.ts +8 -1
  32. package/cjs/custom/register.js +72 -2
  33. package/cjs/custom/register.js.map +1 -1
  34. package/cjs/custom/richtext/input-richtext.js +1 -1
  35. package/cjs/custom/richtext/output-richtext.js +1 -1
  36. package/cjs/custom/richtext/slide-out-richtext.js +1 -1
  37. package/cjs/step.d.ts +0 -1
  38. package/cjs/step.js +0 -2
  39. package/cjs/step.js.map +1 -1
  40. package/dist/index.es.js +2251 -4
  41. package/es/custom/disappear/base/CustomEffectBase.d.ts +32 -0
  42. package/es/custom/disappear/base/CustomEffectBase.js +69 -0
  43. package/es/custom/disappear/base/CustomEffectBase.js.map +1 -0
  44. package/es/custom/disappear/base/DisappearAnimateBase.d.ts +34 -0
  45. package/es/custom/disappear/base/DisappearAnimateBase.js +132 -0
  46. package/es/custom/disappear/base/DisappearAnimateBase.js.map +1 -0
  47. package/es/custom/disappear/base/ImageProcessUtils.d.ts +20 -0
  48. package/es/custom/disappear/base/ImageProcessUtils.js +72 -0
  49. package/es/custom/disappear/base/ImageProcessUtils.js.map +1 -0
  50. package/es/custom/disappear/dissolve.d.ts +27 -0
  51. package/es/custom/disappear/dissolve.js +231 -0
  52. package/es/custom/disappear/dissolve.js.map +1 -0
  53. package/es/custom/disappear/distortion.d.ts +22 -0
  54. package/es/custom/disappear/distortion.js +112 -0
  55. package/es/custom/disappear/distortion.js.map +1 -0
  56. package/es/custom/disappear/gaussian-blur.d.ts +13 -0
  57. package/es/custom/disappear/gaussian-blur.js +59 -0
  58. package/es/custom/disappear/gaussian-blur.js.map +1 -0
  59. package/es/custom/disappear/glitch.d.ts +20 -0
  60. package/es/custom/disappear/glitch.js +155 -0
  61. package/es/custom/disappear/glitch.js.map +1 -0
  62. package/es/custom/disappear/grayscale.d.ts +23 -0
  63. package/es/custom/disappear/grayscale.js +117 -0
  64. package/es/custom/disappear/grayscale.js.map +1 -0
  65. package/es/custom/disappear/particle.d.ts +49 -0
  66. package/es/custom/disappear/particle.js +185 -0
  67. package/es/custom/disappear/particle.js.map +1 -0
  68. package/es/custom/disappear/pixelation.d.ts +13 -0
  69. package/es/custom/disappear/pixelation.js +42 -0
  70. package/es/custom/disappear/pixelation.js.map +1 -0
  71. package/es/custom/register.d.ts +8 -1
  72. package/es/custom/register.js +20 -2
  73. package/es/custom/register.js.map +1 -1
  74. package/es/custom/richtext/input-richtext.js +1 -1
  75. package/es/custom/richtext/output-richtext.js +1 -1
  76. package/es/custom/richtext/slide-out-richtext.js +1 -1
  77. package/es/step.d.ts +0 -1
  78. package/es/step.js +0 -2
  79. package/es/step.js.map +1 -1
  80. package/package.json +4 -4
@@ -0,0 +1,191 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: !0
5
+ }), exports.Particle = void 0;
6
+
7
+ const CustomEffectBase_1 = require("./base/CustomEffectBase"), ImageProcessUtils_1 = require("./base/ImageProcessUtils");
8
+
9
+ class Particle extends CustomEffectBase_1.HybridEffectBase {
10
+ constructor(from, to, duration, easing, params) {
11
+ var _a, _b, _c, _d, _e;
12
+ super(from, to, duration, easing, params), this.particles = [], this.positionBuffer = null,
13
+ this.colorBuffer = null, this.particleConfig = {
14
+ effectType: (null === (_a = null == params ? void 0 : params.options) || void 0 === _a ? void 0 : _a.effectType) || "gravity",
15
+ count: (null === (_b = null == params ? void 0 : params.options) || void 0 === _b ? void 0 : _b.count) || 4e3,
16
+ size: (null === (_c = null == params ? void 0 : params.options) || void 0 === _c ? void 0 : _c.size) || 20,
17
+ strength: (null === (_d = null == params ? void 0 : params.options) || void 0 === _d ? void 0 : _d.strength) || 1.5,
18
+ useWebGL: void 0 === (null === (_e = null == params ? void 0 : params.options) || void 0 === _e ? void 0 : _e.useWebGL) || params.options.useWebGL
19
+ };
20
+ }
21
+ getShaderSources() {
22
+ return {
23
+ vertex: "\n attribute vec2 a_position;\n attribute vec4 a_color;\n attribute float a_size;\n\n uniform vec2 u_resolution;\n uniform float u_time;\n uniform float u_forceStrength;\n uniform int u_effectType;\n\n varying vec4 v_color;\n\n void main() {\n // 将像素坐标转换为剪辑空间坐标\n vec2 clipSpace = ((a_position / u_resolution) * 2.0) - 1.0;\n clipSpace.y = -clipSpace.y; // 翻转Y轴\n\n gl_Position = vec4(clipSpace, 0.0, 1.0);\n gl_PointSize = a_size;\n v_color = a_color;\n }\n ",
24
+ fragment: "\n precision mediump float;\n varying vec4 v_color;\n\n void main() {\n // 创建圆形粒子\n vec2 coord = gl_PointCoord - vec2(0.5);\n float distance = length(coord);\n\n if (distance > 0.5) {\n discard;\n }\n\n // 保持原始颜色,只调整透明度渐变\n gl_FragColor = vec4(v_color.rgb, v_color.a);\n }\n "
25
+ };
26
+ }
27
+ applyWebGLEffect(canvas) {
28
+ if (!this.gl || !this.program || !this.webglCanvas) return null;
29
+ this.setupWebGLState(canvas), 0 === this.particles.length && this.extractParticles(canvas),
30
+ this.updateParticles(canvas);
31
+ const gl = this.gl;
32
+ return gl.enable(gl.BLEND), gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA),
33
+ gl.useProgram(this.program), this.prepareAndDrawParticles(gl), this.webglCanvas;
34
+ }
35
+ applyCanvas2DEffect(canvas) {
36
+ const output = this.createOutputCanvas(canvas);
37
+ if (!output) return null;
38
+ const {canvas: outputCanvas, ctx: ctx} = output, progress = this.currentAnimationRatio;
39
+ switch (this.particleConfig.effectType) {
40
+ case "explode":
41
+ this.applyCanvas2DExplode(ctx, canvas, progress);
42
+ break;
43
+
44
+ case "gravity":
45
+ this.applyCanvas2DGravity(ctx, canvas, progress);
46
+ break;
47
+
48
+ case "vortex":
49
+ this.applyCanvas2DVortex(ctx, canvas, progress);
50
+ break;
51
+
52
+ default:
53
+ ctx.globalAlpha = Math.max(0, 1 - progress), ctx.drawImage(canvas, 0, 0);
54
+ }
55
+ return outputCanvas;
56
+ }
57
+ extractParticles(canvas) {
58
+ const tempCanvas = ImageProcessUtils_1.ImageProcessUtils.createTempCanvas(canvas.width, canvas.height, 1), tempCtx = tempCanvas.getContext("2d");
59
+ if (!tempCtx) return;
60
+ tempCtx.drawImage(canvas, 0, 0, tempCanvas.width, tempCanvas.height);
61
+ const data = tempCtx.getImageData(0, 0, tempCanvas.width, tempCanvas.height).data;
62
+ this.particles = [];
63
+ const step = Math.max(1, Math.floor(Math.sqrt(tempCanvas.width * tempCanvas.height / (1.5 * this.particleConfig.count))));
64
+ for (let y = 0; y < tempCanvas.height; y += step) for (let x = 0; x < tempCanvas.width; x += step) {
65
+ const index = 4 * (y * tempCanvas.width + x), r = data[index], g = data[index + 1], b = data[index + 2], a = data[index + 3];
66
+ if (a > 5) {
67
+ const realX = x / tempCanvas.width * canvas.width, realY = y / tempCanvas.height * canvas.height, particle = {
68
+ x: realX,
69
+ y: realY,
70
+ originX: realX,
71
+ originY: realY,
72
+ vx: 0,
73
+ vy: 0,
74
+ r: r / 255,
75
+ g: g / 255,
76
+ b: b / 255,
77
+ a: Math.max(.6, a / 255),
78
+ life: 1,
79
+ size: this.particleConfig.size * (1 + .5 * Math.random())
80
+ };
81
+ this.particles.push(particle);
82
+ }
83
+ }
84
+ }
85
+ updateParticles(canvas) {
86
+ const centerX = canvas.width / 2, centerY = canvas.height / 2, progress = this.currentAnimationRatio, duration = this.getDurationFromParent(), isShortAnimation = duration < 2e3, timeMultiplier = isShortAnimation ? Math.max(1.5, 3e3 / duration) : 1, intensityBoost = isShortAnimation ? Math.min(2, 2e3 / duration) : 1;
87
+ this.particles.forEach((particle => {
88
+ const dx = particle.x - centerX, dy = particle.y - centerY, distance = Math.sqrt(dx * dx + dy * dy), angle = Math.atan2(dy, dx);
89
+ this.applyParticleForces(particle, angle, distance, progress, intensityBoost, canvas),
90
+ this.updateParticleProperties(particle, progress, isShortAnimation, timeMultiplier, intensityBoost);
91
+ }));
92
+ }
93
+ applyParticleForces(particle, angle, distance, progress, intensityBoost, canvas) {
94
+ const time = this.getAnimationTime();
95
+ switch (this.particleConfig.effectType) {
96
+ case "explode":
97
+ const explodeIntensity = progress * this.particleConfig.strength * intensityBoost * 5;
98
+ particle.vx += Math.cos(angle) * explodeIntensity, particle.vy += Math.sin(angle) * explodeIntensity;
99
+ break;
100
+
101
+ case "gravity":
102
+ this.applyGravityEffect(particle, progress, intensityBoost, canvas, time);
103
+ break;
104
+
105
+ case "vortex":
106
+ this.applyVortexEffect(particle, progress, intensityBoost, canvas, angle, distance);
107
+ }
108
+ }
109
+ applyGravityEffect(particle, progress, intensityBoost, canvas, time) {
110
+ const gravityThreshold = (particle.originX + .7 * particle.originY) / (canvas.width + canvas.height) * .8;
111
+ if (progress > gravityThreshold) {
112
+ const gravityProgress = (progress - gravityThreshold) / (1 - gravityThreshold), gravityForce = this.particleConfig.strength * gravityProgress * gravityProgress * 12 * intensityBoost;
113
+ particle.vy += gravityForce;
114
+ const turbulence = Math.sin(3 * time + .02 * particle.originX) * Math.cos(2 * time + .015 * particle.originY);
115
+ particle.vx += turbulence * this.particleConfig.strength * 2 * intensityBoost;
116
+ }
117
+ }
118
+ applyVortexEffect(particle, progress, intensityBoost, canvas, angle, distance) {
119
+ const centerX = canvas.width / 2, centerY = canvas.height / 2, spiralAngle = angle + progress * Math.PI * .8, targetRadius = distance + progress * Math.max(canvas.width, canvas.height) * .7 * 1.8, targetX = centerX + Math.cos(spiralAngle) * targetRadius, targetY = centerY + Math.sin(spiralAngle) * targetRadius, baseForce = progress * this.particleConfig.strength * .08 * intensityBoost;
120
+ particle.vx += (targetX - particle.x) * baseForce, particle.vy += (targetY - particle.y) * baseForce;
121
+ }
122
+ updateParticleProperties(particle, progress, isShortAnimation, timeMultiplier, intensityBoost) {
123
+ const dragCoeff = isShortAnimation ? .99 : .98;
124
+ if (particle.vx *= dragCoeff, particle.vy *= dragCoeff, particle.x += particle.vx,
125
+ particle.y += particle.vy, isShortAnimation) {
126
+ const lifeDecayRate = Math.max(.1, .5 / timeMultiplier);
127
+ particle.life = Math.max(0, 1 - progress * lifeDecayRate), particle.a = Math.max(.2, particle.life * Math.min(1, 1.2 * particle.a)),
128
+ particle.size = Math.max(.7 * this.particleConfig.size, this.particleConfig.size * (.5 + .5 * particle.life));
129
+ } else particle.life = Math.max(0, 1 - .2 * progress), particle.a = Math.max(.1, particle.life * Math.min(1, 1.5 * particle.a)),
130
+ particle.size = Math.max(.5 * this.particleConfig.size, this.particleConfig.size * (.3 + .7 * particle.life));
131
+ }
132
+ prepareAndDrawParticles(gl) {
133
+ const positions = new Float32Array(2 * this.particles.length), colors = new Float32Array(4 * this.particles.length), sizes = new Float32Array(this.particles.length);
134
+ this.particles.forEach(((particle, i) => {
135
+ positions[2 * i] = particle.x, positions[2 * i + 1] = particle.y, colors[4 * i] = particle.r,
136
+ colors[4 * i + 1] = particle.g, colors[4 * i + 2] = particle.b, colors[4 * i + 3] = Math.max(.1, particle.a),
137
+ sizes[i] = Math.max(6, 1.5 * particle.size);
138
+ })), this.updateParticleBuffers(gl, positions, colors, sizes), this.setParticleUniforms(gl),
139
+ gl.drawArrays(gl.POINTS, 0, this.particles.length), this.cleanupTempBuffers(gl);
140
+ }
141
+ updateParticleBuffers(gl, positions, colors, sizes) {
142
+ this.positionBuffer || (this.positionBuffer = gl.createBuffer()), gl.bindBuffer(gl.ARRAY_BUFFER, this.positionBuffer),
143
+ gl.bufferData(gl.ARRAY_BUFFER, positions, gl.DYNAMIC_DRAW);
144
+ const positionLocation = gl.getAttribLocation(this.program, "a_position");
145
+ gl.enableVertexAttribArray(positionLocation), gl.vertexAttribPointer(positionLocation, 2, gl.FLOAT, !1, 0, 0),
146
+ this.colorBuffer || (this.colorBuffer = gl.createBuffer()), gl.bindBuffer(gl.ARRAY_BUFFER, this.colorBuffer),
147
+ gl.bufferData(gl.ARRAY_BUFFER, colors, gl.DYNAMIC_DRAW);
148
+ const colorLocation = gl.getAttribLocation(this.program, "a_color");
149
+ gl.enableVertexAttribArray(colorLocation), gl.vertexAttribPointer(colorLocation, 4, gl.FLOAT, !1, 0, 0);
150
+ const sizeBuffer = gl.createBuffer();
151
+ gl.bindBuffer(gl.ARRAY_BUFFER, sizeBuffer), gl.bufferData(gl.ARRAY_BUFFER, sizes, gl.DYNAMIC_DRAW);
152
+ const sizeLocation = gl.getAttribLocation(this.program, "a_size");
153
+ gl.enableVertexAttribArray(sizeLocation), gl.vertexAttribPointer(sizeLocation, 1, gl.FLOAT, !1, 0, 0),
154
+ this._tempSizeBuffer = sizeBuffer;
155
+ }
156
+ setParticleUniforms(gl) {
157
+ const resolutionLocation = gl.getUniformLocation(this.program, "u_resolution"), timeLocation = gl.getUniformLocation(this.program, "u_time"), forceStrengthLocation = gl.getUniformLocation(this.program, "u_forceStrength"), effectTypeLocation = gl.getUniformLocation(this.program, "u_effectType");
158
+ gl.uniform2f(resolutionLocation, this.webglCanvas.width, this.webglCanvas.height),
159
+ gl.uniform1f(timeLocation, this.getAnimationTime()), gl.uniform1f(forceStrengthLocation, this.particleConfig.strength);
160
+ gl.uniform1i(effectTypeLocation, {
161
+ explode: 0,
162
+ vortex: 1,
163
+ gravity: 2
164
+ }[this.particleConfig.effectType] || 0);
165
+ }
166
+ cleanupTempBuffers(gl) {
167
+ const tempSizeBuffer = this._tempSizeBuffer;
168
+ tempSizeBuffer && (gl.deleteBuffer(tempSizeBuffer), delete this._tempSizeBuffer);
169
+ }
170
+ applyCanvas2DExplode(ctx, canvas, progress) {
171
+ const centerX = canvas.width / 2, centerY = canvas.height / 2;
172
+ ctx.save(), ctx.globalAlpha = Math.max(0, 1 - progress), ctx.translate(centerX, centerY);
173
+ const scale = 1 + .5 * progress;
174
+ ctx.scale(scale, scale), ctx.translate(-centerX, -centerY), ctx.drawImage(canvas, 0, 0),
175
+ ctx.restore();
176
+ }
177
+ applyCanvas2DGravity(ctx, canvas, progress) {
178
+ ctx.save(), ctx.globalAlpha = Math.max(0, 1 - progress);
179
+ const offsetY = progress * canvas.height * .3;
180
+ ctx.drawImage(canvas, 0, offsetY), ctx.restore();
181
+ }
182
+ applyCanvas2DVortex(ctx, canvas, progress) {
183
+ const centerX = canvas.width / 2, centerY = canvas.height / 2;
184
+ ctx.save(), ctx.globalAlpha = Math.max(0, 1 - progress), ctx.translate(centerX, centerY),
185
+ ctx.rotate(progress * Math.PI * 2), ctx.translate(-centerX, -centerY), ctx.drawImage(canvas, 0, 0),
186
+ ctx.restore();
187
+ }
188
+ }
189
+
190
+ exports.Particle = Particle;
191
+ //# sourceMappingURL=particle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/custom/disappear/particle.ts"],"names":[],"mappings":"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","file":"particle.js","sourcesContent":["import type { EasingType } from '@visactor/vrender-core';\nimport { HybridEffectBase } from './base/CustomEffectBase';\nimport { ImageProcessUtils } from './base/ImageProcessUtils';\n\nexport interface ParticleConfig {\n effectType?: 'explode' | 'vortex' | 'gravity'; // 粒子效果类型\n count?: number; // 粒子数量\n size?: number; // 粒子大小\n strength?: number; // 力场强度\n useWebGL: boolean;\n}\n// 粒子数据结构\nexport interface ParticleData {\n x: number;\n y: number;\n originX: number;\n originY: number;\n vx: number;\n vy: number;\n r: number;\n g: number;\n b: number;\n a: number;\n life: number;\n size: number;\n}\n\n/**\n * 重构后的粒子消散特效\n * 使用HybridEffectBase,优先WebGL实现,Canvas 2D回退\n */\nexport class Particle extends HybridEffectBase {\n private particles: ParticleData[] = [];\n private positionBuffer: WebGLBuffer | null = null;\n private colorBuffer: WebGLBuffer | null = null;\n private particleConfig: ParticleConfig;\n\n constructor(from: null, to: null, duration: number, easing: EasingType, params: any) {\n super(from, to, duration, easing, params);\n\n this.particleConfig = {\n effectType: params?.options?.effectType || 'gravity', //'explode' | 'vortex' | 'gravity'; // 粒子效果类型\n count: params?.options?.count || 4000,\n size: params?.options?.size || 20,\n strength: params?.options?.strength || 1.5,\n useWebGL: params?.options?.useWebGL !== undefined ? params.options.useWebGL : true // 是否使用WebGL实现\n };\n }\n\n // WebGL实现 - 高性能版本\n protected getShaderSources(): { vertex: string; fragment: string } | null {\n const vertexShader = `\n attribute vec2 a_position;\n attribute vec4 a_color;\n attribute float a_size;\n\n uniform vec2 u_resolution;\n uniform float u_time;\n uniform float u_forceStrength;\n uniform int u_effectType;\n\n varying vec4 v_color;\n\n void main() {\n // 将像素坐标转换为剪辑空间坐标\n vec2 clipSpace = ((a_position / u_resolution) * 2.0) - 1.0;\n clipSpace.y = -clipSpace.y; // 翻转Y轴\n\n gl_Position = vec4(clipSpace, 0.0, 1.0);\n gl_PointSize = a_size;\n v_color = a_color;\n }\n `;\n\n const fragmentShader = `\n precision mediump float;\n varying vec4 v_color;\n\n void main() {\n // 创建圆形粒子\n vec2 coord = gl_PointCoord - vec2(0.5);\n float distance = length(coord);\n\n if (distance > 0.5) {\n discard;\n }\n\n // 保持原始颜色,只调整透明度渐变\n gl_FragColor = vec4(v_color.rgb, v_color.a);\n }\n `;\n\n return { vertex: vertexShader, fragment: fragmentShader };\n }\n\n protected applyWebGLEffect(canvas: HTMLCanvasElement): HTMLCanvasElement | null {\n if (!this.gl || !this.program || !this.webglCanvas) {\n return null;\n }\n\n // 使用基类提供的WebGL状态设置\n this.setupWebGLState(canvas);\n\n // 如果没有粒子,提取粒子数据\n if (this.particles.length === 0) {\n this.extractParticles(canvas);\n }\n\n // 更新粒子物理\n this.updateParticles(canvas);\n\n const gl = this.gl;\n\n // 启用混合\n gl.enable(gl.BLEND);\n gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA);\n\n gl.useProgram(this.program);\n\n // 准备粒子数据并绘制\n this.prepareAndDrawParticles(gl);\n\n return this.webglCanvas;\n }\n\n // Canvas 2D回退实现 - 简化版本,主要用于兼容性\n protected applyCanvas2DEffect(canvas: HTMLCanvasElement): HTMLCanvasElement | null {\n const output = this.createOutputCanvas(canvas);\n if (!output) {\n return null;\n }\n\n const { canvas: outputCanvas, ctx } = output;\n\n // 简化的粒子效果:使用透明度和简单变换模拟粒子消散\n const progress = this.currentAnimationRatio;\n\n // 根据效果类型应用不同的Canvas 2D模拟\n switch (this.particleConfig.effectType) {\n case 'explode':\n this.applyCanvas2DExplode(ctx, canvas, progress);\n break;\n case 'gravity':\n this.applyCanvas2DGravity(ctx, canvas, progress);\n break;\n case 'vortex':\n this.applyCanvas2DVortex(ctx, canvas, progress);\n break;\n default:\n // 默认简单透明度淡出\n ctx.globalAlpha = Math.max(0, 1 - progress);\n ctx.drawImage(canvas, 0, 0);\n }\n\n return outputCanvas;\n }\n\n /**\n * 从canvas提取粒子数据\n */\n private extractParticles(canvas: HTMLCanvasElement): void {\n const tempCanvas = ImageProcessUtils.createTempCanvas(canvas.width, canvas.height, 1);\n const tempCtx = tempCanvas.getContext('2d');\n if (!tempCtx) {\n return;\n }\n\n // 绘制原始图像到临时canvas\n tempCtx.drawImage(canvas, 0, 0, tempCanvas.width, tempCanvas.height);\n\n // 获取图像数据\n const imageData = tempCtx.getImageData(0, 0, tempCanvas.width, tempCanvas.height);\n const data = imageData.data;\n\n this.particles = [];\n\n // 计算采样步长\n const step = Math.max(\n 1,\n Math.floor(Math.sqrt((tempCanvas.width * tempCanvas.height) / (this.particleConfig.count * 1.5)))\n );\n\n for (let y = 0; y < tempCanvas.height; y += step) {\n for (let x = 0; x < tempCanvas.width; x += step) {\n const index = (y * tempCanvas.width + x) * 4;\n\n const r = data[index];\n const g = data[index + 1];\n const b = data[index + 2];\n const a = data[index + 3];\n\n // 只创建非透明像素的粒子\n if (a > 5) {\n // 将坐标转换回原始canvas尺寸\n const realX = (x / tempCanvas.width) * canvas.width;\n const realY = (y / tempCanvas.height) * canvas.height;\n\n const particle: ParticleData = {\n x: realX,\n y: realY,\n originX: realX,\n originY: realY,\n vx: 0,\n vy: 0,\n r: r / 255,\n g: g / 255,\n b: b / 255,\n a: Math.max(0.6, a / 255),\n life: 1.0,\n size: this.particleConfig.size * (1 + Math.random() * 0.5)\n };\n\n this.particles.push(particle);\n }\n }\n }\n }\n\n /**\n * 更新粒子物理模拟\n */\n private updateParticles(canvas: HTMLCanvasElement): void {\n const centerX = canvas.width / 2;\n const centerY = canvas.height / 2;\n const progress = this.currentAnimationRatio;\n const duration = this.getDurationFromParent();\n const isShortAnimation = duration < 2000;\n const timeMultiplier = isShortAnimation ? Math.max(1.5, 3000 / duration) : 1.0;\n const intensityBoost = isShortAnimation ? Math.min(2.0, 2000 / duration) : 1.0;\n\n this.particles.forEach(particle => {\n const dx = particle.x - centerX;\n const dy = particle.y - centerY;\n const distance = Math.sqrt(dx * dx + dy * dy);\n const angle = Math.atan2(dy, dx);\n\n // 根据效果类型应用不同的物理力\n this.applyParticleForces(particle, angle, distance, progress, intensityBoost, canvas);\n\n // 更新粒子属性\n this.updateParticleProperties(particle, progress, isShortAnimation, timeMultiplier, intensityBoost);\n });\n }\n\n /**\n * 根据效果类型应用粒子力\n */\n private applyParticleForces(\n particle: ParticleData,\n angle: number,\n distance: number,\n progress: number,\n intensityBoost: number,\n canvas: HTMLCanvasElement\n ): void {\n const time = this.getAnimationTime();\n\n switch (this.particleConfig.effectType) {\n case 'explode':\n const explodeIntensity = progress * this.particleConfig.strength * intensityBoost * 5;\n particle.vx += Math.cos(angle) * explodeIntensity;\n particle.vy += Math.sin(angle) * explodeIntensity;\n break;\n\n case 'gravity':\n this.applyGravityEffect(particle, progress, intensityBoost, canvas, time);\n break;\n\n case 'vortex':\n this.applyVortexEffect(particle, progress, intensityBoost, canvas, angle, distance);\n break;\n }\n }\n\n /**\n * 应用重力效果\n */\n private applyGravityEffect(\n particle: ParticleData,\n progress: number,\n intensityBoost: number,\n canvas: HTMLCanvasElement,\n time: number\n ): void {\n const gravityThreshold = ((particle.originX + particle.originY * 0.7) / (canvas.width + canvas.height)) * 0.8;\n\n if (progress > gravityThreshold) {\n const gravityProgress = (progress - gravityThreshold) / (1 - gravityThreshold);\n const gravityForce = this.particleConfig.strength * gravityProgress * gravityProgress * 12 * intensityBoost;\n\n particle.vy += gravityForce;\n\n // 添加水平随机扰动\n const turbulence = Math.sin(time * 3 + particle.originX * 0.02) * Math.cos(time * 2 + particle.originY * 0.015);\n particle.vx += turbulence * this.particleConfig.strength * 2 * intensityBoost;\n }\n }\n\n /**\n * 应用漩涡效果\n */\n private applyVortexEffect(\n particle: ParticleData,\n progress: number,\n intensityBoost: number,\n canvas: HTMLCanvasElement,\n angle: number,\n distance: number\n ): void {\n const centerX = canvas.width / 2;\n const centerY = canvas.height / 2;\n\n const spiralAngle = angle + progress * Math.PI * 0.8;\n const targetRadius = distance + progress * Math.max(canvas.width, canvas.height) * 0.7 * 1.8;\n\n const targetX = centerX + Math.cos(spiralAngle) * targetRadius;\n const targetY = centerY + Math.sin(spiralAngle) * targetRadius;\n\n const baseForce = progress * this.particleConfig.strength * 0.08 * intensityBoost;\n\n particle.vx += (targetX - particle.x) * baseForce;\n particle.vy += (targetY - particle.y) * baseForce;\n }\n\n /**\n * 更新粒子生命周期属性\n */\n private updateParticleProperties(\n particle: ParticleData,\n progress: number,\n isShortAnimation: boolean,\n timeMultiplier: number,\n intensityBoost: number\n ): void {\n // 应用阻力\n const dragCoeff = isShortAnimation ? 0.99 : 0.98;\n particle.vx *= dragCoeff;\n particle.vy *= dragCoeff;\n\n // 更新位置\n particle.x += particle.vx;\n particle.y += particle.vy;\n\n // 更新生命值和透明度\n if (isShortAnimation) {\n const lifeDecayRate = Math.max(0.1, 0.5 / timeMultiplier);\n particle.life = Math.max(0, 1 - progress * lifeDecayRate);\n particle.a = Math.max(0.2, particle.life * Math.min(1, particle.a * 1.2));\n particle.size = Math.max(this.particleConfig.size * 0.7, this.particleConfig.size * (0.5 + particle.life * 0.5));\n } else {\n particle.life = Math.max(0, 1 - progress * 0.2);\n particle.a = Math.max(0.1, particle.life * Math.min(1, particle.a * 1.5));\n particle.size = Math.max(this.particleConfig.size * 0.5, this.particleConfig.size * (0.3 + particle.life * 0.7));\n }\n }\n\n /**\n * 准备粒子数据并绘制\n */\n private prepareAndDrawParticles(gl: WebGLRenderingContext): void {\n const positions = new Float32Array(this.particles.length * 2);\n const colors = new Float32Array(this.particles.length * 4);\n const sizes = new Float32Array(this.particles.length);\n\n this.particles.forEach((particle, i) => {\n positions[i * 2] = particle.x;\n positions[i * 2 + 1] = particle.y;\n\n colors[i * 4] = particle.r;\n colors[i * 4 + 1] = particle.g;\n colors[i * 4 + 2] = particle.b;\n colors[i * 4 + 3] = Math.max(0.1, particle.a);\n\n sizes[i] = Math.max(6, particle.size * 1.5);\n });\n\n // 更新缓冲区\n this.updateParticleBuffers(gl, positions, colors, sizes);\n\n // 设置uniforms\n this.setParticleUniforms(gl);\n\n // 绘制粒子\n gl.drawArrays(gl.POINTS, 0, this.particles.length);\n\n // 清理临时缓冲区\n this.cleanupTempBuffers(gl);\n }\n\n /**\n * 更新粒子缓冲区\n */\n private updateParticleBuffers(\n gl: WebGLRenderingContext,\n positions: Float32Array,\n colors: Float32Array,\n sizes: Float32Array\n ): void {\n // 位置缓冲区\n if (!this.positionBuffer) {\n this.positionBuffer = gl.createBuffer();\n }\n gl.bindBuffer(gl.ARRAY_BUFFER, this.positionBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, positions, gl.DYNAMIC_DRAW);\n\n const positionLocation = gl.getAttribLocation(this.program, 'a_position');\n gl.enableVertexAttribArray(positionLocation);\n gl.vertexAttribPointer(positionLocation, 2, gl.FLOAT, false, 0, 0);\n\n // 颜色缓冲区\n if (!this.colorBuffer) {\n this.colorBuffer = gl.createBuffer();\n }\n gl.bindBuffer(gl.ARRAY_BUFFER, this.colorBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, colors, gl.DYNAMIC_DRAW);\n\n const colorLocation = gl.getAttribLocation(this.program, 'a_color');\n gl.enableVertexAttribArray(colorLocation);\n gl.vertexAttribPointer(colorLocation, 4, gl.FLOAT, false, 0, 0);\n\n // 大小缓冲区\n const sizeBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, sizeBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, sizes, gl.DYNAMIC_DRAW);\n\n const sizeLocation = gl.getAttribLocation(this.program, 'a_size');\n gl.enableVertexAttribArray(sizeLocation);\n gl.vertexAttribPointer(sizeLocation, 1, gl.FLOAT, false, 0, 0);\n\n // 保存临时缓冲区引用,用于清理\n (this as any)._tempSizeBuffer = sizeBuffer;\n }\n\n /**\n * 设置粒子着色器uniforms\n */\n private setParticleUniforms(gl: WebGLRenderingContext): void {\n const resolutionLocation = gl.getUniformLocation(this.program, 'u_resolution');\n const timeLocation = gl.getUniformLocation(this.program, 'u_time');\n const forceStrengthLocation = gl.getUniformLocation(this.program, 'u_forceStrength');\n const effectTypeLocation = gl.getUniformLocation(this.program, 'u_effectType');\n\n gl.uniform2f(resolutionLocation, this.webglCanvas.width, this.webglCanvas.height);\n gl.uniform1f(timeLocation, this.getAnimationTime());\n gl.uniform1f(forceStrengthLocation, this.particleConfig.strength);\n\n const effectTypeMap: { [key: string]: number } = {\n explode: 0,\n vortex: 1,\n gravity: 2\n };\n gl.uniform1i(effectTypeLocation, effectTypeMap[this.particleConfig.effectType] || 0);\n }\n\n /**\n * 清理临时缓冲区\n */\n private cleanupTempBuffers(gl: WebGLRenderingContext): void {\n const tempSizeBuffer = (this as any)._tempSizeBuffer;\n if (tempSizeBuffer) {\n gl.deleteBuffer(tempSizeBuffer);\n delete (this as any)._tempSizeBuffer;\n }\n }\n\n // Canvas 2D回退实现的具体方法\n\n /**\n * Canvas 2D爆炸效果模拟\n */\n private applyCanvas2DExplode(ctx: CanvasRenderingContext2D, canvas: HTMLCanvasElement, progress: number): void {\n const centerX = canvas.width / 2;\n const centerY = canvas.height / 2;\n\n // 简单的放大和透明度模拟爆炸效果\n ctx.save();\n ctx.globalAlpha = Math.max(0, 1 - progress);\n ctx.translate(centerX, centerY);\n const scale = 1 + progress * 0.5;\n ctx.scale(scale, scale);\n ctx.translate(-centerX, -centerY);\n ctx.drawImage(canvas, 0, 0);\n ctx.restore();\n }\n\n /**\n * Canvas 2D重力效果模拟\n */\n private applyCanvas2DGravity(ctx: CanvasRenderingContext2D, canvas: HTMLCanvasElement, progress: number): void {\n // 使用垂直偏移和透明度模拟重力下落\n ctx.save();\n ctx.globalAlpha = Math.max(0, 1 - progress);\n const offsetY = progress * canvas.height * 0.3;\n ctx.drawImage(canvas, 0, offsetY);\n ctx.restore();\n }\n\n /**\n * Canvas 2D漩涡效果模拟\n */\n private applyCanvas2DVortex(ctx: CanvasRenderingContext2D, canvas: HTMLCanvasElement, progress: number): void {\n const centerX = canvas.width / 2;\n const centerY = canvas.height / 2;\n\n // 使用旋转和透明度模拟漩涡效果\n ctx.save();\n ctx.globalAlpha = Math.max(0, 1 - progress);\n ctx.translate(centerX, centerY);\n ctx.rotate(progress * Math.PI * 2);\n ctx.translate(-centerX, -centerY);\n ctx.drawImage(canvas, 0, 0);\n ctx.restore();\n }\n}\n"]}
@@ -0,0 +1,13 @@
1
+ import type { EasingType } from '@visactor/vrender-core';
2
+ import { DisappearAnimateBase } from './base/DisappearAnimateBase';
3
+ export interface PixelationConfig {
4
+ maxPixelSize?: number;
5
+ method?: 'out' | 'in';
6
+ }
7
+ export declare class Pixelation extends DisappearAnimateBase<any> {
8
+ private pixelationConfig;
9
+ constructor(from: null, to: null, duration: number, easing: EasingType, params: any);
10
+ private applyDownsamplePixelation;
11
+ private updateAnimationProgress;
12
+ protected afterStageRender(stage: any, canvas: HTMLCanvasElement): HTMLCanvasElement | void | null | false;
13
+ }
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: !0
5
+ }), exports.Pixelation = void 0;
6
+
7
+ const vrender_core_1 = require("@visactor/vrender-core"), DisappearAnimateBase_1 = require("./base/DisappearAnimateBase");
8
+
9
+ class Pixelation extends DisappearAnimateBase_1.DisappearAnimateBase {
10
+ constructor(from, to, duration, easing, params) {
11
+ var _a, _b;
12
+ super(from, to, duration, easing, params), this.pixelationConfig = {
13
+ maxPixelSize: (null === (_a = null == params ? void 0 : params.options) || void 0 === _a ? void 0 : _a.maxPixelSize) || 20,
14
+ method: (null === (_b = null == params ? void 0 : params.options) || void 0 === _b ? void 0 : _b.method) || "out"
15
+ };
16
+ }
17
+ applyDownsamplePixelation(canvas, pixelSize) {
18
+ if (pixelSize <= 1) return canvas;
19
+ const {width: width, height: height} = canvas, smallWidth = Math.ceil(width / pixelSize), smallHeight = Math.ceil(height / pixelSize), smallCanvas = vrender_core_1.vglobal.createCanvas({
20
+ width: smallWidth,
21
+ height: smallHeight,
22
+ dpr: 1
23
+ }), smallCtx = smallCanvas.getContext("2d");
24
+ if (!smallCtx) return canvas;
25
+ const outputCanvas = vrender_core_1.vglobal.createCanvas({
26
+ width: width,
27
+ height: height,
28
+ dpr: vrender_core_1.vglobal.devicePixelRatio
29
+ }), outputCtx = outputCanvas.getContext("2d");
30
+ return outputCtx ? (smallCtx.imageSmoothingEnabled = !1, outputCtx.imageSmoothingEnabled = !1,
31
+ smallCtx.drawImage(canvas, 0, 0, smallWidth, smallHeight), outputCtx.drawImage(smallCanvas, 0, 0, width, height),
32
+ outputCanvas) : canvas;
33
+ }
34
+ updateAnimationProgress() {
35
+ if ("in" === this.pixelationConfig.method) {
36
+ return this.pixelationConfig.maxPixelSize - this.currentAnimationRatio * (this.pixelationConfig.maxPixelSize - 1);
37
+ }
38
+ return 1 + this.currentAnimationRatio * (this.pixelationConfig.maxPixelSize - 1);
39
+ }
40
+ afterStageRender(stage, canvas) {
41
+ const currentPixelSize = this.updateAnimationProgress();
42
+ if (currentPixelSize <= 1) return canvas;
43
+ return this.applyDownsamplePixelation(canvas, currentPixelSize);
44
+ }
45
+ }
46
+
47
+ exports.Pixelation = Pixelation;
48
+ //# sourceMappingURL=pixelation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/custom/disappear/pixelation.ts"],"names":[],"mappings":"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","file":"pixelation.js","sourcesContent":["import type { EasingType } from '@visactor/vrender-core';\nimport { vglobal } from '@visactor/vrender-core';\nimport { DisappearAnimateBase } from './base/DisappearAnimateBase';\n\nexport interface PixelationConfig {\n maxPixelSize?: number; // 最大像素化强度\n method?: 'out' | 'in'; // 像素化方法:out为出场效果,in为入场效果\n}\n\nexport class Pixelation extends DisappearAnimateBase<any> {\n private pixelationConfig: Required<PixelationConfig>;\n\n constructor(from: null, to: null, duration: number, easing: EasingType, params: any) {\n super(from, to, duration, easing, params);\n\n this.pixelationConfig = {\n maxPixelSize: params?.options?.maxPixelSize || 20,\n method: params?.options?.method || 'out'\n };\n }\n\n // Canvas 2D 降采样像素化\n private applyDownsamplePixelation(canvas: HTMLCanvasElement, pixelSize: number): HTMLCanvasElement {\n if (pixelSize <= 1) {\n return canvas;\n }\n\n const { width, height } = canvas;\n\n // 创建小尺寸的离屏Canvas\n const smallWidth = Math.ceil(width / pixelSize);\n const smallHeight = Math.ceil(height / pixelSize);\n\n const smallCanvas = vglobal.createCanvas({\n width: smallWidth,\n height: smallHeight,\n dpr: 1\n });\n const smallCtx = smallCanvas.getContext('2d');\n if (!smallCtx) {\n return canvas;\n }\n\n // 创建输出Canvas\n const outputCanvas = vglobal.createCanvas({\n width: width,\n height: height,\n dpr: vglobal.devicePixelRatio\n });\n const outputCtx = outputCanvas.getContext('2d');\n if (!outputCtx) {\n return canvas;\n }\n\n // 关闭图像平滑以获得清晰的像素块效果\n smallCtx.imageSmoothingEnabled = false;\n outputCtx.imageSmoothingEnabled = false;\n\n // 将原图绘制到小Canvas上(自动降采样)\n smallCtx.drawImage(canvas, 0, 0, smallWidth, smallHeight);\n\n // 将小图放大绘制到输出Canvas上\n outputCtx.drawImage(smallCanvas, 0, 0, width, height);\n\n return outputCanvas;\n }\n\n private updateAnimationProgress(): number {\n // 直接根据动画进度计算像素化强度\n\n if (this.pixelationConfig.method === 'in') {\n // 入场效果:从最大值逐渐减小到1\n const currentPixelSize =\n this.pixelationConfig.maxPixelSize - this.currentAnimationRatio * (this.pixelationConfig.maxPixelSize - 1);\n return currentPixelSize;\n }\n // 退场效果:从1逐渐增加到最大值(默认行为)\n const currentPixelSize = 1 + this.currentAnimationRatio * (this.pixelationConfig.maxPixelSize - 1);\n return currentPixelSize;\n }\n\n protected afterStageRender(stage: any, canvas: HTMLCanvasElement): HTMLCanvasElement | void | null | false {\n // 更新动画进度并获取当前像素化强度\n const currentPixelSize = this.updateAnimationProgress();\n\n // 如果像素化强度为1或更小,直接返回原图\n if (currentPixelSize <= 1) {\n return canvas;\n }\n\n // 直接使用降采样像素化方法\n const result: HTMLCanvasElement = this.applyDownsamplePixelation(canvas, currentPixelSize);\n return result;\n }\n}\n"]}
@@ -24,5 +24,12 @@ import { MotionPath } from './motionPath';
24
24
  import { FromTo } from './fromTo';
25
25
  import { GroupFadeIn, GroupFadeOut } from './groupFade';
26
26
  import { StreamLight } from './streamLight';
27
+ import { Dissolve } from './disappear/dissolve';
28
+ import { Grayscale } from './disappear/grayscale';
29
+ import { Distortion } from './disappear/distortion';
30
+ import { Particle } from './disappear/particle';
31
+ import { Glitch } from './disappear/glitch';
32
+ import { GaussianBlur } from './disappear/gaussian-blur';
33
+ import { Pixelation } from './disappear/pixelation';
27
34
  export declare const registerCustomAnimate: () => void;
28
- export { ClipIn, ClipOut, FadeIn, FadeOut, GrowAngleIn, GrowAngleOut, GrowCenterIn, GrowCenterOut, GrowHeightIn, GrowHeightOut, GrowPointsIn, GrowPointsOut, GrowPointsXIn, GrowPointsXOut, GrowPointsYIn, GrowPointsYOut, GrowRadiusIn, GrowRadiusOut, GrowWidthIn, GrowWidthOut, IncreaseCount, PoptipAppear, PoptipDisappear, ScaleIn, ScaleOut, MoveIn, MoveOut, RotateIn, RotateOut, State, Update, MotionPath, LabelItemAppear, LabelItemDisappear, InputText, InputRichText, OutputRichText, SlideRichText, SlideOutRichText, SlideIn, GrowIn, SpinIn, MoveScaleIn, MoveRotateIn, SlideOut, GrowOut, SpinOut, MoveScaleOut, MoveRotateOut, StrokeIn, StrokeOut, PulseAnimate, GroupFadeIn, GroupFadeOut, FromTo, StreamLight };
35
+ export { ClipIn, ClipOut, FadeIn, FadeOut, GrowAngleIn, GrowAngleOut, GrowCenterIn, GrowCenterOut, GrowHeightIn, GrowHeightOut, GrowPointsIn, GrowPointsOut, GrowPointsXIn, GrowPointsXOut, GrowPointsYIn, GrowPointsYOut, GrowRadiusIn, GrowRadiusOut, GrowWidthIn, GrowWidthOut, IncreaseCount, PoptipAppear, PoptipDisappear, ScaleIn, ScaleOut, MoveIn, MoveOut, RotateIn, RotateOut, State, Update, MotionPath, LabelItemAppear, LabelItemDisappear, InputText, InputRichText, OutputRichText, SlideRichText, SlideOutRichText, SlideIn, GrowIn, SpinIn, MoveScaleIn, MoveRotateIn, SlideOut, GrowOut, SpinOut, MoveScaleOut, MoveRotateOut, StrokeIn, StrokeOut, PulseAnimate, GroupFadeIn, GroupFadeOut, FromTo, StreamLight, Dissolve, Grayscale, Distortion, Particle, Glitch, GaussianBlur, Pixelation };
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  }), exports.MoveRotateOut = exports.MoveScaleOut = exports.SpinOut = exports.GrowOut = exports.SlideOut = exports.MoveRotateIn = exports.MoveScaleIn = exports.SpinIn = exports.GrowIn = exports.SlideIn = exports.SlideOutRichText = exports.SlideRichText = exports.OutputRichText = exports.InputRichText = exports.InputText = exports.LabelItemDisappear = exports.LabelItemAppear = exports.MotionPath = exports.Update = exports.State = exports.RotateOut = exports.RotateIn = exports.MoveOut = exports.MoveIn = exports.ScaleOut = exports.ScaleIn = exports.PoptipDisappear = exports.PoptipAppear = exports.IncreaseCount = exports.GrowWidthOut = exports.GrowWidthIn = exports.GrowRadiusOut = exports.GrowRadiusIn = exports.GrowPointsYOut = exports.GrowPointsYIn = exports.GrowPointsXOut = exports.GrowPointsXIn = exports.GrowPointsOut = exports.GrowPointsIn = exports.GrowHeightOut = exports.GrowHeightIn = exports.GrowCenterOut = exports.GrowCenterIn = exports.GrowAngleOut = exports.GrowAngleIn = exports.FadeOut = exports.FadeIn = exports.ClipOut = exports.ClipIn = exports.registerCustomAnimate = void 0,
6
- exports.StreamLight = exports.FromTo = exports.GroupFadeOut = exports.GroupFadeIn = exports.PulseAnimate = exports.StrokeOut = exports.StrokeIn = void 0;
6
+ exports.Pixelation = exports.GaussianBlur = exports.Glitch = exports.Particle = exports.Distortion = exports.Grayscale = exports.Dissolve = exports.StreamLight = exports.FromTo = exports.GroupFadeOut = exports.GroupFadeIn = exports.PulseAnimate = exports.StrokeOut = exports.StrokeIn = void 0;
7
7
 
8
8
  const animate_executor_1 = require("../executor/animate-executor"), clip_1 = require("./clip");
9
9
 
@@ -389,6 +389,69 @@ Object.defineProperty(exports, "StreamLight", {
389
389
  }
390
390
  });
391
391
 
392
+ const dissolve_1 = require("./disappear/dissolve");
393
+
394
+ Object.defineProperty(exports, "Dissolve", {
395
+ enumerable: !0,
396
+ get: function() {
397
+ return dissolve_1.Dissolve;
398
+ }
399
+ });
400
+
401
+ const grayscale_1 = require("./disappear/grayscale");
402
+
403
+ Object.defineProperty(exports, "Grayscale", {
404
+ enumerable: !0,
405
+ get: function() {
406
+ return grayscale_1.Grayscale;
407
+ }
408
+ });
409
+
410
+ const distortion_1 = require("./disappear/distortion");
411
+
412
+ Object.defineProperty(exports, "Distortion", {
413
+ enumerable: !0,
414
+ get: function() {
415
+ return distortion_1.Distortion;
416
+ }
417
+ });
418
+
419
+ const particle_1 = require("./disappear/particle");
420
+
421
+ Object.defineProperty(exports, "Particle", {
422
+ enumerable: !0,
423
+ get: function() {
424
+ return particle_1.Particle;
425
+ }
426
+ });
427
+
428
+ const glitch_1 = require("./disappear/glitch");
429
+
430
+ Object.defineProperty(exports, "Glitch", {
431
+ enumerable: !0,
432
+ get: function() {
433
+ return glitch_1.Glitch;
434
+ }
435
+ });
436
+
437
+ const gaussian_blur_1 = require("./disappear/gaussian-blur");
438
+
439
+ Object.defineProperty(exports, "GaussianBlur", {
440
+ enumerable: !0,
441
+ get: function() {
442
+ return gaussian_blur_1.GaussianBlur;
443
+ }
444
+ });
445
+
446
+ const pixelation_1 = require("./disappear/pixelation");
447
+
448
+ Object.defineProperty(exports, "Pixelation", {
449
+ enumerable: !0,
450
+ get: function() {
451
+ return pixelation_1.Pixelation;
452
+ }
453
+ });
454
+
392
455
  const registerCustomAnimate = () => {
393
456
  animate_executor_1.AnimateExecutor.registerBuiltInAnimate("increaseCount", number_1.IncreaseCount),
394
457
  animate_executor_1.AnimateExecutor.registerBuiltInAnimate("fromTo", fromTo_1.FromTo),
@@ -443,7 +506,14 @@ const registerCustomAnimate = () => {
443
506
  animate_executor_1.AnimateExecutor.registerBuiltInAnimate("strokeOut", story_1.StrokeOut),
444
507
  animate_executor_1.AnimateExecutor.registerBuiltInAnimate("pulse", story_1.PulseAnimate),
445
508
  animate_executor_1.AnimateExecutor.registerBuiltInAnimate("MotionPath", motionPath_1.MotionPath),
446
- animate_executor_1.AnimateExecutor.registerBuiltInAnimate("streamLight", streamLight_1.StreamLight);
509
+ animate_executor_1.AnimateExecutor.registerBuiltInAnimate("streamLight", streamLight_1.StreamLight),
510
+ animate_executor_1.AnimateExecutor.registerBuiltInAnimate("dissolve", dissolve_1.Dissolve),
511
+ animate_executor_1.AnimateExecutor.registerBuiltInAnimate("grayscale", grayscale_1.Grayscale),
512
+ animate_executor_1.AnimateExecutor.registerBuiltInAnimate("distortion", distortion_1.Distortion),
513
+ animate_executor_1.AnimateExecutor.registerBuiltInAnimate("particle", particle_1.Particle),
514
+ animate_executor_1.AnimateExecutor.registerBuiltInAnimate("glitch", glitch_1.Glitch),
515
+ animate_executor_1.AnimateExecutor.registerBuiltInAnimate("gaussianBlur", gaussian_blur_1.GaussianBlur),
516
+ animate_executor_1.AnimateExecutor.registerBuiltInAnimate("pixelation", pixelation_1.Pixelation);
447
517
  };
448
518
 
449
519
  exports.registerCustomAnimate = registerCustomAnimate;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/custom/register.ts"],"names":[],"mappings":"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","file":"register.js","sourcesContent":["import { AnimateExecutor } from '../executor/animate-executor';\nimport { ClipIn, ClipOut } from './clip';\nimport { FadeIn, FadeOut } from './fade';\nimport { GrowAngleIn, GrowAngleOut } from './growAngle';\nimport { GrowCenterIn, GrowCenterOut } from './growCenter';\nimport { GrowHeightIn, GrowHeightOut } from './growHeight';\nimport {\n GrowPointsIn,\n GrowPointsOut,\n GrowPointsXIn,\n GrowPointsXOut,\n GrowPointsYIn,\n GrowPointsYOut\n} from './growPoints';\nimport { GrowRadiusIn, GrowRadiusOut } from './growRadius';\nimport { GrowWidthIn, GrowWidthOut } from './growWidth';\nimport { InputText } from './input-text';\nimport { LabelItemAppear, LabelItemDisappear } from './label-item-animate';\nimport { IncreaseCount } from './number';\nimport { PoptipAppear, PoptipDisappear } from './poptip-animate';\nimport { InputRichText } from './richtext/input-richtext';\nimport { OutputRichText } from './richtext/output-richtext';\nimport { SlideRichText } from './richtext/slide-richtext';\nimport { SlideOutRichText } from './richtext/slide-out-richtext';\nimport { ScaleIn, ScaleOut } from './scale';\nimport { State } from './state';\nimport {\n GrowIn,\n GrowOut,\n MoveRotateIn,\n MoveRotateOut,\n MoveScaleIn,\n MoveScaleOut,\n PulseAnimate,\n SlideIn,\n SlideOut,\n SpinIn,\n SpinOut,\n StrokeIn,\n StrokeOut\n} from './story';\nimport { Update } from './update';\nimport { MoveIn, MoveOut } from './move';\nimport { RotateIn, RotateOut } from './rotate';\nimport { MotionPath } from './motionPath';\nimport { FromTo } from './fromTo';\nimport { GroupFadeIn, GroupFadeOut } from './groupFade';\nimport { StreamLight } from './streamLight';\n\nexport const registerCustomAnimate = () => {\n // 基础动画\n AnimateExecutor.registerBuiltInAnimate('increaseCount', IncreaseCount);\n\n AnimateExecutor.registerBuiltInAnimate('fromTo', FromTo);\n AnimateExecutor.registerBuiltInAnimate('scaleIn', ScaleIn);\n AnimateExecutor.registerBuiltInAnimate('scaleOut', ScaleOut);\n AnimateExecutor.registerBuiltInAnimate('growHeightIn', GrowHeightIn);\n AnimateExecutor.registerBuiltInAnimate('growHeightOut', GrowHeightOut);\n AnimateExecutor.registerBuiltInAnimate('growWidthIn', GrowWidthIn);\n AnimateExecutor.registerBuiltInAnimate('growWidthOut', GrowWidthOut);\n AnimateExecutor.registerBuiltInAnimate('growCenterIn', GrowCenterIn);\n AnimateExecutor.registerBuiltInAnimate('growCenterOut', GrowCenterOut);\n AnimateExecutor.registerBuiltInAnimate('clipIn', ClipIn);\n AnimateExecutor.registerBuiltInAnimate('clipOut', ClipOut);\n AnimateExecutor.registerBuiltInAnimate('fadeIn', FadeIn);\n AnimateExecutor.registerBuiltInAnimate('fadeOut', FadeOut);\n AnimateExecutor.registerBuiltInAnimate('growPointsIn', GrowPointsIn);\n AnimateExecutor.registerBuiltInAnimate('growPointsOut', GrowPointsOut);\n AnimateExecutor.registerBuiltInAnimate('growPointsXIn', GrowPointsXIn);\n AnimateExecutor.registerBuiltInAnimate('growPointsXOut', GrowPointsXOut);\n AnimateExecutor.registerBuiltInAnimate('growPointsYIn', GrowPointsYIn);\n AnimateExecutor.registerBuiltInAnimate('growPointsYOut', GrowPointsYOut);\n AnimateExecutor.registerBuiltInAnimate('growAngleIn', GrowAngleIn);\n AnimateExecutor.registerBuiltInAnimate('growAngleOut', GrowAngleOut);\n AnimateExecutor.registerBuiltInAnimate('growRadiusIn', GrowRadiusIn);\n AnimateExecutor.registerBuiltInAnimate('growRadiusOut', GrowRadiusOut);\n AnimateExecutor.registerBuiltInAnimate('moveIn', MoveIn);\n AnimateExecutor.registerBuiltInAnimate('moveOut', MoveOut);\n AnimateExecutor.registerBuiltInAnimate('rotateIn', RotateIn);\n AnimateExecutor.registerBuiltInAnimate('rotateOut', RotateOut);\n // state和update共用一个自定义动画类\n AnimateExecutor.registerBuiltInAnimate('update', Update);\n AnimateExecutor.registerBuiltInAnimate('state', State);\n // Label item animations\n AnimateExecutor.registerBuiltInAnimate('labelItemAppear', LabelItemAppear);\n AnimateExecutor.registerBuiltInAnimate('labelItemDisappear', LabelItemDisappear);\n // Poptip animations\n AnimateExecutor.registerBuiltInAnimate('poptipAppear', PoptipAppear);\n AnimateExecutor.registerBuiltInAnimate('poptipDisappear', PoptipDisappear);\n\n // Text input animations\n AnimateExecutor.registerBuiltInAnimate('inputText', InputText);\n AnimateExecutor.registerBuiltInAnimate('inputRichText', InputRichText);\n AnimateExecutor.registerBuiltInAnimate('outputRichText', OutputRichText);\n AnimateExecutor.registerBuiltInAnimate('slideRichText', SlideRichText);\n AnimateExecutor.registerBuiltInAnimate('slideOutRichText', SlideOutRichText);\n\n // 故事化动画 - 入场\n AnimateExecutor.registerBuiltInAnimate('slideIn', SlideIn);\n AnimateExecutor.registerBuiltInAnimate('growIn', GrowIn);\n AnimateExecutor.registerBuiltInAnimate('spinIn', SpinIn);\n AnimateExecutor.registerBuiltInAnimate('moveScaleIn', MoveScaleIn);\n AnimateExecutor.registerBuiltInAnimate('moveRotateIn', MoveRotateIn);\n AnimateExecutor.registerBuiltInAnimate('strokeIn', StrokeIn);\n\n // 故事化动画 - 出场\n AnimateExecutor.registerBuiltInAnimate('slideOut', SlideOut);\n AnimateExecutor.registerBuiltInAnimate('growOut', GrowOut);\n AnimateExecutor.registerBuiltInAnimate('spinOut', SpinOut);\n AnimateExecutor.registerBuiltInAnimate('moveScaleOut', MoveScaleOut);\n AnimateExecutor.registerBuiltInAnimate('moveRotateOut', MoveRotateOut);\n AnimateExecutor.registerBuiltInAnimate('strokeOut', StrokeOut);\n\n // 特效动画\n AnimateExecutor.registerBuiltInAnimate('pulse', PulseAnimate);\n\n // 路径动画\n AnimateExecutor.registerBuiltInAnimate('MotionPath', MotionPath);\n // 流光动画\n AnimateExecutor.registerBuiltInAnimate('streamLight', StreamLight);\n};\n\nexport {\n ClipIn,\n ClipOut,\n FadeIn,\n FadeOut,\n GrowAngleIn,\n GrowAngleOut,\n GrowCenterIn,\n GrowCenterOut,\n GrowHeightIn,\n GrowHeightOut,\n GrowPointsIn,\n GrowPointsOut,\n GrowPointsXIn,\n GrowPointsXOut,\n GrowPointsYIn,\n GrowPointsYOut,\n GrowRadiusIn,\n GrowRadiusOut,\n GrowWidthIn,\n GrowWidthOut,\n IncreaseCount,\n PoptipAppear,\n PoptipDisappear,\n ScaleIn,\n ScaleOut,\n MoveIn,\n MoveOut,\n RotateIn,\n RotateOut,\n State,\n Update,\n MotionPath,\n LabelItemAppear,\n LabelItemDisappear,\n InputText,\n InputRichText,\n OutputRichText,\n SlideRichText,\n SlideOutRichText,\n SlideIn,\n GrowIn,\n SpinIn,\n MoveScaleIn,\n MoveRotateIn,\n SlideOut,\n GrowOut,\n SpinOut,\n MoveScaleOut,\n MoveRotateOut,\n StrokeIn,\n StrokeOut,\n PulseAnimate,\n GroupFadeIn,\n GroupFadeOut,\n FromTo,\n StreamLight\n};\n"]}
1
+ {"version":3,"sources":["../src/custom/register.ts"],"names":[],"mappings":"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","file":"register.js","sourcesContent":["import { AnimateExecutor } from '../executor/animate-executor';\nimport { ClipIn, ClipOut } from './clip';\nimport { FadeIn, FadeOut } from './fade';\nimport { GrowAngleIn, GrowAngleOut } from './growAngle';\nimport { GrowCenterIn, GrowCenterOut } from './growCenter';\nimport { GrowHeightIn, GrowHeightOut } from './growHeight';\nimport {\n GrowPointsIn,\n GrowPointsOut,\n GrowPointsXIn,\n GrowPointsXOut,\n GrowPointsYIn,\n GrowPointsYOut\n} from './growPoints';\nimport { GrowRadiusIn, GrowRadiusOut } from './growRadius';\nimport { GrowWidthIn, GrowWidthOut } from './growWidth';\nimport { InputText } from './input-text';\nimport { LabelItemAppear, LabelItemDisappear } from './label-item-animate';\nimport { IncreaseCount } from './number';\nimport { PoptipAppear, PoptipDisappear } from './poptip-animate';\nimport { InputRichText } from './richtext/input-richtext';\nimport { OutputRichText } from './richtext/output-richtext';\nimport { SlideRichText } from './richtext/slide-richtext';\nimport { SlideOutRichText } from './richtext/slide-out-richtext';\nimport { ScaleIn, ScaleOut } from './scale';\nimport { State } from './state';\nimport {\n GrowIn,\n GrowOut,\n MoveRotateIn,\n MoveRotateOut,\n MoveScaleIn,\n MoveScaleOut,\n PulseAnimate,\n SlideIn,\n SlideOut,\n SpinIn,\n SpinOut,\n StrokeIn,\n StrokeOut\n} from './story';\nimport { Update } from './update';\nimport { MoveIn, MoveOut } from './move';\nimport { RotateIn, RotateOut } from './rotate';\nimport { MotionPath } from './motionPath';\nimport { FromTo } from './fromTo';\nimport { GroupFadeIn, GroupFadeOut } from './groupFade';\nimport { StreamLight } from './streamLight';\nimport { Dissolve } from './disappear/dissolve';\nimport { Grayscale } from './disappear/grayscale';\nimport { Distortion } from './disappear/distortion';\nimport { Particle } from './disappear/particle';\nimport { Glitch } from './disappear/glitch';\nimport { GaussianBlur } from './disappear/gaussian-blur';\nimport { Pixelation } from './disappear/pixelation';\n\nexport const registerCustomAnimate = () => {\n // 基础动画\n AnimateExecutor.registerBuiltInAnimate('increaseCount', IncreaseCount);\n\n AnimateExecutor.registerBuiltInAnimate('fromTo', FromTo);\n AnimateExecutor.registerBuiltInAnimate('scaleIn', ScaleIn);\n AnimateExecutor.registerBuiltInAnimate('scaleOut', ScaleOut);\n AnimateExecutor.registerBuiltInAnimate('growHeightIn', GrowHeightIn);\n AnimateExecutor.registerBuiltInAnimate('growHeightOut', GrowHeightOut);\n AnimateExecutor.registerBuiltInAnimate('growWidthIn', GrowWidthIn);\n AnimateExecutor.registerBuiltInAnimate('growWidthOut', GrowWidthOut);\n AnimateExecutor.registerBuiltInAnimate('growCenterIn', GrowCenterIn);\n AnimateExecutor.registerBuiltInAnimate('growCenterOut', GrowCenterOut);\n AnimateExecutor.registerBuiltInAnimate('clipIn', ClipIn);\n AnimateExecutor.registerBuiltInAnimate('clipOut', ClipOut);\n AnimateExecutor.registerBuiltInAnimate('fadeIn', FadeIn);\n AnimateExecutor.registerBuiltInAnimate('fadeOut', FadeOut);\n AnimateExecutor.registerBuiltInAnimate('growPointsIn', GrowPointsIn);\n AnimateExecutor.registerBuiltInAnimate('growPointsOut', GrowPointsOut);\n AnimateExecutor.registerBuiltInAnimate('growPointsXIn', GrowPointsXIn);\n AnimateExecutor.registerBuiltInAnimate('growPointsXOut', GrowPointsXOut);\n AnimateExecutor.registerBuiltInAnimate('growPointsYIn', GrowPointsYIn);\n AnimateExecutor.registerBuiltInAnimate('growPointsYOut', GrowPointsYOut);\n AnimateExecutor.registerBuiltInAnimate('growAngleIn', GrowAngleIn);\n AnimateExecutor.registerBuiltInAnimate('growAngleOut', GrowAngleOut);\n AnimateExecutor.registerBuiltInAnimate('growRadiusIn', GrowRadiusIn);\n AnimateExecutor.registerBuiltInAnimate('growRadiusOut', GrowRadiusOut);\n AnimateExecutor.registerBuiltInAnimate('moveIn', MoveIn);\n AnimateExecutor.registerBuiltInAnimate('moveOut', MoveOut);\n AnimateExecutor.registerBuiltInAnimate('rotateIn', RotateIn);\n AnimateExecutor.registerBuiltInAnimate('rotateOut', RotateOut);\n // state和update共用一个自定义动画类\n AnimateExecutor.registerBuiltInAnimate('update', Update);\n AnimateExecutor.registerBuiltInAnimate('state', State);\n // Label item animations\n AnimateExecutor.registerBuiltInAnimate('labelItemAppear', LabelItemAppear);\n AnimateExecutor.registerBuiltInAnimate('labelItemDisappear', LabelItemDisappear);\n // Poptip animations\n AnimateExecutor.registerBuiltInAnimate('poptipAppear', PoptipAppear);\n AnimateExecutor.registerBuiltInAnimate('poptipDisappear', PoptipDisappear);\n\n // Text input animations\n AnimateExecutor.registerBuiltInAnimate('inputText', InputText);\n AnimateExecutor.registerBuiltInAnimate('inputRichText', InputRichText);\n AnimateExecutor.registerBuiltInAnimate('outputRichText', OutputRichText);\n AnimateExecutor.registerBuiltInAnimate('slideRichText', SlideRichText);\n AnimateExecutor.registerBuiltInAnimate('slideOutRichText', SlideOutRichText);\n\n // 故事化动画 - 入场\n AnimateExecutor.registerBuiltInAnimate('slideIn', SlideIn);\n AnimateExecutor.registerBuiltInAnimate('growIn', GrowIn);\n AnimateExecutor.registerBuiltInAnimate('spinIn', SpinIn);\n AnimateExecutor.registerBuiltInAnimate('moveScaleIn', MoveScaleIn);\n AnimateExecutor.registerBuiltInAnimate('moveRotateIn', MoveRotateIn);\n AnimateExecutor.registerBuiltInAnimate('strokeIn', StrokeIn);\n\n // 故事化动画 - 出场\n AnimateExecutor.registerBuiltInAnimate('slideOut', SlideOut);\n AnimateExecutor.registerBuiltInAnimate('growOut', GrowOut);\n AnimateExecutor.registerBuiltInAnimate('spinOut', SpinOut);\n AnimateExecutor.registerBuiltInAnimate('moveScaleOut', MoveScaleOut);\n AnimateExecutor.registerBuiltInAnimate('moveRotateOut', MoveRotateOut);\n AnimateExecutor.registerBuiltInAnimate('strokeOut', StrokeOut);\n\n // 特效动画\n AnimateExecutor.registerBuiltInAnimate('pulse', PulseAnimate);\n\n // 路径动画\n AnimateExecutor.registerBuiltInAnimate('MotionPath', MotionPath);\n // 流光动画\n AnimateExecutor.registerBuiltInAnimate('streamLight', StreamLight);\n\n // 退场动画\n AnimateExecutor.registerBuiltInAnimate('dissolve', Dissolve);\n AnimateExecutor.registerBuiltInAnimate('grayscale', Grayscale);\n AnimateExecutor.registerBuiltInAnimate('distortion', Distortion);\n AnimateExecutor.registerBuiltInAnimate('particle', Particle);\n AnimateExecutor.registerBuiltInAnimate('glitch', Glitch);\n AnimateExecutor.registerBuiltInAnimate('gaussianBlur', GaussianBlur);\n AnimateExecutor.registerBuiltInAnimate('pixelation', Pixelation);\n};\n\nexport {\n ClipIn,\n ClipOut,\n FadeIn,\n FadeOut,\n GrowAngleIn,\n GrowAngleOut,\n GrowCenterIn,\n GrowCenterOut,\n GrowHeightIn,\n GrowHeightOut,\n GrowPointsIn,\n GrowPointsOut,\n GrowPointsXIn,\n GrowPointsXOut,\n GrowPointsYIn,\n GrowPointsYOut,\n GrowRadiusIn,\n GrowRadiusOut,\n GrowWidthIn,\n GrowWidthOut,\n IncreaseCount,\n PoptipAppear,\n PoptipDisappear,\n ScaleIn,\n ScaleOut,\n MoveIn,\n MoveOut,\n RotateIn,\n RotateOut,\n State,\n Update,\n MotionPath,\n LabelItemAppear,\n LabelItemDisappear,\n InputText,\n InputRichText,\n OutputRichText,\n SlideRichText,\n SlideOutRichText,\n SlideIn,\n GrowIn,\n SpinIn,\n MoveScaleIn,\n MoveRotateIn,\n SlideOut,\n GrowOut,\n SpinOut,\n MoveScaleOut,\n MoveRotateOut,\n StrokeIn,\n StrokeOut,\n PulseAnimate,\n GroupFadeIn,\n GroupFadeOut,\n FromTo,\n StreamLight,\n Dissolve,\n Grayscale,\n Distortion,\n Particle,\n Glitch,\n GaussianBlur,\n Pixelation\n};\n"]}
@@ -77,4 +77,4 @@ class InputRichText extends custom_animate_1.ACustomAnimate {
77
77
  }
78
78
 
79
79
  exports.InputRichText = InputRichText;
80
- //# sourceMappingURL=input-richtext.js.map
80
+ //# sourceMappingURL=input-richtext.js.map
@@ -91,4 +91,4 @@ class OutputRichText extends custom_animate_1.ACustomAnimate {
91
91
  }
92
92
 
93
93
  exports.OutputRichText = OutputRichText;
94
- //# sourceMappingURL=output-richtext.js.map
94
+ //# sourceMappingURL=output-richtext.js.map
@@ -143,4 +143,4 @@ class SlideOutRichText extends custom_animate_1.ACustomAnimate {
143
143
  }
144
144
 
145
145
  exports.SlideOutRichText = SlideOutRichText;
146
- //# sourceMappingURL=slide-out-richtext.js.map
146
+ //# sourceMappingURL=slide-out-richtext.js.map
package/cjs/step.d.ts CHANGED
@@ -47,7 +47,6 @@ export declare class Step implements IStep {
47
47
  export declare class WaitStep extends Step {
48
48
  constructor(type: IAnimateStepType, props: Record<string, any>, duration: number, easing: EasingType);
49
49
  onStart(): void;
50
- onFirstRun(): void;
51
50
  update(end: boolean, ratio: number, out: Record<string, any>): void;
52
51
  determineInterpolateUpdateFunction(): void;
53
52
  }
package/cjs/step.js CHANGED
@@ -128,8 +128,6 @@ class WaitStep extends Step {
128
128
  }
129
129
  onStart() {
130
130
  super.onStart();
131
- }
132
- onFirstRun() {
133
131
  const fromProps = this.getFromProps();
134
132
  this.target.setAttributes(fromProps);
135
133
  }