one
Version:
One is a React framework for web, iOS, and Android apps.
1 lines • 9.63 kB
Source Map (JSON)
{"version":3,"file":"index.js","names":[],"sources":["esm/platform/universal/TextInput/index.js"],"sourcesContent":["import {\n useImperativeHandle,\n useLayoutEffect,\n useRef,\n useState\n} from \"react\";\nimport { useNativeState } from \"../../syncNativeState\";\nimport { domStyle } from \"../../web/DomView\";\nimport { resolveEditable } from \"./textInputShared\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nconst RESET = {\n appearance: \"none\",\n backgroundColor: \"transparent\",\n borderStyle: \"solid\",\n borderWidth: 0,\n borderColor: \"black\",\n borderRadius: 0,\n boxSizing: \"border-box\",\n font: \"14px system-ui, -apple-system, sans-serif\",\n margin: 0,\n padding: 0,\n resize: \"none\"\n};\nconst DEFAULT = {\n padding: 8,\n borderWidth: 1,\n borderColor: \"#d1d5db\",\n borderRadius: 6\n};\nconst PSEUDO_RULES = `[data-one-text-input]::placeholder{color:var(--one-placeholder)}[data-one-text-input]::selection{background-color:var(--one-selection)}`;\nfunction keyboardTypeToInputMode(keyboardType) {\n switch (keyboardType) {\n case \"email-address\":\n return \"email\";\n case \"number-pad\":\n case \"numeric\":\n return \"numeric\";\n case \"decimal-pad\":\n return \"decimal\";\n case \"phone-pad\":\n return \"tel\";\n case \"web-search\":\n return \"search\";\n case \"url\":\n return \"url\";\n default:\n return void 0;\n }\n}\nfunction returnKeyTypeToEnterKeyHint(returnKeyType) {\n switch (returnKeyType) {\n case \"done\":\n case \"go\":\n case \"next\":\n case \"previous\":\n case \"search\":\n case \"send\":\n return returnKeyType;\n default:\n return void 0;\n }\n}\nfunction TextInput({\n ref,\n value,\n onChangeText,\n placeholder,\n placeholderTextColor,\n autoFocus,\n editable: editableProp,\n readOnly,\n multiline,\n keyboardType,\n autoCapitalize,\n autoCorrect = true,\n autoComplete,\n returnKeyType,\n inputMode,\n enterKeyHint,\n onSubmitEditing,\n onFocus,\n onBlur,\n onContentSizeChange,\n onSelectionChange,\n selection,\n selectTextOnFocus,\n defaultValue,\n numberOfLines: numberOfLinesProp,\n rows,\n testID,\n nativeID,\n accessibilityLabel,\n style,\n textStyle,\n secureTextEntry,\n maxLength,\n caretHidden,\n selectionColor,\n cursorColor,\n textAlign\n}) {\n const editable = resolveEditable(editableProp, readOnly);\n const [focused, setFocused] = useState(false);\n const initialFallbackRef = useRef(defaultValue ?? \"\");\n const fallback = useNativeState(initialFallbackRef.current);\n const state = value ?? fallback;\n const innerRef = useRef(null);\n useImperativeHandle(\n ref,\n () => ({\n focus: () => {\n innerRef.current?.focus();\n },\n blur: () => {\n innerRef.current?.blur();\n },\n clear: () => {\n state.set(\"\");\n },\n isFocused: () => innerRef.current != null && document.activeElement === innerRef.current,\n setSelection: (start, end) => {\n if (selection) selection.set({ start, end });\n else innerRef.current?.setSelectionRange(start, end ?? start);\n return Promise.resolve();\n }\n }),\n [state, selection]\n );\n const selectionValue = selection?.value;\n useLayoutEffect(() => {\n const node = innerRef.current;\n if (!node || !selectionValue) return;\n node.setSelectionRange(selectionValue.start, selectionValue.end ?? selectionValue.start);\n }, [selectionValue?.start, selectionValue?.end]);\n const contentSize = useRef({ width: 0, height: 0 });\n useLayoutEffect(() => {\n const node = innerRef.current;\n if (!node || !onContentSizeChange) return;\n const width = node.scrollWidth;\n const height = node.scrollHeight;\n if (width === contentSize.current.width && height === contentSize.current.height) return;\n contentSize.current = { width, height };\n onContentSizeChange({ width, height });\n }, [state.value, onContentSizeChange]);\n const caretColor = caretHidden ? \"transparent\" : cursorColor ?? selectionColor;\n const fieldStyle = {\n ...RESET,\n ...DEFAULT,\n ...focused && { borderColor: \"#3b82f6\" },\n ...multiline && { minHeight: 80 },\n ...domStyle(style),\n ...domStyle(textStyle),\n ...textAlign && textAlign !== \"auto\" && { textAlign },\n ...caretColor != null && { caretColor: String(caretColor) },\n [\"--one-placeholder\"]: String(placeholderTextColor ?? \"#6b7280\"),\n ...selectionColor != null && { [\"--one-selection\"]: String(selectionColor) }\n };\n const shared = {\n ref: innerRef,\n \"data-one-text-input\": \"\",\n \"data-testid\": testID,\n id: nativeID,\n \"aria-label\": accessibilityLabel,\n value: state.value,\n placeholder,\n autoFocus,\n readOnly: !editable,\n maxLength,\n inputMode: inputMode ?? keyboardTypeToInputMode(keyboardType),\n enterKeyHint: enterKeyHint ?? returnKeyTypeToEnterKeyHint(returnKeyType),\n autoCapitalize,\n autoCorrect: autoCorrect ? \"on\" : \"off\",\n spellCheck: autoCorrect,\n autoComplete,\n style: fieldStyle,\n onChange: (event) => {\n const text = event.currentTarget.value;\n state.set(text);\n onChangeText?.(text);\n },\n onFocus: () => {\n setFocused(true);\n if (selectTextOnFocus) innerRef.current?.select();\n onFocus?.();\n },\n onBlur: () => {\n setFocused(false);\n onBlur?.();\n },\n onSelect: (event) => {\n if (!onSelectionChange && !selection) return;\n const next = {\n start: event.currentTarget.selectionStart ?? 0,\n end: event.currentTarget.selectionEnd ?? 0\n };\n selection?.set(next);\n onSelectionChange?.(next);\n }\n };\n return /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(\"style\", { href: \"one-text-input\", precedence: \"default\", children: PSEUDO_RULES }),\n multiline ? /* @__PURE__ */ jsx(\"textarea\", { ...shared, rows: numberOfLinesProp ?? rows }) : /* @__PURE__ */ jsx(\n \"input\",\n {\n ...shared,\n type: secureTextEntry ? \"password\" : \"text\",\n onKeyDown: (event) => {\n if (event.key !== \"Enter\" || event.nativeEvent.isComposing) return;\n onSubmitEditing?.(event.currentTarget.value);\n event.currentTarget.blur();\n }\n }\n )\n ] });\n}\nexport {\n TextInput\n};\n//# sourceMappingURL=index.js.map\n"],"mappings":"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"}