@tamagui/focusable 1.88.13 → 1.88.14

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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2020 Nate Wienert
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/focusableInputHOC.tsx"],
4
- "mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAA4B,kCAC5B,aAA2C,yBAC3C,eAAsD,kBAEtD,2BAAkC,gCA6EvB;AApEJ,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AACF,GAIG;AACD,QAAM,EAAE,IAAI,cAAc,OAAO,aAAa,IAAI,OAC5C,iBAAa,qBAAO,SAAS,gBAAgB,EAAE,GAC/C,0BAAsB,qBAA+B,GAErD,eAAW;AAAA,IACf,CAAC,UAAU;AACT,MAAK,MACA,UACL,oBAAoB,UAAU,GAC9B,oBAAoB,cAAU,4CAAkB,IAAI;AAAA,QAClD,OAAO,MAAM;AAAA,QAEb,GAAI,WAAW;AAAA;AAAA,UAEb,iBAAiB;AACf,kBAAM,MAAM,GACR,MAAM,gBAAgB,OAAO,WAAW,WAAY,YACtD,MAAM,aAAa,GAAG,WAAW,QAAQ,MAAM;AAAA,UAEnD;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IACA,CAAC,SAAS,EAAE;AAAA,EACd,GAEM,mBAAe,iCAAY,KAAK,QAAQ;AAE9C,qCAAU,MACD,MAAM;AACX,wBAAoB,UAAU;AAAA,EAChC,GACC,CAAC,CAAC,GAEE;AAAA,IACL,KAAK;AAAA,IACL,kBAAc,qBAAS,CAACA,WAAU;AAChC,iBAAW,UAAUA,QACrB,eAAeA,MAAK;AAAA,IACtB,CAAC;AAAA,EACH;AACF;AAEO,SAAS,kBAA8C,WAAiB;AAC7E,SAAO,UAAU,UAAU,CAAC,OAAuB,QAAQ;AACzD,UAAM,UAAU,UAAU,cAAc,SAClC,EAAE,KAAK,aAAa,aAAa,IAAI,aAAa;AAAA,MACtD;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC,GACK,aAAa,UACf;AAAA,MACE,GAAG;AAAA,MACH;AAAA,IACF,IACA;AAGJ,WAAO,4CAAC,aAAU,KAAK,aAAc,GAAG,YAAY;AAAA,EACtD,CAAC;AACH;",
4
+ "mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAA4B,kCAE5B,aAAyB,yBACzB,eAAsD,kBAEtD,2BAAkC,gCA6EvB;AApEJ,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AACF,GAIG;AACD,QAAM,EAAE,IAAI,cAAc,OAAO,aAAa,IAAI,OAC5C,iBAAa,qBAAO,SAAS,gBAAgB,EAAE,GAC/C,0BAAsB,qBAA+B,GAErD,eAAW;AAAA,IACf,CAAC,UAAU;AACT,MAAK,MACA,UACL,oBAAoB,UAAU,GAC9B,oBAAoB,cAAU,4CAAkB,IAAI;AAAA,QAClD,OAAO,MAAM;AAAA,QAEb,GAAI,WAAW;AAAA;AAAA,UAEb,iBAAiB;AACf,kBAAM,MAAM,GACR,MAAM,gBAAgB,OAAO,WAAW,WAAY,YACtD,MAAM,aAAa,GAAG,WAAW,QAAQ,MAAM;AAAA,UAEnD;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IACA,CAAC,SAAS,EAAE;AAAA,EACd,GAEM,mBAAe,iCAAY,KAAK,QAAQ;AAE9C,qCAAU,MACD,MAAM;AACX,wBAAoB,UAAU;AAAA,EAChC,GACC,CAAC,CAAC,GAEE;AAAA,IACL,KAAK;AAAA,IACL,kBAAc,qBAAS,CAACA,WAAU;AAChC,iBAAW,UAAUA,QACrB,eAAeA,MAAK;AAAA,IACtB,CAAC;AAAA,EACH;AACF;AAEO,SAAS,kBAA8C,WAAiB;AAC7E,SAAO,UAAU,UAAU,CAAC,OAAuB,QAAQ;AACzD,UAAM,UAAU,UAAU,cAAc,SAClC,EAAE,KAAK,aAAa,aAAa,IAAI,aAAa;AAAA,MACtD;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC,GACK,aAAa,UACf;AAAA,MACE,GAAG;AAAA,MACH;AAAA,IACF,IACA;AAGJ,WAAO,4CAAC,aAAU,KAAK,aAAc,GAAG,YAAY;AAAA,EACtD,CAAC;AACH;",
5
5
  "names": ["value"]
