@hanzogui/floating 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/dist/cjs/Floating.cjs +18 -0
- package/dist/cjs/Floating.native.js +37 -0
- package/dist/cjs/Floating.native.js.map +1 -0
- package/dist/cjs/index.cjs +71 -0
- package/dist/cjs/index.native.js +74 -0
- package/dist/cjs/index.native.js.map +1 -0
- package/dist/cjs/interactions/PopupTriggerMap.cjs +40 -0
- package/dist/cjs/interactions/PopupTriggerMap.native.js +73 -0
- package/dist/cjs/interactions/PopupTriggerMap.native.js.map +1 -0
- package/dist/cjs/interactions/createFloatingEvents.cjs +41 -0
- package/dist/cjs/interactions/createFloatingEvents.native.js +47 -0
- package/dist/cjs/interactions/createFloatingEvents.native.js.map +1 -0
- package/dist/cjs/interactions/safePolygon.cjs +191 -0
- package/dist/cjs/interactions/safePolygon.native.js +205 -0
- package/dist/cjs/interactions/safePolygon.native.js.map +1 -0
- package/dist/cjs/interactions/types.cjs +16 -0
- package/dist/cjs/interactions/types.native.js +19 -0
- package/dist/cjs/interactions/types.native.js.map +1 -0
- package/dist/cjs/interactions/useClick.cjs +82 -0
- package/dist/cjs/interactions/useClick.native.js +90 -0
- package/dist/cjs/interactions/useClick.native.js.map +1 -0
- package/dist/cjs/interactions/useDelayGroup.cjs +96 -0
- package/dist/cjs/interactions/useDelayGroup.native.js +109 -0
- package/dist/cjs/interactions/useDelayGroup.native.js.map +1 -0
- package/dist/cjs/interactions/useFocus.cjs +101 -0
- package/dist/cjs/interactions/useFocus.native.js +113 -0
- package/dist/cjs/interactions/useFocus.native.js.map +1 -0
- package/dist/cjs/interactions/useHover.cjs +224 -0
- package/dist/cjs/interactions/useHover.native.js +248 -0
- package/dist/cjs/interactions/useHover.native.js.map +1 -0
- package/dist/cjs/interactions/useInnerOffset.cjs +104 -0
- package/dist/cjs/interactions/useInnerOffset.native.js +118 -0
- package/dist/cjs/interactions/useInnerOffset.native.js.map +1 -0
- package/dist/cjs/interactions/useInteractions.cjs +76 -0
- package/dist/cjs/interactions/useInteractions.native.js +164 -0
- package/dist/cjs/interactions/useInteractions.native.js.map +1 -0
- package/dist/cjs/interactions/useListNavigation.cjs +253 -0
- package/dist/cjs/interactions/useListNavigation.native.js +297 -0
- package/dist/cjs/interactions/useListNavigation.native.js.map +1 -0
- package/dist/cjs/interactions/useRole.cjs +112 -0
- package/dist/cjs/interactions/useRole.native.js +128 -0
- package/dist/cjs/interactions/useRole.native.js.map +1 -0
- package/dist/cjs/interactions/useTypeahead.cjs +93 -0
- package/dist/cjs/interactions/useTypeahead.native.js +114 -0
- package/dist/cjs/interactions/useTypeahead.native.js.map +1 -0
- package/dist/cjs/interactions/utils.cjs +178 -0
- package/dist/cjs/interactions/utils.native.js +188 -0
- package/dist/cjs/interactions/utils.native.js.map +1 -0
- package/dist/cjs/middleware/inner.cjs +106 -0
- package/dist/cjs/middleware/inner.native.js +120 -0
- package/dist/cjs/middleware/inner.native.js.map +1 -0
- package/dist/cjs/useFloating.cjs +61 -0
- package/dist/cjs/useFloating.native.js +67 -0
- package/dist/cjs/useFloating.native.js.map +1 -0
- package/dist/esm/Floating.mjs +2 -0
- package/dist/esm/Floating.mjs.map +1 -0
- package/dist/esm/Floating.native.js +8 -0
- package/dist/esm/Floating.native.js.map +1 -0
- package/dist/esm/index.js +18 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/index.mjs +18 -0
- package/dist/esm/index.mjs.map +1 -0
- package/dist/esm/index.native.js +18 -0
- package/dist/esm/index.native.js.map +1 -0
- package/dist/esm/interactions/PopupTriggerMap.mjs +17 -0
- package/dist/esm/interactions/PopupTriggerMap.mjs.map +1 -0
- package/dist/esm/interactions/PopupTriggerMap.native.js +47 -0
- package/dist/esm/interactions/PopupTriggerMap.native.js.map +1 -0
- package/dist/esm/interactions/createFloatingEvents.mjs +18 -0
- package/dist/esm/interactions/createFloatingEvents.mjs.map +1 -0
- package/dist/esm/interactions/createFloatingEvents.native.js +21 -0
- package/dist/esm/interactions/createFloatingEvents.native.js.map +1 -0
- package/dist/esm/interactions/safePolygon.mjs +168 -0
- package/dist/esm/interactions/safePolygon.mjs.map +1 -0
- package/dist/esm/interactions/safePolygon.native.js +179 -0
- package/dist/esm/interactions/safePolygon.native.js.map +1 -0
- package/dist/esm/interactions/types.mjs +2 -0
- package/dist/esm/interactions/types.mjs.map +1 -0
- package/dist/esm/interactions/types.native.js +2 -0
- package/dist/esm/interactions/types.native.js.map +1 -0
- package/dist/esm/interactions/useClick.mjs +59 -0
- package/dist/esm/interactions/useClick.mjs.map +1 -0
- package/dist/esm/interactions/useClick.native.js +64 -0
- package/dist/esm/interactions/useClick.native.js.map +1 -0
- package/dist/esm/interactions/useDelayGroup.mjs +60 -0
- package/dist/esm/interactions/useDelayGroup.mjs.map +1 -0
- package/dist/esm/interactions/useDelayGroup.native.js +70 -0
- package/dist/esm/interactions/useDelayGroup.native.js.map +1 -0
- package/dist/esm/interactions/useFocus.mjs +78 -0
- package/dist/esm/interactions/useFocus.mjs.map +1 -0
- package/dist/esm/interactions/useFocus.native.js +87 -0
- package/dist/esm/interactions/useFocus.native.js.map +1 -0
- package/dist/esm/interactions/useHover.mjs +189 -0
- package/dist/esm/interactions/useHover.mjs.map +1 -0
- package/dist/esm/interactions/useHover.native.js +210 -0
- package/dist/esm/interactions/useHover.native.js.map +1 -0
- package/dist/esm/interactions/useInnerOffset.mjs +70 -0
- package/dist/esm/interactions/useInnerOffset.mjs.map +1 -0
- package/dist/esm/interactions/useInnerOffset.native.js +81 -0
- package/dist/esm/interactions/useInnerOffset.native.js.map +1 -0
- package/dist/esm/interactions/useInteractions.mjs +53 -0
- package/dist/esm/interactions/useInteractions.mjs.map +1 -0
- package/dist/esm/interactions/useInteractions.native.js +138 -0
- package/dist/esm/interactions/useInteractions.native.js.map +1 -0
- package/dist/esm/interactions/useListNavigation.mjs +230 -0
- package/dist/esm/interactions/useListNavigation.mjs.map +1 -0
- package/dist/esm/interactions/useListNavigation.native.js +271 -0
- package/dist/esm/interactions/useListNavigation.native.js.map +1 -0
- package/dist/esm/interactions/useRole.mjs +78 -0
- package/dist/esm/interactions/useRole.mjs.map +1 -0
- package/dist/esm/interactions/useRole.native.js +91 -0
- package/dist/esm/interactions/useRole.native.js.map +1 -0
- package/dist/esm/interactions/useTypeahead.mjs +70 -0
- package/dist/esm/interactions/useTypeahead.mjs.map +1 -0
- package/dist/esm/interactions/useTypeahead.native.js +88 -0
- package/dist/esm/interactions/useTypeahead.native.js.map +1 -0
- package/dist/esm/interactions/utils.mjs +134 -0
- package/dist/esm/interactions/utils.mjs.map +1 -0
- package/dist/esm/interactions/utils.native.js +141 -0
- package/dist/esm/interactions/utils.native.js.map +1 -0
- package/dist/esm/middleware/inner.mjs +72 -0
- package/dist/esm/middleware/inner.mjs.map +1 -0
- package/dist/esm/middleware/inner.native.js +83 -0
- package/dist/esm/middleware/inner.native.js.map +1 -0
- package/dist/esm/useFloating.mjs +26 -0
- package/dist/esm/useFloating.mjs.map +1 -0
- package/dist/esm/useFloating.native.js +29 -0
- package/dist/esm/useFloating.native.js.map +1 -0
- package/package.json +50 -0
- package/src/Floating.native.tsx +45 -0
- package/src/Floating.tsx +1 -0
- package/src/index.ts +116 -0
- package/src/interactions/PopupTriggerMap.ts +30 -0
- package/src/interactions/createFloatingEvents.ts +34 -0
- package/src/interactions/safePolygon.ts +500 -0
- package/src/interactions/types.ts +165 -0
- package/src/interactions/useClick.ts +148 -0
- package/src/interactions/useDelayGroup.ts +114 -0
- package/src/interactions/useFocus.ts +164 -0
- package/src/interactions/useHover.ts +453 -0
- package/src/interactions/useInnerOffset.ts +116 -0
- package/src/interactions/useInteractions.ts +101 -0
- package/src/interactions/useListNavigation.ts +578 -0
- package/src/interactions/useRole.ts +103 -0
- package/src/interactions/useTypeahead.ts +173 -0
- package/src/interactions/utils.ts +234 -0
- package/src/middleware/inner.ts +142 -0
- package/src/useFloating.tsx +53 -0
- package/types/Floating.d.ts +2 -0
- package/types/Floating.d.ts.map +1 -0
- package/types/Floating.native.d.ts +41 -0
- package/types/Floating.native.d.ts.map +1 -0
- package/types/index.d.ts +19 -0
- package/types/index.d.ts.map +1 -0
- package/types/interactions/PopupTriggerMap.d.ts +8 -0
- package/types/interactions/PopupTriggerMap.d.ts.map +1 -0
- package/types/interactions/createFloatingEvents.d.ts +7 -0
- package/types/interactions/createFloatingEvents.d.ts.map +1 -0
- package/types/interactions/safePolygon.d.ts +4 -0
- package/types/interactions/safePolygon.d.ts.map +1 -0
- package/types/interactions/types.d.ts +123 -0
- package/types/interactions/types.d.ts.map +1 -0
- package/types/interactions/useClick.d.ts +3 -0
- package/types/interactions/useClick.d.ts.map +1 -0
- package/types/interactions/useDelayGroup.d.ts +23 -0
- package/types/interactions/useDelayGroup.d.ts.map +1 -0
- package/types/interactions/useFocus.d.ts +3 -0
- package/types/interactions/useFocus.d.ts.map +1 -0
- package/types/interactions/useHover.d.ts +6 -0
- package/types/interactions/useHover.d.ts.map +1 -0
- package/types/interactions/useInnerOffset.d.ts +3 -0
- package/types/interactions/useInnerOffset.d.ts.map +1 -0
- package/types/interactions/useInteractions.d.ts +8 -0
- package/types/interactions/useInteractions.d.ts.map +1 -0
- package/types/interactions/useListNavigation.d.ts +3 -0
- package/types/interactions/useListNavigation.d.ts.map +1 -0
- package/types/interactions/useRole.d.ts +3 -0
- package/types/interactions/useRole.d.ts.map +1 -0
- package/types/interactions/useTypeahead.d.ts +3 -0
- package/types/interactions/useTypeahead.d.ts.map +1 -0
- package/types/interactions/utils.d.ts +46 -0
- package/types/interactions/utils.d.ts.map +1 -0
- package/types/middleware/inner.d.ts +14 -0
- package/types/middleware/inner.d.ts.map +1 -0
- package/types/useFloating.d.ts +28 -0
- package/types/useFloating.d.ts.map +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["ReactDOM","offset","getArgsWithCustomFloatingHeight","state","height","rects","floating","inner","props","name","options","fn","listRef","overflowRef","onFallbackChange","innerOffset","index","minItemsVisible","referenceOverflowThreshold","scrollRef","padding","platform","elements","item","current","scrollEl","clientTop","floatingIsBordered","scrollElIsBordered","floatingIsScrollEl","nextArgs","offsetTop","reference","offsetHeight","detectOverflowOptions","overflow","detectOverflow","scrollHeight","refOverflow","elementContext","diffY","Math","max","top","nextY","y","maxHeight","clientHeight","v","round","bottom","style","scrollTop","shouldFallback","min","length","flushSync"],"sources":["../../../src/middleware/inner.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import * as ReactDOM from "react-dom";
|
|
2
|
+
import { offset } from "@floating-ui/react-dom";
|
|
3
|
+
function getArgsWithCustomFloatingHeight(state, height) {
|
|
4
|
+
return {
|
|
5
|
+
...state,
|
|
6
|
+
rects: {
|
|
7
|
+
...state.rects,
|
|
8
|
+
floating: {
|
|
9
|
+
...state.rects.floating,
|
|
10
|
+
height
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
var inner = function (props) {
|
|
16
|
+
return {
|
|
17
|
+
name: "inner",
|
|
18
|
+
options: props,
|
|
19
|
+
async fn(state) {
|
|
20
|
+
var _listRef_current,
|
|
21
|
+
{
|
|
22
|
+
listRef,
|
|
23
|
+
overflowRef,
|
|
24
|
+
onFallbackChange,
|
|
25
|
+
offset: innerOffset = 0,
|
|
26
|
+
index = 0,
|
|
27
|
+
minItemsVisible = 4,
|
|
28
|
+
referenceOverflowThreshold = 0,
|
|
29
|
+
scrollRef,
|
|
30
|
+
padding = 0
|
|
31
|
+
} = props,
|
|
32
|
+
{
|
|
33
|
+
rects,
|
|
34
|
+
platform,
|
|
35
|
+
elements: {
|
|
36
|
+
floating
|
|
37
|
+
}
|
|
38
|
+
} = state,
|
|
39
|
+
item = (_listRef_current = listRef.current) === null || _listRef_current === void 0 ? void 0 : _listRef_current[index ?? 0],
|
|
40
|
+
scrollEl = scrollRef?.current || floating,
|
|
41
|
+
clientTop = floating.clientTop || scrollEl.clientTop,
|
|
42
|
+
floatingIsBordered = floating.clientTop !== 0,
|
|
43
|
+
scrollElIsBordered = scrollEl.clientTop !== 0,
|
|
44
|
+
floatingIsScrollEl = floating === scrollEl;
|
|
45
|
+
if (!item || index == null) return onFallbackChange?.(!0), {};
|
|
46
|
+
var nextArgs = {
|
|
47
|
+
...state,
|
|
48
|
+
...(await offset(-item.offsetTop - floating.clientTop - rects.reference.height / 2 - item.offsetHeight / 2 - innerOffset).fn(state))
|
|
49
|
+
},
|
|
50
|
+
detectOverflowOptions = {
|
|
51
|
+
padding
|
|
52
|
+
},
|
|
53
|
+
overflow = await platform.detectOverflow(getArgsWithCustomFloatingHeight(nextArgs, scrollEl.scrollHeight + clientTop + floating.clientTop), detectOverflowOptions),
|
|
54
|
+
refOverflow = await platform.detectOverflow(nextArgs, {
|
|
55
|
+
...detectOverflowOptions,
|
|
56
|
+
elementContext: "reference"
|
|
57
|
+
}),
|
|
58
|
+
diffY = Math.max(0, overflow.top),
|
|
59
|
+
nextY = nextArgs.y + diffY,
|
|
60
|
+
isScrollable = scrollEl.scrollHeight > scrollEl.clientHeight,
|
|
61
|
+
rounder = isScrollable ? function (v) {
|
|
62
|
+
return v;
|
|
63
|
+
} : Math.round,
|
|
64
|
+
maxHeight = rounder(Math.max(0, scrollEl.scrollHeight + (floatingIsBordered && floatingIsScrollEl || scrollElIsBordered ? clientTop * 2 : 0) - diffY - Math.max(0, overflow.bottom)));
|
|
65
|
+
if (scrollEl.style.maxHeight = `${maxHeight}px`, scrollEl.scrollTop = diffY, onFallbackChange) {
|
|
66
|
+
var _listRef_current1,
|
|
67
|
+
_listRef_current_length,
|
|
68
|
+
shouldFallback = scrollEl.offsetHeight < item.offsetHeight * Math.min(minItemsVisible, (_listRef_current_length = (_listRef_current1 = listRef.current) === null || _listRef_current1 === void 0 ? void 0 : _listRef_current1.length) !== null && _listRef_current_length !== void 0 ? _listRef_current_length : 0) - 1 || refOverflow.top >= -referenceOverflowThreshold || refOverflow.bottom >= -referenceOverflowThreshold;
|
|
69
|
+
ReactDOM.flushSync(function () {
|
|
70
|
+
return onFallbackChange(shouldFallback);
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
return overflowRef && (overflowRef.current = await platform.detectOverflow(getArgsWithCustomFloatingHeight({
|
|
74
|
+
...nextArgs,
|
|
75
|
+
y: nextY
|
|
76
|
+
}, scrollEl.offsetHeight + clientTop + floating.clientTop), detectOverflowOptions)), {
|
|
77
|
+
y: nextY
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
};
|
|
82
|
+
export { inner };
|
|
83
|
+
//# sourceMappingURL=inner.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["ReactDOM","offset","getArgsWithCustomFloatingHeight","state","height","rects","floating","inner","props","name","options","fn","_listRef_current","listRef","overflowRef","onFallbackChange","innerOffset","index","minItemsVisible","referenceOverflowThreshold","scrollRef","padding","platform","elements","item","current","scrollEl","clientTop","floatingIsBordered","scrollElIsBordered","floatingIsScrollEl","nextArgs","offsetTop","reference","offsetHeight","detectOverflowOptions","overflow","detectOverflow","scrollHeight","refOverflow","elementContext","diffY","Math","max","top","nextY","y","isScrollable","clientHeight","rounder","v","round","maxHeight","bottom","style","scrollTop","_listRef_current1","_listRef_current_length","shouldFallback","min","length","flushSync"],"sources":["../../../src/middleware/inner.ts"],"sourcesContent":[null],"mappings":"AAAA,YAAYA,QAAA,MAAc;AAC1B,SAASC,MAAA,QAAc;AAkBvB,SAASC,gCAAgCC,KAAA,EAAwBC,MAAA,EAAgB;EAC/E,OAAO;IACL,GAAGD,KAAA;IACHE,KAAA,EAAO;MACL,GAAGF,KAAA,CAAME,KAAA;MACTC,QAAA,EAAU;QACR,GAAGH,KAAA,CAAME,KAAA,CAAMC,QAAA;QACfF;MACF;IACF;EACF;AACF;AAEO,IAAAG,KAAM,YAAAA,CAASC,KAAmC;EACvD,OAAM;IACNC,IAAA,SAAS;IACTC,OAAS,EAAAF,KAAwB;IAC/B,MAAMG,GAAAR,KAAA;MACJ,IAAAS,gBAAA;QAAA;UAAAC,OAAA;UAAAC,WAAA;UAAAC,gBAAA;UAAAd,MAAA,EAAAe,WAAA;UAAAC,KAAA;UAAAC,eAAA;UAAAC,0BAAA;UAAAC,SAAA;UAAAC,OAAA;QAAA,IAAAb,KAAA;QAAA;UAAAH,KAAA;UAAAiB,QAAA;UAAAC,QAAA;YAAAjB;UAAA;QAAA,IAAAH,KAAA;QAAAqB,IAAA,IAAAZ,gBAAA,GAAAC,OAAA,CAAAY,OAAA,cAAAb,gBAAA,uBAAAA,gBAAA,CAAAK,KAAA;QAAAS,QAAA,GAAAN,SAAA,EAAAK,OAAA,IAAAnB,QAAA;QAAAqB,SAAA,GAAArB,QAAA,CAAAqB,SAAA,IAAAD,QAAA,CAAAC,SAAA;QAAAC,kBAAA,GAAAtB,QAAA,CAAAqB,SAAA;QAAAE,kBAAA,GAAAH,QAAA,CAAAC,SAAA;QAAAG,kBAAA,GAAAxB,QAAA,KAAAoB,QAAA;MACA,KAAAF,IAAA,IAAAP,KAAA,UACA,OAAAF,gBAAA;MACA,IAAAgB,QAAQ;UACR,GAAA5B,KAAQ;UACR,UAAAF,MAAA,CAAkB,CAAAuB,IAAA,CAAAQ,SAAA,GAAA1B,QAAA,CAAAqB,SAAA,GAAAtB,KAAA,CAAA4B,SAAA,CAAA7B,MAAA,OAAAoB,IAAA,CAAAU,YAAA,OAAAlB,WAAA,EAAAL,EAAA,CAAAR,KAAA;QAClB;QAAAgC,qBAAA;UACAd;QACA;QAAAe,QAAU,SAAAd,QAAA,CAAAe,cAAA,CAAAnC,+BAAA,CAAA6B,QAAA,EAAAL,QAAA,CAAAY,YAAA,GAAAX,SAAA,GAAArB,QAAA,CAAAqB,SAAA,GAAAQ,qBAAA;QAAAI,WAAA,SAAAjB,QAAA,CAAAe,cAAA,CAAAN,QAAA;UACR,GAAAI,qBAEE;UACJK,cAAA;QACA;QAAAC,KAAA,GAAAC,IAAA,CAAAC,GAAA,IAAAP,QAAA,CAAAQ,GAAA;QAAAC,KAAA,GAAAd,QAAA,CAAAe,CAAA,GAAAL,KAAA;QAAAM,YAAA,GAAArB,QAAA,CAAAY,YAAA,GAAAZ,QAAA,CAAAsB,YAAA;QAAAC,OAAA,GAAAF,YAAA,aAAAG,CAAA;UACA,OAAAA,CAAU;QACZ,IAAIR,IAAA,CAEES,KAAA;QAAOC,SAAQ,GAAAH,OAAU,CAAAP,IAAA,CAAAC,GAAU,IACnCjB,QAAA,CAAAY,YAAsB,IAAAV,kBAEtB,IAAAE,kBAAqB,IAAAD,kBAAsB,GAAAF,SAC3C,YAAAc,KAAA,GAAqBC,IAAA,CAAAC,GAAS,IAAAP,QAAA,CAAciB,MAC5C;MAGN,IAAK3B,QAAQ,CAAA4B,KAAA,CAAAF,SAAS,MAAAA,SAAA,MAAA1B,QAAA,CAAA6B,SAAA,GAAAd,KAAA,EAAA1B,gBAAA;QACpB,IAAAyC,iBAAA;UAAAC,uBACQ;UAAAC,cAAA,GAAAhC,QAAA,CAAAQ,YAAA,GAAAV,IAAA,CAAAU,YAAA,GAAAQ,IAAA,CAAAiB,GAAA,CAAAzC,eAAA,GAAAuC,uBAAA,IAAAD,iBAAA,GAAA3C,OAAA,CAAAY,OAAA,cAAA+B,iBAAA,uBAAAA,iBAAA,CAAAI,MAAA,cAAAH,uBAAA,cAAAA,uBAAA,aAAAlB,WAAA,CAAAK,GAAA,KAAAzB,0BAAA,IAAAoB,WAAA,CAAAc,MAAA,KAAAlC,0BAAA;QAKVnB,QAAM,CAAA6D,SAAW;UACZ,OAAA9C,gBAAA,CAAA2C,cAAA;QACH,CAAI;MAAM;MAMV,OAAK5C,WAAK,KAAAA,WAAA,CAAAW,OAAA,SAAAH,QAAA,CAAAe,cAAA,CAAAnC,+BAAA;QAGN,GAAA6B,QAAA;QAGJe,CAAA,EAAAD;MAAA,GACEnB,QAAA,CAAAQ,YAAA,GAAAP,SAAA,GAAArB,QAAA,CAAAqB,SAAA,GAAAQ,qBAAA;QACAW,CAAA,EAAAD;MACF;IAAA;EACA;AAG0D;AACvD,SACatC,KACjB","ignoreList":[]}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import * as Floating from "./Floating.mjs";
|
|
3
|
+
const FloatingOverrideContext = React.createContext(null),
|
|
4
|
+
useFloating = props => {
|
|
5
|
+
"use no memo";
|
|
6
|
+
|
|
7
|
+
return (React.useContext(FloatingOverrideContext) || Floating.useFloating)?.({
|
|
8
|
+
...props,
|
|
9
|
+
middleware: [
|
|
10
|
+
// @ts-ignore
|
|
11
|
+
...props.middleware, {
|
|
12
|
+
name: "rounded",
|
|
13
|
+
fn({
|
|
14
|
+
x,
|
|
15
|
+
y
|
|
16
|
+
}) {
|
|
17
|
+
return {
|
|
18
|
+
x: Math.round(x),
|
|
19
|
+
y: Math.round(y)
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
}]
|
|
23
|
+
});
|
|
24
|
+
};
|
|
25
|
+
export { FloatingOverrideContext, useFloating };
|
|
26
|
+
//# sourceMappingURL=useFloating.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","Floating","FloatingOverrideContext","createContext","useFloating","props","useContext","middleware","name","fn","x","y","Math","round"],"sources":["../../src/useFloating.tsx"],"sourcesContent":[null],"mappings":"AAAA,OAAOA,KAAA,MAAW;AAElB,YAAYC,QAAA,MAAc;AA0BnB,MAAMC,uBAAA,GAA0BF,KAAA,CAAMG,aAAA,CAC3C,IACF;EAEaC,WAAA,GAAeC,KAAA,IAA+C;IACzE;;IAGA,QADgBL,KAAA,CAAMM,UAAA,CAAWJ,uBAAuB,KACrCD,QAAA,CAASG,WAAA,IAAe;MACzC,GAAGC,KAAA;MACHE,UAAA,EAAY;MAAA;MAEV,GAAGF,KAAA,CAAME,UAAA,EACT;QACEC,IAAA,EAAM;QACNC,GAAG;UAAEC,CAAA;UAAGC;QAAE,GAAG;UACX,OAAO;YACLD,CAAA,EAAGE,IAAA,CAAKC,KAAA,CAAMH,CAAC;YACfC,CAAA,EAAGC,IAAA,CAAKC,KAAA,CAAMF,CAAC;UACjB;QACF;MACF;IAEJ,CAAC;EACH","ignoreList":[]}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import * as Floating from "./Floating.native.js";
|
|
3
|
+
var FloatingOverrideContext = /* @__PURE__ */React.createContext(null),
|
|
4
|
+
useFloating = function (props) {
|
|
5
|
+
"use no memo";
|
|
6
|
+
|
|
7
|
+
var _this,
|
|
8
|
+
context = React.useContext(FloatingOverrideContext);
|
|
9
|
+
return (_this = context || Floating.useFloating) === null || _this === void 0 ? void 0 : _this({
|
|
10
|
+
...props,
|
|
11
|
+
middleware: [
|
|
12
|
+
// @ts-ignore
|
|
13
|
+
...props.middleware, {
|
|
14
|
+
name: "rounded",
|
|
15
|
+
fn(param) {
|
|
16
|
+
var {
|
|
17
|
+
x,
|
|
18
|
+
y
|
|
19
|
+
} = param;
|
|
20
|
+
return {
|
|
21
|
+
x: Math.round(x),
|
|
22
|
+
y: Math.round(y)
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
}]
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
export { FloatingOverrideContext, useFloating };
|
|
29
|
+
//# sourceMappingURL=useFloating.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","Floating","FloatingOverrideContext","createContext","useFloating","props","_this","context","useContext","middleware","name","fn","param","x","y","Math","round"],"sources":["../../src/useFloating.tsx"],"sourcesContent":[null],"mappings":"AAAA,OAAOA,KAAA,MAAW;AAElB,YAAYC,QAAA,MAAc;AA0BnB,IAAAC,uBAAM,kBAAgCF,KAAA,CAAAG,aAAA;EAAAC,WAAA,YAAAA,CAAAC,KAAA;IAC3C;;IACF,IAEaC,KAAA;MAAAC,OAAe,GAAAP,KAA+C,CAAAQ,UAAA,CAAAN,uBAAA;IACzE,QAAAI,KAAA,GAAAC,OAAA,IAAAN,QAAA,CAAAG,WAAA,cAAAE,KAAA,uBAAAA,KAAA;MAGA,GAAAD,KADgB;MAEdI,UAAG;MACH;MAAY,GAAAJ,KAAA,CAAAI,UAAA,EAEV;QACAC,IAAA;QACEC,GAAAC,KAAM;UACN,IAAK;YAAGC,CAAA;YAAEC;UAAG,IAAAF,KAAA;UACX,OAAO;YACLC,CAAA,EAAGE,IAAA,CAAKC,KAAA,CAAMH,CAAC;YACfC,CAAA,EAAGC,IAAA,CAAKC,KAAA,CAAMF,CAAC;UACjB;QACF;MACF;IAEJ,CAAC;EACH","ignoreList":[]}
|
package/package.json
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@hanzogui/floating",
|
|
3
|
+
"version": "2.0.0",
|
|
4
|
+
"source": "src/index.ts",
|
|
5
|
+
"files": [
|
|
6
|
+
"src",
|
|
7
|
+
"types",
|
|
8
|
+
"dist"
|
|
9
|
+
],
|
|
10
|
+
"type": "module",
|
|
11
|
+
"sideEffects": true,
|
|
12
|
+
"main": "dist/cjs",
|
|
13
|
+
"module": "dist/esm",
|
|
14
|
+
"types": "./types/index.d.ts",
|
|
15
|
+
"exports": {
|
|
16
|
+
"./package.json": "./package.json",
|
|
17
|
+
".": {
|
|
18
|
+
"types": "./types/index.d.ts",
|
|
19
|
+
"react-native": "./dist/esm/index.native.js",
|
|
20
|
+
"browser": "./dist/esm/index.mjs",
|
|
21
|
+
"module": "./dist/esm/index.mjs",
|
|
22
|
+
"import": "./dist/esm/index.mjs",
|
|
23
|
+
"require": "./dist/cjs/index.cjs",
|
|
24
|
+
"default": "./dist/esm/index.mjs"
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
"publishConfig": {
|
|
28
|
+
"access": "public"
|
|
29
|
+
},
|
|
30
|
+
"scripts": {
|
|
31
|
+
"build": "hanzo-gui-build",
|
|
32
|
+
"watch": "hanzo-gui-build --watch",
|
|
33
|
+
"clean": "hanzo-gui-build clean",
|
|
34
|
+
"clean:build": "hanzo-gui-build clean:build"
|
|
35
|
+
},
|
|
36
|
+
"dependencies": {
|
|
37
|
+
"@floating-ui/react-dom": "^2.1.6",
|
|
38
|
+
"@floating-ui/react-native": "^0.10.7",
|
|
39
|
+
"@hanzogui/use-event": "workspace:*"
|
|
40
|
+
},
|
|
41
|
+
"devDependencies": {
|
|
42
|
+
"@hanzogui/build": "workspace:*",
|
|
43
|
+
"react": ">=19",
|
|
44
|
+
"react-native": "0.83.2"
|
|
45
|
+
},
|
|
46
|
+
"peerDependencies": {
|
|
47
|
+
"react": ">=19",
|
|
48
|
+
"react-native": "*"
|
|
49
|
+
}
|
|
50
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { ComputePositionReturn } from '@floating-ui/react-native'
|
|
2
|
+
import type { RefObject } from 'react'
|
|
3
|
+
|
|
4
|
+
export const autoUpdate = () => {}
|
|
5
|
+
export const getOverflowAncestors = () => []
|
|
6
|
+
|
|
7
|
+
export * from '@floating-ui/react-native'
|
|
8
|
+
|
|
9
|
+
export const platform = null
|
|
10
|
+
|
|
11
|
+
export declare type UseFloatingReturn = Data & {
|
|
12
|
+
update: () => void
|
|
13
|
+
offsetParent: (node: any) => void
|
|
14
|
+
floating: (node: any) => void
|
|
15
|
+
reference: (node: any) => void
|
|
16
|
+
refs: {
|
|
17
|
+
reference: RefObject<any>
|
|
18
|
+
floating: RefObject<any>
|
|
19
|
+
offsetParent: RefObject<any>
|
|
20
|
+
setReference: (node: any) => void
|
|
21
|
+
setFloating: (node: any) => void
|
|
22
|
+
setOffsetParent: (node: any) => void
|
|
23
|
+
}
|
|
24
|
+
elements: {
|
|
25
|
+
reference: any
|
|
26
|
+
floating: any
|
|
27
|
+
offsetParent: any
|
|
28
|
+
}
|
|
29
|
+
scrollProps: {
|
|
30
|
+
onScroll: (event: {
|
|
31
|
+
nativeEvent: {
|
|
32
|
+
contentOffset: {
|
|
33
|
+
x: number
|
|
34
|
+
y: number
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}) => void
|
|
38
|
+
scrollEventThrottle: 16
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
type Data = Omit<ComputePositionReturn, 'x' | 'y'> & {
|
|
43
|
+
x: number | null
|
|
44
|
+
y: number | null
|
|
45
|
+
}
|
package/src/Floating.tsx
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '@floating-ui/react-dom'
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
export type {
|
|
2
|
+
AlignedPlacement,
|
|
3
|
+
Alignment,
|
|
4
|
+
ArrowOptions,
|
|
5
|
+
AutoPlacementOptions,
|
|
6
|
+
AutoUpdateOptions,
|
|
7
|
+
Axis,
|
|
8
|
+
Boundary,
|
|
9
|
+
ClientRectObject,
|
|
10
|
+
ComputePositionConfig,
|
|
11
|
+
ComputePositionReturn,
|
|
12
|
+
Coords,
|
|
13
|
+
DetectOverflowOptions,
|
|
14
|
+
Dimensions,
|
|
15
|
+
ElementContext,
|
|
16
|
+
ElementRects,
|
|
17
|
+
Elements,
|
|
18
|
+
FlipOptions,
|
|
19
|
+
FloatingElement,
|
|
20
|
+
HideOptions,
|
|
21
|
+
InlineOptions,
|
|
22
|
+
Length,
|
|
23
|
+
Middleware,
|
|
24
|
+
MiddlewareData,
|
|
25
|
+
MiddlewareReturn,
|
|
26
|
+
MiddlewareState,
|
|
27
|
+
NodeScroll,
|
|
28
|
+
OffsetOptions,
|
|
29
|
+
Padding,
|
|
30
|
+
Placement,
|
|
31
|
+
Platform,
|
|
32
|
+
Rect,
|
|
33
|
+
ReferenceElement,
|
|
34
|
+
ReferenceType,
|
|
35
|
+
RootBoundary,
|
|
36
|
+
ShiftOptions,
|
|
37
|
+
Side,
|
|
38
|
+
SideObject,
|
|
39
|
+
SizeOptions,
|
|
40
|
+
Strategy,
|
|
41
|
+
UseFloatingData,
|
|
42
|
+
UseFloatingOptions,
|
|
43
|
+
VirtualElement,
|
|
44
|
+
} from './Floating'
|
|
45
|
+
|
|
46
|
+
export {
|
|
47
|
+
arrow,
|
|
48
|
+
autoPlacement,
|
|
49
|
+
autoUpdate,
|
|
50
|
+
detectOverflow,
|
|
51
|
+
flip,
|
|
52
|
+
getOverflowAncestors,
|
|
53
|
+
hide,
|
|
54
|
+
inline,
|
|
55
|
+
limitShift,
|
|
56
|
+
offset,
|
|
57
|
+
platform,
|
|
58
|
+
shift,
|
|
59
|
+
size,
|
|
60
|
+
} from './Floating'
|
|
61
|
+
|
|
62
|
+
export {
|
|
63
|
+
useFloating,
|
|
64
|
+
FloatingOverrideContext,
|
|
65
|
+
type UseFloatingReturn,
|
|
66
|
+
type UseFloatingProps,
|
|
67
|
+
type UseFloatingFn,
|
|
68
|
+
type UseFloatingOverrideFn,
|
|
69
|
+
} from './useFloating'
|
|
70
|
+
|
|
71
|
+
// raw useFloating without FloatingOverrideContext — use when building
|
|
72
|
+
// override context factories to avoid infinite recursion
|
|
73
|
+
export { useFloating as useFloatingRaw } from './Floating'
|
|
74
|
+
|
|
75
|
+
// event emitter for hook coordination
|
|
76
|
+
export { createFloatingEvents } from './interactions/createFloatingEvents'
|
|
77
|
+
|
|
78
|
+
// multi-trigger coordination
|
|
79
|
+
export { PopupTriggerMap } from './interactions/PopupTriggerMap'
|
|
80
|
+
|
|
81
|
+
// interaction hooks
|
|
82
|
+
export { useInteractions } from './interactions/useInteractions'
|
|
83
|
+
export { useHover } from './interactions/useHover'
|
|
84
|
+
export { safePolygon } from './interactions/safePolygon'
|
|
85
|
+
export { useFocus } from './interactions/useFocus'
|
|
86
|
+
export { useRole } from './interactions/useRole'
|
|
87
|
+
export { useClick } from './interactions/useClick'
|
|
88
|
+
export { useListNavigation } from './interactions/useListNavigation'
|
|
89
|
+
export { useTypeahead } from './interactions/useTypeahead'
|
|
90
|
+
export { useInnerOffset } from './interactions/useInnerOffset'
|
|
91
|
+
export {
|
|
92
|
+
FloatingDelayGroup,
|
|
93
|
+
useDelayGroup,
|
|
94
|
+
useDelayGroupContext,
|
|
95
|
+
} from './interactions/useDelayGroup'
|
|
96
|
+
|
|
97
|
+
// middleware
|
|
98
|
+
export { inner } from './middleware/inner'
|
|
99
|
+
|
|
100
|
+
// types
|
|
101
|
+
export type {
|
|
102
|
+
ElementProps,
|
|
103
|
+
FloatingEvents,
|
|
104
|
+
FloatingInteractionContext,
|
|
105
|
+
OpenChangeReason,
|
|
106
|
+
UseHoverProps,
|
|
107
|
+
HandleCloseFn,
|
|
108
|
+
SafePolygonOptions,
|
|
109
|
+
UseFocusProps,
|
|
110
|
+
UseRoleProps,
|
|
111
|
+
UseClickProps,
|
|
112
|
+
UseListNavigationProps,
|
|
113
|
+
UseTypeaheadProps,
|
|
114
|
+
UseInnerOffsetProps,
|
|
115
|
+
Delay,
|
|
116
|
+
} from './interactions/types'
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
// tracks trigger elements for multi-trigger tooltip/popover patterns.
|
|
2
|
+
// when multiple triggers share a single floating element (scoped pattern),
|
|
3
|
+
// this lets useHover check if the cursor moved to a sibling trigger
|
|
4
|
+
// and suppress the close.
|
|
5
|
+
|
|
6
|
+
export class PopupTriggerMap {
|
|
7
|
+
private map = new Map<string, Element>()
|
|
8
|
+
private elements = new Set<Element>()
|
|
9
|
+
|
|
10
|
+
add(id: string, element: Element) {
|
|
11
|
+
const prev = this.map.get(id)
|
|
12
|
+
if (prev) {
|
|
13
|
+
this.elements.delete(prev)
|
|
14
|
+
}
|
|
15
|
+
this.map.set(id, element)
|
|
16
|
+
this.elements.add(element)
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
delete(id: string) {
|
|
20
|
+
const el = this.map.get(id)
|
|
21
|
+
if (el) {
|
|
22
|
+
this.elements.delete(el)
|
|
23
|
+
this.map.delete(id)
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
hasElement(element: Element): boolean {
|
|
28
|
+
return this.elements.has(element)
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// lightweight event emitter for coordinating between interaction hooks.
|
|
2
|
+
// when one hook changes open state (e.g. dismiss via escape), others
|
|
3
|
+
// need to know so they can clear their timers and prevent reopening.
|
|
4
|
+
|
|
5
|
+
export type FloatingEvents = {
|
|
6
|
+
emit(event: string, data?: any): void
|
|
7
|
+
on(event: string, handler: (data?: any) => void): void
|
|
8
|
+
off(event: string, handler: (data?: any) => void): void
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export function createFloatingEvents(): FloatingEvents {
|
|
12
|
+
const listeners = new Map<string, Set<(data?: any) => void>>()
|
|
13
|
+
|
|
14
|
+
return {
|
|
15
|
+
emit(event, data) {
|
|
16
|
+
listeners.get(event)?.forEach((fn) => fn(data))
|
|
17
|
+
},
|
|
18
|
+
on(event, handler) {
|
|
19
|
+
let set = listeners.get(event)
|
|
20
|
+
if (!set) {
|
|
21
|
+
set = new Set()
|
|
22
|
+
listeners.set(event, set)
|
|
23
|
+
}
|
|
24
|
+
set.add(handler)
|
|
25
|
+
},
|
|
26
|
+
off(event, handler) {
|
|
27
|
+
const set = listeners.get(event)
|
|
28
|
+
if (set) {
|
|
29
|
+
set.delete(handler)
|
|
30
|
+
if (set.size === 0) listeners.delete(event)
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
}
|
|
34
|
+
}
|