@tamagui/web 3.0.0-beta.1648.1 → 3.0.0-beta.1670.1
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/dist/cjs/createComponent.native.cjs +1 -1
- package/dist/cjs/createComponent.native.js +1 -1
- package/dist/cjs/createComponent.native.js.map +1 -1
- package/dist/cjs/eventHandling.native.cjs +28 -4
- package/dist/cjs/eventHandling.native.js +28 -4
- package/dist/cjs/eventHandling.native.js.map +1 -1
- package/dist/esm/createComponent.native.js +1 -1
- package/dist/esm/createComponent.native.js.map +1 -1
- package/dist/esm/eventHandling.native.js +28 -4
- package/dist/esm/eventHandling.native.js.map +1 -1
- package/package.json +17 -17
- package/src/createComponent.tsx +1 -1
- package/src/eventHandling.native.ts +24 -3
- package/types/eventHandling.native.d.ts.map +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tamagui/web",
|
|
3
|
-
"version": "3.0.0-beta.
|
|
3
|
+
"version": "3.0.0-beta.1670.1",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Nate Wienert"
|
|
@@ -100,23 +100,23 @@
|
|
|
100
100
|
"test:web": "vitest --typecheck --run"
|
|
101
101
|
},
|
|
102
102
|
"dependencies": {
|
|
103
|
-
"@tamagui/animation-helpers": "3.0.0-beta.
|
|
104
|
-
"@tamagui/compose-refs": "3.0.0-beta.
|
|
105
|
-
"@tamagui/constants": "3.0.0-beta.
|
|
106
|
-
"@tamagui/dom": "3.0.0-beta.
|
|
107
|
-
"@tamagui/helpers": "3.0.0-beta.
|
|
108
|
-
"@tamagui/is-equal-shallow": "3.0.0-beta.
|
|
109
|
-
"@tamagui/native": "3.0.0-beta.
|
|
110
|
-
"@tamagui/normalize-css-color": "3.0.0-beta.
|
|
111
|
-
"@tamagui/react-native-types": "3.0.0-beta.
|
|
112
|
-
"@tamagui/style-grammar": "3.0.0-beta.
|
|
113
|
-
"@tamagui/types": "3.0.0-beta.
|
|
114
|
-
"@tamagui/use-did-finish-ssr": "3.0.0-beta.
|
|
115
|
-
"@tamagui/use-event": "3.0.0-beta.
|
|
116
|
-
"@tamagui/use-force-update": "3.0.0-beta.
|
|
103
|
+
"@tamagui/animation-helpers": "3.0.0-beta.1670.1",
|
|
104
|
+
"@tamagui/compose-refs": "3.0.0-beta.1670.1",
|
|
105
|
+
"@tamagui/constants": "3.0.0-beta.1670.1",
|
|
106
|
+
"@tamagui/dom": "3.0.0-beta.1670.1",
|
|
107
|
+
"@tamagui/helpers": "3.0.0-beta.1670.1",
|
|
108
|
+
"@tamagui/is-equal-shallow": "3.0.0-beta.1670.1",
|
|
109
|
+
"@tamagui/native": "3.0.0-beta.1670.1",
|
|
110
|
+
"@tamagui/normalize-css-color": "3.0.0-beta.1670.1",
|
|
111
|
+
"@tamagui/react-native-types": "3.0.0-beta.1670.1",
|
|
112
|
+
"@tamagui/style-grammar": "3.0.0-beta.1670.1",
|
|
113
|
+
"@tamagui/types": "3.0.0-beta.1670.1",
|
|
114
|
+
"@tamagui/use-did-finish-ssr": "3.0.0-beta.1670.1",
|
|
115
|
+
"@tamagui/use-event": "3.0.0-beta.1670.1",
|
|
116
|
+
"@tamagui/use-force-update": "3.0.0-beta.1670.1"
|
|
117
117
|
},
|
|
118
118
|
"devDependencies": {
|
|
119
|
-
"@tamagui/build": "3.0.0-beta.
|
|
119
|
+
"@tamagui/build": "3.0.0-beta.1670.1",
|
|
120
120
|
"@testing-library/react": "^16.1.0",
|
|
121
121
|
"csstype": "^3.0.10",
|
|
122
122
|
"react": "19.2.3",
|
|
@@ -129,5 +129,5 @@
|
|
|
129
129
|
"react": ">=19",
|
|
130
130
|
"react-dom": "*"
|
|
131
131
|
},
|
|
132
|
-
"releaseSourceCommit": "
|
|
132
|
+
"releaseSourceCommit": "23b9b37ef498bb7ebe306138c1d635a807db8ac1"
|
|
133
133
|
}
|
package/src/createComponent.tsx
CHANGED
|
@@ -159,19 +159,39 @@ export function useEvents(
|
|
|
159
159
|
// the component's own state a dropped release latches the press look with no
|
|
160
160
|
// event left to clear it. Guarding here means a stray duplicate release is a
|
|
161
161
|
// no-op while a missing one is caught by onFinalize / the detach clear below.
|
|
162
|
+
const longPressTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null)
|
|
163
|
+
const longPressedRef = useRef(false)
|
|
164
|
+
const clearLongPress = () => {
|
|
165
|
+
if (longPressTimerRef.current) clearTimeout(longPressTimerRef.current)
|
|
166
|
+
longPressTimerRef.current = null
|
|
167
|
+
}
|
|
168
|
+
React.useEffect(() => clearLongPress, [])
|
|
162
169
|
const pressActiveRef = useRef(false)
|
|
163
170
|
const beginPress = (e?: any) => {
|
|
164
171
|
if (pressActiveRef.current) return
|
|
165
172
|
pressActiveRef.current = true
|
|
173
|
+
if (isInsideNativeMenu) {
|
|
174
|
+
clearLongPress()
|
|
175
|
+
longPressedRef.current = false
|
|
176
|
+
if (callbacksRef.current.onLongPress) {
|
|
177
|
+
longPressTimerRef.current = setTimeout(() => {
|
|
178
|
+
longPressTimerRef.current = null
|
|
179
|
+
longPressedRef.current = true
|
|
180
|
+
callbacksRef.current.onLongPress?.(e ?? {})
|
|
181
|
+
}, callbacksRef.current.delayLongPress ?? 500)
|
|
182
|
+
}
|
|
183
|
+
}
|
|
166
184
|
callbacksRef.current.onPressIn?.(e ?? {})
|
|
167
185
|
}
|
|
168
186
|
const endPress = (e?: any, firePress = false) => {
|
|
187
|
+
clearLongPress()
|
|
169
188
|
if (!pressActiveRef.current) return
|
|
170
189
|
pressActiveRef.current = false
|
|
171
|
-
if (firePress) callbacksRef.current.onPress?.(e ?? {})
|
|
190
|
+
if (firePress && !longPressedRef.current) callbacksRef.current.onPress?.(e ?? {})
|
|
172
191
|
callbacksRef.current.onPressOut?.(e ?? {})
|
|
173
192
|
}
|
|
174
193
|
|
|
194
|
+
// native menu triggers leave responder ownership to the adapter.
|
|
175
195
|
// Real press handlers use the responder system for delivery even when RNGH
|
|
176
196
|
// is configured. RNGH Tap begin/end ordering is not stable enough for
|
|
177
197
|
// nested Tamagui press arbitration, and Fabric can mount a stale Tap that
|
|
@@ -184,7 +204,7 @@ export function useEvents(
|
|
|
184
204
|
// unconditionally here for stable hooks order; useMainThreadPressEvents
|
|
185
205
|
// no-ops when enabled is false.
|
|
186
206
|
const useResponderFallback = Boolean(
|
|
187
|
-
hasRealPressEvents || (
|
|
207
|
+
!isInsideNativeMenu && (hasRealPressEvents || (getIsAndroid() && hasPressEvents))
|
|
188
208
|
)
|
|
189
209
|
useMainThreadPressEvents(events, viewProps, useResponderFallback, debugName)
|
|
190
210
|
|
|
@@ -196,10 +216,11 @@ export function useEvents(
|
|
|
196
216
|
onPressOut: events.onPressOut,
|
|
197
217
|
onPress: events.onPress,
|
|
198
218
|
onLongPress: events.onLongPress,
|
|
219
|
+
delayLongPress: events.delayLongPress,
|
|
199
220
|
}
|
|
200
221
|
: {}
|
|
201
222
|
|
|
202
|
-
if (hasRealPressEvents) {
|
|
223
|
+
if (hasRealPressEvents && !isInsideNativeMenu) {
|
|
203
224
|
// Real handlers are delivered by useMainThreadPressEvents above. Clear
|
|
204
225
|
// any cached press-clause observer from an earlier render so it cannot
|
|
205
226
|
// double-fire after onPress appears dynamically.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eventHandling.native.d.ts","sourceRoot":"","sources":["../src/eventHandling.native.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,OAAO,KAAK,EAAE,YAAY,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAA;AAoCrE,wBAAgB,YAAY,OAE3B;AAED,wBAAgB,SAAS,CACvB,MAAM,EAAE,GAAG,EACX,SAAS,EAAE,GAAG,EACd,QAAQ,EAAE;IAAE,OAAO,EAAE,wBAAwB,CAAA;CAAE,EAC/C,YAAY,EAAE,YAAY,EAC1B,KAAK,CAAC,EAAE,OAAO,EACf,kBAAkB,CAAC,EAAE,OAAO,EAC5B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,EACzB,kBAAkB,CAAC,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"eventHandling.native.d.ts","sourceRoot":"","sources":["../src/eventHandling.native.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,OAAO,KAAK,EAAE,YAAY,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAA;AAoCrE,wBAAgB,YAAY,OAE3B;AAED,wBAAgB,SAAS,CACvB,MAAM,EAAE,GAAG,EACX,SAAS,EAAE,GAAG,EACd,QAAQ,EAAE;IAAE,OAAO,EAAE,wBAAwB,CAAA;CAAE,EAC/C,YAAY,EAAE,YAAY,EAC1B,KAAK,CAAC,EAAE,OAAO,EACf,kBAAkB,CAAC,EAAE,OAAO,EAC5B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,EACzB,kBAAkB,CAAC,EAAE,OAAO,OA+O7B;AAED,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,GAAG,EACZ,OAAO,EAAE,GAAG,EACZ,SAAS,EAAE;IAAE,OAAO,EAAE,wBAAwB,CAAA;CAAE,EAChD,KAAK,CAAC,EAAE,OAAO,EACf,oBAAoB,CAAC,EAAE,OAAO,EAC9B,kBAAkB,CAAC,EAAE,OAAO,OA+D7B"}
|