6
6
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/focusableInputHOC.tsx"],
4
- "mappings": ";;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAA4B,kCAC5B,aAA2C,yBAC3C,eAAsD,kBAEtD,2BAAkC,gCA6EvB;AApEJ,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AACF,GAIG;AACD,QAAM,EAAE,IAAI,cAAc,OAAO,aAAa,IAAI,OAC5C,iBAAa,qBAAO,SAAS,gBAAgB,EAAE,GAC/C,0BAAsB,qBAA+B,GAErD,eAAW;AAAA,IACf,CAAC,UAAU;AA3Bf;AA4BM,MAAK,MACA,WACL,yBAAoB,YAApB,sCACA,oBAAoB,cAAU,4CAAkB,IAAI;AAAA,QAClD,OAAO,MAAM;AAAA,QAEb,GAAI,WAAW;AAAA;AAAA,UAEb,iBAAiB;AACf,kBAAM,MAAM,GACR,MAAM,gBAAgB,OAAO,WAAW,WAAY,YACtD,MAAM,aAAa,GAAG,WAAW,QAAQ,MAAM;AAAA,UAEnD;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IACA,CAAC,SAAS,EAAE;AAAA,EACd,GAEM,mBAAe,iCAAY,KAAK,QAAQ;AAE9C,qCAAU,MACD,MAAM;AAnDjB;AAoDM,8BAAoB,YAApB;AAAA,EACF,GACC,CAAC,CAAC,GAEE;AAAA,IACL,KAAK;AAAA,IACL,kBAAc,qBAAS,CAACA,WAAU;AAChC,iBAAW,UAAUA,QACrB,qCAAeA;AAAA,IACjB,CAAC;AAAA,EACH;AACF;AAEO,SAAS,kBAA8C,WAAiB;AAC7E,SAAO,UAAU,UAAU,CAAC,OAAuB,QAAQ;AAlE7D;AAmEI,UAAM,WAAU,eAAU,iBAAV,mBAAwB,SAClC,EAAE,KAAK,aAAa,aAAa,IAAI,aAAa;AAAA,MACtD;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC,GACK,aAAa,UACf;AAAA,MACE,GAAG;AAAA,MACH;AAAA,IACF,IACA;AAGJ,WAAO,4CAAC,aAAU,KAAK,aAAc,GAAG,YAAY;AAAA,EACtD,CAAC;AACH;",
4
+ "mappings": ";;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAA4B,kCAE5B,aAAyB,yBACzB,eAAsD,kBAEtD,2BAAkC,gCA6EvB;AApEJ,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AACF,GAIG;AACD,QAAM,EAAE,IAAI,cAAc,OAAO,aAAa,IAAI,OAC5C,iBAAa,qBAAO,SAAS,gBAAgB,EAAE,GAC/C,0BAAsB,qBAA+B,GAErD,eAAW;AAAA,IACf,CAAC,UAAU;AA5Bf;AA6BM,MAAK,MACA,WACL,yBAAoB,YAApB,sCACA,oBAAoB,cAAU,4CAAkB,IAAI;AAAA,QAClD,OAAO,MAAM;AAAA,QAEb,GAAI,WAAW;AAAA;AAAA,UAEb,iBAAiB;AACf,kBAAM,MAAM,GACR,MAAM,gBAAgB,OAAO,WAAW,WAAY,YACtD,MAAM,aAAa,GAAG,WAAW,QAAQ,MAAM;AAAA,UAEnD;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IACA,CAAC,SAAS,EAAE;AAAA,EACd,GAEM,mBAAe,iCAAY,KAAK,QAAQ;AAE9C,qCAAU,MACD,MAAM;AApDjB;AAqDM,8BAAoB,YAApB;AAAA,EACF,GACC,CAAC,CAAC,GAEE;AAAA,IACL,KAAK;AAAA,IACL,kBAAc,qBAAS,CAACA,WAAU;AAChC,iBAAW,UAAUA,QACrB,qCAAeA;AAAA,IACjB,CAAC;AAAA,EACH;AACF;AAEO,SAAS,kBAA8C,WAAiB;AAC7E,SAAO,UAAU,UAAU,CAAC,OAAuB,QAAQ;AAnE7D;AAoEI,UAAM,WAAU,eAAU,iBAAV,mBAAwB,SAClC,EAAE,KAAK,aAAa,aAAa,IAAI,aAAa;AAAA,MACtD;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC,GACK,aAAa,UACf;AAAA,MACE,GAAG;AAAA,MACH;AAAA,IACF,IACA;AAGJ,WAAO,4CAAC,aAAU,KAAK,aAAc,GAAG,YAAY;AAAA,EACtD,CAAC;AACH;",
5
5
  "names": ["value"]
6
6
  }
