import{c as L,j as t,B as S,ay as H,az as I,$ as O,I as B,aA as z}from"./index-BnkAXW8c.js";import{a as _,r as h}from"./vendor-animations-CsoOZIH8.js";const g="calendar-item",W=`${g}_dummy`,G=`${g}_today`,V=`${g}_active`,v=e=>{const c=L(g,{[G]:e.isToday,[V]:e.isActive,[W]:e.isDummy});return t.jsx("button",{type:"button",className:c,onClick:e.onClick,disabled:e.isDisabled,children:e.value})},f="calendar-header",E=e=>t.jsxs("div",{className:f,children:[t.jsx(S,{type:"button",icon:"arrowLeft",iconPosition:"left",theme:"link",size:"s",onClick:e.onPrevClick}),t.jsx("div",{className:`${f}__content`,children:e.children}),t.jsx(S,{type:"button",icon:"arrowRight",iconPosition:"right",theme:"link",size:"s",onClick:e.onNextClick})]}),K="calendar-days",U=["ПÐ","ВТ","СР","ЧТ","ПТ","СБ","ВС"],q=["Январь","Февраль","Март","Ðпрель","Май","Июнь","Июль","ÐвгуÑÑ‚","СентÑбрь","ОктÑбрь","ÐоÑбрь","Декабрь"],J=()=>t.jsx("div",{className:"calendar-week-days",children:U.map(e=>t.jsx("span",{className:"calendar-week-days__item",children:e},e))}),Q=e=>{const c=n=>{const i=new Date(n.date);i.setHours(0,0,0,0),e.onClick(i)},l=n=>t.jsx(v,{value:n.day,isDummy:n.isDummy,isActive:n.isActive,isToday:n.isToday,isDisabled:n.isDisabled,onClick:()=>c(n)},n.key);return t.jsxs(t.Fragment,{children:[t.jsxs(E,{onPrevClick:e.onPrevClick,onNextClick:e.onNextClick,children:[t.jsx(S,{size:"m",theme:"link",text:q[e.currentMonth],onClick:e.onMonthClick}),t.jsx(S,{size:"m",theme:"link",text:String(e.currentYear),onClick:e.onYearClick})]}),t.jsx(J,{}),t.jsx("div",{className:K,children:e.items.map(l)})]})},X="calendar-months",Z=["Ñнв.","февр.","март.","апр.","май.","июнь.","июль.","авг.","Ñент.","окт.","ноÑб.","дек."],b=new Date,p=e=>{const c=(l,n)=>{const i=b.getMonth()===n&&b.getFullYear()===e.currentYear,C=e.selectedDate&&e.selectedDate.getMonth()===n&&e.selectedDate.getFullYear()===e.currentYear;return t.jsx(v,{value:l,isToday:i,isActive:C,onClick:()=>e.onClick(n)},l)};return t.jsxs(t.Fragment,{children:[t.jsx(E,{onPrevClick:e.onPrevClick,onNextClick:e.onNextClick,children:e.currentYear}),t.jsx("div",{className:X,children:Z.map(c)})]})},ee="calendar-years",te=new Date,Y=28,ne=e=>{const[c,l]=_.useState(e.selectedYear-Y/2),n=h.useMemo(()=>{const r=[c];for(let m=1;m<Y;m++)r.push(r[r.length-1]+1);return r},[c]),i=()=>l(c-Y),C=()=>l(c+Y),D=r=>t.jsx(v,{value:r,isToday:te.getFullYear()===r,isActive:r===e.selectedYear,onClick:()=>e.onClick(r)},r);return t.jsxs(t.Fragment,{children:[t.jsxs(E,{onPrevClick:i,onNextClick:C,children:[c," - ",c+Y-1]}),t.jsx("div",{className:ee,children:n.map(D)})]})},ae="calendar",k="calendar__wrapper",T=283,$=284,ce=e=>{const c=h.useMemo(()=>H(e.currentYear,e.currentMonth,{selectedDate:e.selectedDate,maxDate:e.maxDate,minDate:e.minDate}),[e.currentYear,e.currentMonth,e.selectedDate,e.maxDate,e.minDate]),l=()=>{const a=e.currentMonth-1;if(a<0){const s=new Date(e.currentYear,a,new Date().getDate());e.setCurrentMonth(s.getMonth()),e.setCurrentYear(s.getFullYear())}else e.setCurrentMonth(a)},n=()=>{const a=e.currentMonth+1;if(a>11){const s=new Date(e.currentYear,a,new Date().getDate());e.setCurrentMonth(s.getMonth()),e.setCurrentYear(s.getFullYear())}else e.setCurrentMonth(a)},i=()=>e.setCurrentYear(e.currentYear-1),C=()=>e.setCurrentYear(e.currentYear+1),D=a=>{var s;e.setCurrentMonth(a),(s=e.setType)==null||s.call(e,u.Days)},r=a=>{var s;e.setCurrentYear(a),(s=e.setType)==null||s.call(e,u.Days)},m=()=>t.jsx("div",{className:k,children:t.jsx(Q,{currentMonth:e.currentMonth,currentYear:e.currentYear,items:c,onClick:e.onChange,onPrevClick:l,onNextClick:n,onMonthClick:()=>{var a;return(a=e.setType)==null?void 0:a.call(e,u.Months)},onYearClick:()=>{var a;return(a=e.setType)==null?void 0:a.call(e,u.Years)}})}),y=()=>t.jsx("div",{className:k,children:t.jsx(p,{selectedDate:e.selectedDate,currentYear:e.currentYear,currentMonth:e.currentMonth,onClick:D,onPrevClick:i,onNextClick:C})}),A=()=>t.jsx("div",{className:k,children:t.jsx(ne,{selectedYear:e.selectedDate?e.selectedDate.getFullYear():e.currentYear,onClick:r})}),M=e.type||u.Days;return t.jsxs("div",{className:ae,style:{width:T,height:$},children:[M===u.Days?m():null,M===u.Months?y():null,M===u.Years?A():null]})};var u=(e=>(e[e.Days=0]="Days",e[e.Months=1]="Months",e[e.Years=2]="Years",e))(u||{});const N="datepicker",j=`${N}__calendar`,se=`${j}_to_`,oe=e=>{const[c,l]=h.useState(!1),[n,i]=h.useState("top"),[C,D]=h.useState({}),[r,m]=h.useState(new Date().getMonth()),[y,A]=h.useState(new Date().getFullYear()),[M,a]=_.useState(0),s=h.useRef(null);h.useEffect(()=>{function o(d){c&&s.current&&!s.current.contains(d.target)&&l(!1)}return document.addEventListener("mousedown",o),()=>{document.removeEventListener("mousedown",o)}},[s,c]);const P=o=>{l(!1),e.onChange&&e.onChange(o)},w=o=>{e.selected&&(a(0),m(e.selected.getMonth()),A(e.selected.getFullYear()));let d={};const x=o.currentTarget.getBoundingClientRect();x.bottom+window.scrollY+$<window.innerHeight+window.scrollY?(i("bottom"),d.top=x.bottom+window.scrollY):(i("top"),d.bottom=window.innerHeight-x.top-window.scrollY),x.right+T>=document.body.clientWidth?d.right=document.body.clientWidth-x.right:d.left=x.x,D(d),l(!0)},F=()=>{if(e.children)return _.Children.map(e.children,d=>_.cloneElement(d,{onClick:w}));const o=e.selected?I(e.selected):t.jsx("span",{className:`${N}__placeholder`,children:e.placeholder});return t.jsx(O,{title:e.title,errorText:e.errorText,hintText:e.hintText,isFilled:!!e.selected,children:t.jsxs("button",{disabled:e.isDisabled,className:`${N}__form`,onClick:w,type:"button",children:[o,t.jsx(B,{type:"calendar"})]})})},R=()=>{const o=L(j,`${j}_position_${n}`,{[se+n]:c});return z.createPortal(t.jsx("div",{ref:s,className:o,style:C,children:t.jsx(ce,{type:M,onChange:P,selectedDate:e.selected,maxDate:e.maxDate,minDate:e.minDate,currentMonth:r,currentYear:y,setCurrentMonth:m,setCurrentYear:A,setType:a})}),document.body)};return t.jsxs("div",{role:"group",className:N,children:[F(),R()]})};export{oe as D};