@@ -2507,14 +2507,51 @@ export abstract class ObserverNode<T extends HTMLOrSVGElement = HTMLOrSVGElement
25072507 this . keepUpdated ( store ) ;
25082508 return new LiveElement ( this . _element , store ) ;
25092509 }
2510+
2511+ private _isHovered : IObservable < boolean > | undefined = undefined ;
2512+
2513+ get isHovered ( ) : IObservable < boolean > {
2514+ if ( ! this . _isHovered ) {
2515+ const hovered = observableValue < boolean > ( 'hovered' , false ) ;
2516+ this . _element . addEventListener ( 'mouseenter' , ( _e ) => hovered . set ( true , undefined ) ) ;
2517+ this . _element . addEventListener ( 'mouseleave' , ( _e ) => hovered . set ( false , undefined ) ) ;
2518+ this . _isHovered = hovered ;
2519+ }
2520+ return this . _isHovered ;
2521+ }
2522+
2523+ private _didMouseMoveDuringHover : IObservable < boolean > | undefined = undefined ;
2524+
2525+ get didMouseMoveDuringHover ( ) : IObservable < boolean > {
2526+ if ( ! this . _didMouseMoveDuringHover ) {
2527+ let _hovering = false ;
2528+ const hovered = observableValue < boolean > ( 'didMouseMoveDuringHover' , false ) ;
2529+ this . _element . addEventListener ( 'mouseenter' , ( _e ) => {
2530+ _hovering = true ;
2531+ } ) ;
2532+ this . _element . addEventListener ( 'mousemove' , ( _e ) => {
2533+ if ( _hovering ) {
2534+ hovered . set ( true , undefined ) ;
2535+ }
2536+ } ) ;
2537+ this . _element . addEventListener ( 'mouseleave' , ( _e ) => {
2538+ _hovering = false ;
2539+ hovered . set ( false , undefined ) ;
2540+ } ) ;
2541+ this . _didMouseMoveDuringHover = hovered ;
2542+ }
2543+ return this . _didMouseMoveDuringHover ;
2544+ }
25102545}
2546+
25112547function setClassName ( domNode : HTMLOrSVGElement , className : string ) {
25122548 if ( isSVGElement ( domNode ) ) {
25132549 domNode . setAttribute ( 'class' , className ) ;
25142550 } else {
25152551 domNode . className = className ;
25162552 }
25172553}
2554+
25182555function resolve < T > ( value : ValueOrList < T > , reader : IReader | undefined , cb : ( val : T ) => void ) : void {
25192556 if ( isObservable ( value ) ) {
25202557 cb ( value . read ( reader ) ) ;
@@ -2582,41 +2619,6 @@ export class ObserverNodeWithElement<T extends HTMLOrSVGElement = HTMLOrSVGEleme
25822619 public get element ( ) {
25832620 return this . _element ;
25842621 }
2585-
2586- private _isHovered : IObservable < boolean > | undefined = undefined ;
2587-
2588- get isHovered ( ) : IObservable < boolean > {
2589- if ( ! this . _isHovered ) {
2590- const hovered = observableValue < boolean > ( 'hovered' , false ) ;
2591- this . _element . addEventListener ( 'mouseenter' , ( _e ) => hovered . set ( true , undefined ) ) ;
2592- this . _element . addEventListener ( 'mouseleave' , ( _e ) => hovered . set ( false , undefined ) ) ;
2593- this . _isHovered = hovered ;
2594- }
2595- return this . _isHovered ;
2596- }
2597-
2598- private _didMouseMoveDuringHover : IObservable < boolean > | undefined = undefined ;
2599-
2600- get didMouseMoveDuringHover ( ) : IObservable < boolean > {
2601- if ( ! this . _didMouseMoveDuringHover ) {
2602- let _hovering = false ;
2603- const hovered = observableValue < boolean > ( 'didMouseMoveDuringHover' , false ) ;
2604- this . _element . addEventListener ( 'mouseenter' , ( _e ) => {
2605- _hovering = true ;
2606- } ) ;
2607- this . _element . addEventListener ( 'mousemove' , ( _e ) => {
2608- if ( _hovering ) {
2609- hovered . set ( true , undefined ) ;
2610- }
2611- } ) ;
2612- this . _element . addEventListener ( 'mouseleave' , ( _e ) => {
2613- _hovering = false ;
2614- hovered . set ( false , undefined ) ;
2615- } ) ;
2616- this . _didMouseMoveDuringHover = hovered ;
2617- }
2618- return this . _didMouseMoveDuringHover ;
2619- }
26202622}
26212623function setOrRemoveAttribute ( element : HTMLOrSVGElement , key : string , value : unknown ) {
26222624 if ( value === null || value === undefined ) {
0 commit comments