diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index 6ec73bf37..4502578bb 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -22,7 +22,7 @@ importers: specifier: ~0.5.7 version: 0.5.7 '@visactor/vrender': - specifier: workspace:1.0.3 + specifier: workspace:1.0.4 version: link:../packages/vrender '@visactor/vutils': specifier: 1.0.6 @@ -95,7 +95,7 @@ importers: ../../packages/react-vrender: dependencies: '@visactor/vrender': - specifier: workspace:1.0.3 + specifier: workspace:1.0.4 version: link:../vrender '@visactor/vutils': specifier: 1.0.6 @@ -153,10 +153,10 @@ importers: ../../packages/react-vrender-utils: dependencies: '@visactor/react-vrender': - specifier: workspace:1.0.3 + specifier: workspace:1.0.4 version: link:../react-vrender '@visactor/vrender': - specifier: workspace:1.0.3 + specifier: workspace:1.0.4 version: link:../vrender '@visactor/vutils': specifier: 1.0.6 @@ -211,13 +211,13 @@ importers: ../../packages/vrender: dependencies: '@visactor/vrender-animate': - specifier: workspace:1.0.3 + specifier: workspace:1.0.4 version: link:../vrender-animate '@visactor/vrender-core': - specifier: workspace:1.0.3 + specifier: workspace:1.0.4 version: link:../vrender-core '@visactor/vrender-kits': - specifier: workspace:1.0.3 + specifier: workspace:1.0.4 version: link:../vrender-kits devDependencies: '@internal/bundler': @@ -284,7 +284,7 @@ importers: ../../packages/vrender-animate: dependencies: '@visactor/vrender-core': - specifier: workspace:1.0.3 + specifier: workspace:1.0.4 version: link:../vrender-core '@visactor/vutils': specifier: 1.0.6 @@ -342,13 +342,13 @@ importers: ../../packages/vrender-components: dependencies: '@visactor/vrender-animate': - specifier: workspace:1.0.3 + specifier: workspace:1.0.4 version: link:../vrender-animate '@visactor/vrender-core': - specifier: workspace:1.0.3 + specifier: workspace:1.0.4 version: link:../vrender-core '@visactor/vrender-kits': - specifier: workspace:1.0.3 + specifier: workspace:1.0.4 version: link:../vrender-kits '@visactor/vscale': specifier: 1.0.6 @@ -467,7 +467,7 @@ importers: specifier: 2.4.1 version: 2.4.1 '@visactor/vrender-core': - specifier: workspace:1.0.3 + specifier: workspace:1.0.4 version: link:../vrender-core '@visactor/vutils': specifier: 1.0.6 @@ -583,19 +583,19 @@ importers: ../../tools/bugserver-trigger: dependencies: '@visactor/vrender': - specifier: workspace:1.0.3 + specifier: workspace:1.0.4 version: link:../../packages/vrender '@visactor/vrender-animate': - specifier: workspace:1.0.3 + specifier: workspace:1.0.4 version: link:../../packages/vrender-animate '@visactor/vrender-components': - specifier: workspace:1.0.3 + specifier: workspace:1.0.4 version: link:../../packages/vrender-components '@visactor/vrender-core': - specifier: workspace:1.0.3 + specifier: workspace:1.0.4 version: link:../../packages/vrender-core '@visactor/vrender-kits': - specifier: workspace:1.0.3 + specifier: workspace:1.0.4 version: link:../../packages/vrender-kits devDependencies: '@internal/bundler': diff --git a/common/config/rush/version-policies.json b/common/config/rush/version-policies.json index 59535845e..daf4cebf5 100644 --- a/common/config/rush/version-policies.json +++ b/common/config/rush/version-policies.json @@ -1 +1 @@ -[{"definitionName":"lockStepVersion","policyName":"vrenderMain","version":"1.0.3","nextBump":"patch"}] +[{"definitionName":"lockStepVersion","policyName":"vrenderMain","version":"1.0.4","nextBump":"patch"}] diff --git a/docs/package.json b/docs/package.json index 3653f84d5..ea894342b 100644 --- a/docs/package.json +++ b/docs/package.json @@ -13,7 +13,7 @@ "@visactor/vchart": "1.3.0", "@visactor/vutils": "1.0.6", "@visactor/vgrammar": "~0.5.7", - "@visactor/vrender": "workspace:1.0.3", + "@visactor/vrender": "workspace:1.0.4", "markdown-it": "^13.0.0", "highlight.js": "^11.8.0", "axios": "^1.4.0", diff --git a/packages/react-vrender-utils/CHANGELOG.json b/packages/react-vrender-utils/CHANGELOG.json index 700a0a559..7ef65d143 100644 --- a/packages/react-vrender-utils/CHANGELOG.json +++ b/packages/react-vrender-utils/CHANGELOG.json @@ -1,6 +1,12 @@ { "name": "@visactor/react-vrender-utils", "entries": [ + { + "version": "1.0.4", + "tag": "@visactor/react-vrender-utils_v1.0.4", + "date": "Wed, 18 Jun 2025 05:41:49 GMT", + "comments": {} + }, { "version": "1.0.3", "tag": "@visactor/react-vrender-utils_v1.0.3", diff --git a/packages/react-vrender-utils/CHANGELOG.md b/packages/react-vrender-utils/CHANGELOG.md index bb242616f..c01d25dcf 100644 --- a/packages/react-vrender-utils/CHANGELOG.md +++ b/packages/react-vrender-utils/CHANGELOG.md @@ -1,6 +1,11 @@ # Change Log - @visactor/react-vrender-utils -This log was last generated on Tue, 10 Jun 2025 09:32:32 GMT and should not be manually modified. +This log was last generated on Wed, 18 Jun 2025 05:41:49 GMT and should not be manually modified. + +## 1.0.4 +Wed, 18 Jun 2025 05:41:49 GMT + +_Version update only_ ## 1.0.3 Tue, 10 Jun 2025 09:32:32 GMT diff --git a/packages/react-vrender-utils/package.json b/packages/react-vrender-utils/package.json index a6973f232..2b6e50df0 100644 --- a/packages/react-vrender-utils/package.json +++ b/packages/react-vrender-utils/package.json @@ -1,6 +1,6 @@ { "name": "@visactor/react-vrender-utils", - "version": "1.0.3", + "version": "1.0.4", "description": "", "sideEffects": false, "main": "cjs/index.js", @@ -24,8 +24,8 @@ "react-dom": "^18.2.0" }, "dependencies": { - "@visactor/vrender": "workspace:1.0.3", - "@visactor/react-vrender": "workspace:1.0.3", + "@visactor/vrender": "workspace:1.0.4", + "@visactor/react-vrender": "workspace:1.0.4", "@visactor/vutils": "1.0.6", "react-reconciler": "^0.29.0", "tslib": "^2.3.1" diff --git a/packages/react-vrender/CHANGELOG.json b/packages/react-vrender/CHANGELOG.json index 63d2cf1d1..b544c3288 100644 --- a/packages/react-vrender/CHANGELOG.json +++ b/packages/react-vrender/CHANGELOG.json @@ -1,6 +1,12 @@ { "name": "@visactor/react-vrender", "entries": [ + { + "version": "1.0.4", + "tag": "@visactor/react-vrender_v1.0.4", + "date": "Wed, 18 Jun 2025 05:41:49 GMT", + "comments": {} + }, { "version": "1.0.3", "tag": "@visactor/react-vrender_v1.0.3", diff --git a/packages/react-vrender/CHANGELOG.md b/packages/react-vrender/CHANGELOG.md index 528a2663f..d1d35cab2 100644 --- a/packages/react-vrender/CHANGELOG.md +++ b/packages/react-vrender/CHANGELOG.md @@ -1,6 +1,11 @@ # Change Log - @visactor/react-vrender -This log was last generated on Tue, 10 Jun 2025 09:32:32 GMT and should not be manually modified. +This log was last generated on Wed, 18 Jun 2025 05:41:49 GMT and should not be manually modified. + +## 1.0.4 +Wed, 18 Jun 2025 05:41:49 GMT + +_Version update only_ ## 1.0.3 Tue, 10 Jun 2025 09:32:32 GMT diff --git a/packages/react-vrender/package.json b/packages/react-vrender/package.json index 61a4f9450..83a7bca91 100644 --- a/packages/react-vrender/package.json +++ b/packages/react-vrender/package.json @@ -1,6 +1,6 @@ { "name": "@visactor/react-vrender", - "version": "1.0.3", + "version": "1.0.4", "description": "", "sideEffects": false, "main": "cjs/index.js", @@ -23,7 +23,7 @@ "react": "^18.2.0" }, "dependencies": { - "@visactor/vrender": "workspace:1.0.3", + "@visactor/vrender": "workspace:1.0.4", "@visactor/vutils": "1.0.6", "react-reconciler": "^0.29.0", "tslib": "^2.3.1" diff --git a/packages/vrender-animate/CHANGELOG.json b/packages/vrender-animate/CHANGELOG.json index fc7ba5d83..ff3133b83 100644 --- a/packages/vrender-animate/CHANGELOG.json +++ b/packages/vrender-animate/CHANGELOG.json @@ -1,6 +1,27 @@ { "name": "@visactor/vrender-animate", "entries": [ + { + "version": "1.0.4", + "tag": "@visactor/vrender-animate_v1.0.4", + "date": "Wed, 18 Jun 2025 05:41:49 GMT", + "comments": { + "none": [ + { + "comment": "feat: timeline support animationStart flag" + }, + { + "comment": "feat: don't prevent normal animate attribute" + }, + { + "comment": "fix: fix default params of animation\n\n" + }, + { + "comment": "fix: fix issue with recall setupTickHandler" + } + ] + } + }, { "version": "1.0.3", "tag": "@visactor/vrender-animate_v1.0.3", diff --git a/packages/vrender-animate/CHANGELOG.md b/packages/vrender-animate/CHANGELOG.md index 25029b557..333d144d7 100644 --- a/packages/vrender-animate/CHANGELOG.md +++ b/packages/vrender-animate/CHANGELOG.md @@ -1,6 +1,18 @@ # Change Log - @visactor/vrender-animate -This log was last generated on Tue, 10 Jun 2025 09:32:32 GMT and should not be manually modified. +This log was last generated on Wed, 18 Jun 2025 05:41:49 GMT and should not be manually modified. + +## 1.0.4 +Wed, 18 Jun 2025 05:41:49 GMT + +### Updates + +- feat: timeline support animationStart flag +- feat: don't prevent normal animate attribute +- fix: fix default params of animation + + +- fix: fix issue with recall setupTickHandler ## 1.0.3 Tue, 10 Jun 2025 09:32:32 GMT diff --git a/packages/vrender-animate/package.json b/packages/vrender-animate/package.json index cb9b5e550..5b1fe9923 100644 --- a/packages/vrender-animate/package.json +++ b/packages/vrender-animate/package.json @@ -1,6 +1,6 @@ { "name": "@visactor/vrender-animate", - "version": "1.0.3", + "version": "1.0.4", "description": "", "sideEffects": false, "main": "cjs/index.js", @@ -21,7 +21,7 @@ }, "dependencies": { "@visactor/vutils": "1.0.6", - "@visactor/vrender-core": "workspace:1.0.3" + "@visactor/vrender-core": "workspace:1.0.4" }, "devDependencies": { "@internal/bundler": "workspace:*", diff --git a/packages/vrender-animate/src/animate-extension.ts b/packages/vrender-animate/src/animate-extension.ts index 36c94ca2b..6466febfd 100644 --- a/packages/vrender-animate/src/animate-extension.ts +++ b/packages/vrender-animate/src/animate-extension.ts @@ -27,9 +27,6 @@ export class AnimateExtension { } animate(params?: IGraphicAnimateParams) { - if (!this.animates) { - this.animates = new Map(); - } const animate = new Animate( params?.id, params?.timeline ?? ((this as any).stage && (this as any).stage.getTimeline()) ?? defaultTimeline, @@ -43,11 +40,6 @@ export class AnimateExtension { onEnd != null && animate.onEnd(onEnd); onRemove != null && animate.onRemove(onRemove); } - this.animates.set(animate.id, animate); - animate.onRemove(() => { - animate.stop(); - this.animates.delete(animate.id); - }); // TODO 考虑性能问题 (this as any).stage?.ticker.start(); diff --git a/packages/vrender-animate/src/animate.ts b/packages/vrender-animate/src/animate.ts index d6af3d033..29f3e174b 100644 --- a/packages/vrender-animate/src/animate.ts +++ b/packages/vrender-animate/src/animate.ts @@ -124,6 +124,15 @@ export class Animate implements IAnimate { bind(target: IGraphic): this { this.target = target; + if (!this.target.animates) { + this.target.animates = new Map(); + } + this.target.animates.set(this.id, this); + this.onRemove(() => { + this.stop(); + this.target.animates.delete(this.id); + }); + if (this.target.onAnimateBind && !this.slience) { this.target.onAnimateBind(this as any); } diff --git a/packages/vrender-animate/src/custom/custom-animate.ts b/packages/vrender-animate/src/custom/custom-animate.ts index 747af59a2..98c958703 100644 --- a/packages/vrender-animate/src/custom/custom-animate.ts +++ b/packages/vrender-animate/src/custom/custom-animate.ts @@ -16,6 +16,8 @@ export abstract class ACustomAnimate extends Step implements ICustomAnimate { super('customAnimate', customTo, duration, easing); this.customFrom = customFrom; this.params = params; + this.from = customFrom; + this.to = customTo; } update(end: boolean, ratio: number, out: Record): void { diff --git a/packages/vrender-animate/src/custom/fromTo.ts b/packages/vrender-animate/src/custom/fromTo.ts index c16ed83b5..138471ab8 100644 --- a/packages/vrender-animate/src/custom/fromTo.ts +++ b/packages/vrender-animate/src/custom/fromTo.ts @@ -51,6 +51,11 @@ export class FromTo extends ACustomAnimate> { this.target.setAttributes(this.from); } + deleteSelfAttr(key: string): void { + super.deleteSelfAttr(key); + delete this.from[key]; + } + /** * 更新执行的时候调用 * 如果跳帧了就不一定会执行 diff --git a/packages/vrender-animate/src/custom/move.ts b/packages/vrender-animate/src/custom/move.ts index c3e640ada..2694cfab5 100644 --- a/packages/vrender-animate/src/custom/move.ts +++ b/packages/vrender-animate/src/custom/move.ts @@ -80,10 +80,9 @@ export const moveOut = ( ) => { const { offset = 0, orient, direction, point: pointOpt } = options ?? {}; - // consider the offset of group - // const groupBounds = graphic.parent ? graphic.parent.getBounds() : null; - const groupWidth = options.layoutRect?.width ?? graphic.stage.viewWidth; - const groupHeight = options.layoutRect?.height ?? graphic.stage.viewHeight; + const groupBounds = animationParameters.group ? animationParameters.group.AABBBounds : null; + const groupWidth = groupBounds.width() ?? animationParameters.width; + const groupHeight = groupBounds.height() ?? animationParameters.height; const changedX = (orient === 'negative' ? groupWidth : 0) + offset; const changedY = (orient === 'negative' ? groupHeight : 0) + offset; const point = isFunction(pointOpt) diff --git a/packages/vrender-animate/src/executor/animate-executor.ts b/packages/vrender-animate/src/executor/animate-executor.ts index e3b4270b7..2570d74e6 100644 --- a/packages/vrender-animate/src/executor/animate-executor.ts +++ b/packages/vrender-animate/src/executor/animate-executor.ts @@ -420,10 +420,12 @@ export class AnimateExecutor implements IAnimateExecutor { ) { // 处理自定义动画 if (custom && customType) { - const customParams = this.resolveValue(customParameters, graphic, { + const customParams = { width: graphic.stage.width, - height: graphic.stage.height - }); + height: graphic.stage.height, + group: this._target.parent, + ...this.resolveValue(customParameters, graphic) + }; const objOptions = isFunction(options) ? options.call( null, diff --git a/packages/vrender-animate/src/ticker/default-ticker.ts b/packages/vrender-animate/src/ticker/default-ticker.ts index fcf7778cd..da1a6acd3 100644 --- a/packages/vrender-animate/src/ticker/default-ticker.ts +++ b/packages/vrender-animate/src/ticker/default-ticker.ts @@ -71,10 +71,10 @@ export class DefaultTicker extends EventEmitter implements ITicker { this.interval = 16; this.status = STATUS.INITIAL; application.global.hooks.onSetEnv.tap('graph-ticker', () => { - this.initHandler(); + this.initHandler(false); }); if (application.global.env) { - this.initHandler(); + this.initHandler(false); } } @@ -90,15 +90,18 @@ export class DefaultTicker extends EventEmitter implements ITicker { return this.timelines; } - protected initHandler() { - this.setupTickHandler(); + protected initHandler(force: boolean = false) { + this.setupTickHandler(force); } /** * Set up the tick handler * @returns true if setup was successful, false otherwise */ - protected setupTickHandler(): boolean { + protected setupTickHandler(force: boolean = false): boolean { + if (!force && this.tickerHandler) { + return true; + } const handler: ITickHandler = new RAFTickHandler(); // Destroy the previous tick handler @@ -196,7 +199,7 @@ export class DefaultTicker extends EventEmitter implements ITicker { stop(): void { // Reset the tick handler this.status = STATUS.INITIAL; - this.setupTickHandler(); + this.setupTickHandler(true); this.lastFrameTime = -1; } diff --git a/packages/vrender-animate/src/timeline.ts b/packages/vrender-animate/src/timeline.ts index c563dde40..64759264a 100644 --- a/packages/vrender-animate/src/timeline.ts +++ b/packages/vrender-animate/src/timeline.ts @@ -21,6 +21,7 @@ export class DefaultTimeline extends EventEmitter implements ITimeline { protected _totalDuration: number = 0; protected _startTime: number = 0; protected _currentTime: number = 0; + protected _animationEndFlag: boolean = true; declare isGlobal?: boolean; @@ -90,6 +91,10 @@ export class DefaultTimeline extends EventEmitter implements ITimeline { if (this.paused) { return; } + if (this._animationEndFlag) { + this._animationEndFlag = false; + this.emit('animationStart'); + } // 应用播放速度 const scaledDelta = delta * this._playSpeed; @@ -106,6 +111,7 @@ export class DefaultTimeline extends EventEmitter implements ITimeline { }); if (this._animateCount === 0) { + this._animationEndFlag = true; this.emit('animationEnd'); } } diff --git a/packages/vrender-components/CHANGELOG.json b/packages/vrender-components/CHANGELOG.json index b62c38ab7..b9e23f40e 100644 --- a/packages/vrender-components/CHANGELOG.json +++ b/packages/vrender-components/CHANGELOG.json @@ -1,6 +1,12 @@ { "name": "@visactor/vrender-components", "entries": [ + { + "version": "1.0.4", + "tag": "@visactor/vrender-components_v1.0.4", + "date": "Wed, 18 Jun 2025 05:41:49 GMT", + "comments": {} + }, { "version": "1.0.3", "tag": "@visactor/vrender-components_v1.0.3", diff --git a/packages/vrender-components/CHANGELOG.md b/packages/vrender-components/CHANGELOG.md index f3d6061ae..017ae7949 100644 --- a/packages/vrender-components/CHANGELOG.md +++ b/packages/vrender-components/CHANGELOG.md @@ -1,6 +1,11 @@ # Change Log - @visactor/vrender-components -This log was last generated on Tue, 10 Jun 2025 09:32:32 GMT and should not be manually modified. +This log was last generated on Wed, 18 Jun 2025 05:41:49 GMT and should not be manually modified. + +## 1.0.4 +Wed, 18 Jun 2025 05:41:49 GMT + +_Version update only_ ## 1.0.3 Tue, 10 Jun 2025 09:32:32 GMT diff --git a/packages/vrender-components/package.json b/packages/vrender-components/package.json index e75dc053c..f471f078a 100644 --- a/packages/vrender-components/package.json +++ b/packages/vrender-components/package.json @@ -1,6 +1,6 @@ { "name": "@visactor/vrender-components", - "version": "1.0.3", + "version": "1.0.4", "description": "components library for dp visualization", "sideEffects": false, "main": "cjs/index.js", @@ -27,9 +27,9 @@ "dependencies": { "@visactor/vutils": "1.0.6", "@visactor/vscale": "1.0.6", - "@visactor/vrender-core": "workspace:1.0.3", - "@visactor/vrender-kits": "workspace:1.0.3", - "@visactor/vrender-animate": "workspace:1.0.3" + "@visactor/vrender-core": "workspace:1.0.4", + "@visactor/vrender-kits": "workspace:1.0.4", + "@visactor/vrender-animate": "workspace:1.0.4" }, "devDependencies": { "@internal/bundler": "workspace:*", diff --git a/packages/vrender-core/CHANGELOG.json b/packages/vrender-core/CHANGELOG.json index 837a01a4b..4acaa7b15 100644 --- a/packages/vrender-core/CHANGELOG.json +++ b/packages/vrender-core/CHANGELOG.json @@ -1,6 +1,21 @@ { "name": "@visactor/vrender-core", "entries": [ + { + "version": "1.0.4", + "tag": "@visactor/vrender-core_v1.0.4", + "date": "Wed, 18 Jun 2025 05:41:49 GMT", + "comments": { + "none": [ + { + "comment": "feat: don't prevent normal animate attribute" + }, + { + "comment": "fix: set finalAttribute when applyStateAttrs" + } + ] + } + }, { "version": "1.0.3", "tag": "@visactor/vrender-core_v1.0.3", diff --git a/packages/vrender-core/CHANGELOG.md b/packages/vrender-core/CHANGELOG.md index 3b7f3c586..73de10bf3 100644 --- a/packages/vrender-core/CHANGELOG.md +++ b/packages/vrender-core/CHANGELOG.md @@ -1,6 +1,14 @@ # Change Log - @visactor/vrender-core -This log was last generated on Tue, 10 Jun 2025 09:32:32 GMT and should not be manually modified. +This log was last generated on Wed, 18 Jun 2025 05:41:49 GMT and should not be manually modified. + +## 1.0.4 +Wed, 18 Jun 2025 05:41:49 GMT + +### Updates + +- feat: don't prevent normal animate attribute +- fix: set finalAttribute when applyStateAttrs ## 1.0.3 Tue, 10 Jun 2025 09:32:32 GMT diff --git a/packages/vrender-core/package.json b/packages/vrender-core/package.json index 9e6f4b996..6329adaaf 100644 --- a/packages/vrender-core/package.json +++ b/packages/vrender-core/package.json @@ -1,6 +1,6 @@ { "name": "@visactor/vrender-core", - "version": "1.0.3", + "version": "1.0.4", "description": "", "sideEffects": [ "./src/modules.ts", diff --git a/packages/vrender-core/src/graphic/graphic.ts b/packages/vrender-core/src/graphic/graphic.ts index 31403cca3..fbe7d3094 100644 --- a/packages/vrender-core/src/graphic/graphic.ts +++ b/packages/vrender-core/src/graphic/graphic.ts @@ -671,10 +671,19 @@ export abstract class Graphic = Partial, forceUpdateTag: boolean = false, context?: ISetAttributeContext) { + setAttributesAndPreventAnimate( + params: Partial, + forceUpdateTag: boolean = false, + context?: ISetAttributeContext, + ignorePriority?: boolean + ) { this.setAttributes(params, forceUpdateTag, context); this.animates && this.animates.forEach(animate => { + // 优先级最高的动画(一般是循环动画),不屏蔽 + if (animate.priority === Infinity && !ignorePriority) { + return; + } Object.keys(params).forEach(key => { animate.preventAttr(key); }); @@ -1035,6 +1044,9 @@ export abstract class Graphic = Partial