File without changes
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/focusableInputHOC.tsx"],
4
- "mappings": "AAAA,SAAS,mBAAmB;AAC5B,SAA2B,gBAAgB;AAC3C,SAAgB,aAAa,WAAW,cAAc;AAEtD,SAAS,yBAAyB;AA6EvB;AApEJ,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AACF,GAIG;AACD,QAAM,EAAE,IAAI,cAAc,OAAO,aAAa,IAAI,OAC5C,aAAa,OAAO,SAAS,gBAAgB,EAAE,GAC/C,sBAAsB,OAA+B,GAErD,WAAW;AAAA,IACf,CAAC,UAAU;AACT,MAAK,MACA,UACL,oBAAoB,UAAU,GAC9B,oBAAoB,UAAU,kBAAkB,IAAI;AAAA,QAClD,OAAO,MAAM;AAAA,QAEb,GAAI,WAAW;AAAA;AAAA,UAEb,iBAAiB;AACf,kBAAM,MAAM,GACR,MAAM,gBAAgB,OAAO,WAAW,WAAY,YACtD,MAAM,aAAa,GAAG,WAAW,QAAQ,MAAM;AAAA,UAEnD;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IACA,CAAC,SAAS,EAAE;AAAA,EACd,GAEM,eAAe,YAAY,KAAK,QAAQ;AAE9C,mBAAU,MACD,MAAM;AACX,wBAAoB,UAAU;AAAA,EAChC,GACC,CAAC,CAAC,GAEE;AAAA,IACL,KAAK;AAAA,IACL,cAAc,SAAS,CAACA,WAAU;AAChC,iBAAW,UAAUA,QACrB,eAAeA,MAAK;AAAA,IACtB,CAAC;AAAA,EACH;AACF;AAEO,SAAS,kBAA8C,WAAiB;AAC7E,SAAO,UAAU,UAAU,CAAC,OAAuB,QAAQ;AACzD,UAAM,UAAU,UAAU,cAAc,SAClC,EAAE,KAAK,aAAa,aAAa,IAAI,aAAa;AAAA,MACtD;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC,GACK,aAAa,UACf;AAAA,MACE,GAAG;AAAA,MACH;AAAA,IACF,IACA;AAGJ,WAAO,oBAAC,aAAU,KAAK,aAAc,GAAG,YAAY;AAAA,EACtD,CAAC;AACH;",
4
+ "mappings": "AAAA,SAAS,mBAAmB;AAE5B,SAAS,gBAAgB;AACzB,SAAgB,aAAa,WAAW,cAAc;AAEtD,SAAS,yBAAyB;AA6EvB;AApEJ,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AACF,GAIG;AACD,QAAM,EAAE,IAAI,cAAc,OAAO,aAAa,IAAI,OAC5C,aAAa,OAAO,SAAS,gBAAgB,EAAE,GAC/C,sBAAsB,OAA+B,GAErD,WAAW;AAAA,IACf,CAAC,UAAU;AACT,MAAK,MACA,UACL,oBAAoB,UAAU,GAC9B,oBAAoB,UAAU,kBAAkB,IAAI;AAAA,QAClD,OAAO,MAAM;AAAA,QAEb,GAAI,WAAW;AAAA;AAAA,UAEb,iBAAiB;AACf,kBAAM,MAAM,GACR,MAAM,gBAAgB,OAAO,WAAW,WAAY,YACtD,MAAM,aAAa,GAAG,WAAW,QAAQ,MAAM;AAAA,UAEnD;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IACA,CAAC,SAAS,EAAE;AAAA,EACd,GAEM,eAAe,YAAY,KAAK,QAAQ;AAE9C,mBAAU,MACD,MAAM;AACX,wBAAoB,UAAU;AAAA,EAChC,GACC,CAAC,CAAC,GAEE;AAAA,IACL,KAAK;AAAA,IACL,cAAc,SAAS,CAACA,WAAU;AAChC,iBAAW,UAAUA,QACrB,eAAeA,MAAK;AAAA,IACtB,CAAC;AAAA,EACH;AACF;AAEO,SAAS,kBAA8C,WAAiB;AAC7E,SAAO,UAAU,UAAU,CAAC,OAAuB,QAAQ;AACzD,UAAM,UAAU,UAAU,cAAc,SAClC,EAAE,KAAK,aAAa,aAAa,IAAI,aAAa;AAAA,MACtD;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC,GACK,aAAa,UACf;AAAA,MACE,GAAG;AAAA,MACH;AAAA,IACF,IACA;AAGJ,WAAO,oBAAC,aAAU,KAAK,aAAc,GAAG,YAAY;AAAA,EACtD,CAAC;AACH;",
5
5
  "names": ["value"]
6
6
  }
