@hanzogui/web 4.3.1 → 7.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.
Files changed (37) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/dist/cjs/createComponent.cjs +13 -4
  3. package/dist/cjs/createComponent.native.js +16 -6
  4. package/dist/cjs/createComponent.native.js.map +1 -1
  5. package/dist/cjs/eventHandling.cjs +1 -1
  6. package/dist/cjs/eventHandling.native.js +12 -2
  7. package/dist/cjs/eventHandling.native.js.map +1 -1
  8. package/dist/cjs/helpers/mainThreadPressEvents.cjs +1 -1
  9. package/dist/cjs/helpers/mainThreadPressEvents.native.js +2 -2
  10. package/dist/cjs/helpers/mainThreadPressEvents.native.js.map +1 -1
  11. package/dist/esm/createComponent.mjs +13 -4
  12. package/dist/esm/createComponent.mjs.map +1 -1
  13. package/dist/esm/createComponent.native.js +16 -6
  14. package/dist/esm/createComponent.native.js.map +1 -1
  15. package/dist/esm/eventHandling.mjs +1 -1
  16. package/dist/esm/eventHandling.mjs.map +1 -1
  17. package/dist/esm/eventHandling.native.js +12 -2
  18. package/dist/esm/eventHandling.native.js.map +1 -1
  19. package/dist/esm/helpers/mainThreadPressEvents.mjs +1 -1
  20. package/dist/esm/helpers/mainThreadPressEvents.mjs.map +1 -1
  21. package/dist/esm/helpers/mainThreadPressEvents.native.js +2 -2
  22. package/dist/esm/helpers/mainThreadPressEvents.native.js.map +1 -1
  23. package/package.json +14 -14
  24. package/src/createComponent.tsx +46 -7
  25. package/src/eventHandling.native.ts +15 -3
  26. package/src/eventHandling.ts +2 -1
  27. package/src/helpers/mainThreadPressEvents.native.ts +6 -2
  28. package/src/helpers/mainThreadPressEvents.ts +2 -1
  29. package/types/createComponent.d.ts.map +1 -1
  30. package/types/eventHandling.d.ts +1 -1
  31. package/types/eventHandling.d.ts.map +1 -1
  32. package/types/eventHandling.native.d.ts +1 -1
  33. package/types/eventHandling.native.d.ts.map +1 -1
  34. package/types/helpers/mainThreadPressEvents.d.ts +1 -1
  35. package/types/helpers/mainThreadPressEvents.d.ts.map +1 -1
  36. package/types/helpers/mainThreadPressEvents.native.d.ts +1 -1
  37. package/types/helpers/mainThreadPressEvents.native.d.ts.map +1 -1
@@ -1,3 +1,3 @@
1
- function useMainThreadPressEvents(_events, _viewProps, _enabled) {}
1
+ function useMainThreadPressEvents(_events, _viewProps, _enabled, _debugName) {}
2
2
  export { useMainThreadPressEvents };
3
3
  //# sourceMappingURL=mainThreadPressEvents.mjs.map
