@tamagui/web 3.0.0-beta.1551.1 → 3.0.0-beta.1562.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.
@@ -25,15 +25,21 @@ __export(eventHandling_exports, {
25
25
  wrapWithGestureDetector: () => wrapWithGestureDetector
26
26
  });
27
27
  module.exports = __toCommonJS(eventHandling_exports);
28
+ let lastTouch = -1e9;
29
+ const pressFrom = (touch, handler) => handler && ((e) => {
30
+ if (touch) lastTouch = e.timeStamp;
31
+ else if (e.timeStamp - lastTouch < 1e3) return;
32
+ handler(e);
33
+ });
28
34
  function getWebEvents(events, webStyle = true) {
29
35
  return {
30
36
  onMouseEnter: events.onMouseEnter,
31
37
  onMouseLeave: events.onMouseLeave,
32
38
  [webStyle ? "onClick" : "onPress"]: events.onPress,
33
- onMouseDown: events.onPressIn,
34
- onMouseUp: events.onPressOut,
35
- onTouchStart: events.onPressIn,
36
- onTouchEnd: events.onPressOut,
39
+ onMouseDown: pressFrom(false, events.onPressIn),
40
+ onMouseUp: pressFrom(false, events.onPressOut),
41
+ onTouchStart: pressFrom(true, events.onPressIn),
42
+ onTouchEnd: pressFrom(true, events.onPressOut),
37
43
  onFocus: events.onFocus,
38
44
  onBlur: events.onBlur
39
45
  };
@@ -1,12 +1,18 @@
1
+ let lastTouch = -1e9;
2
+ const pressFrom = (touch, handler) => handler && ((e) => {
3
+ if (touch) lastTouch = e.timeStamp;
4
+ else if (e.timeStamp - lastTouch < 1e3) return;
5
+ handler(e);
6
+ });
1
7
  function getWebEvents(events, webStyle = true) {
2
8
  return {
3
9
  onMouseEnter: events.onMouseEnter,
4
10
  onMouseLeave: events.onMouseLeave,
5
11
  [webStyle ? "onClick" : "onPress"]: events.onPress,
6
- onMouseDown: events.onPressIn,
7
- onMouseUp: events.onPressOut,
8
- onTouchStart: events.onPressIn,
9
- onTouchEnd: events.onPressOut,
12
+ onMouseDown: pressFrom(false, events.onPressIn),
13
+ onMouseUp: pressFrom(false, events.onPressOut),
14
+ onTouchStart: pressFrom(true, events.onPressIn),
15
+ onTouchEnd: pressFrom(true, events.onPressOut),
10
16
  onFocus: events.onFocus,
11
17
  onBlur: events.onBlur
12
18
  };
@@ -1 +1 @@
1
- {"version":3,"file":"eventHandling.js","names":[],"sources":["esm/eventHandling.js"],"sourcesContent":["function getWebEvents(events, webStyle = true) {\n return {\n onMouseEnter: events.onMouseEnter,\n onMouseLeave: events.onMouseLeave,\n [webStyle ? \"onClick\" : \"onPress\"]: events.onPress,\n onMouseDown: events.onPressIn,\n onMouseUp: events.onPressOut,\n onTouchStart: events.onPressIn,\n onTouchEnd: events.onPressOut,\n onFocus: events.onFocus,\n onBlur: events.onBlur\n };\n}\nfunction wrapWithGestureDetector(content, _gesture, _stateRef, _isHOC, _isCompositeComponent, _hasRealPressEvents) {\n return content;\n}\nfunction useEvents(_events, _viewProps, _stateRef, _staticConfig, _isHOC, _isInsideNativeMenu, _debugName, _hasRealPressEvents) {\n return null;\n}\nexport {\n getWebEvents,\n useEvents,\n wrapWithGestureDetector\n};\n//# sourceMappingURL=eventHandling.js.map\n"],"mappings":";AAAA,SAAS,aAAa,QAAQ,WAAW,MAAM;CAC7C,OAAO;EACL,cAAc,OAAO;EACrB,cAAc,OAAO;GACpB,WAAW,YAAY,YAAY,OAAO;EAC3C,aAAa,OAAO;EACpB,WAAW,OAAO;EAClB,cAAc,OAAO;EACrB,YAAY,OAAO;EACnB,SAAS,OAAO;EAChB,QAAQ,OAAO;CACjB;AACF;AACA,SAAS,wBAAwB,SAAS,UAAU,WAAW,QAAQ,uBAAuB,qBAAqB;CACjH,OAAO;AACT;AACA,SAAS,UAAU,SAAS,YAAY,WAAW,eAAe,QAAQ,qBAAqB,YAAY,qBAAqB;CAC9H,OAAO;AACT"}
1
+ {"version":3,"file":"eventHandling.js","names":[],"sources":["esm/eventHandling.js"],"sourcesContent":["let lastTouch = -1e9;\nconst pressFrom = (touch, handler) => handler && ((e) => {\n if (touch) lastTouch = e.timeStamp;\n else if (e.timeStamp - lastTouch < 1e3) return;\n handler(e);\n});\nfunction getWebEvents(events, webStyle = true) {\n return {\n onMouseEnter: events.onMouseEnter,\n onMouseLeave: events.onMouseLeave,\n [webStyle ? \"onClick\" : \"onPress\"]: events.onPress,\n onMouseDown: pressFrom(false, events.onPressIn),\n onMouseUp: pressFrom(false, events.onPressOut),\n onTouchStart: pressFrom(true, events.onPressIn),\n onTouchEnd: pressFrom(true, events.onPressOut),\n onFocus: events.onFocus,\n onBlur: events.onBlur\n };\n}\nfunction wrapWithGestureDetector(content, _gesture, _stateRef, _isHOC, _isCompositeComponent, _hasRealPressEvents) {\n return content;\n}\nfunction useEvents(_events, _viewProps, _stateRef, _staticConfig, _isHOC, _isInsideNativeMenu, _debugName, _hasRealPressEvents) {\n return null;\n}\nexport {\n getWebEvents,\n useEvents,\n wrapWithGestureDetector\n};\n//# sourceMappingURL=eventHandling.js.map\n"],"mappings":";AAAA,IAAI,YAAY,CAAC;AACjB,MAAM,aAAa,OAAO,YAAY,aAAa,MAAM;CACvD,IAAI,OAAO,YAAY,EAAE;MACpB,IAAI,EAAE,YAAY,YAAY,KAAK;CACxC,QAAQ,CAAC;AACX;AACA,SAAS,aAAa,QAAQ,WAAW,MAAM;CAC7C,OAAO;EACL,cAAc,OAAO;EACrB,cAAc,OAAO;GACpB,WAAW,YAAY,YAAY,OAAO;EAC3C,aAAa,UAAU,OAAO,OAAO,SAAS;EAC9C,WAAW,UAAU,OAAO,OAAO,UAAU;EAC7C,cAAc,UAAU,MAAM,OAAO,SAAS;EAC9C,YAAY,UAAU,MAAM,OAAO,UAAU;EAC7C,SAAS,OAAO;EAChB,QAAQ,OAAO;CACjB;AACF;AACA,SAAS,wBAAwB,SAAS,UAAU,WAAW,QAAQ,uBAAuB,qBAAqB;CACjH,OAAO;AACT;AACA,SAAS,UAAU,SAAS,YAAY,WAAW,eAAe,QAAQ,qBAAqB,YAAY,qBAAqB;CAC9H,OAAO;AACT"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tamagui/web",
3
- "version": "3.0.0-beta.1551.1",
3
+ "version": "3.0.0-beta.1562.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.1551.1",
104
- "@tamagui/compose-refs": "3.0.0-beta.1551.1",
105
- "@tamagui/constants": "3.0.0-beta.1551.1",
106
- "@tamagui/dom": "3.0.0-beta.1551.1",
107
- "@tamagui/helpers": "3.0.0-beta.1551.1",
108
- "@tamagui/is-equal-shallow": "3.0.0-beta.1551.1",
109
- "@tamagui/native": "3.0.0-beta.1551.1",
110
- "@tamagui/normalize-css-color": "3.0.0-beta.1551.1",
111
- "@tamagui/react-native-types": "3.0.0-beta.1551.1",
112
- "@tamagui/style-grammar": "3.0.0-beta.1551.1",
113
- "@tamagui/types": "3.0.0-beta.1551.1",
114
- "@tamagui/use-did-finish-ssr": "3.0.0-beta.1551.1",
115
- "@tamagui/use-event": "3.0.0-beta.1551.1",
116
- "@tamagui/use-force-update": "3.0.0-beta.1551.1"
103
+ "@tamagui/animation-helpers": "3.0.0-beta.1562.1",
104
+ "@tamagui/compose-refs": "3.0.0-beta.1562.1",
105
+ "@tamagui/constants": "3.0.0-beta.1562.1",
106
+ "@tamagui/dom": "3.0.0-beta.1562.1",
107
+ "@tamagui/helpers": "3.0.0-beta.1562.1",
108
+ "@tamagui/is-equal-shallow": "3.0.0-beta.1562.1",
109
+ "@tamagui/native": "3.0.0-beta.1562.1",
110
+ "@tamagui/normalize-css-color": "3.0.0-beta.1562.1",
111
+ "@tamagui/react-native-types": "3.0.0-beta.1562.1",
112
+ "@tamagui/style-grammar": "3.0.0-beta.1562.1",
113
+ "@tamagui/types": "3.0.0-beta.1562.1",
114
+ "@tamagui/use-did-finish-ssr": "3.0.0-beta.1562.1",
115
+ "@tamagui/use-event": "3.0.0-beta.1562.1",
116
+ "@tamagui/use-force-update": "3.0.0-beta.1562.1"
117
117
  },
118
118
  "devDependencies": {
119
- "@tamagui/build": "3.0.0-beta.1551.1",
119
+ "@tamagui/build": "3.0.0-beta.1562.1",
120
120
  "@testing-library/react": "^16.1.0",
121
121
  "csstype": "^3.0.10",
122
122
  "react": "19.2.3",
@@ -7,15 +7,30 @@ import type { TamaguiComponentEvents } from './interfaces/TamaguiComponentEvents
7
7
  type EventKeys = keyof TamaguiComponentEvents
8
8
  type EventLikeObject = { [key in EventKeys]?: any }
9
9
 
10
+ // a tap on a touch screen fires touchstart and touchend, then the browser's
11
+ // compatibility mousedown and mouseup for the same tap. press in and press out
12
+ // listen to both so a mouse presses too, so without this every press-in and
13
+ // press-out handler ran twice per tap (a toggle opened and closed again).
14
+ let lastTouch = -1e9
15
+
16
+ // a mouse event within a second of a touch is that compatibility echo
17
+ const pressFrom = (touch: boolean, handler?: (e: { timeStamp: number }) => void) =>
18
+ handler &&
19
+ ((e: { timeStamp: number }) => {
20
+ if (touch) lastTouch = e.timeStamp
21
+ else if (e.timeStamp - lastTouch < 1000) return
22
+ handler(e)
23
+ })
24
+
10
25
  export function getWebEvents<E extends EventLikeObject>(events: E, webStyle = true) {
11
26
  return {
12
27
  onMouseEnter: events.onMouseEnter,
13
28
  onMouseLeave: events.onMouseLeave,
14
29
  [webStyle ? 'onClick' : 'onPress']: events.onPress,
15
- onMouseDown: events.onPressIn,
16
- onMouseUp: events.onPressOut,
17
- onTouchStart: events.onPressIn,
18
- onTouchEnd: events.onPressOut,
30
+ onMouseDown: pressFrom(false, events.onPressIn),
31
+ onMouseUp: pressFrom(false, events.onPressOut),
32
+ onTouchStart: pressFrom(true, events.onPressIn),
33
+ onTouchEnd: pressFrom(true, events.onPressOut),
19
34
  onFocus: events.onFocus,
20
35
  onBlur: events.onBlur,
21
36
  }
@@ -10,10 +10,18 @@ export declare function getWebEvents<E extends EventLikeObject>(events: E, webSt
10
10
  [x: string]: any;
11
11
  onMouseEnter: any;
12
12
  onMouseLeave: any;
13
- onMouseDown: any;
14
- onMouseUp: any;
15
- onTouchStart: any;
16
- onTouchEnd: any;
13
+ onMouseDown: ((e: {
14
+ timeStamp: number;
15
+ }) => void) | undefined;
16
+ onMouseUp: ((e: {
17
+ timeStamp: number;
18
+ }) => void) | undefined;
19
+ onTouchStart: ((e: {
20
+ timeStamp: number;
21
+ }) => void) | undefined;
22
+ onTouchEnd: ((e: {
23
+ timeStamp: number;
24
+ }) => void) | undefined;
17
25
  onFocus: any;
18
26
  onBlur: any;
19
27
  };
@@ -1 +1 @@
1
- {"version":3,"file":"eventHandling.d.ts","sourceRoot":"","sources":["../src/eventHandling.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAA;AAEjF,KAAK,SAAS,GAAG,MAAM,sBAAsB,CAAA;AAC7C,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,EAC/B,mBAAmB,CAAC,EAAE,OAAO,OAG9B;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,EAC1B,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,sBAAsB,EAAE,MAAM,qCAAqC,CAAA;AAEjF,KAAK,SAAS,GAAG,MAAM,sBAAsB,CAAA;AAC7C,KAAK,eAAe,GAAG;KAAG,GAAG,IAAI,SAAS,CAAC,CAAC,EAAE,GAAG;CAAE,CAAA;AAiBnD,wBAAgB,YAAY,CAAC,CAAC,SAAS,eAAe,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,UAAO;;;;sBAN3E;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE;;;;;;;;;;;;EAkB3B;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,EAC/B,mBAAmB,CAAC,EAAE,OAAO,OAG9B;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,EAC1B,mBAAmB,CAAC,EAAE,OAAO,QAG9B"}