@tamagui/element 2.7.7 → 3.0.0-beta.637.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.
Files changed (49) hide show
  1. package/dist/cjs/getWebElement.cjs +22 -25
  2. package/dist/cjs/getWebElement.native.cjs +42 -0
  3. package/dist/cjs/getWebElement.native.js +27 -29
  4. package/dist/cjs/getWebElement.native.js.map +1 -1
  5. package/dist/cjs/index.cjs +10 -11
  6. package/dist/cjs/index.native.cjs +36 -0
  7. package/dist/cjs/index.native.js +17 -17
  8. package/dist/cjs/index.native.js.map +1 -1
  9. package/dist/cjs/types.cjs +10 -11
  10. package/dist/cjs/types.native.cjs +19 -0
  11. package/dist/cjs/types.native.js +10 -10
  12. package/dist/cjs/types.native.js.map +1 -1
  13. package/dist/cjs/useNativeRef.cjs +31 -37
  14. package/dist/cjs/useNativeRef.native.cjs +53 -0
  15. package/dist/cjs/useNativeRef.native.js +31 -36
  16. package/dist/cjs/useNativeRef.native.js.map +1 -1
  17. package/dist/cjs/useWebRef.cjs +24 -32
  18. package/dist/cjs/useWebRef.native.cjs +42 -0
  19. package/dist/cjs/useWebRef.native.js +24 -31
  20. package/dist/cjs/useWebRef.native.js.map +1 -1
  21. package/dist/esm/getWebElement.mjs +8 -7
  22. package/dist/esm/getWebElement.mjs.map +1 -1
  23. package/dist/esm/getWebElement.native.js +13 -12
  24. package/dist/esm/getWebElement.native.js.map +1 -1
  25. package/dist/esm/index.js +7 -5
  26. package/dist/esm/index.mjs +7 -5
  27. package/dist/esm/index.native.js +7 -3
  28. package/dist/esm/index.native.js.map +1 -1
  29. package/dist/esm/types.mjs +0 -2
  30. package/dist/esm/types.native.js +0 -2
  31. package/dist/esm/useNativeRef.mjs +14 -12
  32. package/dist/esm/useNativeRef.mjs.map +1 -1
  33. package/dist/esm/useNativeRef.native.js +14 -12
  34. package/dist/esm/useNativeRef.native.js.map +1 -1
  35. package/dist/esm/useWebRef.mjs +8 -6
  36. package/dist/esm/useWebRef.mjs.map +1 -1
  37. package/dist/esm/useWebRef.native.js +8 -6
  38. package/dist/esm/useWebRef.native.js.map +1 -1
  39. package/package.json +8 -8
  40. package/types/getWebElement.d.ts +13 -0
  41. package/types/index.d.ts +5 -0
  42. package/types/index.native.d.ts +5 -0
  43. package/types/types.d.ts +29 -0
  44. package/types/useNativeRef.d.ts +31 -0
  45. package/types/useWebRef.d.ts +19 -0
  46. package/dist/esm/index.js.map +0 -1
  47. package/dist/esm/index.mjs.map +0 -1
  48. package/dist/esm/types.mjs.map +0 -1
  49. package/dist/esm/types.native.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tamagui/element",
