UNPKG

preeti-to-unicode-input

Version:

An input element or textarea to convert preeti font or nepali font to unicode with language toggle support for Nepali and english typing.

2 lines (1 loc) 6.33 kB
import{jsx as e,jsxs as t,Fragment as n}from"react/jsx-runtime";import r,{useState as o,useRef as i,useEffect as a,useCallback as l}from"react";var u=function(){return u=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e},u.apply(this,arguments)};function s(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,o,i=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=i.next()).done;)a.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return a}"function"==typeof SuppressedError&&SuppressedError;var c=r.memo((function(r){var c=r.onChange,g=r.inputProps,p=void 0===g?{}:g,f=r.containerProps,h=void 0===f?{}:f,d=r.buttonProps,v=void 0===d?{}:d,b=r.inputType,y=r.value,m=r.enableEnglishLanguageToggle,x=void 0!==m&&m,$=s(o(""),2),S=$[0],w=$[1],k=s(o("n"),2),C=k[0],P=k[1],D=i(null),j=!1,R=i(!1),A=i("");a((function(){y&&w(y)}),[y]);var E=l((function(e){var t=e.target,n=S,r=n.length,o=t.selectionStart||0,i=n.substring(0,o),a=n.substring(o),l=a.charAt(0);if("ि"===i.substring(i.length-1)){e.preventDefault();var u=function(e,t,n){if(n||2===arguments.length)for(var r,o=0,i=t.length;o<i;o++)!r&&o in t||(r||(r=Array.prototype.slice.call(t,0,o)),r[o]=t[o]);return e.concat(r||Array.prototype.slice.call(t))}([],s(new Intl.Segmenter("en",{granularity:"grapheme"}).segment(i)),!1),g=u.slice(-1)[0].segment.replace("ि",""),p="्"===g.slice(-2,-1),f=p?"".concat(g.slice(0,-2),"ि्"):g.length>1?g.slice(0,-1)+"ि":1===g.length?"l":"",h=" "!==l&&n.length!==o&&p?" ":"",d=u.slice(0,-1).map((function(e){return e.segment})).join("")+f+h+a;o=o-r+d.length,setTimeout((function(){D.current&&D.current.setSelectionRange(o,o)}),0),w(d),null==c||c(d)}j=!1}),[S,c]),I=l((function(e){if(j)return null==c||c(S),void(j=!1);if("e"===C)return w(e.target.value),void(null==c||c(e.target.value));var t,n,r,o=e.target.selectionStart||0,i=e.target.value,a=i.length;if(R.current)t=i.substring(0,o-A.current.length),n=A.current,r=t,R.current=!1;else{var l=(t=i.substring(0,o)).lastIndexOf(" ");n=t.substring(l),r=t.substring(0,l)}var u=function(e){for(var t={name:"Preeti","post-rules":[["ि्(.)","्$1ि"],["l((.्)*[^्])","$1ि"],["्ा",""],["(त्र|त्त)([^उभप]+?)m","$1m$2"],["त्रm","क्र"],["त्तm","क्त"],["उm","ऊ"],["भm","झ"],["पm","फ"],["इ{","ई"],["(.[ािीुूृेैोौंःँ]*?){","{$1"],["((.्)*){","{$1"],["{","र्"],["([ाीुूृेैोौंःँ]+?)(्(.्)*[^्])","$2$1"],["्([ाीुूृेैोौंःँ]+?)((.्)*[^्])","्$2$1"],["([ंँ])([ािीुूृेैोौः]*)","$2$1"],["ँँ","ँ"],["ंं","ं"],["ेे","े"],["ैै","ै"],["ुु","ु"],["ूू","ू"],["^ः",":"],["टृ","ट्ट"],["ेा","ाे"],["ैा","ाै"],["आे","ओ"],["आै","औ"],["अा","आ"],["एे","ऐ"],["ाे","ो"],["ाै","ौ"],["/","र"],[" "," ⁄"],["पिm","फि"],["भिm","झि"]],v:"1.0.1","char-map":{v:"ख",r:"च",'"':"ू","~":"ञ्",z:"श","ç":"ॐ",f:"ा",b:"द",n:"ल",j:"व","×":"×",V:"ख्",R:"च्","ß":"द्म","^":"६","Û":"!",Z:"श्",F:"ँ",B:"द्य",N:"ल्","Ë":"ङ्ग",J:"व्",6:"ट",2:"द्द","¿":"रू",">":"श्र",":":"स्","§":"ट्ट","&":"७","£":"घ्","•":"ड्ड",". ":"।","«":"्र","*":"८","„":"ध्र",w:"ध",s:"क",g:"न","æ":"“",c:"अ",o:"य",k:"प",W:"ध्","Ö":"=",S:"क्","Ò":"¨",_:"❩","[":"ृ","Ú":"’",G:"न्","ˆ":"फ्",C:"ऋ",O:"इ","Î":"ङ्ख",K:"प्",7:"ठ","¶":"ठ्ठ",3:"घ",9:"ढ","?":"रु",";":"स","'":"ु","#":"३","¢":"द्घ","+":"ं","ª":"ङ",t:"त",p:"उ","|":"्र",x:"ह","å":"द्व",d:"म","`":"ञ",l:"l",h:"ज",T:"त्",P:"ए","Ý":"ट्ठ","\\":"्","Ù":";",X:"ह्","Å":"हृ",D:"म्","@":"२","Í":"ङ्क",L:"ी",H:"ज्",4:"द्ध","±":"+",0:"ण्","<":"?",8:"ड","¥":"र्‍",$:"४","¡":"ज्ञ्",",":",","©":"र","(":"९","‘":"ॅ",u:"ग",q:"त्र","}":"ै",y:"थ",e:"भ",a:"ब",i:"ष्","‰":"झ्",U:"ग्",Q:"त्त","]":"े","˜":"ऽ",Y:"थ्","Ø":"्य",E:"भ्",A:"ब्",M:"ः","Ì":"न्न",I:"क्ष्",5:"छ","´":"झ",1:"ज्ञ","°":"ङ्ढ","÷":"⁄",".":"।","=":"۔","Æ":"”","‹":"ङ्घ","%":"५","¤":"झ्","!":"१","-":"❨","›":"द्र",")":"०","…":"‘","Ü":"%"}},n=t["char-map"],r=t["post-rules"],o=[],i=0;i<e.length;i++){var a=e[i];o.push(n[a]||a)}for(var l=o.join(""),u=0;u<r.length;u++){var c=s(r[u],2),g=c[0],p=c[1],f=new RegExp(g,"g");l=l.replace(f,p)}return l}(n),g="",p=r+u;if(i.length!==o){var f=i.substring(o),h=f.charAt(0),d="्"===u.substring(u.length-1);p=p+(g=" "!==h&&d?" ":"")+f}var v=p.length;o=o-a+v-g.length,w(p),null==c||c(p),setTimeout((function(){e.target.setSelectionRange(o,o)}),0)}),[S,c,C]),O=l((function(e){R.current=!0,A.current=e.clipboardData.getData("text")}),[]),T=l((function(e){"Backspace"===e.key&&(j=!0,E(e)),"i"===e.key&&e.altKey&&x&&P("e"===C?"n":"e")}),[E,x,C]),z=l((function(e){e.preventDefault(),P("n"===C?"e":"n")}),[C]);return e("div",u({},h,{style:u({position:"relative",width:"100%"},h.style),children:t(n,"textarea"!==b?{children:[e("input",u({type:"text",ref:D,value:S},p,{onChange:I,onPaste:O,onKeyDown:T,style:u({right:"4px",width:"100%",padding:"7px",paddingRight:x?"40px":"7px",boxSizing:"border-box"},p.style)})),x&&e("button",u({},v,{tabIndex:-1,onClick:z,style:u({position:"absolute",right:"10px",top:"50%",transform:"translateY(-50%)",backgroundColor:"#f0f0f0",padding:"5px 10px",border:"none",cursor:"pointer"},v.style),children:C}))]}:{children:[e("textarea",u({},p,{ref:D,value:S,onChange:I,onPaste:O,onKeyDown:T,style:u({width:"100%",padding:"7px",boxSizing:"border-box",resize:"vertical",paddingRight:x?"40px":"7px"},p.style)})),x&&e("button",u({},v,{tabIndex:-1,onClick:z,style:u({position:"absolute",right:"6px",bottom:"10px",backgroundColor:"#f0f0f0",padding:"5px 5px",border:"none",cursor:"pointer"},v.style),children:C}))]})}))}));export{c as default};