UNPKG

zwave-js-ui

Version:

Z-Wave Control Panel and MQTT Gateway

2 lines (1 loc) 7.2 kB
import{dG as se,a2 as de,a3 as ve,bG as me,dH as fe,bm as D,bJ as W,cL as pe,a4 as ge,d8 as _,bN as be,bo as k,d6 as X,dn as Ne,a5 as we,D as Y,H as w,b as g,E as R,am as A,R as he,i as Z,bI as q,dg as xe,bQ as Pe,dI as De,a8 as B,dJ as Ve,dK as Ie}from"./index-B8xHYEBg.js";const Se=50,Ee=500;function Fe(n){let{toggleUpDown:L}=n,u=-1,N=-1;se(d);function E(i){d(),V(i),window.addEventListener("pointerup",d),document.addEventListener("blur",d),u=window.setTimeout(()=>{N=window.setInterval(()=>V(i),Se)},Ee)}function d(){window.clearTimeout(u),window.clearInterval(N),window.removeEventListener("pointerup",d),document.removeEventListener("blur",d)}function V(i){L(i==="up")}return{holdStart:E,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},...Pe(De(),["modelValue","validationValue"])},"VNumberInput"),Te=de()({name:"VNumberInput",props:{...ye()},emits:{"update:focused":n=>!0,"update:modelValue":n=>!0},setup(n,L){let{slots:u}=L;const N=me(),{holdStart:E,holdStop:d}=Fe({toggleUpDown:H}),V=fe(n),i=D(()=>V.isDisabled.value||V.isReadonly.value),F=W(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(F.value&&s)return Number(v).toString().replace(".",o.value);if(n.minFractionDigits===null||t!==null&&t<n.minFractionDigits)return v.replace(".",o.value);let[P,c]=v.split(".");return c=(c??"").padEnd(n.minFractionDigits,"0").replace(new RegExp(`(?<=\\d{${n.minFractionDigits}})0+$`,"g"),""),[P,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)),x=W(null);be(()=>{F.value&&!i.value&&Number(x.value?.replace(o.value,"."))===a.value||(a.value==null?x.value=null:isNaN(a.value)||(x.value=h(a.value)))});const l=D({get:()=>x.value,set(e){if(e===null||e===""){a.value=null,x.value=null;return}const t=Number(e.replace(o.value,"."));!isNaN(t)&&t<=n.max&&t>=n.min&&(a.value=t,x.value=e)}}),M=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"),G=k(()=>r.value==="split"?"$minus":"$expand"),y=k(()=>r.value==="split"?"default":"small"),C=k(()=>r.value==="stacked"?"auto":"100%"),ne={props:{onClick:T,onPointerup:b,onPointerdown:O,onPointercancel:b}},te={props:{onClick:T,onPointerup:b,onPointerdown:J,onPointercancel:b}};X(()=>n.precision,()=>j()),X(()=>n.minFractionDigits,()=>j()),Ne(()=>{U()});function K(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(K(a.value),K(n.step));n.precision!=null&&(t=Math.max(t,n.precision)),e?M.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:P}=t??{},c=s?s.slice(0,v)+e.data+s.slice(P):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 T(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(),E("up")}function J(e){e.currentTarget?.setPointerCapture(e.pointerId),e.preventDefault(),e.stopPropagation(),E("down")}function U(){if(i.value||!N.value)return;const e=N.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 we(()=>{const{modelValue:e,type:t,...s}=Y.filterProps(n);function v(){return u.increment?g(q,{key:"increment-defaults",defaults:{VBtn:{disabled:!M.value,height:C.value,size:y.value,icon:z.value,variant:"text"}}},{default:()=>[u.increment(ne)]}):g(Z,{"aria-hidden":"true","data-testid":"increment",disabled:!M.value,height:C.value,icon:z.value,key:"increment-btn",onClick:T,onPointerdown:O,onPointerup:b,onPointercancel:b,size:y.value,variant:"text",tabindex:"-1"},null)}function P(){return u.decrement?g(q,{key:"decrement-defaults",defaults:{VBtn:{disabled:!$.value,height:C.value,size:y.value,icon:G.value,variant:"text"}}},{default:()=>[u.decrement(te)]}):g(Z,{"aria-hidden":"true","data-testid":"decrement",disabled:!$.value,height:C.value,icon:G.value,key:"decrement-btn",onClick:T,onPointerdown:J,onPointerup:b,onPointercancel:b,size:y.value,variant:"text",tabindex:"-1"},null)}function c(){return w("div",{class:"v-number-input__control"},[P(),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"?w("div",{class:"v-number-input__control"},[g(R,{vertical:!0},null),v()]):n.reverse||r.value==="hidden"?void 0:w(A,null,[m(),c()]),oe=u["append-inner"]||I,Q=r.value==="split"?w("div",{class:"v-number-input__control"},[P(),g(R,{vertical:!0},null)]):n.reverse&&r.value!=="hidden"?w(A,null,[c(),m()]):void 0,ce=u["prepend-inner"]||Q;return g(Y,he({ref:N},s,{modelValue:l.value,"onUpdate:modelValue":f=>l.value=f,focused:F.value,"onUpdate:focused":f=>F.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 w(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 w(A,null,[Q,u["prepend-inner"]?.(...S)])}:void 0})}),xe({},N)}});export{Te as V};