@tamagui/focusable 1.14.1 → 1.14.2

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 (43) hide show
  1. package/dist/cjs/focusable.js +16 -1
  2. package/dist/cjs/focusable.js.map +2 -2
  3. package/dist/cjs/focusableInputHOC.js +84 -1
  4. package/dist/cjs/focusableInputHOC.js.map +2 -2
  5. package/dist/cjs/index.js +20 -1
  6. package/dist/cjs/index.js.map +2 -2
  7. package/dist/cjs/registerFocusable.js +37 -1
  8. package/dist/cjs/registerFocusable.js.map +2 -2
  9. package/dist/cjs/registerFocusable.native.js +60 -1
  10. package/dist/cjs/registerFocusable.native.js.map +2 -2
  11. package/dist/esm/focusableInputHOC.js +60 -1
  12. package/dist/esm/focusableInputHOC.js.map +2 -2
  13. package/dist/esm/focusableInputHOC.mjs +60 -1
  14. package/dist/esm/focusableInputHOC.mjs.map +2 -2
  15. package/dist/esm/index.js +3 -1
  16. package/dist/esm/index.js.map +1 -1
  17. package/dist/esm/index.mjs +3 -1
  18. package/dist/esm/index.mjs.map +1 -1
  19. package/dist/esm/registerFocusable.js +11 -1
  20. package/dist/esm/registerFocusable.js.map +2 -2
  21. package/dist/esm/registerFocusable.mjs +11 -1
  22. package/dist/esm/registerFocusable.mjs.map +2 -2
  23. package/dist/esm/registerFocusable.native.js +34 -1
  24. package/dist/esm/registerFocusable.native.js.map +2 -2
  25. package/dist/esm/registerFocusable.native.mjs +34 -1
  26. package/dist/esm/registerFocusable.native.mjs.map +2 -2
  27. package/dist/jsx/focusableInputHOC.js +56 -1
  28. package/dist/jsx/focusableInputHOC.js.map +2 -2
  29. package/dist/jsx/focusableInputHOC.mjs +56 -1
  30. package/dist/jsx/focusableInputHOC.mjs.map +2 -2
  31. package/dist/jsx/index.js +3 -1
  32. package/dist/jsx/index.js.map +1 -1
  33. package/dist/jsx/index.mjs +3 -1
  34. package/dist/jsx/index.mjs.map +1 -1
  35. package/dist/jsx/registerFocusable.js +11 -1
  36. package/dist/jsx/registerFocusable.js.map +2 -2
  37. package/dist/jsx/registerFocusable.mjs +11 -1
  38. package/dist/jsx/registerFocusable.mjs.map +2 -2
  39. package/dist/jsx/registerFocusable.native.js +34 -1
  40. package/dist/jsx/registerFocusable.native.js.map +2 -2
  41. package/dist/jsx/registerFocusable.native.mjs +34 -1
  42. package/dist/jsx/registerFocusable.native.mjs.map +2 -2
  43. package/package.json +4 -4
@@ -1,2 +1,17 @@
1
- "use strict";var t=Object.defineProperty;var s=Object.getOwnPropertyDescriptor;var F=Object.getOwnPropertyNames;var f=Object.prototype.hasOwnProperty;var i=(o,c,u,n)=>{if(c&&typeof c=="object"||typeof c=="function")for(let e of F(c))!f.call(o,e)&&e!==u&&t(o,e,{get:()=>c[e],enumerable:!(n=s(c,e))||n.enumerable});return o};var l=o=>i(t({},"__esModule",{value:!0}),o);var p={};module.exports=l(p);
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __copyProps = (to, from, except, desc) => {
7
+ if (from && typeof from === "object" || typeof from === "function") {
8
+ for (let key of __getOwnPropNames(from))
9
+ if (!__hasOwnProp.call(to, key) && key !== except)
10
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
11
+ }
12
+ return to;
13
+ };
14
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
15
+ var focusable_exports = {};
16
+ module.exports = __toCommonJS(focusable_exports);
2
17
  //# sourceMappingURL=focusable.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/focusable.ts"],
4
4
  "sourcesContent": ["export type Focusable = { focus: Function; focusAndSelect?: Function }\n"],
5
- "mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
6
- "names": ["focusable_exports", "__toCommonJS"]
5
+ "mappings": ";;;;;;;;;;;;;;AAAA;AAAA;",
6
+ "names": []
7
7
  }
@@ -1,2 +1,85 @@
1
- "use strict";var d=Object.defineProperty;var R=Object.getOwnPropertyDescriptor;var h=Object.getOwnPropertyNames;var A=Object.prototype.hasOwnProperty;var I=(t,c)=>{for(var e in c)d(t,e,{get:c[e],enumerable:!0})},S=(t,c,e,r)=>{if(c&&typeof c=="object"||typeof c=="function")for(let f of h(c))!A.call(t,f)&&f!==e&&d(t,f,{get:()=>c[f],enumerable:!(r=R(c,f))||r.enumerable});return t};var V=t=>S(d({},"__esModule",{value:!0}),t);var y={};I(y,{focusableInputHOC:()=>b});module.exports=V(y);var g=require("react/jsx-runtime"),l=require("@tamagui/compose-refs"),a=require("@tamagui/web"),o=require("react"),m=require("./registerFocusable");function b(t){return t.extractable((0,o.forwardRef)((e,r)=>{const f=(0,a.isTamaguiComponent)(t)&&t.staticConfig.isInput,s=(0,o.useRef)(e.value||e.defaultValue||""),i=(0,o.useRef)(),C=(0,o.useCallback)(n=>{var u;e.id&&n&&((u=i.current)==null||u.call(i),i.current=(0,m.registerFocusable)(e.id,{focus:n.focus,...f&&{focusAndSelect(){n.focus(),n.setSelection&&typeof s.current=="string"&&n.setSelection(0,s.current.length)}}}))},[f,e.id]),T=(0,l.composeRefs)(r,C);(0,o.useEffect)(()=>()=>{var n;(n=i.current)==null||n.call(i)},[]);const v=(0,a.useEvent)(n=>{var u;s.current=n,(u=e.onChangeText)==null||u.call(e,n)}),x=f?{...e,onChangeText:v}:e;return(0,g.jsx)(t,{ref:T,...x})}))}0&&(module.exports={focusableInputHOC});
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var focusableInputHOC_exports = {};
20
+ __export(focusableInputHOC_exports, {
21
+ focusableInputHOC: () => focusableInputHOC
22
+ });
23
+ module.exports = __toCommonJS(focusableInputHOC_exports);
24
+ var import_jsx_runtime = require("react/jsx-runtime");
25
+ var import_compose_refs = require("@tamagui/compose-refs");
26
+ var import_web = require("@tamagui/web");
27
+ var import_react = require("react");
28
+ var import_registerFocusable = require("./registerFocusable");
29
+ function focusableInputHOC(Component) {
30
+ const component = Component.extractable(
31
+ (0, import_react.forwardRef)(
32
+ (props, ref) => {
33
+ const isInput = (0, import_web.isTamaguiComponent)(Component) && Component.staticConfig.isInput;
34
+ const inputValue = (0, import_react.useRef)(props.value || props.defaultValue || "");
35
+ const unregisterFocusable = (0, import_react.useRef)();
36
+ const inputRef = (0, import_react.useCallback)(
37
+ (input) => {
38
+ var _a;
39
+ if (!props.id)
40
+ return;
41
+ if (!input)
42
+ return;
43
+ (_a = unregisterFocusable.current) == null ? void 0 : _a.call(unregisterFocusable);
44
+ unregisterFocusable.current = (0, import_registerFocusable.registerFocusable)(props.id, {
45
+ focus: input.focus,
46
+ ...isInput && {
47
+ // react-native doesn't support programmatic .select()
48
+ focusAndSelect() {
49
+ input.focus();
50
+ if (input.setSelection && typeof inputValue.current === "string") {
51
+ input.setSelection(0, inputValue.current.length);
52
+ }
53
+ }
54
+ }
55
+ });
56
+ },
57
+ [isInput, props.id]
58
+ );
59
+ const combinedRefs = (0, import_compose_refs.composeRefs)(ref, inputRef);
60
+ (0, import_react.useEffect)(() => {
61
+ return () => {
62
+ var _a;
63
+ (_a = unregisterFocusable.current) == null ? void 0 : _a.call(unregisterFocusable);
64
+ };
65
+ }, []);
66
+ const onChangeText = (0, import_web.useEvent)((value) => {
67
+ var _a;
68
+ inputValue.current = value;
69
+ (_a = props.onChangeText) == null ? void 0 : _a.call(props, value);
70
+ });
71
+ const finalProps = isInput ? {
72
+ ...props,
73
+ onChangeText
74
+ } : props;
75
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Component, { ref: combinedRefs, ...finalProps });
76
+ }
77
+ )
78
+ );
79
+ return component;
80
+ }
81
+ // Annotate the CommonJS export names for ESM import in node:
82
+ 0 && (module.exports = {
83
+ focusableInputHOC
84
+ });
2
85
  //# sourceMappingURL=focusableInputHOC.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/focusableInputHOC.tsx"],
4
4
  "sourcesContent": ["import { composeRefs } from '@tamagui/compose-refs'\nimport { TamaguiComponent, isTamaguiComponent, useEvent } from '@tamagui/web'\nimport { forwardRef, useCallback, useEffect, useRef } from 'react'\n\nimport { registerFocusable } from './registerFocusable'\n\nexport function focusableInputHOC<A extends TamaguiComponent>(Component: A): A {\n const component = Component.extractable(\n forwardRef(\n (\n props: {\n id?: string\n onChangeText?: (val: string) => void\n value?: string\n defaultValue?: string\n },\n ref\n ) => {\n const isInput = isTamaguiComponent(Component) && Component.staticConfig.isInput\n const inputValue = useRef(props.value || props.defaultValue || '')\n const unregisterFocusable = useRef<() => void | undefined>()\n\n const inputRef = useCallback(\n (input) => {\n if (!props.id) return\n if (!input) return\n unregisterFocusable.current?.()\n unregisterFocusable.current = registerFocusable(props.id, {\n focus: input.focus,\n\n ...(isInput && {\n // react-native doesn't support programmatic .select()\n focusAndSelect() {\n input.focus()\n if (input.setSelection && typeof inputValue.current === 'string') {\n input.setSelection(0, inputValue.current.length)\n }\n },\n }),\n })\n },\n [isInput, props.id]\n )\n\n const combinedRefs = composeRefs(ref, inputRef)\n\n useEffect(() => {\n return () => {\n unregisterFocusable.current?.()\n }\n }, [])\n\n const onChangeText = useEvent((value) => {\n inputValue.current = value\n props.onChangeText?.(value)\n })\n\n const finalProps = isInput\n ? {\n ...props,\n onChangeText,\n }\n : props\n\n // @ts-expect-error\n return <Component ref={combinedRefs} {...finalProps} />\n }\n )\n ) as any\n\n return component\n}\n"],