3
- "version": "2.7.7",
3
+ "version": "3.0.0-beta.637.1",
4
4
  "files": [
5
5
  "src",
6
6
  "types",
@@ -10,15 +10,15 @@
10
10
  "sideEffects": false,
11
11
  "main": "dist/cjs",
12
12
  "module": "dist/esm",
13
- "types": "./src",
13
+ "types": "./types/index.d.ts",
14
14
  "exports": {
15
15
  "./package.json": "./package.json",
16
16
  ".": {
17
17
  "react-native": {
18
- "types": "./src/index.native.ts",
18
+ "types": "./types/index.native.d.ts",
19
19
  "default": "./dist/esm/index.native.js"
20
20
  },
21
- "types": "./src/index.ts",
21
+ "types": "./types/index.d.ts",
22
22
  "browser": "./dist/esm/index.mjs",
23
23
  "module": "./dist/esm/index.mjs",
24
24
  "import": "./dist/esm/index.mjs",
@@ -30,16 +30,16 @@
30
30
  "access": "public"
31
31
  },
32
32
  "scripts": {
33
- "build": "tamagui-build --skip-types",
34
- "watch": "tamagui-build --skip-types --watch",
33
+ "build": "tamagui-build",
34
+ "watch": "tamagui-build --watch",
35
35
  "clean": "tamagui-build clean",
36
36
  "clean:build": "tamagui-build clean:build"
37
37
  },
38
38
  "dependencies": {
39
- "@tamagui/compose-refs": "2.7.7"
39
+ "@tamagui/compose-refs": "3.0.0-beta.637.1"
40
40
  },
41
41
  "devDependencies": {
42
- "@tamagui/build": "2.7.7"
42
+ "@tamagui/build": "3.0.0-beta.637.1"
43
43
  },
44
44
  "peerDependencies": {
45
45
  "react": "*"
@@ -0,0 +1,13 @@
1
+ import type { TamaguiElement } from './types';
2
+ /**
3
+ * Narrows a TamaguiElement to an HTMLElement, with optional generic for further casting.
4
+ * Throws if the element is not an instanceof HTMLElement.
5
+ *
6
+ * @example
7
+ * ```tsx
8
+ * const el = getWebElement(ref.current) // HTMLElement
9
+ * const input = getWebElement<HTMLInputElement>(ref.current) // HTMLInputElement
10
+ * ```
11
+ */
12
+ export declare function getWebElement<T extends HTMLElement = HTMLElement>(element: TamaguiElement | null | undefined): T;
13
+ //# sourceMappingURL=getWebElement.d.ts.map
@@ -0,0 +1,5 @@
1
+ export * from './useWebRef';
2
+ export * from './useNativeRef';
3
+ export * from './getWebElement';
4
+ export * from './types';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,5 @@
1
+ export * from './useNativeRef';
2
+ export * from './types';
3
+ export { useNativeRef as useWebRef } from './useNativeRef';
4
+ export declare function getWebElement(): never;
5
+ //# sourceMappingURL=index.native.d.ts.map
@@ -0,0 +1,29 @@
1
+ import type { View } from 'react-native';
2
+ type MeasureOnSuccessCallback = (x: number, y: number, width: number, height: number, pageX: number, pageY: number) => void;
3
+ type MeasureInWindowOnSuccessCallback = (x: number, y: number, width: number, height: number) => void;
4
+ type MeasureLayoutOnSuccessCallback = (left: number, top: number, width: number, height: number) => void;
5
+ /**
6
+ * Methods added to element refs that work across web and native.
7
+ * On web these are added at runtime to HTMLElements.
8
+ * On native these exist on View already.
9
+ */
10
+ export interface TamaguiElementMethods {
11
+ measure(callback: MeasureOnSuccessCallback): void;
12
+ measureInWindow(callback: MeasureInWindowOnSuccessCallback): void;
13
+ measureLayout(relativeToNativeNode: View | HTMLElement, onSuccess: MeasureLayoutOnSuccessCallback, onFail?: () => void): void;
14
+ focus(): void;
15
+ blur(): void;
16
+ }
17
+ export type TamaguiElement = (HTMLElement & TamaguiElementMethods) | View;
18
+ /**
19
+ * Web-specific element type that extends HTMLElement with Tamagui methods.
20
+ * Use this when you need an HTMLElement ref in web-only code.
21
+ */
22
+ export type TamaguiWebElement<T extends HTMLElement = HTMLElement> = T & TamaguiElementMethods;
23
+ /**
24
+ * Native-specific element type (View).
25
+ * Use this when you need a View ref in native-only code.
26
+ */
27
+ export type TamaguiNativeElement = View;
28
+ export {};
29
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1,31 @@
1
+ import * as React from 'react';
2
+ import type { TextInput } from 'react-native';
3
+ /**
4
+ * Creates a ref for native-only code that properly types to View.
5
+ * Returns both ref and composedRef for component usage.
6
+ *
7
+ * @example
8
+ * ```tsx
9
+ * const { ref, composedRef } = useNativeRef(forwardedRef)
10
+ * // ref.current is typed as View
11
+ * ```
12
+ */
13
+ export declare function useNativeRef(forwardedRef?: React.ForwardedRef<any>): {
14
+ ref: React.RefObject<import("react-native").View | null>;
15
+ composedRef: (node: import("react-native").View | null) => void;
16
+ };
17
+ /**
18
+ * Creates a ref for native TextInput components.
19
+ * Returns both ref and composedRef for component usage.
20
+ *
21
+ * @example
22
+ * ```tsx
23
+ * const { ref, composedRef } = useNativeInputRef(forwardedRef)
24
+ * // ref.current is typed as TextInput
25
+ * ```
26
+ */
27
+ export declare function useNativeInputRef(forwardedRef?: React.ForwardedRef<any>): {
28
+ ref: React.RefObject<TextInput | null>;
29
+ composedRef: (node: TextInput | null) => void;
30
+ };
31
+ //# sourceMappingURL=useNativeRef.d.ts.map
@@ -0,0 +1,19 @@
1
+ import * as React from 'react';
2
+ import type { TamaguiElement } from './types';
3
+ /**
4
+ * Creates a ref for web-only code that properly types to HTMLElement.
5
+ * Useful when you need to access HTMLElement-specific properties (like selectionStart)
6
+ * that aren't available on the cross-platform TamaguiElement type.
7
+ *
8
+ * @example
9
+ * ```tsx
10
+ * const { ref, composedRef } = useWebRef<HTMLInputElement>(forwardedRef)
11
+ * // ref.current is typed as HTMLInputElement
12
+ * // composedRef is for passing to components
13
+ * ```
14
+ */
15
+ export declare function useWebRef<T extends TamaguiElement | HTMLElement>(forwardedRef?: React.ForwardedRef<any>): {
16
+ ref: React.RefObject<T | null>;
17
+ composedRef: (node: T | null) => void;
18
+ };
19
+ //# sourceMappingURL=useWebRef.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"names":[],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":[],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":[],"sources":[],"sourcesContent":[],"mappings":"","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":[],"sources":[],"sourcesContent":[],"mappings":"","ignoreList":[]}