@tamagui/input 1.143.1 → 2.0.0-1767740890268

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 (130) hide show
  1. package/dist/cjs/Input.cjs +57 -122
  2. package/dist/cjs/Input.js +46 -115
  3. package/dist/cjs/Input.js.map +1 -1
  4. package/dist/cjs/Input.native.js +133 -71
  5. package/dist/cjs/Input.native.js.map +1 -1
  6. package/dist/cjs/TextArea.cjs +1 -1
  7. package/dist/cjs/TextArea.js +1 -1
  8. package/dist/cjs/TextArea.js.map +1 -1
  9. package/dist/cjs/TextArea.native.js +1 -1
  10. package/dist/cjs/TextArea.native.js.map +1 -1
  11. package/dist/cjs/v1/Input.cjs +190 -0
  12. package/dist/cjs/v1/Input.js +171 -0
  13. package/dist/cjs/v1/Input.js.map +6 -0
  14. package/dist/cjs/v1/Input.native.js +138 -0
  15. package/dist/cjs/v1/Input.native.js.map +1 -0
  16. package/dist/cjs/v1/TextArea.cjs +50 -0
  17. package/dist/cjs/v1/TextArea.js +43 -0
  18. package/dist/cjs/v1/TextArea.js.map +6 -0
  19. package/dist/cjs/v1/TextArea.native.js +53 -0
  20. package/dist/cjs/v1/TextArea.native.js.map +1 -0
  21. package/dist/cjs/v1/index.cjs +19 -0
  22. package/dist/cjs/v1/index.js +16 -0
  23. package/dist/cjs/v1/index.js.map +6 -0
  24. package/dist/cjs/v1/index.native.js +22 -0
  25. package/dist/cjs/v1/index.native.js.map +1 -0
  26. package/dist/cjs/v1/types.cjs +16 -0
  27. package/dist/cjs/v1/types.js +14 -0
  28. package/dist/cjs/v1/types.js.map +6 -0
  29. package/dist/cjs/v1/types.native.js +19 -0
  30. package/dist/cjs/v1/types.native.js.map +1 -0
  31. package/dist/esm/Input.js +47 -116
  32. package/dist/esm/Input.js.map +1 -1
  33. package/dist/esm/Input.mjs +58 -123
  34. package/dist/esm/Input.mjs.map +1 -1
  35. package/dist/esm/Input.native.js +134 -72
  36. package/dist/esm/Input.native.js.map +1 -1
  37. package/dist/esm/TextArea.js +1 -1
  38. package/dist/esm/TextArea.js.map +1 -1
  39. package/dist/esm/TextArea.mjs +1 -1
  40. package/dist/esm/TextArea.mjs.map +1 -1
  41. package/dist/esm/TextArea.native.js +1 -1
  42. package/dist/esm/TextArea.native.js.map +1 -1
  43. package/dist/esm/v1/Input.js +151 -0
  44. package/dist/esm/v1/Input.js.map +6 -0
  45. package/dist/esm/v1/Input.mjs +156 -0
  46. package/dist/esm/v1/Input.mjs.map +1 -0
  47. package/dist/esm/v1/Input.native.js +101 -0
  48. package/dist/esm/v1/Input.native.js.map +1 -0
  49. package/dist/esm/v1/TextArea.js +29 -0
  50. package/dist/esm/v1/TextArea.js.map +6 -0
  51. package/dist/esm/v1/TextArea.mjs +27 -0
  52. package/dist/esm/v1/TextArea.mjs.map +1 -0
  53. package/dist/esm/v1/TextArea.native.js +27 -0
  54. package/dist/esm/v1/TextArea.native.js.map +1 -0
  55. package/dist/esm/v1/index.js +3 -0
  56. package/dist/esm/v1/index.js.map +6 -0
  57. package/dist/esm/v1/index.mjs +3 -0
  58. package/dist/esm/v1/index.mjs.map +1 -0
  59. package/dist/esm/v1/index.native.js +3 -0
  60. package/dist/esm/v1/index.native.js.map +1 -0
  61. package/dist/esm/v1/types.js +1 -0
  62. package/dist/esm/v1/types.js.map +6 -0
  63. package/dist/esm/v1/types.mjs +2 -0
  64. package/dist/esm/v1/types.mjs.map +1 -0
  65. package/dist/esm/v1/types.native.js +2 -0
  66. package/dist/esm/v1/types.native.js.map +1 -0
  67. package/dist/jsx/Input.js +47 -116
  68. package/dist/jsx/Input.js.map +1 -1
  69. package/dist/jsx/Input.mjs +58 -123
  70. package/dist/jsx/Input.mjs.map +1 -1
  71. package/dist/jsx/Input.native.js +133 -71
  72. package/dist/jsx/Input.native.js.map +1 -1
  73. package/dist/jsx/TextArea.js +1 -1
  74. package/dist/jsx/TextArea.js.map +1 -1
  75. package/dist/jsx/TextArea.mjs +1 -1
  76. package/dist/jsx/TextArea.mjs.map +1 -1
  77. package/dist/jsx/TextArea.native.js +1 -1
  78. package/dist/jsx/TextArea.native.js.map +1 -1
  79. package/dist/jsx/v1/Input.js +151 -0
  80. package/dist/jsx/v1/Input.js.map +6 -0
  81. package/dist/jsx/v1/Input.mjs +156 -0
  82. package/dist/jsx/v1/Input.mjs.map +1 -0
  83. package/dist/jsx/v1/Input.native.js +138 -0
  84. package/dist/jsx/v1/Input.native.js.map +1 -0
  85. package/dist/jsx/v1/TextArea.js +29 -0
  86. package/dist/jsx/v1/TextArea.js.map +6 -0
  87. package/dist/jsx/v1/TextArea.mjs +27 -0
  88. package/dist/jsx/v1/TextArea.mjs.map +1 -0
  89. package/dist/jsx/v1/TextArea.native.js +53 -0
  90. package/dist/jsx/v1/TextArea.native.js.map +1 -0
  91. package/dist/jsx/v1/index.js +3 -0
  92. package/dist/jsx/v1/index.js.map +6 -0
  93. package/dist/jsx/v1/index.mjs +3 -0
  94. package/dist/jsx/v1/index.mjs.map +1 -0
  95. package/dist/jsx/v1/index.native.js +22 -0
  96. package/dist/jsx/v1/index.native.js.map +1 -0
  97. package/dist/jsx/v1/types.js +1 -0
  98. package/dist/jsx/v1/types.js.map +6 -0
  99. package/dist/jsx/v1/types.mjs +2 -0
  100. package/dist/jsx/v1/types.mjs.map +1 -0
  101. package/dist/jsx/v1/types.native.js +19 -0
  102. package/dist/jsx/v1/types.native.js.map +1 -0
  103. package/package.json +13 -13
  104. package/src/Input.native.tsx +145 -110
  105. package/src/Input.tsx +67 -137
  106. package/src/TextArea.tsx +4 -2
  107. package/src/types.ts +52 -41
  108. package/src/v1/Input.native.tsx +154 -0
  109. package/src/v1/Input.tsx +191 -0
  110. package/src/v1/TextArea.tsx +35 -0
  111. package/src/v1/index.ts +3 -0
  112. package/src/v1/types.ts +65 -0
  113. package/types/Input.d.ts +47 -21
  114. package/types/Input.d.ts.map +1 -1
  115. package/types/Input.native.d.ts +52 -22
  116. package/types/Input.native.d.ts.map +1 -1
  117. package/types/TextArea.d.ts +25 -11
  118. package/types/TextArea.d.ts.map +1 -1
  119. package/types/types.d.ts +47 -21
  120. package/types/types.d.ts.map +1 -1
  121. package/types/v1/Input.d.ts +115 -0
  122. package/types/v1/Input.d.ts.map +1 -0
  123. package/types/v1/Input.native.d.ts +114 -0
  124. package/types/v1/Input.native.d.ts.map +1 -0
  125. package/types/v1/TextArea.d.ts +98 -0
  126. package/types/v1/TextArea.d.ts.map +1 -0
  127. package/types/v1/index.d.ts +4 -0
  128. package/types/v1/index.d.ts.map +1 -0
  129. package/types/v1/types.d.ts +39 -0
  130. package/types/v1/types.d.ts.map +1 -0