5
- "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,uBAAAE,IAAA,eAAAC,EAAAH,GAiEe,IAAAI,EAAA,6BAjEfC,EAA4B,iCAC5BC,EAA+D,wBAC/DC,EAA2D,iBAE3DC,EAAkC,+BAE3B,SAASN,EAA8CO,EAAiB,CAgE7E,OA/DkBA,EAAU,eAC1B,cACE,CACEC,EAMAC,IACG,CACH,MAAMC,KAAU,sBAAmBH,CAAS,GAAKA,EAAU,aAAa,QAClEI,KAAa,UAAOH,EAAM,OAASA,EAAM,cAAgB,EAAE,EAC3DI,KAAsB,UAA+B,EAErDC,KAAW,eACdC,GAAU,CAvBrB,IAAAC,EAwBiBP,EAAM,IACNM,KACLC,EAAAH,EAAoB,UAApB,MAAAG,EAAA,KAAAH,GACAA,EAAoB,WAAU,qBAAkBJ,EAAM,GAAI,CACxD,MAAOM,EAAM,MAEb,GAAIJ,GAAW,CAEb,gBAAiB,CACfI,EAAM,MAAM,EACRA,EAAM,cAAgB,OAAOH,EAAW,SAAY,UACtDG,EAAM,aAAa,EAAGH,EAAW,QAAQ,MAAM,CAEnD,CACF,CACF,CAAC,EACH,EACA,CAACD,EAASF,EAAM,EAAE,CACpB,EAEMQ,KAAe,eAAYP,EAAKI,CAAQ,KAE9C,aAAU,IACD,IAAM,CA/CvB,IAAAE,GAgDYA,EAAAH,EAAoB,UAApB,MAAAG,EAAA,KAAAH,EACF,EACC,CAAC,CAAC,EAEL,MAAMK,KAAe,YAAUC,GAAU,CApDjD,IAAAH,EAqDUJ,EAAW,QAAUO,GACrBH,EAAAP,EAAM,eAAN,MAAAO,EAAA,KAAAP,EAAqBU,EACvB,CAAC,EAEKC,EAAaT,EACf,CACE,GAAGF,EACH,aAAAS,CACF,EACAT,EAGJ,SAAO,OAACD,EAAA,CAAU,IAAKS,EAAe,GAAGG,EAAY,CACvD,CACF,CACF,CAGF",
6
- "names": ["focusableInputHOC_exports", "__export", "focusableInputHOC", "__toCommonJS", "import_jsx_runtime", "import_compose_refs", "import_web", "import_react", "import_registerFocusable", "Component", "props", "ref", "isInput", "inputValue", "unregisterFocusable", "inputRef", "input", "_a", "combinedRefs", "onChangeText", "value", "finalProps"]
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAiEe;AAjEf,0BAA4B;AAC5B,iBAA+D;AAC/D,mBAA2D;AAE3D,+BAAkC;AAE3B,SAAS,kBAA8C,WAAiB;AAC7E,QAAM,YAAY,UAAU;AAAA,QAC1B;AAAA,MACE,CACE,OAMA,QACG;AACH,cAAM,cAAU,+BAAmB,SAAS,KAAK,UAAU,aAAa;AACxE,cAAM,iBAAa,qBAAO,MAAM,SAAS,MAAM,gBAAgB,EAAE;AACjE,cAAM,0BAAsB,qBAA+B;AAE3D,cAAM,eAAW;AAAA,UACf,CAAC,UAAU;AAvBrB;AAwBY,gBAAI,CAAC,MAAM;AAAI;AACf,gBAAI,CAAC;AAAO;AACZ,sCAAoB,YAApB;AACA,gCAAoB,cAAU,4CAAkB,MAAM,IAAI;AAAA,cACxD,OAAO,MAAM;AAAA,cAEb,GAAI,WAAW;AAAA;AAAA,gBAEb,iBAAiB;AACf,wBAAM,MAAM;AACZ,sBAAI,MAAM,gBAAgB,OAAO,WAAW,YAAY,UAAU;AAChE,0BAAM,aAAa,GAAG,WAAW,QAAQ,MAAM;AAAA,kBACjD;AAAA,gBACF;AAAA,cACF;AAAA,YACF,CAAC;AAAA,UACH;AAAA,UACA,CAAC,SAAS,MAAM,EAAE;AAAA,QACpB;AAEA,cAAM,mBAAe,iCAAY,KAAK,QAAQ;AAE9C,oCAAU,MAAM;AACd,iBAAO,MAAM;AA/CvB;AAgDY,sCAAoB,YAApB;AAAA,UACF;AAAA,QACF,GAAG,CAAC,CAAC;AAEL,cAAM,mBAAe,qBAAS,CAAC,UAAU;AApDjD;AAqDU,qBAAW,UAAU;AACrB,sBAAM,iBAAN,+BAAqB;AAAA,QACvB,CAAC;AAED,cAAM,aAAa,UACf;AAAA,UACE,GAAG;AAAA,UACH;AAAA,QACF,IACA;AAGJ,eAAO,4CAAC,aAAU,KAAK,cAAe,GAAG,YAAY;AAAA,MACvD;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;",
6
+ "names": []
7
7
  }
package/dist/cjs/index.js CHANGED
@@ -1,2 +1,21 @@
1
- "use strict";var a=Object.defineProperty;var b=Object.getOwnPropertyDescriptor;var c=Object.getOwnPropertyNames;var d=Object.prototype.hasOwnProperty;var t=(f,r,p,x)=>{if(r&&typeof r=="object"||typeof r=="function")for(let m of c(r))!d.call(f,m)&&m!==p&&a(f,m,{get:()=>r[m],enumerable:!(x=b(r,m))||x.enumerable});return f},e=(f,r,p)=>(t(f,r,"default"),p&&t(p,r,"default"));var g=f=>t(a({},"__esModule",{value:!0}),f);var o={};module.exports=g(o);e(o,require("./registerFocusable"),module.exports);e(o,require("./focusableInputHOC"),module.exports);e(o,require("./focusable"),module.exports);
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __copyProps = (to, from, except, desc) => {
7
+ if (from && typeof from === "object" || typeof from === "function") {
8
+ for (let key of __getOwnPropNames(from))
9
+ if (!__hasOwnProp.call(to, key) && key !== except)
10
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
11
+ }
12
+ return to;
13
+ };
14
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
15
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
16
+ var src_exports = {};
17
+ module.exports = __toCommonJS(src_exports);
18
+ __reExport(src_exports, require("./registerFocusable"), module.exports);
19
+ __reExport(src_exports, require("./focusableInputHOC"), module.exports);
20
+ __reExport(src_exports, require("./focusable"), module.exports);
2
21
  //# sourceMappingURL=index.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/index.ts"],
4
4
  "sourcesContent": ["export * from './registerFocusable'\nexport * from './focusableInputHOC'\nexport * from './focusable'\n"],
5
- "mappings": "iaAAA,IAAAA,EAAA,kBAAAC,EAAAD,GAAAE,EAAAF,EAAc,+BAAd,gBACAE,EAAAF,EAAc,+BADd,gBAEAE,EAAAF,EAAc,uBAFd",
6
- "names": ["src_exports", "__toCommonJS", "__reExport"]
5
+ "mappings": ";;;;;;;;;;;;;;;AAAA;AAAA;AAAA,wBAAc,gCAAd;AACA,wBAAc,gCADd;AAEA,wBAAc,wBAFd;",
6
+ "names": []
7
7
  }
@@ -1,2 +1,38 @@
1
- "use strict";var r=Object.defineProperty;var c=Object.getOwnPropertyDescriptor;var n=Object.getOwnPropertyNames;var u=Object.prototype.hasOwnProperty;var a=(o,s)=>{for(var e in s)r(o,e,{get:s[e],enumerable:!0})},b=(o,s,e,i)=>{if(s&&typeof s=="object"||typeof s=="function")for(let t of n(s))!u.call(o,t)&&t!==e&&r(o,t,{get:()=>s[t],enumerable:!(i=c(s,t))||i.enumerable});return o};var g=o=>b(r({},"__esModule",{value:!0}),o);var d={};a(d,{focusFocusable:()=>F,registerFocusable:()=>l,unregisterFocusable:()=>p});module.exports=g(d);const l=(o,s)=>()=>{},p=o=>{},F=o=>{};0&&(module.exports={focusFocusable,registerFocusable,unregisterFocusable});
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var registerFocusable_exports = {};
20
+ __export(registerFocusable_exports, {
21
+ focusFocusable: () => focusFocusable,
22
+ registerFocusable: () => registerFocusable,
23
+ unregisterFocusable: () => unregisterFocusable
24
+ });
25
+ module.exports = __toCommonJS(registerFocusable_exports);
26
+ const registerFocusable = (id, input) => () => {
27
+ };
28
+ const unregisterFocusable = (id) => {
29
+ };
30
+ const focusFocusable = (id) => {
31
+ };
32
+ // Annotate the CommonJS export names for ESM import in node:
33
+ 0 && (module.exports = {
34
+ focusFocusable,
35
+ registerFocusable,
36
+ unregisterFocusable
37
+ });
2
38
  //# sourceMappingURL=registerFocusable.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/registerFocusable.ts"],
4
4
  "sourcesContent": ["import { Focusable } from './focusable'\n\nexport const registerFocusable = (id: string, input: Focusable) => () => {\n // noop focus is handed natively\n}\n\nexport const unregisterFocusable = (id: string) => {\n // noop focus is handed natively\n}\n\nexport const focusFocusable = (id: string) => {\n // noop focus is handed natively\n}\n"],
5
- "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,oBAAAE,EAAA,sBAAAC,EAAA,wBAAAC,IAAA,eAAAC,EAAAL,GAEO,MAAMG,EAAoB,CAACG,EAAYC,IAAqB,IAAM,CAEzE,EAEaH,EAAuBE,GAAe,CAEnD,EAEaJ,EAAkBI,GAAe,CAE9C",
6
- "names": ["registerFocusable_exports", "__export", "focusFocusable", "registerFocusable", "unregisterFocusable", "__toCommonJS", "id", "input"]
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEO,MAAM,oBAAoB,CAAC,IAAY,UAAqB,MAAM;AAEzE;AAEO,MAAM,sBAAsB,CAAC,OAAe;AAEnD;AAEO,MAAM,iBAAiB,CAAC,OAAe;AAE9C;",
6
+ "names": []
7
7
  }
@@ -1,2 +1,61 @@
1
- "use strict";var r=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var p=Object.prototype.hasOwnProperty;var a=(e,o)=>{for(var s in o)r(e,s,{get:o[s],enumerable:!0})},f=(e,o,s,c)=>{if(o&&typeof o=="object"||typeof o=="function")for(let n of l(o))!p.call(e,n)&&n!==s&&r(e,n,{get:()=>o[n],enumerable:!(c=u(o,n))||c.enumerable});return e};var i=e=>f(r({},"__esModule",{value:!0}),e);var d={};a(d,{focusFocusable:()=>F,registerFocusable:()=>g,unregisterFocusable:()=>b});module.exports=i(d);const t=new Map,g=(e,o)=>(process.env.NODE_ENV==="development"&&t.has(e)&&console.warn(`Warning, duplicate ID for input: ${e}`),t.set(e,o),()=>{t.delete(e)}),b=e=>{t.delete(e)},F=(e,o=!1)=>{const s=t.get(e);if(!s){process.env.NODE_ENV==="development"&&console.warn("No input found for id",e);return}o||!s.focusAndSelect?s.focus():s.focusAndSelect()};0&&(module.exports={focusFocusable,registerFocusable,unregisterFocusable});
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var registerFocusable_native_exports = {};
20
+ __export(registerFocusable_native_exports, {
21
+ focusFocusable: () => focusFocusable,
22
+ registerFocusable: () => registerFocusable,
23
+ unregisterFocusable: () => unregisterFocusable
24
+ });
25
+ module.exports = __toCommonJS(registerFocusable_native_exports);
26
+ const InputsMap = /* @__PURE__ */ new Map();
27
+ const registerFocusable = (id, input) => {
28
+ if (process.env.NODE_ENV === "development") {
29
+ if (InputsMap.has(id)) {
30
+ console.warn(`Warning, duplicate ID for input: ${id}`);
31
+ }
32
+ }
33
+ InputsMap.set(id, input);
34
+ return () => {
35
+ InputsMap.delete(id);
36
+ };
37
+ };
38
+ const unregisterFocusable = (id) => {
39
+ InputsMap.delete(id);
40
+ };
41
+ const focusFocusable = (id, select = false) => {
42
+ const input = InputsMap.get(id);
43
+ if (!input) {
44
+ if (process.env.NODE_ENV === "development") {
45
+ console.warn("No input found for id", id);
46
+ }
47
+ return;
48
+ }
49
+ if (select || !input.focusAndSelect) {
50
+ input.focus();
51
+ } else {
52
+ input.focusAndSelect();
53
+ }
54
+ };
55
+ // Annotate the CommonJS export names for ESM import in node:
56
+ 0 && (module.exports = {
57
+ focusFocusable,
58
+ registerFocusable,
59
+ unregisterFocusable
60
+ });
2
61
  //# sourceMappingURL=registerFocusable.native.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/registerFocusable.native.ts"],
4
4
  "sourcesContent": ["// used for focusing on native\n\nimport { Focusable } from './focusable'\n\nconst InputsMap = new Map<string, Focusable>()\n\nexport const registerFocusable = (id: string, input: Focusable) => {\n if (process.env.NODE_ENV === 'development') {\n if (InputsMap.has(id)) {\n // eslint-disable-next-line no-console\n console.warn(`Warning, duplicate ID for input: ${id}`)\n }\n }\n InputsMap.set(id, input)\n return () => {\n InputsMap.delete(id)\n }\n}\n\nexport const unregisterFocusable = (id: string) => {\n InputsMap.delete(id)\n}\n\nexport const focusFocusable = (id: string, select = false) => {\n const input = InputsMap.get(id)\n if (!input) {\n if (process.env.NODE_ENV === 'development') {\n // eslint-disable-next-line no-console\n console.warn('No input found for id', id)\n }\n return\n }\n if (select || !input.focusAndSelect) {\n input.focus()\n } else {\n input.focusAndSelect()\n }\n}\n"],
