{"version":3,"file":"textInputShared.js","names":[],"sources":["esm/platform/universal/TextInput/textInputShared.js"],"sourcesContent":["import { useEffect, useRef, useState } from \"react\";\nfunction resolveEditable(editable, readOnly) {\n  if (readOnly) return false;\n  return editable ?? true;\n}\nfunction inputModeToKeyboardType(inputMode) {\n  switch (inputMode) {\n    case \"decimal\":\n      return \"decimal-pad\";\n    case \"email\":\n      return \"email-address\";\n    case \"none\":\n      return \"default\";\n    case \"numeric\":\n      return \"numeric\";\n    case \"search\":\n      return \"web-search\";\n    case \"tel\":\n      return \"phone-pad\";\n    case \"text\":\n      return \"default\";\n    case \"url\":\n      return \"url\";\n    default:\n      return void 0;\n  }\n}\nfunction enterKeyHintToReturnKeyType(enterKeyHint) {\n  switch (enterKeyHint) {\n    case \"enter\":\n      return \"default\";\n    case \"done\":\n      return \"done\";\n    case \"go\":\n      return \"go\";\n    case \"next\":\n      return \"next\";\n    case \"previous\":\n      return \"previous\";\n    case \"search\":\n      return \"search\";\n    case \"send\":\n      return \"send\";\n    default:\n      return void 0;\n  }\n}\nconst autoCompleteMap = {\n  \"additional-name\": \"middleName\",\n  \"address-line1\": \"streetAddressLine1\",\n  \"address-line2\": \"streetAddressLine2\",\n  bday: \"birthdate\",\n  \"bday-day\": \"birthdateDay\",\n  \"bday-month\": \"birthdateMonth\",\n  \"bday-year\": \"birthdateYear\",\n  \"cc-additional-name\": \"creditCardName\",\n  \"cc-csc\": \"creditCardSecurityCode\",\n  \"cc-exp\": \"creditCardExpiration\",\n  \"cc-exp-month\": \"creditCardExpirationMonth\",\n  \"cc-exp-year\": \"creditCardExpirationYear\",\n  \"cc-family-name\": \"creditCardFamilyName\",\n  \"cc-given-name\": \"creditCardGivenName\",\n  \"cc-name\": \"creditCardName\",\n  \"cc-number\": \"creditCardNumber\",\n  \"cc-type\": \"creditCardType\",\n  country: \"countryName\",\n  \"country-name\": \"countryName\",\n  \"current-password\": \"password\",\n  email: \"emailAddress\",\n  \"family-name\": \"familyName\",\n  \"given-name\": \"givenName\",\n  honorific: \"namePrefix\",\n  \"honorific-prefix\": \"namePrefix\",\n  \"honorific-suffix\": \"nameSuffix\",\n  name: \"name\",\n  \"new-password\": \"newPassword\",\n  nickname: \"nickname\",\n  off: \"none\",\n  \"one-time-code\": \"oneTimeCode\",\n  organization: \"organizationName\",\n  \"organization-title\": \"jobTitle\",\n  password: \"password\",\n  \"postal-code\": \"postalCode\",\n  tel: \"telephoneNumber\",\n  \"tel-area-code\": \"telephoneNumber\",\n  \"tel-country-code\": \"telephoneNumber\",\n  \"tel-extension\": \"telephoneNumber\",\n  \"tel-local\": \"telephoneNumber\",\n  \"tel-local-prefix\": \"telephoneNumber\",\n  \"tel-local-suffix\": \"telephoneNumber\",\n  \"tel-national\": \"telephoneNumber\",\n  url: \"URL\",\n  username: \"username\"\n};\nfunction autoCompleteToTextContentType(autoComplete) {\n  if (!autoComplete) return void 0;\n  return autoCompleteMap[autoComplete];\n}\nfunction iosKeyboardType(value) {\n  switch (value) {\n    case \"ascii-capable\":\n      return \"asciiCapable\";\n    case \"numbers-and-punctuation\":\n      return \"numbersAndPunctuation\";\n    case \"url\":\n      return \"url\";\n    case \"number-pad\":\n      return \"numberPad\";\n    case \"phone-pad\":\n      return \"phonePad\";\n    case \"name-phone-pad\":\n      return \"namePhonePad\";\n    case \"email-address\":\n      return \"emailAddress\";\n    case \"decimal-pad\":\n      return \"decimalPad\";\n    case \"twitter\":\n      return \"twitter\";\n    case \"web-search\":\n      return \"webSearch\";\n    case \"numeric\":\n      return \"decimalPad\";\n    default:\n      return \"default\";\n  }\n}\nfunction iosSubmitLabel(value) {\n  if (value === \"google\" || value === \"yahoo\") return \"search\";\n  if (value === \"default\" || value === \"none\" || value === \"previous\" || value === \"emergency-call\") {\n    return \"return\";\n  }\n  return value;\n}\nfunction androidKeyboardType(value) {\n  switch (value) {\n    case \"email-address\":\n      return \"email\";\n    case \"numeric\":\n    case \"decimal-pad\":\n      return \"decimal\";\n    case \"number-pad\":\n      return \"number\";\n    case \"phone-pad\":\n      return \"phone\";\n    case \"url\":\n      return \"url\";\n    default:\n      return \"default\";\n  }\n}\nfunction androidImeAction(value) {\n  if (value === \"google\" || value === \"yahoo\") return \"search\";\n  if (value === \"join\" || value === \"route\" || value === \"emergency-call\")\n    return \"default\";\n  return value;\n}\nfunction applyMaxLength(text, maxLength) {\n  if (maxLength == null || maxLength <= 0) return text;\n  return text.length > maxLength ? text.slice(0, maxLength) : text;\n}\nfunction useTextInputFocus({\n  autoFocus,\n  editable,\n  onFocus,\n  onBlur\n}) {\n  const [focused, setFocused] = useState(autoFocus ?? false);\n  const [focusRevision, setFocusRevision] = useState(0);\n  const isFocusedRef = useRef(false);\n  const latest = useRef({ editable, onFocus, onBlur });\n  latest.current = { editable, onFocus, onBlur };\n  const report = (next) => {\n    if (isFocusedRef.current === next) return;\n    isFocusedRef.current = next;\n    if (next) latest.current.onFocus?.();\n    else latest.current.onBlur?.();\n  };\n  const request = (next) => {\n    if (next && !latest.current.editable) return;\n    setFocused(next);\n    setFocusRevision((revision) => revision + 1);\n    report(next);\n  };\n  useEffect(() => {\n    if (autoFocus && latest.current.editable) report(true);\n  }, []);\n  return {\n    focused,\n    focusRevision,\n    focus: () => request(true),\n    blur: () => request(false),\n    isFocused: () => isFocusedRef.current,\n    handleFocusChange: (next) => {\n      setFocused(next);\n      report(next);\n    }\n  };\n}\nexport {\n  androidImeAction,\n  androidKeyboardType,\n  applyMaxLength,\n  autoCompleteToTextContentType,\n  enterKeyHintToReturnKeyType,\n  inputModeToKeyboardType,\n  iosKeyboardType,\n  iosSubmitLabel,\n  resolveEditable,\n  useTextInputFocus\n};\n//# sourceMappingURL=textInputShared.js.map\n"],"mappings":"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"}