zwave-js-ui
Version:
Z-Wave Control Panel and MQTT Gateway
2 lines (1 loc) • 7.2 kB
JavaScript
import{dG as se,a3 as de,a4 as ve,bF as me,dH as fe,bl as D,bI as X,cK as pe,a5 as ge,d7 as _,bM as be,bn as k,d5 as Y,dm as we,a6 as Ne,D as Z,H as N,b as g,E as R,P as A,T as he,i as q,bH as Q,df as Pe,bP as xe,dI as De,a9 as B,dJ as Ve,dK as Ie}from"./index-DwzE-W2i.js";const Se=50,Fe=500;function Ee(n){let{toggleUpDown:M}=n,u=-1,w=-1;se(d);function F(i){d(),V(i),window.addEventListener("pointerup",d),document.addEventListener("blur",d),u=window.setTimeout(()=>{w=window.setInterval(()=>V(i),Se)},Fe)}function d(){window.clearTimeout(u),window.clearInterval(w),window.removeEventListener("pointerup",d),document.removeEventListener("blur",d)}function V(i){M(i==="up")}return{holdStart:F,holdStop:d}}const ye=ve({controlVariant:{type:String,default:"default"},inset:Boolean,hideInput:Boolean,modelValue:{type:Number,default:null},min:{type:Number,default:Number.MIN_SAFE_INTEGER},max:{type:Number,default:Number.MAX_SAFE_INTEGER},step:{type:Number,default:1},precision:{type:Number,default:0},minFractionDigits:{type:Number,default:null},decimalSeparator:{type:String,validator:n=>!n||n.length===1},...xe(De(),["modelValue","validationValue"])},"VNumberInput"),Ce=de()({name:"VNumberInput",props:{...ye()},emits:{"update:focused":n=>!0,"update:modelValue":n=>!0},setup(n,M){let{slots:u}=M;const w=me(),{holdStart:F,holdStop:d}=Ee({toggleUpDown:H}),V=fe(n),i=D(()=>V.isDisabled.value||V.isReadonly.value),E=X(n.focused),{decimalSeparator:ee}=pe(),o=D(()=>n.decimalSeparator?.[0]||ee.value);function h(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:n.precision,s=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;const v=t==null?String(e):e.toFixed(t);if(E.value&&s)return Number(v).toString().replace(".",o.value);if(n.minFractionDigits===null||t!==null&&t<n.minFractionDigits)return v.replace(".",o.value);let[x,c]=v.split(".");return c=(c??"").padEnd(n.minFractionDigits,"0").replace(new RegExp(`(?<=\\d{${n.minFractionDigits}})0+$`,"g"),""),[x,c].filter(Boolean).join(o.value)}const a=ge(n,"modelValue",null,e=>e??null,e=>e==null?e??null:_(Number(e),n.min,n.max)),P=X(null);be(()=>{E.value&&!i.value&&Number(P.value?.replace(o.value,"."))===a.value||(a.value==null?P.value=null:isNaN(a.value)||(P.value=h(a.value)))});const l=D({get:()=>P.value,set(e){if(e===null||e===""){a.value=null,P.value=null;return}const t=Number(e.replace(o.value,"."));!isNaN(t)&&t<=n.max&&t>=n.min&&(a.value=t,P.value=e)}}),L=D(()=>i.value?!1:(a.value??0)+n.step<=n.max),$=D(()=>i.value?!1:(a.value??0)-n.step>=n.min),r=D(()=>n.hideInput?"stacked":n.controlVariant),z=k(()=>r.value==="split"?"$plus":"$collapse"),K=k(()=>r.value==="split"?"$minus":"$expand"),y=k(()=>r.value==="split"?"default":"small"),T=k(()=>r.value==="stacked"?"auto":"100%"),ne={props:{onClick:C,onPointerup:b,onPointerdown:O,onPointercancel:b}},te={props:{onClick:C,onPointerup:b,onPointerdown:j,onPointercancel:b}};Y(()=>n.precision,()=>J()),Y(()=>n.minFractionDigits,()=>J()),we(()=>{U()});function G(e){if(e==null)return 0;const t=e.toString(),s=t.indexOf(".");return~s?t.length-s:0}function H(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;if(i.value)return;if(a.value==null){l.value=h(_(0,n.min,n.max));return}let t=Math.max(G(a.value),G(n.step));n.precision!=null&&(t=Math.max(t,n.precision)),e?L.value&&(l.value=h(a.value+n.step,t)):$.value&&(l.value=h(a.value-n.step,t))}function ae(e){if(!e.data)return;const t=e.target,{value:s,selectionStart:v,selectionEnd:x}=t??{},c=s?s.slice(0,v)+e.data+s.slice(x):e.data,m=Ve(c,n.precision,o.value);if(new RegExp(`^-?\\d*${Ie(o.value)}?\\d*$`).test(c)||(e.preventDefault(),t.value=m,B(()=>l.value=m)),n.precision!=null){if(c.split(o.value)[1]?.length>n.precision){e.preventDefault(),t.value=m,B(()=>l.value=m);const I=(v??0)+e.data.length;t.setSelectionRange(I,I)}n.precision===0&&c.endsWith(o.value)&&(e.preventDefault(),t.value=m,B(()=>l.value=m))}}async function le(e){["Enter","ArrowLeft","ArrowRight","Backspace","Delete","Tab"].includes(e.key)||e.ctrlKey||["ArrowDown","ArrowUp"].includes(e.key)&&(e.preventDefault(),e.stopPropagation(),U(),await B(),e.key==="ArrowDown"?H(!1):H())}function C(e){e.stopPropagation()}function b(e){e.currentTarget?.releasePointerCapture(e.pointerId),e.preventDefault(),d()}function O(e){e.currentTarget?.setPointerCapture(e.pointerId),e.preventDefault(),e.stopPropagation(),F("up")}function j(e){e.currentTarget?.setPointerCapture(e.pointerId),e.preventDefault(),e.stopPropagation(),F("down")}function U(){if(i.value||!w.value)return;const e=w.value.value,t=Number(e.replace(o.value,"."));e&&!isNaN(t)?l.value=h(_(t,n.min,n.max)):l.value=null}function J(){i.value||(l.value=a.value!==null&&!isNaN(a.value)?h(a.value,n.precision,!1):null)}function ue(){if(!i.value){if(a.value===null||isNaN(a.value)){l.value=null;return}l.value=a.value.toString().replace(".",o.value)}}function ie(){ue()}function re(){U()}return Ne(()=>{const{modelValue:e,type:t,...s}=Z.filterProps(n);function v(){return u.increment?g(Q,{key:"increment-defaults",defaults:{VBtn:{disabled:!L.value,height:T.value,size:y.value,icon:z.value,variant:"text"}}},{default:()=>[u.increment(ne)]}):g(q,{"aria-hidden":"true","data-testid":"increment",disabled:!L.value,height:T.value,icon:z.value,key:"increment-btn",onClick:C,onPointerdown:O,onPointerup:b,onPointercancel:b,size:y.value,variant:"text",tabindex:"-1"},null)}function x(){return u.decrement?g(Q,{key:"decrement-defaults",defaults:{VBtn:{disabled:!$.value,height:T.value,size:y.value,icon:K.value,variant:"text"}}},{default:()=>[u.decrement(te)]}):g(q,{"aria-hidden":"true","data-testid":"decrement",disabled:!$.value,height:T.value,icon:K.value,key:"decrement-btn",onClick:C,onPointerdown:j,onPointerup:b,onPointercancel:b,size:y.value,variant:"text",tabindex:"-1"},null)}function c(){return N("div",{class:"v-number-input__control"},[x(),g(R,{vertical:r.value!=="stacked"},null),v()])}function m(){return!n.hideInput&&!n.inset?g(R,{vertical:!0},null):void 0}const I=r.value==="split"?N("div",{class:"v-number-input__control"},[g(R,{vertical:!0},null),v()]):n.reverse||r.value==="hidden"?void 0:N(A,null,[m(),c()]),oe=u["append-inner"]||I,W=r.value==="split"?N("div",{class:"v-number-input__control"},[x(),g(R,{vertical:!0},null)]):n.reverse&&r.value!=="hidden"?N(A,null,[c(),m()]):void 0,ce=u["prepend-inner"]||W;return g(Z,he({ref:w},s,{modelValue:l.value,"onUpdate:modelValue":f=>l.value=f,focused:E.value,"onUpdate:focused":f=>E.value=f,validationValue:a.value,onBeforeinput:ae,onFocus:ie,onBlur:re,onKeydown:le,class:["v-number-input",{"v-number-input--default":r.value==="default","v-number-input--hide-input":n.hideInput,"v-number-input--inset":n.inset,"v-number-input--reverse":n.reverse,"v-number-input--split":r.value==="split","v-number-input--stacked":r.value==="stacked"},n.class],style:n.style,inputmode:"decimal"}),{...u,"append-inner":oe?function(){for(var f=arguments.length,S=new Array(f),p=0;p<f;p++)S[p]=arguments[p];return N(A,null,[u["append-inner"]?.(...S),I])}:void 0,"prepend-inner":ce?function(){for(var f=arguments.length,S=new Array(f),p=0;p<f;p++)S[p]=arguments[p];return N(A,null,[W,u["prepend-inner"]?.(...S)])}:void 0})}),Pe({},w)}});export{Ce as V};