5
- "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,oBAAAE,EAAA,sBAAAC,EAAA,wBAAAC,IAAA,eAAAC,EAAAL,GAIA,MAAMM,EAAY,IAAI,IAETH,EAAoB,CAACI,EAAYC,KACxC,QAAQ,IAAI,WAAa,eACvBF,EAAU,IAAIC,CAAE,GAElB,QAAQ,KAAK,oCAAoCA,GAAI,EAGzDD,EAAU,IAAIC,EAAIC,CAAK,EAChB,IAAM,CACXF,EAAU,OAAOC,CAAE,CACrB,GAGWH,EAAuBG,GAAe,CACjDD,EAAU,OAAOC,CAAE,CACrB,EAEaL,EAAiB,CAACK,EAAYE,EAAS,KAAU,CAC5D,MAAMD,EAAQF,EAAU,IAAIC,CAAE,EAC9B,GAAI,CAACC,EAAO,CACN,QAAQ,IAAI,WAAa,eAE3B,QAAQ,KAAK,wBAAyBD,CAAE,EAE1C,MACF,CACIE,GAAU,CAACD,EAAM,eACnBA,EAAM,MAAM,EAEZA,EAAM,eAAe,CAEzB",
6
- "names": ["registerFocusable_native_exports", "__export", "focusFocusable", "registerFocusable", "unregisterFocusable", "__toCommonJS", "InputsMap", "id", "input", "select"]
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA,MAAM,YAAY,oBAAI,IAAuB;AAEtC,MAAM,oBAAoB,CAAC,IAAY,UAAqB;AACjE,MAAI,QAAQ,IAAI,aAAa,eAAe;AAC1C,QAAI,UAAU,IAAI,EAAE,GAAG;AAErB,cAAQ,KAAK,oCAAoC,IAAI;AAAA,IACvD;AAAA,EACF;AACA,YAAU,IAAI,IAAI,KAAK;AACvB,SAAO,MAAM;AACX,cAAU,OAAO,EAAE;AAAA,EACrB;AACF;AAEO,MAAM,sBAAsB,CAAC,OAAe;AACjD,YAAU,OAAO,EAAE;AACrB;AAEO,MAAM,iBAAiB,CAAC,IAAY,SAAS,UAAU;AAC5D,QAAM,QAAQ,UAAU,IAAI,EAAE;AAC9B,MAAI,CAAC,OAAO;AACV,QAAI,QAAQ,IAAI,aAAa,eAAe;AAE1C,cAAQ,KAAK,yBAAyB,EAAE;AAAA,IAC1C;AACA;AAAA,EACF;AACA,MAAI,UAAU,CAAC,MAAM,gBAAgB;AACnC,UAAM,MAAM;AAAA,EACd,OAAO;AACL,UAAM,eAAe;AAAA,EACvB;AACF;",
6
+ "names": []
7
7
  }
@@ -1,2 +1,61 @@
1
- import{jsx as h}from"react/jsx-runtime";import{composeRefs as m}from"@tamagui/compose-refs";import{isTamaguiComponent as g,useEvent as C}from"@tamagui/web";import{forwardRef as T,useCallback as v,useEffect as x,useRef as u}from"react";import{registerFocusable as R}from"./registerFocusable";function E(f){return f.extractable(T((t,r)=>{const o=g(f)&&f.staticConfig.isInput,i=u(t.value||t.defaultValue||""),n=u(),a=v(e=>{var c;t.id&&e&&((c=n.current)==null||c.call(n),n.current=R(t.id,{focus:e.focus,...o&&{focusAndSelect(){e.focus(),e.setSelection&&typeof i.current=="string"&&e.setSelection(0,i.current.length)}}}))},[o,t.id]),s=m(r,a);x(()=>()=>{var e;(e=n.current)==null||e.call(n)},[]);const d=C(e=>{var c;i.current=e,(c=t.onChangeText)==null||c.call(t,e)}),l=o?{...t,onChangeText:d}:t;return h(f,{ref:s,...l})}))}export{E as focusableInputHOC};
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { composeRefs } from "@tamagui/compose-refs";
3
+ import { isTamaguiComponent, useEvent } from "@tamagui/web";
4
+ import { forwardRef, useCallback, useEffect, useRef } from "react";
5
+ import { registerFocusable } from "./registerFocusable";
6
+ function focusableInputHOC(Component) {
7
+ const component = Component.extractable(
8
+ forwardRef(
9
+ (props, ref) => {
10
+ const isInput = isTamaguiComponent(Component) && Component.staticConfig.isInput;
11
+ const inputValue = useRef(props.value || props.defaultValue || "");
12
+ const unregisterFocusable = useRef();
13
+ const inputRef = useCallback(
14
+ (input) => {
15
+ var _a;
16
+ if (!props.id)
17
+ return;
18
+ if (!input)
19
+ return;
20
+ (_a = unregisterFocusable.current) == null ? void 0 : _a.call(unregisterFocusable);
21
+ unregisterFocusable.current = registerFocusable(props.id, {
22
+ focus: input.focus,
23
+ ...isInput && {
24
+ // react-native doesn't support programmatic .select()
25
+ focusAndSelect() {
26
+ input.focus();
27
+ if (input.setSelection && typeof inputValue.current === "string") {
28
+ input.setSelection(0, inputValue.current.length);
29
+ }
30
+ }
31
+ }
32
+ });
33
+ },
34
+ [isInput, props.id]
35
+ );
36
+ const combinedRefs = composeRefs(ref, inputRef);
37
+ useEffect(() => {
38
+ return () => {
39
+ var _a;
40
+ (_a = unregisterFocusable.current) == null ? void 0 : _a.call(unregisterFocusable);
41
+ };
42
+ }, []);
43
+ const onChangeText = useEvent((value) => {
44
+ var _a;
45
+ inputValue.current = value;
46
+ (_a = props.onChangeText) == null ? void 0 : _a.call(props, value);
47
+ });
48
+ const finalProps = isInput ? {
49
+ ...props,
50
+ onChangeText
51
+ } : props;
52
+ return /* @__PURE__ */ jsx(Component, { ref: combinedRefs, ...finalProps });
53
+ }
54
+ )
55
+ );
56
+ return component;
57
+ }
58
+ export {
59
+ focusableInputHOC
60
+ };
2
61
  //# sourceMappingURL=focusableInputHOC.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/focusableInputHOC.tsx"],
4
4
  "sourcesContent": ["import { composeRefs } from '@tamagui/compose-refs'\nimport { TamaguiComponent, isTamaguiComponent, useEvent } from '@tamagui/web'\nimport { forwardRef, useCallback, useEffect, useRef } from 'react'\n\nimport { registerFocusable } from './registerFocusable'\n\nexport function focusableInputHOC<A extends TamaguiComponent>(Component: A): A {\n const component = Component.extractable(\n forwardRef(\n (\n props: {\n id?: string\n onChangeText?: (val: string) => void\n value?: string\n defaultValue?: string\n },\n ref\n ) => {\n const isInput = isTamaguiComponent(Component) && Component.staticConfig.isInput\n const inputValue = useRef(props.value || props.defaultValue || '')\n const unregisterFocusable = useRef<() => void | undefined>()\n\n const inputRef = useCallback(\n (input) => {\n if (!props.id) return\n if (!input) return\n unregisterFocusable.current?.()\n unregisterFocusable.current = registerFocusable(props.id, {\n focus: input.focus,\n\n ...(isInput && {\n // react-native doesn't support programmatic .select()\n focusAndSelect() {\n input.focus()\n if (input.setSelection && typeof inputValue.current === 'string') {\n input.setSelection(0, inputValue.current.length)\n }\n },\n }),\n })\n },\n [isInput, props.id]\n )\n\n const combinedRefs = composeRefs(ref, inputRef)\n\n useEffect(() => {\n return () => {\n unregisterFocusable.current?.()\n }\n }, [])\n\n const onChangeText = useEvent((value) => {\n inputValue.current = value\n props.onChangeText?.(value)\n })\n\n const finalProps = isInput\n ? {\n ...props,\n onChangeText,\n }\n : props\n\n // @ts-expect-error\n return <Component ref={combinedRefs} {...finalProps} />\n }\n )\n ) as any\n\n return component\n}\n"],
5
- "mappings": "AAiEe,cAAAA,MAAA,oBAjEf,OAAS,eAAAC,MAAmB,wBAC5B,OAA2B,sBAAAC,EAAoB,YAAAC,MAAgB,eAC/D,OAAS,cAAAC,EAAY,eAAAC,EAAa,aAAAC,EAAW,UAAAC,MAAc,QAE3D,OAAS,qBAAAC,MAAyB,sBAE3B,SAASC,EAA8CC,EAAiB,CAgE7E,OA/DkBA,EAAU,YAC1BN,EACE,CACEO,EAMAC,IACG,CACH,MAAMC,EAAUX,EAAmBQ,CAAS,GAAKA,EAAU,aAAa,QAClEI,EAAaP,EAAOI,EAAM,OAASA,EAAM,cAAgB,EAAE,EAC3DI,EAAsBR,EAA+B,EAErDS,EAAWX,EACdY,GAAU,CAvBrB,IAAAC,EAwBiBP,EAAM,IACNM,KACLC,EAAAH,EAAoB,UAApB,MAAAG,EAAA,KAAAH,GACAA,EAAoB,QAAUP,EAAkBG,EAAM,GAAI,CACxD,MAAOM,EAAM,MAEb,GAAIJ,GAAW,CAEb,gBAAiB,CACfI,EAAM,MAAM,EACRA,EAAM,cAAgB,OAAOH,EAAW,SAAY,UACtDG,EAAM,aAAa,EAAGH,EAAW,QAAQ,MAAM,CAEnD,CACF,CACF,CAAC,EACH,EACA,CAACD,EAASF,EAAM,EAAE,CACpB,EAEMQ,EAAelB,EAAYW,EAAKI,CAAQ,EAE9CV,EAAU,IACD,IAAM,CA/CvB,IAAAY,GAgDYA,EAAAH,EAAoB,UAApB,MAAAG,EAAA,KAAAH,EACF,EACC,CAAC,CAAC,EAEL,MAAMK,EAAejB,EAAUkB,GAAU,CApDjD,IAAAH,EAqDUJ,EAAW,QAAUO,GACrBH,EAAAP,EAAM,eAAN,MAAAO,EAAA,KAAAP,EAAqBU,EACvB,CAAC,EAEKC,EAAaT,EACf,CACE,GAAGF,EACH,aAAAS,CACF,EACAT,EAGJ,OAAOX,EAACU,EAAA,CAAU,IAAKS,EAAe,GAAGG,EAAY,CACvD,CACF,CACF,CAGF",
6
- "names": ["jsx", "composeRefs", "isTamaguiComponent", "useEvent", "forwardRef", "useCallback", "useEffect", "useRef", "registerFocusable", "focusableInputHOC", "Component", "props", "ref", "isInput", "inputValue", "unregisterFocusable", "inputRef", "input", "_a", "combinedRefs", "onChangeText", "value", "finalProps"]
5
+ "mappings": "AAiEe;AAjEf,SAAS,mBAAmB;AAC5B,SAA2B,oBAAoB,gBAAgB;AAC/D,SAAS,YAAY,aAAa,WAAW,cAAc;AAE3D,SAAS,yBAAyB;AAE3B,SAAS,kBAA8C,WAAiB;AAC7E,QAAM,YAAY,UAAU;AAAA,IAC1B;AAAA,MACE,CACE,OAMA,QACG;AACH,cAAM,UAAU,mBAAmB,SAAS,KAAK,UAAU,aAAa;AACxE,cAAM,aAAa,OAAO,MAAM,SAAS,MAAM,gBAAgB,EAAE;AACjE,cAAM,sBAAsB,OAA+B;AAE3D,cAAM,WAAW;AAAA,UACf,CAAC,UAAU;AAvBrB;AAwBY,gBAAI,CAAC,MAAM;AAAI;AACf,gBAAI,CAAC;AAAO;AACZ,sCAAoB,YAApB;AACA,gCAAoB,UAAU,kBAAkB,MAAM,IAAI;AAAA,cACxD,OAAO,MAAM;AAAA,cAEb,GAAI,WAAW;AAAA;AAAA,gBAEb,iBAAiB;AACf,wBAAM,MAAM;AACZ,sBAAI,MAAM,gBAAgB,OAAO,WAAW,YAAY,UAAU;AAChE,0BAAM,aAAa,GAAG,WAAW,QAAQ,MAAM;AAAA,kBACjD;AAAA,gBACF;AAAA,cACF;AAAA,YACF,CAAC;AAAA,UACH;AAAA,UACA,CAAC,SAAS,MAAM,EAAE;AAAA,QACpB;AAEA,cAAM,eAAe,YAAY,KAAK,QAAQ;AAE9C,kBAAU,MAAM;AACd,iBAAO,MAAM;AA/CvB;AAgDY,sCAAoB,YAApB;AAAA,UACF;AAAA,QACF,GAAG,CAAC,CAAC;AAEL,cAAM,eAAe,SAAS,CAAC,UAAU;AApDjD;AAqDU,qBAAW,UAAU;AACrB,sBAAM,iBAAN,+BAAqB;AAAA,QACvB,CAAC;AAED,cAAM,aAAa,UACf;AAAA,UACE,GAAG;AAAA,UACH;AAAA,QACF,IACA;AAGJ,eAAO,oBAAC,aAAU,KAAK,cAAe,GAAG,YAAY;AAAA,MACvD;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;",
6
+ "names": []
7
7
  }
