index.47398b90.js 2.2 KB

1
  1. import{G as E,H as T,a1 as B,ac as G,I as O,a$ as U,d as Z,aj as $,X as q,b0 as J,j as u,ar as K,a3 as L,O as N,Z as Q,P as W}from"./index.c8a33855.js";import{u as Y}from"./use-refs.ef9788ce.js";const[x,d]=E("rate");function p(a,l,o,i){return a>=l?{status:"full",value:1}:a+.5>=l&&o&&!i?{status:"half",value:.5}:a+1>=l&&o&&i?{status:"half",value:Math.round((a-l+1)*1e10)/1e10}:{status:"void",value:0}}const aa={size:T,icon:B("star"),color:String,count:G(5),gutter:T,readonly:Boolean,disabled:Boolean,voidIcon:B("star-o"),allowHalf:Boolean,voidColor:String,touchable:O,iconPrefix:String,modelValue:U(0),disabledColor:String};var ea=Z({name:x,props:aa,emits:["change","update:modelValue"],setup(a,{emit:l}){const o=$(),[i,h]=Y(),v=()=>a.readonly||a.disabled||!a.touchable,X=q(()=>Array(+a.count).fill("").map((e,t)=>p(a.modelValue,t+1,a.allowHalf,a.readonly)));let s;const b=()=>{const e=i.value.map(Q);s=[],e.forEach((t,n)=>{a.allowHalf?s.push({score:n+.5,left:t.left},{score:n+1,left:t.left+t.width/2}):s.push({score:n+1,left:t.left})})},g=e=>{for(let t=s.length-1;t>0;t--)if(e>s[t].left)return s[t].score;return a.allowHalf?.5:1},y=e=>{!a.disabled&&!a.readonly&&e!==a.modelValue&&(l("update:modelValue",e),l("change",e))},j=e=>{v()||(o.start(e),b())},F=e=>{if(!v()&&(o.move(e),o.isHorizontal())){const{clientX:t}=e.touches[0];K(e),y(g(t))}},M=(e,t)=>{const{icon:n,size:P,color:R,count:S,gutter:V,voidIcon:C,disabled:r,voidColor:k,allowHalf:w,iconPrefix:H,disabledColor:I}=a,f=t+1,m=e.status==="full",c=e.status==="void",_=w&&e.value>0&&e.value<1;let z;V&&f!==+S&&(z={paddingRight:L(V)});const A=D=>{b(),y(w?g(D.clientX):f)};return u("div",{key:t,ref:h(t),role:"radio",style:z,class:d("item"),tabindex:r?void 0:0,"aria-setsize":S,"aria-posinset":f,"aria-checked":!c,onClick:A},[u(N,{size:P,name:m?n:C,class:d("icon",{disabled:r,full:m}),color:r?I:m?R:k,classPrefix:H},null),_&&u(N,{size:P,style:{width:e.value+"em"},name:c?C:n,class:d("icon",["half",{disabled:r,full:!c}]),color:r?I:c?k:R,classPrefix:H},null)])};return J(()=>a.modelValue),()=>u("div",{role:"radiogroup",class:d({readonly:a.readonly,disabled:a.disabled}),tabindex:a.disabled?void 0:0,"aria-disabled":a.disabled,"aria-readonly":a.readonly,onTouchstart:j,onTouchmove:F},[X.value.map(M)])}});const oa=W(ea);export{oa as R};