index.b6080c6e.js 2.2 KB

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