@@ -1,2 +1,61 @@
1
- import{jsx as h}from"react/jsx-runtime";import{composeRefs as m}from"@tamagui/compose-refs";import{isTamaguiComponent as g,useEvent as C}from"@tamagui/web";import{forwardRef as T,useCallback as v,useEffect as x,useRef as u}from"react";import{registerFocusable as R}from"./registerFocusable";function E(f){return f.extractable(T((t,r)=>{const o=g(f)&&f.staticConfig.isInput,i=u(t.value||t.defaultValue||""),n=u(),a=v(e=>{var c;t.id&&e&&((c=n.current)==null||c.call(n),n.current=R(t.id,{focus:e.focus,...o&&{focusAndSelect(){e.focus(),e.setSelection&&typeof i.current=="string"&&e.setSelection(0,i.current.length)}}}))},[o,t.id]),s=m(r,a);x(()=>()=>{var e;(e=n.current)==null||e.call(n)},[]);const d=C(e=>{var c;i.current=e,(c=t.onChangeText)==null||c.call(t,e)}),l=o?{...t,onChangeText:d}:t;return h(f,{ref:s,...l})}))}export{E as focusableInputHOC};
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { composeRefs } from "@tamagui/compose-refs";
3
+ import { isTamaguiComponent, useEvent } from "@tamagui/web";
4
+ import { forwardRef, useCallback, useEffect, useRef } from "react";
5
+ import { registerFocusable } from "./registerFocusable";
6
+ function focusableInputHOC(Component) {
7
+ const component = Component.extractable(
8
+ forwardRef(
9
+ (props, ref) => {
10
+ const isInput = isTamaguiComponent(Component) && Component.staticConfig.isInput;
11
+ const inputValue = useRef(props.value || props.defaultValue || "");
12
+ const unregisterFocusable = useRef();
13
+ const inputRef = useCallback(
14
+ (input) => {
15
+ var _a;
16
+ if (!props.id)
17
+ return;
18
+ if (!input)
19
+ return;
20
+ (_a = unregisterFocusable.current) == null ? void 0 : _a.call(unregisterFocusable);
21
+ unregisterFocusable.current = registerFocusable(props.id, {
22
+ focus: input.focus,
23
+ ...isInput && {
24
+ // react-native doesn't support programmatic .select()
25
+ focusAndSelect() {
26
+ input.focus();
27
+ if (input.setSelection && typeof inputValue.current === "string") {
28
+ input.setSelection(0, inputValue.current.length);
29
+ }
30
+ }
31
+ }
32
+ });
33
+ },
34
+ [isInput, props.id]
35
+ );
36
+ const combinedRefs = composeRefs(ref, inputRef);
37
+ useEffect(() => {
38
+ return () => {
39
+ var _a;
40
+ (_a = unregisterFocusable.current) == null ? void 0 : _a.call(unregisterFocusable);
41
+ };
42
+ }, []);
43
+ const onChangeText = useEvent((value) => {
44
+ var _a;
45
+ inputValue.current = value;
46
+ (_a = props.onChangeText) == null ? void 0 : _a.call(props, value);
47
+ });
48
+ const finalProps = isInput ? {
49
+ ...props,
50
+ onChangeText
51
+ } : props;
52
+ return /* @__PURE__ */ jsx(Component, { ref: combinedRefs, ...finalProps });
53
+ }
54
+ )
55
+ );
56
+ return component;
57
+ }
58
+ export {
59
+ focusableInputHOC
60
+ };
2
61
  //# sourceMappingURL=focusableInputHOC.mjs.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/focusableInputHOC.tsx"],
4
4
  "sourcesContent": ["import { composeRefs } from '@tamagui/compose-refs'\nimport { TamaguiComponent, isTamaguiComponent, useEvent } from '@tamagui/web'\nimport { forwardRef, useCallback, useEffect, useRef } from 'react'\n\nimport { registerFocusable } from './registerFocusable'\n\nexport function focusableInputHOC<A extends TamaguiComponent>(Component: A): A {\n const component = Component.extractable(\n forwardRef(\n (\n props: {\n id?: string\n onChangeText?: (val: string) => void\n value?: string\n defaultValue?: string\n },\n ref\n ) => {\n const isInput = isTamaguiComponent(Component) && Component.staticConfig.isInput\n const inputValue = useRef(props.value || props.defaultValue || '')\n const unregisterFocusable = useRef<() => void | undefined>()\n\n const inputRef = useCallback(\n (input) => {\n if (!props.id) return\n if (!input) return\n unregisterFocusable.current?.()\n unregisterFocusable.current = registerFocusable(props.id, {\n focus: input.focus,\n\n ...(isInput && {\n // react-native doesn't support programmatic .select()\n focusAndSelect() {\n input.focus()\n if (input.setSelection && typeof inputValue.current === 'string') {\n input.setSelection(0, inputValue.current.length)\n }\n },\n }),\n })\n },\n [isInput, props.id]\n )\n\n const combinedRefs = composeRefs(ref, inputRef)\n\n useEffect(() => {\n return () => {\n unregisterFocusable.current?.()\n }\n }, [])\n\n const onChangeText = useEvent((value) => {\n inputValue.current = value\n props.onChangeText?.(value)\n })\n\n const finalProps = isInput\n ? {\n ...props,\n onChangeText,\n }\n : props\n\n // @ts-expect-error\n return <Component ref={combinedRefs} {...finalProps} />\n }\n )\n ) as any\n\n return component\n}\n"],
5
- "mappings": "AAiEe,cAAAA,MAAA,oBAjEf,OAAS,eAAAC,MAAmB,wBAC5B,OAA2B,sBAAAC,EAAoB,YAAAC,MAAgB,eAC/D,OAAS,cAAAC,EAAY,eAAAC,EAAa,aAAAC,EAAW,UAAAC,MAAc,QAE3D,OAAS,qBAAAC,MAAyB,sBAE3B,SAASC,EAA8CC,EAAiB,CAgE7E,OA/DkBA,EAAU,YAC1BN,EACE,CACEO,EAMAC,IACG,CACH,MAAMC,EAAUX,EAAmBQ,CAAS,GAAKA,EAAU,aAAa,QAClEI,EAAaP,EAAOI,EAAM,OAASA,EAAM,cAAgB,EAAE,EAC3DI,EAAsBR,EAA+B,EAErDS,EAAWX,EACdY,GAAU,CAvBrB,IAAAC,EAwBiBP,EAAM,IACNM,KACLC,EAAAH,EAAoB,UAApB,MAAAG,EAAA,KAAAH,GACAA,EAAoB,QAAUP,EAAkBG,EAAM,GAAI,CACxD,MAAOM,EAAM,MAEb,GAAIJ,GAAW,CAEb,gBAAiB,CACfI,EAAM,MAAM,EACRA,EAAM,cAAgB,OAAOH,EAAW,SAAY,UACtDG,EAAM,aAAa,EAAGH,EAAW,QAAQ,MAAM,CAEnD,CACF,CACF,CAAC,EACH,EACA,CAACD,EAASF,EAAM,EAAE,CACpB,EAEMQ,EAAelB,EAAYW,EAAKI,CAAQ,EAE9CV,EAAU,IACD,IAAM,CA/CvB,IAAAY,GAgDYA,EAAAH,EAAoB,UAApB,MAAAG,EAAA,KAAAH,EACF,EACC,CAAC,CAAC,EAEL,MAAMK,EAAejB,EAAUkB,GAAU,CApDjD,IAAAH,EAqDUJ,EAAW,QAAUO,GACrBH,EAAAP,EAAM,eAAN,MAAAO,EAAA,KAAAP,EAAqBU,EACvB,CAAC,EAEKC,EAAaT,EACf,CACE,GAAGF,EACH,aAAAS,CACF,EACAT,EAGJ,OAAOX,EAACU,EAAA,CAAU,IAAKS,EAAe,GAAGG,EAAY,CACvD,CACF,CACF,CAGF",
6
- "names": ["jsx", "composeRefs", "isTamaguiComponent", "useEvent", "forwardRef", "useCallback", "useEffect", "useRef", "registerFocusable", "focusableInputHOC", "Component", "props", "ref", "isInput", "inputValue", "unregisterFocusable", "inputRef", "input", "_a", "combinedRefs", "onChangeText", "value", "finalProps"]
5
+ "mappings": "AAiEe;AAjEf,SAAS,mBAAmB;AAC5B,SAA2B,oBAAoB,gBAAgB;AAC/D,SAAS,YAAY,aAAa,WAAW,cAAc;AAE3D,SAAS,yBAAyB;AAE3B,SAAS,kBAA8C,WAAiB;AAC7E,QAAM,YAAY,UAAU;AAAA,IAC1B;AAAA,MACE,CACE,OAMA,QACG;AACH,cAAM,UAAU,mBAAmB,SAAS,KAAK,UAAU,aAAa;AACxE,cAAM,aAAa,OAAO,MAAM,SAAS,MAAM,gBAAgB,EAAE;AACjE,cAAM,sBAAsB,OAA+B;AAE3D,cAAM,WAAW;AAAA,UACf,CAAC,UAAU;AAvBrB;AAwBY,gBAAI,CAAC,MAAM;AAAI;AACf,gBAAI,CAAC;AAAO;AACZ,sCAAoB,YAApB;AACA,gCAAoB,UAAU,kBAAkB,MAAM,IAAI;AAAA,cACxD,OAAO,MAAM;AAAA,cAEb,GAAI,WAAW;AAAA;AAAA,gBAEb,iBAAiB;AACf,wBAAM,MAAM;AACZ,sBAAI,MAAM,gBAAgB,OAAO,WAAW,YAAY,UAAU;AAChE,0BAAM,aAAa,GAAG,WAAW,QAAQ,MAAM;AAAA,kBACjD;AAAA,gBACF;AAAA,cACF;AAAA,YACF,CAAC;AAAA,UACH;AAAA,UACA,CAAC,SAAS,MAAM,EAAE;AAAA,QACpB;AAEA,cAAM,eAAe,YAAY,KAAK,QAAQ;AAE9C,kBAAU,MAAM;AACd,iBAAO,MAAM;AA/CvB;AAgDY,sCAAoB,YAApB;AAAA,UACF;AAAA,QACF,GAAG,CAAC,CAAC;AAEL,cAAM,eAAe,SAAS,CAAC,UAAU;AApDjD;AAqDU,qBAAW,UAAU;AACrB,sBAAM,iBAAN,+BAAqB;AAAA,QACvB,CAAC;AAED,cAAM,aAAa,UACf;AAAA,UACE,GAAG;AAAA,UACH;AAAA,QACF,IACA;AAGJ,eAAO,oBAAC,aAAU,KAAK,cAAe,GAAG,YAAY;AAAA,MACvD;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;",
6
+ "names": []
7
7
  }
package/dist/esm/index.js CHANGED
@@ -1,2 +1,4 @@
1
- export*from"./registerFocusable";export*from"./focusableInputHOC";export*from"./focusable";
1
+ export * from "./registerFocusable";
2
+ export * from "./focusableInputHOC";
3
+ export * from "./focusable";
2
4
  //# sourceMappingURL=index.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/index.ts"],
4
4
  "sourcesContent": ["export * from './registerFocusable'\nexport * from './focusableInputHOC'\nexport * from './focusable'\n"],
5
- "mappings": "AAAA,WAAc,sBACd,WAAc,sBACd,WAAc",
5
+ "mappings": "AAAA,cAAc;AACd,cAAc;AACd,cAAc;",
6
6
  "names": []
7
7
  }
@@ -1,2 +1,4 @@
1
- export*from"./registerFocusable";export*from"./focusableInputHOC";export*from"./focusable";
1
+ export * from "./registerFocusable";
2
+ export * from "./focusableInputHOC";
3
+ export * from "./focusable";
2
4
  //# sourceMappingURL=index.mjs.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/index.ts"],
4
4
  "sourcesContent": ["export * from './registerFocusable'\nexport * from './focusableInputHOC'\nexport * from './focusable'\n"],
