UNPKG

@zergo0/react-filerobot-image-editor

Version:

React component version of filerobot image editor (FIE).

1 lines 3.12 kB
var textarea,textNode,transformer,editFinishCallback,disableTextEditCallback,handleOutsideClick=function(a){if(a.target!==textarea){var b=textarea.value;deactivateTextChange(),editFinishCallback(b)}},deactivateTextChange=function(){textarea&&textarea.remove(textarea),window&&window.removeEventListener("click",handleOutsideClick),textNode&&textNode.show(),transformer&&transformer.show(),"function"==typeof disableTextEditCallback&&disableTextEditCallback(),textNode=null,textarea=null,transformer=null},activateTextChange=function(a,b,c,d,e){function f(a){var b=a;b||(b=textNode.placeholder.length*textNode.fontSize());var c=/^((?!chrome|android).)*safari/i.test(navigator.userAgent);(c||k)&&(b=Math.ceil(b));var d=document.documentMode||/Edge/.test(navigator.userAgent);d&&(b+=1),textarea.style.width="".concat(b,"px")}editFinishCallback=d,disableTextEditCallback=e,transformer=c,textNode=b.findOne("#".concat(a)),textNode.hide(),transformer.hide();var g=textNode.absolutePosition();textarea=document.createElement("textarea"),b.container().parentNode.appendChild(textarea),textarea.value=textNode.text(),textarea.style.position="absolute",textarea.style.top="".concat(g.y,"px"),textarea.style.left="".concat(g.x,"px"),textarea.style.width="".concat(textNode.width()-2*textNode.padding(),"px"),textarea.style.height="".concat(textNode.height()-2*textNode.padding()+5,"px"),textarea.style.maxWidth="".concat(textNode.width()-2*textNode.padding(),"px"),textarea.style.maxHeight="".concat(textNode.height()-2*textNode.padding()+5,"px"),textarea.style.fontSize="".concat(textNode.fontSize(),"px"),textarea.style.border="1px solid rgba(0, 0, 0, 0.5)",textarea.style.padding="0px",textarea.style.margin="0px",textarea.style.overflow="hidden",textarea.style.background="none",textarea.style.outline="none",textarea.style.resize="none",textarea.style.lineHeight=textNode.lineHeight(),textarea.style.fontFamily=textNode.fontFamily(),textarea.style.transformOrigin="left top",textarea.style.textAlign=textNode.align(),textarea.style.fontStyle=textNode.fontStyle(),textarea.style.letterSpacing=textNode.letterSpacing(),textarea.style.lineHeight=textNode.lineHeight(),textarea.style.color=textNode.fill();var h=textNode.rotation(),i="";h&&(i+="rotateZ(".concat(h,"deg)"));var j=0,k=-1<navigator.userAgent.toLowerCase().indexOf("firefox");k&&(j+=2+Math.round(textNode.fontSize()/20)),i+="translateY(-".concat(j,"px)"),textarea.style.transform=i,textarea.style.height="auto",textarea.style.height="".concat(textarea.scrollHeight+3,"px"),textarea.focus(),textarea.addEventListener("keydown",function(a){if("Enter"===a.key&&!a.shiftKey){var b=textarea.value;deactivateTextChange(),editFinishCallback(b)}"Escape"===a.key&&deactivateTextChange()}),textarea.addEventListener("keydown",function(a){if("Enter"!==a.key&&"Escape"!==a.key){var b=textNode.getAbsoluteScale().x;f(textNode.width()*b),textarea.style.height="auto",textarea.style.height="".concat(textarea.scrollHeight+textNode.fontSize(),"px")}}),window&&setTimeout(function(){window.addEventListener("click",handleOutsideClick)})};export{activateTextChange,deactivateTextChange};