persian-date-kit 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ "use strict";const x=require("react/jsx-runtime"),Kt=require("react");function Xt(t){const r=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const s in t)if(s!=="default"){const e=Object.getOwnPropertyDescriptor(t,s);Object.defineProperty(r,s,e.get?e:{enumerable:!0,get:()=>t[s]})}}return r.default=t,Object.freeze(r)}const A=Xt(Kt);function At(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var Mt={exports:{}},Qt=Mt.exports,Jt;function Tt(){return Jt||(Jt=1,(function(t,r){(function(s,e){t.exports=e()})(Qt,(function(){var s=1e3,e=6e4,p=36e5,h="millisecond",M="second",k="minute",N="hour",b="day",L="week",D="month",U="quarter",Y="year",P="date",st="Invalid Date",C=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,at=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,Q={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(d){var o=["th","st","nd","rd"],a=d%100;return"["+d+(o[(a-20)%10]||o[a]||o[0])+"]"}},tt=function(d,o,a){var f=String(d);return!f||f.length>=o?d:""+Array(o+1-f.length).join(a)+d},it={s:tt,z:function(d){var o=-d.utcOffset(),a=Math.abs(o),f=Math.floor(a/60),u=a%60;return(o<=0?"+":"-")+tt(f,2,"0")+":"+tt(u,2,"0")},m:function d(o,a){if(o.date()<a.date())return-d(a,o);var f=12*(a.year()-o.year())+(a.month()-o.month()),u=o.clone().add(f,D),m=a-u<0,y=o.clone().add(f+(m?-1:1),D);return+(-(f+(a-u)/(m?u-y:y-u))||0)},a:function(d){return d<0?Math.ceil(d)||0:Math.floor(d)},p:function(d){return{M:D,y:Y,w:L,d:b,D:P,h:N,m:k,s:M,ms:h,Q:U}[d]||String(d||"").toLowerCase().replace(/s$/,"")},u:function(d){return d===void 0}},K="en",G={};G[K]=Q;var T="$isDayjsObject",R=function(d){return d instanceof v||!(!d||!d[T])},i=function d(o,a,f){var u;if(!o)return K;if(typeof o=="string"){var m=o.toLowerCase();G[m]&&(u=m),a&&(G[m]=a,u=m);var y=o.split("-");if(!u&&y.length>1)return d(y[0])}else{var g=o.name;G[g]=o,u=g}return!f&&u&&(K=u),u||!f&&K},c=function(d,o){if(R(d))return d.clone();var a=typeof o=="object"?o:{};return a.date=d,a.args=arguments,new v(a)},l=it;l.l=i,l.i=R,l.w=function(d,o){return c(d,{locale:o.$L,utc:o.$u,x:o.$x,$offset:o.$offset})};var v=(function(){function d(a){this.$L=i(a.locale,null,!0),this.parse(a),this.$x=this.$x||a.x||{},this[T]=!0}var o=d.prototype;return o.parse=function(a){this.$d=(function(f){var u=f.date,m=f.utc;if(u===null)return new Date(NaN);if(l.u(u))return new Date;if(u instanceof Date)return new Date(u);if(typeof u=="string"&&!/Z$/i.test(u)){var y=u.match(C);if(y){var g=y[2]-1||0,S=(y[7]||"0").substring(0,3);return m?new Date(Date.UTC(y[1],g,y[3]||1,y[4]||0,y[5]||0,y[6]||0,S)):new Date(y[1],g,y[3]||1,y[4]||0,y[5]||0,y[6]||0,S)}}return new Date(u)})(a),this.init()},o.init=function(){var a=this.$d;this.$y=a.getFullYear(),this.$M=a.getMonth(),this.$D=a.getDate(),this.$W=a.getDay(),this.$H=a.getHours(),this.$m=a.getMinutes(),this.$s=a.getSeconds(),this.$ms=a.getMilliseconds()},o.$utils=function(){return l},o.isValid=function(){return this.$d.toString()!==st},o.isSame=function(a,f){var u=c(a);return this.startOf(f)<=u&&u<=this.endOf(f)},o.isAfter=function(a,f){return c(a)<this.startOf(f)},o.isBefore=function(a,f){return this.endOf(f)<c(a)},o.$g=function(a,f,u){return l.u(a)?this[f]:this.set(u,a)},o.unix=function(){return Math.floor(this.valueOf()/1e3)},o.valueOf=function(){return this.$d.getTime()},o.startOf=function(a,f){var u=this,m=!!l.u(f)||f,y=l.p(a),g=function(B,I){var q=l.w(u.$u?Date.UTC(u.$y,I,B):new Date(u.$y,I,B),u);return m?q:q.endOf(b)},S=function(B,I){return l.w(u.toDate()[B].apply(u.toDate("s"),(m?[0,0,0,0]:[23,59,59,999]).slice(I)),u)},J=this.$W,w=this.$M,H=this.$D,et="set"+(this.$u?"UTC":"");switch(y){case Y:return m?g(1,0):g(31,11);case D:return m?g(1,w):g(0,w+1);case L:var W=this.$locale().weekStart||0,X=(J<W?J+7:J)-W;return g(m?H-X:H+(6-X),w);case b:case P:return S(et+"Hours",0);case N:return S(et+"Minutes",1);case k:return S(et+"Seconds",2);case M:return S(et+"Milliseconds",3);default:return this.clone()}},o.endOf=function(a){return this.startOf(a,!1)},o.$set=function(a,f){var u,m=l.p(a),y="set"+(this.$u?"UTC":""),g=(u={},u[b]=y+"Date",u[P]=y+"Date",u[D]=y+"Month",u[Y]=y+"FullYear",u[N]=y+"Hours",u[k]=y+"Minutes",u[M]=y+"Seconds",u[h]=y+"Milliseconds",u)[m],S=m===b?this.$D+(f-this.$W):f;if(m===D||m===Y){var J=this.clone().set(P,1);J.$d[g](S),J.init(),this.$d=J.set(P,Math.min(this.$D,J.daysInMonth())).$d}else g&&this.$d[g](S);return this.init(),this},o.set=function(a,f){return this.clone().$set(a,f)},o.get=function(a){return this[l.p(a)]()},o.add=function(a,f){var u,m=this;a=Number(a);var y=l.p(f),g=function(w){var H=c(m);return l.w(H.date(H.date()+Math.round(w*a)),m)};if(y===D)return this.set(D,this.$M+a);if(y===Y)return this.set(Y,this.$y+a);if(y===b)return g(1);if(y===L)return g(7);var S=(u={},u[k]=e,u[N]=p,u[M]=s,u)[y]||1,J=this.$d.getTime()+a*S;return l.w(J,this)},o.subtract=function(a,f){return this.add(-1*a,f)},o.format=function(a){var f=this,u=this.$locale();if(!this.isValid())return u.invalidDate||st;var m=a||"YYYY-MM-DDTHH:mm:ssZ",y=l.z(this),g=this.$H,S=this.$m,J=this.$M,w=u.weekdays,H=u.months,et=u.meridiem,W=function(I,q,ot,ft){return I&&(I[q]||I(f,m))||ot[q].slice(0,ft)},X=function(I){return l.s(g%12||12,I,"0")},B=et||function(I,q,ot){var ft=I<12?"AM":"PM";return ot?ft.toLowerCase():ft};return m.replace(at,(function(I,q){return q||(function(ot){switch(ot){case"YY":return String(f.$y).slice(-2);case"YYYY":return l.s(f.$y,4,"0");case"M":return J+1;case"MM":return l.s(J+1,2,"0");case"MMM":return W(u.monthsShort,J,H,3);case"MMMM":return W(H,J);case"D":return f.$D;case"DD":return l.s(f.$D,2,"0");case"d":return String(f.$W);case"dd":return W(u.weekdaysMin,f.$W,w,2);case"ddd":return W(u.weekdaysShort,f.$W,w,3);case"dddd":return w[f.$W];case"H":return String(g);case"HH":return l.s(g,2,"0");case"h":return X(1);case"hh":return X(2);case"a":return B(g,S,!0);case"A":return B(g,S,!1);case"m":return String(S);case"mm":return l.s(S,2,"0");case"s":return String(f.$s);case"ss":return l.s(f.$s,2,"0");case"SSS":return l.s(f.$ms,3,"0");case"Z":return y}return null})(I)||y.replace(":","")}))},o.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},o.diff=function(a,f,u){var m,y=this,g=l.p(f),S=c(a),J=(S.utcOffset()-this.utcOffset())*e,w=this-S,H=function(){return l.m(y,S)};switch(g){case Y:m=H()/12;break;case D:m=H();break;case U:m=H()/3;break;case L:m=(w-J)/6048e5;break;case b:m=(w-J)/864e5;break;case N:m=w/p;break;case k:m=w/e;break;case M:m=w/s;break;default:m=w}return u?m:l.a(m)},o.daysInMonth=function(){return this.endOf(D).$D},o.$locale=function(){return G[this.$L]},o.locale=function(a,f){if(!a)return this.$L;var u=this.clone(),m=i(a,f,!0);return m&&(u.$L=m),u},o.clone=function(){return l.w(this.$d,this)},o.toDate=function(){return new Date(this.valueOf())},o.toJSON=function(){return this.isValid()?this.toISOString():null},o.toISOString=function(){return this.$d.toISOString()},o.toString=function(){return this.$d.toUTCString()},d})(),_=v.prototype;return c.prototype=_,[["$ms",h],["$s",M],["$m",k],["$H",N],["$W",b],["$M",D],["$y",Y],["$D",P]].forEach((function(d){_[d[1]]=function(o){return this.$g(o,d[0],d[1])}})),c.extend=function(d,o){return d.$i||(d(o,v,c),d.$i=!0),c},c.locale=i,c.isDayjs=R,c.unix=function(d){return c(1e3*d)},c.en=G[K],c.Ls=G,c.p={},c}))})(Mt)),Mt.exports}var te=Tt();const kt=At(te);var gt={exports:{}},ee=gt.exports,Nt;function ne(){return Nt||(Nt=1,(function(t,r){(function(s,e){t.exports=e(Tt())})(ee,(function(s){function e(M){return M&&typeof M=="object"&&"default"in M?M:{default:M}}var p=e(s),h={name:"fa",weekdays:"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"),weekdaysShort:"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"),weekdaysMin:"ی_د_س_چ_پ_ج_ش".split("_"),weekStart:6,months:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),monthsShort:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),ordinal:function(M){return M},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"در %s",past:"%s پیش",s:"چند ثانیه",m:"یک دقیقه",mm:"%d دقیقه",h:"یک ساعت",hh:"%d ساعت",d:"یک روز",dd:"%d روز",M:"یک ماه",MM:"%d ماه",y:"یک سال",yy:"%d سال"}};return p.default.locale(h,null,!0),h}))})(gt)),gt.exports}var re=ne();const se=At(re);function ae(t,r,s){let e=O((t+O(r-8,6)+100100)*1461,4)+O(153*lt(r+9,12)+2,5)+s-34840408;return e=e-O(O(t+100100+O(r-8,6),100)*3,4)+752,e}const $t=[-61,9,38,199,426,686,756,818,1111,1181,1210,1635,2060,2097,2192,2262,2324,2394,2456,3178],nt=Math.floor;function lt(t,r){return t-~~(t/r)*r}function O(t,r){return~~(t/r)}function ie(t,r){const s=$t.length,e=t+621;let p=-14,h=$t[0],M,k,N;if(t<h||t>=$t[s-1])throw new Error(`Invalid Jalaali year ${t}`);for(let D=1;D<s&&(M=$t[D],k=M-h,!(t<M));D+=1)p=p+O(k,33)*8+O(lt(k,33),4),h=M;N=t-h,p=p+O(N,33)*8+O(lt(N,33)+3,4),lt(k,33)===4&&k-N===4&&(p+=1);const b=O(e,4)-O((O(e,100)+1)*3,4)-150,L=20+p-b;return{gy:e,march:L}}function oe(t,r,s){const e=ie(t);return ae(e.gy,3,e.march)+(r-1)*31-O(r,7)*(r-7)+s-1}function ue(t){let r=4*t+139361631;r=r+O(O(4*t+183187720,146097)*3,4)*4-3908;const s=O(lt(r,1461),4)*5+308,e=O(lt(s,153),5)+1,p=lt(O(s,153),12)+1;return[O(r,1461)-100100+O(8-p,6),p,e]}function ce(t,r,s){return ue(oe(t,r,s))}function de(t,r,s){const e={year:t,month:r,day:s},p=[0,31,59,90,120,151,181,212,243,273,304,334];let h;t<=1600?(t-=621,e.year=0):(t-=1600,e.year=979);const M=t>2?t+1:t;return h=nt((M+3)/4)+365*t-nt((M+99)/100)-80+p[r-1]+nt((M+399)/400)+s,e.year+=33*nt(h/12053),h%=12053,e.year+=4*nt(h/1461),h%=1461,h>365&&(e.year+=nt((h-1)/365),h=(h-1)%365),e.month=h<186?1+nt(h/31):7+nt((h-186)/30),e.day=1+(h<186?h%31:(h-186)%30),[e.year,e.month,e.day]}var _t={J:(t,r,s)=>de(t,r,s),G:(t,r,s)=>ce(t,r,s)};const le=/^(\d{4})[-/]?(\d{1,2})[-/]?(\d{0,2})(.*)$/,fe=/\[.*?\]|jY{2,4}|jM{1,4}|jD{1,2}|Y{2,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,wt="date",pt="day",ut="month",ct="year",Lt="week",he="YYYY-MM-DDTHH:mm:ssZ",pe={jmonths:"فروردین_اردیبهشت_خرداد_تیر_مرداد_شهریور_مهر_آبان_آذر_دی_بهمن_اسفند".split("_")},me=(t,r,s)=>{const e=r.prototype,p=e.$utils(),h=i=>i.$C==="jalali",M=p.prettyUnit||p.p,k=p.isUndefined||p.u,N=p.padStart||p.s,b=p.monthDiff||p.m,L=p.absFloor||p.a,D=i=>function(...c){const l=i.bind(this)(...c);return l.$C=this.$C,l.isJalali()&&l.InitJalali(),l};e.startOf=D(e.startOf),e.endOf=D(e.endOf),e.add=D(e.add),e.subtract=D(e.subtract),e.set=D(e.set);const U=e.parse,Y=e.init,P=e.startOf,st=e.$set,C=e.add,at=e.format,Q=e.diff,tt=e.year,it=e.month,K=e.date,G=e.daysInMonth,T=e.toArray;s.$C="gregory",s.$fdow=6,s.calendar=function(i){return s.$C=i,s},e.calendar=function(i){const c=this.clone();return c.$C=i,c.isJalali()&&c.InitJalali(),c},e.isJalali=function(){return h(this)},s.en.jmonths="Farvardin_Ordibehesht_Khordaad_Tir_Mordaad_Shahrivar_Mehr_Aabaan_Aazar_Dey_Bahman_Esfand".split("_"),s.locale("fa",{...se,...pe},!0);const R=function(i,c){return s(i,{locale:c.$L,utc:c.$u,calendar:c.$C})};e.init=function(i={}){Y.bind(this)(i),this.isJalali()&&this.InitJalali()},e.parse=function(i){if(this.$C=i.calendar||this.$C||s.$C,i.jalali&&typeof i.date=="string"&&/.*[^Z]$/i.test(i.date)){const c=i.date.match(le);if(c){const[l,v,_]=_t.G(Number.parseInt(c[1],10),Number.parseInt(c[2],10),Number.parseInt(c[3]||1,10));i.date=`${l}-${v}-${_}${c[4]||""}`}}return U.bind(this)(i)},e.InitJalali=function(){const[i,c,l]=_t.J(this.$y,this.$M+1,this.$D);this.$jy=i,this.$jM=c-1,this.$jD=l},e.startOf=function(i,c){if(!h(this))return P.bind(this)(i,c);const l=k(c)?!0:c,v=M(i),_=(o,a,f=this.$jy)=>{const[u,m,y]=_t.G(f,a+1,o),g=R(new Date(u,m-1,y),this);return(l?g:g.endOf(pt)).$set("hour",1)},d=(this.$W+(7-s.$fdow))%7;switch(v){case ct:return l?_(1,0):_(0,0,this.$jy+1);case ut:return l?_(1,this.$jM):_(0,(this.$jM+1)%12,this.$jy+Math.floor((this.$jM+1)/12));case Lt:return l?_(this.$jD-d,this.$jM):_(this.$jD+(6-d),this.$jM);default:return P.bind(this)(i,c)}},e.$set=function(i,c){if(!h(this))return st.bind(this)(i,c);const l=M(i),v=(_,d,o=this.$jy)=>{const[a,f,u]=_t.G(o,d+1,_);return this.$d.setFullYear(a),this.$d.setMonth(f-1),this.$d.setDate(u),this};switch(l){case wt:case pt:v(c,this.$jM);break;case ut:v(this.$jD,c);break;case ct:v(this.$jD,this.$jM,c);break;default:return st.bind(this)(i,c)}return this.init(),this},e.add=function(i,c){if(!h(this))return C.bind(this)(i,c);i=Number(i);const l=c&&(c.length===1||c==="ms")?c:M(c),v=(_,d)=>{const o=this.set(wt,1).set(_,d+i);return o.set(wt,Math.min(this.$jD,o.daysInMonth()))};if(["M",ut].includes(l)){const _=this.$jM+i,d=_<0?-Math.ceil(-_/12):Math.floor(_/12),o=this.$jD,a=this.set(pt,1).add(d,ct).set(ut,_-d*12);return a.set(pt,Math.min(a.daysInMonth(),o))}if(["y",ct].includes(l))return v(ct,this.$jy);if(["d",pt].includes(l)){const _=new Date(this.$d);return _.setDate(_.getDate()+i),R(_,this)}if(["w",Lt].includes(l)){const _=new Date(this.$d);return _.setDate(_.getDate()+i*7),R(_,this)}return C.bind(this)(i,c)},e.format=function(i,c){if(!h(this))return at.bind(this)(i,c);const l=i||he,v=c||this.$locale(),{jmonths:_}=v;return l.replace(fe,d=>{if(d.includes("["))return d.replace(/\[|\]/g,"");switch(d){case"YY":return String(this.$jy).slice(-2);case"YYYY":return String(this.$jy);case"M":return String(this.$jM+1);case"MM":return N(this.$jM+1,2,"0");case"MMM":return _[this.$jM].slice(0,3);case"MMMM":return _[this.$jM];case"D":return String(this.$jD);case"DD":return N(this.$jD,2,"0");default:return at.bind(this)(d,c)}})},e.diff=function(i,c,l){if(!h(this))return Q.bind(this)(i,c,l);const v=M(c),_=s(i);let d=b(this,_);switch(v){case ct:d/=12;break;case ut:break;default:return Q.bind(this)(i,c,l)}return l?d:L(d)},e.$g=function(i,c,l){return k(i)?this[c]:this.set(l,i)},e.year=function(i){return h(this)?this.$g(i,"$jy",ct):tt.bind(this)(i)},e.month=function(i){return h(this)?this.$g(i,"$jM",ut):it.bind(this)(i)},e.date=function(i){return h(this)?this.$g(i,"$jD",pt):K.bind(this)(i)},e.daysInMonth=function(){return h(this)?this.endOf(ut).$jD:G.bind(this)()},T&&(e.toArray=function(){return h(this)?[this.$jy,this.$jM,this.$jD,this.$H,this.$m,this.$s,this.$ms]:T.bind(this)()}),e.clone=function(){return R(this.toDate(),this)}};var ye=me;kt.extend(ye);function Dt(t){return String(t).padStart(2,"0")}function Pt(t){return String(t).padStart(4,"0")}function z(t){const r=kt(t).calendar("jalali");return{jy:r.year(),jm:r.month()+1,jd:r.date()}}function V(t){const{jy:r,jm:s,jd:e}=t,p=`${Pt(r)}-${Dt(s)}-${Dt(e)}`,h=kt(p,{jalali:!0}).calendar("gregory").startOf("day");if(!h.isValid())throw new Error(`Invalid Jalali date parts: ${p}`);return h.toDate()}function Et(t,r={}){const s=r.separator??"/";return`${Pt(t.jy)}${s}${Dt(t.jm)}${s}${Dt(t.jd)}`}function It(t){const r=z(t);return{...r,formatted:Et(r)}}function je(t){return t.replace(/[^\d]+/g,"-")}function $e(t){return V(t)}function Ht(t,r={}){const s=t.trim();if(!s)return null;const p=(r.allowLooseSeparators?je(s):s).match(/^(\d{4})[-/](\d{1,2})[-/](\d{1,2})$/);if(!p)return null;const h=Number(p[1]),M=Number(p[2]),k=Number(p[3]);try{return V({jy:h,jm:M,jd:k})}catch{return null}}const _e=1440*60*1e3;function bt(t){return Date.UTC(t.getFullYear(),t.getMonth(),t.getDate())}function rt(t,r){const s=bt(t),e=bt(r);return s===e?0:s<e?-1:1}function vt(t,r){return rt(t,r)===0}function dt(t,r){const s=new Date(t);return s.setDate(s.getDate()+r),s}function yt(t,r,s){return!(r&&rt(t,r)<0||s&&rt(t,s)>0)}function Me(t,r,s){return r&&rt(t,r)<0?new Date(r):s&&rt(t,s)>0?new Date(s):new Date(t)}function Ft(t,r){const s=t.jy*12+(t.jm-1)+r,e=Math.floor(s/12),p=(s%12+12)%12+1;return{jy:e,jm:p}}function Rt(t,r){const s=V({jy:t,jm:r,jd:1}),e=Ft({jy:t,jm:r},1),p=V({jy:e.jy,jm:e.jm,jd:1});return Math.round((bt(p)-bt(s))/_e)}function St(t,r){const s=z(t),e=Ft({jy:s.jy,jm:s.jm},r),p=Rt(e.jy,e.jm),h=Math.min(s.jd,p);return V({jy:e.jy,jm:e.jm,jd:h})}function Vt(t){const{jy:r,jm:s}=t,e=t.weekStartsOn??6,p=V({jy:r,jm:s,jd:1}),M=(p.getDay()-e+7)%7,k=dt(p,-M),N=[];for(let b=0;b<6;b++){const L=[];for(let D=0;D<7;D++){const U=b*7+D,Y=dt(k,U),P=z(Y);L.push({gregorian:Y,jalali:P,inCurrentMonth:P.jy===r&&P.jm===s})}N.push(L)}return N}function E(...t){return t.filter(Boolean).join(" ")}function ge(t){return It(t).formatted}function ve(t){return Ht(t,{allowLooseSeparators:!0})}function De(t,r,s){return yt(t,r,s)?t:null}function mt(t){const s=z(t??new Date);return{jy:s.jy,jm:s.jm}}function xt(){const t=new Date;return t.setHours(0,0,0,0),t}function be(t){const{value:r,onChange:s,minDate:e,maxDate:p,disabled:h,placeholder:M,open:k,onOpenChange:N,mode:b="popover",formatValue:L=ge,parseValue:D=ve,weekdays:U,monthLabels:Y,renderMonthLabel:P,className:st,classes:C}=t,at=A.useRef(null),Q=A.useRef(null),tt=A.useRef(null),it=A.useRef(!1),[K,G]=A.useState(!1),T=b==="inline"?!0:k??K;function R(n){N?.(n),b!=="inline"&&k===void 0&&G(n)}const[i,c]=A.useState(()=>mt(r)),[l,v]=A.useState(()=>r??xt()),[_,d]=A.useState(()=>r?L(r):""),[o,a]=A.useState("days"),[f,u]=A.useState(()=>{const n=mt(r).jy;return n-n%12}),[m,y]=A.useState(()=>mt(r).jy);A.useEffect(()=>{if(it.current)return;d(r?L(r):""),c(mt(r)),v(r??xt());const n=mt(r).jy;y(n),u(n-n%12)},[r,L]),A.useEffect(()=>{if(b!=="popover"||!T)return;const n=j=>{const $=at.current;$&&j.target instanceof Node&&!$.contains(j.target)&&R(!1)};return document.addEventListener("pointerdown",n),()=>document.removeEventListener("pointerdown",n)},[b,T]),A.useEffect(()=>{T&&tt.current?.focus()},[T]);const g=A.useMemo(()=>P?P(i.jy,i.jm):Y&&Y.length===12?`${Y[i.jm-1]??String(i.jm)} ${i.jy}`:`${i.jy} / ${i.jm}`,[Y,P,i.jm,i.jy]),S=A.useMemo(()=>U&&U.length===7?U:["1","2","3","4","5","6","7"],[U]),J=A.useMemo(()=>Vt({jy:i.jy,jm:i.jm}),[i.jm,i.jy]),w=r??null,H=A.useMemo(()=>xt(),[]);function et(n){const j=z(n);c({jy:j.jy,jm:j.jm})}function W(){if(h)return;R(!0);const n=w??l??H;et(n),a("days");const j=z(n).jy;y(j),u(j-j%12)}function X(){R(!1),a("days"),Q.current?.focus()}function B(n){const j=n.trim();if(!j){s(null);return}const $=D(j);if(!$){d(w?L(w):j);return}const F=De($,e,p);if(!F){d(w?L(w):j);return}s(F)}function I(n){if(!h){if(n.key==="ArrowDown"){n.preventDefault(),W();return}if(n.key==="Escape"){T&&(n.preventDefault(),X());return}if(n.key==="Enter"){n.preventDefault(),B(_);return}}}function q(n){if(T&&!h){if(n.key==="Escape"){n.preventDefault(),X();return}if(o==="days"){if(n.key==="ArrowLeft"){n.preventDefault(),v(j=>dt(j,-1));return}if(n.key==="ArrowRight"){n.preventDefault(),v(j=>dt(j,1));return}if(n.key==="ArrowUp"){n.preventDefault(),v(j=>dt(j,-7));return}if(n.key==="ArrowDown"){n.preventDefault(),v(j=>dt(j,7));return}if(n.key==="PageUp"){n.preventDefault(),jt(-1);return}if(n.key==="PageDown"){n.preventDefault(),jt(1);return}if(n.key==="Enter"){if(n.preventDefault(),!yt(l,e,p))return;s(l),d(L(l)),X()}}}}A.useEffect(()=>{if(!T)return;const n=z(l);c(j=>j.jy===n.jy&&j.jm===n.jm?j:{jy:n.jy,jm:n.jm})},[l,T]);function ot(n){h||yt(n.gregorian,e,p)&&(s(n.gregorian),d(L(n.gregorian)),v(n.gregorian),R(!1),Q.current?.focus())}function ft(n){return h?!0:!yt(n.gregorian,e,p)}function jt(n){const j=V({jy:i.jy,jm:i.jm,jd:1}),$=St(j,n),F=z($);c({jy:F.jy,jm:F.jm}),v(Z=>{const ht=z(Z);return ht.jy===i.jy&&ht.jm===i.jm?St(Z,n):$})}function Ut(){jt(-1)}function Gt(){jt(1)}function Wt(n){const j=V({jy:n,jm:1,jd:1}),$=V({jy:n+1,jm:1,jd:1});return{start:j,endExclusive:$}}function Zt(n,j){const $=V({jy:n,jm:j,jd:1}),F=j===12?{jy:n+1,jm:1}:{jy:n,jm:j+1},Z=V({jy:F.jy,jm:F.jm,jd:1});return{start:$,endExclusive:Z}}function Yt(n){return!(e&&rt(n.endExclusive,e)<=0||p&&rt(n.start,p)>0)}function zt(){if(o==="days"){a("years");const n=i.jy;y(n),u(n-n%12)}else a("days")}function Bt(n){y(n),a("months")}function qt(n){const j={jy:m,jm:n};c(j),v(()=>{const $=z(l).jd;try{return V({jy:j.jy,jm:j.jm,jd:$})}catch{return V({jy:j.jy,jm:j.jm,jd:1})}}),a("days")}const Ot=x.jsxs("div",{ref:tt,tabIndex:-1,className:"dvx-pdp__calendar",onKeyDown:q,children:[x.jsxs("div",{className:E("dvx-pdp__header",C?.header),children:[x.jsx("button",{type:"button",className:E("dvx-pdp__nav",C?.navButton),onClick:o==="days"?Ut:()=>u(n=>n-12),"aria-label":"Previous month",children:"‹"}),x.jsx("button",{type:"button",className:E("dvx-pdp__monthLabel",C?.monthLabel),onClick:zt,"aria-label":"Choose month and year",children:o==="days"?g:m}),x.jsx("button",{type:"button",className:E("dvx-pdp__nav",C?.navButton),onClick:o==="days"?Gt:()=>u(n=>n+12),"aria-label":"Next month",children:"›"})]}),o==="days"?x.jsxs("div",{className:E("dvx-pdp__grid",C?.grid),children:[x.jsx("div",{className:"dvx-pdp__weekdays","aria-hidden":"true",children:S.map((n,j)=>x.jsx("div",{className:E("dvx-pdp__weekday",C?.weekday),children:n},j))}),x.jsx("div",{className:"dvx-pdp__days",children:J.map((n,j)=>x.jsx("div",{className:"dvx-pdp__row",children:n.map($=>{const F=ft($),Z=w?vt($.gregorian,w):!1,ht=vt($.gregorian,H),Ct=vt($.gregorian,l);return x.jsx("button",{type:"button",className:E("dvx-pdp__day",C?.day,!$.inCurrentMonth&&E("dvx-pdp__day--outside",C?.dayOutside),F&&E("dvx-pdp__day--disabled",C?.dayDisabled),Z&&E("dvx-pdp__day--selected",C?.daySelected),ht&&E("dvx-pdp__day--today",C?.dayToday),Ct&&"dvx-pdp__day--focused"),disabled:F,onClick:()=>ot($),onMouseEnter:()=>{$.inCurrentMonth&&v($.gregorian)},"aria-pressed":Z,children:$.jalali.jd},`${$.jalali.jy}-${$.jalali.jm}-${$.jalali.jd}`)})},j))})]}):o==="years"?x.jsx("div",{className:"dvx-pdp__panel",children:x.jsx("div",{className:"dvx-pdp__panelGrid",children:Array.from({length:12}).map((n,j)=>{const $=f+j,F=Yt(Wt($)),Z=$===i.jy;return x.jsx("button",{type:"button",className:E("dvx-pdp__cell",Z&&"dvx-pdp__cell--active"),disabled:!F,onClick:()=>Bt($),children:$},$)})})}):x.jsx("div",{className:"dvx-pdp__panel",children:x.jsx("div",{className:"dvx-pdp__panelGrid",children:Array.from({length:12}).map((n,j)=>{const $=j+1,F=Yt(Zt(m,$)),Z=m===i.jy&&$===i.jm,ht=Y&&Y.length===12?Y[$-1]??String($):String($);return x.jsx("button",{type:"button",className:E("dvx-pdp__cell",Z&&"dvx-pdp__cell--active"),disabled:!F,onClick:()=>qt($),children:ht},$)})})})]});return x.jsxs("div",{ref:at,className:E("dvx-pdp",b==="inline"&&"dvx-pdp--inline",st,C?.root),dir:"rtl",children:[b==="inline"?null:x.jsxs("div",{className:"dvx-pdp__control",children:[x.jsx("input",{ref:Q,className:E("dvx-pdp__input",C?.input),disabled:h,placeholder:M,inputMode:"numeric",autoComplete:"off",value:_,onChange:n=>d(n.target.value),onClick:()=>{T||W()},onFocus:()=>{it.current=!0},onBlur:()=>{it.current=!1,B(_)},onKeyDown:I,"aria-haspopup":"dialog","aria-expanded":T}),x.jsx("button",{type:"button",className:E("dvx-pdp__button",C?.button),onClick:()=>T?R(!1):W(),disabled:h,"aria-label":"Open calendar",children:x.jsx("svg",{viewBox:"0 0 24 24",width:"18",height:"18","aria-hidden":"true",children:x.jsx("path",{fill:"currentColor",d:"M7 2a1 1 0 0 1 1 1v1h8V3a1 1 0 1 1 2 0v1h1.5A2.5 2.5 0 0 1 22 6.5v13A2.5 2.5 0 0 1 19.5 22h-15A2.5 2.5 0 0 1 2 19.5v-13A2.5 2.5 0 0 1 4.5 4H6V3a1 1 0 0 1 1-1Zm0 6H4v11.5c0 .276.224.5.5.5h15c.276 0 .5-.224.5-.5V8H7Zm-2.5-2c-.276 0-.5.224-.5.5V6h16v.5c0-.276-.224-.5-.5-.5H4.5Z"})})})]}),b==="inline"?Ot:T?x.jsx("div",{className:E("dvx-pdp__popover",C?.popover),role:"dialog","aria-modal":"false",children:Ot}):null]})}exports.PersianDatePicker=be;exports.addDays=dt;exports.addJalaliMonths=St;exports.buildJalaliMonthGrid=Vt;exports.clampToRange=Me;exports.compareDays=rt;exports.formatJalali=Et;exports.fromJalaliParts=V;exports.getJalaliMonthLength=Rt;exports.isSameDay=vt;exports.isWithinRange=yt;exports.parseJalaliText=Ht;exports.toGregorian=$e;exports.toJalali=It;exports.toJalaliParts=z;
@@ -0,0 +1,12 @@
1
+ export type JalaliParts = {
2
+ jy: number;
3
+ jm: number;
4
+ jd: number;
5
+ };
6
+ export type FormatJalaliOptions = {
7
+ separator?: string;
8
+ };
9
+ export declare function toJalaliParts(gregorian: Date): JalaliParts;
10
+ export declare function fromJalaliParts(parts: JalaliParts): Date;
11
+ export declare function formatJalali(parts: JalaliParts, opts?: FormatJalaliOptions): string;
12
+ //# sourceMappingURL=dayjsAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dayjsAdapter.d.ts","sourceRoot":"","sources":["../../src/adapters/dayjsAdapter.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,WAAW,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAA;AAEhE,MAAM,MAAM,mBAAmB,GAAG;IAChC,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAUD,wBAAgB,aAAa,CAAC,SAAS,EAAE,IAAI,GAAG,WAAW,CAG1D;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAWxD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,GAAE,mBAAwB,GAAG,MAAM,CAGvF"}
@@ -0,0 +1,66 @@
1
+ import * as React from 'react';
2
+ export type PersianDatePickerClasses = Partial<{
3
+ root: string;
4
+ input: string;
5
+ button: string;
6
+ popover: string;
7
+ header: string;
8
+ navButton: string;
9
+ monthLabel: string;
10
+ grid: string;
11
+ weekday: string;
12
+ day: string;
13
+ dayOutside: string;
14
+ daySelected: string;
15
+ dayDisabled: string;
16
+ dayToday: string;
17
+ }>;
18
+ export type PersianDatePickerProps = {
19
+ value: Date | null;
20
+ onChange: (date: Date | null) => void;
21
+ minDate?: Date;
22
+ maxDate?: Date;
23
+ disabled?: boolean;
24
+ placeholder?: string;
25
+ /**
26
+ * Control the open state of the calendar popover.
27
+ * If provided, the component becomes controlled for open/close.
28
+ */
29
+ open?: boolean;
30
+ onOpenChange?: (open: boolean) => void;
31
+ /**
32
+ * Rendering mode:
33
+ * - `popover`: default input + popover calendar
34
+ * - `inline`: always-visible calendar, no input
35
+ */
36
+ mode?: 'popover' | 'inline';
37
+ /**
38
+ * Formats the controlled `value` for display in the input.
39
+ * Default: numeric Jalali `YYYY/MM/DD` (no locale month/day names).
40
+ */
41
+ formatValue?: (date: Date) => string;
42
+ /**
43
+ * Parses user input into a Gregorian Date.
44
+ * Default: parses numeric Jalali `YYYY/MM/DD` (also accepts loose separators).
45
+ */
46
+ parseValue?: (text: string) => Date | null;
47
+ /**
48
+ * Weekday headers. If omitted, numeric headers are used.
49
+ * Provide 7 items matching the calendar grid order.
50
+ */
51
+ weekdays?: string[];
52
+ /**
53
+ * Month labels (index 0 => month 1). If omitted, month numbers are shown.
54
+ * Provide 12 items.
55
+ */
56
+ monthLabels?: string[];
57
+ /**
58
+ * Month label renderer (e.g. supply localized month name).
59
+ * Default: `jy / jm` numeric.
60
+ */
61
+ renderMonthLabel?: (jy: number, jm: number) => React.ReactNode;
62
+ className?: string;
63
+ classes?: PersianDatePickerClasses;
64
+ };
65
+ export declare function PersianDatePicker(props: PersianDatePickerProps): import("react/jsx-runtime").JSX.Element;
66
+ //# sourceMappingURL=PersianDatePicker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PersianDatePicker.d.ts","sourceRoot":"","sources":["../../src/components/PersianDatePicker.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAc9B,MAAM,MAAM,wBAAwB,GAAG,OAAO,CAAC;IAC7C,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,GAAG,EAAE,MAAM,CAAA;IACX,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAC,CAAA;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,KAAK,EAAE,IAAI,GAAG,IAAI,CAAA;IAClB,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,KAAK,IAAI,CAAA;IACrC,OAAO,CAAC,EAAE,IAAI,CAAA;IACd,OAAO,CAAC,EAAE,IAAI,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACtC;;;;OAIG;IACH,IAAI,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAA;IAE3B;;;OAGG;IACH,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM,CAAA;IAEpC;;;OAGG;IACH,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAA;IAE1C;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IAEnB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IAEtB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAA;IAE9D,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,wBAAwB,CAAA;CACnC,CAAA;AA+BD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,2CAof9D"}
@@ -0,0 +1,68 @@
1
+ import * as React from 'react';
2
+ export type PersianDateRange = {
3
+ start: Date | null;
4
+ end: Date | null;
5
+ };
6
+ export type PersianDateRangePickerClasses = Partial<{
7
+ root: string;
8
+ input: string;
9
+ button: string;
10
+ popover: string;
11
+ header: string;
12
+ navButton: string;
13
+ monthLabel: string;
14
+ grid: string;
15
+ weekday: string;
16
+ day: string;
17
+ dayOutside: string;
18
+ dayDisabled: string;
19
+ dayToday: string;
20
+ dayRangeStart: string;
21
+ dayRangeEnd: string;
22
+ dayInRange: string;
23
+ }>;
24
+ export type PersianDateRangePickerProps = {
25
+ value: PersianDateRange;
26
+ onChange: (range: PersianDateRange) => void;
27
+ minDate?: Date;
28
+ maxDate?: Date;
29
+ disabled?: boolean;
30
+ /**
31
+ * Input layout:
32
+ * - `two`: (default) two inputs (start/end)
33
+ * - `single`: one input showing the range as text (e.g. `start - end`)
34
+ */
35
+ inputVariant?: 'two' | 'single';
36
+ placeholder?: string;
37
+ rangeSeparator?: string;
38
+ placeholderStart?: string;
39
+ placeholderEnd?: string;
40
+ /**
41
+ * Control the open state of the calendar popover (popover mode only).
42
+ */
43
+ open?: boolean;
44
+ onOpenChange?: (open: boolean) => void;
45
+ /**
46
+ * Rendering mode:
47
+ * - `popover`: (default) two inputs + popover calendar
48
+ * - `inline`: always-visible calendar, no inputs
49
+ */
50
+ mode?: 'popover' | 'inline';
51
+ /**
52
+ * Formats a Date for display in inputs.
53
+ * Default: numeric Jalali `YYYY/MM/DD` (no locale month/day names).
54
+ */
55
+ formatValue?: (date: Date) => string;
56
+ /**
57
+ * Parses user text into a Gregorian Date.
58
+ * Default: parses numeric Jalali `YYYY/MM/DD` (also accepts loose separators).
59
+ */
60
+ parseValue?: (text: string) => Date | null;
61
+ weekdays?: string[];
62
+ monthLabels?: string[];
63
+ renderMonthLabel?: (jy: number, jm: number) => React.ReactNode;
64
+ className?: string;
65
+ classes?: PersianDateRangePickerClasses;
66
+ };
67
+ export declare function PersianDateRangePicker(props: PersianDateRangePickerProps): import("react/jsx-runtime").JSX.Element;
68
+ //# sourceMappingURL=PersianDateRangePicker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PersianDateRangePicker.d.ts","sourceRoot":"","sources":["../../src/components/PersianDateRangePicker.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAc9B,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,IAAI,GAAG,IAAI,CAAA;IAClB,GAAG,EAAE,IAAI,GAAG,IAAI,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,6BAA6B,GAAG,OAAO,CAAC;IAClD,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,GAAG,EAAE,MAAM,CAAA;IACX,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;CACnB,CAAC,CAAA;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,KAAK,EAAE,gBAAgB,CAAA;IACvB,QAAQ,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAA;IAC3C,OAAO,CAAC,EAAE,IAAI,CAAA;IACd,OAAO,CAAC,EAAE,IAAI,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;IAElB;;;;OAIG;IACH,YAAY,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAA;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,cAAc,CAAC,EAAE,MAAM,CAAA;IAEvB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,cAAc,CAAC,EAAE,MAAM,CAAA;IAEvB;;OAEG;IACH,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IAEtC;;;;OAIG;IACH,IAAI,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAA;IAE3B;;;OAGG;IACH,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM,CAAA;IAEpC;;;OAGG;IACH,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAA;IAE1C,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,gBAAgB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAA;IAE9D,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,6BAA6B,CAAA;CACxC,CAAA;AAkCD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,2BAA2B,2CA8fxE"}
package/dist/index.cjs ADDED
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("./PersianDatePicker-CCakBpBo.cjs"),o=require("react/jsx-runtime"),we=require("react");function Ne(d){const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(d){for(const c in d)if(c!=="default"){const m=Object.getOwnPropertyDescriptor(d,c);Object.defineProperty(n,c,m.get?m:{enumerable:!0,get:()=>d[c]})}}return n.default=d,Object.freeze(n)}const i=Ne(we);function l(...d){return d.filter(Boolean).join(" ")}function Ce(d){return r.toJalali(d).formatted}function Ee(d){return r.parseJalaliText(d,{allowLooseSeparators:!0})}function b(){const d=new Date;return d.setHours(0,0,0,0),d}function $(d){const{start:n,end:c}=d;return n&&c&&r.compareDays(n,c)>0?{start:c,end:n}:d}function Te(d,n,c){const m=r.compareDays(n,c)<=0?n:c,j=r.compareDays(n,c)<=0?c:n;return r.compareDays(d,m)>=0&&r.compareDays(d,j)<=0}function $e(d){const{value:n,onChange:c,minDate:m,maxDate:j,disabled:P,inputVariant:W="two",placeholder:le,rangeSeparator:M=" - ",placeholderStart:ce,placeholderEnd:ue,open:G,onOpenChange:pe,mode:g="popover",formatValue:v=Ce,parseValue:L=Ee,weekdays:w,monthLabels:x,renderMonthLabel:O,className:fe,classes:p}=d,V=i.useRef(null),Y=i.useRef(null),U=i.useRef(null),I=i.useRef(null),q=i.useRef(null),[me,ye]=i.useState(!1),y=g==="inline"?!0:G??me;function A(e){pe?.(e),g!=="inline"&&G===void 0&&ye(e)}const[z,H]=i.useState("start"),[_,J]=i.useState("days"),[je,R]=i.useState(()=>{const e=n.start??n.end??b(),t=r.toJalaliParts(e).jy;return t-t%12}),[N,C]=i.useState(()=>{const e=n.start??n.end??b();return r.toJalaliParts(e).jy}),[u,S]=i.useState(()=>{const e=n.start??n.end??b(),t=r.toJalaliParts(e);return{jy:t.jy,jm:t.jm}}),[k,h]=i.useState(()=>n.start??n.end??b()),[K,Q]=i.useState(null),[X,Z]=i.useState(()=>n.start?v(n.start):""),[ee,te]=i.useState(()=>n.end?v(n.end):""),[ne,E]=i.useState(()=>{const e=n.start?v(n.start):"",t=n.end?v(n.end):"";return!e&&!t?"":e&&!t?`${e}${M}`:`${e}${M}${t}`});i.useEffect(()=>{Z(n.start?v(n.start):""),te(n.end?v(n.end):"");const e=n.start?v(n.start):"",t=n.end?v(n.end):"";E(!e&&!t?"":e&&!t?`${e}${M}`:`${e}${M}${t}`);const a=n.start??n.end??b(),s=r.toJalaliParts(a);S({jy:s.jy,jm:s.jm}),h(a),C(s.jy),R(s.jy-s.jy%12)},[v,n.end,n.start]),i.useEffect(()=>{if(g!=="popover"||!y)return;const e=t=>{const a=V.current;a&&t.target instanceof Node&&!a.contains(t.target)&&A(!1)};return document.addEventListener("pointerdown",e),()=>document.removeEventListener("pointerdown",e)},[g,y]),i.useEffect(()=>{y&&q.current?.focus()},[y]),i.useEffect(()=>{if(!y)return;const e=r.toJalaliParts(k);S(t=>t.jy===e.jy&&t.jm===e.jm?t:{jy:e.jy,jm:e.jm})},[k,y]);const ge=i.useMemo(()=>O?O(u.jy,u.jm):x&&x.length===12?`${x[u.jm-1]??String(u.jm)} ${u.jy}`:`${u.jy} / ${u.jm}`,[x,O,u.jm,u.jy]),ve=i.useMemo(()=>w&&w.length===7?w:["1","2","3","4","5","6","7"],[w]),he=i.useMemo(()=>r.buildJalaliMonthGrid({jy:u.jy,jm:u.jm}),[u.jm,u.jy]);function F(e){if(P)return;H(e),A(!0);const t=(e==="start"?n.start:n.end)??n.start??n.end??b(),a=r.toJalaliParts(t);S({jy:a.jy,jm:a.jm}),h(t),J("days"),C(a.jy),R(a.jy-a.jy%12)}function ae(){A(!1),J("days"),g==="popover"&&(W==="single"?Y.current?.focus():(z==="start"?U:I).current?.focus())}function re(e){return P?!0:!r.isWithinRange(e.gregorian,m,j)}function se(e,t){const a=t.trim();if(!a){const D=$({...n,[e]:null});c(D);return}const s=L(a);if(!s||!r.isWithinRange(s,m,j))return;const f=$({...n,[e]:s});c(f)}function xe(e){const t=e.trim();if(!t){c({start:null,end:null});return}const a=t.match(/\d{4}[^\d]\d{1,2}[^\d]\d{1,2}/g)??[],s=a[0],f=a[1];if(!s)return;const D=L(s),B=f?L(f):null;D&&r.isWithinRange(D,m,j)&&(B&&!r.isWithinRange(B,m,j)||c($({start:D,end:B})))}function _e(e){if(y&&!P){if(e.key==="Escape"){e.preventDefault(),ae();return}if(_==="days"){if(e.key==="ArrowLeft"){e.preventDefault(),h(t=>r.addDays(t,-1));return}if(e.key==="ArrowRight"){e.preventDefault(),h(t=>r.addDays(t,1));return}if(e.key==="ArrowUp"){e.preventDefault(),h(t=>r.addDays(t,-7));return}if(e.key==="ArrowDown"){e.preventDefault(),h(t=>r.addDays(t,7));return}if(e.key==="PageUp"){e.preventDefault(),T(-1);return}if(e.key==="PageDown"){e.preventDefault(),T(1);return}if(e.key==="Enter"){if(e.preventDefault(),!r.isWithinRange(k,m,j))return;ie(k)}}}}function T(e){const t=r.fromJalaliParts({jy:u.jy,jm:u.jm,jd:1}),a=r.addJalaliMonths(t,e),s=r.toJalaliParts(a);S({jy:s.jy,jm:s.jm}),h(f=>r.addJalaliMonths(f,e))}function De(e){const t=r.fromJalaliParts({jy:e,jm:1,jd:1}),a=r.fromJalaliParts({jy:e+1,jm:1,jd:1});return{start:t,endExclusive:a}}function be(e,t){const a=r.fromJalaliParts({jy:e,jm:t,jd:1}),s=t===12?{jy:e+1,jm:1}:{jy:e,jm:t+1},f=r.fromJalaliParts({jy:s.jy,jm:s.jm,jd:1});return{start:a,endExclusive:f}}function oe(e){return!(m&&r.compareDays(e.endExclusive,m)<=0||j&&r.compareDays(e.start,j)>0)}function Pe(){if(_==="days"){J("years");const e=u.jy;C(e),R(e-e%12)}else J("days")}function Je(e){C(e),J("months")}function Re(e){const t={jy:N,jm:e};S(t),h(()=>r.fromJalaliParts({jy:t.jy,jm:t.jm,jd:1})),J("days")}function ie(e){if(!r.isWithinRange(e,m,j))return;const t=n.start,a=n.end;if(!t||t&&a){c({start:e,end:null}),H("end");return}const s=$({start:t,end:e});c(s),g==="popover"&&ae()}const Se=n.end??K,ke=!!(n.start&&!n.end&&K);function Me(e){const t=l("dvx-pdp__day",p?.day,!e.inCurrentMonth&&l("dvx-pdp__day--outside",p?.dayOutside),re(e)&&l("dvx-pdp__day--disabled",p?.dayDisabled),r.isSameDay(e.gregorian,b())&&l("dvx-pdp__day--today",p?.dayToday)),a=n.start,s=a?Se:null;return a&&r.isSameDay(e.gregorian,a)?l(t,"dvx-pdp__day--rangeStart",p?.dayRangeStart):s&&n.end&&r.isSameDay(e.gregorian,n.end)?l(t,"dvx-pdp__day--rangeEnd",p?.dayRangeEnd):a&&s&&(n.end||ke)&&Te(e.gregorian,a,s)?l(t,"dvx-pdp__day--inRange",p?.dayInRange):t}const de=o.jsxs("div",{ref:q,tabIndex:-1,className:"dvx-pdp__calendar",onKeyDown:_e,children:[o.jsxs("div",{className:l("dvx-pdp__header",p?.header),children:[o.jsx("button",{type:"button",className:l("dvx-pdp__nav",p?.navButton),onClick:_==="days"?()=>T(-1):()=>R(e=>e-12),"aria-label":"Previous month",children:"‹"}),o.jsx("button",{type:"button",className:l("dvx-pdp__monthLabel",p?.monthLabel),onClick:Pe,"aria-label":"Choose month and year",children:_==="days"?ge:N}),o.jsx("button",{type:"button",className:l("dvx-pdp__nav",p?.navButton),onClick:_==="days"?()=>T(1):()=>R(e=>e+12),"aria-label":"Next month",children:"›"})]}),_==="days"?o.jsxs("div",{className:l("dvx-pdp__grid",p?.grid),children:[o.jsx("div",{className:"dvx-pdp__weekdays","aria-hidden":"true",children:ve.map((e,t)=>o.jsx("div",{className:l("dvx-pdp__weekday",p?.weekday),children:e},t))}),o.jsx("div",{className:"dvx-pdp__days",children:he.map((e,t)=>o.jsx("div",{className:"dvx-pdp__row",children:e.map(a=>{const s=re(a),f=r.isSameDay(a.gregorian,k);return o.jsx("button",{type:"button",className:l(Me(a),f&&"dvx-pdp__day--focused"),disabled:s,onClick:()=>ie(a.gregorian),onMouseEnter:()=>{a.inCurrentMonth&&(h(a.gregorian),n.start&&!n.end&&Q(a.gregorian))},onMouseLeave:()=>Q(null),children:a.jalali.jd},`${a.jalali.jy}-${a.jalali.jm}-${a.jalali.jd}`)})},t))})]}):_==="years"?o.jsx("div",{className:"dvx-pdp__panel",children:o.jsx("div",{className:"dvx-pdp__panelGrid",children:Array.from({length:12}).map((e,t)=>{const a=je+t,s=oe(De(a)),f=a===u.jy;return o.jsx("button",{type:"button",className:l("dvx-pdp__cell",f&&"dvx-pdp__cell--active"),disabled:!s,onClick:()=>Je(a),children:a},a)})})}):o.jsx("div",{className:"dvx-pdp__panel",children:o.jsx("div",{className:"dvx-pdp__panelGrid",children:Array.from({length:12}).map((e,t)=>{const a=t+1,s=oe(be(N,a)),f=N===u.jy&&a===u.jm,D=x&&x.length===12?x[a-1]??String(a):String(a);return o.jsx("button",{type:"button",className:l("dvx-pdp__cell",f&&"dvx-pdp__cell--active"),disabled:!s,onClick:()=>Re(a),children:D},a)})})})]});return o.jsxs("div",{ref:V,className:l("dvx-pdp",g==="inline"&&"dvx-pdp--inline",fe,p?.root),dir:"rtl",children:[g==="inline"?null:o.jsx("div",{className:"dvx-pdp__control",children:W==="single"?o.jsx("input",{ref:Y,className:l("dvx-pdp__input",p?.input),disabled:P,placeholder:le,inputMode:"numeric",autoComplete:"off",value:ne,onChange:e=>E(e.target.value),onClick:()=>F(z),onBlur:()=>xe(ne),"aria-haspopup":"dialog","aria-expanded":y}):o.jsxs(o.Fragment,{children:[o.jsx("input",{ref:U,className:l("dvx-pdp__input",p?.input),disabled:P,placeholder:ce,inputMode:"numeric",autoComplete:"off",value:X,onChange:e=>Z(e.target.value),onClick:()=>F("start"),onBlur:()=>se("start",X),"aria-haspopup":"dialog","aria-expanded":y}),o.jsx("input",{ref:I,className:l("dvx-pdp__input",p?.input),disabled:P,placeholder:ue,inputMode:"numeric",autoComplete:"off",value:ee,onChange:e=>te(e.target.value),onClick:()=>F("end"),onBlur:()=>se("end",ee),"aria-haspopup":"dialog","aria-expanded":y})]})}),g==="inline"?de:y?o.jsx("div",{className:l("dvx-pdp__popover",p?.popover),role:"dialog","aria-modal":"false",children:de}):null]})}exports.PersianDatePicker=r.PersianDatePicker;exports.addDays=r.addDays;exports.addJalaliMonths=r.addJalaliMonths;exports.buildJalaliMonthGrid=r.buildJalaliMonthGrid;exports.clampToRange=r.clampToRange;exports.compareDays=r.compareDays;exports.formatJalali=r.formatJalali;exports.fromJalaliParts=r.fromJalaliParts;exports.getJalaliMonthLength=r.getJalaliMonthLength;exports.isSameDay=r.isSameDay;exports.isWithinRange=r.isWithinRange;exports.parseJalaliText=r.parseJalaliText;exports.toGregorian=r.toGregorian;exports.toJalali=r.toJalali;exports.toJalaliParts=r.toJalaliParts;exports.PersianDateRangePicker=$e;
@@ -0,0 +1,11 @@
1
+ export { PersianDatePicker } from './components/PersianDatePicker';
2
+ export type { PersianDatePickerProps, PersianDatePickerClasses } from './components/PersianDatePicker';
3
+ export { PersianDateRangePicker } from './components/PersianDateRangePicker';
4
+ export type { PersianDateRangePickerProps, PersianDateRangePickerClasses, PersianDateRange } from './components/PersianDateRangePicker';
5
+ export type { JalaliParts, FormatJalaliOptions } from './adapters/dayjsAdapter';
6
+ export { toJalaliParts, fromJalaliParts, formatJalali } from './adapters/dayjsAdapter';
7
+ export { toJalali } from './utils/toJalali';
8
+ export { toGregorian, parseJalaliText } from './utils/toGregorian';
9
+ export { addDays, addJalaliMonths, buildJalaliMonthGrid, clampToRange, compareDays, getJalaliMonthLength, isSameDay, isWithinRange, } from './utils/calendarGrid';
10
+ export type { CalendarDayCell, BuildJalaliMonthGridOptions } from './utils/calendarGrid';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAClE,YAAY,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAA;AAEtG,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAA;AAC5E,YAAY,EAAE,2BAA2B,EAAE,6BAA6B,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAA;AAEvI,YAAY,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAC/E,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAEtF,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAElE,OAAO,EACL,OAAO,EACP,eAAe,EACf,oBAAoB,EACpB,YAAY,EACZ,WAAW,EACX,oBAAoB,EACpB,SAAS,EACT,aAAa,GACd,MAAM,sBAAsB,CAAA;AAC7B,YAAY,EAAE,eAAe,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAA"}
package/dist/index.mjs ADDED
@@ -0,0 +1,364 @@
1
+ import { t as b, b as Ae, i as B, a as Fe, p as Be, c as V, d as R, f as C, e as ye, g as D } from "./PersianDatePicker-BicyzfQH.js";
2
+ import { P as We, k as qe, h as Qe, l as Xe, j as Ze } from "./PersianDatePicker-BicyzfQH.js";
3
+ import { jsxs as E, jsx as d, Fragment as Ve } from "react/jsx-runtime";
4
+ import * as s from "react";
5
+ function o(...u) {
6
+ return u.filter(Boolean).join(" ");
7
+ }
8
+ function Ye(u) {
9
+ return Fe(u).formatted;
10
+ }
11
+ function Oe(u) {
12
+ return Be(u, { allowLooseSeparators: !0 });
13
+ }
14
+ function k() {
15
+ const u = /* @__PURE__ */ new Date();
16
+ return u.setHours(0, 0, 0, 0), u;
17
+ }
18
+ function Y(u) {
19
+ const { start: a, end: c } = u;
20
+ return a && c && D(a, c) > 0 ? { start: c, end: a } : u;
21
+ }
22
+ function Ue(u, a, c) {
23
+ const m = D(a, c) <= 0 ? a : c, y = D(a, c) <= 0 ? c : a;
24
+ return D(u, m) >= 0 && D(u, y) <= 0;
25
+ }
26
+ function He(u) {
27
+ const {
28
+ value: a,
29
+ onChange: c,
30
+ minDate: m,
31
+ maxDate: y,
32
+ disabled: w,
33
+ inputVariant: K = "two",
34
+ placeholder: ve,
35
+ rangeSeparator: $ = " - ",
36
+ placeholderStart: je,
37
+ placeholderEnd: ge,
38
+ open: z,
39
+ onOpenChange: he,
40
+ mode: v = "popover",
41
+ formatValue: j = Ye,
42
+ parseValue: O = Oe,
43
+ weekdays: L,
44
+ monthLabels: h,
45
+ renderMonthLabel: U,
46
+ className: xe,
47
+ classes: l
48
+ } = u, W = s.useRef(null), q = s.useRef(null), Q = s.useRef(null), X = s.useRef(null), Z = s.useRef(null), [_e, be] = s.useState(!1), f = v === "inline" ? !0 : z ?? _e;
49
+ function G(e) {
50
+ he?.(e), v !== "inline" && z === void 0 && be(e);
51
+ }
52
+ const [ee, te] = s.useState("start"), [x, N] = s.useState("days"), [ke, S] = s.useState(() => {
53
+ const e = a.start ?? a.end ?? k(), t = b(e).jy;
54
+ return t - t % 12;
55
+ }), [T, J] = s.useState(() => {
56
+ const e = a.start ?? a.end ?? k();
57
+ return b(e).jy;
58
+ }), [i, M] = s.useState(() => {
59
+ const e = a.start ?? a.end ?? k(), t = b(e);
60
+ return { jy: t.jy, jm: t.jm };
61
+ }), [P, g] = s.useState(() => a.start ?? a.end ?? k()), [ne, ae] = s.useState(null), [re, se] = s.useState(() => a.start ? j(a.start) : ""), [oe, ie] = s.useState(() => a.end ? j(a.end) : ""), [de, A] = s.useState(() => {
62
+ const e = a.start ? j(a.start) : "", t = a.end ? j(a.end) : "";
63
+ return !e && !t ? "" : e && !t ? `${e}${$}` : `${e}${$}${t}`;
64
+ });
65
+ s.useEffect(() => {
66
+ se(a.start ? j(a.start) : ""), ie(a.end ? j(a.end) : "");
67
+ const e = a.start ? j(a.start) : "", t = a.end ? j(a.end) : "";
68
+ A(!e && !t ? "" : e && !t ? `${e}${$}` : `${e}${$}${t}`);
69
+ const n = a.start ?? a.end ?? k(), r = b(n);
70
+ M({ jy: r.jy, jm: r.jm }), g(n), J(r.jy), S(r.jy - r.jy % 12);
71
+ }, [j, a.end, a.start]), s.useEffect(() => {
72
+ if (v !== "popover" || !f) return;
73
+ const e = (t) => {
74
+ const n = W.current;
75
+ n && t.target instanceof Node && !n.contains(t.target) && G(!1);
76
+ };
77
+ return document.addEventListener("pointerdown", e), () => document.removeEventListener("pointerdown", e);
78
+ }, [v, f]), s.useEffect(() => {
79
+ f && Z.current?.focus();
80
+ }, [f]), s.useEffect(() => {
81
+ if (!f) return;
82
+ const e = b(P);
83
+ M((t) => t.jy === e.jy && t.jm === e.jm ? t : { jy: e.jy, jm: e.jm });
84
+ }, [P, f]);
85
+ const De = s.useMemo(() => U ? U(i.jy, i.jm) : h && h.length === 12 ? `${h[i.jm - 1] ?? String(i.jm)} ${i.jy}` : `${i.jy} / ${i.jm}`, [h, U, i.jm, i.jy]), we = s.useMemo(() => L && L.length === 7 ? L : ["1", "2", "3", "4", "5", "6", "7"], [L]), Ne = s.useMemo(() => Ae({ jy: i.jy, jm: i.jm }), [i.jm, i.jy]);
86
+ function I(e) {
87
+ if (w) return;
88
+ te(e), G(!0);
89
+ const t = (e === "start" ? a.start : a.end) ?? a.start ?? a.end ?? k(), n = b(t);
90
+ M({ jy: n.jy, jm: n.jm }), g(t), N("days"), J(n.jy), S(n.jy - n.jy % 12);
91
+ }
92
+ function le() {
93
+ G(!1), N("days"), v === "popover" && (K === "single" ? q.current?.focus() : (ee === "start" ? Q : X).current?.focus());
94
+ }
95
+ function ue(e) {
96
+ return w ? !0 : !R(e.gregorian, m, y);
97
+ }
98
+ function ce(e, t) {
99
+ const n = t.trim();
100
+ if (!n) {
101
+ const _ = Y({ ...a, [e]: null });
102
+ c(_);
103
+ return;
104
+ }
105
+ const r = O(n);
106
+ if (!r || !R(r, m, y)) return;
107
+ const p = Y({ ...a, [e]: r });
108
+ c(p);
109
+ }
110
+ function Re(e) {
111
+ const t = e.trim();
112
+ if (!t) {
113
+ c({ start: null, end: null });
114
+ return;
115
+ }
116
+ const n = t.match(/\d{4}[^\d]\d{1,2}[^\d]\d{1,2}/g) ?? [], r = n[0], p = n[1];
117
+ if (!r) return;
118
+ const _ = O(r), H = p ? O(p) : null;
119
+ _ && R(_, m, y) && (H && !R(H, m, y) || c(Y({ start: _, end: H })));
120
+ }
121
+ function Ce(e) {
122
+ if (f && !w) {
123
+ if (e.key === "Escape") {
124
+ e.preventDefault(), le();
125
+ return;
126
+ }
127
+ if (x === "days") {
128
+ if (e.key === "ArrowLeft") {
129
+ e.preventDefault(), g((t) => V(t, -1));
130
+ return;
131
+ }
132
+ if (e.key === "ArrowRight") {
133
+ e.preventDefault(), g((t) => V(t, 1));
134
+ return;
135
+ }
136
+ if (e.key === "ArrowUp") {
137
+ e.preventDefault(), g((t) => V(t, -7));
138
+ return;
139
+ }
140
+ if (e.key === "ArrowDown") {
141
+ e.preventDefault(), g((t) => V(t, 7));
142
+ return;
143
+ }
144
+ if (e.key === "PageUp") {
145
+ e.preventDefault(), F(-1);
146
+ return;
147
+ }
148
+ if (e.key === "PageDown") {
149
+ e.preventDefault(), F(1);
150
+ return;
151
+ }
152
+ if (e.key === "Enter") {
153
+ if (e.preventDefault(), !R(P, m, y)) return;
154
+ fe(P);
155
+ }
156
+ }
157
+ }
158
+ }
159
+ function F(e) {
160
+ const t = C({ jy: i.jy, jm: i.jm, jd: 1 }), n = ye(t, e), r = b(n);
161
+ M({ jy: r.jy, jm: r.jm }), g((p) => ye(p, e));
162
+ }
163
+ function Se(e) {
164
+ const t = C({ jy: e, jm: 1, jd: 1 }), n = C({ jy: e + 1, jm: 1, jd: 1 });
165
+ return { start: t, endExclusive: n };
166
+ }
167
+ function Me(e, t) {
168
+ const n = C({ jy: e, jm: t, jd: 1 }), r = t === 12 ? { jy: e + 1, jm: 1 } : { jy: e, jm: t + 1 }, p = C({ jy: r.jy, jm: r.jm, jd: 1 });
169
+ return { start: n, endExclusive: p };
170
+ }
171
+ function pe(e) {
172
+ return !(m && D(e.endExclusive, m) <= 0 || y && D(e.start, y) > 0);
173
+ }
174
+ function Pe() {
175
+ if (x === "days") {
176
+ N("years");
177
+ const e = i.jy;
178
+ J(e), S(e - e % 12);
179
+ } else
180
+ N("days");
181
+ }
182
+ function Ee(e) {
183
+ J(e), N("months");
184
+ }
185
+ function $e(e) {
186
+ const t = { jy: T, jm: e };
187
+ M(t), g(() => C({ jy: t.jy, jm: t.jm, jd: 1 })), N("days");
188
+ }
189
+ function fe(e) {
190
+ if (!R(e, m, y)) return;
191
+ const t = a.start, n = a.end;
192
+ if (!t || t && n) {
193
+ c({ start: e, end: null }), te("end");
194
+ return;
195
+ }
196
+ const r = Y({ start: t, end: e });
197
+ c(r), v === "popover" && le();
198
+ }
199
+ const Le = a.end ?? ne, Te = !!(a.start && !a.end && ne);
200
+ function Je(e) {
201
+ const t = o(
202
+ "dvx-pdp__day",
203
+ l?.day,
204
+ !e.inCurrentMonth && o("dvx-pdp__day--outside", l?.dayOutside),
205
+ ue(e) && o("dvx-pdp__day--disabled", l?.dayDisabled),
206
+ B(e.gregorian, k()) && o("dvx-pdp__day--today", l?.dayToday)
207
+ ), n = a.start, r = n ? Le : null;
208
+ return n && B(e.gregorian, n) ? o(t, "dvx-pdp__day--rangeStart", l?.dayRangeStart) : r && a.end && B(e.gregorian, a.end) ? o(t, "dvx-pdp__day--rangeEnd", l?.dayRangeEnd) : n && r && (a.end || Te) && Ue(e.gregorian, n, r) ? o(t, "dvx-pdp__day--inRange", l?.dayInRange) : t;
209
+ }
210
+ const me = /* @__PURE__ */ E("div", { ref: Z, tabIndex: -1, className: "dvx-pdp__calendar", onKeyDown: Ce, children: [
211
+ /* @__PURE__ */ E("div", { className: o("dvx-pdp__header", l?.header), children: [
212
+ /* @__PURE__ */ d(
213
+ "button",
214
+ {
215
+ type: "button",
216
+ className: o("dvx-pdp__nav", l?.navButton),
217
+ onClick: x === "days" ? () => F(-1) : () => S((e) => e - 12),
218
+ "aria-label": "Previous month",
219
+ children: "‹"
220
+ }
221
+ ),
222
+ /* @__PURE__ */ d(
223
+ "button",
224
+ {
225
+ type: "button",
226
+ className: o("dvx-pdp__monthLabel", l?.monthLabel),
227
+ onClick: Pe,
228
+ "aria-label": "Choose month and year",
229
+ children: x === "days" ? De : T
230
+ }
231
+ ),
232
+ /* @__PURE__ */ d(
233
+ "button",
234
+ {
235
+ type: "button",
236
+ className: o("dvx-pdp__nav", l?.navButton),
237
+ onClick: x === "days" ? () => F(1) : () => S((e) => e + 12),
238
+ "aria-label": "Next month",
239
+ children: "›"
240
+ }
241
+ )
242
+ ] }),
243
+ x === "days" ? /* @__PURE__ */ E("div", { className: o("dvx-pdp__grid", l?.grid), children: [
244
+ /* @__PURE__ */ d("div", { className: "dvx-pdp__weekdays", "aria-hidden": "true", children: we.map((e, t) => /* @__PURE__ */ d("div", { className: o("dvx-pdp__weekday", l?.weekday), children: e }, t)) }),
245
+ /* @__PURE__ */ d("div", { className: "dvx-pdp__days", children: Ne.map((e, t) => /* @__PURE__ */ d("div", { className: "dvx-pdp__row", children: e.map((n) => {
246
+ const r = ue(n), p = B(n.gregorian, P);
247
+ return /* @__PURE__ */ d(
248
+ "button",
249
+ {
250
+ type: "button",
251
+ className: o(Je(n), p && "dvx-pdp__day--focused"),
252
+ disabled: r,
253
+ onClick: () => fe(n.gregorian),
254
+ onMouseEnter: () => {
255
+ n.inCurrentMonth && (g(n.gregorian), a.start && !a.end && ae(n.gregorian));
256
+ },
257
+ onMouseLeave: () => ae(null),
258
+ children: n.jalali.jd
259
+ },
260
+ `${n.jalali.jy}-${n.jalali.jm}-${n.jalali.jd}`
261
+ );
262
+ }) }, t)) })
263
+ ] }) : x === "years" ? /* @__PURE__ */ d("div", { className: "dvx-pdp__panel", children: /* @__PURE__ */ d("div", { className: "dvx-pdp__panelGrid", children: Array.from({ length: 12 }).map((e, t) => {
264
+ const n = ke + t, r = pe(Se(n)), p = n === i.jy;
265
+ return /* @__PURE__ */ d(
266
+ "button",
267
+ {
268
+ type: "button",
269
+ className: o("dvx-pdp__cell", p && "dvx-pdp__cell--active"),
270
+ disabled: !r,
271
+ onClick: () => Ee(n),
272
+ children: n
273
+ },
274
+ n
275
+ );
276
+ }) }) }) : /* @__PURE__ */ d("div", { className: "dvx-pdp__panel", children: /* @__PURE__ */ d("div", { className: "dvx-pdp__panelGrid", children: Array.from({ length: 12 }).map((e, t) => {
277
+ const n = t + 1, r = pe(Me(T, n)), p = T === i.jy && n === i.jm, _ = h && h.length === 12 ? h[n - 1] ?? String(n) : String(n);
278
+ return /* @__PURE__ */ d(
279
+ "button",
280
+ {
281
+ type: "button",
282
+ className: o("dvx-pdp__cell", p && "dvx-pdp__cell--active"),
283
+ disabled: !r,
284
+ onClick: () => $e(n),
285
+ children: _
286
+ },
287
+ n
288
+ );
289
+ }) }) })
290
+ ] });
291
+ return /* @__PURE__ */ E("div", { ref: W, className: o("dvx-pdp", v === "inline" && "dvx-pdp--inline", xe, l?.root), dir: "rtl", children: [
292
+ v === "inline" ? null : /* @__PURE__ */ d("div", { className: "dvx-pdp__control", children: K === "single" ? /* @__PURE__ */ d(
293
+ "input",
294
+ {
295
+ ref: q,
296
+ className: o("dvx-pdp__input", l?.input),
297
+ disabled: w,
298
+ placeholder: ve,
299
+ inputMode: "numeric",
300
+ autoComplete: "off",
301
+ value: de,
302
+ onChange: (e) => A(e.target.value),
303
+ onClick: () => I(ee),
304
+ onBlur: () => Re(de),
305
+ "aria-haspopup": "dialog",
306
+ "aria-expanded": f
307
+ }
308
+ ) : /* @__PURE__ */ E(Ve, { children: [
309
+ /* @__PURE__ */ d(
310
+ "input",
311
+ {
312
+ ref: Q,
313
+ className: o("dvx-pdp__input", l?.input),
314
+ disabled: w,
315
+ placeholder: je,
316
+ inputMode: "numeric",
317
+ autoComplete: "off",
318
+ value: re,
319
+ onChange: (e) => se(e.target.value),
320
+ onClick: () => I("start"),
321
+ onBlur: () => ce("start", re),
322
+ "aria-haspopup": "dialog",
323
+ "aria-expanded": f
324
+ }
325
+ ),
326
+ /* @__PURE__ */ d(
327
+ "input",
328
+ {
329
+ ref: X,
330
+ className: o("dvx-pdp__input", l?.input),
331
+ disabled: w,
332
+ placeholder: ge,
333
+ inputMode: "numeric",
334
+ autoComplete: "off",
335
+ value: oe,
336
+ onChange: (e) => ie(e.target.value),
337
+ onClick: () => I("end"),
338
+ onBlur: () => ce("end", oe),
339
+ "aria-haspopup": "dialog",
340
+ "aria-expanded": f
341
+ }
342
+ )
343
+ ] }) }),
344
+ v === "inline" ? me : f ? /* @__PURE__ */ d("div", { className: o("dvx-pdp__popover", l?.popover), role: "dialog", "aria-modal": "false", children: me }) : null
345
+ ] });
346
+ }
347
+ export {
348
+ We as PersianDatePicker,
349
+ He as PersianDateRangePicker,
350
+ V as addDays,
351
+ ye as addJalaliMonths,
352
+ Ae as buildJalaliMonthGrid,
353
+ qe as clampToRange,
354
+ D as compareDays,
355
+ Qe as formatJalali,
356
+ C as fromJalaliParts,
357
+ Xe as getJalaliMonthLength,
358
+ B as isSameDay,
359
+ R as isWithinRange,
360
+ Be as parseJalaliText,
361
+ Ze as toGregorian,
362
+ Fe as toJalali,
363
+ b as toJalaliParts
364
+ };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const k=require("react/jsx-runtime"),b=require("react"),g=require("react-hook-form"),m=require("./PersianDatePicker-CCakBpBo.cjs");function D(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const r in e)if(r!=="default"){const n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:()=>e[r]})}}return t.default=e,Object.freeze(t)}const j=D(b);function c(e){const{name:t,control:r,rules:n,defaultValue:i,shouldUnregister:s,disabled:a,...l}=e,{field:o,fieldState:u,formState:P}=g.useController({name:t,control:r,rules:n,defaultValue:i??null,shouldUnregister:s,disabled:a}),f=o.value??null,d=j.useCallback(p=>{o.onChange(p)},[o]);return{field:o,fieldState:u,formState:P,pickerProps:{...l,value:f,onChange:d,disabled:a}}}function C(e){const{pickerProps:t}=c(e);return k.jsx(m.PersianDatePicker,{...t})}exports.RHF_PersianDatePicker=C;exports.usePersianDatePickerController=c;