5
- "mappings": "AAAA,WAAc,sBACd,WAAc,sBACd,WAAc",
5
+ "mappings": "AAAA,cAAc;AACd,cAAc;AACd,cAAc;",
6
6
  "names": []
7
7
  }
@@ -1,2 +1,12 @@
1
- const r=(o,s)=>()=>{},i=o=>{},c=o=>{};export{c as focusFocusable,r as registerFocusable,i as unregisterFocusable};
1
+ const registerFocusable = (id, input) => () => {
2
+ };
3
+ const unregisterFocusable = (id) => {
4
+ };
5
+ const focusFocusable = (id) => {
6
+ };
7
+ export {
8
+ focusFocusable,
9
+ registerFocusable,
10
+ unregisterFocusable
11
+ };
2
12
  //# sourceMappingURL=registerFocusable.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/registerFocusable.ts"],
4
4
  "sourcesContent": ["import { Focusable } from './focusable'\n\nexport const registerFocusable = (id: string, input: Focusable) => () => {\n // noop focus is handed natively\n}\n\nexport const unregisterFocusable = (id: string) => {\n // noop focus is handed natively\n}\n\nexport const focusFocusable = (id: string) => {\n // noop focus is handed natively\n}\n"],
5
- "mappings": "AAEO,MAAMA,EAAoB,CAACC,EAAYC,IAAqB,IAAM,CAEzE,EAEaC,EAAuBF,GAAe,CAEnD,EAEaG,EAAkBH,GAAe,CAE9C",
6
- "names": ["registerFocusable", "id", "input", "unregisterFocusable", "focusFocusable"]
5
+ "mappings": "AAEO,MAAM,oBAAoB,CAAC,IAAY,UAAqB,MAAM;AAEzE;AAEO,MAAM,sBAAsB,CAAC,OAAe;AAEnD;AAEO,MAAM,iBAAiB,CAAC,OAAe;AAE9C;",
6
+ "names": []
7
7
  }
@@ -1,2 +1,12 @@
1
- const r=(o,s)=>()=>{},i=o=>{},c=o=>{};export{c as focusFocusable,r as registerFocusable,i as unregisterFocusable};
1
+ const registerFocusable = (id, input) => () => {
2
+ };
3
+ const unregisterFocusable = (id) => {
4
+ };
5
+ const focusFocusable = (id) => {
6
+ };
7
+ export {
8
+ focusFocusable,
9
+ registerFocusable,
10
+ unregisterFocusable
11
+ };
2
12
  //# sourceMappingURL=registerFocusable.mjs.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/registerFocusable.ts"],
4
4
  "sourcesContent": ["import { Focusable } from './focusable'\n\nexport const registerFocusable = (id: string, input: Focusable) => () => {\n // noop focus is handed natively\n}\n\nexport const unregisterFocusable = (id: string) => {\n // noop focus is handed natively\n}\n\nexport const focusFocusable = (id: string) => {\n // noop focus is handed natively\n}\n"],
5
- "mappings": "AAEO,MAAMA,EAAoB,CAACC,EAAYC,IAAqB,IAAM,CAEzE,EAEaC,EAAuBF,GAAe,CAEnD,EAEaG,EAAkBH,GAAe,CAE9C",
6
- "names": ["registerFocusable", "id", "input", "unregisterFocusable", "focusFocusable"]
5
+ "mappings": "AAEO,MAAM,oBAAoB,CAAC,IAAY,UAAqB,MAAM;AAEzE;AAEO,MAAM,sBAAsB,CAAC,OAAe;AAEnD;AAEO,MAAM,iBAAiB,CAAC,OAAe;AAE9C;",
6
+ "names": []
7
7
  }
@@ -1,2 +1,35 @@
1
- const o=new Map,c=(e,n)=>(process.env.NODE_ENV==="development"&&o.has(e)&&console.warn(`Warning, duplicate ID for input: ${e}`),o.set(e,n),()=>{o.delete(e)}),u=e=>{o.delete(e)},l=(e,n=!1)=>{const s=o.get(e);if(!s){process.env.NODE_ENV==="development"&&console.warn("No input found for id",e);return}n||!s.focusAndSelect?s.focus():s.focusAndSelect()};export{l as focusFocusable,c as registerFocusable,u as unregisterFocusable};
1
+ const InputsMap = /* @__PURE__ */ new Map();
2
+ const registerFocusable = (id, input) => {
3
+ if (process.env.NODE_ENV === "development") {
4
+ if (InputsMap.has(id)) {
5
+ console.warn(`Warning, duplicate ID for input: ${id}`);
6
+ }
7
+ }
8
+ InputsMap.set(id, input);
9
+ return () => {
10
+ InputsMap.delete(id);
11
+ };
12
+ };
13
+ const unregisterFocusable = (id) => {
14
+ InputsMap.delete(id);
15
+ };
16
+ const focusFocusable = (id, select = false) => {
17
+ const input = InputsMap.get(id);
18
+ if (!input) {
19
+ if (process.env.NODE_ENV === "development") {
20
+ console.warn("No input found for id", id);
21
+ }
22
+ return;
23
+ }
24
+ if (select || !input.focusAndSelect) {
25
+ input.focus();
26
+ } else {
27
+ input.focusAndSelect();
28
+ }
29
+ };
30
+ export {
31
+ focusFocusable,
32
+ registerFocusable,
33
+ unregisterFocusable
34
+ };
2
35
  //# sourceMappingURL=registerFocusable.native.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/registerFocusable.native.ts"],
4
4
  "sourcesContent": ["// used for focusing on native\n\nimport { Focusable } from './focusable'\n\nconst InputsMap = new Map<string, Focusable>()\n\nexport const registerFocusable = (id: string, input: Focusable) => {\n if (process.env.NODE_ENV === 'development') {\n if (InputsMap.has(id)) {\n // eslint-disable-next-line no-console\n console.warn(`Warning, duplicate ID for input: ${id}`)\n }\n }\n InputsMap.set(id, input)\n return () => {\n InputsMap.delete(id)\n }\n}\n\nexport const unregisterFocusable = (id: string) => {\n InputsMap.delete(id)\n}\n\nexport const focusFocusable = (id: string, select = false) => {\n const input = InputsMap.get(id)\n if (!input) {\n if (process.env.NODE_ENV === 'development') {\n // eslint-disable-next-line no-console\n console.warn('No input found for id', id)\n }\n return\n }\n if (select || !input.focusAndSelect) {\n input.focus()\n } else {\n input.focusAndSelect()\n }\n}\n"],
5
- "mappings": "AAIA,MAAMA,EAAY,IAAI,IAETC,EAAoB,CAACC,EAAYC,KACxC,QAAQ,IAAI,WAAa,eACvBH,EAAU,IAAIE,CAAE,GAElB,QAAQ,KAAK,oCAAoCA,GAAI,EAGzDF,EAAU,IAAIE,EAAIC,CAAK,EAChB,IAAM,CACXH,EAAU,OAAOE,CAAE,CACrB,GAGWE,EAAuBF,GAAe,CACjDF,EAAU,OAAOE,CAAE,CACrB,EAEaG,EAAiB,CAACH,EAAYI,EAAS,KAAU,CAC5D,MAAMH,EAAQH,EAAU,IAAIE,CAAE,EAC9B,GAAI,CAACC,EAAO,CACN,QAAQ,IAAI,WAAa,eAE3B,QAAQ,KAAK,wBAAyBD,CAAE,EAE1C,MACF,CACII,GAAU,CAACH,EAAM,eACnBA,EAAM,MAAM,EAEZA,EAAM,eAAe,CAEzB",
6
- "names": ["InputsMap", "registerFocusable", "id", "input", "unregisterFocusable", "focusFocusable", "select"]
5
+ "mappings": "AAIA,MAAM,YAAY,oBAAI,IAAuB;AAEtC,MAAM,oBAAoB,CAAC,IAAY,UAAqB;AACjE,MAAI,QAAQ,IAAI,aAAa,eAAe;AAC1C,QAAI,UAAU,IAAI,EAAE,GAAG;AAErB,cAAQ,KAAK,oCAAoC,IAAI;AAAA,IACvD;AAAA,EACF;AACA,YAAU,IAAI,IAAI,KAAK;AACvB,SAAO,MAAM;AACX,cAAU,OAAO,EAAE;AAAA,EACrB;AACF;AAEO,MAAM,sBAAsB,CAAC,OAAe;AACjD,YAAU,OAAO,EAAE;AACrB;AAEO,MAAM,iBAAiB,CAAC,IAAY,SAAS,UAAU;AAC5D,QAAM,QAAQ,UAAU,IAAI,EAAE;AAC9B,MAAI,CAAC,OAAO;AACV,QAAI,QAAQ,IAAI,aAAa,eAAe;AAE1C,cAAQ,KAAK,yBAAyB,EAAE;AAAA,IAC1C;AACA;AAAA,EACF;AACA,MAAI,UAAU,CAAC,MAAM,gBAAgB;AACnC,UAAM,MAAM;AAAA,EACd,OAAO;AACL,UAAM,eAAe;AAAA,EACvB;AACF;",
6
+ "names": []
7
7
  }
@@ -1,2 +1,35 @@
1
- const o=new Map,c=(e,n)=>(process.env.NODE_ENV==="development"&&o.has(e)&&console.warn(`Warning, duplicate ID for input: ${e}`),o.set(e,n),()=>{o.delete(e)}),u=e=>{o.delete(e)},l=(e,n=!1)=>{const s=o.get(e);if(!s){process.env.NODE_ENV==="development"&&console.warn("No input found for id",e);return}n||!s.focusAndSelect?s.focus():s.focusAndSelect()};export{l as focusFocusable,c as registerFocusable,u as unregisterFocusable};
1
+ const InputsMap = /* @__PURE__ */ new Map();
2
+ const registerFocusable = (id, input) => {
3
+ if (process.env.NODE_ENV === "development") {
4
+ if (InputsMap.has(id)) {
5
+ console.warn(`Warning, duplicate ID for input: ${id}`);
6
+ }
7
+ }
8
+ InputsMap.set(id, input);
9
+ return () => {
10
+ InputsMap.delete(id);
11
+ };
12
+ };
13
+ const unregisterFocusable = (id) => {
14
+ InputsMap.delete(id);
15
+ };
16
+ const focusFocusable = (id, select = false) => {
17
+ const input = InputsMap.get(id);
18
+ if (!input) {
19
+ if (process.env.NODE_ENV === "development") {
20
+ console.warn("No input found for id", id);
21
+ }
22
+ return;
23
+ }
24
+ if (select || !input.focusAndSelect) {
25
+ input.focus();
26
+ } else {
27
+ input.focusAndSelect();
28
+ }
29
+ };
30
+ export {
31
+ focusFocusable,
32
+ registerFocusable,
33
+ unregisterFocusable
34
+ };
2
35
  //# sourceMappingURL=registerFocusable.native.mjs.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/registerFocusable.native.ts"],
4
4
  "sourcesContent": ["// used for focusing on native\n\nimport { Focusable } from './focusable'\n\nconst InputsMap = new Map<string, Focusable>()\n\nexport const registerFocusable = (id: string, input: Focusable) => {\n if (process.env.NODE_ENV === 'development') {\n if (InputsMap.has(id)) {\n // eslint-disable-next-line no-console\n console.warn(`Warning, duplicate ID for input: ${id}`)\n }\n }\n InputsMap.set(id, input)\n return () => {\n InputsMap.delete(id)\n }\n}\n\nexport const unregisterFocusable = (id: string) => {\n InputsMap.delete(id)\n}\n\nexport const focusFocusable = (id: string, select = false) => {\n const input = InputsMap.get(id)\n if (!input) {\n if (process.env.NODE_ENV === 'development') {\n // eslint-disable-next-line no-console\n console.warn('No input found for id', id)\n }\n return\n }\n if (select || !input.focusAndSelect) {\n input.focus()\n } else {\n input.focusAndSelect()\n }\n}\n"],
