1 line
17 KiB
JavaScript
1 line
17 KiB
JavaScript
var __runInitializers=this&&this.__runInitializers||function(thisArg,initializers,value){for(var useValue=arguments.length>2,i=0;i<initializers.length;i++)value=useValue?initializers[i].call(thisArg,value):initializers[i].call(thisArg);return useValue?value:void 0},__esDecorate=this&&this.__esDecorate||function(ctor,descriptorIn,decorators,contextIn,initializers,extraInitializers){function accept(f){if(void 0!==f&&"function"!=typeof f)throw new TypeError("Function expected");return f}for(var _,kind=contextIn.kind,key="getter"===kind?"get":"setter"===kind?"set":"value",target=!descriptorIn&&ctor?contextIn.static?ctor:ctor.prototype:null,descriptor=descriptorIn||(target?Object.getOwnPropertyDescriptor(target,contextIn.name):{}),done=!1,i=decorators.length-1;i>=0;i--){var context={};for(var p in contextIn)context[p]="access"===p?{}:contextIn[p];for(var p in contextIn.access)context.access[p]=contextIn.access[p];context.addInitializer=function(f){if(done)throw new TypeError("Cannot add initializers after decoration has completed");extraInitializers.push(accept(f||null))};var result=(0,decorators[i])("accessor"===kind?{get:descriptor.get,set:descriptor.set}:descriptor[key],context);if("accessor"===kind){if(void 0===result)continue;if(null===result||"object"!=typeof result)throw new TypeError("Object expected");(_=accept(result.get))&&(descriptor.get=_),(_=accept(result.set))&&(descriptor.set=_),(_=accept(result.init))&&initializers.unshift(_)}else(_=accept(result))&&("field"===kind?initializers.unshift(_):descriptor[key]=_)}target&&Object.defineProperty(target,contextIn.name,descriptor),done=!0};import{Control as TcHmiNumericInput}from"../TcHmiNumericInput/TcHmiNumericInput.esm.js";let TcHmiSpinboxInput=(()=>{var _a;let ___onResize_decorators,___onButtonPlus_decorators,___onButtonMinus_decorators,___onPointerDownButtonPlus_decorators,___onPointerDownButtonMinus_decorators,___onMouseUp_decorators,___onContextMenu_decorators,___onResolverForInputBackgroundColorWatchCallback_decorators,_classSuper=TcHmiNumericInput,_instanceExtraInitializers=[];return class TcHmiSpinboxInput extends _classSuper{static{const _metadata="function"==typeof Symbol&&Symbol.metadata?Object.create(_classSuper[Symbol.metadata]??null):void 0;___onResize_decorators=[TcHmi.EventHandler()],___onButtonPlus_decorators=[TcHmi.EventHandler({checkIsEnabled:!0,checkIsReadOnly:!0,checkAccess:"operate"})],___onButtonMinus_decorators=[TcHmi.EventHandler({checkIsEnabled:!0,checkIsReadOnly:!0,checkAccess:"operate"})],___onPointerDownButtonPlus_decorators=[TcHmi.EventHandler({checkIsEnabled:!0,checkIsReadOnly:!0,checkAccess:"operate"})],___onPointerDownButtonMinus_decorators=[TcHmi.EventHandler({checkIsEnabled:!0,checkIsReadOnly:!0,checkAccess:"operate"})],___onMouseUp_decorators=[TcHmi.EventHandler()],___onContextMenu_decorators=[TcHmi.EventHandler({checkIsEnabled:!0,checkIsReadOnly:!0,checkAccess:"operate"})],___onResolverForInputBackgroundColorWatchCallback_decorators=[(_a=TcHmi).CallbackMethod.bind(_a)],__esDecorate(this,null,___onResize_decorators,{kind:"method",name:"__onResize",static:!1,private:!1,access:{has:obj=>"__onResize"in obj,get:obj=>obj.__onResize},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onButtonPlus_decorators,{kind:"method",name:"__onButtonPlus",static:!1,private:!1,access:{has:obj=>"__onButtonPlus"in obj,get:obj=>obj.__onButtonPlus},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onButtonMinus_decorators,{kind:"method",name:"__onButtonMinus",static:!1,private:!1,access:{has:obj=>"__onButtonMinus"in obj,get:obj=>obj.__onButtonMinus},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onPointerDownButtonPlus_decorators,{kind:"method",name:"__onPointerDownButtonPlus",static:!1,private:!1,access:{has:obj=>"__onPointerDownButtonPlus"in obj,get:obj=>obj.__onPointerDownButtonPlus},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onPointerDownButtonMinus_decorators,{kind:"method",name:"__onPointerDownButtonMinus",static:!1,private:!1,access:{has:obj=>"__onPointerDownButtonMinus"in obj,get:obj=>obj.__onPointerDownButtonMinus},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onMouseUp_decorators,{kind:"method",name:"__onMouseUp",static:!1,private:!1,access:{has:obj=>"__onMouseUp"in obj,get:obj=>obj.__onMouseUp},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onContextMenu_decorators,{kind:"method",name:"__onContextMenu",static:!1,private:!1,access:{has:obj=>"__onContextMenu"in obj,get:obj=>obj.__onContextMenu},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onResolverForInputBackgroundColorWatchCallback_decorators,{kind:"method",name:"__onResolverForInputBackgroundColorWatchCallback",static:!1,private:!1,access:{has:obj=>"__onResolverForInputBackgroundColorWatchCallback"in obj,get:obj=>obj.__onResolverForInputBackgroundColorWatchCallback},metadata:_metadata},null,_instanceExtraInitializers),_metadata&&Object.defineProperty(this,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:_metadata})}static#tchmiFQN="TcHmi.Controls.Beckhoff."+this.name;constructor(element,pcElement,attrs){super(element,pcElement,attrs)}__elementButtonContainerStart=__runInitializers(this,_instanceExtraInitializers);__elementButtonContainerEnd;__inputBackgroundColor;__buttonPlus;__buttonMinus;__autoStep;__autoStepTimeStamp=0;__isPressed=!1;__intervalTimer=0;__step;__stepInit;__buttonPosition;__floatingPointFormatter=Intl.NumberFormat("en-US",{maximumFractionDigits:12,useGrouping:!1});__previnit(){if(super.__previnit(),this.__elementButtonContainerStart=this.__elementTemplateRoot.getElementsByClassName("TcHmi_Controls_Beckhoff_TcHmiSpinboxInput-template-button-before")[0],this.__elementButtonContainerEnd=this.__elementTemplateRoot.getElementsByClassName("TcHmi_Controls_Beckhoff_TcHmiSpinboxInput-template-button-after")[0],!this.__elementButtonContainerStart||!this.__elementButtonContainerEnd)throw new Error("Invalid Template.html")}__init(){super.__init()}__attach(){super.__attach();const passiveEventOptions={passive:!0,capture:!1};this.__processButtonPosition(),this.__buttonPlus&&this.__destroyOnDetach.push(TcHmi.EventProvider.registerDomEvent(this.__buttonPlus,"click",this.__onButtonPlus,passiveEventOptions),TcHmi.EventProvider.registerDomEvent(this.__buttonPlus,"pointerdown",this.__onPointerDownButtonPlus,passiveEventOptions),TcHmi.EventProvider.registerDomEvent(this.__buttonPlus,"contextmenu",this.__onContextMenu,{passive:!1})),this.__buttonMinus&&this.__destroyOnDetach.push(TcHmi.EventProvider.registerDomEvent(this.__buttonMinus,"click",this.__onButtonMinus,passiveEventOptions),TcHmi.EventProvider.registerDomEvent(this.__buttonMinus,"pointerdown",this.__onPointerDownButtonMinus,passiveEventOptions),TcHmi.EventProvider.registerDomEvent(this.__buttonMinus,"contextmenu",this.__onContextMenu,{passive:!1}))}__detach(){super.__detach(),this.__intervalTimer&&(clearInterval(this.__intervalTimer),this.__intervalTimer=0)}destroy(){this.__keepAlive||super.destroy()}__onResize(){this.__processButtonPosition(),this.__processContentPadding()}__createAndAppendButtons(){switch(this.__buttonPlus||(this.__buttonPlus=document.createElement("div"),this.__buttonPlus.classList.add("button","button-plus")),this.__buttonMinus||(this.__buttonMinus=document.createElement("div"),this.__buttonMinus.classList.add("button","button-minus")),this.__buttonPosition){case"BothLeft":this.__elementButtonContainerStart.append(this.__buttonPlus,this.__buttonMinus);break;case"PlusLeftAndMinusRight":case"PlusTopAndMinusBottom":this.__elementButtonContainerStart.append(this.__buttonPlus),this.__elementButtonContainerEnd.append(this.__buttonMinus);break;case"BothRight":this.__elementButtonContainerEnd.append(this.__buttonPlus,this.__buttonMinus);break;default:this.__elementButtonContainerStart.append(this.__buttonMinus),this.__elementButtonContainerEnd.append(this.__buttonPlus)}this.__elementTemplateRoot.classList.toggle("both-left","BothLeft"===this.__buttonPosition),this.__elementTemplateRoot.classList.toggle("plus-left-minus-right","PlusLeftAndMinusRight"===this.__buttonPosition),this.__elementTemplateRoot.classList.toggle("both-right","BothRight"===this.__buttonPosition),this.__elementTemplateRoot.classList.toggle("minus-left-plus-right","MinusLeftAndPlusRight"===this.__buttonPosition),this.__elementTemplateRoot.classList.toggle("plus-top-minus-bottom","PlusTopAndMinusBottom"===this.__buttonPosition),this.__elementTemplateRoot.classList.toggle("minus-top-plus-bottom","MinusTopAndPlusBottom"===this.__buttonPosition)}__executeStep(direction){if(!this.__elementInput.value.trim())return void(this.__resetToLastValidValue&&this.__setValue(this.__lastValidValue));let newValue,currentValue,notNumberOrBigInt=!1;switch(this.__valueType){case"BigInt64":case"UnsignedBigInt64":try{currentValue=BigInt(this.__elementInput.value)}catch{notNumberOrBigInt=!0}break;default:currentValue=Number(this.__elementInput.value),notNumberOrBigInt=isNaN(currentValue)}notNumberOrBigInt?this.__resetToLastValidValue&&this.__setValue(this.__lastValidValue):("number"==typeof currentValue&&"number"==typeof this.__step?(newValue="decrement"===direction?currentValue-(this.__step??1):currentValue+(this.__step??1),newValue=parseFloat(this.__floatingPointFormatter.format(newValue))):"bigint"==typeof currentValue&&"bigint"==typeof this.__step&&(newValue="decrement"===direction?currentValue-(this.__step??1n):currentValue+(this.__step??1n)),null!==this.__internalMinValue&&void 0!==this.__internalMinValue&&void 0!==newValue&&newValue<this.__internalMinValue&&"increment"===direction&&(newValue=this.__internalMinValue),null!==this.__internalMaxValue&&void 0!==this.__internalMaxValue&&void 0!==newValue&&newValue>this.__internalMaxValue&&"decrement"===direction&&(newValue=this.__internalMaxValue),(null===this.__internalMaxValue||void 0!==newValue&&newValue<=this.__internalMaxValue)&&(null===this.__internalMinValue||void 0!==newValue&&newValue>=this.__internalMinValue)?(this.__valueBuffer?.setValue(newValue??null),this.__elementInput.value=this.__formatValue(newValue),this.__lastValidValue=newValue,this.__lastInput=this.__elementInput.value):this.__resetToLastValidValue&&(this.__valueBuffer?.setValue(this.__lastValidValue??null),this.__elementInput.value=this.__formatValue(this.__lastValidValue)),this.__validateInput())}__onButtonPlus(event){0===event.button&&(this.__autoStep||(this.__executeStep("increment"),this.__valueBuffer?.interactionFinished(),TcHmi.EventProvider.raise(this.__id+".onUserInteractionFinished")))}__onButtonMinus(event){0===event.button&&(this.__autoStep||(this.__executeStep("decrement"),this.__valueBuffer?.interactionFinished(),TcHmi.EventProvider.raise(this.__id+".onUserInteractionFinished")))}__onPointerDownButtonPlus(event){if(0!==event.button)return;if(this.__isPressed)return;const timestamp=event.timeStamp;this.__autoStepTimeStamp=event.timeStamp,TcHmi.EventProvider.registerDomEvent(document,"pointerup",this.__onMouseUp,{passive:!0,once:!0}),this.__buttonPlus?.classList.add("down"),this.__autoStep&&(this.__elementInput.blur(),this.__executeStep("increment"),this.__isPressed=!0,setTimeout(()=>{clearInterval(this.__intervalTimer),this.__intervalTimer=setInterval(()=>{this.__isPressed&×tamp===this.__autoStepTimeStamp?this.__executeStep("increment"):clearInterval(this.__intervalTimer)},150)},300))}__onPointerDownButtonMinus(event){if(0!==event.button)return;if(this.__isPressed)return;const timestamp=event.timeStamp;this.__autoStepTimeStamp=event.timeStamp,TcHmi.EventProvider.registerDomEvent(document,"pointerup",this.__onMouseUp,{passive:!0,once:!0}),this.__buttonMinus?.classList.add("down"),this.__autoStep&&(this.__elementInput.blur(),this.__executeStep("decrement"),this.__isPressed=!0,setTimeout(()=>{clearInterval(this.__intervalTimer),this.__intervalTimer=setInterval(()=>{this.__isPressed&×tamp===this.__autoStepTimeStamp?this.__executeStep("decrement"):clearInterval(this.__intervalTimer)},150)},300))}__onMouseUp(event){0===event.button&&(this.__isPressed=!1,this.__buttonPlus?.classList.remove("down"),this.__buttonMinus?.classList.remove("down"),clearInterval(this.__intervalTimer),this.__intervalTimer=0,this.__autoStep&&(this.__valueBuffer?.interactionFinished(),TcHmi.EventProvider.raise(this.__id+".onUserInteractionFinished")))}__onContextMenu(event){event.cancelable&&event.preventDefault()}__processValueType(){super.__processValueType(),this.__attributesInitialized?void 0!==this.__step&&this.setStep(this.__step):void 0!==this.__stepInit&&this.setStep(this.__stepInit)}setStep(valueNew){if(!this.__attributesInitialized&&!this.__valueType)return void(this.__stepInit=valueNew);let convertedValue;switch(this.__valueType){case"BigInt64":convertedValue=TcHmi.ValueConverter.toBigInt64(valueNew),null===convertedValue&&(convertedValue=TcHmi.ValueConverter.toBigInt64(this.getAttributeDefaultValueInternal("Step")));break;case"UnsignedBigInt64":convertedValue=TcHmi.ValueConverter.toUnsignedBigInt64(valueNew),null===convertedValue&&(convertedValue=TcHmi.ValueConverter.toUnsignedBigInt64(this.getAttributeDefaultValueInternal("Step")));break;default:convertedValue=TcHmi.ValueConverter.toNumber(valueNew),null===convertedValue&&(convertedValue=this.getAttributeDefaultValueInternal("Step"))}convertedValue!==this.__step&&(this.__step=convertedValue,TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"Step"}),this.__processStep())}getStep(){return this.__step}__processStep(){this.__processValue()}setButtonPosition(valueNew){let convertedValue=TcHmi.ValueConverter.toString(valueNew);if(null===convertedValue&&(convertedValue=this.getAttributeDefaultValueInternal("ButtonPosition")),convertedValue!==this.__buttonPosition){switch(convertedValue){case"BothLeft":case"BothRight":case"PlusLeftAndMinusRight":case"PlusTopAndMinusBottom":case"MinusTopAndPlusBottom":this.__buttonPosition=convertedValue;break;default:this.__buttonPosition="MinusLeftAndPlusRight"}TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"ButtonPosition"}),this.__processButtonPosition()}}getButtonPosition(){return this.__buttonPosition}__processButtonPosition(){if(this.__isAttached)if(this.__createAndAppendButtons(),"Right"===this.__unitPosition)switch(this.__buttonPosition){case"BothLeft":case"MinusTopAndPlusBottom":case"PlusTopAndMinusBottom":this.__elementUnit.style.marginRight="0";break;default:this.__elementUnit.style.marginRight=(this.__buttonMinus?.getBoundingClientRect().width??26)+"px"}else switch(this.__buttonPosition){case"BothRight":case"MinusTopAndPlusBottom":case"PlusTopAndMinusBottom":this.__elementUnit.style.marginLeft="0";break;default:this.__elementUnit.style.marginLeft=(this.__buttonMinus?.getBoundingClientRect().width??26)+"px"}}__processUnitPosition(){super.__processUnitPosition(),this.__processButtonPosition()}setInputBackgroundColor(valueNew){let convertedValue=TcHmi.ValueConverter.toObject(valueNew);null===convertedValue&&(convertedValue=this.getAttributeDefaultValueInternal("InputBackgroundColor"));let resolverInfo=this.__objectResolvers.get("inputBackgroundColor");resolverInfo&&(resolverInfo.watchDestroyer&&resolverInfo.watchDestroyer(),resolverInfo.resolver.destroy());let resolver=new TcHmi.Symbol.ObjectResolver(convertedValue,{parentControl:this,type:this.getAttributeDescription("InputBackgroundColor")?.type});this.__objectResolvers.set("inputBackgroundColor",{resolver,watchCallback:this.__onResolverForInputBackgroundColorWatchCallback,watchDestroyer:resolver.watch(this.__onResolverForInputBackgroundColorWatchCallback)})}__onResolverForInputBackgroundColorWatchCallback(data){this.__isAttached||this.__suspendObjectResolver("inputBackgroundColor"),data.error===TcHmi.Errors.NONE?tchmi_equal(data.value,this.__inputBackgroundColor)||(this.__inputBackgroundColor=data.value,TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"InputBackgroundColor"}),this.__processInputBackgroundColor()):TcHmi.Log.Controls.error(this,TcHmiSpinboxInput.#tchmiFQN,{Attribute:"InputBackgroundColor"},`Resolving symbols from object failed with error: ${TcHmi.Log.buildMessage(data.details)}`)}getInputBackgroundColor(){return this.__inputBackgroundColor}__processInputBackgroundColor(){TcHmi.StyleProvider.processBackgroundColor(this.__elementInput,this.__inputBackgroundColor)}setAutoStep(valueNew){let convertedValue=TcHmi.ValueConverter.toBoolean(valueNew);null===convertedValue&&(convertedValue=this.getAttributeDefaultValueInternal("AutoStep")),convertedValue!==this.__autoStep&&(this.__autoStep=convertedValue,TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"AutoStep"}),this.__processAutoStep())}getAutoStep(){return this.__autoStep}__processAutoStep(){}}})();TcHmi.Controls.registerEx("TcHmiSpinboxInput","TcHmi.Controls.Beckhoff",TcHmiSpinboxInput,{injectInGlobalObject:!0});export{TcHmiSpinboxInput as Control}; |