@@ -0,0 +1,61 @@
1
+ import { composeRefs } from "@tamagui/compose-refs";
2
+ import { useEvent } from "@tamagui/web";
3
+ import { useCallback, useEffect, useRef } from "react";
4
+ import { registerFocusable } from "./registerFocusable.mjs";
5
+ import { jsx } from "react/jsx-runtime";
6
+ function useFocusable({
7
+ isInput,
8
+ props,
9
+ ref
10
+ }) {
11
+ const {
12
+ id,
13
+ onChangeText,
14
+ value,
15
+ defaultValue
16
+ } = props,
17
+ inputValue = useRef(value || defaultValue || ""),
18
+ unregisterFocusable = useRef(),
19
+ inputRef = useCallback(input => {
20
+ id && input && (unregisterFocusable.current?.(), unregisterFocusable.current = registerFocusable(id, {
21
+ focus: input.focus,
22
+ ...(isInput && {
23
+ // react-native doesn't support programmatic .select()
24
+ focusAndSelect() {
25
+ input.focus(), input.setSelection && typeof inputValue.current == "string" && input.setSelection(0, inputValue.current.length);
26
+ }
27
+ })
28
+ }));
29
+ }, [isInput, id]),
30
+ combinedRefs = composeRefs(ref, inputRef);
31
+ return useEffect(() => () => {
32
+ unregisterFocusable.current?.();
33
+ }, []), {
34
+ ref: combinedRefs,
35
+ onChangeText: useEvent(value2 => {
36
+ inputValue.current = value2, onChangeText?.(value2);
37
+ })
38
+ };
39
+ }
40
+ function focusableInputHOC(Component) {
41
+ return Component.styleable((props, ref) => {
42
+ const isInput = Component.staticConfig?.isInput,
43
+ {
44
+ ref: combinedRef,
45
+ onChangeText
46
+ } = useFocusable({
47
+ ref,
48
+ props,
49
+ isInput
50
+ }),
51
+ finalProps = isInput ? {
52
+ ...props,
53
+ onChangeText
54
+ } : props;
55
+ return /* @__PURE__ */jsx(Component, {
56
+ ref: combinedRef,
57
+ ...finalProps
58
+ });
59
+ });
60
+ }
61
+ export { focusableInputHOC, useFocusable };
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/focusableInputHOC.tsx"],
4
- "mappings": ";;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAA4B,kCAC5B,aAA2C,yBAC3C,eAAsD,kBAEtD,2BAAkC,gCA6EvB;AApEJ,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AACF,GAIG;AACD,QAAM,EAAE,IAAI,cAAc,OAAO,aAAa,IAAI,OAC5C,iBAAa,qBAAO,SAAS,gBAAgB,EAAE,GAC/C,0BAAsB,qBAA+B,GAErD,eAAW;AAAA,IACf,CAAC,UAAU;AA3Bf;AA4BM,MAAK,MACA,WACL,yBAAoB,YAApB,sCACA,oBAAoB,cAAU,4CAAkB,IAAI;AAAA,QAClD,OAAO,MAAM;AAAA,QAEb,GAAI,WAAW;AAAA;AAAA,UAEb,iBAAiB;AACf,kBAAM,MAAM,GACR,MAAM,gBAAgB,OAAO,WAAW,WAAY,YACtD,MAAM,aAAa,GAAG,WAAW,QAAQ,MAAM;AAAA,UAEnD;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IACA,CAAC,SAAS,EAAE;AAAA,EACd,GAEM,mBAAe,iCAAY,KAAK,QAAQ;AAE9C,qCAAU,MACD,MAAM;AAnDjB;AAoDM,8BAAoB,YAApB;AAAA,EACF,GACC,CAAC,CAAC,GAEE;AAAA,IACL,KAAK;AAAA,IACL,kBAAc,qBAAS,CAACA,WAAU;AAChC,iBAAW,UAAUA,QACrB,qCAAeA;AAAA,IACjB,CAAC;AAAA,EACH;AACF;AAEO,SAAS,kBAA8C,WAAiB;AAC7E,SAAO,UAAU,UAAU,CAAC,OAAuB,QAAQ;AAlE7D;AAmEI,UAAM,WAAU,eAAU,iBAAV,mBAAwB,SAClC,EAAE,KAAK,aAAa,aAAa,IAAI,aAAa;AAAA,MACtD;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC,GACK,aAAa,UACf;AAAA,MACE,GAAG;AAAA,MACH;AAAA,IACF,IACA;AAGJ,WAAO,4CAAC,aAAU,KAAK,aAAc,GAAG,YAAY;AAAA,EACtD,CAAC;AACH;",
4
+ "mappings": ";;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAA4B,kCAE5B,aAAyB,yBACzB,eAAsD,kBAEtD,2BAAkC,gCA6EvB;AApEJ,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AACF,GAIG;AACD,QAAM,EAAE,IAAI,cAAc,OAAO,aAAa,IAAI,OAC5C,iBAAa,qBAAO,SAAS,gBAAgB,EAAE,GAC/C,0BAAsB,qBAA+B,GAErD,eAAW;AAAA,IACf,CAAC,UAAU;AA5Bf;AA6BM,MAAK,MACA,WACL,yBAAoB,YAApB,sCACA,oBAAoB,cAAU,4CAAkB,IAAI;AAAA,QAClD,OAAO,MAAM;AAAA,QAEb,GAAI,WAAW;AAAA;AAAA,UAEb,iBAAiB;AACf,kBAAM,MAAM,GACR,MAAM,gBAAgB,OAAO,WAAW,WAAY,YACtD,MAAM,aAAa,GAAG,WAAW,QAAQ,MAAM;AAAA,UAEnD;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IACA,CAAC,SAAS,EAAE;AAAA,EACd,GAEM,mBAAe,iCAAY,KAAK,QAAQ;AAE9C,qCAAU,MACD,MAAM;AApDjB;AAqDM,8BAAoB,YAApB;AAAA,EACF,GACC,CAAC,CAAC,GAEE;AAAA,IACL,KAAK;AAAA,IACL,kBAAc,qBAAS,CAACA,WAAU;AAChC,iBAAW,UAAUA,QACrB,qCAAeA;AAAA,IACjB,CAAC;AAAA,EACH;AACF;AAEO,SAAS,kBAA8C,WAAiB;AAC7E,SAAO,UAAU,UAAU,CAAC,OAAuB,QAAQ;AAnE7D;AAoEI,UAAM,WAAU,eAAU,iBAAV,mBAAwB,SAClC,EAAE,KAAK,aAAa,aAAa,IAAI,aAAa;AAAA,MACtD;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC,GACK,aAAa,UACf;AAAA,MACE,GAAG;AAAA,MACH;AAAA,IACF,IACA;AAGJ,WAAO,4CAAC,aAAU,KAAK,aAAc,GAAG,YAAY;AAAA,EACtD,CAAC;AACH;",
5
5
  "names": ["value"]