package/dist/jsx/Input.js CHANGED
@@ -1,117 +1,58 @@
1
- import { View, styled, useComposedRefs, useEvent, useTheme } from "@tamagui/core";
1
+ import { View, styled, useComposedRefs, useTheme } from "@tamagui/core";
2
2
  import { registerFocusable } from "@tamagui/focusable";
3
3
  import React from "react";
4
4
  import { styledBody } from "./shared";
5
5
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
6
- const StyledInput = styled(View, styledBody[0], styledBody[1]), Input = StyledInput.styleable((inProps, forwardedRef) => {
6
+ const StyledInput = styled(View, styledBody[0], styledBody[1]), Input = StyledInput.styleable((props, forwardedRef) => {
7
7
  const {
8
- // some of destructed props are just to avoid passing them to ...rest because they are not in web.
9
- allowFontScaling,
10
- selectTextOnFocus,
11
- showSoftInputOnFocus,
12
- textContentType,
13
- passwordRules,
14
- textBreakStrategy,
15
- underlineColorAndroid,
16
- selection,
17
- lineBreakStrategyIOS,
18
- returnKeyLabel,
19
8
  disabled,
20
- onSubmitEditing,
21
- caretHidden,
22
- clearButtonMode,
23
- clearTextOnFocus,
24
- contextMenuHidden,
25
- dataDetectorTypes,
26
9
  id,
27
- enablesReturnKeyAutomatically,
28
- importantForAutofill,
29
- inlineImageLeft,
30
- inlineImagePadding,
31
- inputAccessoryViewID,
32
- keyboardAppearance,
33
- keyboardType,
34
- cursorColor,
35
- disableFullscreenUI,
36
- editable,
37
- maxFontSizeMultiplier,
38
- multiline,
39
- numberOfLines,
40
10
  onChangeText,
41
- onContentSizeChange,
42
- onEndEditing,
43
- onScroll,
11
+ onSubmitEditing,
44
12
  onSelectionChange,
45
- caretColor,
13
+ selection,
46
14
  placeholderTextColor,
47
- blurOnSubmit,
48
- enterKeyHint,
49
- returnKeyType,
50
- rejectResponderTermination,
51
- scrollEnabled,
52
- secureTextEntry,
53
15
  selectionColor,
54
- inputMode,
16
+ rows,
55
17
  ...rest
56
- } = inProps, ref = React.useRef(null), theme = useTheme(), composedRefs = useComposedRefs(forwardedRef, ref), _onSelectionChange = useEvent(() => {
57
- const start = ref.current?.selectionStart ?? 0, end = ref.current?.selectionEnd ?? 0;
58
- onSelectionChange?.({
59
- nativeEvent: {
60
- selection: {
61
- end,
62
- start
63
- }
64
- }
65
- });
66
- });
18
+ } = props, ref = React.useRef(null), theme = useTheme(), composedRefs = useComposedRefs(forwardedRef, ref);
67
19
  React.useEffect(() => {
68
- if (onSelectionChange)
69
- return ref.current?.addEventListener("selectionchange", _onSelectionChange), () => {
70
- ref.current?.removeEventListener("selectionchange", _onSelectionChange);
71
- };
72
- }, []), React.useEffect(() => {
73
- selection && ref.current?.setSelectionRange(selection.start || null, selection.end || null);
74
- }, [selection?.start, selection?.end]);
75
- const finalProps = {
20
+ if (!onSelectionChange) return;
21
+ const node = ref.current;
22
+ if (!node) return;
23
+ const handleSelectionChange = () => {
24
+ onSelectionChange({
25
+ nativeEvent: {
26
+ selection: {
27
+ start: node.selectionStart ?? 0,
28
+ end: node.selectionEnd ?? 0
29
+ }
30
+ }
31
+ });
32
+ };
33
+ return node.addEventListener("select", handleSelectionChange), () => node.removeEventListener("select", handleSelectionChange);
34
+ }, [onSelectionChange]), React.useEffect(() => {
35
+ selection && ref.current && ref.current.setSelectionRange(selection.start, selection.end ?? selection.start);
36
+ }, [selection?.start, selection?.end]), React.useEffect(() => {
37
+ if (!(!id || disabled))
38
+ return registerFocusable(id, {
39
+ focusAndSelect: () => ref.current?.focus(),
40
+ focus: () => ref.current?.focus()
41
+ });
42
+ }, [id, disabled]);
43
+ const handleKeyDown = (e) => {
44
+ e.key === "Enter" && onSubmitEditing && onSubmitEditing({
45
+ nativeEvent: { text: e.target.value }
46
+ }), rest.onKeyDown?.(e);
47
+ }, handleChange = (e) => {
48
+ onChangeText?.(e.target.value), rest.onChange?.(e);
49
+ }, finalProps = {
76
50
  ...rest,
77
51
  disabled,
78
- caretColor,
79
52
  id,
80
- enterKeyHint,
81
- type: (() => {
82
- if (rest?.type) return rest.type;
83
- if (secureTextEntry) return "password";
84
- switch (keyboardType) {
85
- case "number-pad":
86
- case "numeric":
87
- return "number";
88
- case "email-address":
89
- return "email";
90
- case "phone-pad":
91
- return "tel";
92
- case "url":
93
- return "url";
94
- default:
95
- return "text";
96
- }
97
- })(),
98
- inputMode: (() => {
99
- switch (keyboardType) {
100
- case "number-pad":
101
- case "numeric":
102
- return "numeric";
103
- case "decimal-pad":
104
- return "decimal";
105
- case "email-address":
106
- return "email";
107
- case "phone-pad":
108
- return "tel";
109
- case "url":
110
- return "url";
111
- default:
112
- return;
113
- }
114
- })(),
53
+ rows,
54
+ onKeyDown: onSubmitEditing ? handleKeyDown : rest.onKeyDown,
55
+ onChange: onChangeText ? handleChange : rest.onChange,
115
56
  style: {
116
57
  ...rest.style,
117
58
  ...placeholderTextColor && {
@@ -122,25 +63,15 @@ const StyledInput = styled(View, styledBody[0], styledBody[1]), Input = StyledIn
122
63
  }
123
64
  }
124
65
  };
125
- return React.useEffect(() => {
126
- if (id && !disabled)
127
- return registerFocusable(id, {
128
- focusAndSelect: () => {
129
- ref.current?.focus();
130
- },
131
- focus: () => {
132
- }
133
- });
134
- }, [id, disabled]), /* @__PURE__ */ jsxs(Fragment, { children: [
66
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
135
67
  /* @__PURE__ */ jsx("style", { children: `
136
- input::selection, textarea::selection {
137
- background-color: var(--selectionBackground) !important;
138
- }
139
-
140
- input::placeholder, textarea::placeholder {
141
- color: var(--placeholderColor) !important;
142
- }
143
- ` }),
68
+ input::selection, textarea::selection {
69
+ background-color: var(--selectionColor) !important;
70
+ }
71
+ input::placeholder, textarea::placeholder {
72
+ color: var(--placeholderColor) !important;
73
+ }
74
+ ` }),
144
75
  /* @__PURE__ */ jsx(StyledInput, { ref: composedRefs, ...finalProps })
145
76
  ] });
146
77
  });
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/Input.tsx"],
4
- "mappings": "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",
4
+ "mappings": "AAAA,SAAS,MAAM,QAAQ,iBAAiB,gBAAgB;AACxD,SAAS,yBAAyB;AAClC,OAAO,WAAW;AAClB,SAAS,kBAAkB;AAqGvB,mBACE,KADF;AAlGJ,MAAM,cAAc,OAAO,MAAM,WAAW,CAAC,GAAG,WAAW,CAAC,CAAC,GAMhD,QAAQ,YAAY,UAAsB,CAAC,OAAO,iBAAiB;AAC9E,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,IAAI,OAEE,MAAM,MAAM,OAAyB,IAAI,GACzC,QAAQ,SAAS,GACjB,eAAe,gBAAgB,cAAc,GAAG;AAGtD,QAAM,UAAU,MAAM;AACpB,QAAI,CAAC,kBAAmB;AAExB,UAAM,OAAO,IAAI;AACjB,QAAI,CAAC,KAAM;AAEX,UAAM,wBAAwB,MAAM;AAClC,wBAAkB;AAAA,QAChB,aAAa;AAAA,UACX,WAAW;AAAA,YACT,OAAO,KAAK,kBAAkB;AAAA,YAC9B,KAAK,KAAK,gBAAgB;AAAA,UAC5B;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAEA,gBAAK,iBAAiB,UAAU,qBAAqB,GAC9C,MAAM,KAAK,oBAAoB,UAAU,qBAAqB;AAAA,EACvE,GAAG,CAAC,iBAAiB,CAAC,GAGtB,MAAM,UAAU,MAAM;AACpB,IAAI,aAAa,IAAI,WACnB,IAAI,QAAQ,kBAAkB,UAAU,OAAO,UAAU,OAAO,UAAU,KAAK;AAAA,EAEnF,GAAG,CAAC,WAAW,OAAO,WAAW,GAAG,CAAC,GAGrC,MAAM,UAAU,MAAM;AACpB,QAAI,GAAC,MAAM;AACX,aAAO,kBAAkB,IAAI;AAAA,QAC3B,gBAAgB,MAAM,IAAI,SAAS,MAAM;AAAA,QACzC,OAAO,MAAM,IAAI,SAAS,MAAM;AAAA,MAClC,CAAC;AAAA,EACH,GAAG,CAAC,IAAI,QAAQ,CAAC;AAGjB,QAAM,gBAAgB,CAAC,MAA6C;AAClE,IAAI,EAAE,QAAQ,WAAW,mBACvB,gBAAgB;AAAA,MACd,aAAa,EAAE,MAAO,EAAE,OAA4B,MAAM;AAAA,IAC5D,CAAC,GAEH,KAAK,YAAY,CAAC;AAAA,EACpB,GAGM,eAAe,CAAC,MAA2C;AAC/D,mBAAe,EAAE,OAAO,KAAK,GAC7B,KAAK,WAAW,CAAC;AAAA,EACnB,GAEM,aAAa;AAAA,IACjB,GAAG;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW,kBAAkB,gBAAgB,KAAK;AAAA,IAClD,UAAU,eAAe,eAAe,KAAK;AAAA,IAC7C,OAAO;AAAA,MACL,GAAI,KAAK;AAAA,MACT,GAAI,wBAAwB;AAAA,QAC1B,sBACE,MAAM,oBAAoB,GAAG,YAAY;AAAA,MAC7C;AAAA,MACA,GAAI,kBAAkB;AAAA,QACpB,oBAAoB,MAAM,cAAc,GAAG,YAAY;AAAA,MACzD;AAAA,IACF;AAAA,EACF;AAEA,SACE,iCACE;AAAA,wBAAC,WACE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,WAQH;AAAA,IACA,oBAAC,eAAY,KAAK,cAAe,GAAG,YAAY;AAAA,KAClD;AAEJ,CAAC;",
5
5
  "names": []
6
6
  }
@@ -1,150 +1,85 @@
1
- import { View, styled, useComposedRefs, useEvent, useTheme } from "@tamagui/core";
1
+ import { View, styled, useComposedRefs, useTheme } from "@tamagui/core";
2
2
  import { registerFocusable } from "@tamagui/focusable";
3
3
  import React from "react";
4
4
  import { styledBody } from "./shared.mjs";
5
5
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
6
6
  const StyledInput = styled(View, styledBody[0], styledBody[1]),
7
- Input = StyledInput.styleable((inProps, forwardedRef) => {
7
+ Input = StyledInput.styleable((props, forwardedRef) => {
8
8
  const {
9
- // some of destructed props are just to avoid passing them to ...rest because they are not in web.
10
- allowFontScaling,
11
- selectTextOnFocus,
12
- showSoftInputOnFocus,
13
- textContentType,
14
- passwordRules,
15
- textBreakStrategy,
16
- underlineColorAndroid,
17
- selection,
18
- lineBreakStrategyIOS,
19
- returnKeyLabel,
20
9
  disabled,
21
- onSubmitEditing,
22
- caretHidden,
23
- clearButtonMode,
24
- clearTextOnFocus,
25
- contextMenuHidden,
26
- dataDetectorTypes,
27
10
  id,
28
- enablesReturnKeyAutomatically,
29
- importantForAutofill,
30
- inlineImageLeft,
31
- inlineImagePadding,
32
- inputAccessoryViewID,
33
- keyboardAppearance,
34
- keyboardType,
35
- cursorColor,
36
- disableFullscreenUI,
37
- editable,
38
- maxFontSizeMultiplier,
39
- multiline,
40
- numberOfLines,
41
11
  onChangeText,
42
- onContentSizeChange,
43
- onEndEditing,
44
- onScroll,
12
+ onSubmitEditing,
45
13
  onSelectionChange,
46
- caretColor,
14
+ selection,
47
15
  placeholderTextColor,
48
- blurOnSubmit,
49
- enterKeyHint,
50
- returnKeyType,
51
- rejectResponderTermination,
52
- scrollEnabled,
53
- secureTextEntry,
54
16
  selectionColor,
55
- inputMode,
17
+ rows,
56
18
  ...rest
57
- } = inProps,
19
+ } = props,
58
20
  ref = React.useRef(null),
59
21
  theme = useTheme(),
60
- composedRefs = useComposedRefs(forwardedRef, ref),
61
- _onSelectionChange = useEvent(() => {
62
- const start = ref.current?.selectionStart ?? 0,
63
- end = ref.current?.selectionEnd ?? 0;
64
- onSelectionChange?.({
22
+ composedRefs = useComposedRefs(forwardedRef, ref);
23
+ React.useEffect(() => {
24
+ if (!onSelectionChange) return;
25
+ const node = ref.current;
26
+ if (!node) return;
27
+ const handleSelectionChange = () => {
28
+ onSelectionChange({
65
29
  nativeEvent: {
66
30
  selection: {
67
- end,
68
- start
31
+ start: node.selectionStart ?? 0,
32
+ end: node.selectionEnd ?? 0
69
33
  }
70
34
  }
71
35
  });
72
- });
73
- React.useEffect(() => {
74
- if (onSelectionChange) return ref.current?.addEventListener("selectionchange", _onSelectionChange), () => {
75
- ref.current?.removeEventListener("selectionchange", _onSelectionChange);
76
36
  };
77
- }, []), React.useEffect(() => {
78
- selection && ref.current?.setSelectionRange(selection.start || null, selection.end || null);
79
- }, [selection?.start, selection?.end]);
80
- const finalProps = {
81
- ...rest,
82
- disabled,
83
- caretColor,
84
- id,
85
- enterKeyHint,
86
- type: (() => {
87
- if (rest?.type) return rest.type;
88
- if (secureTextEntry) return "password";
89
- switch (keyboardType) {
90
- case "number-pad":
91
- case "numeric":
92
- return "number";
93
- case "email-address":
94
- return "email";
95
- case "phone-pad":
96
- return "tel";
97
- case "url":
98
- return "url";
99
- default:
100
- return "text";
101
- }
102
- })(),
103
- inputMode: (() => {
104
- switch (keyboardType) {
105
- case "number-pad":
106
- case "numeric":
107
- return "numeric";
108
- case "decimal-pad":
109
- return "decimal";
110
- case "email-address":
111
- return "email";
112
- case "phone-pad":
113
- return "tel";
114
- case "url":
115
- return "url";
116
- default:
117
- return;
118
- }
119
- })(),
120
- style: {
121
- ...rest.style,
122
- ...(placeholderTextColor && {
123
- "--placeholderColor": theme[placeholderTextColor]?.variable || placeholderTextColor
124
- }),
125
- ...(selectionColor && {
126
- "--selectionColor": theme[selectionColor]?.variable || selectionColor
127
- })
128
- }
129
- };
130
- return React.useEffect(() => {
131
- if (id && !disabled) return registerFocusable(id, {
132
- focusAndSelect: () => {
133
- ref.current?.focus();
134
- },
135
- focus: () => {}
37
+ return node.addEventListener("select", handleSelectionChange), () => node.removeEventListener("select", handleSelectionChange);
38
+ }, [onSelectionChange]), React.useEffect(() => {
39
+ selection && ref.current && ref.current.setSelectionRange(selection.start, selection.end ?? selection.start);
40
+ }, [selection?.start, selection?.end]), React.useEffect(() => {
41
+ if (!(!id || disabled)) return registerFocusable(id, {
42
+ focusAndSelect: () => ref.current?.focus(),
43
+ focus: () => ref.current?.focus()
136
44
  });
137
- }, [id, disabled]), /* @__PURE__ */jsxs(Fragment, {
45
+ }, [id, disabled]);
46
+ const handleKeyDown = e => {
47
+ e.key === "Enter" && onSubmitEditing && onSubmitEditing({
48
+ nativeEvent: {
49
+ text: e.target.value
50
+ }
51
+ }), rest.onKeyDown?.(e);
52
+ },
53
+ handleChange = e => {
54
+ onChangeText?.(e.target.value), rest.onChange?.(e);
55
+ },
56
+ finalProps = {
57
+ ...rest,
58
+ disabled,
59
+ id,
60
+ rows,
61
+ onKeyDown: onSubmitEditing ? handleKeyDown : rest.onKeyDown,
62
+ onChange: onChangeText ? handleChange : rest.onChange,
63
+ style: {
64
+ ...rest.style,
65
+ ...(placeholderTextColor && {
66
+ "--placeholderColor": theme[placeholderTextColor]?.variable || placeholderTextColor
67
+ }),
68
+ ...(selectionColor && {
69
+ "--selectionColor": theme[selectionColor]?.variable || selectionColor
70
+ })
71
+ }
72
+ };
73
+ return /* @__PURE__ */jsxs(Fragment, {
138
74
  children: [/* @__PURE__ */jsx("style", {
139
75
  children: `
140
- input::selection, textarea::selection {
141
- background-color: var(--selectionBackground) !important;
142
- }
143
-
144
- input::placeholder, textarea::placeholder {
145
- color: var(--placeholderColor) !important;
146
- }
147
- `
76
+ input::selection, textarea::selection {
77
+ background-color: var(--selectionColor) !important;
78
+ }
79
+ input::placeholder, textarea::placeholder {
80
+ color: var(--placeholderColor) !important;
81
+ }
82
+ `
148
83
  }), /* @__PURE__ */jsx(StyledInput, {
149
84
  ref: composedRefs,
150
85
  ...finalProps
@@ -1 +1 @@
1
- {"version":3,"names":["View","styled","useComposedRefs","useEvent","useTheme","registerFocusable","React","styledBody","Fragment","jsx","jsxs","StyledInput","Input","styleable","inProps","forwardedRef","allowFontScaling","selectTextOnFocus","showSoftInputOnFocus","textContentType","passwordRules","textBreakStrategy","underlineColorAndroid","selection","lineBreakStrategyIOS","returnKeyLabel","disabled","onSubmitEditing","caretHidden","clearButtonMode","clearTextOnFocus","contextMenuHidden","dataDetectorTypes","id","enablesReturnKeyAutomatically","importantForAutofill","inlineImageLeft","inlineImagePadding","inputAccessoryViewID","keyboardAppearance","keyboardType","cursorColor","disableFullscreenUI","editable","maxFontSizeMultiplier","multiline","numberOfLines","onChangeText","onContentSizeChange","onEndEditing","onScroll","onSelectionChange","caretColor","placeholderTextColor","blurOnSubmit","enterKeyHint","returnKeyType","rejectResponderTermination","scrollEnabled","secureTextEntry","selectionColor","inputMode","rest","ref","useRef","theme","composedRefs","_onSelectionChange","start","current","selectionStart","end","selectionEnd","nativeEvent","useEffect","addEventListener","removeEventListener","setSelectionRange","finalProps","type","style","variable","focusAndSelect","focus","children"],"sources":["../../src/Input.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["View","styled","useComposedRefs","useTheme","registerFocusable","React","styledBody","Fragment","jsx","jsxs","StyledInput","Input","styleable","props","forwardedRef","disabled","id","onChangeText","onSubmitEditing","onSelectionChange","selection","placeholderTextColor","selectionColor","rows","rest","ref","useRef","theme","composedRefs","useEffect","node","current","handleSelectionChange","nativeEvent","start","selectionStart","end","selectionEnd","addEventListener","removeEventListener","setSelectionRange","focusAndSelect","focus","handleKeyDown","e","key","text","target","value","onKeyDown","handleChange","onChange","finalProps","style","variable","children"],"sources":["../../src/Input.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}