@tamagui/popper 1.74.3 → 1.74.4

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.
@@ -0,0 +1,239 @@
1
+ import { useComposedRefs } from "@tamagui/compose-refs";
2
+ import {
3
+ View as TamaguiView,
4
+ createStyledContext,
5
+ getVariableValue,
6
+ isWeb,
7
+ styled,
8
+ useIsomorphicLayoutEffect,
9
+ useProps
10
+ } from "@tamagui/core";
11
+ import {
12
+ arrow,
13
+ autoUpdate,
14
+ flip,
15
+ offset as offsetFn,
16
+ shift,
17
+ useFloating
18
+ } from "@tamagui/floating";
19
+ import { getSpace } from "@tamagui/get-token";
20
+ import { ThemeableStack, YStack } from "@tamagui/stacks";
21
+ import * as React from "react";
22
+ import { Keyboard, useWindowDimensions } from "react-native";
23
+ import { jsx } from "react/jsx-runtime";
24
+ const PopperContext = createStyledContext({}), { useStyledContext: usePopperContext, Provider: PopperProvider } = PopperContext;
25
+ function Popper(props) {
26
+ const {
27
+ children,
28
+ size,
29
+ strategy = "absolute",
30
+ placement = "bottom",
31
+ stayInFrame,
32
+ allowFlip,
33
+ offset,
34
+ __scopePopper
35
+ } = props, [isMounted, setIsMounted] = React.useState(!1);
36
+ useIsomorphicLayoutEffect(() => {
37
+ setIsMounted(!0);
38
+ }, []);
39
+ const [anchorRef, setAnchorRef] = React.useState(), [arrowEl, setArrow] = React.useState(null), [arrowSize, setArrowSize] = React.useState(0), offsetOptions = offset ?? arrowSize, floating = useFloating({
40
+ strategy,
41
+ placement,
42
+ sameScrollView: !1,
43
+ // this only takes effect on native
44
+ middleware: [
45
+ stayInFrame ? shift(typeof stayInFrame == "boolean" ? {} : stayInFrame) : null,
46
+ allowFlip ? flip(typeof allowFlip == "boolean" ? {} : allowFlip) : null,
47
+ arrowEl ? arrow({ element: arrowEl }) : null,
48
+ typeof offsetOptions < "u" ? offsetFn(offsetOptions) : null
49
+ ].filter(Boolean)
50
+ }), {
51
+ refs,
52
+ middlewareData,
53
+ // @ts-expect-error this comes from Tooltip for example
54
+ open
55
+ } = floating;
56
+ if (useIsomorphicLayoutEffect(() => {
57
+ floating.refs.setReference(anchorRef);
58
+ }, [anchorRef]), isWeb)
59
+ useIsomorphicLayoutEffect(() => {
60
+ if (open && refs.reference.current && refs.floating.current)
61
+ return autoUpdate(refs.reference.current, refs.floating.current, floating.update);
62
+ }, [open, floating.update, refs.floating, refs.reference]);
63
+ else {
64
+ const dimensions = useWindowDimensions(), [keyboardOpen, setKeyboardOpen] = React.useState(!1);
65
+ React.useEffect(() => {
66
+ const showSubscription = Keyboard.addListener("keyboardDidShow", () => {
67
+ setKeyboardOpen(!0);
68
+ }), hideSubscription = Keyboard.addListener("keyboardDidHide", () => {
69
+ setKeyboardOpen(!1);
70
+ });
71
+ return () => {
72
+ showSubscription.remove(), hideSubscription.remove();
73
+ };
74
+ }, []), useIsomorphicLayoutEffect(() => {
75
+ floating.update();
76
+ }, [dimensions, keyboardOpen]);
77
+ }
78
+ const popperContext = {
79
+ anchorRef: setAnchorRef,
80
+ size,
81
+ arrowRef: setArrow,
82
+ arrowStyle: middlewareData.arrow,
83
+ onArrowSize: setArrowSize,
84
+ isMounted,
85
+ scope: __scopePopper,
86
+ ...floating
87
+ };
88
+ return /* @__PURE__ */ jsx(PopperProvider, { ...popperContext, children });
89
+ }
90
+ const PopperAnchor = YStack.extractable(
91
+ React.forwardRef(
92
+ function(props, forwardedRef) {
93
+ const { virtualRef, __scopePopper, ...anchorProps } = props, { anchorRef, getReferenceProps } = usePopperContext(__scopePopper), ref = React.useRef(null), composedRefs = useComposedRefs(forwardedRef, ref, anchorRef);
94
+ if (virtualRef)
95
+ return null;
96
+ const stackProps = {
97
+ ref: composedRefs,
98
+ ...anchorProps
99
+ };
100
+ return /* @__PURE__ */ jsx(
101
+ TamaguiView,
102
+ {
103
+ ...getReferenceProps ? getReferenceProps(stackProps) : stackProps
104
+ }
105
+ );
106
+ }
107
+ )
108
+ ), PopperContentFrame = styled(ThemeableStack, {
109
+ name: "PopperContent",
110
+ variants: {
111
+ unstyled: {
112
+ false: {
113
+ size: "$true",
114
+ backgroundColor: "$background",
115
+ alignItems: "center",
116
+ radiused: !0
117
+ }
118
+ },
119
+ size: {
120
+ "...size": (val, { tokens }) => ({
121
+ padding: tokens.space[val],
122
+ borderRadius: tokens.radius[val]
123
+ })
124
+ }
125
+ },
126
+ defaultVariants: {
127
+ unstyled: !1
128
+ }
129
+ }), PopperContent = React.forwardRef(function(props, forwardedRef) {
130
+ const { __scopePopper, ...rest } = props, { strategy, placement, refs, x, y, getFloatingProps, size, isMounted, update } = usePopperContext(__scopePopper), contentRefs = useComposedRefs(refs.setFloating, forwardedRef), contents = React.useMemo(() => /* @__PURE__ */ jsx(
131
+ PopperContentFrame,
132
+ {
133
+ "data-placement": placement,
134
+ "data-strategy": strategy,
135
+ contain: "layout",
136
+ size,
137
+ ...rest
138
+ },
139
+ "popper-content-frame"
140
+ ), [placement, strategy, props]);
141
+ if (useIsomorphicLayoutEffect(() => {
142
+ isMounted && update();
143
+ }, [isMounted]), !isMounted)
144
+ return null;
145
+ const frameProps = {
146
+ ref: contentRefs,
147
+ x: x || 0,
148
+ y: y || 0,
149
+ position: strategy
150
+ };
151
+ return /* @__PURE__ */ jsx(YStack, { ...getFloatingProps ? getFloatingProps(frameProps) : frameProps, children: contents });
152
+ }), PopperArrowFrame = styled(YStack, {
153
+ name: "PopperArrow",
154
+ variants: {
155
+ unstyled: {
156
+ false: {
157
+ borderColor: "$borderColor",
158
+ backgroundColor: "$background",
159
+ position: "relative"
160
+ }
161
+ }
162
+ },
163
+ defaultVariants: {
164
+ unstyled: !1
165
+ }
166
+ }), PopperArrowOuterFrame = styled(YStack, {
167
+ name: "PopperArrowOuter",
168
+ variants: {
169
+ unstyled: {
170
+ false: {
171
+ position: "absolute",
172
+ zIndex: 1e6,
173
+ pointerEvents: "none",
174
+ overflow: "hidden",
175
+ alignItems: "center",
176
+ justifyContent: "center"
177
+ }
178
+ }
179
+ },
180
+ defaultVariants: {
181
+ unstyled: !1
182
+ }
183
+ }), opposites = {
184
+ top: "bottom",
185
+ right: "left",
186
+ bottom: "top",
187
+ left: "right"
188
+ }, PopperArrow = PopperArrowFrame.styleable(function(propsIn, forwardedRef) {
189
+ const { __scopePopper, ...rest } = propsIn, props = useProps(rest), { offset, size: sizeProp, borderWidth = 0, ...arrowProps } = props, context = usePopperContext(__scopePopper), sizeVal = sizeProp ?? context.size, size = +getVariableValue(
190
+ getSpace(sizeVal, {
191
+ shift: -2,
192
+ bounds: [2]
193
+ })
194
+ ), { placement } = context, refs = useComposedRefs(context.arrowRef, forwardedRef), x = context.arrowStyle?.x || 0, y = context.arrowStyle?.y || 0, primaryPlacement = placement ? placement.split("-")[0] : "top", arrowStyle = { x, y, width: size, height: size }, innerArrowStyle = {}, isVertical = primaryPlacement === "bottom" || primaryPlacement === "top";
195
+ if (primaryPlacement) {
196
+ arrowStyle[isVertical ? "width" : "height"] = size * 2;
197
+ const oppSide = opposites[primaryPlacement];
198
+ oppSide && (arrowStyle[oppSide] = -size, innerArrowStyle[oppSide] = size / 2), oppSide === "bottom" && (arrowStyle[oppSide] += 1), (oppSide === "top" || oppSide === "bottom") && (arrowStyle.left = 0), (oppSide === "left" || oppSide === "right") && (arrowStyle.top = 0), useIsomorphicLayoutEffect(() => {
199
+ context.onArrowSize?.(size);
200
+ }, [size, context.onArrowSize]);
201
+ }
202
+ return /* @__PURE__ */ jsx(PopperArrowOuterFrame, { ref: refs, ...arrowStyle, children: /* @__PURE__ */ jsx(
203
+ PopperArrowFrame,
204
+ {
205
+ width: size,
206
+ height: size,
207
+ ...arrowProps,
208
+ ...innerArrowStyle,
209
+ rotate: "45deg",
210
+ ...primaryPlacement === "bottom" && {
211
+ borderLeftWidth: borderWidth,
212
+ borderTopWidth: borderWidth
213
+ },
214
+ ...primaryPlacement === "top" && {
215
+ borderBottomWidth: borderWidth,
216
+ borderRightWidth: borderWidth
217
+ },
218
+ ...primaryPlacement === "right" && {
219
+ borderLeftWidth: borderWidth,
220
+ borderBottomWidth: borderWidth
221
+ },
222
+ ...primaryPlacement === "left" && {
223
+ borderTopWidth: borderWidth,
224
+ borderRightWidth: borderWidth
225
+ }
226
+ }
227
+ ) });
228
+ });
229
+ export {
230
+ Popper,
231
+ PopperAnchor,
232
+ PopperArrow,
233
+ PopperContent,
234
+ PopperContentFrame,
235
+ PopperContext,
236
+ PopperProvider,
237
+ usePopperContext
238
+ };
239
+ //# sourceMappingURL=Popper.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/Popper.tsx"],
4
+ "mappings": "AAEA,SAAS,uBAAuB;AAChC;AAAA,EAGE,QAAQ;AAAA,EACR;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP;AAAA,EAME;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV;AAAA,EACA;AAAA,OACK;AACP,SAAS,gBAAgB;AACzB,SAA4B,gBAAgB,cAA2B;AACvE,YAAY,WAAW;AACvB,SAAS,UAAgB,2BAA2B;AAoI3C;AA/GF,MAAM,gBAAgB,oBAAwC,CAAC,CAAQ,GAEjE,EAAE,kBAAkB,kBAAkB,UAAU,eAAe,IAC1E;AAcK,SAAS,OAAO,OAAuC;AAC5D,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX,YAAY;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI,OAEE,CAAC,WAAW,YAAY,IAAI,MAAM,SAAS,EAAK;AACtD,4BAA0B,MAAM;AAC9B,iBAAa,EAAI;AAAA,EACnB,GAAG,CAAC,CAAC;AAEL,QAAM,CAAC,WAAW,YAAY,IAAI,MAAM,SAAc,GAChD,CAAC,SAAS,QAAQ,IAAI,MAAM,SAAc,IAAI,GAC9C,CAAC,WAAW,YAAY,IAAI,MAAM,SAAS,CAAC,GAC5C,gBAAgB,UAAU,WAE1B,WAAW,YAAY;AAAA,IAC3B;AAAA,IACA;AAAA,IACA,gBAAgB;AAAA;AAAA,IAChB,YAAY;AAAA,MACV,cACI,MAAM,OAAO,eAAgB,YAAY,CAAC,IAAI,WAAW,IACxD;AAAA,MACL,YAAY,KAAK,OAAO,aAAc,YAAY,CAAC,IAAI,SAAS,IAAK;AAAA,MACrE,UAAU,MAAM,EAAE,SAAS,QAAQ,CAAC,IAAK;AAAA,MACzC,OAAO,gBAAkB,MAAc,SAAS,aAAa,IAAK;AAAA,IACpE,EAAE,OAAO,OAAO;AAAA,EAClB,CAAC,GAEK;AAAA,IACJ;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,EACF,IAAI;AAMJ,MAJA,0BAA0B,MAAM;AAC9B,aAAS,KAAK,aAAa,SAAS;AAAA,EACtC,GAAG,CAAC,SAAS,CAAC,GAEV;AACF,8BAA0B,MAAM;AAC9B,UAAK,QACC,KAAK,UAAU,WAAW,KAAK,SAAS;AAI9C,eAAO,WAAW,KAAK,UAAU,SAAS,KAAK,SAAS,SAAS,SAAS,MAAM;AAAA,IAClF,GAAG,CAAC,MAAM,SAAS,QAAQ,KAAK,UAAU,KAAK,SAAS,CAAC;AAAA,OACpD;AAIL,UAAM,aAAa,oBAAoB,GAGjC,CAAC,cAAc,eAAe,IAAI,MAAM,SAAS,EAAK;AAC5D,UAAM,UAAU,MAAM;AACpB,YAAM,mBAAmB,SAAS,YAAY,mBAAmB,MAAM;AACrE,wBAAgB,EAAI;AAAA,MACtB,CAAC,GACK,mBAAmB,SAAS,YAAY,mBAAmB,MAAM;AACrE,wBAAgB,EAAK;AAAA,MACvB,CAAC;AAED,aAAO,MAAM;AACX,yBAAiB,OAAO,GACxB,iBAAiB,OAAO;AAAA,MAC1B;AAAA,IACF,GAAG,CAAC,CAAC,GAEL,0BAA0B,MAAM;AAC9B,eAAS,OAAO;AAAA,IAClB,GAAG,CAAC,YAAY,YAAY,CAAC;AAAA,EAC/B;AAEA,QAAM,gBAAgB;AAAA,IACpB,WAAW;AAAA,IACX;AAAA,IACA,UAAU;AAAA,IACV,YAAY,eAAe;AAAA,IAC3B,aAAa;AAAA,IACb;AAAA,IACA,OAAO;AAAA,IACP,GAAG;AAAA,EACL;AAEA,SAAO,oBAAC,kBAAgB,GAAG,eAAgB,UAAS;AACtD;AAYO,MAAM,eAAe,OAAO;AAAA,EACjC,MAAM;AAAA,IACJ,SAAsB,OAA6C,cAAc;AAC/E,YAAM,EAAE,YAAY,eAAe,GAAG,YAAY,IAAI,OAChD,EAAE,WAAW,kBAAkB,IAAI,iBAAiB,aAAa,GACjE,MAAM,MAAM,OAAwB,IAAI,GACxC,eAAe,gBAAgB,cAAc,KAAK,SAAS;AACjE,UAAI;AACF,eAAO;AAET,YAAM,aAAa;AAAA,QACjB,KAAK;AAAA,QACL,GAAG;AAAA,MACL;AACA,aACE;AAAA,QAAC;AAAA;AAAA,UACE,GAAI,oBAAoB,kBAAkB,UAAU,IAAI;AAAA;AAAA,MAC3D;AAAA,IAEJ;AAAA,EACF;AACF,GAUa,qBAAqB,OAAO,gBAAgB;AAAA,EACvD,MAAM;AAAA,EAEN,UAAU;AAAA,IACR,UAAU;AAAA,MACR,OAAO;AAAA,QACL,MAAM;AAAA,QACN,iBAAiB;AAAA,QACjB,YAAY;AAAA,QACZ,UAAU;AAAA,MACZ;AAAA,IACF;AAAA,IAEA,MAAM;AAAA,MACJ,WAAW,CAAC,KAAK,EAAE,OAAO,OACjB;AAAA,QACL,SAAS,OAAO,MAAM,GAAG;AAAA,QACzB,cAAc,OAAO,OAAO,GAAG;AAAA,MACjC;AAAA,IAEJ;AAAA,EACF;AAAA,EAEA,iBAAiB;AAAA,IACf,UAAU;AAAA,EACZ;AACF,CAAC,GAEY,gBAAgB,MAAM,WAGjC,SAAuB,OAA8C,cAAc;AACnF,QAAM,EAAE,eAAe,GAAG,KAAK,IAAI,OAC7B,EAAE,UAAU,WAAW,MAAM,GAAG,GAAG,kBAAkB,MAAM,WAAW,OAAO,IACjF,iBAAiB,aAAa,GAC1B,cAAc,gBAAqB,KAAK,aAAa,YAAY,GAEjE,WAAW,MAAM,QAAQ,MAE3B;AAAA,IAAC;AAAA;AAAA,MAEC,kBAAgB;AAAA,MAChB,iBAAe;AAAA,MACf,SAAQ;AAAA,MACR;AAAA,MACC,GAAG;AAAA;AAAA,IALA;AAAA,EAMN,GAED,CAAC,WAAW,UAAU,KAAK,CAAC;AAS/B,MAPA,0BAA0B,MAAM;AAC9B,IAAI,aACF,OAAO;AAAA,EAEX,GAAG,CAAC,SAAS,CAAC,GAGV,CAAC;AACH,WAAO;AAGT,QAAM,aAAa;AAAA,IACjB,KAAK;AAAA,IACL,GAAG,KAAK;AAAA,IACR,GAAG,KAAK;AAAA,IACR,UAAU;AAAA,EACZ;AAGA,SACE,oBAAC,UAAQ,GAAI,mBAAmB,iBAAiB,UAAU,IAAI,YAC5D,oBACH;AAEJ,CAAC,GAWK,mBAAmB,OAAO,QAAQ;AAAA,EACtC,MAAM;AAAA,EAEN,UAAU;AAAA,IACR,UAAU;AAAA,MACR,OAAO;AAAA,QACL,aAAa;AAAA,QACb,iBAAiB;AAAA,QACjB,UAAU;AAAA,MACZ;AAAA,IACF;AAAA,EACF;AAAA,EAEA,iBAAiB;AAAA,IACf,UAAU;AAAA,EACZ;AACF,CAAC,GAEK,wBAAwB,OAAO,QAAQ;AAAA,EAC3C,MAAM;AAAA,EAEN,UAAU;AAAA,IACR,UAAU;AAAA,MACR,OAAO;AAAA,QACL,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,eAAe;AAAA,QACf,UAAU;AAAA,QACV,YAAY;AAAA,QACZ,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AAAA,EAEA,iBAAiB;AAAA,IACf,UAAU;AAAA,EACZ;AACF,CAAC,GAEK,YAAY;AAAA,EAChB,KAAK;AAAA,EACL,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,MAAM;AACR,GAIa,cAAc,iBAAiB,UAE1C,SAAqB,SAA8C,cAAc;AACjF,QAAM,EAAE,eAAe,GAAG,KAAK,IAAI,SAC7B,QAAQ,SAAS,IAAI,GACrB,EAAE,QAAQ,MAAM,UAAU,cAAc,GAAG,GAAG,WAAW,IAAI,OAE7D,UAAU,iBAAiB,aAAa,GACxC,UAAU,YAAY,QAAQ,MAO9B,OAAO,CANW;AAAA,IACtB,SAAS,SAAS;AAAA,MAChB,OAAO;AAAA,MACP,QAAQ,CAAC,CAAC;AAAA,IACZ,CAAC;AAAA,EACH,GAEM,EAAE,UAAU,IAAI,SAChB,OAAO,gBAAgB,QAAQ,UAAU,YAAY,GAIrD,IAAK,QAAQ,YAAY,KAAgB,GACzC,IAAK,QAAQ,YAAY,KAAgB,GAEzC,mBAAoB,YAAY,UAAU,MAAM,GAAG,EAAE,CAAC,IAAI,OAE1D,aAAyB,EAAE,GAAG,GAAG,OAAO,MAAM,QAAQ,KAAK,GAC3D,kBAA8B,CAAC,GAC/B,aAAa,qBAAqB,YAAY,qBAAqB;AAEzE,MAAI,kBAAkB;AAEpB,eAAW,aAAa,UAAU,QAAQ,IAAI,OAAO;AACrD,UAAM,UAAU,UAAU,gBAAgB;AAC1C,IAAI,YACF,WAAW,OAAO,IAAI,CAAC,MACvB,gBAAgB,OAAO,IAAI,OAAO,IAEhC,YAAY,aAGd,WAAW,OAAO,KAAK,KAErB,YAAY,SAAS,YAAY,cACnC,WAAW,OAAO,KAEhB,YAAY,UAAU,YAAY,aACpC,WAAW,MAAM,IAInB,0BAA0B,MAAM;AAC9B,cAAQ,cAAc,IAAI;AAAA,IAC5B,GAAG,CAAC,MAAM,QAAQ,WAAW,CAAC;AAAA,EAChC;AAGA,SACE,oBAAC,yBAAsB,KAAK,MAAO,GAAG,YACpC;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,MACP,QAAQ;AAAA,MACP,GAAG;AAAA,MACH,GAAG;AAAA,MACJ,QAAO;AAAA,MACN,GAAI,qBAAqB,YAAY;AAAA,QACpC,iBAAiB;AAAA,QACjB,gBAAgB;AAAA,MAClB;AAAA,MACC,GAAI,qBAAqB,SAAS;AAAA,QACjC,mBAAmB;AAAA,QACnB,kBAAkB;AAAA,MACpB;AAAA,MACC,GAAI,qBAAqB,WAAW;AAAA,QACnC,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,MACrB;AAAA,MACC,GAAI,qBAAqB,UAAU;AAAA,QAClC,gBAAgB;AAAA,QAChB,kBAAkB;AAAA,MACpB;AAAA;AAAA,EACF,GACF;AAEJ,CAAC;",
5
+ "names": []
6
+ }
@@ -0,0 +1,2 @@
1
+ export * from "./Popper";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/index.tsx"],
4
+ "mappings": "AAAA,cAAc;",
5
+ "names": []
6
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tamagui/popper",
3
- "version": "1.74.3",
3
+ "version": "1.74.4",
4
4
  "sideEffects": [
5
5
  "*.css"
6
6
  ],
@@ -31,19 +31,19 @@
31
31
  }
32
32
  },
33
33
  "dependencies": {
34
- "@tamagui/compose-refs": "1.74.3",
35
- "@tamagui/core": "1.74.3",
36
- "@tamagui/floating": "1.74.3",
37
- "@tamagui/get-token": "1.74.3",
38
- "@tamagui/stacks": "1.74.3",
39
- "@tamagui/use-controllable-state": "1.74.3"
34
+ "@tamagui/compose-refs": "1.74.4",
35
+ "@tamagui/core": "1.74.4",
36
+ "@tamagui/floating": "1.74.4",
37
+ "@tamagui/get-token": "1.74.4",
38
+ "@tamagui/stacks": "1.74.4",
39
+ "@tamagui/use-controllable-state": "1.74.4"
40
40
  },
41
41
  "peerDependencies": {
42
42
  "react": "*",
43
43
  "react-native": "*"
44
44
  },
45
45
  "devDependencies": {
46
- "@tamagui/build": "1.74.3",
46
+ "@tamagui/build": "1.74.4",
47
47
  "react": "^18.2.0",
48
48
  "react-native": "^0.72.1"
49
49
  },