6
6
  }
@@ -0,0 +1,3 @@
1
+ export * from "./registerFocusable.mjs";
2
+ export * from "./focusableInputHOC.mjs";
3
+ export * from "./focusable.mjs";
@@ -0,0 +1,4 @@
1
+ const registerFocusable = (id, input) => () => {},
2
+ unregisterFocusable = id => {},
3
+ focusFocusable = id => {};
4
+ export { focusFocusable, registerFocusable, unregisterFocusable };
File without changes
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/focusableInputHOC.tsx"],
4
- "mappings": "AAAA,SAAS,mBAAmB;AAC5B,SAA2B,gBAAgB;AAC3C,SAAgB,aAAa,WAAW,cAAc;AAEtD,SAAS,yBAAyB;AA6EvB;AApEJ,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AACF,GAIG;AACD,QAAM,EAAE,IAAI,cAAc,OAAO,aAAa,IAAI,OAC5C,aAAa,OAAO,SAAS,gBAAgB,EAAE,GAC/C,sBAAsB,OAA+B,GAErD,WAAW;AAAA,IACf,CAAC,UAAU;AACT,MAAK,MACA,UACL,oBAAoB,UAAU,GAC9B,oBAAoB,UAAU,kBAAkB,IAAI;AAAA,QAClD,OAAO,MAAM;AAAA,QAEb,GAAI,WAAW;AAAA;AAAA,UAEb,iBAAiB;AACf,kBAAM,MAAM,GACR,MAAM,gBAAgB,OAAO,WAAW,WAAY,YACtD,MAAM,aAAa,GAAG,WAAW,QAAQ,MAAM;AAAA,UAEnD;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IACA,CAAC,SAAS,EAAE;AAAA,EACd,GAEM,eAAe,YAAY,KAAK,QAAQ;AAE9C,mBAAU,MACD,MAAM;AACX,wBAAoB,UAAU;AAAA,EAChC,GACC,CAAC,CAAC,GAEE;AAAA,IACL,KAAK;AAAA,IACL,cAAc,SAAS,CAACA,WAAU;AAChC,iBAAW,UAAUA,QACrB,eAAeA,MAAK;AAAA,IACtB,CAAC;AAAA,EACH;AACF;AAEO,SAAS,kBAA8C,WAAiB;AAC7E,SAAO,UAAU,UAAU,CAAC,OAAuB,QAAQ;AACzD,UAAM,UAAU,UAAU,cAAc,SAClC,EAAE,KAAK,aAAa,aAAa,IAAI,aAAa;AAAA,MACtD;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC,GACK,aAAa,UACf;AAAA,MACE,GAAG;AAAA,MACH;AAAA,IACF,IACA;AAGJ,WAAO,oBAAC,aAAU,KAAK,aAAc,GAAG,YAAY;AAAA,EACtD,CAAC;AACH;",
4
+ "mappings": "AAAA,SAAS,mBAAmB;AAE5B,SAAS,gBAAgB;AACzB,SAAgB,aAAa,WAAW,cAAc;AAEtD,SAAS,yBAAyB;AA6EvB;AApEJ,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AACF,GAIG;AACD,QAAM,EAAE,IAAI,cAAc,OAAO,aAAa,IAAI,OAC5C,aAAa,OAAO,SAAS,gBAAgB,EAAE,GAC/C,sBAAsB,OAA+B,GAErD,WAAW;AAAA,IACf,CAAC,UAAU;AACT,MAAK,MACA,UACL,oBAAoB,UAAU,GAC9B,oBAAoB,UAAU,kBAAkB,IAAI;AAAA,QAClD,OAAO,MAAM;AAAA,QAEb,GAAI,WAAW;AAAA;AAAA,UAEb,iBAAiB;AACf,kBAAM,MAAM,GACR,MAAM,gBAAgB,OAAO,WAAW,WAAY,YACtD,MAAM,aAAa,GAAG,WAAW,QAAQ,MAAM;AAAA,UAEnD;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IACA,CAAC,SAAS,EAAE;AAAA,EACd,GAEM,eAAe,YAAY,KAAK,QAAQ;AAE9C,mBAAU,MACD,MAAM;AACX,wBAAoB,UAAU;AAAA,EAChC,GACC,CAAC,CAAC,GAEE;AAAA,IACL,KAAK;AAAA,IACL,cAAc,SAAS,CAACA,WAAU;AAChC,iBAAW,UAAUA,QACrB,eAAeA,MAAK;AAAA,IACtB,CAAC;AAAA,EACH;AACF;AAEO,SAAS,kBAA8C,WAAiB;AAC7E,SAAO,UAAU,UAAU,CAAC,OAAuB,QAAQ;AACzD,UAAM,UAAU,UAAU,cAAc,SAClC,EAAE,KAAK,aAAa,aAAa,IAAI,aAAa;AAAA,MACtD;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC,GACK,aAAa,UACf;AAAA,MACE,GAAG;AAAA,MACH;AAAA,IACF,IACA;AAGJ,WAAO,oBAAC,aAAU,KAAK,aAAc,GAAG,YAAY;AAAA,EACtD,CAAC;AACH;",
5
5
  "names": ["value"]