@@ -1 +1 @@
1
- {"version":3,"names":["useMainThreadPressEvents","_events","_viewProps","_enabled"],"sources":["../../../src/helpers/mainThreadPressEvents.ts"],"sourcesContent":[null],"mappings":"AACO,SAASA,yBACdC,OAAA,EACAC,UAAA,EACAC,QAAA,EACA,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["useMainThreadPressEvents","_events","_viewProps","_enabled","_debugName"],"sources":["../../../src/helpers/mainThreadPressEvents.ts"],"sourcesContent":[null],"mappings":"AACO,SAASA,yBACdC,OAAA,EACAC,UAAA,EACAC,QAAA,EACAC,UAAA,EACA,CAAC","ignoreList":[]}
@@ -2,7 +2,8 @@ import { useRef } from "react";
2
2
  var DEFAULT_LONG_PRESS_DELAY = 500;
3
3
  var DEFAULT_MIN_PRESS_DURATION = 130;
4
4
  function useMainThreadPressEvents(events, viewProps) {
5
- var enabled = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : true;
5
+ var enabled = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : true,
6
+ debugName = arguments.length > 3 ? arguments[3] : void 0;
6
7
  var ref = useRef(null);
7
8
  if (!ref.current) {
8
9
  ref.current = {
@@ -73,7 +74,6 @@ function useMainThreadPressEvents(events, viewProps) {
73
74
  }
74
75
  };
75
76
  viewProps.onResponderRelease = function (e) {
76
- var wasActive = ref.current.state === "active";
77
77
  var wasLongPressed = ref.current.state === "longPressed";
78
78
  cleanup();
79
79
  if (ref.current.state === "pressing") {
@@ -1 +1 @@
1
- {"version":3,"names":["useRef","DEFAULT_LONG_PRESS_DELAY","DEFAULT_MIN_PRESS_DURATION","useMainThreadPressEvents","events","viewProps","enabled","arguments","length","ref","current","state","pressInTimer","pressOutTimer","longPressTimer","activateTime","_events_delayPressIn","delayPressIn","Math","max","_events_delayPressOut","delayPressOut","_events_delayLongPress","delayLongPress","_events_minPressDuration","minPressDuration","activate","e","_events_onPressIn","Date","now","onPressIn","call","deactivate","pressDuration","remaining","setTimeout","_events_onPressOut2","onPressOut","_events_onPressOut","cleanup","clearTimeout","onStartShouldSetResponder","disabled","onResponderGrant","onLongPress","_events_onLongPress","onResponderRelease","wasActive","wasLongPressed","_events_onPress","onPress","onResponderTerminate","onResponderTerminationRequest","cancelable","onResponderMove","_events_onPressMove","onPressMove"],"sources":["../../../src/helpers/mainThreadPressEvents.native.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useRef","DEFAULT_LONG_PRESS_DELAY","DEFAULT_MIN_PRESS_DURATION","useMainThreadPressEvents","events","viewProps","enabled","arguments","length","debugName","ref","current","state","pressInTimer","pressOutTimer","longPressTimer","activateTime","_events_delayPressIn","delayPressIn","Math","max","_events_delayPressOut","delayPressOut","_events_delayLongPress","delayLongPress","_events_minPressDuration","minPressDuration","activate","e","_events_onPressIn","Date","now","onPressIn","call","deactivate","pressDuration","remaining","setTimeout","_events_onPressOut2","onPressOut","_events_onPressOut","cleanup","clearTimeout","onStartShouldSetResponder","disabled","onResponderGrant","onLongPress","_events_onLongPress","onResponderRelease","wasLongPressed","_events_onPress","onPress","onResponderTerminate","onResponderTerminationRequest","cancelable","onResponderMove","_events_onPressMove","onPressMove"],"sources":["../../../src/helpers/mainThreadPressEvents.native.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hanzogui/web",
3
- "version": "4.3.1",
3
+ "version": "7.0.0",
4
4
  "license": "MIT",
5
5
  "author": {
6
6
  "name": "Nate Wienert"
@@ -51,20 +51,20 @@
51
51
  "test:web": "vitest --typecheck --run"
52
52
  },
53
53
  "dependencies": {
54
- "@hanzogui/compose-refs": "3.0.6",
55
- "@hanzogui/constants": "3.0.6",
56
- "@hanzogui/helpers": "3.0.6",
57
- "@hanzogui/is-equal-shallow": "3.0.6",
58
- "@hanzogui/native": "3.0.6",
59
- "@hanzogui/normalize-css-color": "3.0.6",
60
- "@hanzogui/timer": "3.0.6",
61
- "@hanzogui/types": "3.0.6",
62
- "@hanzogui/use-did-finish-ssr": "3.0.6",
63
- "@hanzogui/use-event": "3.0.6",
64
- "@hanzogui/use-force-update": "3.0.6"
54
+ "@hanzogui/compose-refs": "^7.0.0",
55
+ "@hanzogui/constants": "^7.0.0",
56
+ "@hanzogui/helpers": "^7.0.0",
57
+ "@hanzogui/is-equal-shallow": "^7.0.0",
58
+ "@hanzogui/native": "^7.0.0",
59
+ "@hanzogui/normalize-css-color": "^7.0.0",
60
+ "@hanzogui/timer": "^7.0.0",
61
+ "@hanzogui/types": "^7.0.0",
62
+ "@hanzogui/use-did-finish-ssr": "^7.0.0",
63
+ "@hanzogui/use-event": "^7.0.0",
64
+ "@hanzogui/use-force-update": "^7.0.0"
65
65
  },
66
66
  "devDependencies": {
67
- "@hanzogui/build": "3.0.6",
67
+ "@hanzogui/build": "^7.0.0",
68
68
  "@testing-library/react": "^16.1.0",
69
69
  "csstype": "^3.0.10",
70
70
  "react": ">=19",
@@ -78,4 +78,4 @@
78
78
  "react-dom": "*",
79
79
  "react-native": "*"
80
80
  }
81
- }
81
+ }
@@ -286,7 +286,9 @@ export function createComponent<
286
286
  // direct press events instead — GestureDetector consumes touches before they
287
287
  // reach MenuView's native handler, preventing the menu from opening
288
288
  const isInsideNativeMenu =
289
- process.env.GUI_TARGET === 'native' ? React.useContext(NativeMenuContext) : false
289
+ process.env.GUI_TARGET === 'native'
290
+ ? React.useContext(NativeMenuContext)
291
+ : false
290
292
 
291
293
  if (
292
294
  !process.env.GUI_IS_CORE_NODE &&
@@ -302,7 +304,7 @@ export function createComponent<
302
304
  if (process.env.NODE_ENV === 'development' && !time && (globalThis as any).time) {
303
305
  time = (globalThis as any).time
304
306
  }
305
- if (process.env.NODE_ENV === 'development' && time) time`non-gui time (ignore)`
307
+ if (process.env.NODE_ENV === 'development' && time) time`non-tamagui time (ignore)`
306
308
 
307
309
  // React inserts default props after your props for some reason...
308
310
  // order important so we do loops, you can't just spread because JS does weird things
@@ -1208,6 +1210,7 @@ export function createComponent<
1208
1210
  const runtimePressStyle = !disabled && noClass && pseudos?.pressStyle
1209
1211
  const runtimeFocusStyle = !disabled && noClass && pseudos?.focusStyle
1210
1212
  const runtimeFocusVisibleStyle = !disabled && noClass && pseudos?.focusVisibleStyle
1213
+
1211
1214
  const attachFocus = Boolean(
1212
1215
  runtimePressStyle ||
1213
1216
  runtimeFocusStyle ||
@@ -1326,11 +1329,19 @@ export function createComponent<
1326
1329
  }
1327
1330
  }
1328
1331
  : undefined,
1332
+
1329
1333
  onPress: attachPress
1330
1334
  ? (e) => {
1331
1335
  unPress()
1332
- // @ts-ignore
1333
- isWeb && onClick?.(e)
1336
+ if (process.env.GUI_TARGET === 'web') {
1337
+ // @ts-ignore
1338
+ onClick?.(e)
1339
+ // matches RN pressable behavior - only when an explicit press
1340
+ // handler is set, so pressStyle alone doesn't swallow clicks
1341
+ if (onPress || onClick) {
1342
+ e.stopPropagation()
1343
+ }
1344
+ }
1334
1345
  onPress?.(e)
1335
1346
  if (process.env.GUI_TARGET === 'web') {
1336
1347
  onLongPress?.(e)
@@ -1403,11 +1414,33 @@ export function createComponent<
1403
1414
  log(`events`, { events, attachHover, attachPress })
1404
1415
  }
1405
1416
 
1417
+ const propsWithHref = props as typeof props & { href?: unknown }
1418
+ const propsInWithHref = propsIn as typeof propsIn & { href?: unknown }
1419
+
1420
+ const pressDebugDetail =
1421
+ props.testID ??
1422
+ propsIn.testID ??
1423
+ props.accessibilityLabel ??
1424
+ propsIn.accessibilityLabel ??
1425
+ (typeof propsWithHref.href === 'string' ? propsWithHref.href : null) ??
1426
+ (typeof propsInWithHref.href === 'string' ? propsInWithHref.href : null)
1427
+
1428
+ const pressDebugName =
1429
+ [componentName, pressDebugDetail].filter(Boolean).join(':') || null
1430
+
1406
1431
  // EVENTS native - handles focus/blur, input special cases, and RNGH press handling
1407
1432
  // Skip gesture setup for HOC components - they may return null which crashes GestureDetector
1408
1433
  const pressGesture =
1409
1434
  process.env.GUI_TARGET === 'native'
1410
- ? useEvents(events, viewProps, stateRef, staticConfig, isHOC, isInsideNativeMenu)
1435
+ ? useEvents(
1436
+ events,
1437
+ viewProps,
1438
+ stateRef,
1439
+ staticConfig,
1440
+ isHOC,
1441
+ isInsideNativeMenu,
1442
+ pressDebugName
1443
+ )
1411
1444
  : null
1412
1445
 
1413
1446
  if (process.env.NODE_ENV === 'development' && time) time`hooks`
@@ -1702,7 +1735,13 @@ export function createComponent<
1702
1735
  component.displayName = staticConfig.componentName
1703
1736
  }
1704
1737
 
1705
- type ComponentType = GuiComponent<ComponentPropTypes, Ref, BaseProps, BaseStyles, {}>
1738
+ type ComponentType = GuiComponent<
1739
+ ComponentPropTypes,
1740
+ Ref,
1741
+ BaseProps,
1742
+ BaseStyles,
1743
+ {}
1744
+ >
1706
1745
 
1707
1746
  let res: ComponentType = component as any
1708
1747
 
@@ -1732,7 +1771,7 @@ export function createComponent<
1732
1771
 
1733
1772
  out = options?.disableTheme ? out : themeable(out, extendedConfig, true)
1734
1773
 
1735
- if (extendedConfig.memo || process.env.GUI_MEMOIZE_STYLEABLE) {
1774
+ if (extendedConfig.memo || process.env.TAMAGUI_MEMOIZE_STYLEABLE) {
1736
1775
  out = React.memo(out)
1737
1776
  }
1738
1777
 
@@ -19,7 +19,8 @@ export function useEvents(
19
19
  stateRef: { current: GuiComponentStateRef },
20
20
  staticConfig: StaticConfig,
21
21
  isHOC?: boolean,
22
- isInsideNativeMenu?: boolean
22
+ isInsideNativeMenu?: boolean,
23
+ debugName?: string | null
23
24
  ) {
24
25
  // focus/blur events always attached directly
25
26
  if (events) {
@@ -34,6 +35,9 @@ export function useEvents(
34
35
  const hasPressEvents =
35
36
  // its stable and always on if you have in/out/regular
36
37
  events?.onPress
38
+ const hasAnyPressCallbacks = Boolean(
39
+ events?.onPress || events?.onPressIn || events?.onPressOut || events?.onLongPress
40
+ )
37
41
 
38
42
  const gh = getGestureHandler()
39
43
 
@@ -137,6 +141,7 @@ export function useEvents(
137
141
  gestureRef.current = manual
138
142
  } else {
139
143
  gestureRef.current = gh.createPressGesture({
144
+ debugName,
140
145
  onPressIn: (e: any) => callbacksRef.current.onPressIn?.(e),
141
146
  onPressOut: (e: any) => callbacksRef.current.onPressOut?.(e),
142
147
  onPress: (e: any) => callbacksRef.current.onPress?.(e),
@@ -148,14 +153,21 @@ export function useEvents(
148
153
  }
149
154
  // TODO update viewProps.hitSlop / events.delayLongPress!
150
155
 
156
+ // Claim responder to block parent RN Pressable/TouchableOpacity from firing.
157
+ // RNGH handles the actual press, but we need to tell the responder system
158
+ // that we're handling this touch to prevent it bubbling to parent pressables.
159
+ if (hasPressEvents) {
160
+ viewProps.onStartShouldSetResponder = () => true
161
+ viewProps.onResponderTerminationRequest = () => false
162
+ }
163
+
151
164
  return gestureRef.current
152
165
  }
153
166
 
154
167
  return null
155
168
  }
156
169
 
157
- // fallback - direct responder system when RNGH not enabled
158
- useMainThreadPressEvents(events, viewProps, hasPressEvents)
170
+ useMainThreadPressEvents(events, viewProps, hasPressEvents, debugName)
159
171
 
160
172
  return null
161
173
  }
@@ -39,7 +39,8 @@ export function useEvents(
39
39
  _stateRef: { current: any },
40
40
  _staticConfig: any,
41
41
  _isHOC?: boolean,
42
- _isInsideNativeMenu?: boolean
42
+ _isInsideNativeMenu?: boolean,
43
+ _debugName?: string | null
43
44
  ) {
44
45
  return null
45
46
  }
@@ -25,7 +25,12 @@ interface PressRef {
25
25
  const DEFAULT_LONG_PRESS_DELAY = 500
26
26
  const DEFAULT_MIN_PRESS_DURATION = 130
27
27
 
28
- export function useMainThreadPressEvents(events: any, viewProps: any, enabled = true) {
28
+ export function useMainThreadPressEvents(
29
+ events: any,
30
+ viewProps: any,
31
+ enabled = true,
32
+ debugName?: string | null
33
+ ) {
29
34
  const ref = useRef<PressRef>(null as any)
30
35
  if (!ref.current) {
31
36
  ref.current = {
@@ -98,7 +103,6 @@ export function useMainThreadPressEvents(events: any, viewProps: any, enabled =
98
103
  }
99
104
 
100
105
  viewProps.onResponderRelease = (e: any) => {
101
- const wasActive = ref.current.state === 'active'
102
106
  const wasLongPressed = ref.current.state === 'longPressed'
103
107
  cleanup()
104
108
 
@@ -2,5 +2,6 @@
2
2
  export function useMainThreadPressEvents(
3
3
  _events: any,
4
4
  _viewProps: any,
5
- _enabled?: boolean
5
+ _enabled?: boolean,
6
+ _debugName?: string | null
6
7
  ) {}
@@ -1 +1 @@
1
- {"version":3,"file":"createComponent.d.ts","sourceRoot":"","sources":["../src/createComponent.tsx"],"names":[],"mappings":"AAKA,OAAO,KAA2C,MAAM,OAAO,CAAA;AA6B/D,OAAO,KAAK,EAQV,YAAY,EAEZ,YAAY,EACZ,iBAAiB,EACjB,UAAU,EAOX,MAAM,SAAS,CAAA;AAahB,KAAK,iBAAiB,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC,CAAA;AAEhF,eAAO,MAAM,kBAAkB,wBAA+B,CAAA;AA8J9D,wBAAgB,eAAe,CAC7B,kBAAkB,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,EACnD,GAAG,SAAS,UAAU,GAAG,UAAU,EACnC,SAAS,GAAG,KAAK,EACjB,UAAU,SAAS,MAAM,GAAG,KAAK,EACjC,YAAY,EAAE,YAAY,oEA2+C3B"}
1
+ {"version":3,"file":"createComponent.d.ts","sourceRoot":"","sources":["../src/createComponent.tsx"],"names":[],"mappings":"AAKA,OAAO,KAA2C,MAAM,OAAO,CAAA;AA6B/D,OAAO,KAAK,EAQV,YAAY,EAEZ,YAAY,EACZ,iBAAiB,EACjB,UAAU,EAOX,MAAM,SAAS,CAAA;AAahB,KAAK,iBAAiB,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC,CAAA;AAEhF,eAAO,MAAM,kBAAkB,wBAA+B,CAAA;AA8J9D,wBAAgB,eAAe,CAC7B,kBAAkB,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,EACnD,GAAG,SAAS,UAAU,GAAG,UAAU,EACnC,SAAS,GAAG,KAAK,EACjB,UAAU,SAAS,MAAM,GAAG,KAAK,EACjC,YAAY,EAAE,YAAY,oEAkhD3B"}
@@ -22,6 +22,6 @@ export declare function wrapWithGestureDetector(content: any, _gesture: any, _st
22
22
  }, _isHOC?: boolean, _isCompositeComponent?: boolean): any;
23
23
  export declare function useEvents(_events: any, _viewProps: any, _stateRef: {
24
24
  current: any;
25
- }, _staticConfig: any, _isHOC?: boolean, _isInsideNativeMenu?: boolean): null;
25
+ }, _staticConfig: any, _isHOC?: boolean, _isInsideNativeMenu?: boolean, _debugName?: string | null): null;
26
26
  export {};
27
27
  //# sourceMappingURL=eventHandling.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"eventHandling.d.ts","sourceRoot":"","sources":["../src/eventHandling.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAA;AAEzE,KAAK,SAAS,GAAG,MAAM,kBAAkB,CAAA;AACzC,KAAK,eAAe,GAAG;KAAG,GAAG,IAAI,SAAS,CAAC,CAAC,EAAE,GAAG;CAAE,CAAA;AAEnD,wBAAgB,YAAY,CAAC,CAAC,SAAS,eAAe,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,UAAO;;;;;;;;;;EAYjF;AAGD,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,GAAG,EACZ,QAAQ,EAAE,GAAG,EACb,SAAS,EAAE;IAAE,OAAO,EAAE,GAAG,CAAA;CAAE,EAC3B,MAAM,CAAC,EAAE,OAAO,EAChB,qBAAqB,CAAC,EAAE,OAAO,OAGhC;AAGD,wBAAgB,SAAS,CACvB,OAAO,EAAE,GAAG,EACZ,UAAU,EAAE,GAAG,EACf,SAAS,EAAE;IAAE,OAAO,EAAE,GAAG,CAAA;CAAE,EAC3B,aAAa,EAAE,GAAG,EAClB,MAAM,CAAC,EAAE,OAAO,EAChB,mBAAmB,CAAC,EAAE,OAAO,QAG9B"}
1
+ {"version":3,"file":"eventHandling.d.ts","sourceRoot":"","sources":["../src/eventHandling.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAA;AAEzE,KAAK,SAAS,GAAG,MAAM,kBAAkB,CAAA;AACzC,KAAK,eAAe,GAAG;KAAG,GAAG,IAAI,SAAS,CAAC,CAAC,EAAE,GAAG;CAAE,CAAA;AAEnD,wBAAgB,YAAY,CAAC,CAAC,SAAS,eAAe,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,UAAO;;;;;;;;;;EAYjF;AAGD,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,GAAG,EACZ,QAAQ,EAAE,GAAG,EACb,SAAS,EAAE;IAAE,OAAO,EAAE,GAAG,CAAA;CAAE,EAC3B,MAAM,CAAC,EAAE,OAAO,EAChB,qBAAqB,CAAC,EAAE,OAAO,OAGhC;AAGD,wBAAgB,SAAS,CACvB,OAAO,EAAE,GAAG,EACZ,UAAU,EAAE,GAAG,EACf,SAAS,EAAE;IAAE,OAAO,EAAE,GAAG,CAAA;CAAE,EAC3B,aAAa,EAAE,GAAG,EAClB,MAAM,CAAC,EAAE,OAAO,EAChB,mBAAmB,CAAC,EAAE,OAAO,EAC7B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,QAG3B"}
@@ -5,7 +5,7 @@ import type { StaticConfig, GuiComponentStateRef } from './types';
5
5
  export declare function getWebEvents(): {};
6
6
  export declare function useEvents(events: any, viewProps: any, stateRef: {
7
7
  current: GuiComponentStateRef;
8
- }, staticConfig: StaticConfig, isHOC?: boolean, isInsideNativeMenu?: boolean): any;
8
+ }, staticConfig: StaticConfig, isHOC?: boolean, isInsideNativeMenu?: boolean, debugName?: string | null): any;
9
9
  export declare function wrapWithGestureDetector(content: any, gesture: any, stateRef: {
10
10
  current: GuiComponentStateRef;
11
11
  }, isHOC?: boolean, isCompositeComponent?: boolean): any;
@@ -1 +1 @@
1
- {"version":3,"file":"eventHandling.native.d.ts","sourceRoot":"","sources":["../src/eventHandling.native.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,KAAK,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAGjE,wBAAgB,YAAY,OAE3B;AAED,wBAAgB,SAAS,CACvB,MAAM,EAAE,GAAG,EACX,SAAS,EAAE,GAAG,EACd,QAAQ,EAAE;IAAE,OAAO,EAAE,oBAAoB,CAAA;CAAE,EAC3C,YAAY,EAAE,YAAY,EAC1B,KAAK,CAAC,EAAE,OAAO,EACf,kBAAkB,CAAC,EAAE,OAAO,OA2I7B;AAED,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,GAAG,EACZ,OAAO,EAAE,GAAG,EACZ,QAAQ,EAAE;IAAE,OAAO,EAAE,oBAAoB,CAAA;CAAE,EAC3C,KAAK,CAAC,EAAE,OAAO,EACf,oBAAoB,CAAC,EAAE,OAAO,OA0B/B"}
1
+ {"version":3,"file":"eventHandling.native.d.ts","sourceRoot":"","sources":["../src/eventHandling.native.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,KAAK,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAGjE,wBAAgB,YAAY,OAE3B;AAED,wBAAgB,SAAS,CACvB,MAAM,EAAE,GAAG,EACX,SAAS,EAAE,GAAG,EACd,QAAQ,EAAE;IAAE,OAAO,EAAE,oBAAoB,CAAA;CAAE,EAC3C,YAAY,EAAE,YAAY,EAC1B,KAAK,CAAC,EAAE,OAAO,EACf,kBAAkB,CAAC,EAAE,OAAO,EAC5B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,OAsJ1B;AAED,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,GAAG,EACZ,OAAO,EAAE,GAAG,EACZ,QAAQ,EAAE;IAAE,OAAO,EAAE,oBAAoB,CAAA;CAAE,EAC3C,KAAK,CAAC,EAAE,OAAO,EACf,oBAAoB,CAAC,EAAE,OAAO,OA0B/B"}
@@ -1,2 +1,2 @@
1
- export declare function useMainThreadPressEvents(_events: any, _viewProps: any, _enabled?: boolean): void;
1
+ export declare function useMainThreadPressEvents(_events: any, _viewProps: any, _enabled?: boolean, _debugName?: string | null): void;
2
2
  //# sourceMappingURL=mainThreadPressEvents.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mainThreadPressEvents.d.ts","sourceRoot":"","sources":["../../src/helpers/mainThreadPressEvents.ts"],"names":[],"mappings":"AACA,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,GAAG,EACZ,UAAU,EAAE,GAAG,EACf,QAAQ,CAAC,EAAE,OAAO,QAChB"}
1
+ {"version":3,"file":"mainThreadPressEvents.d.ts","sourceRoot":"","sources":["../../src/helpers/mainThreadPressEvents.ts"],"names":[],"mappings":"AACA,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,GAAG,EACZ,UAAU,EAAE,GAAG,EACf,QAAQ,CAAC,EAAE,OAAO,EAClB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,QACxB"}
@@ -5,5 +5,5 @@
5
5
  * without the deep RN internal import. Supports pressIn/pressOut delays,
6
6
  * long press, cancellation, and min press duration.
7
7
  */
8
- export declare function useMainThreadPressEvents(events: any, viewProps: any, enabled?: boolean): void;
8
+ export declare function useMainThreadPressEvents(events: any, viewProps: any, enabled?: boolean, debugName?: string | null): void;
9
9
  //# sourceMappingURL=mainThreadPressEvents.native.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mainThreadPressEvents.native.d.ts","sourceRoot":"","sources":["../../src/helpers/mainThreadPressEvents.native.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAqBH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,UAAO,QAyGnF"}
1
+ {"version":3,"file":"mainThreadPressEvents.native.d.ts","sourceRoot":"","sources":["../../src/helpers/mainThreadPressEvents.native.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAqBH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,GAAG,EACX,SAAS,EAAE,GAAG,EACd,OAAO,UAAO,EACd,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,QAyG1B"}