[{"data":1,"prerenderedAt":1767},["ShallowReactive",2],{"navigation_docs":3,"-api-interactions-use-hover":271,"-api-interactions-use-hover-surround":1762},[4,135],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":28},"Guide","i-lucide-book-open","\u002Fguide","1.guide",[10,29,51,73,91,109],{"title":11,"icon":12,"path":13,"stem":14,"children":15,"page":28},"Getting Started","i-lucide-rocket","\u002Fguide\u002Fgetting-started","1.guide\u002F1.getting-started",[16,20,24],{"title":17,"path":18,"stem":19},"Introduction","\u002Fguide\u002Fgetting-started\u002Fintroduction","1.guide\u002F1.getting-started\u002F1.introduction",{"title":21,"path":22,"stem":23},"First Tooltip","\u002Fguide\u002Fgetting-started\u002Ffirst-tooltip","1.guide\u002F1.getting-started\u002F2.first-tooltip",{"title":25,"path":26,"stem":27},"First Popover","\u002Fguide\u002Fgetting-started\u002Ffirst-popover","1.guide\u002F1.getting-started\u002F3.first-popover",false,{"title":30,"icon":31,"path":32,"stem":33,"children":34,"page":28},"Core Concepts","i-lucide-boxes","\u002Fguide\u002Fcore-concepts","1.guide\u002F2.core-concepts",[35,39,43,47],{"title":36,"path":37,"stem":38},"Floating Node","\u002Fguide\u002Fcore-concepts\u002Ffloating-node","1.guide\u002F2.core-concepts\u002F1.floating-node",{"title":40,"path":41,"stem":42},"Placement & Positioning","\u002Fguide\u002Fcore-concepts\u002Fplacement-and-positioning","1.guide\u002F2.core-concepts\u002F2.placement-and-positioning",{"title":44,"path":45,"stem":46},"Interaction Model","\u002Fguide\u002Fcore-concepts\u002Finteraction-model","1.guide\u002F2.core-concepts\u002F3.interaction-model",{"title":48,"path":49,"stem":50},"Tree Coordination","\u002Fguide\u002Fcore-concepts\u002Ftree-coordination-explained","1.guide\u002F2.core-concepts\u002F4.tree-coordination-explained",{"title":52,"icon":53,"path":54,"stem":55,"children":56,"page":28},"Patterns","i-lucide-component","\u002Fguide\u002Fcomponents","1.guide\u002F3.components",[57,61,65,69],{"title":58,"path":59,"stem":60},"Tooltips","\u002Fguide\u002Fcomponents\u002Fbuild-accessible-tooltips","1.guide\u002F3.components\u002F1.build-accessible-tooltips",{"title":62,"path":63,"stem":64},"Popovers & Dropdowns","\u002Fguide\u002Fcomponents\u002Fbuild-popovers-and-dropdowns","1.guide\u002F3.components\u002F2.build-popovers-and-dropdowns",{"title":66,"path":67,"stem":68},"Dialogs & Modals","\u002Fguide\u002Fcomponents\u002Fbuild-dialogs-and-modals","1.guide\u002F3.components\u002F3.build-dialogs-and-modals",{"title":70,"path":71,"stem":72},"Nested Menus","\u002Fguide\u002Fcomponents\u002Fbuild-nested-menus","1.guide\u002F3.components\u002F4.build-nested-menus",{"title":74,"icon":75,"path":76,"stem":77,"children":78,"page":28},"Positioning","i-lucide-crosshair","\u002Fguide\u002Fpositioning","1.guide\u002F4.positioning",[79,83,87],{"title":80,"path":81,"stem":82},"Keep in View","\u002Fguide\u002Fpositioning\u002Fkeep-content-in-view","1.guide\u002F4.positioning\u002F1.keep-content-in-view",{"title":84,"path":85,"stem":86},"Virtual Anchors","\u002Fguide\u002Fpositioning\u002Fuse-virtual-anchors","1.guide\u002F4.positioning\u002F2.use-virtual-anchors",{"title":88,"path":89,"stem":90},"Middleware Pipeline","\u002Fguide\u002Fpositioning\u002Fmiddleware-pipeline","1.guide\u002F4.positioning\u002F3.middleware-pipeline",{"title":92,"icon":93,"path":94,"stem":95,"children":96,"page":28},"Accessibility","i-lucide-person-standing","\u002Fguide\u002Faccessibility","1.guide\u002F5.accessibility",[97,101,105],{"title":98,"path":99,"stem":100},"Open State","\u002Fguide\u002Faccessibility\u002Fcontrol-open-state","1.guide\u002F5.accessibility\u002F1.control-open-state",{"title":102,"path":103,"stem":104},"Focus Models","\u002Fguide\u002Faccessibility\u002Ffocus-models","1.guide\u002F5.accessibility\u002F2.focus-models",{"title":106,"path":107,"stem":108},"Keyboard Navigation","\u002Fguide\u002Faccessibility\u002Fkeyboard-navigation","1.guide\u002F5.accessibility\u002F3.keyboard-navigation",{"title":110,"icon":111,"path":112,"stem":113,"children":114,"page":28},"Advanced","i-lucide-cpu","\u002Fguide\u002Fadvanced","1.guide\u002F6.advanced",[115,119,123,127,131],{"title":116,"path":117,"stem":118},"Controlled vs Uncontrolled","\u002Fguide\u002Fadvanced\u002Fcontrolled-vs-uncontrolled","1.guide\u002F6.advanced\u002F1.controlled-vs-uncontrolled",{"title":120,"path":121,"stem":122},"Safe Polygons","\u002Fguide\u002Fadvanced\u002Fsafe-polygon-gotchas","1.guide\u002F6.advanced\u002F2.safe-polygon-gotchas",{"title":124,"path":125,"stem":126},"Virtual Anchor Gotchas","\u002Fguide\u002Fadvanced\u002Fvirtual-anchor-gotchas","1.guide\u002F6.advanced\u002F3.virtual-anchor-gotchas",{"title":128,"path":129,"stem":130},"Middleware Ordering","\u002Fguide\u002Fadvanced\u002Fmiddleware-ordering-gotchas","1.guide\u002F6.advanced\u002F4.middleware-ordering-gotchas",{"title":132,"path":133,"stem":134},"List Navigation","\u002Fguide\u002Fadvanced\u002Flist-navigation-gotchas","1.guide\u002F6.advanced\u002F5.list-navigation-gotchas",{"title":136,"icon":137,"path":138,"stem":139,"children":140},"API Reference","i-lucide-code-xml","\u002Fapi","2.api",[141,145,155,165,182,216,233],{"title":142,"path":138,"stem":143,"icon":144},"Overview","2.api\u002Findex","i-lucide-file-text",{"title":146,"icon":147,"path":148,"stem":149,"children":150,"page":28},"Reference","i-lucide-braces","\u002Fapi\u002Foverview","2.api\u002F1.overview",[151],{"title":152,"path":153,"stem":154},"Types","\u002Fapi\u002Foverview\u002Ftypes","2.api\u002F1.overview\u002F1.types",{"title":156,"icon":157,"path":158,"stem":159,"children":160,"page":28},"Core","i-lucide-box","\u002Fapi\u002Fcore","2.api\u002F2.core",[161],{"title":162,"path":163,"stem":164},"useFloatingNode","\u002Fapi\u002Fcore\u002Fuse-floating-node","2.api\u002F2.core\u002F1.use-floating-node",{"title":74,"icon":166,"path":167,"stem":168,"children":169,"page":28},"i-lucide-move","\u002Fapi\u002Fpositioning","2.api\u002F3.positioning",[170,174,178],{"title":171,"path":172,"stem":173},"usePosition","\u002Fapi\u002Fpositioning\u002Fuse-position","2.api\u002F3.positioning\u002F1.use-position",{"title":175,"path":176,"stem":177},"useArrow","\u002Fapi\u002Fpositioning\u002Fuse-arrow","2.api\u002F3.positioning\u002F2.use-arrow",{"title":179,"path":180,"stem":181},"useClientPoint","\u002Fapi\u002Fpositioning\u002Fuse-client-point","2.api\u002F3.positioning\u002F3.use-client-point",{"title":183,"icon":184,"path":185,"stem":186,"children":187,"page":28},"Interactions","i-lucide-mouse-pointer-click","\u002Fapi\u002Finteractions","2.api\u002F4.interactions",[188,192,196,200,204,208,212],{"title":189,"path":190,"stem":191},"useClick","\u002Fapi\u002Finteractions\u002Fuse-click","2.api\u002F4.interactions\u002F1.use-click",{"title":193,"path":194,"stem":195},"useHover","\u002Fapi\u002Finteractions\u002Fuse-hover","2.api\u002F4.interactions\u002F2.use-hover",{"title":197,"path":198,"stem":199},"useFocus","\u002Fapi\u002Finteractions\u002Fuse-focus","2.api\u002F4.interactions\u002F3.use-focus",{"title":201,"path":202,"stem":203},"useFocusTrap","\u002Fapi\u002Finteractions\u002Fuse-focus-trap","2.api\u002F4.interactions\u002F4.use-focus-trap",{"title":205,"path":206,"stem":207},"useOutsideClick","\u002Fapi\u002Finteractions\u002Fuse-outside-click","2.api\u002F4.interactions\u002F5.use-outside-click",{"title":209,"path":210,"stem":211},"useEscapeKey","\u002Fapi\u002Finteractions\u002Fuse-escape-key","2.api\u002F4.interactions\u002F6.use-escape-key",{"title":213,"path":214,"stem":215},"useRole","\u002Fapi\u002Finteractions\u002Fuse-role","2.api\u002F4.interactions\u002F7.use-role",{"title":106,"icon":217,"path":218,"stem":219,"children":220,"page":28},"i-lucide-keyboard","\u002Fapi\u002Fkeyboard-navigation","2.api\u002F5.keyboard-navigation",[221,225,229],{"title":222,"path":223,"stem":224},"useRovingFocus","\u002Fapi\u002Fkeyboard-navigation\u002Fuse-roving-focus","2.api\u002F5.keyboard-navigation\u002F1.use-roving-focus",{"title":226,"path":227,"stem":228},"useAriaActivedescendant","\u002Fapi\u002Fkeyboard-navigation\u002Fuse-aria-activedescendant","2.api\u002F5.keyboard-navigation\u002F2.use-aria-activedescendant",{"title":230,"path":231,"stem":232},"useTypeahead","\u002Fapi\u002Fkeyboard-navigation\u002Fuse-typeahead","2.api\u002F5.keyboard-navigation\u002F3.use-typeahead",{"title":234,"icon":235,"path":236,"stem":237,"children":238,"page":28},"Middleware","i-lucide-blocks","\u002Fapi\u002Fmiddleware","2.api\u002F6.middleware",[239,243,247,251,255,259,263,267],{"title":240,"path":241,"stem":242},"offset","\u002Fapi\u002Fmiddleware\u002Foffset","2.api\u002F6.middleware\u002F1.offset",{"title":244,"path":245,"stem":246},"flip","\u002Fapi\u002Fmiddleware\u002Fflip","2.api\u002F6.middleware\u002F2.flip",{"title":248,"path":249,"stem":250},"shift","\u002Fapi\u002Fmiddleware\u002Fshift","2.api\u002F6.middleware\u002F3.shift",{"title":252,"path":253,"stem":254},"autoPlacement","\u002Fapi\u002Fmiddleware\u002Fautoplacement","2.api\u002F6.middleware\u002F4.autoplacement",{"title":256,"path":257,"stem":258},"size","\u002Fapi\u002Fmiddleware\u002Fsize","2.api\u002F6.middleware\u002F5.size",{"title":260,"path":261,"stem":262},"inline","\u002Fapi\u002Fmiddleware\u002Finline","2.api\u002F6.middleware\u002F6.inline",{"title":264,"path":265,"stem":266},"arrow","\u002Fapi\u002Fmiddleware\u002Farrow","2.api\u002F6.middleware\u002F7.arrow",{"title":268,"path":269,"stem":270},"hide","\u002Fapi\u002Fmiddleware\u002Fhide","2.api\u002F6.middleware\u002F8.hide",{"id":272,"title":193,"body":273,"description":1756,"extension":1757,"links":1758,"meta":1759,"navigation":351,"path":194,"seo":1760,"stem":195,"__hash__":1761},"docs\u002F2.api\u002F4.interactions\u002F2.use-hover.md",{"type":274,"value":275,"toc":1736},"minimark",[276,283,288,636,640,788,793,801,934,938,947,951,957,964,978,984,991,998,1007,1013,1035,1045,1120,1126,1137,1154,1158,1172,1176,1691,1695,1732],[277,278,279,282],"p",{},[280,281,193],"code",{}," opens and closes a floating node when the pointer enters or leaves the anchor or floating element. It supports open\u002Fclose delays, rest-before-open timers, and safe polygons that bridge the gap between trigger and floating panel.",[284,285,287],"h2",{"id":286},"type","Type",[289,290,295],"pre",{"className":291,"code":292,"language":293,"meta":294,"style":294},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","function useHover(node: FloatingNode, options?: UseHoverOptions): void;\n\ninterface UseHoverOptions {\n  enabled?: MaybeRefOrGetter\u003Cboolean>;\n  delay?: MaybeRefOrGetter\u003Cnumber | { open?: number; close?: number }>;\n  restMs?: MaybeRefOrGetter\u003Cnumber>;\n  mouseOnly?: MaybeRefOrGetter\u003Cboolean>;\n  safePolygon?: MaybeRefOrGetter\u003Cboolean | SafePolygonOptions>;\n  ignorePointerLeave?: (target: EventTarget | null) => boolean;\n}\n\ninterface SafePolygonOptions {\n  buffer?: number;\n  requireIntent?: boolean;\n  intentTimeout?: number;\n  blockPointerEvents?: boolean;\n  getScope?: () => HTMLElement | null;\n  onPolygonChange?: (polygon: Polygon) => void;\n}\n","ts","",[280,296,297,346,353,364,385,427,443,459,480,515,521,526,535,547,559,571,583,605,631],{"__ignoreMap":294},[298,299,302,306,310,314,318,321,325,328,331,334,337,340,343],"span",{"class":300,"line":301},"line",1,[298,303,305],{"class":304},"spNyl","function",[298,307,309],{"class":308},"s2Zo4"," useHover",[298,311,313],{"class":312},"sMK4o","(",[298,315,317],{"class":316},"sHdIc","node",[298,319,320],{"class":312},":",[298,322,324],{"class":323},"sBMFI"," FloatingNode",[298,326,327],{"class":312},",",[298,329,330],{"class":316}," options",[298,332,333],{"class":312},"?:",[298,335,336],{"class":323}," UseHoverOptions",[298,338,339],{"class":312},"):",[298,341,342],{"class":323}," void",[298,344,345],{"class":312},";\n",[298,347,349],{"class":300,"line":348},2,[298,350,352],{"emptyLinePlaceholder":351},true,"\n",[298,354,356,359,361],{"class":300,"line":355},3,[298,357,358],{"class":304},"interface",[298,360,336],{"class":323},[298,362,363],{"class":312}," {\n",[298,365,367,371,373,376,379,382],{"class":300,"line":366},4,[298,368,370],{"class":369},"swJcz","  enabled",[298,372,333],{"class":312},[298,374,375],{"class":323}," MaybeRefOrGetter",[298,377,378],{"class":312},"\u003C",[298,380,381],{"class":323},"boolean",[298,383,384],{"class":312},">;\n",[298,386,388,391,393,395,397,400,403,406,409,411,414,417,420,422,424],{"class":300,"line":387},5,[298,389,390],{"class":369},"  delay",[298,392,333],{"class":312},[298,394,375],{"class":323},[298,396,378],{"class":312},[298,398,399],{"class":323},"number",[298,401,402],{"class":312}," |",[298,404,405],{"class":312}," {",[298,407,408],{"class":369}," open",[298,410,333],{"class":312},[298,412,413],{"class":323}," number",[298,415,416],{"class":312},";",[298,418,419],{"class":369}," close",[298,421,333],{"class":312},[298,423,413],{"class":323},[298,425,426],{"class":312}," }>;\n",[298,428,430,433,435,437,439,441],{"class":300,"line":429},6,[298,431,432],{"class":369},"  restMs",[298,434,333],{"class":312},[298,436,375],{"class":323},[298,438,378],{"class":312},[298,440,399],{"class":323},[298,442,384],{"class":312},[298,444,446,449,451,453,455,457],{"class":300,"line":445},7,[298,447,448],{"class":369},"  mouseOnly",[298,450,333],{"class":312},[298,452,375],{"class":323},[298,454,378],{"class":312},[298,456,381],{"class":323},[298,458,384],{"class":312},[298,460,462,465,467,469,471,473,475,478],{"class":300,"line":461},8,[298,463,464],{"class":369},"  safePolygon",[298,466,333],{"class":312},[298,468,375],{"class":323},[298,470,378],{"class":312},[298,472,381],{"class":323},[298,474,402],{"class":312},[298,476,477],{"class":323}," SafePolygonOptions",[298,479,384],{"class":312},[298,481,483,486,488,491,494,496,499,501,504,507,510,513],{"class":300,"line":482},9,[298,484,485],{"class":369},"  ignorePointerLeave",[298,487,333],{"class":312},[298,489,490],{"class":312}," (",[298,492,493],{"class":316},"target",[298,495,320],{"class":312},[298,497,498],{"class":323}," EventTarget",[298,500,402],{"class":312},[298,502,503],{"class":323}," null",[298,505,506],{"class":312},")",[298,508,509],{"class":304}," =>",[298,511,512],{"class":323}," boolean",[298,514,345],{"class":312},[298,516,518],{"class":300,"line":517},10,[298,519,520],{"class":312},"}\n",[298,522,524],{"class":300,"line":523},11,[298,525,352],{"emptyLinePlaceholder":351},[298,527,529,531,533],{"class":300,"line":528},12,[298,530,358],{"class":304},[298,532,477],{"class":323},[298,534,363],{"class":312},[298,536,538,541,543,545],{"class":300,"line":537},13,[298,539,540],{"class":369},"  buffer",[298,542,333],{"class":312},[298,544,413],{"class":323},[298,546,345],{"class":312},[298,548,550,553,555,557],{"class":300,"line":549},14,[298,551,552],{"class":369},"  requireIntent",[298,554,333],{"class":312},[298,556,512],{"class":323},[298,558,345],{"class":312},[298,560,562,565,567,569],{"class":300,"line":561},15,[298,563,564],{"class":369},"  intentTimeout",[298,566,333],{"class":312},[298,568,413],{"class":323},[298,570,345],{"class":312},[298,572,574,577,579,581],{"class":300,"line":573},16,[298,575,576],{"class":369},"  blockPointerEvents",[298,578,333],{"class":312},[298,580,512],{"class":323},[298,582,345],{"class":312},[298,584,586,589,591,594,596,599,601,603],{"class":300,"line":585},17,[298,587,588],{"class":369},"  getScope",[298,590,333],{"class":312},[298,592,593],{"class":312}," ()",[298,595,509],{"class":304},[298,597,598],{"class":323}," HTMLElement",[298,600,402],{"class":312},[298,602,503],{"class":323},[298,604,345],{"class":312},[298,606,608,611,613,615,618,620,623,625,627,629],{"class":300,"line":607},18,[298,609,610],{"class":369},"  onPolygonChange",[298,612,333],{"class":312},[298,614,490],{"class":312},[298,616,617],{"class":316},"polygon",[298,619,320],{"class":312},[298,621,622],{"class":323}," Polygon",[298,624,506],{"class":312},[298,626,509],{"class":304},[298,628,342],{"class":323},[298,630,345],{"class":312},[298,632,634],{"class":300,"line":633},19,[298,635,520],{"class":312},[284,637,639],{"id":638},"options","Options",[641,642,643,661],"table",{},[644,645,646],"thead",{},[647,648,649,653,655,658],"tr",{},[650,651,652],"th",{},"Name",[650,654,287],{},[650,656,657],{},"Default",[650,659,660],{},"Notes",[662,663,664,685,705,724,746,765],"tbody",{},[647,665,666,672,677,682],{},[667,668,669],"td",{},[280,670,671],{},"enabled",[667,673,674],{},[280,675,676],{},"MaybeRefOrGetter\u003Cboolean>",[667,678,679],{},[280,680,681],{},"true",[667,683,684],{},"Reactive toggle. Gates all hover listeners.",[647,686,687,692,697,702],{},[667,688,689],{},[280,690,691],{},"delay",[667,693,694],{},[280,695,696],{},"MaybeRefOrGetter\u003Cnumber | { open?: number; close?: number }>",[667,698,699],{},[280,700,701],{},"0",[667,703,704],{},"Debounce duration in milliseconds for open and close transitions.",[647,706,707,712,717,721],{},[667,708,709],{},[280,710,711],{},"restMs",[667,713,714],{},[280,715,716],{},"MaybeRefOrGetter\u003Cnumber>",[667,718,719],{},[280,720,701],{},[667,722,723],{},"Duration the pointer must rest stationary over the anchor before opening.",[647,725,726,731,735,740],{},[667,727,728],{},[280,729,730],{},"mouseOnly",[667,732,733],{},[280,734,676],{},[667,736,737],{},[280,738,739],{},"false",[667,741,742,743,745],{},"When ",[280,744,681],{},", ignores touch or pen hover events.",[647,747,748,753,758,762],{},[667,749,750],{},[280,751,752],{},"safePolygon",[667,754,755],{},[280,756,757],{},"MaybeRefOrGetter\u003Cboolean | SafePolygonOptions>",[667,759,760],{},[280,761,739],{},[667,763,764],{},"Keeps panel open while the pointer travels across the gap between anchor and floating panel.",[647,766,767,772,777,782],{},[667,768,769],{},[280,770,771],{},"ignorePointerLeave",[667,773,774],{},[280,775,776],{},"(target: EventTarget | null) => boolean",[667,778,779],{},[280,780,781],{},"undefined",[667,783,784,785,787],{},"Callback returning ",[280,786,681],{}," to ignore selected pointer-leave events.",[789,790,792],"h3",{"id":791},"safe-polygon-options","Safe Polygon Options",[277,794,742,795,797,798,800],{},[280,796,752],{}," is ",[280,799,681],{}," or an object, an invisible directional polygon is calculated between the pointer and the floating panel:",[641,802,803,816],{},[644,804,805],{},[647,806,807,810,812,814],{},[650,808,809],{},"Option",[650,811,287],{},[650,813,657],{},[650,815,660],{},[662,817,818,837,855,874,892,915],{},[647,819,820,825,829,834],{},[667,821,822],{},[280,823,824],{},"buffer",[667,826,827],{},[280,828,399],{},[667,830,831],{},[280,832,833],{},"0.5",[667,835,836],{},"Extra pixel padding added around the travel corridor.",[647,838,839,844,848,852],{},[667,840,841],{},[280,842,843],{},"requireIntent",[667,845,846],{},[280,847,381],{},[667,849,850],{},[280,851,681],{},[667,853,854],{},"Requires pointer velocity and direction to point toward the floating element.",[647,856,857,862,866,871],{},[667,858,859],{},[280,860,861],{},"intentTimeout",[667,863,864],{},[280,865,399],{},[667,867,868],{},[280,869,870],{},"40",[667,872,873],{},"Delay in milliseconds before closing when pointer velocity drops below 0.1 px\u002Fms.",[647,875,876,881,885,889],{},[667,877,878],{},[280,879,880],{},"blockPointerEvents",[667,882,883],{},[280,884,381],{},[667,886,887],{},[280,888,739],{},[667,890,891],{},"Prevents background elements from firing pointer\u002Fhover events while traversing the safe corridor.",[647,893,894,899,904,909],{},[667,895,896],{},[280,897,898],{},"getScope",[667,900,901],{},[280,902,903],{},"() => HTMLElement | null",[667,905,906],{},[280,907,908],{},"() => document.body",[667,910,911,912,914],{},"Resolves the root element subtree to shield when ",[280,913,880],{}," is enabled.",[647,916,917,922,927,931],{},[667,918,919],{},[280,920,921],{},"onPolygonChange",[667,923,924],{},[280,925,926],{},"(polygon: Polygon) => void",[667,928,929],{},[280,930,781],{},[667,932,933],{},"Callback receiving updated polygon coordinates for debugging or visualization.",[284,935,937],{"id":936},"returns","Returns",[277,939,940,942,943,946],{},[280,941,193],{}," returns ",[280,944,945],{},"void",". It manages listeners on the anchor and floating elements that automatically clean up when components unmount.",[284,948,950],{"id":949},"details","Details",[789,952,954,955],{"id":953},"preventing-accidental-triggers-with-restms","Preventing Accidental Triggers with ",[280,956,711],{},[277,958,959,960,963],{},"When users quickly skim across a row of buttons or table cells, instant tooltips create visual noise. Setting ",[280,961,962],{},"restMs: 150"," waits until the pointer rests stationary within the anchor element (moves $\\le$ 4px) before opening.",[277,965,966,967,969,970,973,974,977],{},"To ensure accessibility for users with motor tremors or continuous scanning habits, ",[280,968,193],{}," enforces an automatic 1000ms fallback ceiling delay (or ",[280,971,972],{},"Math.max(delay.open, 1000)"," if ",[280,975,976],{},"delay.open"," is larger). If the pointer remains inside the anchor for the duration of the fallback delay, the floating element opens even if the cursor moves continuously.",[789,979,981,982],{"id":980},"bridging-gaps-with-safepolygon","Bridging Gaps with ",[280,983,752],{},[277,985,986,987,990],{},"If your floating panel is separated from the anchor by an offset margin, moving the mouse to click an item in the panel would trigger a ",[280,988,989],{},"pointerleave"," event on the anchor and dismiss the panel.",[277,992,993,994,997],{},"Enabling ",[280,995,996],{},"safePolygon: true"," tracks the pointer trajectory. As long as the cursor moves toward the floating panel inside the dynamic cone, the surface remains open.",[789,999,1001,1002,1004,1005],{"id":1000},"preventing-background-flicker-with-blockpointerevents-and-getscope","Preventing Background Flicker with ",[280,1003,880],{}," and ",[280,1006,898],{},[277,1008,1009,1010,1012],{},"In dense navigation bars, multi-column flyouts, and mega-menus, moving the cursor diagonally across the screen to reach a submenu often passes over sibling links or neighboring navigation items. Even with ",[280,1011,752],{}," active, those underlying DOM elements still fire pointer events by default, causing unwanted hover states, button highlights, or secondary popups to flicker into view.",[277,1014,1015,1016,1019,1020,1022,1023,1026,1027,1030,1031,1034],{},"Setting ",[280,1017,1018],{},"blockPointerEvents: true"," in your ",[280,1021,752],{}," configuration temporarily sets ",[280,1024,1025],{},"pointer-events: none"," on the scope while keeping ",[280,1028,1029],{},"pointer-events: auto"," explicitly enabled on the anchor and floating elements. Reference-counted hold tracking ensures that nested menus and overlapping corridors never leave ",[280,1032,1033],{},"pointer-events"," disabled.",[277,1036,1037,1038,1041,1042,1044],{},"By default, the shielded scope is the anchor's ",[280,1039,1040],{},"document.body",". To restrict shielding to a specific container (such as a sidebar navigation list or menu dropdown) so the rest of the application remains fully interactive during corridor traversal, pass a ",[280,1043,898],{}," function:",[289,1046,1048],{"className":291,"code":1047,"language":293,"meta":294,"style":294},"useHover(node, {\n  safePolygon: {\n    blockPointerEvents: true,\n    getScope: () => navMenuEl.value,\n  },\n});\n",[280,1049,1050,1062,1070,1084,1106,1111],{"__ignoreMap":294},[298,1051,1052,1054,1058,1060],{"class":300,"line":301},[298,1053,193],{"class":308},[298,1055,1057],{"class":1056},"sTEyZ","(node",[298,1059,327],{"class":312},[298,1061,363],{"class":312},[298,1063,1064,1066,1068],{"class":300,"line":348},[298,1065,464],{"class":369},[298,1067,320],{"class":312},[298,1069,363],{"class":312},[298,1071,1072,1075,1077,1081],{"class":300,"line":355},[298,1073,1074],{"class":369},"    blockPointerEvents",[298,1076,320],{"class":312},[298,1078,1080],{"class":1079},"sfNiH"," true",[298,1082,1083],{"class":312},",\n",[298,1085,1086,1089,1091,1093,1095,1098,1101,1104],{"class":300,"line":366},[298,1087,1088],{"class":308},"    getScope",[298,1090,320],{"class":312},[298,1092,593],{"class":312},[298,1094,509],{"class":304},[298,1096,1097],{"class":1056}," navMenuEl",[298,1099,1100],{"class":312},".",[298,1102,1103],{"class":1056},"value",[298,1105,1083],{"class":312},[298,1107,1108],{"class":300,"line":387},[298,1109,1110],{"class":312},"  },\n",[298,1112,1113,1116,1118],{"class":300,"line":429},[298,1114,1115],{"class":312},"}",[298,1117,506],{"class":1056},[298,1119,345],{"class":312},[789,1121,1123,1124],{"id":1122},"tuning-intent-sensitivity-with-intenttimeout","Tuning Intent Sensitivity with ",[280,1125,861],{},[277,1127,742,1128,1130,1131,1133,1134,1136],{},[280,1129,843],{}," is enabled (the default), ",[280,1132,193],{}," measures pointer velocity. If the cursor slows down or stops inside the safe corridor (dropping below 0.1 px\u002Fms), ",[280,1135,193],{}," starts a timer before closing the floating panel.",[277,1138,1139,1140,1142,1143,1145,1146,1149,1150,1153],{},"The default ",[280,1141,861],{}," is 40ms. If you build large mega-menus, multi-column navigation layouts, or designs where users pause briefly while scanning items mid-transit, increase ",[280,1144,861],{}," (for example, ",[280,1147,1148],{},"80"," to ",[280,1151,1152],{},"150",") to provide a more forgiving grace period.",[789,1155,1157],{"id":1156},"spatial-family-awareness","Spatial Family Awareness",[277,1159,1160,1161,1163,1164,1167,1168,1171],{},"When moving the pointer into a child submenu or nested floating surface, ",[280,1162,193],{}," verifies whether the pointer's destination (",[280,1165,1166],{},"e.relatedTarget",") is contained in the node family via ",[280,1169,1170],{},"node.contains(e.relatedTarget)",". Parent surfaces stay open without extra manual listener wiring.",[284,1173,1175],{"id":1174},"example","Example",[289,1177,1181],{"className":1178,"code":1179,"language":1180,"meta":294,"style":294},"language-vue shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003Cscript setup lang=\"ts\">\nimport { ref } from \"vue\";\nimport { useFloatingNode, useHover, usePosition } from \"v-float\";\n\nconst anchorEl = ref\u003CHTMLElement | null>(null);\nconst floatingEl = ref\u003CHTMLElement | null>(null);\n\nconst node = useFloatingNode({ anchorEl, floatingEl });\nusePosition(node, {\n  placement: \"top\",\n  middlewares: {\n    offset: 8,\n    flip: true,\n    shift: { padding: 8 },\n  },\n});\n\nuseHover(node, {\n  delay: { open: 150, close: 100 },\n  safePolygon: true,\n});\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003Cbutton ref=\"anchorEl\">Hover for details\u003C\u002Fbutton>\n\n  \u003Cdiv v-if=\"node.open.value\" ref=\"floatingEl\" class=\"card\">\n    \u003Cp>Interactive floating card with links\u003C\u002Fp>\n    \u003Ca href=\"#more\">Read documentation\u003C\u002Fa>\n  \u003C\u002Fdiv>\n\u003C\u002Ftemplate>\n","vue",[280,1182,1183,1210,1236,1267,1271,1304,1333,1337,1366,1376,1392,1401,1414,1425,1444,1448,1456,1460,1470,1496,1507,1516,1526,1531,1541,1572,1577,1622,1641,1672,1682],{"__ignoreMap":294},[298,1184,1185,1187,1190,1193,1196,1199,1202,1205,1207],{"class":300,"line":301},[298,1186,378],{"class":312},[298,1188,1189],{"class":369},"script",[298,1191,1192],{"class":304}," setup",[298,1194,1195],{"class":304}," lang",[298,1197,1198],{"class":312},"=",[298,1200,1201],{"class":312},"\"",[298,1203,293],{"class":1204},"sfazB",[298,1206,1201],{"class":312},[298,1208,1209],{"class":312},">\n",[298,1211,1212,1216,1218,1221,1224,1227,1230,1232,1234],{"class":300,"line":348},[298,1213,1215],{"class":1214},"s7zQu","import",[298,1217,405],{"class":312},[298,1219,1220],{"class":1056}," ref",[298,1222,1223],{"class":312}," }",[298,1225,1226],{"class":1214}," from",[298,1228,1229],{"class":312}," \"",[298,1231,1180],{"class":1204},[298,1233,1201],{"class":312},[298,1235,345],{"class":312},[298,1237,1238,1240,1242,1245,1247,1249,1251,1254,1256,1258,1260,1263,1265],{"class":300,"line":355},[298,1239,1215],{"class":1214},[298,1241,405],{"class":312},[298,1243,1244],{"class":1056}," useFloatingNode",[298,1246,327],{"class":312},[298,1248,309],{"class":1056},[298,1250,327],{"class":312},[298,1252,1253],{"class":1056}," usePosition",[298,1255,1223],{"class":312},[298,1257,1226],{"class":1214},[298,1259,1229],{"class":312},[298,1261,1262],{"class":1204},"v-float",[298,1264,1201],{"class":312},[298,1266,345],{"class":312},[298,1268,1269],{"class":300,"line":366},[298,1270,352],{"emptyLinePlaceholder":351},[298,1272,1273,1276,1279,1281,1283,1285,1288,1290,1292,1295,1297,1300,1302],{"class":300,"line":387},[298,1274,1275],{"class":304},"const",[298,1277,1278],{"class":1056}," anchorEl ",[298,1280,1198],{"class":312},[298,1282,1220],{"class":308},[298,1284,378],{"class":312},[298,1286,1287],{"class":323},"HTMLElement",[298,1289,402],{"class":312},[298,1291,503],{"class":323},[298,1293,1294],{"class":312},">",[298,1296,313],{"class":1056},[298,1298,1299],{"class":312},"null",[298,1301,506],{"class":1056},[298,1303,345],{"class":312},[298,1305,1306,1308,1311,1313,1315,1317,1319,1321,1323,1325,1327,1329,1331],{"class":300,"line":429},[298,1307,1275],{"class":304},[298,1309,1310],{"class":1056}," floatingEl ",[298,1312,1198],{"class":312},[298,1314,1220],{"class":308},[298,1316,378],{"class":312},[298,1318,1287],{"class":323},[298,1320,402],{"class":312},[298,1322,503],{"class":323},[298,1324,1294],{"class":312},[298,1326,313],{"class":1056},[298,1328,1299],{"class":312},[298,1330,506],{"class":1056},[298,1332,345],{"class":312},[298,1334,1335],{"class":300,"line":445},[298,1336,352],{"emptyLinePlaceholder":351},[298,1338,1339,1341,1344,1346,1348,1350,1353,1356,1358,1360,1362,1364],{"class":300,"line":461},[298,1340,1275],{"class":304},[298,1342,1343],{"class":1056}," node ",[298,1345,1198],{"class":312},[298,1347,1244],{"class":308},[298,1349,313],{"class":1056},[298,1351,1352],{"class":312},"{",[298,1354,1355],{"class":1056}," anchorEl",[298,1357,327],{"class":312},[298,1359,1310],{"class":1056},[298,1361,1115],{"class":312},[298,1363,506],{"class":1056},[298,1365,345],{"class":312},[298,1367,1368,1370,1372,1374],{"class":300,"line":482},[298,1369,171],{"class":308},[298,1371,1057],{"class":1056},[298,1373,327],{"class":312},[298,1375,363],{"class":312},[298,1377,1378,1381,1383,1385,1388,1390],{"class":300,"line":517},[298,1379,1380],{"class":369},"  placement",[298,1382,320],{"class":312},[298,1384,1229],{"class":312},[298,1386,1387],{"class":1204},"top",[298,1389,1201],{"class":312},[298,1391,1083],{"class":312},[298,1393,1394,1397,1399],{"class":300,"line":523},[298,1395,1396],{"class":369},"  middlewares",[298,1398,320],{"class":312},[298,1400,363],{"class":312},[298,1402,1403,1406,1408,1412],{"class":300,"line":528},[298,1404,1405],{"class":369},"    offset",[298,1407,320],{"class":312},[298,1409,1411],{"class":1410},"sbssI"," 8",[298,1413,1083],{"class":312},[298,1415,1416,1419,1421,1423],{"class":300,"line":537},[298,1417,1418],{"class":369},"    flip",[298,1420,320],{"class":312},[298,1422,1080],{"class":1079},[298,1424,1083],{"class":312},[298,1426,1427,1430,1432,1434,1437,1439,1441],{"class":300,"line":549},[298,1428,1429],{"class":369},"    shift",[298,1431,320],{"class":312},[298,1433,405],{"class":312},[298,1435,1436],{"class":369}," padding",[298,1438,320],{"class":312},[298,1440,1411],{"class":1410},[298,1442,1443],{"class":312}," },\n",[298,1445,1446],{"class":300,"line":561},[298,1447,1110],{"class":312},[298,1449,1450,1452,1454],{"class":300,"line":573},[298,1451,1115],{"class":312},[298,1453,506],{"class":1056},[298,1455,345],{"class":312},[298,1457,1458],{"class":300,"line":585},[298,1459,352],{"emptyLinePlaceholder":351},[298,1461,1462,1464,1466,1468],{"class":300,"line":607},[298,1463,193],{"class":308},[298,1465,1057],{"class":1056},[298,1467,327],{"class":312},[298,1469,363],{"class":312},[298,1471,1472,1474,1476,1478,1480,1482,1485,1487,1489,1491,1494],{"class":300,"line":633},[298,1473,390],{"class":369},[298,1475,320],{"class":312},[298,1477,405],{"class":312},[298,1479,408],{"class":369},[298,1481,320],{"class":312},[298,1483,1484],{"class":1410}," 150",[298,1486,327],{"class":312},[298,1488,419],{"class":369},[298,1490,320],{"class":312},[298,1492,1493],{"class":1410}," 100",[298,1495,1443],{"class":312},[298,1497,1499,1501,1503,1505],{"class":300,"line":1498},20,[298,1500,464],{"class":369},[298,1502,320],{"class":312},[298,1504,1080],{"class":1079},[298,1506,1083],{"class":312},[298,1508,1510,1512,1514],{"class":300,"line":1509},21,[298,1511,1115],{"class":312},[298,1513,506],{"class":1056},[298,1515,345],{"class":312},[298,1517,1519,1522,1524],{"class":300,"line":1518},22,[298,1520,1521],{"class":312},"\u003C\u002F",[298,1523,1189],{"class":369},[298,1525,1209],{"class":312},[298,1527,1529],{"class":300,"line":1528},23,[298,1530,352],{"emptyLinePlaceholder":351},[298,1532,1534,1536,1539],{"class":300,"line":1533},24,[298,1535,378],{"class":312},[298,1537,1538],{"class":369},"template",[298,1540,1209],{"class":312},[298,1542,1544,1547,1550,1552,1554,1556,1559,1561,1563,1566,1568,1570],{"class":300,"line":1543},25,[298,1545,1546],{"class":312},"  \u003C",[298,1548,1549],{"class":369},"button",[298,1551,1220],{"class":304},[298,1553,1198],{"class":312},[298,1555,1201],{"class":312},[298,1557,1558],{"class":1204},"anchorEl",[298,1560,1201],{"class":312},[298,1562,1294],{"class":312},[298,1564,1565],{"class":1056},"Hover for details",[298,1567,1521],{"class":312},[298,1569,1549],{"class":369},[298,1571,1209],{"class":312},[298,1573,1575],{"class":300,"line":1574},26,[298,1576,352],{"emptyLinePlaceholder":351},[298,1578,1580,1582,1585,1588,1590,1592,1595,1597,1599,1601,1603,1606,1608,1611,1613,1615,1618,1620],{"class":300,"line":1579},27,[298,1581,1546],{"class":312},[298,1583,1584],{"class":369},"div",[298,1586,1587],{"class":304}," v-if",[298,1589,1198],{"class":312},[298,1591,1201],{"class":312},[298,1593,1594],{"class":1204},"node.open.value",[298,1596,1201],{"class":312},[298,1598,1220],{"class":304},[298,1600,1198],{"class":312},[298,1602,1201],{"class":312},[298,1604,1605],{"class":1204},"floatingEl",[298,1607,1201],{"class":312},[298,1609,1610],{"class":304}," class",[298,1612,1198],{"class":312},[298,1614,1201],{"class":312},[298,1616,1617],{"class":1204},"card",[298,1619,1201],{"class":312},[298,1621,1209],{"class":312},[298,1623,1625,1628,1630,1632,1635,1637,1639],{"class":300,"line":1624},28,[298,1626,1627],{"class":312},"    \u003C",[298,1629,277],{"class":369},[298,1631,1294],{"class":312},[298,1633,1634],{"class":1056},"Interactive floating card with links",[298,1636,1521],{"class":312},[298,1638,277],{"class":369},[298,1640,1209],{"class":312},[298,1642,1644,1646,1649,1652,1654,1656,1659,1661,1663,1666,1668,1670],{"class":300,"line":1643},29,[298,1645,1627],{"class":312},[298,1647,1648],{"class":369},"a",[298,1650,1651],{"class":304}," href",[298,1653,1198],{"class":312},[298,1655,1201],{"class":312},[298,1657,1658],{"class":1204},"#more",[298,1660,1201],{"class":312},[298,1662,1294],{"class":312},[298,1664,1665],{"class":1056},"Read documentation",[298,1667,1521],{"class":312},[298,1669,1648],{"class":369},[298,1671,1209],{"class":312},[298,1673,1675,1678,1680],{"class":300,"line":1674},30,[298,1676,1677],{"class":312},"  \u003C\u002F",[298,1679,1584],{"class":369},[298,1681,1209],{"class":312},[298,1683,1685,1687,1689],{"class":300,"line":1684},31,[298,1686,1521],{"class":312},[298,1688,1538],{"class":369},[298,1690,1209],{"class":312},[284,1692,1694],{"id":1693},"see-also","See Also",[1696,1697,1698,1706,1713,1720,1726],"ul",{},[1699,1700,1701,1705],"li",{},[1648,1702,1703],{"href":190},[280,1704,189],{}," - Toggle open state on click, tap, or keyboard activation",[1699,1707,1708,1712],{},[1648,1709,1710],{"href":198},[280,1711,197],{}," - Keyboard focus trigger for accessible tooltips",[1699,1714,1715,1719],{},[1648,1716,1717],{"href":163},[280,1718,162],{}," - Composite node with parent-child coordination",[1699,1721,1722,1725],{},[1648,1723,1724],{"href":59},"Build Accessible Tooltips"," - Tooltip patterns and best practices",[1699,1727,1728,1731],{},[1648,1729,1730],{"href":121},"Safe Polygon Gotchas"," - Deep dive on polygon mathematics",[1733,1734,1735],"style",{},"html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":294,"searchDepth":348,"depth":348,"links":1737},[1738,1739,1742,1743,1754,1755],{"id":286,"depth":348,"text":287},{"id":638,"depth":348,"text":639,"children":1740},[1741],{"id":791,"depth":355,"text":792},{"id":936,"depth":348,"text":937},{"id":949,"depth":348,"text":950,"children":1744},[1745,1747,1749,1751,1753],{"id":953,"depth":355,"text":1746},"Preventing Accidental Triggers with restMs",{"id":980,"depth":355,"text":1748},"Bridging Gaps with safePolygon",{"id":1000,"depth":355,"text":1750},"Preventing Background Flicker with blockPointerEvents and getScope",{"id":1122,"depth":355,"text":1752},"Tuning Intent Sensitivity with intentTimeout",{"id":1156,"depth":355,"text":1157},{"id":1174,"depth":348,"text":1175},{"id":1693,"depth":348,"text":1694},"Opens and closes floating content on pointer hover.","md",null,{},{"title":193,"description":1756},"XEm3ew5Fi_INJisRALuXR_gJKmiefpFQyb5x4zq2fZ8",[1763,1765],{"title":189,"path":190,"stem":191,"description":1764,"children":-1},"Opens and closes floating content on click, tap, or keyboard activation.",{"title":197,"path":198,"stem":199,"description":1766,"children":-1},"Opens and closes floating content on keyboard focus.",1791046165701]