6
6
  }
@@ -0,0 +1,61 @@
1
+ import { composeRefs } from "@tamagui/compose-refs";
2
+ import { useEvent } from "@tamagui/web";
3
+ import { useCallback, useEffect, useRef } from "react";
4
+ import { registerFocusable } from "./registerFocusable.mjs";
5
+ import { jsx } from "react/jsx-runtime";
6
+ function useFocusable({
7
+ isInput,
8
+ props,
9
+ ref
10
+ }) {
11
+ const {
12
+ id,
13
+ onChangeText,
14
+ value,
15
+ defaultValue
16
+ } = props,
17
+ inputValue = useRef(value || defaultValue || ""),
18
+ unregisterFocusable = useRef(),
19
+ inputRef = useCallback(input => {
20
+ id && input && (unregisterFocusable.current?.(), unregisterFocusable.current = registerFocusable(id, {
21
+ focus: input.focus,
22
+ ...(isInput && {
23
+ // react-native doesn't support programmatic .select()
24
+ focusAndSelect() {
25
+ input.focus(), input.setSelection && typeof inputValue.current == "string" && input.setSelection(0, inputValue.current.length);
26
+ }
27
+ })
28
+ }));
29
+ }, [isInput, id]),
30
+ combinedRefs = composeRefs(ref, inputRef);
31
+ return useEffect(() => () => {
32
+ unregisterFocusable.current?.();
33
+ }, []), {
34
+ ref: combinedRefs,
35
+ onChangeText: useEvent(value2 => {
36
+ inputValue.current = value2, onChangeText?.(value2);
37
+ })
38
+ };
39
+ }
40
+ function focusableInputHOC(Component) {
41
+ return Component.styleable((props, ref) => {
42
+ const isInput = Component.staticConfig?.isInput,
43
+ {
44
+ ref: combinedRef,
45
+ onChangeText
46
+ } = useFocusable({
47
+ ref,
48
+ props,
49
+ isInput
50
+ }),
51
+ finalProps = isInput ? {
52
+ ...props,
53
+ onChangeText
54
+ } : props;
55
+ return /* @__PURE__ */jsx(Component, {
56
+ ref: combinedRef,
57
+ ...finalProps
58
+ });
59
+ });
60
+ }
61
+ export { focusableInputHOC, useFocusable };
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/focusableInputHOC.tsx"],
4
- "mappings": ";;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAA4B,kCAC5B,aAA2C,yBAC3C,eAAsD,kBAEtD,2BAAkC,gCA6EvB;AApEJ,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AACF,GAIG;AACD,QAAM,EAAE,IAAI,cAAc,OAAO,aAAa,IAAI,OAC5C,iBAAa,qBAAO,SAAS,gBAAgB,EAAE,GAC/C,0BAAsB,qBAA+B,GAErD,eAAW;AAAA,IACf,CAAC,UAAU;AA3Bf;AA4BM,MAAK,MACA,WACL,yBAAoB,YAApB,sCACA,oBAAoB,cAAU,4CAAkB,IAAI;AAAA,QAClD,OAAO,MAAM;AAAA,QAEb,GAAI,WAAW;AAAA;AAAA,UAEb,iBAAiB;AACf,kBAAM,MAAM,GACR,MAAM,gBAAgB,OAAO,WAAW,WAAY,YACtD,MAAM,aAAa,GAAG,WAAW,QAAQ,MAAM;AAAA,UAEnD;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IACA,CAAC,SAAS,EAAE;AAAA,EACd,GAEM,mBAAe,iCAAY,KAAK,QAAQ;AAE9C,qCAAU,MACD,MAAM;AAnDjB;AAoDM,8BAAoB,YAApB;AAAA,EACF,GACC,CAAC,CAAC,GAEE;AAAA,IACL,KAAK;AAAA,IACL,kBAAc,qBAAS,CAACA,WAAU;AAChC,iBAAW,UAAUA,QACrB,qCAAeA;AAAA,IACjB,CAAC;AAAA,EACH;AACF;AAEO,SAAS,kBAA8C,WAAiB;AAC7E,SAAO,UAAU,UAAU,CAAC,OAAuB,QAAQ;AAlE7D;AAmEI,UAAM,WAAU,eAAU,iBAAV,mBAAwB,SAClC,EAAE,KAAK,aAAa,aAAa,IAAI,aAAa;AAAA,MACtD;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC,GACK,aAAa,UACf;AAAA,MACE,GAAG;AAAA,MACH;AAAA,IACF,IACA;AAGJ,WAAO,4CAAC,aAAU,KAAK,aAAc,GAAG,YAAY;AAAA,EACtD,CAAC;AACH;",
4
+ "mappings": ";;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAA4B,kCAE5B,aAAyB,yBACzB,eAAsD,kBAEtD,2BAAkC,gCA6EvB;AApEJ,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AACF,GAIG;AACD,QAAM,EAAE,IAAI,cAAc,OAAO,aAAa,IAAI,OAC5C,iBAAa,qBAAO,SAAS,gBAAgB,EAAE,GAC/C,0BAAsB,qBAA+B,GAErD,eAAW;AAAA,IACf,CAAC,UAAU;AA5Bf;AA6BM,MAAK,MACA,WACL,yBAAoB,YAApB,sCACA,oBAAoB,cAAU,4CAAkB,IAAI;AAAA,QAClD,OAAO,MAAM;AAAA,QAEb,GAAI,WAAW;AAAA;AAAA,UAEb,iBAAiB;AACf,kBAAM,MAAM,GACR,MAAM,gBAAgB,OAAO,WAAW,WAAY,YACtD,MAAM,aAAa,GAAG,WAAW,QAAQ,MAAM;AAAA,UAEnD;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IACA,CAAC,SAAS,EAAE;AAAA,EACd,GAEM,mBAAe,iCAAY,KAAK,QAAQ;AAE9C,qCAAU,MACD,MAAM;AApDjB;AAqDM,8BAAoB,YAApB;AAAA,EACF,GACC,CAAC,CAAC,GAEE;AAAA,IACL,KAAK;AAAA,IACL,kBAAc,qBAAS,CAACA,WAAU;AAChC,iBAAW,UAAUA,QACrB,qCAAeA;AAAA,IACjB,CAAC;AAAA,EACH;AACF;AAEO,SAAS,kBAA8C,WAAiB;AAC7E,SAAO,UAAU,UAAU,CAAC,OAAuB,QAAQ;AAnE7D;AAoEI,UAAM,WAAU,eAAU,iBAAV,mBAAwB,SAClC,EAAE,KAAK,aAAa,aAAa,IAAI,aAAa;AAAA,MACtD;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC,GACK,aAAa,UACf;AAAA,MACE,GAAG;AAAA,MACH;AAAA,IACF,IACA;AAGJ,WAAO,4CAAC,aAAU,KAAK,aAAc,GAAG,YAAY;AAAA,EACtD,CAAC;AACH;",
5
5
  "names": ["value"]
