{"version":3,"file":"PhoneAutoCode.DDteWNuE.mjs","names":["React.useState","__legacyOverrideHOC_DataObserverContext","_jsx"],"sources":["https:/framerusercontent.com/modules/AFWW8jMne3rjEokxLGLi/u3oJrH7RnsSYUqKSoeRt/PhoneAutoCode.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import*as React from\"react\";import{Data}from\"framer\";/**\n * Глобальный стор — шарим валидность между оверрайдами (инпут ↔ кнопка)\n */const store=Data({isValid:false});/**\n * PhoneUZMask — маска телефона Узбекистана\n * - Префикс: +998 (защищён от удаления), показываем как \"+998 \"\n * - Формат отображения: 00 000-00-00\n * - Вводим ровно 9 цифр ПОСЛЕ префикса → всего цифр = 12 (включая 998)\n * - Валидация: totalDigits === 12\n * - Жёсткая обработка keydown/paste, защита курсора до префикса\n */export function PhoneUZMask(){const PREFIX=\"+998 \"// отображаемый префикс (5 символов)\n;const REQUIRED_LOCAL_DIGITS=9// после +998\n;const DIGITS_TOTAL_REQUIRED=12// 998 (3) + 9 = 12\n;const PLACEHOLDER=\"00 000-00-00\"// шаблон форматирования (12 символов)\n;const MAX_LEN=PREFIX.length+PLACEHOLDER.length// 5 + 12 = 17\n;const[value,setValue]=React.useState(PREFIX);const[isValid,setIsValid]=React.useState(false);// ----- helpers\nconst digitsOnly=s=>(s||\"\").replace(/\\D/g,\"\");const totalDigitsCount=s=>digitsOnly(s).length;const getLocalDigits=text=>(text||\"\").slice(PREFIX.length).replace(/\\D/g,\"\");// 9-значную местную часть форматируем как: 00 000-00-00\nconst formatUzbekLocal=localDigits=>{const d=localDigits.slice(0,REQUIRED_LOCAL_DIGITS);if(d.length===0)return\"\";if(d.length<=2)return d;if(d.length<=5)return`${d.slice(0,2)} ${d.slice(2)}`;if(d.length<=7)return`${d.slice(0,2)} ${d.slice(2,5)}-${d.slice(5)}`;return`${d.slice(0,2)} ${d.slice(2,5)}-${d.slice(5,7)}-${d.slice(7)}`;};const updateValidity=fullText=>{const ok=totalDigitsCount(fullText)===DIGITS_TOTAL_REQUIRED;setIsValid(ok);store.isValid=ok;return ok;};const applyMask=localDigitsRaw=>{const limitedLocal=localDigitsRaw.slice(0,REQUIRED_LOCAL_DIGITS);const formattedLocal=formatUzbekLocal(limitedLocal);const nextValue=PREFIX+formattedLocal;setValue(nextValue);updateValidity(nextValue)// валидируем по общему количеству цифр (12)\n;};// ----- change handlers\nconst handleChange=next=>{// защищаем от удаления/подмены префикса\nif(!next?.startsWith(\"+998\")){const fallback=PREFIX;setValue(fallback);updateValidity(fallback);return;}const onlyLocalDigits=getLocalDigits(next);applyMask(onlyLocalDigits);};const handleKeyDown=e=>{const input=e.target;const cursorPos=input.selectionStart??0;// запрещаем удаление/редактирование в зоне префикса\nif((e.key===\"Backspace\"||e.key===\"Delete\")&&cursorPos<=PREFIX.length){e.preventDefault();return;}const allowed=[\"Backspace\",\"Delete\",\"ArrowLeft\",\"ArrowRight\",\"ArrowUp\",\"ArrowDown\",\"Home\",\"End\",\"Tab\",\"Enter\"];if(allowed.includes(e.key))return;// курсор не может заходить в префикс\nif(cursorPos<PREFIX.length){e.preventDefault();return;}const localCount=getLocalDigits(value).length;// Разрешаем только цифры и только пока < 9 локальных\nif(/^[0-9]$/.test(e.key)){if(localCount>=REQUIRED_LOCAL_DIGITS){e.preventDefault();return;}// доп. страховка по общей длине отображения (символов)\nif(value.length>=MAX_LEN){e.preventDefault();return;}return;}// всё прочее блокируем\ne.preventDefault();};const handlePaste=e=>{e.preventDefault();const pastedDigits=digitsOnly(e.clipboardData?.getData(\"text\")||\"\");const currentLocal=getLocalDigits(value);const spaceLeft=REQUIRED_LOCAL_DIGITS-currentLocal.length;const toInsert=pastedDigits.slice(0,Math.max(0,spaceLeft));applyMask(currentLocal+toInsert);};const handleFocus=e=>{const input=e.target;setTimeout(()=>{if(value===PREFIX&&input.setSelectionRange){input.setSelectionRange(PREFIX.length,PREFIX.length);}},10);};const handleClick=e=>{const input=e.target;const pos=input.selectionStart??0;if(pos<PREFIX.length){setTimeout(()=>input.setSelectionRange?.(PREFIX.length,PREFIX.length),10);}};const localDigitsCount=()=>getLocalDigits(value).length;return{// значения\nvalue,defaultValue:PREFIX,// обработчики\nonValueChange:handleChange,onChange:e=>handleChange(e?.target?.value||e?.value||\"\"),text:value,onTextChange:handleChange,onKeyDown:handleKeyDown,onPaste:handlePaste,onFocus:handleFocus,onClick:handleClick,// атрибуты\nplaceholder:PREFIX+PLACEHOLDER,type:\"tel\",inputMode:\"numeric\",maxLength:MAX_LEN,// простая индикация статуса\nstyle:{borderColor:localDigitsCount()===0?\"#e5e7eb\":isValid?\"#10b981\":\"#ef4444\",borderWidth:\"2px\"},// доступность\nautoComplete:\"tel\",\"aria-label\":`Номер Узбекистана. Введено ${localDigitsCount()} из ${REQUIRED_LOCAL_DIGITS} локальных цифр. ${isValid?\"Номер корректный\":\"Номер некорректный\"}`,\"aria-invalid\":!isValid,// диагностические data-атрибуты\n\"data-valid\":isValid,\"data-total-digits\":totalDigitsCount(value),\"data-local-digits\":localDigitsCount()};}/**\n * SubmitLock — повесь на кнопку «Отправить»\n * Заблокирует сабмит, пока общее количество цифр != 12\n */export function SubmitLock(){return{disabled:!store.isValid,onClick:()=>{if(!store.isValid){// защита от сабмита в коде — можно показать тост/подсказку\nreturn;}// ... ваш submit\n},style:{opacity:store.isValid?1:.5,pointerEvents:store.isValid?\"auto\":\"none\"}};}import{useContext as __legacyOverrideHOC_useContext}from\"react\";import{DataObserverContext as __legacyOverrideHOC_DataObserverContext}from\"framer\";export function withPhoneUZMask(C){return props=>{__legacyOverrideHOC_useContext(__legacyOverrideHOC_DataObserverContext);return _jsx(C,{...props,...PhoneUZMask(props)});};}withPhoneUZMask.displayName=\"PhoneUZMask\";export function withSubmitLock(C){return props=>{__legacyOverrideHOC_useContext(__legacyOverrideHOC_DataObserverContext);return _jsx(C,{...props,...SubmitLock(props)});};}withSubmitLock.displayName=\"SubmitLock\";\nexport const __FramerMetadata__ = {\"exports\":{\"PhoneUZMask\":{\"type\":\"override\",\"name\":\"PhoneUZMask\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withPhoneUZMask\":{\"type\":\"reactHoc\",\"name\":\"withPhoneUZMask\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SubmitLock\":{\"type\":\"override\",\"name\":\"SubmitLock\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withSubmitLock\":{\"type\":\"reactHoc\",\"name\":\"withSubmitLock\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./PhoneAutoCode.map"],"mappings":"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"}