Files
GdevelopMMOTestv1/Export/Extensions/TextInput/textinputruntimeobject-pixi-renderer.js

3 lines
5.9 KiB
JavaScript

var gdjs;(function(a){const f={text:"text",email:"email",password:"password",number:"number","telephone number":"tel",url:"url",search:"search"},o=(h,t)=>"rgba("+h[0]+","+h[1]+","+h[2]+","+t/255+")";class r{constructor(t,e){this._input=null;this._form=null;this._object=t,this._instanceContainer=e,this._runtimeGame=this._instanceContainer.getGame(),this._createElement()}_createElement(){if(this._input)throw new Error("Tried to recreate an input while it already exists.");this._form=document.createElement("form");const t=this._object.getInputType()==="text area";this._input=document.createElement(t?"textarea":"input"),this._form.style.border="0px",this._form.style.borderRadius="0px",this._form.style.backgroundColor="transparent",this._form.style.position="absolute",this._form.style.pointerEvents="auto",this._form.style.display="none",this._form.style.boxSizing="border-box",this._form.style.textAlign=this._object.getTextAlign(),this._input.autocomplete="off",this._input.style.backgroundColor="white",this._input.style.outline="none",this._input.style.resize="none",this._input.style.border="1px solid black",this._input.style.boxSizing="border-box",this._input.style.borderRadius="0px",this._input.style.width="100%",this._input.style.height="100%",this._input.maxLength=this._object.getMaxLength(),this._input.style.padding=`${this._object.getPaddingY().toFixed(2)}px ${this._object.getPaddingX().toFixed(2)}px`,this._form.appendChild(this._input),this._input.addEventListener("input",()=>{!this._input||this._object.onRendererInputValueChanged(this._input.value)}),this._input.addEventListener("touchstart",()=>{!this._input||document.activeElement!==this._input&&this._input.focus()}),this._form.addEventListener("submit",e=>{e.preventDefault(),this._object.onRendererFormSubmitted()}),this.updateString(),this.updateFont(),this.updatePlaceholder(),this.updateOpacity(),this.updateInputType(),this.updateTextColor(),this.updateFillColorAndOpacity(),this.updateBorderColorAndOpacity(),this.updateBorderWidth(),this.updateDisabled(),this.updateReadOnly(),this.updateSpellCheck(),this.updateTextAlign(),this.updateMaxLength(),this.updatePadding(),this._runtimeGame.getRenderer().getDomElementContainer().appendChild(this._form)}_destroyElement(){this._form&&(this._form.remove(),this._form=null),this._input&&(this._input.remove(),this._input=null)}onScenePaused(){this._destroyElement()}onSceneResumed(){this._input||this._createElement()}onDestroy(){this._destroyElement()}updatePreRender(){if(!this._input||!this._form)return;if(this._object.isHidden()){this._form.style.display="none";return}{let n=this._instanceContainer,s=this._object,b=!0;do{if(!n.getLayer(s.getLayer()).isVisible()||!s.isVisible()){this._form.style.display="none";return}n instanceof a.CustomRuntimeObjectInstanceContainer?(s=n.getOwner(),n=s.getInstanceContainer()):b=!1}while(b)}const t=a.staticArray(r.prototype.updatePreRender),e=this._instanceContainer.getGame(),i=e.getRenderer(),u=this._instanceContainer.getLayer(this._object.getLayer()),p=u.convertInverseCoords(this._object.x,this._object.y,0,t),l=p[0],d=p[1],c=u.convertInverseCoords(this._object.x+this._object.getWidth(),this._object.y+this._object.getHeight(),0,t),_=c[0],m=c[1];if(_<0||m<0||l>e.getGameResolutionWidth()||d>e.getGameResolutionHeight()){this._form.style.display="none";return}t[0]=l,t[1]=d,i.convertCanvasToDomElementContainerCoords(t,t);const g=t[0],y=t[1];t[0]=_,t[1]=m,i.convertCanvasToDomElementContainerCoords(t,t);const x=t[0],j=t[1],C=x-g,T=j-y;this._form.style.left=g+"px",this._form.style.top=y+"px",this._form.style.width=C+"px",this._form.style.height=T+"px",this._form.style.transform="rotate3d(0,0,1,"+this._object.getAngle()%360+"deg)",this._form.style.textAlign=this._object.getTextAlign(),this._input.style.padding=`${this._object.getPaddingY().toFixed(2)}px ${this._object.getPaddingX().toFixed(2)}px`,this._input.style.fontSize=this._object.getFontSize()*i.getCanvasToDomElementContainerHeightScale()+"px",this._form.style.display="initial"}updateString(){!this._input||(this._input.value=this._object.getString())}updatePlaceholder(){!this._input||(this._input.placeholder=this._object.getPlaceholder())}updateFont(){!this._input||(this._input.style.fontFamily=this._instanceContainer.getGame().getFontManager().getFontFamily(this._object.getFontResourceName()))}updateOpacity(){!this._form||(this._form.style.opacity=(this._object.getOpacity()/255).toFixed(3))}updateInputType(){if(!this._input)return;const t=this._input instanceof HTMLTextAreaElement,e=this._object.getInputType()==="text area";t!==e&&(this._destroyElement(),this._createElement());const i=f[this._object.getInputType()]||"text";this._input.setAttribute("type",i)}updateTextColor(){!this._input||(this._input.style.color=o(this._object._getRawTextColor(),255))}updateFillColorAndOpacity(){!this._input||(this._input.style.backgroundColor=o(this._object._getRawFillColor(),this._object.getFillOpacity()))}updateBorderColorAndOpacity(){!this._input||(this._input.style.borderColor=o(this._object._getRawBorderColor(),this._object.getBorderOpacity()))}updateBorderWidth(){!this._input||(this._input.style.borderWidth=this._object.getBorderWidth()+"px")}updateDisabled(){!this._input||(this._input.disabled=this._object.isDisabled())}updateReadOnly(){!this._input||(this._input.readOnly=this._object.isReadOnly())}updateSpellCheck(){!this._input||(this._input.spellcheck=this._object.isSpellCheckEnabled())}updateMaxLength(){const t=this._input;if(!!t){if(this._object.getMaxLength()<=0){t.removeAttribute("maxLength");return}t.maxLength=this._object.getMaxLength()}}updatePadding(){!this._input||(this._input.style.padding=`${this._object.getPaddingY().toFixed(2)}px ${this._object.getPaddingX().toFixed(2)}px`)}updateTextAlign(){if(!this._input)return;const t=this._object.getTextAlign();this._input.style.textAlign=t}isFocused(){return this._input===document.activeElement}focus(){!this._input||this._input.focus()}}a.TextInputRuntimeObjectRenderer=r})(gdjs||(gdjs={}));
//# sourceMappingURL=textinputruntimeobject-pixi-renderer.js.map