@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.
- package/.turbo/turbo-build.log +1 -1
- package/dist/cjs/createComponent.cjs +13 -4
- package/dist/cjs/createComponent.native.js +16 -6
- package/dist/cjs/createComponent.native.js.map +1 -1
- package/dist/cjs/eventHandling.cjs +1 -1
- package/dist/cjs/eventHandling.native.js +12 -2
- package/dist/cjs/eventHandling.native.js.map +1 -1
- package/dist/cjs/helpers/mainThreadPressEvents.cjs +1 -1
- package/dist/cjs/helpers/mainThreadPressEvents.native.js +2 -2
- package/dist/cjs/helpers/mainThreadPressEvents.native.js.map +1 -1
- package/dist/esm/createComponent.mjs +13 -4
- package/dist/esm/createComponent.mjs.map +1 -1
- package/dist/esm/createComponent.native.js +16 -6
- package/dist/esm/createComponent.native.js.map +1 -1
- package/dist/esm/eventHandling.mjs +1 -1
- package/dist/esm/eventHandling.mjs.map +1 -1
- package/dist/esm/eventHandling.native.js +12 -2
- package/dist/esm/eventHandling.native.js.map +1 -1
- package/dist/esm/helpers/mainThreadPressEvents.mjs +1 -1
- package/dist/esm/helpers/mainThreadPressEvents.mjs.map +1 -1
- package/dist/esm/helpers/mainThreadPressEvents.native.js +2 -2
- package/dist/esm/helpers/mainThreadPressEvents.native.js.map +1 -1
- package/package.json +14 -14
- package/src/createComponent.tsx +46 -7
- package/src/eventHandling.native.ts +15 -3
- package/src/eventHandling.ts +2 -1
- package/src/helpers/mainThreadPressEvents.native.ts +6 -2
- package/src/helpers/mainThreadPressEvents.ts +2 -1
- package/types/createComponent.d.ts.map +1 -1
- package/types/eventHandling.d.ts +1 -1
- package/types/eventHandling.d.ts.map +1 -1
- package/types/eventHandling.native.d.ts +1 -1
- package/types/eventHandling.native.d.ts.map +1 -1
- package/types/helpers/mainThreadPressEvents.d.ts +1 -1
- package/types/helpers/mainThreadPressEvents.d.ts.map +1 -1
- package/types/helpers/mainThreadPressEvents.native.d.ts +1 -1
- package/types/helpers/mainThreadPressEvents.native.d.ts.map +1 -1
|
@@ -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","
|
|
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": "
|
|
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": "
|
|
55
|
-
"@hanzogui/constants": "
|
|
56
|
-
"@hanzogui/helpers": "
|
|
57
|
-
"@hanzogui/is-equal-shallow": "
|
|
58
|
-
"@hanzogui/native": "
|
|
59
|
-
"@hanzogui/normalize-css-color": "
|
|
60
|
-
"@hanzogui/timer": "
|
|
61
|
-
"@hanzogui/types": "
|
|
62
|
-
"@hanzogui/use-did-finish-ssr": "
|
|
63
|
-
"@hanzogui/use-event": "
|
|
64
|
-
"@hanzogui/use-force-update": "
|
|
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": "
|
|
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
|
+
}
|
package/src/createComponent.tsx
CHANGED
|
@@ -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'
|
|
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-
|
|
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
|
-
|
|
1333
|
-
|
|
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(
|
|
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<
|
|
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.
|
|
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
|
-
|
|
158
|
-
useMainThreadPressEvents(events, viewProps, hasPressEvents)
|
|
170
|
+
useMainThreadPressEvents(events, viewProps, hasPressEvents, debugName)
|
|
159
171
|
|
|
160
172
|
return null
|
|
161
173
|
}
|
package/src/eventHandling.ts
CHANGED
|
@@ -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(
|
|
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
|
|
|
@@ -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,
|
|
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"}
|
package/types/eventHandling.d.ts
CHANGED
|
@@ -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,
|
|
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,
|
|
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,
|
|
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,
|
|
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"}
|