@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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tamagui/web",
3
- "version": "3.0.0-beta.1648.1",
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.1648.1",
104
- "@tamagui/compose-refs": "3.0.0-beta.1648.1",
105
- "@tamagui/constants": "3.0.0-beta.1648.1",
106
- "@tamagui/dom": "3.0.0-beta.1648.1",
107
- "@tamagui/helpers": "3.0.0-beta.1648.1",
108
- "@tamagui/is-equal-shallow": "3.0.0-beta.1648.1",
109
- "@tamagui/native": "3.0.0-beta.1648.1",
110
- "@tamagui/normalize-css-color": "3.0.0-beta.1648.1",
111
- "@tamagui/react-native-types": "3.0.0-beta.1648.1",
112
- "@tamagui/style-grammar": "3.0.0-beta.1648.1",
113
- "@tamagui/types": "3.0.0-beta.1648.1",
114
- "@tamagui/use-did-finish-ssr": "3.0.0-beta.1648.1",
115
- "@tamagui/use-event": "3.0.0-beta.1648.1",
116
- "@tamagui/use-force-update": "3.0.0-beta.1648.1"
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.1648.1",
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": "302078aa9222bfff888df41f1679e1179a20b18a"
132
+ "releaseSourceCommit": "23b9b37ef498bb7ebe306138c1d635a807db8ac1"
133
133
  }
@@ -2097,7 +2097,7 @@ export function createComponent<
2097
2097
  stateRef,
2098
2098
  isHOC,
2099
2099
  isCompositeComponent,
2100
- hasRealPressEvents
2100
+ hasRealPressEvents && !isInsideNativeMenu
2101
2101
  )
2102
2102
  }
2103
2103
 
@@ -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 || (!isInsideNativeMenu && getIsAndroid() && hasPressEvents)
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,OA0N7B;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"}
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"}