5
- "mappings": "AAIA,MAAMA,EAAY,IAAI,IAETC,EAAoB,CAACC,EAAYC,KACxC,QAAQ,IAAI,WAAa,eACvBH,EAAU,IAAIE,CAAE,GAElB,QAAQ,KAAK,oCAAoCA,GAAI,EAGzDF,EAAU,IAAIE,EAAIC,CAAK,EAChB,IAAM,CACXH,EAAU,OAAOE,CAAE,CACrB,GAGWE,EAAuBF,GAAe,CACjDF,EAAU,OAAOE,CAAE,CACrB,EAEaG,EAAiB,CAACH,EAAYI,EAAS,KAAU,CAC5D,MAAMH,EAAQH,EAAU,IAAIE,CAAE,EAC9B,GAAI,CAACC,EAAO,CACN,QAAQ,IAAI,WAAa,eAE3B,QAAQ,KAAK,wBAAyBD,CAAE,EAE1C,MACF,CACII,GAAU,CAACH,EAAM,eACnBA,EAAM,MAAM,EAEZA,EAAM,eAAe,CAEzB",
6
- "names": ["InputsMap", "registerFocusable", "id", "input", "unregisterFocusable", "focusFocusable", "select"]
5
+ "mappings": "AAIA,MAAM,YAAY,oBAAI,IAAuB;AAEtC,MAAM,oBAAoB,CAAC,IAAY,UAAqB;AACjE,MAAI,QAAQ,IAAI,aAAa,eAAe;AAC1C,QAAI,UAAU,IAAI,EAAE,GAAG;AAErB,cAAQ,KAAK,oCAAoC,IAAI;AAAA,IACvD;AAAA,EACF;AACA,YAAU,IAAI,IAAI,KAAK;AACvB,SAAO,MAAM;AACX,cAAU,OAAO,EAAE;AAAA,EACrB;AACF;AAEO,MAAM,sBAAsB,CAAC,OAAe;AACjD,YAAU,OAAO,EAAE;AACrB;AAEO,MAAM,iBAAiB,CAAC,IAAY,SAAS,UAAU;AAC5D,QAAM,QAAQ,UAAU,IAAI,EAAE;AAC9B,MAAI,CAAC,OAAO;AACV,QAAI,QAAQ,IAAI,aAAa,eAAe;AAE1C,cAAQ,KAAK,yBAAyB,EAAE;AAAA,IAC1C;AACA;AAAA,EACF;AACA,MAAI,UAAU,CAAC,MAAM,gBAAgB;AACnC,UAAM,MAAM;AAAA,EACd,OAAO;AACL,UAAM,eAAe;AAAA,EACvB;AACF;",
6
+ "names": []
7
7
  }
@@ -1,2 +1,57 @@
1
- import{composeRefs as E}from"@tamagui/compose-refs";import{isTamaguiComponent as F,useEvent as k}from"@tamagui/web";import{forwardRef as w,useCallback as H,useEffect as O,useRef as h}from"react";import{registerFocusable as P}from"./registerFocusable";function J(C){return C.extractable(w((e,A)=>{const T=F(C)&&C.staticConfig.isInput,v=h(e.value||e.defaultValue||""),R=h(),I=H(t=>{e.id&&t&&(R.current?.(),R.current=P(e.id,{focus:t.focus,...T&&{focusAndSelect(){t.focus(),t.setSelection&&typeof v.current=="string"&&t.setSelection(0,v.current.length)}}}))},[T,e.id]),S=E(A,I);O(()=>()=>{R.current?.()},[]);const V=k(t=>{v.current=t,e.onChangeText?.(t)}),y=T?{...e,onChangeText:V}:e;return<C ref={S}{...y}/>}))}export{J as focusableInputHOC};
1
+ import { composeRefs } from "@tamagui/compose-refs";
2
+ import { isTamaguiComponent, useEvent } from "@tamagui/web";
3
+ import { forwardRef, useCallback, useEffect, useRef } from "react";
4
+ import { registerFocusable } from "./registerFocusable";
5
+ function focusableInputHOC(Component) {
6
+ const component = Component.extractable(
7
+ forwardRef(
8
+ (props, ref) => {
9
+ const isInput = isTamaguiComponent(Component) && Component.staticConfig.isInput;
10
+ const inputValue = useRef(props.value || props.defaultValue || "");
11
+ const unregisterFocusable = useRef();
12
+ const inputRef = useCallback(
13
+ (input) => {
14
+ if (!props.id)
15
+ return;
16
+ if (!input)
17
+ return;
18
+ unregisterFocusable.current?.();
19
+ unregisterFocusable.current = registerFocusable(props.id, {
20
+ focus: input.focus,
21
+ ...isInput && {
22
+ // react-native doesn't support programmatic .select()
23
+ focusAndSelect() {
24
+ input.focus();
25
+ if (input.setSelection && typeof inputValue.current === "string") {
26
+ input.setSelection(0, inputValue.current.length);
27
+ }
28
+ }
29
+ }
30
+ });
31
+ },
32
+ [isInput, props.id]
33
+ );
34
+ const combinedRefs = composeRefs(ref, inputRef);
35
+ useEffect(() => {
36
+ return () => {
37
+ unregisterFocusable.current?.();
38
+ };
39
+ }, []);
40
+ const onChangeText = useEvent((value) => {
41
+ inputValue.current = value;
42
+ props.onChangeText?.(value);
43
+ });
44
+ const finalProps = isInput ? {
45
+ ...props,
46
+ onChangeText
47
+ } : props;
48
+ return <Component ref={combinedRefs} {...finalProps} />;
49
+ }
50
+ )
51
+ );
52
+ return component;
53
+ }
54
+ export {
55
+ focusableInputHOC
56
+ };
2
57
  //# sourceMappingURL=focusableInputHOC.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/focusableInputHOC.tsx"],
4
4
  "sourcesContent": ["import { composeRefs } from '@tamagui/compose-refs'\nimport { TamaguiComponent, isTamaguiComponent, useEvent } from '@tamagui/web'\nimport { forwardRef, useCallback, useEffect, useRef } from 'react'\n\nimport { registerFocusable } from './registerFocusable'\n\nexport function focusableInputHOC<A extends TamaguiComponent>(Component: A): A {\n const component = Component.extractable(\n forwardRef(\n (\n props: {\n id?: string\n onChangeText?: (val: string) => void\n value?: string\n defaultValue?: string\n },\n ref\n ) => {\n const isInput = isTamaguiComponent(Component) && Component.staticConfig.isInput\n const inputValue = useRef(props.value || props.defaultValue || '')\n const unregisterFocusable = useRef<() => void | undefined>()\n\n const inputRef = useCallback(\n (input) => {\n if (!props.id) return\n if (!input) return\n unregisterFocusable.current?.()\n unregisterFocusable.current = registerFocusable(props.id, {\n focus: input.focus,\n\n ...(isInput && {\n // react-native doesn't support programmatic .select()\n focusAndSelect() {\n input.focus()\n if (input.setSelection && typeof inputValue.current === 'string') {\n input.setSelection(0, inputValue.current.length)\n }\n },\n }),\n })\n },\n [isInput, props.id]\n )\n\n const combinedRefs = composeRefs(ref, inputRef)\n\n useEffect(() => {\n return () => {\n unregisterFocusable.current?.()\n }\n }, [])\n\n const onChangeText = useEvent((value) => {\n inputValue.current = value\n props.onChangeText?.(value)\n })\n\n const finalProps = isInput\n ? {\n ...props,\n onChangeText,\n }\n : props\n\n // @ts-expect-error\n return <Component ref={combinedRefs} {...finalProps} />\n }\n )\n ) as any\n\n return component\n}\n"],
5
- "mappings": "AAAA,OAAS,eAAAA,MAAmB,wBAC5B,OAA2B,sBAAAC,EAAoB,YAAAC,MAAgB,eAC/D,OAAS,cAAAC,EAAY,eAAAC,EAAa,aAAAC,EAAW,UAAAC,MAAc,QAE3D,OAAS,qBAAAC,MAAyB,sBAE3B,SAASC,EAA8CC,EAAiB,CAgE7E,OA/DkBA,EAAU,YAC1BN,EACE,CACEO,EAMAC,IACG,CACH,MAAMC,EAAUX,EAAmBQ,CAAS,GAAKA,EAAU,aAAa,QAClEI,EAAaP,EAAOI,EAAM,OAASA,EAAM,cAAgB,EAAE,EAC3DI,EAAsBR,EAA+B,EAErDS,EAAWX,EACdY,GAAU,CACJN,EAAM,IACNM,IACLF,EAAoB,UAAU,EAC9BA,EAAoB,QAAUP,EAAkBG,EAAM,GAAI,CACxD,MAAOM,EAAM,MAEb,GAAIJ,GAAW,CAEb,gBAAiB,CACfI,EAAM,MAAM,EACRA,EAAM,cAAgB,OAAOH,EAAW,SAAY,UACtDG,EAAM,aAAa,EAAGH,EAAW,QAAQ,MAAM,CAEnD,CACF,CACF,CAAC,EACH,EACA,CAACD,EAASF,EAAM,EAAE,CACpB,EAEMO,EAAejB,EAAYW,EAAKI,CAAQ,EAE9CV,EAAU,IACD,IAAM,CACXS,EAAoB,UAAU,CAChC,EACC,CAAC,CAAC,EAEL,MAAMI,EAAehB,EAAUiB,GAAU,CACvCN,EAAW,QAAUM,EACrBT,EAAM,eAAeS,CAAK,CAC5B,CAAC,EAEKC,EAAaR,EACf,CACE,GAAGF,EACH,aAAAQ,CACF,EACAR,EAGJ,MAAO,CAACD,EAAU,KAAKQ,MAAkBG,EAAY,EACvD,CACF,CACF,CAGF",
6
- "names": ["composeRefs", "isTamaguiComponent", "useEvent", "forwardRef", "useCallback", "useEffect", "useRef", "registerFocusable", "focusableInputHOC", "Component", "props", "ref", "isInput", "inputValue", "unregisterFocusable", "inputRef", "input", "combinedRefs", "onChangeText", "value", "finalProps"]
5
+ "mappings": "AAAA,SAAS,mBAAmB;AAC5B,SAA2B,oBAAoB,gBAAgB;AAC/D,SAAS,YAAY,aAAa,WAAW,cAAc;AAE3D,SAAS,yBAAyB;AAE3B,SAAS,kBAA8C,WAAiB;AAC7E,QAAM,YAAY,UAAU;AAAA,IAC1B;AAAA,MACE,CACE,OAMA,QACG;AACH,cAAM,UAAU,mBAAmB,SAAS,KAAK,UAAU,aAAa;AACxE,cAAM,aAAa,OAAO,MAAM,SAAS,MAAM,gBAAgB,EAAE;AACjE,cAAM,sBAAsB,OAA+B;AAE3D,cAAM,WAAW;AAAA,UACf,CAAC,UAAU;AACT,gBAAI,CAAC,MAAM;AAAI;AACf,gBAAI,CAAC;AAAO;AACZ,gCAAoB,UAAU;AAC9B,gCAAoB,UAAU,kBAAkB,MAAM,IAAI;AAAA,cACxD,OAAO,MAAM;AAAA,cAEb,GAAI,WAAW;AAAA;AAAA,gBAEb,iBAAiB;AACf,wBAAM,MAAM;AACZ,sBAAI,MAAM,gBAAgB,OAAO,WAAW,YAAY,UAAU;AAChE,0BAAM,aAAa,GAAG,WAAW,QAAQ,MAAM;AAAA,kBACjD;AAAA,gBACF;AAAA,cACF;AAAA,YACF,CAAC;AAAA,UACH;AAAA,UACA,CAAC,SAAS,MAAM,EAAE;AAAA,QACpB;AAEA,cAAM,eAAe,YAAY,KAAK,QAAQ;AAE9C,kBAAU,MAAM;AACd,iBAAO,MAAM;AACX,gCAAoB,UAAU;AAAA,UAChC;AAAA,QACF,GAAG,CAAC,CAAC;AAEL,cAAM,eAAe,SAAS,CAAC,UAAU;AACvC,qBAAW,UAAU;AACrB,gBAAM,eAAe,KAAK;AAAA,QAC5B,CAAC;AAED,cAAM,aAAa,UACf;AAAA,UACE,GAAG;AAAA,UACH;AAAA,QACF,IACA;AAGJ,eAAO,CAAC,UAAU,KAAK,kBAAkB,YAAY;AAAA,MACvD;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;",
6
+ "names": []
7
7
  }
