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.41 kB
JavaScript
;var e=require("react/jsx-runtime"),t=require("react"),n=function(){return n=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var a in t=arguments[n])Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a]);return e},n.apply(this,arguments)};function r(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,a,o=n.call(e),l=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)l.push(r.value)}catch(e){a={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(a)throw a.error}}return l}"function"==typeof SuppressedError&&SuppressedError;var a=t.memo((function(a){var o=a.onChange,l=a.inputProps,i=void 0===l?{}:l,s=a.containerProps,u=void 0===s?{}:s,c=a.buttonProps,g=void 0===c?{}:c,p=a.inputType,f=a.value,h=a.enableEnglishLanguageToggle,d=void 0!==h&&h,v=r(t.useState(""),2),b=v[0],x=v[1],y=r(t.useState("n"),2),m=y[0],S=y[1],j=t.useRef(null),k=!1,C=t.useRef(!1),$=t.useRef("");t.useEffect((function(){f&&x(f)}),[f]);var w=t.useCallback((function(e){var t=e.target,n=b,a=n.length,l=t.selectionStart||0,i=n.substring(0,l),s=n.substring(l),u=s.charAt(0);if("ि"===i.substring(i.length-1)){e.preventDefault();var c=function(e,t,n){if(n||2===arguments.length)for(var r,a=0,o=t.length;a<o;a++)!r&&a in t||(r||(r=Array.prototype.slice.call(t,0,a)),r[a]=t[a]);return e.concat(r||Array.prototype.slice.call(t))}([],r(new Intl.Segmenter("en",{granularity:"grapheme"}).segment(i)),!1),g=c.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=" "!==u&&n.length!==l&&p?" ":"",d=c.slice(0,-1).map((function(e){return e.segment})).join("")+f+h+s;l=l-a+d.length,setTimeout((function(){j.current&&j.current.setSelectionRange(l,l)}),0),x(d),null==o||o(d)}k=!1}),[b,o]),R=t.useCallback((function(e){if(k)return null==o||o(b),void(k=!1);if("e"===m)return x(e.target.value),void(null==o||o(e.target.value));var t,n,a,l=e.target.selectionStart||0,i=e.target.value,s=i.length;if(C.current)t=i.substring(0,l-$.current.length),n=$.current,a=t,C.current=!1;else{var u=(t=i.substring(0,l)).lastIndexOf(" ");n=t.substring(u),a=t.substring(0,u)}var c=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"],a=t["post-rules"],o=[],l=0;l<e.length;l++){var i=e[l];o.push(n[i]||i)}for(var s=o.join(""),u=0;u<a.length;u++){var c=r(a[u],2),g=c[0],p=c[1],f=new RegExp(g,"g");s=s.replace(f,p)}return s}(n),g="",p=a+c;if(i.length!==l){var f=i.substring(l),h=f.charAt(0),d="्"===c.substring(c.length-1);p=p+(g=" "!==h&&d?" ":"")+f}var v=p.length;l=l-s+v-g.length,x(p),null==o||o(p),setTimeout((function(){e.target.setSelectionRange(l,l)}),0)}),[b,o,m]),P=t.useCallback((function(e){C.current=!0,$.current=e.clipboardData.getData("text")}),[]),D=t.useCallback((function(e){"Backspace"===e.key&&(k=!0,w(e)),"i"===e.key&&e.altKey&&d&&S("e"===m?"n":"e")}),[w,d,m]),E=t.useCallback((function(e){e.preventDefault(),S("n"===m?"e":"n")}),[m]);return e.jsx("div",n({},u,{style:n({position:"relative",width:"100%"},u.style),children:"textarea"!==p?e.jsxs(e.Fragment,{children:[e.jsx("input",n({type:"text",ref:j,value:b},i,{onChange:R,onPaste:P,onKeyDown:D,style:n({right:"4px",width:"100%",padding:"7px",paddingRight:d?"40px":"7px",boxSizing:"border-box"},i.style)})),d&&e.jsx("button",n({},g,{tabIndex:-1,onClick:E,style:n({position:"absolute",right:"10px",top:"50%",transform:"translateY(-50%)",backgroundColor:"#f0f0f0",padding:"5px 10px",border:"none",cursor:"pointer"},g.style),children:m}))]}):e.jsxs(e.Fragment,{children:[e.jsx("textarea",n({},i,{ref:j,value:b,onChange:R,onPaste:P,onKeyDown:D,style:n({width:"100%",padding:"7px",boxSizing:"border-box",resize:"vertical",paddingRight:d?"40px":"7px"},i.style)})),d&&e.jsx("button",n({},g,{tabIndex:-1,onClick:E,style:n({position:"absolute",right:"6px",bottom:"10px",backgroundColor:"#f0f0f0",padding:"5px 5px",border:"none",cursor:"pointer"},g.style),children:m}))]})}))}));module.exports=a;