diff --git a/packages/stage/src/StageHighlight.ts b/packages/stage/src/StageHighlight.ts index 167743ef..4ec5a10a 100644 --- a/packages/stage/src/StageHighlight.ts +++ b/packages/stage/src/StageHighlight.ts @@ -56,6 +56,7 @@ export default class StageHighlight extends EventEmitter { */ public clearHighlight(): void { if (!this.moveable) return; + this.target = undefined; this.moveable.target = null; this.moveable.updateTarget(); } diff --git a/packages/stage/src/StageMask.ts b/packages/stage/src/StageMask.ts index adadc2f5..a402b24a 100644 --- a/packages/stage/src/StageMask.ts +++ b/packages/stage/src/StageMask.ts @@ -106,6 +106,7 @@ export default class StageMask extends Rule { this.wrapper.appendChild(this.content); this.content.addEventListener('wheel', this.mouseWheelHandler); this.content.addEventListener('mousemove', this.highlightHandler); + this.content.addEventListener('mouseleave', this.mouseLeaveHandler); } public setMode(mode: Mode) { @@ -141,6 +142,7 @@ export default class StageMask extends Rule { this.fixScrollValue(); this.scroll(); + this.core.dr.updateMoveable(); }); this.pageResizeObserver.observe(page); @@ -180,6 +182,8 @@ export default class StageMask extends Rule { this.pageScrollParent = null; this.pageResizeObserver?.disconnect(); this.wrapperResizeObserver?.disconnect(); + + this.content.removeEventListener('mouseleave', this.mouseLeaveHandler); super.destroy(); } @@ -301,4 +305,8 @@ export default class StageMask extends Rule { this.emit('scroll', event); }; + + private mouseLeaveHandler = () => { + setTimeout(() => this.emit('clearHighlight'), throttleTime); + }; }