@@ -1,2 +1,57 @@
1
- import{composeRefs as E}from"@tamagui/compose-refs";import{isTamaguiComponent as F,useEvent as k}from"@tamagui/web";import{forwardRef as w,useCallback as H,useEffect as O,useRef as h}from"react";import{registerFocusable as P}from"./registerFocusable";function J(C){return C.extractable(w((e,A)=>{const T=F(C)&&C.staticConfig.isInput,v=h(e.value||e.defaultValue||""),R=h(),I=H(t=>{e.id&&t&&(R.current?.(),R.current=P(e.id,{focus:t.focus,...T&&{focusAndSelect(){t.focus(),t.setSelection&&typeof v.current=="string"&&t.setSelection(0,v.current.length)}}}))},[T,e.id]),S=E(A,I);O(()=>()=>{R.current?.()},[]);const V=k(t=>{v.current=t,e.onChangeText?.(t)}),y=T?{...e,onChangeText:V}:e;return<C ref={S}{...y}/>}))}export{J as focusableInputHOC};
1
+ import { composeRefs } from "@tamagui/compose-refs";
2
+ import { isTamaguiComponent, useEvent } from "@tamagui/web";
3
+ import { forwardRef, useCallback, useEffect, useRef } from "react";
4
+ import { registerFocusable } from "./registerFocusable";
5
+ function focusableInputHOC(Component) {
6
+ const component = Component.extractable(
7
+ forwardRef(
8
+ (props, ref) => {
9
+ const isInput = isTamaguiComponent(Component) && Component.staticConfig.isInput;
10
+ const inputValue = useRef(props.value || props.defaultValue || "");
11
+ const unregisterFocusable = useRef();
12
+ const inputRef = useCallback(
13
+ (input) => {
14
+ if (!props.id)
15
+ return;
16
+ if (!input)
17
+ return;
18
+ unregisterFocusable.current?.();
19
+ unregisterFocusable.current = registerFocusable(props.id, {
20
+ focus: input.focus,
21
+ ...isInput && {
22
+ // react-native doesn't support programmatic .select()
23
+ focusAndSelect() {
24
+ input.focus();
25
+ if (input.setSelection && typeof inputValue.current === "string") {
26
+ input.setSelection(0, inputValue.current.length);
27
+ }
28
+ }
29
+ }
30
+ });
31
+ },
32
+ [isInput, props.id]
33
+ );
34
+ const combinedRefs = composeRefs(ref, inputRef);
35
+ useEffect(() => {
36
+ return () => {
37
+ unregisterFocusable.current?.();
38
+ };
39
+ }, []);
40
+ const onChangeText = useEvent((value) => {
41
+ inputValue.current = value;
42
+ props.onChangeText?.(value);
43
+ });
44
+ const finalProps = isInput ? {
45
+ ...props,
46
+ onChangeText
47
+ } : props;
48
+ return <Component ref={combinedRefs} {...finalProps} />;
49
+ }
50
+ )
51
+ );
52
+ return component;
53
+ }
54
+ export {
55
+ focusableInputHOC
56
+ };
2
57
  //# sourceMappingURL=focusableInputHOC.mjs.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/focusableInputHOC.tsx"],
4
4
  "sourcesContent": ["import { composeRefs } from '@tamagui/compose-refs'\nimport { TamaguiComponent, isTamaguiComponent, useEvent } from '@tamagui/web'\nimport { forwardRef, useCallback, useEffect, useRef } from 'react'\n\nimport { registerFocusable } from './registerFocusable'\n\nexport function focusableInputHOC<A extends TamaguiComponent>(Component: A): A {\n const component = Component.extractable(\n forwardRef(\n (\n props: {\n id?: string\n onChangeText?: (val: string) => void\n value?: string\n defaultValue?: string\n },\n ref\n ) => {\n const isInput = isTamaguiComponent(Component) && Component.staticConfig.isInput\n const inputValue = useRef(props.value || props.defaultValue || '')\n const unregisterFocusable = useRef<() => void | undefined>()\n\n const inputRef = useCallback(\n (input) => {\n if (!props.id) return\n if (!input) return\n unregisterFocusable.current?.()\n unregisterFocusable.current = registerFocusable(props.id, {\n focus: input.focus,\n\n ...(isInput && {\n // react-native doesn't support programmatic .select()\n focusAndSelect() {\n input.focus()\n if (input.setSelection && typeof inputValue.current === 'string') {\n input.setSelection(0, inputValue.current.length)\n }\n },\n }),\n })\n },\n [isInput, props.id]\n )\n\n const combinedRefs = composeRefs(ref, inputRef)\n\n useEffect(() => {\n return () => {\n unregisterFocusable.current?.()\n }\n }, [])\n\n const onChangeText = useEvent((value) => {\n inputValue.current = value\n props.onChangeText?.(value)\n })\n\n const finalProps = isInput\n ? {\n ...props,\n onChangeText,\n }\n : props\n\n // @ts-expect-error\n return <Component ref={combinedRefs} {...finalProps} />\n }\n )\n ) as any\n\n return component\n}\n"],
5
- "mappings": "AAAA,OAAS,eAAAA,MAAmB,wBAC5B,OAA2B,sBAAAC,EAAoB,YAAAC,MAAgB,eAC/D,OAAS,cAAAC,EAAY,eAAAC,EAAa,aAAAC,EAAW,UAAAC,MAAc,QAE3D,OAAS,qBAAAC,MAAyB,sBAE3B,SAASC,EAA8CC,EAAiB,CAgE7E,OA/DkBA,EAAU,YAC1BN,EACE,CACEO,EAMAC,IACG,CACH,MAAMC,EAAUX,EAAmBQ,CAAS,GAAKA,EAAU,aAAa,QAClEI,EAAaP,EAAOI,EAAM,OAASA,EAAM,cAAgB,EAAE,EAC3DI,EAAsBR,EAA+B,EAErDS,EAAWX,EACdY,GAAU,CACJN,EAAM,IACNM,IACLF,EAAoB,UAAU,EAC9BA,EAAoB,QAAUP,EAAkBG,EAAM,GAAI,CACxD,MAAOM,EAAM,MAEb,GAAIJ,GAAW,CAEb,gBAAiB,CACfI,EAAM,MAAM,EACRA,EAAM,cAAgB,OAAOH,EAAW,SAAY,UACtDG,EAAM,aAAa,EAAGH,EAAW,QAAQ,MAAM,CAEnD,CACF,CACF,CAAC,EACH,EACA,CAACD,EAASF,EAAM,EAAE,CACpB,EAEMO,EAAejB,EAAYW,EAAKI,CAAQ,EAE9CV,EAAU,IACD,IAAM,CACXS,EAAoB,UAAU,CAChC,EACC,CAAC,CAAC,EAEL,MAAMI,EAAehB,EAAUiB,GAAU,CACvCN,EAAW,QAAUM,EACrBT,EAAM,eAAeS,CAAK,CAC5B,CAAC,EAEKC,EAAaR,EACf,CACE,GAAGF,EACH,aAAAQ,CACF,EACAR,EAGJ,MAAO,CAACD,EAAU,KAAKQ,MAAkBG,EAAY,EACvD,CACF,CACF,CAGF",
6
- "names": ["composeRefs", "isTamaguiComponent", "useEvent", "forwardRef", "useCallback", "useEffect", "useRef", "registerFocusable", "focusableInputHOC", "Component", "props", "ref", "isInput", "inputValue", "unregisterFocusable", "inputRef", "input", "combinedRefs", "onChangeText", "value", "finalProps"]
5
+ "mappings": "AAAA,SAAS,mBAAmB;AAC5B,SAA2B,oBAAoB,gBAAgB;AAC/D,SAAS,YAAY,aAAa,WAAW,cAAc;AAE3D,SAAS,yBAAyB;AAE3B,SAAS,kBAA8C,WAAiB;AAC7E,QAAM,YAAY,UAAU;AAAA,IAC1B;AAAA,MACE,CACE,OAMA,QACG;AACH,cAAM,UAAU,mBAAmB,SAAS,KAAK,UAAU,aAAa;AACxE,cAAM,aAAa,OAAO,MAAM,SAAS,MAAM,gBAAgB,EAAE;AACjE,cAAM,sBAAsB,OAA+B;AAE3D,cAAM,WAAW;AAAA,UACf,CAAC,UAAU;AACT,gBAAI,CAAC,MAAM;AAAI;AACf,gBAAI,CAAC;AAAO;AACZ,gCAAoB,UAAU;AAC9B,gCAAoB,UAAU,kBAAkB,MAAM,IAAI;AAAA,cACxD,OAAO,MAAM;AAAA,cAEb,GAAI,WAAW;AAAA;AAAA,gBAEb,iBAAiB;AACf,wBAAM,MAAM;AACZ,sBAAI,MAAM,gBAAgB,OAAO,WAAW,YAAY,UAAU;AAChE,0BAAM,aAAa,GAAG,WAAW,QAAQ,MAAM;AAAA,kBACjD;AAAA,gBACF;AAAA,cACF;AAAA,YACF,CAAC;AAAA,UACH;AAAA,UACA,CAAC,SAAS,MAAM,EAAE;AAAA,QACpB;AAEA,cAAM,eAAe,YAAY,KAAK,QAAQ;AAE9C,kBAAU,MAAM;AACd,iBAAO,MAAM;AACX,gCAAoB,UAAU;AAAA,UAChC;AAAA,QACF,GAAG,CAAC,CAAC;AAEL,cAAM,eAAe,SAAS,CAAC,UAAU;AACvC,qBAAW,UAAU;AACrB,gBAAM,eAAe,KAAK;AAAA,QAC5B,CAAC;AAED,cAAM,aAAa,UACf;AAAA,UACE,GAAG;AAAA,UACH;AAAA,QACF,IACA;AAGJ,eAAO,CAAC,UAAU,KAAK,kBAAkB,YAAY;AAAA,MACvD;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;",
6
+ "names": []
7
7
  }
package/dist/jsx/index.js CHANGED
@@ -1,2 +1,4 @@
1
- export*from"./registerFocusable";export*from"./focusableInputHOC";export*from"./focusable";
1
+ export * from "./registerFocusable";
2
+ export * from "./focusableInputHOC";
3
+ export * from "./focusable";
2
4
  //# sourceMappingURL=index.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/index.ts"],
4
4
  "sourcesContent": ["export * from './registerFocusable'\nexport * from './focusableInputHOC'\nexport * from './focusable'\n"],
5
- "mappings": "AAAA,WAAc,sBACd,WAAc,sBACd,WAAc",
5
+ "mappings": "AAAA,cAAc;AACd,cAAc;AACd,cAAc;",
6
6
  "names": []
7
7
  }
@@ -1,2 +1,4 @@
1
- export*from"./registerFocusable";export*from"./focusableInputHOC";export*from"./focusable";
1
+ export * from "./registerFocusable";
2
+ export * from "./focusableInputHOC";
3
+ export * from "./focusable";
2
4
  //# sourceMappingURL=index.mjs.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/index.ts"],
4
4
  "sourcesContent": ["export * from './registerFocusable'\nexport * from './focusableInputHOC'\nexport * from './focusable'\n"],
5
- "mappings": "AAAA,WAAc,sBACd,WAAc,sBACd,WAAc",
5
+ "mappings": "AAAA,cAAc;AACd,cAAc;AACd,cAAc;",
6
6
  "names": []
7
7
  }
@@ -1,2 +1,12 @@
1
- const r=(o,s)=>()=>{},i=o=>{},c=o=>{};export{c as focusFocusable,r as registerFocusable,i as unregisterFocusable};
1
+ const registerFocusable = (id, input) => () => {
2
+ };
3
+ const unregisterFocusable = (id) => {
4
+ };
5
+ const focusFocusable = (id) => {
6
+ };
7
+ export {
8
+ focusFocusable,
9
+ registerFocusable,
10
+ unregisterFocusable
11
+ };
2
12
  //# sourceMappingURL=registerFocusable.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/registerFocusable.ts"],
4
4
  "sourcesContent": ["import { Focusable } from './focusable'\n\nexport const registerFocusable = (id: string, input: Focusable) => () => {\n // noop focus is handed natively\n}\n\nexport const unregisterFocusable = (id: string) => {\n // noop focus is handed natively\n}\n\nexport const focusFocusable = (id: string) => {\n // noop focus is handed natively\n}\n"],
5
- "mappings": "AAEO,MAAMA,EAAoB,CAACC,EAAYC,IAAqB,IAAM,CAEzE,EAEaC,EAAuBF,GAAe,CAEnD,EAEaG,EAAkBH,GAAe,CAE9C",
6
- "names": ["registerFocusable", "id", "input", "unregisterFocusable", "focusFocusable"]
5
+ "mappings": "AAEO,MAAM,oBAAoB,CAAC,IAAY,UAAqB,MAAM;AAEzE;AAEO,MAAM,sBAAsB,CAAC,OAAe;AAEnD;AAEO,MAAM,iBAAiB,CAAC,OAAe;AAE9C;",
6
+ "names": []
7
7
  }
@@ -1,2 +1,12 @@
1
- const r=(o,s)=>()=>{},i=o=>{},c=o=>{};export{c as focusFocusable,r as registerFocusable,i as unregisterFocusable};
1
+ const registerFocusable = (id, input) => () => {
2
+ };
3
+ const unregisterFocusable = (id) => {
4
+ };
5
+ const focusFocusable = (id) => {
6
+ };
7
+ export {
8
+ focusFocusable,
9
+ registerFocusable,
10
+ unregisterFocusable
11
+ };
2
12
  //# sourceMappingURL=registerFocusable.mjs.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/registerFocusable.ts"],