6
6
  }
@@ -0,0 +1,3 @@
1
+ export * from "./registerFocusable.mjs";
2
+ export * from "./focusableInputHOC.mjs";
3
+ export * from "./focusable.mjs";
@@ -0,0 +1,4 @@
1
+ const registerFocusable = (id, input) => () => {},
2
+ unregisterFocusable = id => {},
3
+ focusFocusable = id => {};
4
+ export { focusFocusable, registerFocusable, unregisterFocusable };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tamagui/focusable",
3
- "version": "1.88.13",
3
+ "version": "1.88.14",
4
4
  "sideEffects": false,
5
5
  "source": "src/index.ts",
6
6
  "types": "./types/index.d.ts",
@@ -22,14 +22,14 @@
22
22
  "clean:build": "tamagui-build clean:build"
23
23
  },
24
24
  "dependencies": {
25
- "@tamagui/compose-refs": "1.88.13",
26
- "@tamagui/web": "1.88.13"
25
+ "@tamagui/compose-refs": "1.88.14",
26
+ "@tamagui/web": "1.88.14"
27
27
  },
28
28
  "peerDependencies": {
29
29
  "react": "*"
30
30
  },
31
31
  "devDependencies": {
32
- "@tamagui/build": "1.88.13",
32
+ "@tamagui/build": "1.88.14",
33
33
  "react": "^18.2.0"
34
34
  },
