@visactor/vrender-animate 0.22.4

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 (303) hide show
  1. package/README.md +177 -0
  2. package/cjs/animate-extension.d.ts +15 -0
  3. package/cjs/animate-extension.js +46 -0
  4. package/cjs/animate-extension.js.map +1 -0
  5. package/cjs/animate.d.ts +71 -0
  6. package/cjs/animate.js +210 -0
  7. package/cjs/animate.js.map +1 -0
  8. package/cjs/custom/clip-graphic.d.ts +53 -0
  9. package/cjs/custom/clip-graphic.js +146 -0
  10. package/cjs/custom/clip-graphic.js.map +1 -0
  11. package/cjs/custom/clip.d.ts +13 -0
  12. package/cjs/custom/clip.js +24 -0
  13. package/cjs/custom/clip.js.map +1 -0
  14. package/cjs/custom/common.d.ts +22 -0
  15. package/cjs/custom/common.js +58 -0
  16. package/cjs/custom/common.js.map +1 -0
  17. package/cjs/custom/custom-animate.d.ts +15 -0
  18. package/cjs/custom/custom-animate.js +25 -0
  19. package/cjs/custom/custom-animate.js.map +1 -0
  20. package/cjs/custom/fade.d.ts +13 -0
  21. package/cjs/custom/fade.js +24 -0
  22. package/cjs/custom/fade.js.map +1 -0
  23. package/cjs/custom/group-fade.d.ts +16 -0
  24. package/cjs/custom/group-fade.js +66 -0
  25. package/cjs/custom/group-fade.js.map +1 -0
  26. package/cjs/custom/growAngle.d.ts +37 -0
  27. package/cjs/custom/growAngle.js +140 -0
  28. package/cjs/custom/growAngle.js.map +1 -0
  29. package/cjs/custom/growCenter.d.ts +17 -0
  30. package/cjs/custom/growCenter.js +161 -0
  31. package/cjs/custom/growCenter.js.map +1 -0
  32. package/cjs/custom/growHeight.d.ts +36 -0
  33. package/cjs/custom/growHeight.js +154 -0
  34. package/cjs/custom/growHeight.js.map +1 -0
  35. package/cjs/custom/growPoints.d.ts +52 -0
  36. package/cjs/custom/growPoints.js +227 -0
  37. package/cjs/custom/growPoints.js.map +1 -0
  38. package/cjs/custom/growRadius.d.ts +41 -0
  39. package/cjs/custom/growRadius.js +113 -0
  40. package/cjs/custom/growRadius.js.map +1 -0
  41. package/cjs/custom/growWidth.d.ts +36 -0
  42. package/cjs/custom/growWidth.js +154 -0
  43. package/cjs/custom/growWidth.js.map +1 -0
  44. package/cjs/custom/input-text.d.ts +29 -0
  45. package/cjs/custom/input-text.js +45 -0
  46. package/cjs/custom/input-text.js.map +1 -0
  47. package/cjs/custom/number.d.ts +25 -0
  48. package/cjs/custom/number.js +102 -0
  49. package/cjs/custom/number.js.map +1 -0
  50. package/cjs/custom/register.d.ts +1 -0
  51. package/cjs/custom/register.js +35 -0
  52. package/cjs/custom/register.js.map +1 -0
  53. package/cjs/custom/scale-in.d.ts +13 -0
  54. package/cjs/custom/scale-in.js +57 -0
  55. package/cjs/custom/scale-in.js.map +1 -0
  56. package/cjs/custom/scale.d.ts +20 -0
  57. package/cjs/custom/scale.js +106 -0
  58. package/cjs/custom/scale.js.map +1 -0
  59. package/cjs/custom/sphere.d.ts +20 -0
  60. package/cjs/custom/sphere.js +26 -0
  61. package/cjs/custom/sphere.js.map +1 -0
  62. package/cjs/custom/state.d.ts +13 -0
  63. package/cjs/custom/state.js +25 -0
  64. package/cjs/custom/state.js.map +1 -0
  65. package/cjs/custom/tag-points.d.ts +26 -0
  66. package/cjs/custom/tag-points.js +81 -0
  67. package/cjs/custom/tag-points.js.map +1 -0
  68. package/cjs/custom/update.d.ts +14 -0
  69. package/cjs/custom/update.js +26 -0
  70. package/cjs/custom/update.js.map +1 -0
  71. package/cjs/executor/animate-executor.d.ts +36 -0
  72. package/cjs/executor/animate-executor.js +177 -0
  73. package/cjs/executor/animate-executor.js.map +1 -0
  74. package/cjs/executor/executor.d.ts +69 -0
  75. package/cjs/executor/executor.js +6 -0
  76. package/cjs/executor/executor.js.map +1 -0
  77. package/cjs/index.d.ts +25 -0
  78. package/cjs/index.js +214 -0
  79. package/cjs/index.js.map +1 -0
  80. package/cjs/interpolate/executor.d.ts +66 -0
  81. package/cjs/interpolate/executor.js +6 -0
  82. package/cjs/interpolate/executor.js.map +1 -0
  83. package/cjs/interpolate/number.d.ts +1 -0
  84. package/cjs/interpolate/number.js +10 -0
  85. package/cjs/interpolate/number.js.map +1 -0
  86. package/cjs/interpolate/store.d.ts +32 -0
  87. package/cjs/interpolate/store.js +96 -0
  88. package/cjs/interpolate/store.js.map +1 -0
  89. package/cjs/intreface/animate.d.ts +91 -0
  90. package/cjs/intreface/animate.js +10 -0
  91. package/cjs/intreface/animate.js.map +1 -0
  92. package/cjs/intreface/easing.d.ts +3 -0
  93. package/cjs/intreface/easing.js +6 -0
  94. package/cjs/intreface/easing.js.map +1 -0
  95. package/cjs/intreface/state.d.ts +35 -0
  96. package/cjs/intreface/state.js +6 -0
  97. package/cjs/intreface/state.js.map +1 -0
  98. package/cjs/intreface/ticker.d.ts +37 -0
  99. package/cjs/intreface/ticker.js +10 -0
  100. package/cjs/intreface/ticker.js.map +1 -0
  101. package/cjs/intreface/timeline.d.ts +17 -0
  102. package/cjs/intreface/timeline.js +6 -0
  103. package/cjs/intreface/timeline.js.map +1 -0
  104. package/cjs/intreface/type.d.ts +13 -0
  105. package/cjs/intreface/type.js +15 -0
  106. package/cjs/intreface/type.js.map +1 -0
  107. package/cjs/register.d.ts +1 -0
  108. package/cjs/register.js +19 -0
  109. package/cjs/register.js.map +1 -0
  110. package/cjs/state/animation-state-machine.d.ts +22 -0
  111. package/cjs/state/animation-state-machine.js +53 -0
  112. package/cjs/state/animation-state-machine.js.map +1 -0
  113. package/cjs/state/animation-state-queue.d.ts +24 -0
  114. package/cjs/state/animation-state-queue.js +66 -0
  115. package/cjs/state/animation-state-queue.js.map +1 -0
  116. package/cjs/state/animation-state-registry.d.ts +14 -0
  117. package/cjs/state/animation-state-registry.js +53 -0
  118. package/cjs/state/animation-state-registry.js.map +1 -0
  119. package/cjs/state/animation-state.d.ts +25 -0
  120. package/cjs/state/animation-state.js +80 -0
  121. package/cjs/state/animation-state.js.map +1 -0
  122. package/cjs/state/animation-states-registry.d.ts +17 -0
  123. package/cjs/state/animation-states-registry.js +95 -0
  124. package/cjs/state/animation-states-registry.js.map +1 -0
  125. package/cjs/state/graphic-extension.d.ts +12 -0
  126. package/cjs/state/graphic-extension.js +37 -0
  127. package/cjs/state/graphic-extension.js.map +1 -0
  128. package/cjs/state/index.d.ts +3 -0
  129. package/cjs/state/index.js +22 -0
  130. package/cjs/state/index.js.map +1 -0
  131. package/cjs/state/types.d.ts +11 -0
  132. package/cjs/state/types.js +6 -0
  133. package/cjs/state/types.js.map +1 -0
  134. package/cjs/step.d.ts +49 -0
  135. package/cjs/step.js +124 -0
  136. package/cjs/step.js.map +1 -0
  137. package/cjs/ticker/default-ticker.d.ts +39 -0
  138. package/cjs/ticker/default-ticker.js +133 -0
  139. package/cjs/ticker/default-ticker.js.map +1 -0
  140. package/cjs/ticker/manual-ticker.d.ts +6 -0
  141. package/cjs/ticker/manual-ticker.js +37 -0
  142. package/cjs/ticker/manual-ticker.js.map +1 -0
  143. package/cjs/timeline.d.ts +34 -0
  144. package/cjs/timeline.js +84 -0
  145. package/cjs/timeline.js.map +1 -0
  146. package/cjs/utils/easing-func.d.ts +1 -0
  147. package/cjs/utils/easing-func.js +16 -0
  148. package/cjs/utils/easing-func.js.map +1 -0
  149. package/cjs/utils/easing.d.ts +49 -0
  150. package/cjs/utils/easing.js +141 -0
  151. package/cjs/utils/easing.js.map +1 -0
  152. package/dist/index.es.js +3824 -0
  153. package/es/animate-extension.d.ts +15 -0
  154. package/es/animate-extension.js +42 -0
  155. package/es/animate-extension.js.map +1 -0
  156. package/es/animate.d.ts +71 -0
  157. package/es/animate.js +207 -0
  158. package/es/animate.js.map +1 -0
  159. package/es/custom/clip-graphic.d.ts +53 -0
  160. package/es/custom/clip-graphic.js +134 -0
  161. package/es/custom/clip-graphic.js.map +1 -0
  162. package/es/custom/clip.d.ts +13 -0
  163. package/es/custom/clip.js +14 -0
  164. package/es/custom/clip.js.map +1 -0
  165. package/es/custom/common.d.ts +22 -0
  166. package/es/custom/common.js +48 -0
  167. package/es/custom/common.js.map +1 -0
  168. package/es/custom/custom-animate.d.ts +15 -0
  169. package/es/custom/custom-animate.js +17 -0
  170. package/es/custom/custom-animate.js.map +1 -0
  171. package/es/custom/fade.d.ts +13 -0
  172. package/es/custom/fade.js +14 -0
  173. package/es/custom/fade.js.map +1 -0
  174. package/es/custom/group-fade.d.ts +16 -0
  175. package/es/custom/group-fade.js +56 -0
  176. package/es/custom/group-fade.js.map +1 -0
  177. package/es/custom/growAngle.d.ts +37 -0
  178. package/es/custom/growAngle.js +132 -0
  179. package/es/custom/growAngle.js.map +1 -0
  180. package/es/custom/growCenter.d.ts +17 -0
  181. package/es/custom/growCenter.js +155 -0
  182. package/es/custom/growCenter.js.map +1 -0
  183. package/es/custom/growHeight.d.ts +36 -0
  184. package/es/custom/growHeight.js +144 -0
  185. package/es/custom/growHeight.js.map +1 -0
  186. package/es/custom/growPoints.d.ts +52 -0
  187. package/es/custom/growPoints.js +219 -0
  188. package/es/custom/growPoints.js.map +1 -0
  189. package/es/custom/growRadius.d.ts +41 -0
  190. package/es/custom/growRadius.js +105 -0
  191. package/es/custom/growRadius.js.map +1 -0
  192. package/es/custom/growWidth.d.ts +36 -0
  193. package/es/custom/growWidth.js +144 -0
  194. package/es/custom/growWidth.js.map +1 -0
  195. package/es/custom/input-text.d.ts +29 -0
  196. package/es/custom/input-text.js +37 -0
  197. package/es/custom/input-text.js.map +1 -0
  198. package/es/custom/number.d.ts +25 -0
  199. package/es/custom/number.js +94 -0
  200. package/es/custom/number.js.map +1 -0
  201. package/es/custom/register.d.ts +1 -0
  202. package/es/custom/register.js +39 -0
  203. package/es/custom/register.js.map +1 -0
  204. package/es/custom/scale-in.d.ts +13 -0
  205. package/es/custom/scale-in.js +49 -0
  206. package/es/custom/scale-in.js.map +1 -0
  207. package/es/custom/scale.d.ts +20 -0
  208. package/es/custom/scale.js +96 -0
  209. package/es/custom/scale.js.map +1 -0
  210. package/es/custom/sphere.d.ts +20 -0
  211. package/es/custom/sphere.js +20 -0
  212. package/es/custom/sphere.js.map +1 -0
  213. package/es/custom/state.d.ts +13 -0
  214. package/es/custom/state.js +17 -0
  215. package/es/custom/state.js.map +1 -0
  216. package/es/custom/tag-points.d.ts +26 -0
  217. package/es/custom/tag-points.js +77 -0
  218. package/es/custom/tag-points.js.map +1 -0
  219. package/es/custom/update.d.ts +14 -0
  220. package/es/custom/update.js +18 -0
  221. package/es/custom/update.js.map +1 -0
  222. package/es/executor/animate-executor.d.ts +36 -0
  223. package/es/executor/animate-executor.js +169 -0
  224. package/es/executor/animate-executor.js.map +1 -0
  225. package/es/executor/executor.d.ts +69 -0
  226. package/es/executor/executor.js +2 -0
  227. package/es/executor/executor.js.map +1 -0
  228. package/es/index.d.ts +25 -0
  229. package/es/index.js +50 -0
  230. package/es/index.js.map +1 -0
  231. package/es/interpolate/executor.d.ts +66 -0
  232. package/es/interpolate/executor.js +2 -0
  233. package/es/interpolate/executor.js.map +1 -0
  234. package/es/interpolate/number.d.ts +1 -0
  235. package/es/interpolate/number.js +4 -0
  236. package/es/interpolate/number.js.map +1 -0
  237. package/es/interpolate/store.d.ts +32 -0
  238. package/es/interpolate/store.js +88 -0
  239. package/es/interpolate/store.js.map +1 -0
  240. package/es/intreface/animate.d.ts +91 -0
  241. package/es/intreface/animate.js +6 -0
  242. package/es/intreface/animate.js.map +1 -0
  243. package/es/intreface/easing.d.ts +3 -0
  244. package/es/intreface/easing.js +2 -0
  245. package/es/intreface/easing.js.map +1 -0
  246. package/es/intreface/state.d.ts +35 -0
  247. package/es/intreface/state.js +2 -0
  248. package/es/intreface/state.js.map +1 -0
  249. package/es/intreface/ticker.d.ts +37 -0
  250. package/es/intreface/ticker.js +6 -0
  251. package/es/intreface/ticker.js.map +1 -0
  252. package/es/intreface/timeline.d.ts +17 -0
  253. package/es/intreface/timeline.js +2 -0
  254. package/es/intreface/timeline.js.map +1 -0
  255. package/es/intreface/type.d.ts +13 -0
  256. package/es/intreface/type.js +14 -0
  257. package/es/intreface/type.js.map +1 -0
  258. package/es/register.d.ts +1 -0
  259. package/es/register.js +20 -0
  260. package/es/register.js.map +1 -0
  261. package/es/state/animation-state-machine.d.ts +22 -0
  262. package/es/state/animation-state-machine.js +47 -0
  263. package/es/state/animation-state-machine.js.map +1 -0
  264. package/es/state/animation-state-queue.d.ts +24 -0
  265. package/es/state/animation-state-queue.js +58 -0
  266. package/es/state/animation-state-queue.js.map +1 -0
  267. package/es/state/animation-state-registry.d.ts +14 -0
  268. package/es/state/animation-state-registry.js +45 -0
  269. package/es/state/animation-state-registry.js.map +1 -0
  270. package/es/state/animation-state.d.ts +25 -0
  271. package/es/state/animation-state.js +72 -0
  272. package/es/state/animation-state.js.map +1 -0
  273. package/es/state/animation-states-registry.d.ts +17 -0
  274. package/es/state/animation-states-registry.js +87 -0
  275. package/es/state/animation-states-registry.js.map +1 -0
  276. package/es/state/graphic-extension.d.ts +12 -0
  277. package/es/state/graphic-extension.js +29 -0
  278. package/es/state/graphic-extension.js.map +1 -0
  279. package/es/state/index.d.ts +3 -0
  280. package/es/state/index.js +6 -0
  281. package/es/state/index.js.map +1 -0
  282. package/es/state/types.d.ts +11 -0
  283. package/es/state/types.js +2 -0
  284. package/es/state/types.js.map +1 -0
  285. package/es/step.d.ts +49 -0
  286. package/es/step.js +120 -0
  287. package/es/step.js.map +1 -0
  288. package/es/ticker/default-ticker.d.ts +39 -0
  289. package/es/ticker/default-ticker.js +129 -0
  290. package/es/ticker/default-ticker.js.map +1 -0
  291. package/es/ticker/manual-ticker.d.ts +6 -0
  292. package/es/ticker/manual-ticker.js +29 -0
  293. package/es/ticker/manual-ticker.js.map +1 -0
  294. package/es/timeline.d.ts +34 -0
  295. package/es/timeline.js +79 -0
  296. package/es/timeline.js.map +1 -0
  297. package/es/utils/easing-func.d.ts +1 -0
  298. package/es/utils/easing-func.js +8 -0
  299. package/es/utils/easing-func.js.map +1 -0
  300. package/es/utils/easing.d.ts +49 -0
  301. package/es/utils/easing.js +134 -0
  302. package/es/utils/easing.js.map +1 -0
  303. package/package.json +72 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/custom/growWidth.ts"],"names":[],"mappings":"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","file":"growWidth.js","sourcesContent":["import type { IGraphic, IGroup } from '@visactor/vrender-core';\nimport { isNil, isNumber, isValid } from '@visactor/vutils';\nimport type { IAnimate, IStep } from '../intreface/animate';\nimport type { EasingType } from '../intreface/easing';\nimport { ACustomAnimate } from './custom-animate';\n\ninterface IGrowCartesianAnimationOptions {\n orient?: 'positive' | 'negative';\n overall?: boolean | number;\n direction?: 'x' | 'y' | 'xy';\n}\n\ninterface IAnimationParameters {\n width: number;\n height: number;\n group: IGroup;\n elementIndex: number;\n elementCount: number;\n view: any;\n}\n\ntype TypeAnimation<T extends IGraphic> = (\n graphic: T,\n options: any,\n animationParameters: IAnimationParameters\n) => { from?: { [channel: string]: any }; to?: { [channel: string]: any } };\n\nfunction growWidthInIndividual(\n graphic: IGraphic,\n options: IGrowCartesianAnimationOptions,\n animationParameters: IAnimationParameters\n) {\n const attrs = graphic.getFinalAttribute();\n const x = attrs.x;\n const x1 = attrs.x1;\n const width = attrs.width;\n\n if (options && options.orient === 'negative') {\n const computedX1 = isValid(width) ? Math.max(x, x + width) : Math.max(x, x1);\n\n return {\n from: { x: computedX1, x1: isNil(x1) ? undefined : computedX1, width: isNil(width) ? undefined : 0 },\n to: { x: x, x1: x1, width: width }\n };\n }\n\n const computedX = isValid(width) ? Math.min(x, x + width) : Math.min(x, x1);\n return {\n from: { x: computedX, x1: isNil(x1) ? undefined : computedX, width: isNil(width) ? undefined : 0 },\n to: { x: x, x1: x1, width: width }\n };\n}\n\nfunction growWidthInOverall(\n graphic: IGraphic,\n options: IGrowCartesianAnimationOptions,\n animationParameters: IAnimationParameters\n) {\n const attrs = graphic.getFinalAttribute();\n // no need to handle the situation where x > x1\n const x = attrs.x;\n const x1 = attrs.x1;\n const width = attrs.width;\n let overallValue: number;\n if (options && options.orient === 'negative') {\n if (isNumber(options.overall)) {\n overallValue = options.overall;\n } else if (animationParameters.group) {\n overallValue = (animationParameters as any).groupWidth ?? animationParameters.group.getBounds().width();\n\n (animationParameters as any).groupWidth = overallValue;\n } else {\n overallValue = animationParameters.width;\n }\n } else {\n overallValue = isNumber(options?.overall) ? options?.overall : 0;\n }\n return {\n from: { x: overallValue, x1: isNil(x1) ? undefined : overallValue, width: isNil(width) ? undefined : 0 },\n to: { x: x, x1: x1, width: width }\n };\n}\n\nconst growWidthIn: TypeAnimation<IGraphic> = (\n graphic: IGraphic,\n options: IGrowCartesianAnimationOptions,\n animationParameters: IAnimationParameters\n) => {\n return (options?.overall ?? false) !== false\n ? growWidthInOverall(graphic, options, animationParameters)\n : growWidthInIndividual(graphic, options, animationParameters);\n};\n\nfunction growWidthOutIndividual(\n graphic: IGraphic,\n options: IGrowCartesianAnimationOptions,\n animationParameters: IAnimationParameters\n) {\n const attrs = graphic.getFinalAttribute();\n const x = attrs.x;\n const x1 = attrs.x1;\n const width = attrs.width;\n\n if (options && options.orient === 'negative') {\n const computedX1 = isValid(width) ? Math.max(x, x + width) : Math.max(x, x1);\n\n return {\n to: { x: computedX1, x1: isNil(x1) ? undefined : computedX1, width: isNil(width) ? undefined : 0 }\n };\n }\n\n const computedX = isValid(width) ? Math.min(x, x + width) : Math.min(x, x1);\n return {\n to: { x: computedX, x1: isNil(x1) ? undefined : computedX, width: isNil(width) ? undefined : 0 }\n };\n}\n\nfunction growWidthOutOverall(\n graphic: IGraphic,\n options: IGrowCartesianAnimationOptions,\n animationParameters: IAnimationParameters\n) {\n const attrs = graphic.getFinalAttribute();\n const x1 = attrs.x1;\n const width = attrs.width;\n\n let overallValue: number;\n if (options && options.orient === 'negative') {\n if (isNumber(options.overall)) {\n overallValue = options.overall;\n } else if (animationParameters.group) {\n overallValue = (animationParameters as any).groupWidth ?? animationParameters.group.getBounds().width();\n\n (animationParameters as any).groupWidth = overallValue;\n } else {\n overallValue = animationParameters.width;\n }\n } else {\n overallValue = isNumber(options?.overall) ? options.overall : 0;\n }\n return {\n to: { x: overallValue, x1: isNil(x1) ? undefined : overallValue, width: isNil(width) ? undefined : 0 }\n };\n}\n\nexport const growWidthOut: TypeAnimation<IGraphic> = (\n graphic: IGraphic,\n options: IGrowCartesianAnimationOptions,\n animationParameters: IAnimationParameters\n) => {\n return (options?.overall ?? false) !== false\n ? growWidthOutOverall(graphic, options, animationParameters)\n : growWidthOutIndividual(graphic, options, animationParameters);\n};\n\n/**\n * 增长渐入\n */\nexport class GrowWidthIn extends ACustomAnimate<Record<string, number>> {\n declare valid: boolean;\n\n constructor(from: null, to: null, duration: number, easing: EasingType, params?: any) {\n super(from, to, duration, easing, params);\n }\n\n onBind(): void {\n const { from, to } = growWidthIn(this.target, this.params.options, this.params);\n const fromAttrs = this.target.context.lastAttrs ?? from;\n this.props = to;\n this.propKeys = Object.keys(to).filter(key => to[key] != null);\n this.animate.reSyncProps();\n this.from = fromAttrs;\n this.to = to;\n this.target.setAttributes(fromAttrs);\n }\n\n onEnd(cb?: (animate: IAnimate, step: IStep) => void): void {\n super.onEnd(cb);\n }\n\n onUpdate(end: boolean, ratio: number, out: Record<string, any>): void {\n this.propKeys.forEach(key => {\n out[key] = this.from[key] + (this.to[key] - this.from[key]) * ratio;\n });\n this.target.setAttributes(out);\n }\n}\n\nexport class GrowWidthOut extends ACustomAnimate<Record<string, number>> {\n declare valid: boolean;\n\n constructor(from: null, to: null, duration: number, easing: EasingType, params?: any) {\n super(from, to, duration, easing, params);\n }\n\n onBind(): void {\n const attrs = this.target.getFinalAttribute();\n const { from, to } = growWidthOut(this.target, this.params.options, this.params);\n this.props = to;\n this.propKeys = Object.keys(to).filter(key => to[key] != null);\n this.animate.reSyncProps();\n this.from = from || attrs;\n this.to = to;\n // this.target.setAttributes(from);\n }\n\n onEnd(cb?: (animate: IAnimate, step: IStep) => void): void {\n super.onEnd(cb);\n }\n\n onUpdate(end: boolean, ratio: number, out: Record<string, any>): void {\n this.propKeys.forEach(key => {\n out[key] = this.from[key] + (this.to[key] - this.from[key]) * ratio;\n });\n this.target.setAttributes(out);\n }\n}\n"]}
@@ -0,0 +1,29 @@
1
+ import type { IAnimate, IStep } from '../intreface/animate';
2
+ import type { EasingType } from '../intreface/easing';
3
+ import { ACustomAnimate } from './custom-animate';
4
+ export declare class InputText extends ACustomAnimate<{
5
+ text: string;
6
+ }> {
7
+ valid: boolean;
8
+ private fromText;
9
+ private toText;
10
+ private showCursor;
11
+ private cursorChar;
12
+ private blinkCursor;
13
+ private beforeText;
14
+ private afterText;
15
+ constructor(from: {
16
+ text: string;
17
+ }, to: {
18
+ text: string;
19
+ }, duration: number, easing: EasingType, params?: {
20
+ showCursor?: boolean;
21
+ cursorChar?: string;
22
+ blinkCursor?: boolean;
23
+ beforeText?: string;
24
+ afterText?: string;
25
+ });
26
+ onFirstRun(): void;
27
+ onEnd(cb?: (animate: IAnimate, step: IStep) => void): void;
28
+ onUpdate(end: boolean, ratio: number, out: Record<string, any>): void;
29
+ }
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: !0
5
+ }), exports.InputText = void 0;
6
+
7
+ const custom_animate_1 = require("./custom-animate");
8
+
9
+ class InputText extends custom_animate_1.ACustomAnimate {
10
+ constructor(from, to, duration, easing, params) {
11
+ super(from, to, duration, easing, params), this.fromText = "", this.toText = "",
12
+ this.showCursor = !1, this.cursorChar = "|", this.blinkCursor = !0, this.beforeText = "",
13
+ this.afterText = "", void 0 !== (null == params ? void 0 : params.showCursor) && (this.showCursor = params.showCursor),
14
+ void 0 !== (null == params ? void 0 : params.cursorChar) && (this.cursorChar = params.cursorChar),
15
+ void 0 !== (null == params ? void 0 : params.blinkCursor) && (this.blinkCursor = params.blinkCursor),
16
+ void 0 !== (null == params ? void 0 : params.beforeText) && (this.beforeText = params.beforeText),
17
+ void 0 !== (null == params ? void 0 : params.afterText) && (this.afterText = params.afterText);
18
+ }
19
+ onFirstRun() {
20
+ var _a, _b;
21
+ const fromProps = this.getLastProps(), toProps = this.getEndProps(), fromText = null !== (_a = fromProps.text) && void 0 !== _a ? _a : "", toText = null !== (_b = toProps.text) && void 0 !== _b ? _b : "";
22
+ this.valid = !0, this.fromText = fromText.toString(), this.toText = toText.toString(),
23
+ this.toText || "" === this.toText || (this.valid = !1);
24
+ }
25
+ onEnd(cb) {
26
+ super.onEnd(cb), cb || (this.showCursor && !this.blinkCursor ? this.target.setAttribute("text", this.beforeText + this.toText + this.cursorChar + this.afterText) : this.target.setAttribute("text", this.beforeText + this.toText + this.afterText));
27
+ }
28
+ onUpdate(end, ratio, out) {
29
+ if (!this.valid) return;
30
+ const totalChars = this.toText.length, fromChars = this.fromText.length;
31
+ let currentLength, currentText;
32
+ fromChars > totalChars ? (currentLength = Math.round(fromChars - (fromChars - totalChars) * ratio),
33
+ currentText = this.fromText.substring(0, currentLength)) : (currentLength = Math.round(fromChars + (totalChars - fromChars) * ratio),
34
+ currentText = this.toText.startsWith(this.fromText) ? this.toText.substring(0, currentLength) : currentLength <= fromChars ? this.fromText.substring(0, currentLength) : this.toText.substring(0, currentLength - fromChars + Math.min(fromChars, currentLength)));
35
+ let displayText = this.beforeText + currentText + this.afterText;
36
+ if (this.showCursor) if (this.blinkCursor) {
37
+ const blinkRate = .1;
38
+ Math.floor(ratio / blinkRate) % 2 == 0 && (displayText = this.beforeText + currentText + this.cursorChar + this.afterText);
39
+ } else displayText = this.beforeText + currentText + this.cursorChar + this.afterText;
40
+ this.target.setAttribute("text", displayText);
41
+ }
42
+ }
43
+
44
+ exports.InputText = InputText;
45
+ //# sourceMappingURL=input-text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/custom/input-text.ts"],"names":[],"mappings":"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","file":"input-text.js","sourcesContent":["import type { IAnimate, IStep } from '../intreface/animate';\nimport type { EasingType } from '../intreface/easing';\nimport { ACustomAnimate } from './custom-animate';\n\n/**\n * 文本输入动画,实现类似打字机的字符逐个显示效果\n * 支持通过beforeText和afterText参数添加前缀和后缀\n * 支持通过showCursor参数显示光标,cursorChar自定义光标字符\n */\nexport class InputText extends ACustomAnimate<{ text: string }> {\n declare valid: boolean;\n\n private fromText: string = '';\n private toText: string = '';\n private showCursor: boolean = false;\n private cursorChar: string = '|';\n private blinkCursor: boolean = true;\n private beforeText: string = '';\n private afterText: string = '';\n\n constructor(\n from: { text: string },\n to: { text: string },\n duration: number,\n easing: EasingType,\n params?: {\n showCursor?: boolean;\n cursorChar?: string;\n blinkCursor?: boolean;\n beforeText?: string;\n afterText?: string;\n }\n ) {\n super(from, to, duration, easing, params);\n\n // 配置光标相关选项\n if (params?.showCursor !== undefined) {\n this.showCursor = params.showCursor;\n }\n if (params?.cursorChar !== undefined) {\n this.cursorChar = params.cursorChar;\n }\n if (params?.blinkCursor !== undefined) {\n this.blinkCursor = params.blinkCursor;\n }\n\n // 配置前缀和后缀文本\n if (params?.beforeText !== undefined) {\n this.beforeText = params.beforeText;\n }\n if (params?.afterText !== undefined) {\n this.afterText = params.afterText;\n }\n }\n\n onFirstRun(): void {\n const fromProps = this.getLastProps();\n const toProps = this.getEndProps();\n const fromText = fromProps.text ?? '';\n const toText = toProps.text ?? '';\n\n // 初始化解析结果\n this.valid = true;\n\n // 存储文本用于动画\n this.fromText = fromText.toString();\n this.toText = toText.toString();\n\n // 确保to不为空\n if (!this.toText && this.toText !== '') {\n this.valid = false;\n return;\n }\n }\n\n onEnd(cb?: (animate: IAnimate, step: IStep) => void): void {\n super.onEnd(cb);\n if (!cb) {\n // 动画结束时,显示完整文本(不带闪烁光标)\n if (this.showCursor && !this.blinkCursor) {\n // 如果有光标但不闪烁,保留光标\n this.target.setAttribute('text', this.beforeText + this.toText + this.cursorChar + this.afterText);\n } else {\n // 不显示光标\n this.target.setAttribute('text', this.beforeText + this.toText + this.afterText);\n }\n }\n }\n\n onUpdate(end: boolean, ratio: number, out: Record<string, any>): void {\n if (!this.valid) {\n return;\n }\n\n // 计算当前应该显示的字符数量\n const totalChars = this.toText.length;\n const fromChars = this.fromText.length;\n\n // 如果fromText比toText长,则是删除动画\n // 否则是添加动画\n let currentLength: number;\n let currentText: string;\n\n if (fromChars > totalChars) {\n // 删除文本动画(从多到少)\n currentLength = Math.round(fromChars - (fromChars - totalChars) * ratio);\n currentText = this.fromText.substring(0, currentLength);\n } else {\n // 添加文本动画(从少到多)\n currentLength = Math.round(fromChars + (totalChars - fromChars) * ratio);\n\n // 如果fromText是toText的前缀,则直接使用toText的子串\n if (this.toText.startsWith(this.fromText)) {\n currentText = this.toText.substring(0, currentLength);\n } else {\n // 否则需要在fromText和toText之间进行过渡\n if (currentLength <= fromChars) {\n currentText = this.fromText.substring(0, currentLength);\n } else {\n currentText = this.toText.substring(0, currentLength - fromChars + Math.min(fromChars, currentLength));\n }\n }\n }\n\n // 构建最终显示的文本\n let displayText = this.beforeText + currentText + this.afterText;\n\n // 添加光标效果\n if (this.showCursor) {\n if (this.blinkCursor) {\n // 闪烁效果:在动画期间,光标每半个周期闪烁一次\n const blinkRate = 0.1; // 光标闪烁频率(每10%动画进度闪烁一次)\n const showCursorNow = Math.floor(ratio / blinkRate) % 2 === 0;\n\n if (showCursorNow) {\n displayText = this.beforeText + currentText + this.cursorChar + this.afterText;\n }\n } else {\n // 固定光标(不闪烁)\n displayText = this.beforeText + currentText + this.cursorChar + this.afterText;\n }\n }\n\n // 更新图形的text属性\n this.target.setAttribute('text', displayText);\n }\n}\n"]}
@@ -0,0 +1,25 @@
1
+ import type { IAnimate, IStep } from '../intreface/animate';
2
+ import type { EasingType } from '../intreface/easing';
3
+ import { ACustomAnimate } from './custom-animate';
4
+ export declare class IncreaseCount extends ACustomAnimate<{
5
+ text: string | number;
6
+ }> {
7
+ valid: boolean;
8
+ private fromNumber;
9
+ private toNumber;
10
+ private decimalLength;
11
+ private format;
12
+ private formatTemplate;
13
+ constructor(from: {
14
+ text: string | number;
15
+ }, to: {
16
+ text: string | number;
17
+ }, duration: number, easing: EasingType, params?: {
18
+ decimalLength?: number;
19
+ format?: 'percent' | 'thousandth' | 'none';
20
+ formatTemplate?: string;
21
+ });
22
+ onFirstRun(): void;
23
+ onEnd(cb?: (animate: IAnimate, step: IStep) => void): void;
24
+ onUpdate(end: boolean, ratio: number, out: Record<string, any>): void;
25
+ }
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: !0
5
+ }), exports.IncreaseCount = void 0;
6
+
7
+ const custom_animate_1 = require("./custom-animate");
8
+
9
+ class IncreaseCount extends custom_animate_1.ACustomAnimate {
10
+ constructor(from, to, duration, easing, params) {
11
+ super(from, to, duration, easing, params), this.formatTemplate = null, this.decimalLength = null == params ? void 0 : params.decimalLength,
12
+ (null == params ? void 0 : params.formatTemplate) && params.formatTemplate.includes("{{var}}") && (this.formatTemplate = params.formatTemplate);
13
+ }
14
+ onFirstRun() {
15
+ var _a, _b, _c;
16
+ const fromProps = this.getLastProps(), toProps = this.getEndProps(), fromText = null !== (_a = fromProps.text) && void 0 !== _a ? _a : 0, toText = null !== (_b = toProps.text) && void 0 !== _b ? _b : 0;
17
+ this.valid = !0;
18
+ let fromNum = 0, toNum = 0, fromFormat = "", toFormat = "", maxDecimalLength = 0;
19
+ if ("number" == typeof fromText) {
20
+ fromNum = fromText;
21
+ const decimalPart = fromText.toString().split(".")[1] || "";
22
+ maxDecimalLength = Math.max(maxDecimalLength, decimalPart.length);
23
+ } else {
24
+ if ("string" != typeof fromText) return void (this.valid = !1);
25
+ if (fromText.endsWith("%")) {
26
+ fromFormat = "%";
27
+ const cleanNumStr = fromText.substring(0, fromText.length - 1).replace(/,/g, "");
28
+ if (fromNum = parseFloat(cleanNumStr) / 100, isNaN(fromNum)) return void (this.valid = !1);
29
+ const decimalPart = cleanNumStr.split(".")[1] || "";
30
+ maxDecimalLength = Math.max(maxDecimalLength, decimalPart.length + 2);
31
+ } else {
32
+ const cleanNumStr = fromText.replace(/,/g, "");
33
+ if (fromNum = parseFloat(cleanNumStr), isNaN(fromNum)) return void (this.valid = !1);
34
+ fromText.includes(",") && (fromFormat = ",");
35
+ const decimalPart = cleanNumStr.split(".")[1] || "";
36
+ maxDecimalLength = Math.max(maxDecimalLength, decimalPart.length);
37
+ }
38
+ }
39
+ if ("number" == typeof toText) {
40
+ toNum = toText;
41
+ const decimalPart = toText.toString().split(".")[1] || "";
42
+ maxDecimalLength = Math.max(maxDecimalLength, decimalPart.length);
43
+ } else {
44
+ if ("string" != typeof toText) return void (this.valid = !1);
45
+ if (toText.endsWith("%")) {
46
+ toFormat = "%";
47
+ const cleanNumStr = toText.substring(0, toText.length - 1).replace(/,/g, "");
48
+ if (toNum = parseFloat(cleanNumStr) / 100, isNaN(toNum)) return void (this.valid = !1);
49
+ const decimalPart = cleanNumStr.split(".")[1] || "";
50
+ maxDecimalLength = Math.max(maxDecimalLength, decimalPart.length + 2);
51
+ } else {
52
+ const cleanNumStr = toText.replace(/,/g, "");
53
+ if (toNum = parseFloat(cleanNumStr), isNaN(toNum)) return void (this.valid = !1);
54
+ toText.includes(",") && (toFormat = ",");
55
+ const decimalPart = cleanNumStr.split(".")[1] || "";
56
+ maxDecimalLength = Math.max(maxDecimalLength, decimalPart.length);
57
+ }
58
+ }
59
+ if (null === (_c = this.params) || void 0 === _c ? void 0 : _c.format) {
60
+ switch (this.params.format) {
61
+ case "percent":
62
+ this.format = "%";
63
+ break;
64
+
65
+ case "thousandth":
66
+ this.format = ",";
67
+ break;
68
+
69
+ case "none":
70
+ this.format = "";
71
+ break;
72
+
73
+ default:
74
+ this.format = toFormat || fromFormat;
75
+ }
76
+ "%" === this.format && "%" !== toFormat && "%" !== fromFormat && void 0 === this.decimalLength && (this.decimalLength = 2),
77
+ "%" === this.format || "%" !== toFormat && "%" !== fromFormat || (fromNum *= 100,
78
+ toNum *= 100);
79
+ } else this.format = toFormat || fromFormat;
80
+ this.fromNumber = fromNum, this.toNumber = toNum, void 0 === this.decimalLength && (this.decimalLength = maxDecimalLength);
81
+ }
82
+ onEnd(cb) {
83
+ super.onEnd(cb), cb || this.props && this.target.setAttributes(this.props);
84
+ }
85
+ onUpdate(end, ratio, out) {
86
+ if (!this.valid) return;
87
+ const currentNumber = this.fromNumber + (this.toNumber - this.fromNumber) * ratio;
88
+ let formattedText = "";
89
+ const format = this.format, numberWithDecimals = ("%" === format ? 100 * currentNumber : currentNumber).toFixed(this.decimalLength);
90
+ let formattedWithBasicFormat, formattedNumber = numberWithDecimals;
91
+ if (parseFloat(numberWithDecimals) === Math.floor(parseFloat(numberWithDecimals)) && (formattedNumber = Math.floor(parseFloat(numberWithDecimals))),
92
+ "%" === format) formattedWithBasicFormat = `${formattedNumber}%`; else if ("," === format) {
93
+ const parts = formattedNumber.toString().split(".");
94
+ parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ","), formattedWithBasicFormat = parts.join(".");
95
+ } else formattedWithBasicFormat = formattedNumber;
96
+ formattedText = this.formatTemplate ? this.formatTemplate.replace("{{var}}", formattedWithBasicFormat.toString()) : formattedWithBasicFormat,
97
+ this.target.setAttribute("text", formattedText);
98
+ }
99
+ }
100
+
101
+ exports.IncreaseCount = IncreaseCount;
102
+ //# sourceMappingURL=number.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/custom/number.ts"],"names":[],"mappings":"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","file":"number.js","sourcesContent":["import type { IAnimate, IStep } from '../intreface/animate';\nimport type { EasingType } from '../intreface/easing';\nimport { ACustomAnimate } from './custom-animate';\n\n/**\n * 数字增加动画,支持string; number; xx%; xx,xxx; xxx.xx%\n * 也支持通过formatTemplate参数指定格式化模板,如 \"{{var}}m\"、\"${{var}}\"\n * format和formatTemplate可以同时生效,先应用format再应用模板\n */\nexport class IncreaseCount extends ACustomAnimate<{ text: string | number }> {\n declare valid: boolean;\n\n private fromNumber: number;\n private toNumber: number;\n private decimalLength: number;\n private format: string;\n private formatTemplate: string | null = null;\n\n constructor(\n from: { text: string | number },\n to: { text: string | number },\n duration: number,\n easing: EasingType,\n // 支持外部控制小数位数以及格式化\n // format控制数字本身的格式化方式\n // formatTemplate可以定义模板字符串如 \"{{var}}m\"、\"${{var}}\",两者可以同时使用\n params?: {\n decimalLength?: number;\n format?: 'percent' | 'thousandth' | 'none';\n formatTemplate?: string;\n }\n ) {\n super(from, to, duration, easing, params);\n this.decimalLength = params?.decimalLength;\n\n // 检查是否提供了格式化模板\n if (params?.formatTemplate && params.formatTemplate.includes('{{var}}')) {\n this.formatTemplate = params.formatTemplate;\n }\n }\n\n onFirstRun(): void {\n const fromProps = this.getLastProps();\n const toProps = this.getEndProps();\n const fromText = fromProps.text ?? 0;\n const toText = toProps.text ?? 0;\n\n // 初始化解析结果\n this.valid = true;\n let fromNum = 0;\n let toNum = 0;\n let fromFormat = '';\n let toFormat = '';\n let maxDecimalLength = 0;\n\n // 解析fromText\n if (typeof fromText === 'number') {\n fromNum = fromText;\n const str = fromText.toString();\n const decimalPart = str.split('.')[1] || '';\n maxDecimalLength = Math.max(maxDecimalLength, decimalPart.length);\n } else if (typeof fromText === 'string') {\n // 检查是否是百分比\n if (fromText.endsWith('%')) {\n fromFormat = '%';\n const numStr = fromText.substring(0, fromText.length - 1);\n // 去除可能的千分位逗号\n const cleanNumStr = numStr.replace(/,/g, '');\n fromNum = parseFloat(cleanNumStr) / 100;\n if (isNaN(fromNum)) {\n this.valid = false;\n return;\n }\n const decimalPart = cleanNumStr.split('.')[1] || '';\n maxDecimalLength = Math.max(maxDecimalLength, decimalPart.length + 2); // 百分比需要加2\n } else {\n // 处理普通数字或带千分位逗号的数字\n const cleanNumStr = fromText.replace(/,/g, '');\n fromNum = parseFloat(cleanNumStr);\n if (isNaN(fromNum)) {\n this.valid = false;\n return;\n }\n // 检查是否有千分位\n if (fromText.includes(',')) {\n fromFormat = ',';\n }\n const decimalPart = cleanNumStr.split('.')[1] || '';\n maxDecimalLength = Math.max(maxDecimalLength, decimalPart.length);\n }\n } else {\n this.valid = false;\n return;\n }\n\n // 解析toText\n if (typeof toText === 'number') {\n toNum = toText;\n const str = toText.toString();\n const decimalPart = str.split('.')[1] || '';\n maxDecimalLength = Math.max(maxDecimalLength, decimalPart.length);\n } else if (typeof toText === 'string') {\n // 检查是否是百分比\n if (toText.endsWith('%')) {\n toFormat = '%';\n const numStr = toText.substring(0, toText.length - 1);\n // 去除可能的千分位逗号\n const cleanNumStr = numStr.replace(/,/g, '');\n toNum = parseFloat(cleanNumStr) / 100;\n if (isNaN(toNum)) {\n this.valid = false;\n return;\n }\n const decimalPart = cleanNumStr.split('.')[1] || '';\n maxDecimalLength = Math.max(maxDecimalLength, decimalPart.length + 2); // 百分比需要加2\n } else {\n // 处理普通数字或带千分位逗号的数字\n const cleanNumStr = toText.replace(/,/g, '');\n toNum = parseFloat(cleanNumStr);\n if (isNaN(toNum)) {\n this.valid = false;\n return;\n }\n // 检查是否有千分位\n if (toText.includes(',')) {\n toFormat = ',';\n }\n const decimalPart = cleanNumStr.split('.')[1] || '';\n maxDecimalLength = Math.max(maxDecimalLength, decimalPart.length);\n }\n } else {\n this.valid = false;\n return;\n }\n\n // 设置最终格式\n // 检查是否有外部传入的格式\n if (this.params?.format) {\n // 使用外部传入的格式,将外部格式映射到内部格式\n switch (this.params.format) {\n case 'percent':\n this.format = '%';\n break;\n case 'thousandth':\n this.format = ',';\n break;\n case 'none':\n this.format = '';\n break;\n default:\n // 如果传入了未知格式,则使用自动检测的格式\n this.format = toFormat || fromFormat;\n }\n\n // 如果外部指定了百分比格式,但输入不是百分比,需要适配\n if (this.format === '%' && toFormat !== '%' && fromFormat !== '%') {\n // 不需要除以100,因为输入不是百分比\n if (this.decimalLength === undefined) {\n // 默认百分比显示2位小数\n this.decimalLength = 2;\n }\n }\n\n // 如果外部指定了不用百分比格式,但输入是百分比,需要适配\n if (this.format !== '%' && (toFormat === '%' || fromFormat === '%')) {\n // 需要乘以100,因为输入是百分比但不显示为百分比\n fromNum = fromNum * 100;\n toNum = toNum * 100;\n }\n } else {\n // 自动检测格式,优先使用toFormat,如果to没有特殊格式则使用fromFormat\n this.format = toFormat || fromFormat;\n }\n\n // 设置fromNumber和toNumber\n this.fromNumber = fromNum;\n this.toNumber = toNum;\n\n // 如果没有传入decimalLength,则根据输入格式设置\n if (this.decimalLength === undefined) {\n this.decimalLength = maxDecimalLength;\n }\n }\n\n onEnd(cb?: (animate: IAnimate, step: IStep) => void): void {\n super.onEnd(cb);\n if (!cb) {\n this.props && this.target.setAttributes(this.props as any);\n }\n }\n\n onUpdate(end: boolean, ratio: number, out: Record<string, any>): void {\n if (!this.valid) {\n return;\n }\n // 插值计算当前数值\n const currentNumber = this.fromNumber + (this.toNumber - this.fromNumber) * ratio;\n\n // 根据格式和小数位格式化数字\n let formattedText: string | number = '';\n const format = this.format;\n\n // 首先格式化数字值(保留小数位)\n // 对于百分比,乘以100\n const adjustedNumber = format === '%' ? currentNumber * 100 : currentNumber;\n // 保留指定小数位\n const numberWithDecimals = adjustedNumber.toFixed(this.decimalLength);\n // 如果小数位全是0,转为整数\n let formattedNumber: string | number = numberWithDecimals;\n if (parseFloat(numberWithDecimals) === Math.floor(parseFloat(numberWithDecimals))) {\n formattedNumber = Math.floor(parseFloat(numberWithDecimals));\n }\n\n // 应用基本格式(百分比、千分位)\n let formattedWithBasicFormat: string | number;\n if (format === '%') {\n // 百分比格式\n formattedWithBasicFormat = `${formattedNumber}%`;\n } else if (format === ',') {\n // 千分位格式\n const parts = formattedNumber.toString().split('.');\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n formattedWithBasicFormat = parts.join('.');\n } else {\n // 普通数字格式\n formattedWithBasicFormat = formattedNumber;\n }\n\n // 应用模板(如果存在)\n if (this.formatTemplate) {\n // 使用模板格式化\n formattedText = this.formatTemplate.replace('{{var}}', formattedWithBasicFormat.toString());\n } else {\n // 不使用模板,直接使用基本格式的结果\n formattedText = formattedWithBasicFormat;\n }\n\n // 更新图形的text属性\n this.target.setAttribute('text', formattedText);\n }\n}\n"]}
@@ -0,0 +1 @@
1
+ export declare const registerCustomAnimate: () => void;
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: !0
5
+ }), exports.registerCustomAnimate = void 0;
6
+
7
+ const animate_executor_1 = require("../executor/animate-executor"), clip_1 = require("./clip"), fade_1 = require("./fade"), growAngle_1 = require("./growAngle"), growCenter_1 = require("./growCenter"), growHeight_1 = require("./growHeight"), growPoints_1 = require("./growPoints"), growRadius_1 = require("./growRadius"), growWidth_1 = require("./growWidth"), scale_1 = require("./scale"), state_1 = require("./state"), update_1 = require("./update"), registerCustomAnimate = () => {
8
+ animate_executor_1.AnimateExecutor.registerBuiltInAnimate("scaleIn", scale_1.ScaleIn),
9
+ animate_executor_1.AnimateExecutor.registerBuiltInAnimate("scaleOut", scale_1.ScaleOut),
10
+ animate_executor_1.AnimateExecutor.registerBuiltInAnimate("growHeightIn", growHeight_1.GrowHeightIn),
11
+ animate_executor_1.AnimateExecutor.registerBuiltInAnimate("growHeightOut", growHeight_1.GrowHeightOut),
12
+ animate_executor_1.AnimateExecutor.registerBuiltInAnimate("growWidthIn", growWidth_1.GrowWidthIn),
13
+ animate_executor_1.AnimateExecutor.registerBuiltInAnimate("growWidthOut", growWidth_1.GrowWidthOut),
14
+ animate_executor_1.AnimateExecutor.registerBuiltInAnimate("growCenterIn", growCenter_1.GrowCenterIn),
15
+ animate_executor_1.AnimateExecutor.registerBuiltInAnimate("growCenterOut", growCenter_1.GrowCenterOut),
16
+ animate_executor_1.AnimateExecutor.registerBuiltInAnimate("clipIn", clip_1.ClipIn),
17
+ animate_executor_1.AnimateExecutor.registerBuiltInAnimate("clipOut", clip_1.ClipOut),
18
+ animate_executor_1.AnimateExecutor.registerBuiltInAnimate("fadeIn", fade_1.FadeIn),
19
+ animate_executor_1.AnimateExecutor.registerBuiltInAnimate("fadeOut", fade_1.FadeOut),
20
+ animate_executor_1.AnimateExecutor.registerBuiltInAnimate("growPointsIn", growPoints_1.GrowPointsIn),
21
+ animate_executor_1.AnimateExecutor.registerBuiltInAnimate("growPointsOut", growPoints_1.GrowPointsOut),
22
+ animate_executor_1.AnimateExecutor.registerBuiltInAnimate("growPointsXIn", growPoints_1.GrowPointsXIn),
23
+ animate_executor_1.AnimateExecutor.registerBuiltInAnimate("growPointsXOut", growPoints_1.GrowPointsXOut),
24
+ animate_executor_1.AnimateExecutor.registerBuiltInAnimate("growPointsYIn", growPoints_1.GrowPointsYIn),
25
+ animate_executor_1.AnimateExecutor.registerBuiltInAnimate("growPointsYOut", growPoints_1.GrowPointsYOut),
26
+ animate_executor_1.AnimateExecutor.registerBuiltInAnimate("growAngleIn", growAngle_1.GrowAngleIn),
27
+ animate_executor_1.AnimateExecutor.registerBuiltInAnimate("growAngleOut", growAngle_1.GrowAngleOut),
28
+ animate_executor_1.AnimateExecutor.registerBuiltInAnimate("growRadiusIn", growRadius_1.GrowRadiusIn),
29
+ animate_executor_1.AnimateExecutor.registerBuiltInAnimate("growRadiusOut", growRadius_1.GrowRadiusOut),
30
+ animate_executor_1.AnimateExecutor.registerBuiltInAnimate("update", update_1.Update),
31
+ animate_executor_1.AnimateExecutor.registerBuiltInAnimate("state", state_1.State);
32
+ };
33
+
34
+ exports.registerCustomAnimate = registerCustomAnimate;
35
+ //# sourceMappingURL=register.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/custom/register.ts"],"names":[],"mappings":";;;AAAA,mEAA+D;AAC/D,iCAAyC;AACzC,iCAAyC;AACzC,2CAAwD;AACxD,6CAA2D;AAC3D,6CAA2D;AAC3D,6CAOsB;AACtB,6CAA2D;AAC3D,2CAAwD;AACxD,mCAA4C;AAC5C,mCAAgC;AAChC,qCAAkC;AAE3B,MAAM,qBAAqB,GAAG,GAAG,EAAE;IACxC,kCAAe,CAAC,sBAAsB,CAAC,SAAS,EAAE,eAAO,CAAC,CAAC;IAC3D,kCAAe,CAAC,sBAAsB,CAAC,UAAU,EAAE,gBAAQ,CAAC,CAAC;IAC7D,kCAAe,CAAC,sBAAsB,CAAC,cAAc,EAAE,yBAAY,CAAC,CAAC;IACrE,kCAAe,CAAC,sBAAsB,CAAC,eAAe,EAAE,0BAAa,CAAC,CAAC;IACvE,kCAAe,CAAC,sBAAsB,CAAC,aAAa,EAAE,uBAAW,CAAC,CAAC;IACnE,kCAAe,CAAC,sBAAsB,CAAC,cAAc,EAAE,wBAAY,CAAC,CAAC;IACrE,kCAAe,CAAC,sBAAsB,CAAC,cAAc,EAAE,yBAAY,CAAC,CAAC;IACrE,kCAAe,CAAC,sBAAsB,CAAC,eAAe,EAAE,0BAAa,CAAC,CAAC;IACvE,kCAAe,CAAC,sBAAsB,CAAC,QAAQ,EAAE,aAAM,CAAC,CAAC;IACzD,kCAAe,CAAC,sBAAsB,CAAC,SAAS,EAAE,cAAO,CAAC,CAAC;IAC3D,kCAAe,CAAC,sBAAsB,CAAC,QAAQ,EAAE,aAAM,CAAC,CAAC;IACzD,kCAAe,CAAC,sBAAsB,CAAC,SAAS,EAAE,cAAO,CAAC,CAAC;IAC3D,kCAAe,CAAC,sBAAsB,CAAC,cAAc,EAAE,yBAAY,CAAC,CAAC;IACrE,kCAAe,CAAC,sBAAsB,CAAC,eAAe,EAAE,0BAAa,CAAC,CAAC;IACvE,kCAAe,CAAC,sBAAsB,CAAC,eAAe,EAAE,0BAAa,CAAC,CAAC;IACvE,kCAAe,CAAC,sBAAsB,CAAC,gBAAgB,EAAE,2BAAc,CAAC,CAAC;IACzE,kCAAe,CAAC,sBAAsB,CAAC,eAAe,EAAE,0BAAa,CAAC,CAAC;IACvE,kCAAe,CAAC,sBAAsB,CAAC,gBAAgB,EAAE,2BAAc,CAAC,CAAC;IACzE,kCAAe,CAAC,sBAAsB,CAAC,aAAa,EAAE,uBAAW,CAAC,CAAC;IACnE,kCAAe,CAAC,sBAAsB,CAAC,cAAc,EAAE,wBAAY,CAAC,CAAC;IACrE,kCAAe,CAAC,sBAAsB,CAAC,cAAc,EAAE,yBAAY,CAAC,CAAC;IACrE,kCAAe,CAAC,sBAAsB,CAAC,eAAe,EAAE,0BAAa,CAAC,CAAC;IAEvE,kCAAe,CAAC,sBAAsB,CAAC,QAAQ,EAAE,eAAM,CAAC,CAAC;IACzD,kCAAe,CAAC,sBAAsB,CAAC,OAAO,EAAE,aAAK,CAAC,CAAC;AACzD,CAAC,CAAC;AA1BW,QAAA,qBAAqB,yBA0BhC","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 { ScaleIn, ScaleOut } from './scale';\nimport { State } from './state';\nimport { Update } from './update';\n\nexport const registerCustomAnimate = () => {\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 // state和update共用一个自定义动画类\n AnimateExecutor.registerBuiltInAnimate('update', Update);\n AnimateExecutor.registerBuiltInAnimate('state', State);\n};\n"]}
@@ -0,0 +1,13 @@
1
+ import type { IAnimate, IStep } from '../intreface/animate';
2
+ import type { EasingType } from '../intreface/easing';
3
+ import { ACustomAnimate } from './custom-animate';
4
+ export interface IScaleAnimationOptions {
5
+ direction?: 'x' | 'y' | 'xy';
6
+ }
7
+ export declare class ScaleIn extends ACustomAnimate<Record<string, number>> {
8
+ valid: boolean;
9
+ constructor(from: null, to: null, duration: number, easing: EasingType, params?: IScaleAnimationOptions);
10
+ onFirstRun(): void;
11
+ onEnd(cb?: (animate: IAnimate, step: IStep) => void): void;
12
+ onUpdate(end: boolean, ratio: number, out: Record<string, any>): void;
13
+ }
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: !0
5
+ }), exports.ScaleIn = void 0;
6
+
7
+ const custom_animate_1 = require("./custom-animate");
8
+
9
+ class ScaleIn extends custom_animate_1.ACustomAnimate {
10
+ constructor(from, to, duration, easing, params) {
11
+ super(from, to, duration, easing, params);
12
+ }
13
+ onFirstRun() {
14
+ var _a, _b, _c, _d, _e;
15
+ let from, to;
16
+ const attrs = this.target.getAttributes();
17
+ switch (null === (_a = this.params) || void 0 === _a ? void 0 : _a.direction) {
18
+ case "x":
19
+ from = {
20
+ scaleX: 0
21
+ }, to = {
22
+ scaleX: null !== (_b = null == attrs ? void 0 : attrs.scaleX) && void 0 !== _b ? _b : 1
23
+ };
24
+ break;
25
+
26
+ case "y":
27
+ from = {
28
+ scaleY: 0
29
+ }, to = {
30
+ scaleY: null !== (_c = null == attrs ? void 0 : attrs.scaleY) && void 0 !== _c ? _c : 1
31
+ };
32
+ break;
33
+
34
+ default:
35
+ from = {
36
+ scaleX: 0,
37
+ scaleY: 0
38
+ }, to = {
39
+ scaleX: null !== (_d = null == attrs ? void 0 : attrs.scaleX) && void 0 !== _d ? _d : 1,
40
+ scaleY: null !== (_e = null == attrs ? void 0 : attrs.scaleY) && void 0 !== _e ? _e : 1
41
+ };
42
+ }
43
+ this.props = to, this.propKeys = Object.keys(to), this.animate.reSyncProps(), this.from = from,
44
+ this.to = to;
45
+ }
46
+ onEnd(cb) {
47
+ super.onEnd(cb);
48
+ }
49
+ onUpdate(end, ratio, out) {
50
+ this.valid && (this.propKeys.forEach((key => {
51
+ out[key] = this.from[key] + (this.to[key] - this.from[key]) * ratio;
52
+ })), this.target.setAttributes(out));
53
+ }
54
+ }
55
+
56
+ exports.ScaleIn = ScaleIn;
57
+ //# sourceMappingURL=scale-in.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/custom/scale-in.ts"],"names":[],"mappings":";;;AAEA,qDAAkD;AAWlD,MAAa,OAAQ,SAAQ,+BAAsC;IAGjE,YAAY,IAAU,EAAE,EAAQ,EAAE,QAAgB,EAAE,MAAkB,EAAE,MAA+B;QACrG,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5C,CAAC;IAED,UAAU;;QACR,IAAI,IAA4B,CAAC;QACjC,IAAI,EAA0B,CAAC;QAE/B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;QAC1C,QAAQ,MAAA,IAAI,CAAC,MAAM,0CAAE,SAAS,EAAE;YAC9B,KAAK,GAAG;gBACN,IAAI,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;gBACrB,EAAE,GAAG,EAAE,MAAM,EAAE,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,mCAAI,CAAC,EAAE,CAAC;gBACpC,MAAM;YACR,KAAK,GAAG;gBACN,IAAI,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;gBACrB,EAAE,GAAG,EAAE,MAAM,EAAE,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,mCAAI,CAAC,EAAE,CAAC;gBACpC,MAAM;YACR,KAAK,IAAI,CAAC;YACV;gBACE,IAAI,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;gBAChC,EAAE,GAAG;oBACH,MAAM,EAAE,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,mCAAI,CAAC;oBAC1B,MAAM,EAAE,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,mCAAI,CAAC;iBAC3B,CAAC;SACL;QACD,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,CAAC;IAED,KAAK,CAAC,EAA6C;QACjD,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAED,QAAQ,CAAC,GAAY,EAAE,KAAa,EAAE,GAAwB;QAC5D,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACf,OAAO;SACR;QAED,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YAC1B,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;QACtE,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;CACF;AAlDD,0BAkDC","file":"scale-in.js","sourcesContent":["import type { IAnimate, IStep } from '../intreface/animate';\nimport type { EasingType } from '../intreface/easing';\nimport { ACustomAnimate } from './custom-animate';\n\nexport interface IScaleAnimationOptions {\n direction?: 'x' | 'y' | 'xy';\n}\n\n/**\n * 文本输入动画,实现类似打字机的字符逐个显示效果\n * 支持通过beforeText和afterText参数添加前缀和后缀\n * 支持通过showCursor参数显示光标,cursorChar自定义光标字符\n */\nexport class ScaleIn extends ACustomAnimate<Record<string, number>> {\n declare valid: boolean;\n\n constructor(from: null, to: null, duration: number, easing: EasingType, params?: IScaleAnimationOptions) {\n super(from, to, duration, easing, params);\n }\n\n onFirstRun(): void {\n let from: Record<string, number>;\n let to: Record<string, number>;\n // 获取当前的数据\n const attrs = this.target.getAttributes();\n switch (this.params?.direction) {\n case 'x':\n from = { scaleX: 0 };\n to = { scaleX: attrs?.scaleX ?? 1 };\n break;\n case 'y':\n from = { scaleY: 0 };\n to = { scaleY: attrs?.scaleY ?? 1 };\n break;\n case 'xy':\n default:\n from = { scaleX: 0, scaleY: 0 };\n to = {\n scaleX: attrs?.scaleX ?? 1,\n scaleY: attrs?.scaleY ?? 1\n };\n }\n this.props = to;\n this.propKeys = Object.keys(to);\n this.animate.reSyncProps();\n this.from = from;\n this.to = to;\n }\n\n onEnd(cb?: (animate: IAnimate, step: IStep) => void): void {\n super.onEnd(cb);\n }\n\n onUpdate(end: boolean, ratio: number, out: Record<string, any>): void {\n if (!this.valid) {\n return;\n }\n\n this.propKeys.forEach(key => {\n out[key] = this.from[key] + (this.to[key] - this.from[key]) * ratio;\n });\n this.target.setAttributes(out);\n }\n}\n"]}
@@ -0,0 +1,20 @@
1
+ import type { IAnimate, IStep } from '../intreface/animate';
2
+ import type { EasingType } from '../intreface/easing';
3
+ import { ACustomAnimate } from './custom-animate';
4
+ export interface IScaleAnimationOptions {
5
+ direction?: 'x' | 'y' | 'xy';
6
+ }
7
+ export declare class ScaleIn extends ACustomAnimate<Record<string, number>> {
8
+ valid: boolean;
9
+ constructor(from: null, to: null, duration: number, easing: EasingType, params?: IScaleAnimationOptions);
10
+ onBind(): void;
11
+ onEnd(cb?: (animate: IAnimate, step: IStep) => void): void;
12
+ onUpdate(end: boolean, ratio: number, out: Record<string, any>): void;
13
+ }
14
+ export declare class ScaleOut extends ACustomAnimate<Record<string, number>> {
15
+ valid: boolean;
16
+ constructor(from: null, to: null, duration: number, easing: EasingType, params?: IScaleAnimationOptions);
17
+ onBind(): void;
18
+ onEnd(cb?: (animate: IAnimate, step: IStep) => void): void;
19
+ onUpdate(end: boolean, ratio: number, out: Record<string, any>): void;
20
+ }
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: !0
5
+ }), exports.ScaleOut = exports.ScaleIn = void 0;
6
+
7
+ const custom_animate_1 = require("./custom-animate");
8
+
9
+ class ScaleIn extends custom_animate_1.ACustomAnimate {
10
+ constructor(from, to, duration, easing, params) {
11
+ super(from, to, duration, easing, params);
12
+ }
13
+ onBind() {
14
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
15
+ let from, to;
16
+ const attrs = this.target.getFinalAttribute(), fromAttrs = null !== (_a = this.target.context.lastAttrs) && void 0 !== _a ? _a : {};
17
+ switch (null === (_b = this.params) || void 0 === _b ? void 0 : _b.direction) {
18
+ case "x":
19
+ from = {
20
+ scaleX: null !== (_c = fromAttrs.scaleX) && void 0 !== _c ? _c : 0
21
+ }, to = {
22
+ scaleX: null !== (_d = null == attrs ? void 0 : attrs.scaleX) && void 0 !== _d ? _d : 1
23
+ };
24
+ break;
25
+
26
+ case "y":
27
+ from = {
28
+ scaleY: null !== (_e = fromAttrs.scaleY) && void 0 !== _e ? _e : 0
29
+ }, to = {
30
+ scaleY: null !== (_f = null == attrs ? void 0 : attrs.scaleY) && void 0 !== _f ? _f : 1
31
+ };
32
+ break;
33
+
34
+ default:
35
+ from = {
36
+ scaleX: null !== (_g = fromAttrs.scaleX) && void 0 !== _g ? _g : 0,
37
+ scaleY: null !== (_h = fromAttrs.scaleY) && void 0 !== _h ? _h : 0
38
+ }, to = {
39
+ scaleX: null !== (_j = null == attrs ? void 0 : attrs.scaleX) && void 0 !== _j ? _j : 1,
40
+ scaleY: null !== (_k = null == attrs ? void 0 : attrs.scaleY) && void 0 !== _k ? _k : 1
41
+ };
42
+ }
43
+ this.props = to, this.propKeys = Object.keys(to), this.animate.reSyncProps(), this.from = from,
44
+ this.to = to, this.target.setAttributes(from);
45
+ }
46
+ onEnd(cb) {
47
+ super.onEnd(cb);
48
+ }
49
+ onUpdate(end, ratio, out) {
50
+ this.propKeys.forEach((key => {
51
+ out[key] = this.from[key] + (this.to[key] - this.from[key]) * ratio;
52
+ })), this.target.setAttributes(out);
53
+ }
54
+ }
55
+
56
+ exports.ScaleIn = ScaleIn;
57
+
58
+ class ScaleOut extends custom_animate_1.ACustomAnimate {
59
+ constructor(from, to, duration, easing, params) {
60
+ super(from, to, duration, easing, params);
61
+ }
62
+ onBind() {
63
+ var _a, _b, _c, _d, _e;
64
+ let from, to;
65
+ const attrs = this.target.getFinalAttribute();
66
+ switch (null === (_a = this.params) || void 0 === _a ? void 0 : _a.direction) {
67
+ case "x":
68
+ from = {
69
+ scaleX: null !== (_b = null == attrs ? void 0 : attrs.scaleX) && void 0 !== _b ? _b : 1
70
+ }, to = {
71
+ scaleX: 0
72
+ };
73
+ break;
74
+
75
+ case "y":
76
+ from = {
77
+ scaleY: null !== (_c = null == attrs ? void 0 : attrs.scaleY) && void 0 !== _c ? _c : 1
78
+ }, to = {
79
+ scaleY: 0
80
+ };
81
+ break;
82
+
83
+ default:
84
+ from = {
85
+ scaleX: null !== (_d = null == attrs ? void 0 : attrs.scaleX) && void 0 !== _d ? _d : 1,
86
+ scaleY: null !== (_e = null == attrs ? void 0 : attrs.scaleY) && void 0 !== _e ? _e : 1
87
+ }, to = {
88
+ scaleX: 0,
89
+ scaleY: 0
90
+ };
91
+ }
92
+ this.props = to, this.propKeys = Object.keys(to), this.animate.reSyncProps(), this.from = from,
93
+ this.to = to;
94
+ }
95
+ onEnd(cb) {
96
+ super.onEnd(cb);
97
+ }
98
+ onUpdate(end, ratio, out) {
99
+ this.propKeys.forEach((key => {
100
+ out[key] = this.from[key] + (this.to[key] - this.from[key]) * ratio;
101
+ })), this.target.setAttributes(out);
102
+ }
103
+ }
104
+
105
+ exports.ScaleOut = ScaleOut;
106
+ //# sourceMappingURL=scale.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/custom/scale.ts"],"names":[],"mappings":"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","file":"scale.js","sourcesContent":["import type { IAnimate, IStep } from '../intreface/animate';\nimport type { EasingType } from '../intreface/easing';\nimport { ACustomAnimate } from './custom-animate';\n\nexport interface IScaleAnimationOptions {\n direction?: 'x' | 'y' | 'xy';\n}\n\nexport class ScaleIn extends ACustomAnimate<Record<string, number>> {\n declare valid: boolean;\n\n constructor(from: null, to: null, duration: number, easing: EasingType, params?: IScaleAnimationOptions) {\n super(from, to, duration, easing, params);\n }\n\n onBind(): void {\n let from: Record<string, number>;\n let to: Record<string, number>;\n const attrs = this.target.getFinalAttribute();\n const fromAttrs = this.target.context.lastAttrs ?? {};\n\n switch (this.params?.direction) {\n case 'x':\n from = { scaleX: fromAttrs.scaleX ?? 0 };\n to = { scaleX: attrs?.scaleX ?? 1 };\n break;\n case 'y':\n from = { scaleY: fromAttrs.scaleY ?? 0 };\n to = { scaleY: attrs?.scaleY ?? 1 };\n break;\n case 'xy':\n default:\n from = { scaleX: fromAttrs.scaleX ?? 0, scaleY: fromAttrs.scaleY ?? 0 };\n to = {\n scaleX: attrs?.scaleX ?? 1,\n scaleY: attrs?.scaleY ?? 1\n };\n }\n this.props = to;\n this.propKeys = Object.keys(to);\n this.animate.reSyncProps();\n this.from = from;\n this.to = to;\n this.target.setAttributes(from);\n }\n\n onEnd(cb?: (animate: IAnimate, step: IStep) => void): void {\n super.onEnd(cb);\n }\n\n onUpdate(end: boolean, ratio: number, out: Record<string, any>): void {\n this.propKeys.forEach(key => {\n out[key] = this.from[key] + (this.to[key] - this.from[key]) * ratio;\n });\n this.target.setAttributes(out);\n }\n}\n\nexport class ScaleOut extends ACustomAnimate<Record<string, number>> {\n declare valid: boolean;\n\n constructor(from: null, to: null, duration: number, easing: EasingType, params?: IScaleAnimationOptions) {\n super(from, to, duration, easing, params);\n }\n\n onBind(): void {\n let from: Record<string, number>;\n let to: Record<string, number>;\n // 获取当前的数据\n const attrs = this.target.getFinalAttribute();\n switch (this.params?.direction) {\n case 'x':\n from = { scaleX: attrs?.scaleX ?? 1 };\n to = { scaleX: 0 };\n break;\n case 'y':\n from = { scaleY: attrs?.scaleY ?? 1 };\n to = { scaleY: 0 };\n break;\n case 'xy':\n default:\n from = { scaleX: attrs?.scaleX ?? 1, scaleY: attrs?.scaleY ?? 1 };\n to = {\n scaleX: 0,\n scaleY: 0\n };\n }\n this.props = to;\n this.propKeys = Object.keys(to);\n this.animate.reSyncProps();\n this.from = from;\n this.to = to;\n }\n\n onEnd(cb?: (animate: IAnimate, step: IStep) => void): void {\n super.onEnd(cb);\n }\n\n onUpdate(end: boolean, ratio: number, out: Record<string, any>): void {\n this.propKeys.forEach(key => {\n out[key] = this.from[key] + (this.to[key] - this.from[key]) * ratio;\n });\n this.target.setAttributes(out);\n }\n}\n"]}
@@ -0,0 +1,20 @@
1
+ import { ACustomAnimate } from './custom-animate';
2
+ type RotateSphereParams = {
3
+ center: {
4
+ x: number;
5
+ y: number;
6
+ z: number;
7
+ };
8
+ r: number;
9
+ cb?: (out: any) => void;
10
+ } | (() => any);
11
+ export declare class RotateBySphereAnimate extends ACustomAnimate<any> {
12
+ params: RotateSphereParams;
13
+ theta: number;
14
+ phi: number;
15
+ onStart(): void;
16
+ onBind(): void;
17
+ onEnd(): void;
18
+ onUpdate(end: boolean, ratio: number, out: Record<string, any>): void;
19
+ }
20
+ export {};
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: !0
5
+ }), exports.RotateBySphereAnimate = void 0;
6
+
7
+ const vutils_1 = require("@visactor/vutils"), custom_animate_1 = require("./custom-animate");
8
+
9
+ class RotateBySphereAnimate extends custom_animate_1.ACustomAnimate {
10
+ onStart() {
11
+ const {center: center, r: r} = "function" == typeof this.params ? this.params() : this.params, startX = this.target.getComputedAttribute("x"), startY = this.target.getComputedAttribute("y"), startZ = this.target.getComputedAttribute("z"), phi = Math.acos((startY - center.y) / r);
12
+ let theta = Math.acos((startX - center.x) / r / Math.sin(phi));
13
+ startZ - center.z < 0 && (theta = vutils_1.pi2 - theta), this.theta = theta, this.phi = phi;
14
+ }
15
+ onBind() {}
16
+ onEnd() {}
17
+ onUpdate(end, ratio, out) {
18
+ if (null == this.phi || null == this.theta) return;
19
+ const {center: center, r: r, cb: cb} = "function" == typeof this.params ? this.params() : this.params, deltaAngle = 2 * Math.PI * ratio, theta = this.theta + deltaAngle, phi = this.phi, x = r * Math.sin(phi) * Math.cos(theta) + center.x, y = r * Math.cos(phi) + center.y, z = r * Math.sin(phi) * Math.sin(theta) + center.z;
20
+ for (out.x = x, out.y = y, out.z = z, out.alpha = theta + vutils_1.pi / 2; out.alpha > vutils_1.pi2; ) out.alpha -= vutils_1.pi2;
21
+ out.alpha = vutils_1.pi2 - out.alpha, out.zIndex = -1e4 * out.z, cb && cb(out);
22
+ }
23
+ }
24
+
25
+ exports.RotateBySphereAnimate = RotateBySphereAnimate;
26
+ //# sourceMappingURL=sphere.js.map