4
4
  "sourcesContent": ["import { Focusable } from './focusable'\n\nexport const registerFocusable = (id: string, input: Focusable) => () => {\n // noop focus is handed natively\n}\n\nexport const unregisterFocusable = (id: string) => {\n // noop focus is handed natively\n}\n\nexport const focusFocusable = (id: string) => {\n // noop focus is handed natively\n}\n"],
5
- "mappings": "AAEO,MAAMA,EAAoB,CAACC,EAAYC,IAAqB,IAAM,CAEzE,EAEaC,EAAuBF,GAAe,CAEnD,EAEaG,EAAkBH,GAAe,CAE9C",
6
- "names": ["registerFocusable", "id", "input", "unregisterFocusable", "focusFocusable"]
5
+ "mappings": "AAEO,MAAM,oBAAoB,CAAC,IAAY,UAAqB,MAAM;AAEzE;AAEO,MAAM,sBAAsB,CAAC,OAAe;AAEnD;AAEO,MAAM,iBAAiB,CAAC,OAAe;AAE9C;",
6
+ "names": []
7
7
  }
@@ -1,2 +1,35 @@
1
- const o=new Map,c=(e,n)=>(process.env.NODE_ENV==="development"&&o.has(e)&&console.warn(`Warning, duplicate ID for input: ${e}`),o.set(e,n),()=>{o.delete(e)}),u=e=>{o.delete(e)},l=(e,n=!1)=>{const s=o.get(e);if(!s){process.env.NODE_ENV==="development"&&console.warn("No input found for id",e);return}n||!s.focusAndSelect?s.focus():s.focusAndSelect()};export{l as focusFocusable,c as registerFocusable,u as unregisterFocusable};
1
+ const InputsMap = /* @__PURE__ */ new Map();
2
+ const registerFocusable = (id, input) => {
3
+ if (process.env.NODE_ENV === "development") {
4
+ if (InputsMap.has(id)) {
5
+ console.warn(`Warning, duplicate ID for input: ${id}`);
6
+ }
7
+ }
8
+ InputsMap.set(id, input);
9
+ return () => {
10
+ InputsMap.delete(id);
11
+ };
12
+ };
13
+ const unregisterFocusable = (id) => {
14
+ InputsMap.delete(id);
15
+ };
16
+ const focusFocusable = (id, select = false) => {
17
+ const input = InputsMap.get(id);
18
+ if (!input) {
19
+ if (process.env.NODE_ENV === "development") {
20
+ console.warn("No input found for id", id);
21
+ }
22
+ return;
23
+ }
24
+ if (select || !input.focusAndSelect) {
25
+ input.focus();
26
+ } else {
27
+ input.focusAndSelect();
28
+ }
29
+ };
30
+ export {
31
+ focusFocusable,
32
+ registerFocusable,
33
+ unregisterFocusable
34
+ };
2
35
  //# sourceMappingURL=registerFocusable.native.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/registerFocusable.native.ts"],
4
4
  "sourcesContent": ["// used for focusing on native\n\nimport { Focusable } from './focusable'\n\nconst InputsMap = new Map<string, Focusable>()\n\nexport const registerFocusable = (id: string, input: Focusable) => {\n if (process.env.NODE_ENV === 'development') {\n if (InputsMap.has(id)) {\n // eslint-disable-next-line no-console\n console.warn(`Warning, duplicate ID for input: ${id}`)\n }\n }\n InputsMap.set(id, input)\n return () => {\n InputsMap.delete(id)\n }\n}\n\nexport const unregisterFocusable = (id: string) => {\n InputsMap.delete(id)\n}\n\nexport const focusFocusable = (id: string, select = false) => {\n const input = InputsMap.get(id)\n if (!input) {\n if (process.env.NODE_ENV === 'development') {\n // eslint-disable-next-line no-console\n console.warn('No input found for id', id)\n }\n return\n }\n if (select || !input.focusAndSelect) {\n input.focus()\n } else {\n input.focusAndSelect()\n }\n}\n"],
5
- "mappings": "AAIA,MAAMA,EAAY,IAAI,IAETC,EAAoB,CAACC,EAAYC,KACxC,QAAQ,IAAI,WAAa,eACvBH,EAAU,IAAIE,CAAE,GAElB,QAAQ,KAAK,oCAAoCA,GAAI,EAGzDF,EAAU,IAAIE,EAAIC,CAAK,EAChB,IAAM,CACXH,EAAU,OAAOE,CAAE,CACrB,GAGWE,EAAuBF,GAAe,CACjDF,EAAU,OAAOE,CAAE,CACrB,EAEaG,EAAiB,CAACH,EAAYI,EAAS,KAAU,CAC5D,MAAMH,EAAQH,EAAU,IAAIE,CAAE,EAC9B,GAAI,CAACC,EAAO,CACN,QAAQ,IAAI,WAAa,eAE3B,QAAQ,KAAK,wBAAyBD,CAAE,EAE1C,MACF,CACII,GAAU,CAACH,EAAM,eACnBA,EAAM,MAAM,EAEZA,EAAM,eAAe,CAEzB",
6
- "names": ["InputsMap", "registerFocusable", "id", "input", "unregisterFocusable", "focusFocusable", "select"]
5
+ "mappings": "AAIA,MAAM,YAAY,oBAAI,IAAuB;AAEtC,MAAM,oBAAoB,CAAC,IAAY,UAAqB;AACjE,MAAI,QAAQ,IAAI,aAAa,eAAe;AAC1C,QAAI,UAAU,IAAI,EAAE,GAAG;AAErB,cAAQ,KAAK,oCAAoC,IAAI;AAAA,IACvD;AAAA,EACF;AACA,YAAU,IAAI,IAAI,KAAK;AACvB,SAAO,MAAM;AACX,cAAU,OAAO,EAAE;AAAA,EACrB;AACF;AAEO,MAAM,sBAAsB,CAAC,OAAe;AACjD,YAAU,OAAO,EAAE;AACrB;AAEO,MAAM,iBAAiB,CAAC,IAAY,SAAS,UAAU;AAC5D,QAAM,QAAQ,UAAU,IAAI,EAAE;AAC9B,MAAI,CAAC,OAAO;AACV,QAAI,QAAQ,IAAI,aAAa,eAAe;AAE1C,cAAQ,KAAK,yBAAyB,EAAE;AAAA,IAC1C;AACA;AAAA,EACF;AACA,MAAI,UAAU,CAAC,MAAM,gBAAgB;AACnC,UAAM,MAAM;AAAA,EACd,OAAO;AACL,UAAM,eAAe;AAAA,EACvB;AACF;",
6
+ "names": []
7
7
  }
@@ -1,2 +1,35 @@
1
- const o=new Map,c=(e,n)=>(process.env.NODE_ENV==="development"&&o.has(e)&&console.warn(`Warning, duplicate ID for input: ${e}`),o.set(e,n),()=>{o.delete(e)}),u=e=>{o.delete(e)},l=(e,n=!1)=>{const s=o.get(e);if(!s){process.env.NODE_ENV==="development"&&console.warn("No input found for id",e);return}n||!s.focusAndSelect?s.focus():s.focusAndSelect()};export{l as focusFocusable,c as registerFocusable,u as unregisterFocusable};
1
+ const InputsMap = /* @__PURE__ */ new Map();
2
+ const registerFocusable = (id, input) => {
3
+ if (process.env.NODE_ENV === "development") {
4
+ if (InputsMap.has(id)) {
5
+ console.warn(`Warning, duplicate ID for input: ${id}`);
6
+ }
7
+ }
8
+ InputsMap.set(id, input);
9
+ return () => {
10
+ InputsMap.delete(id);
11
+ };
12
+ };
13
+ const unregisterFocusable = (id) => {
14
+ InputsMap.delete(id);
15
+ };
16
+ const focusFocusable = (id, select = false) => {
17
+ const input = InputsMap.get(id);
18
+ if (!input) {
19
+ if (process.env.NODE_ENV === "development") {
20
+ console.warn("No input found for id", id);
21
+ }
22
+ return;
23
+ }
24
+ if (select || !input.focusAndSelect) {
25
+ input.focus();
26
+ } else {
27
+ input.focusAndSelect();
28
+ }
29
+ };
30
+ export {
31
+ focusFocusable,
32
+ registerFocusable,
33
+ unregisterFocusable
34
+ };
2
35
  //# sourceMappingURL=registerFocusable.native.mjs.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/registerFocusable.native.ts"],
4
4
  "sourcesContent": ["// used for focusing on native\n\nimport { Focusable } from './focusable'\n\nconst InputsMap = new Map<string, Focusable>()\n\nexport const registerFocusable = (id: string, input: Focusable) => {\n if (process.env.NODE_ENV === 'development') {\n if (InputsMap.has(id)) {\n // eslint-disable-next-line no-console\n console.warn(`Warning, duplicate ID for input: ${id}`)\n }\n }\n InputsMap.set(id, input)\n return () => {\n InputsMap.delete(id)\n }\n}\n\nexport const unregisterFocusable = (id: string) => {\n InputsMap.delete(id)\n}\n\nexport const focusFocusable = (id: string, select = false) => {\n const input = InputsMap.get(id)\n if (!input) {\n if (process.env.NODE_ENV === 'development') {\n // eslint-disable-next-line no-console\n console.warn('No input found for id', id)\n }\n return\n }\n if (select || !input.focusAndSelect) {\n input.focus()\n } else {\n input.focusAndSelect()\n }\n}\n"],
5
- "mappings": "AAIA,MAAMA,EAAY,IAAI,IAETC,EAAoB,CAACC,EAAYC,KACxC,QAAQ,IAAI,WAAa,eACvBH,EAAU,IAAIE,CAAE,GAElB,QAAQ,KAAK,oCAAoCA,GAAI,EAGzDF,EAAU,IAAIE,EAAIC,CAAK,EAChB,IAAM,CACXH,EAAU,OAAOE,CAAE,CACrB,GAGWE,EAAuBF,GAAe,CACjDF,EAAU,OAAOE,CAAE,CACrB,EAEaG,EAAiB,CAACH,EAAYI,EAAS,KAAU,CAC5D,MAAMH,EAAQH,EAAU,IAAIE,CAAE,EAC9B,GAAI,CAACC,EAAO,CACN,QAAQ,IAAI,WAAa,eAE3B,QAAQ,KAAK,wBAAyBD,CAAE,EAE1C,MACF,CACII,GAAU,CAACH,EAAM,eACnBA,EAAM,MAAM,EAEZA,EAAM,eAAe,CAEzB",
6
- "names": ["InputsMap", "registerFocusable", "id", "input", "unregisterFocusable", "focusFocusable", "select"]
5
+ "mappings": "AAIA,MAAM,YAAY,oBAAI,IAAuB;AAEtC,MAAM,oBAAoB,CAAC,IAAY,UAAqB;AACjE,MAAI,QAAQ,IAAI,aAAa,eAAe;AAC1C,QAAI,UAAU,IAAI,EAAE,GAAG;AAErB,cAAQ,KAAK,oCAAoC,IAAI;AAAA,IACvD;AAAA,EACF;AACA,YAAU,IAAI,IAAI,KAAK;AACvB,SAAO,MAAM;AACX,cAAU,OAAO,EAAE;AAAA,EACrB;AACF;AAEO,MAAM,sBAAsB,CAAC,OAAe;AACjD,YAAU,OAAO,EAAE;AACrB;AAEO,MAAM,iBAAiB,CAAC,IAAY,SAAS,UAAU;AAC5D,QAAM,QAAQ,UAAU,IAAI,EAAE;AAC9B,MAAI,CAAC,OAAO;AACV,QAAI,QAAQ,IAAI,aAAa,eAAe;AAE1C,cAAQ,KAAK,yBAAyB,EAAE;AAAA,IAC1C;AACA;AAAA,EACF;AACA,MAAI,UAAU,CAAC,MAAM,gBAAgB;AACnC,UAAM,MAAM;AAAA,EACd,OAAO;AACL,UAAM,eAAe;AAAA,EACvB;AACF;",
6
+ "names": []
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tamagui/focusable",
3
- "version": "1.14.1",
3
+ "version": "1.14.2",
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.14.1",
26
- "@tamagui/web": "1.14.1"
25
+ "@tamagui/compose-refs": "1.14.2",
26
+ "@tamagui/web": "1.14.2"
27
27
  },
28
28
  "peerDependencies": {
29
29
  "react": "*"
30
30
  },
31
31
  "devDependencies": {
32
- "@tamagui/build": "1.14.1",
32
+ "@tamagui/build": "1.14.2",
33
33
  "react": "^18.2.0"
34
34
  },
35
35
  "publishConfig": {