35
35
  "publishConfig": {
@@ -1,5 +1,6 @@
1
1
  import { composeRefs } from '@tamagui/compose-refs'
2
- import { TamaguiComponent, useEvent } from '@tamagui/web'
2
+ import type { TamaguiComponent } from '@tamagui/web'
3
+ import { useEvent } from '@tamagui/web'
3
4
  import React, { useCallback, useEffect, useRef } from 'react'
4
5
 
5
6
  import { registerFocusable } from './registerFocusable'
@@ -1,6 +1,6 @@
1
1
  // used for focusing on native
2
2
 
3
- import { Focusable } from './focusable'
3
+ import type { Focusable } from './focusable'
4
4
 
5
5
  const InputsMap = new Map<string, Focusable>()
6
6
 
@@ -1,4 +1,4 @@
1
- import { Focusable } from './focusable'
1
+ import type { Focusable } from './focusable'
2
2
 
3
3
  export const registerFocusable = (id: string, input: Focusable) => () => {
4
4
  // noop focus is handed natively
@@ -1,4 +1,4 @@
1
- import { TamaguiComponent } from '@tamagui/web';
1
+ import type { TamaguiComponent } from '@tamagui/web';
2
2
  import React from 'react';
3
3
  type FocusableProps = {
4
4
  id?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"focusableInputHOC.d.ts","sourceRoot":"","sources":["../src/focusableInputHOC.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAY,MAAM,cAAc,CAAA;AACzD,OAAO,KAAyC,MAAM,OAAO,CAAA;AAI7D,KAAK,cAAc,GAAG;IACpB,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;IACpC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,CAAA;AAED,wBAAgB,YAAY,CAAC,EAC3B,OAAO,EACP,KAAK,EACL,GAAG,GACJ,EAAE;IACD,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,KAAK,EAAE,cAAc,CAAA;IACrB,GAAG,CAAC,EAAE,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAA;CAClC;;;EA0CA;AAED,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,gBAAgB,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,CAkB7E"}
1
+ {"version":3,"file":"focusableInputHOC.d.ts","sourceRoot":"","sources":["../src/focusableInputHOC.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAEpD,OAAO,KAAyC,MAAM,OAAO,CAAA;AAI7D,KAAK,cAAc,GAAG;IACpB,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;IACpC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,CAAA;AAED,wBAAgB,YAAY,CAAC,EAC3B,OAAO,EACP,KAAK,EACL,GAAG,GACJ,EAAE;IACD,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,KAAK,EAAE,cAAc,CAAA;IACrB,GAAG,CAAC,EAAE,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAA;CAClC;;;EA0CA;AAED,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,gBAAgB,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,CAkB7E"}
@@ -1,4 +1,4 @@
1
- import { Focusable } from './focusable';
1
+ import type { Focusable } from './focusable';
2
2
  export declare const registerFocusable: (id: string, input: Focusable) => () => void;
3
3
  export declare const unregisterFocusable: (id: string) => void;
4
4
  export declare const focusFocusable: (id: string) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"registerFocusable.d.ts","sourceRoot":"","sources":["../src/registerFocusable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,eAAO,MAAM,iBAAiB,OAAQ,MAAM,SAAS,SAAS,eAE7D,CAAA;AAED,eAAO,MAAM,mBAAmB,OAAQ,MAAM,SAE7C,CAAA;AAED,eAAO,MAAM,cAAc,OAAQ,MAAM,SAExC,CAAA"}
1
+ {"version":3,"file":"registerFocusable.d.ts","sourceRoot":"","sources":["../src/registerFocusable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAE5C,eAAO,MAAM,iBAAiB,OAAQ,MAAM,SAAS,SAAS,eAE7D,CAAA;AAED,eAAO,MAAM,mBAAmB,OAAQ,MAAM,SAE7C,CAAA;AAED,eAAO,MAAM,cAAc,OAAQ,MAAM,SAExC,CAAA"}
@@ -1,4 +1,4 @@
1
- import { Focusable } from './focusable';
1
+ import type { Focusable } from './focusable';
2
2
  export declare const registerFocusable: (id: string, input: Focusable) => () => void;
3
3
  export declare const unregisterFocusable: (id: string) => void;
4
4
  export declare const focusFocusable: (id: string, select?: boolean) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"registerFocusable.native.d.ts","sourceRoot":"","sources":["../src/registerFocusable.native.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAIvC,eAAO,MAAM,iBAAiB,OAAQ,MAAM,SAAS,SAAS,eAU7D,CAAA;AAED,eAAO,MAAM,mBAAmB,OAAQ,MAAM,SAE7C,CAAA;AAED,eAAO,MAAM,cAAc,OAAQ,MAAM,2BAaxC,CAAA"}
1
+ {"version":3,"file":"registerFocusable.native.d.ts","sourceRoot":"","sources":["../src/registerFocusable.native.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAI5C,eAAO,MAAM,iBAAiB,OAAQ,MAAM,SAAS,SAAS,eAU7D,CAAA;AAED,eAAO,MAAM,mBAAmB,OAAQ,MAAM,SAE7C,CAAA;AAED,eAAO,MAAM,cAAc,OAAQ,MAAM,2BAaxC,CAAA"}