MCPcopy Index your code
hub / github.com/adobe/react-spectrum / triggerHoverStart

Function triggerHoverStart

packages/react-aria/src/interactions/useHover.ts:107–154  ·  view source on GitHub ↗
(event, pointerType)

Source from the content-addressed store, hash-verified

105
106 let {hoverProps, triggerHoverEnd} = useMemo(() => {
107 let triggerHoverStart = (event, pointerType) => {
108 state.pointerType = pointerType;
109 if (
110 isDisabled ||
111 pointerType === 'touch' ||
112 state.isHovered ||
113 !nodeContains(event.currentTarget, getEventTarget(event) as Element)
114 ) {
115 return;
116 }
117
118 state.isHovered = true;
119 let target = event.currentTarget;
120 state.target = target;
121
122 // When an element that is hovered over is removed, no pointerleave event is fired by the browser,
123 // even though the originally hovered target may have shrunk in size so it is no longer hovered.
124 // However, a pointerover event will be fired on the new target the mouse is over.
125 // In Chrome this happens immediately. In Safari and Firefox, it happens upon moving the mouse one pixel.
126 addGlobalListener(
127 getOwnerDocument(getEventTarget(event) as Element),
128 'pointerover',
129 e => {
130 if (
131 state.isHovered &&
132 state.target &&
133 !nodeContains(state.target, getEventTarget(e) as Element)
134 ) {
135 triggerHoverEnd(e, e.pointerType);
136 }
137 },
138 {capture: true}
139 );
140
141 if (onHoverStart) {
142 onHoverStart({
143 type: 'hoverstart',
144 target,
145 pointerType
146 });
147 }
148
149 if (onHoverChange) {
150 onHoverChange(true);
151 }
152
153 setHovered(true);
154 };
155
156 let triggerHoverEnd = (event, pointerType) => {
157 let target = state.target;

Callers 1

useHoverFunction · 0.85

Calls 6

nodeContainsFunction · 0.90
getEventTargetFunction · 0.90
getOwnerDocumentFunction · 0.90
triggerHoverEndFunction · 0.85
onHoverChangeFunction · 0.85
onHoverStartFunction · 0.50

Tested by

no test coverage detected