@primereact/headless 11.0.0-alpha.7 → 11.0.0-alpha.9

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.
Files changed (114) hide show
  1. package/breadcrumb/index.d.ts +2 -0
  2. package/breadcrumb/index.mjs +2 -0
  3. package/breadcrumb/index.mjs.map +1 -0
  4. package/breadcrumb/useBreadcrumb.d.ts +3 -0
  5. package/breadcrumb/useBreadcrumb.props.d.ts +2 -0
  6. package/breadcrumb/useBreadcrumb.test.d.ts +0 -0
  7. package/carousel/index.mjs +1 -1
  8. package/carousel/index.mjs.map +1 -1
  9. package/carousel/useCarousel.d.ts +18 -18
  10. package/colorpicker/colorManager.d.ts +101 -0
  11. package/colorpicker/index.d.ts +3 -0
  12. package/colorpicker/index.mjs +2 -0
  13. package/colorpicker/index.mjs.map +1 -0
  14. package/colorpicker/input/index.d.ts +2 -0
  15. package/colorpicker/input/index.mjs +2 -0
  16. package/colorpicker/input/index.mjs.map +1 -0
  17. package/colorpicker/input/useColorPickerInput.d.ts +11 -0
  18. package/colorpicker/input/useColorPickerInput.props.d.ts +2 -0
  19. package/colorpicker/input/useColorPickerInput.test.d.ts +0 -0
  20. package/colorpicker/slider/index.d.ts +2 -0
  21. package/colorpicker/slider/index.mjs +2 -0
  22. package/colorpicker/slider/index.mjs.map +1 -0
  23. package/colorpicker/slider/useColorPickerSlider.d.ts +13 -0
  24. package/colorpicker/slider/useColorPickerSlider.props.d.ts +2 -0
  25. package/colorpicker/slider/useColorPickerSlider.test.d.ts +0 -0
  26. package/colorpicker/useColorPicker.d.ts +26 -0
  27. package/colorpicker/useColorPicker.props.d.ts +2 -0
  28. package/colorpicker/useColorPicker.test.d.ts +0 -0
  29. package/commandmenu/index.d.ts +2 -0
  30. package/commandmenu/index.mjs +2 -0
  31. package/commandmenu/index.mjs.map +1 -0
  32. package/commandmenu/useCommandMenu.d.ts +11 -0
  33. package/commandmenu/useCommandMenu.props.d.ts +2 -0
  34. package/commandmenu/useCommandMenu.test.d.ts +0 -0
  35. package/contextmenu/index.d.ts +2 -0
  36. package/contextmenu/index.mjs +2 -0
  37. package/contextmenu/index.mjs.map +1 -0
  38. package/contextmenu/useContextMenu.d.ts +1 -0
  39. package/contextmenu/useContextMenu.props.d.ts +2 -0
  40. package/contextmenu/useContextMenu.test.d.ts +0 -0
  41. package/datepicker/index.d.ts +2 -0
  42. package/datepicker/index.mjs +2 -0
  43. package/datepicker/index.mjs.map +1 -0
  44. package/datepicker/useDatePicker.d.ts +114 -0
  45. package/datepicker/useDatePicker.props.d.ts +2 -0
  46. package/datepicker/useDatePicker.test.d.ts +0 -0
  47. package/gallery/index.mjs +1 -1
  48. package/gallery/index.mjs.map +1 -1
  49. package/gallery/item/index.mjs +1 -1
  50. package/gallery/item/index.mjs.map +1 -1
  51. package/gallery/useGallery.d.ts +2 -8
  52. package/inputtags/index.d.ts +2 -0
  53. package/inputtags/index.mjs +2 -0
  54. package/inputtags/index.mjs.map +1 -0
  55. package/inputtags/useInputTags.d.ts +20 -0
  56. package/inputtags/useInputTags.props.d.ts +2 -0
  57. package/inputtags/useInputTags.test.d.ts +0 -0
  58. package/listbox/index.d.ts +2 -0
  59. package/listbox/index.mjs +2 -0
  60. package/listbox/index.mjs.map +1 -0
  61. package/listbox/useListbox.d.ts +45 -0
  62. package/listbox/useListbox.props.d.ts +2 -0
  63. package/listbox/useListbox.test.d.ts +0 -0
  64. package/menu/index.d.ts +2 -0
  65. package/menu/index.mjs +2 -0
  66. package/menu/index.mjs.map +1 -0
  67. package/menu/sub/index.d.ts +2 -0
  68. package/menu/sub/index.mjs +2 -0
  69. package/menu/sub/index.mjs.map +1 -0
  70. package/menu/sub/useMenuSub.d.ts +19 -0
  71. package/menu/sub/useMenuSub.props.d.ts +2 -0
  72. package/menu/useMenu.d.ts +34 -0
  73. package/menu/useMenu.props.d.ts +2 -0
  74. package/menu/useMenu.test.d.ts +0 -0
  75. package/orgchart/index.d.ts +2 -0
  76. package/orgchart/index.mjs +2 -0
  77. package/orgchart/index.mjs.map +1 -0
  78. package/orgchart/useOrgChart.d.ts +20 -0
  79. package/orgchart/useOrgChart.props.d.ts +2 -0
  80. package/orgchart/useOrgChart.test.d.ts +0 -0
  81. package/overlay/index.d.ts +2 -0
  82. package/overlay/index.mjs +2 -0
  83. package/overlay/index.mjs.map +1 -0
  84. package/overlay/useOverlay.d.ts +16 -0
  85. package/overlay/useOverlay.props.d.ts +2 -0
  86. package/overlay/useOverlay.test.d.ts +0 -0
  87. package/package.json +4 -4
  88. package/password/index.d.ts +2 -0
  89. package/password/index.mjs +2 -0
  90. package/password/index.mjs.map +1 -0
  91. package/password/usePassword.d.ts +35 -0
  92. package/password/usePassword.props.d.ts +2 -0
  93. package/password/usePassword.test.d.ts +0 -0
  94. package/placer/index.mjs +1 -1
  95. package/placer/index.mjs.map +1 -1
  96. package/toast/index.d.ts +1 -0
  97. package/toast/index.mjs +1 -1
  98. package/toast/index.mjs.map +1 -1
  99. package/toast/item/index.css +1 -1
  100. package/toast/item/index.css.map +1 -1
  101. package/toast/item/index.mjs +1 -1
  102. package/toast/item/index.mjs.map +1 -1
  103. package/toast/item/useToastItem.d.ts +12 -8
  104. package/toast/toastStore.d.ts +40 -0
  105. package/toast/useToast.d.ts +12 -4
  106. package/tree/TreeDragDropService.d.ts +24 -0
  107. package/tree/index.d.ts +3 -0
  108. package/tree/index.mjs +2 -0
  109. package/tree/index.mjs.map +1 -0
  110. package/tree/useTree.d.ts +27 -0
  111. package/tree/useTree.props.d.ts +2 -0
  112. package/tree/useTree.test.d.ts +0 -0
  113. package/toast/index.css +0 -2
  114. package/toast/index.css.map +0 -1
@@ -0,0 +1,2 @@
1
+ import{withHeadless as Nn}from"@primereact/core/headless";import{useMountEffect as Bn}from"@primereact/hooks";import{find as ae,findSingle as _,getAttribute as fe,getFocusableElements as Et,getIndex as Qe,getOuterWidth as Tt,isDate as wt,isEmpty as Be,isNotEmpty as Yn}from"@primeuix/utils";import*as d from"react";var yt={defaultValue:void 0,value:void 0,updateModelType:"date",selectionMode:"single",dateFormat:void 0,selectOtherMonths:!1,numberOfMonths:1,view:"date",minDate:void 0,maxDate:void 0,maxDateCount:void 0,showOnFocus:!0,autoZIndex:!0,baseZIndex:0,shortYearCutoff:"+10",showTime:!1,timeOnly:!1,hourFormat:"24",stepHour:1,stepMinute:1,stepSecond:1,hideOnDateTimeSelect:!1,hideOnRangeSelection:!1,timeSeparator:":",manualInput:!0,showSeconds:!1,appendTo:"body",onValueChange:void 0,onDateSelect:void 0,onMonthChange:void 0,onYearChange:void 0,onTodayButtonClick:void 0,onClearButtonClick:void 0,onInput:void 0,onKeyDown:void 0,onFocus:void 0,onBlur:void 0};var kt=(1969*365+Math.floor(1970/4)-Math.floor(1970/100)+Math.floor(1970/400))*24*60*60*1e7,o={config:{locale:{startsWith:"Starts with",contains:"Contains",notContains:"Not contains",endsWith:"Ends with",equals:"Equals",notEquals:"Not equals",noFilter:"No Filter",lt:"Less than",lte:"Less than or equal to",gt:"Greater than",gte:"Greater than or equal to",dateIs:"Date is",dateIsNot:"Date is not",dateBefore:"Date is before",dateAfter:"Date is after",clear:"Clear",apply:"Apply",matchAll:"Match All",matchAny:"Match Any",addRule:"Add Rule",removeRule:"Remove Rule",accept:"Yes",reject:"No",choose:"Choose",upload:"Upload",cancel:"Cancel",completed:"Completed",pending:"Pending",fileSizeTypes:["B","KB","MB","GB","TB","PB","EB","ZB","YB"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],chooseYear:"Choose Year",chooseMonth:"Choose Month",chooseDate:"Choose Date",prevDecade:"Previous Decade",nextDecade:"Next Decade",prevYear:"Previous Year",nextYear:"Next Year",prevMonth:"Previous Month",nextMonth:"Next Month",prevHour:"Previous Hour",nextHour:"Next Hour",prevMinute:"Previous Minute",nextMinute:"Next Minute",prevSecond:"Previous Second",nextSecond:"Next Second",am:"am",pm:"pm",today:"Today",weekHeader:"Wk",firstDayOfWeek:0,showMonthAfterYear:!1,dateFormat:"mm/dd/yy",weak:"Weak",medium:"Medium",strong:"Strong",passwordPrompt:"Enter a password",emptyFilterMessage:"No results found",searchMessage:"{0} results are available",selectionMessage:"{0} items selected",emptySelectionMessage:"No selected item",emptySearchMessage:"No results found",fileChosenMessage:"{0} files",noFileChosenMessage:"No file chosen",emptyMessage:"No available options",aria:{trueLabel:"True",falseLabel:"False",nullLabel:"Not Selected",star:"1 star",stars:"{star} stars",selectAll:"All items selected",unselectAll:"All items unselected",close:"Close",previous:"Previous",next:"Next",navigation:"Navigation",scrollTop:"Scroll Top",moveTop:"Move Top",moveUp:"Move Up",moveDown:"Move Down",moveBottom:"Move Bottom",moveToTarget:"Move to Target",moveToSource:"Move to Source",moveAllToTarget:"Move All to Target",moveAllToSource:"Move All to Source",pageLabel:"Page {page}",firstPageLabel:"First Page",lastPageLabel:"Last Page",nextPageLabel:"Next Page",prevPageLabel:"Previous Page",rowsPerPageLabel:"Rows per page",jumpToPageDropdownLabel:"Jump to Page Dropdown",jumpToPageInputLabel:"Jump to Page Input",selectRow:"Row Selected",unselectRow:"Row Unselected",expandRow:"Row Expanded",collapseRow:"Row Collapsed",showFilterMenu:"Show Filter Menu",hideFilterMenu:"Hide Filter Menu",filterOperator:"Filter Operator",filterConstraint:"Filter Constraint",editRow:"Row Edit",saveEdit:"Save Edit",cancelEdit:"Cancel Edit",listView:"List View",gridView:"Grid View",slide:"Slide",slideNumber:"{slideNumber}",zoomImage:"Zoom Image",zoomIn:"Zoom In",zoomOut:"Zoom Out",rotateRight:"Rotate Right",rotateLeft:"Rotate Left",listLabel:"Option List"}}}},Wn=Nn({name:"useDatePicker",defaultProps:yt,setup:({props:a,elementRef:ke})=>{var ht,bt,gt,Dt,Mt;let N=d.useRef(null),Ye=d.useRef(null),Oe=d.useRef(null),de=d.useRef(null),y=d.useRef(null),Ke=d.useRef(null),me=d.useRef(!1),Re=d.useRef(null),He=d.useRef(null),[Xe,le]=d.useState(!0),[V,A]=d.useState(!1),[v,he]=d.useState(a.view),[C,p]=d.useState(0),[m,ee]=d.useState(0),[T,Se]=d.useState(0),[B,Le]=d.useState(0),[Y,xe]=d.useState(0),[L,be]=d.useState(!1),[ge,Ve]=d.useState(0),[Ae,S]=d.useState(null),[re,Ce]=d.useState(null),Rt=()=>a.value!==void 0?typeof a.value=="string"?Z(a.value):a.value:a.defaultValue!==void 0?typeof a.defaultValue=="string"?Z(a.defaultValue):a.defaultValue:null,[s,Ue]=d.useState(()=>Rt()),Ht={rawValue:s,overlayVisible:V,currentView:v,showClearIcon:Xe,hoveredDate:re},pe=e=>{if(s){if(z())return te(k(s),e);if(O()){let t=!1;if(Array.isArray(s)){for(let n of s)if(t=te(k(n),e),t)break}return t}else if(F()&&Array.isArray(s)){let t=k(s[0]);if(t===null)return!1;if(s[1]){let n=k(s[1]);return n===null?!1:te(t,e)||te(n,e)||Ct(t,n,e)}else return te(t,e)}}return!1},St=e=>{if(!F()||!re||!s||!Array.isArray(s)||s.length===0||s[1]!==null)return!1;let t=k(s[0]);if(!t)return!1;let n=new Date(re.year,re.month,re.day),l=new Date(e.year,e.month,e.day),r=t.getTime()<n.getTime()?t:n,c=t.getTime()<n.getTime()?n:t,u=l.getTime();return u>=r.getTime()&&u<=c.getTime()},Lt=e=>{F()&&e.selectable&&Ce(e)},xt=e=>{if(wt(s)&&s!==null)return s.getMonth()===e&&s.getFullYear()===m;if(Array.isArray(s)){if(O())return s==null?void 0:s.some(t=>{let n=k(t);return n?n.getMonth()===e&&n.getFullYear()===m:!1});if(F()){let t=s!=null&&s[0]?k(s[0]):null,n=s!=null&&s[1]?k(s[1]):null;if(n){if(!t)return!1;let l=new Date(m,e,1),r=new Date(t.getFullYear(),t.getMonth(),1),c=new Date(n.getFullYear(),n.getMonth(),1);return l>=r&&l<=c}else return t?t.getFullYear()===m&&t.getMonth()===e:!1}}return!1},At=e=>{if(typeof s!="string"&&s!==null)return s.getFullYear()===e;if(Array.isArray(s)){if(O())return s==null?void 0:s.some(t=>{let n=k(t);return n?n.getFullYear()===e:!1});if(F()){let t=s!=null&&s[0]?k(s[0]):null,n=s!=null&&s[1]?k(s[1]):null,l=t?t.getFullYear():null,r=n?n.getFullYear():null;return!l||!r?!1:l===e||r===e||l<e&&r>e}}return!1},te=(e,t)=>{if(e){let n=typeof e=="string"?Z(e):e;if(n&&n instanceof Date)return n.getDate()===t.day&&n.getMonth()===t.month&&n.getFullYear()===t.year}return!1},Ct=(e,t,n)=>{let r=k(e),c=k(t);if(r&&c){let u=new Date(n.year,n.month,n.day);return r.getTime()<=u.getTime()&&c.getTime()>=u.getTime()}return!1},Ft=d.useMemo(()=>{var e,t,n,l;return((t=(e=o==null?void 0:o.config)==null?void 0:e.locale)==null?void 0:t.firstDayOfWeek)>0?7-((l=(n=o==null?void 0:o.config)==null?void 0:n.locale)==null?void 0:l.firstDayOfWeek):0},[]),Pt=(e,t)=>{let n=new Date;n.setDate(1),n.setMonth(e),n.setFullYear(t);let l=n.getDay()+Ft;return l>=7?l-7:l},je=(e,t)=>32-tt(new Date(t,e,32)).getDate(),vt=(e,t)=>{let n=et(e,t);return je(n.month,n.year)},et=(e,t)=>{let n,l;return e===0?(n=11,l=t-1):(n=e-1,l=t),{month:n,year:l}},It=(e,t)=>{let n,l;return e===11?(n=0,l=t+1):(n=e+1,l=t),{month:n,year:l}},tt=e=>(e||(e=new Date),e.setHours(e.getHours()>12?e.getHours()+2:0),e),Fe=(e,t,n,l)=>e.getDate()===t&&e.getMonth()===n&&e.getFullYear()===l,se=(e,t,n,l)=>{let r=!0,c=!0,u=!0,f=!0;return l&&!a.selectOtherMonths?!1:(a.minDate&&(a.minDate.getFullYear()>n||a.minDate.getFullYear()===n&&(a.minDate.getMonth()>t||a.minDate.getMonth()===t&&a.minDate.getDate()>e))&&(r=!1),a.maxDate&&(a.maxDate.getFullYear()<n||a.maxDate.getFullYear()===n&&(a.maxDate.getMonth()<t||a.maxDate.getMonth()===t&&a.maxDate.getDate()<e))&&(c=!1),a.disabledDates&&(u=!Wt(e,t,n)),a.disabledDays&&(f=!Jt(e,t,n)),r&&c&&u&&f)},Nt=e=>{S({backward:!0,button:!0}),J(e)},Bt=e=>{S({backward:!1,button:!0}),q(e)},J=e=>{e.preventDefault(),$()&&(v==="month"?(We(),a.onYearChange&&a.onYearChange({month:C,year:m})):v==="year"?Yt():e.shiftKey?We():(C===0?(p(11),We()):p(C-1),a.onMonthChange&&a.onMonthChange({month:C+1,year:m})))},q=e=>{e.preventDefault(),$()&&(v==="month"?(Je(),a.onYearChange&&a.onYearChange({month:C,year:m})):v==="year"?Ot():e.shiftKey?Je():(C===11?(p(0),Je()):p(C+1),a.onMonthChange&&a.onMonthChange({month:C+1,year:m})))},We=()=>{ee((m!=null?m:0)-1)},Yt=()=>{ee((m!=null?m:0)-10)},Je=()=>{ee((m!=null?m:0)+1)},Ot=()=>{ee((m!=null?m:0)+10)},Kt=e=>{he("month"),e.preventDefault()},Vt=e=>{he("year"),e.preventDefault()},$=()=>!a.disabled&&!a.readOnly,Ut=e=>{var n,l,r,c,u,f;let t=e.getHours();a.hourFormat==="12"&&(be(t>11),t>=12&&(t=t==12?12:t-12)),Se(Math.floor(t/((n=a.stepHour)!=null?n:1))*((l=a.stepHour)!=null?l:1)),Le(Math.floor(e.getMinutes()/((r=a.stepMinute)!=null?r:1))*((c=a.stepMinute)!=null?c:1)),xe(Math.floor(e.getSeconds()/((u=a.stepSecond)!=null?u:1))*((f=a.stepSecond)!=null?f:1))},jt=()=>{var e,t;$()&&(V?A(!1):((t=(e=N.current)==null?void 0:e.elementRef.current)==null||t.focus(),A(!0)))},Wt=(e,t,n)=>{if(a.disabledDates){for(let l of a.disabledDates)if(l.getFullYear()===n&&l.getMonth()===t&&l.getDate()===e)return!0}return!1},Jt=(e,t,n)=>{if(a.disabledDays){let r=new Date(n,t,e).getDay();return a.disabledDays.indexOf(r)!==-1}return!1},De=(e,t)=>{var n;if(!(a.disabled||!t.selectable)){if(y.current&&ae(y.current,'table td span:not([data-p-disabled="true"])').forEach(l=>l.tabIndex=-1),e&&e.currentTarget.focus(),O()&&pe(t)){if(s&&Array.isArray(s)){let l=s.filter(r=>!te(k(r),t));oe(l)}}else qt()&&(t.otherMonth&&(p(t.month),ee(t.year)),nt(t));z()&&(!a.showTime||a.hideOnDateTimeSelect)&&(N.current&&((n=N.current)==null||n.elementRef.current.focus()),setTimeout(()=>{A(!1)},150))}},nt=e=>{let t=new Date(e.year,e.month,e.day);a.showTime&&(a.hourFormat==="12"&&T!==12&&L?t.setHours(T+12):t.setHours(T),t.setMinutes(B),t.setSeconds(a.showSeconds?Y:0)),a.minDate&&a.minDate>t&&(t=a.minDate),a.maxDate&&a.maxDate<t&&(t=a.maxDate),Se(t.getHours()),Le(t.getMinutes()),xe(t.getSeconds());let n=null;if(z())n=t;else if(O())Array.isArray(s)?n=[...s,t]:n=[t];else if(F())if(s&&Array.isArray(s)&&s.length){let l=k(s[0]),r=s[1];!r&&t.getTime()>=l.getTime()?(r=t,Ve(1),Ce(null)):(l=t,r=null,Ve(0),Ce(null)),n=[l,r]}else n=[t,null],Ve(0);n!==null&&oe(n),a.onDateSelect&&a.onDateSelect({value:t})},oe=e=>{if(Ue(e),a.updateModelType==="date")if(z())Me(e);else{let t=null;Array.isArray(e)&&(t=e.map(n=>k(n))),Me(t)}else if(a.updateModelType=="string"){if(z())(e instanceof Date||typeof e=="string"||e===null)&&Me(Q(e));else if(O()){let t=null;Array.isArray(e)&&(t=e.map(n=>{let l=Q(n);return typeof l=="string"?l:null})),Me(t)}else if(F()){let t=null;Array.isArray(e)&&(t=e.map(n=>{if(n==null)return null;let l=Q(n);return l!==null&&typeof l=="string"?l:null})),Me(t)}}},qt=()=>O()&&a.maxDateCount!=null?a.maxDateCount>(s&&Array.isArray(s)?s.length:0):!0,Me=e=>{le(!Be(e)),a.onValueChange&&a.onValueChange({value:e})},z=()=>a.selectionMode==="single",F=()=>a.selectionMode==="range",O=()=>a.selectionMode==="multiple",ye=e=>{var n,l,r,c;if(typeof e=="string")return a.dateFormat?isNaN(new Date(e).getTime())?e:at(new Date(e),a.dateFormat):e;let t="";if(e)try{if(z()){let u=Array.isArray(e)?(n=e[0])!=null?n:null:e;u==null?t="":t=(l=Q(u))!=null?l:""}else if(O()){if(Array.isArray(e))for(let u=0;u<e.length;u++){let f=e[u],h=Q(typeof f=="string"?k(f):f);t+=h,u!==e.length-1&&(t+=", ")}}else if(F()&&Array.isArray(e)&&e.length){let u=k(e[0]),f=k(e[1]);t=(r=Q(u))!=null?r:"",f&&(t+=" - "+((c=Q(f))!=null?c:""))}}catch(u){t=typeof e=="string"?e:""}return t},Q=e=>{let t=null;return wt(e)&&Yn(e)?a.timeOnly?t=lt(e):(t=at(e,mt),a.showTime&&(t+=" "+lt(e))):a.updateModelType==="string"&&(t=e),t},at=(e,t)=>{var h,i,g,R,M,w,b,K;if(!e)return"";let n,l=D=>{let H=n+1<t.length&&t.charAt(n+1)===D;return H&&n++,H},r=(D,H,I)=>{let E=""+H;if(l(D))for(;E.length<I;)E="0"+E;return E},c=(D,H,I,E)=>l(D)?E[H]:I[H],u="",f=!1;if(e)for(n=0;n<t.length;n++)if(f)t.charAt(n)==="'"&&!l("'")?f=!1:u+=t.charAt(n);else switch(t.charAt(n)){case"d":u+=r("d",e.getDate(),2);break;case"D":u+=c("D",e.getDay(),(i=(h=o==null?void 0:o.config)==null?void 0:h.locale)==null?void 0:i.dayNamesShort,(R=(g=o==null?void 0:o.config)==null?void 0:g.locale)==null?void 0:R.dayNames);break;case"o":u+=r("o",Math.round((new Date(e.getFullYear(),e.getMonth(),e.getDate()).getTime()-new Date(e.getFullYear(),0,0).getTime())/864e5),3);break;case"m":u+=r("m",e.getMonth()+1,2);break;case"M":u+=c("M",e.getMonth(),(w=(M=o==null?void 0:o.config)==null?void 0:M.locale)==null?void 0:w.monthNamesShort,(K=(b=o==null?void 0:o.config)==null?void 0:b.locale)==null?void 0:K.monthNames);break;case"y":u+=l("y")?e.getFullYear():(e.getFullYear()%100<10?"0":"")+e.getFullYear()%100;break;case"@":u+=e.getTime();break;case"!":u+=e.getTime()*1e4+kt;break;case"'":l("'")?u+="'":f=!0;break;default:u+=t.charAt(n)}return u},lt=e=>{var c,u,f,h;if(!e)return"";let t="",n=e.getHours(),l=e.getMinutes(),r=e.getSeconds();return a.hourFormat==="12"&&n>11&&n!==12&&(n-=12),a.hourFormat==="12"?t+=n===0?12:n<10?"0"+n:n:t+=n<10?"0"+n:n,t+=":",t+=l<10?"0"+l:l,a.showSeconds&&(t+=":",t+=r<10?"0"+r:r),a.hourFormat==="12"&&(t+=e.getHours()>11?` ${(u=(c=o==null?void 0:o.config)==null?void 0:c.locale)==null?void 0:u.pm}`:` ${(h=(f=o==null?void 0:o.config)==null?void 0:f.locale)==null?void 0:h.am}`),t},qe=()=>{Ke.current&&clearTimeout(Ke.current)},zt=e=>{let t=new Date,n={day:t.getDate(),month:t.getMonth(),year:t.getFullYear(),otherMonth:t.getMonth()!==C||t.getFullYear()!==m,today:!0,selectable:!0};he("date"),De(null,n),a.onTodayButtonClick&&a.onTodayButtonClick({originalEvent:e,date:t}),e.preventDefault()},Zt=e=>{oe(null),A(!1),le(!1),a.onClearButtonClick&&a.onClearButtonClick(e),e.preventDefault()},Gt=(e,t,n)=>{$()&&(ze(e,null,t,n),e.preventDefault())},rt=e=>{$()&&(qe(),st(),e.preventDefault())},_t=()=>{qe()},$t=e=>{switch(e.code){case"Tab":Ee(e);break;case"Escape":A(!1),e.preventDefault();break;default:break}a.onKeyDown&&a.onKeyDown(e)},Qt=(e,t,n)=>{switch(e.code){case"Enter":case"NumpadEnter":case"Space":$()&&(ze(e,null,t,n),e.preventDefault());break}},Xt=e=>{switch(e.code){case"Enter":case"NumpadEnter":case"Space":rt(e)}},ze=(e,t,n,l)=>{let r=t||500;switch(qe(),Ke.current=setTimeout(()=>{ze(e,100,n,l)},r),n){case 0:l===1?en(e):tn(e);break;case 1:l===1?nn(e):an(e);break;case 2:l===1?ln(e):rn(e);break}},pt=(e,t)=>a.hourFormat=="12"?e===12?t?12:0:t?e+12:e:e,ne=(e,t,n,l)=>{let r=$e,c=pt(e,l);F()&&(r=Array.isArray(s)?s[1]||s[0]:null),O()&&(r=Array.isArray(s)?s[s.length-1]:null);let u=r instanceof Date?r.toDateString():null;return!(a.minDate&&u&&a.minDate.toDateString()===u&&(a.minDate.getHours()>c||a.minDate.getHours()===c&&(a.minDate.getMinutes()>t||a.minDate.getMinutes()===t&&a.minDate.getSeconds()>n))||a.maxDate&&u&&a.maxDate.toDateString()===u&&(a.maxDate.getHours()<c||a.maxDate.getHours()===c&&(a.maxDate.getMinutes()<t||a.maxDate.getMinutes()===t&&a.maxDate.getSeconds()<n)))},en=e=>{let t=T,n=T+Number(a.stepHour),l=L;a.hourFormat=="24"?n=n>=24?n-24:n:a.hourFormat=="12"&&(t<12&&n>11&&(l=!L),n=n>=13?n-12:n),ne(n,B,Y,l)&&(Se(n),be(l)),e.preventDefault()},tn=e=>{let t=T-Number(a.stepHour),n=L;a.hourFormat=="24"?t=t<0?24+t:t:a.hourFormat=="12"&&(T===12&&(n=!L),t=t<=0?12+t:t),ne(t,B,Y,n)&&(Se(t),be(n)),e.preventDefault()},nn=e=>{let t=B+Number(a.stepMinute);ne(T,t,Y,L)&&Le(t>59?t-60:t),e.preventDefault()},an=e=>{let t=B-Number(a.stepMinute);t=t<0?60+t:t,ne(T,t,Y,L)&&Le(t),e.preventDefault()},ln=e=>{let t=Y+Number(a.stepSecond);ne(T,B,t,L)&&xe(t>59?t-60:t),e.preventDefault()},rn=e=>{let t=Y-Number(a.stepSecond);t=t<0?60+t:t,ne(T,B,t,L)&&xe(t),e.preventDefault()},st=()=>{let e=$e;F()&&(e=Array.isArray(s)?s[ge]||s[0]:null),O()&&(e=Array.isArray(s)?s[s.length-1]:null);let t=e&&e instanceof Date?new Date(e.getTime()):new Date;a.hourFormat=="12"?T===12?t.setHours(L?12:0):t.setHours(L?T+12:T):t.setHours(T),t.setMinutes(B),t.setSeconds(Y);let n;F()?Array.isArray(s)?ge===1&&s[1]?n=[s[0],t]:ge===0?n=[t,s[1]]:n=[t,null]:n=[t,null]:O()?Array.isArray(s)?n=[...s.slice(0,-1),t]:n=[t]:n=t,oe(n),a.onDateSelect&&a.onDateSelect({value:n})},sn=e=>{!ne(T,B,Y,!L)&&(a.maxDate||a.minDate)||(be(!L),e.preventDefault())},ot=(e,t)=>{a.view==="month"?De(e,{year:m,month:t,day:1,selectable:!0,otherMonth:!1,today:!1}):(p(t),he("date"),a.onMonthChange&&a.onMonthChange({month:C+1,year:m})),setTimeout(Pe,0)},ut=(e,t)=>{a.view==="year"?De(e,{year:t.value,month:0,day:1,selectable:!0,otherMonth:!1,today:!1}):(ee(t.value),he("month"),a.onYearChange&&a.onYearChange({month:C+1,year:m})),setTimeout(Pe,0)},Ze=()=>{let e=$e;if(e&&(p(e.getMonth()),ee(e.getFullYear()),a.showTime||a.timeOnly)){let t=e;if(F()&&s&&Array.isArray(s)&&s[ge]){let n=s[ge];n instanceof Date&&(t=n)}Ut(t)}},ct=e=>{if(e==null)return!0;let t=!0;return z()&&e instanceof Date?se(e.getDate(),e.getMonth(),e.getFullYear(),!1)||(t=!1):Array.isArray(e)&&e.every(n=>se(n.getDate(),n.getMonth(),n.getFullYear(),!1))&&F()&&(t=e.length>1&&e[1]>=e[0]),t},Z=e=>{var n,l,r;if(!e||e.trim().length===0)return null;let t;if(z())t=(n=Ge(e))!=null?n:null;else if(O()){let c=e.split(","),u=[];for(let f of c)u.push((l=Ge(f.trim()))!=null?l:null);t=u}else if(F()){let c=e.split(" - "),u=[];for(let f=0;f<c.length;f++)u[f]=(r=Ge(c[f].trim()))!=null?r:null;t=u}return t},k=e=>{var t,n;if(typeof e=="string"){let l=Z(e);return l?z()?l:Array.isArray(l)&&(t=l[0])!=null?t:null:null}return Array.isArray(e)?(n=e[0])!=null?n:null:e!=null?e:null},Ge=e=>{let t,n=e.match(/(?:(.+?) )?(\d{2}:\d{2}(?::\d{2})?)(?: (am|pm))?/);if(a.timeOnly)t=new Date,n&&it(t,n[2],n[3]);else{let l=mt;a.showTime?n&&(t=ft(n[1],l),it(t,n[2],n[3])):t=ft(e,l)}return t},it=(e,t,n)=>{var r,c,u,f;if(a.hourFormat=="12"&&!n)throw new Error("Invalid Time");be(n===((c=(r=o==null?void 0:o.config)==null?void 0:r.locale)==null?void 0:c.pm)||n===((f=(u=o==null?void 0:o.config)==null?void 0:u.locale)==null?void 0:f.pm.toLowerCase()));let l=on(t);e.setHours(l.hour),e.setMinutes(l.minute),l.second!==null&&e.setSeconds(l.second)},on=e=>{let t=e.split(":"),n=a.showSeconds?3:2,l=/^[0-9][0-9]$/;if(t.length!==n||!t[0].match(l)||!t[1].match(l)||a.showSeconds&&!t[2].match(l))throw"Invalid time";let r=parseInt(t[0]),c=parseInt(t[1]),u=a.showSeconds?parseInt(t[2]):null;if(isNaN(r)||isNaN(c)||r>23||c>59||a.hourFormat=="12"&&r>12||a.showSeconds&&(u===null||isNaN(u)||u>59))throw"Invalid time";return a.hourFormat=="12"&&r!==12&&L?r+=12:a.hourFormat=="12"&&r==12&&!L&&(r=0),{hour:r,minute:c,second:u}},ft=(e,t)=>{var H,I,E,ue,j,x,P,ce;if(t==null||e==null)throw"Invalid arguments";if(e=typeof e=="object"?e.toString():e+"",e==="")return null;let n,l,r,c=0,u=typeof a.shortYearCutoff!="string"?a.shortYearCutoff:new Date().getFullYear()%100+parseInt(a.shortYearCutoff,10),f=-1,h=-1,i=-1,g=-1,R=!1,M,w=W=>{let ie=n+1<t.length&&t.charAt(n+1)===W;return ie&&n++,ie},b=W=>{let ie=w(W),Ie=W==="@"?14:W==="!"?20:W==="y"&&ie?4:W==="o"?3:2,Te=W==="y"?Ie:1,Ne=new RegExp("^\\d{"+Te+","+Ie+"}"),G=e.substring(c).match(Ne);if(!G)throw"Missing number at position "+c;return c+=G[0].length,parseInt(G[0],10)},K=(W,ie,Ie)=>{let Te=-1,Ne=w(W)?Ie:ie,G=[];for(let U=0;U<Ne.length;U++)G.push([U,Ne[U]]);G.sort((U,we)=>we[1].length-U[1].length);for(let U=0;U<G.length;U++){let we=G[U][1];if(e.substr(c,we.length).toLowerCase()===we.toLowerCase()){Te=G[U][0],c+=we.length;break}}if(Te!==-1)return Te+1;throw"Unknown name at position "+c},D=()=>{if(e.charAt(c)!==t.charAt(n))throw"Unexpected literal at position "+c;c++};for(v==="month"&&(i=1),v==="year"&&(i=1,h=1),n=0;n<t.length;n++)if(R)t.charAt(n)==="'"&&!w("'")?R=!1:D();else switch(t.charAt(n)){case"d":i=b("d");break;case"D":K("D",(I=(H=o==null?void 0:o.config)==null?void 0:H.locale)==null?void 0:I.dayNamesShort,(ue=(E=o==null?void 0:o.config)==null?void 0:E.locale)==null?void 0:ue.dayNames);break;case"o":g=b("o");break;case"m":h=b("m");break;case"M":h=K("M",(x=(j=o==null?void 0:o.config)==null?void 0:j.locale)==null?void 0:x.monthNamesShort,(ce=(P=o==null?void 0:o.config)==null?void 0:P.locale)==null?void 0:ce.monthNames);break;case"y":f=b("y");break;case"@":M=new Date(b("@")),f=M.getFullYear(),h=M.getMonth()+1,i=M.getDate();break;case"!":M=new Date((b("!")-kt)/1e4),f=M.getFullYear(),h=M.getMonth()+1,i=M.getDate();break;case"'":w("'")?D():R=!0;break;default:D()}if(c<e.length&&(r=e.substr(c),!/^\s+/.test(r)))throw"Extra/unparsed characters found in date: "+r;if(f===-1?f=new Date().getFullYear():f<100&&(f+=new Date().getFullYear()-new Date().getFullYear()%100+(f<=u?0:-100)),g>-1){h=1,i=g;do{if(l=je(h-1,f),i<=l)break;h++,i-=l}while(!0)}if(M=tt(new Date(f,h-1,i)),M.getFullYear()!==f||M.getMonth()+1!==h||M.getDate()!==i)throw"Invalid date";return M},un=e=>{let t=new Date(e.getTime());t.setDate(t.getDate()+4-(t.getDay()||7));let n=t.getTime();return t.setMonth(0),t.setDate(1),Math.floor(Math.round((n-t.getTime())/864e5)/7)+1},cn=(e,t,n)=>{var u,f,h,i,g,R,M,w,b,K,D,H;e.preventDefault();let l=e.currentTarget,r=l.parentElement,c=Qe(r);switch(e.code){case"ArrowDown":{if(l.tabIndex=-1,(u=r.parentElement)==null?void 0:u.nextElementSibling){let E=Qe(r.parentElement),x=Array.from((i=(h=(f=r.parentElement)==null?void 0:f.parentElement)==null?void 0:h.children)!=null?i:[]).slice(E+1).find(P=>{let ce=P.children[c].children[0];return!fe(ce,"data-p-disabled")});if(x){let P=x.children[c].children[0];P.tabIndex=0,P.focus()}else S({backward:!1}),q(e)}else S({backward:!1}),q(e);e.preventDefault();break}case"ArrowUp":{if(l.tabIndex=-1,e.altKey)A(!0);else if((g=r.parentElement)==null?void 0:g.previousElementSibling){let E=Qe(r.parentElement),x=Array.from((w=(M=(R=r.parentElement)==null?void 0:R.parentElement)==null?void 0:M.children)!=null?w:[]).slice(0,E).reverse().find(P=>{let ce=P.children[c].children[0];return!fe(ce,"data-p-disabled")});if(x){let P=x.children[c].children[0];P.tabIndex=0,P.focus()}else S({backward:!0}),J(e)}else S({backward:!0}),J(e);e.preventDefault();break}case"ArrowLeft":{if(l.tabIndex=-1,r.previousElementSibling){let j=Array.from((K=(b=r.parentElement)==null?void 0:b.children)!=null?K:[]).slice(0,c).reverse().find(x=>{let P=x.children[0];return fe(P,"data-pc-section")!=="weeklabelcontainer"});if(j){let x=j.children[0];x.tabIndex=0,x.focus()}else X(e,!0,n)}else X(e,!0,n);e.preventDefault();break}case"ArrowRight":{if(l.tabIndex=-1,r.nextElementSibling){let j=Array.from((H=(D=r.parentElement)==null?void 0:D.children)!=null?H:[]).slice(c+1).find(x=>{let P=x.children[0];return!fe(P,"data-p-disabled")});if(j){let x=j.children[0];x.tabIndex=0,x.focus()}else X(e,!1,n)}else X(e,!1,n);e.preventDefault();break}case"Enter":case"NumpadEnter":case"Space":{De(e,t),e.preventDefault();break}case"Escape":{A(!1),e.preventDefault();break}case"Tab":{Ee(e);break}case"Home":{l.tabIndex=-1;let E=r.parentElement.children[0].children[0];fe(E,"data-p-disabled")?X(e,!0,n):(E.tabIndex=0,E.focus()),e.preventDefault();break}case"End":{l.tabIndex=-1;let I=r.parentElement,E=I.children[I.children.length-1].children[0];fe(E,"data-p-disabled")?X(e,!1,n):(E.tabIndex=0,E.focus()),e.preventDefault();break}case"PageUp":{l.tabIndex=-1,e.shiftKey?(S({backward:!0}),J(e)):X(e,!0,n),e.preventDefault();break}case"PageDown":{l.tabIndex=-1,e.shiftKey?(S({backward:!1}),q(e)):X(e,!1,n),e.preventDefault();break}default:break}},X=(e,t,n=0)=>{var l,r;if(t)if(a.numberOfMonths===1||n===0)S({backward:!0}),J(e);else{let c=(l=y.current)==null?void 0:l.children[n-1],u=ae(c,'table td span:not([data-p-disabled="true"])'),f=u[u.length-1];f.tabIndex=0,f.focus()}else if(a.numberOfMonths===1||n===a.numberOfMonths-1)S({backward:!1}),q(e);else{let c=(r=y.current)==null?void 0:r.children[n+1],u=_(c,'table td span:not([data-p-disabled="true"])');u.tabIndex=0,u.focus()}},fn=(e,t)=>{var l,r,c,u,f,h;let n=e.currentTarget;switch(e.code){case"ArrowUp":case"ArrowDown":{n.tabIndex=-1;let i=n.parentElement,g=i==null?void 0:i.parentElement,R=e.code==="ArrowUp"?g==null?void 0:g.previousElementSibling:g==null?void 0:g.nextElementSibling,M=Array.from((r=(l=i==null?void 0:i.parentElement)==null?void 0:l.children)!=null?r:[]).indexOf(i),w=R==null?void 0:R.children[M],b=w==null?void 0:w.children[0];b&&(b.tabIndex=0,b.focus()),e.preventDefault();break}case"ArrowLeft":{n.tabIndex=-1;let i=(u=(c=n.parentElement)==null?void 0:c.previousElementSibling)==null?void 0:u.children[0];i?(i.tabIndex=0,i.focus()):(S({backward:!0}),J(e)),e.preventDefault();break}case"ArrowRight":{n.tabIndex=-1;let i=(h=(f=n.parentElement)==null?void 0:f.nextElementSibling)==null?void 0:h.children[0];i?(i.tabIndex=0,i.focus()):(S({backward:!1}),q(e)),e.preventDefault();break}case"Home":case"End":break;case"PageUp":{if(e.shiftKey)return;S({backward:!0}),J(e);break}case"PageDown":{if(e.shiftKey)return;S({backward:!1}),q(e);break}case"Enter":case"NumpadEnter":case"Space":{ot(e,t),e.preventDefault();break}case"Escape":{A(!1),e.preventDefault();break}case"Tab":{Ee(e);break}default:break}},dn=(e,t)=>{var l,r,c,u,f,h;let n=e.currentTarget;switch(e.code){case"ArrowUp":case"ArrowDown":{n.tabIndex=-1;let i=n.parentElement,g=i==null?void 0:i.parentElement,R=e.code==="ArrowUp"?g==null?void 0:g.previousElementSibling:g==null?void 0:g.nextElementSibling,M=Array.from((r=(l=i==null?void 0:i.parentElement)==null?void 0:l.children)!=null?r:[]).indexOf(i),w=R==null?void 0:R.children[M],b=w==null?void 0:w.children[0];b&&(b.tabIndex=0,b.focus()),e.preventDefault();break}case"ArrowLeft":{n.tabIndex=-1;let i=(u=(c=n.parentElement)==null?void 0:c.previousElementSibling)==null?void 0:u.children[0];i?(i.tabIndex=0,i.focus()):(S({backward:!0}),J(e)),e.preventDefault();break}case"ArrowRight":{n.tabIndex=-1;let i=(h=(f=n.parentElement)==null?void 0:f.nextElementSibling)==null?void 0:h.children[0];i?(i.tabIndex=0,i.focus()):(S({backward:!1}),q(e)),e.preventDefault();break}case"Home":case"End":break;case"PageUp":{if(e.shiftKey)return;S({backward:!0}),J(e);break}case"PageDown":{if(e.shiftKey)return;S({backward:!1}),q(e);break}case"Enter":case"NumpadEnter":case"Space":{ut(e,t),e.preventDefault();break}case"Escape":{A(!1),e.preventDefault();break}case"Tab":{Ee(e);break}default:break}},Pe=()=>{var t,n;let e=null;if(Ae){if(Ae.button)_e(),Ae.backward?Oe.current&&((t=Oe.current)==null||t.elementRef.current.focus()):Ye.current&&((n=Ye.current)==null||n.elementRef.current.focus());else{if(!y.current)return;if(Ae.backward){let l;v==="month"?l=ae(y.current,'[data-pc-name="datepickertable"] [data-pc-section="month"]:not([data-p-disabled="true"])'):v==="year"?l=ae(y.current,'[data-pc-name="datepickertable"] [data-pc-section="year"]:not([data-p-disabled="true"])'):l=ae(y.current,'table td span:not([data-pc-section="weeklabelcontainer"]):not([data-p-disabled="true"])'),l&&l.length>0&&(e=l[l.length-1])}else v==="month"?e=_(y.current,'[data-pc-name="datepickertable"] [data-pc-section="month"]:not([data-p-disabled="true"])'):v==="year"?e=_(y.current,'[data-pc-name="datepickertable"] [data-pc-section="year"]:not([data-p-disabled="true"])'):e=_(y.current,'table td span:not([data-pc-section="weeklabelcontainer"]):not([data-p-disabled="true"])');e&&(e.tabIndex=0,e.focus())}S(null)}else _e()},_e=()=>{let e;if(y.current){if(v==="month"){let t=ae(y.current,'[data-pc-name="datepickertable"] [data-pc-section="month"]'),n=_(y.current,'[data-pc-name="datepickertable"] [data-pc-section="month"][data-p-selected="true"]');t.forEach(l=>l.tabIndex=-1),e=n||t[0]}else if(v==="year"){let t=ae(y.current,'[data-pc-name="datepickertable"] [data-pc-section="year"]'),n=_(y.current,'[data-pc-name="datepickertable"] [data-pc-section="year"][data-p-selected="true"]');t.forEach(l=>l.tabIndex=-1),e=n||t[0]}else if(e=_(y.current,'.p-datepicker-calendar span[data-p-selected="true"]'),!e){let t=_(y.current,'td[data-p-today="true"] span:not([data-pc-section="weeklabelcontainer"]):not([data-p-disabled="true"])');t?e=t:e=_(y.current,'.p-datepicker-calendar td span:not([data-pc-section="weeklabelcontainer"]):not([data-p-disabled="true"])')}e&&(e.tabIndex=0)}},Ee=e=>{if(e.preventDefault(),!y.current)return;let t=Et(y.current);if(t&&t.length>0)if(!document.activeElement)t[0].focus();else{let n=t.indexOf(document.activeElement);if(e.shiftKey)n===-1||n===0?t[t.length-1].focus():t[n-1].focus();else if(n===-1)if(a.timeOnly)t[0].focus();else{let l=t.findIndex(r=>r.tagName==="SPAN");l===-1&&(l=t.findIndex(r=>r.tagName==="BUTTON")),l!==-1?t[l].focus():t[0].focus()}else n===t.length-1?t[0].focus():t[n+1].focus()}},mn=e=>{var t,n;return(n=(t=o==null?void 0:o.config)==null?void 0:t.locale)==null?void 0:n.monthNames[e!=null?e:C]},hn=()=>m,bn=()=>{oe(null),le(!1),A(!1)},gn=e=>{try{Re.current=e.target.selectionStart,He.current=e.target.selectionEnd,le(!Be(e.target.value));let t=Z(e.target.value);ct(t)&&(me.current=!0,oe(a.updateModelType==="string"?ye(t):t),Ze())}catch(t){}a.onInput&&a.onInput(e)},Dn=()=>{a.showOnFocus&&$()&&!V&&A(!0)},Mn=e=>{var t;if(e.code==="ArrowDown"&&V)Ee(e);else if(e.code==="ArrowDown"&&!V)A(!0);else if(e.code==="Escape")V&&(A(!1),e.preventDefault(),e.stopPropagation());else if(e.code==="Tab")V&&y.current&&Et(y.current).forEach(n=>n.tabIndex=-1),V&&A(!1);else if(e.code==="Enter"){if(a.manualInput&&e.target.value!==null&&((t=e.target.value)==null?void 0:t.trim())!=="")try{let n=Z(e.target.value);ct(n)&&A(!1)}catch(n){}a.onKeyDown&&a.onKeyDown(e)}},yn=e=>{a.showonInputFocus&&$()&&A(!0),a.onFocus&&a.onFocus(e)},En=e=>{a.onBlur&&a.onBlur({originalEvent:e,value:e.target.value}),a.onValueChange&&(e.target.value=ye(s)),Xe&&le(!Be(e.target.value))},Tn=()=>{var e,t,n,l;if(Pe(),(l=(n=(t=(e=de==null?void 0:de.current)==null?void 0:e.containerRef)==null?void 0:t.current)==null?void 0:n.elementRef)!=null&&l.current){let r=de.current.containerRef.current.elementRef.current;ke!=null&&ke.current&&(r.style.width=Tt(r)+"px",r.style.minWidth=Tt(ke.current)+"px")}},wn=e=>{A(e)},$e=d.useMemo(()=>{var t,n;let e=s;if(e&&Array.isArray(e))if(F())if(e.length===0)e=null;else if(e.length===1)e=e[0];else{let l=k(e[0]),r=k(e[1]),c=new Date(l.getFullYear(),l.getMonth()+((t=a.numberOfMonths)!=null?t:1),1);!r||r<c?e=e[0]:e=new Date(r.getFullYear(),r.getMonth()-((n=a.numberOfMonths)!=null?n:1)+1,1)}else O()&&(e=e[e.length-1]);if(e&&typeof e!="string")return e;{let l=new Date;return a.maxDate&&a.maxDate<l?a.maxDate:a.minDate&&a.minDate>l?a.minDate:l}},[s,a.numberOfMonths,a.maxDate,a.minDate]),dt=d.useMemo(()=>ye(s),[s]),ve=d.useMemo(()=>{var t;let e=[];for(let n=0;n<((t=a.numberOfMonths)!=null?t:1);n++){let l=(C!=null?C:0)+n,r=m!=null?m:0;l>11&&(l=l%11-1,r=r+1);let c=[],u=Pt(l,r),f=je(l,r),h=vt(l,r),i=1,g=new Date,R=[],M=Math.ceil((f+u)/7);for(let w=0;w<M;w++){let b=[];if(w==0){for(let D=h-u+1;D<=h;D++){let H=et(l,r);b.push({day:D,month:H.month,year:H.year,otherMonth:!0,today:Fe(g,D,H.month,H.year),selectable:se(D,H.month,H.year,!0)})}let K=7-b.length;for(let D=0;D<K;D++)b.push({day:i,month:l,year:r,otherMonth:!1,today:Fe(g,i,l,r),selectable:se(i,l,r,!1)}),i++}else for(let K=0;K<7;K++){if(i>f){let D=It(l,r);b.push({day:i-f,month:D.month,year:D.year,otherMonth:!0,today:Fe(g,i-f,D.month,D.year),selectable:se(i-f,D.month,D.year,!0)})}else b.push({day:i,month:l,year:r,otherMonth:!1,today:Fe(g,i,l,r),selectable:se(i,l,r,!1)});i++}R.push(un(new Date(b[0].year,b[0].month,b[0].day))),c.push(b)}e.push({month:l,year:r,dates:c,weekNumbers:R})}return e},[C,m,a.numberOfMonths,a.minDate,a.maxDate,a.disabledDates,a.disabledDays,a.selectOtherMonths]),kn=d.useCallback((e=0)=>ve[e],[ve]),Rn=d.useMemo(()=>{var n,l;let e=[],t=r=>{if(a.minDate){let c=a.minDate.getMonth(),u=a.minDate.getFullYear();if(m<u||m===u&&r<c)return!1}if(a.maxDate){let c=a.maxDate.getMonth(),u=a.maxDate.getFullYear();if(m>u||m===u&&r>c)return!1}return!0};for(let r=0;r<=11;r++)e.push({value:(l=(n=o==null?void 0:o.config)==null?void 0:n.locale)==null?void 0:l.monthNamesShort[r],selectable:t(r)});return e},[m,a.minDate,a.maxDate]),Hn=d.useMemo(()=>{let e=[],t=m-m%10,n=l=>!(a.minDate&&a.minDate.getFullYear()>l||a.maxDate&&a.maxDate.getFullYear()<l);for(let l=0;l<10;l++)e.push({value:t+l,selectable:n(t+l)});return e},[m,a.minDate,a.maxDate]),Sn=d.useMemo(()=>{var n,l,r,c;let e=[],t=(l=(n=o==null?void 0:o.config)==null?void 0:n.locale)==null?void 0:l.firstDayOfWeek;for(let u=0;u<7;u++)e.push((c=(r=o==null?void 0:o.config)==null?void 0:r.locale)==null?void 0:c.dayNamesMin[t]),t=t==6?0:++t;return e},[]),mt=d.useMemo(()=>{var e,t;return a.dateFormat||((t=(e=o==null?void 0:o.config)==null?void 0:e.locale)==null?void 0:t.dateFormat)},[a.dateFormat,(ht=o==null?void 0:o.config)==null?void 0:ht.locale]),Ln=d.useMemo(()=>T==0&&a.hourFormat=="12"?T+12:T<10?"0"+T:T,[T,a.hourFormat]),xn=d.useMemo(()=>B<10?"0"+B:B,[B]),An=d.useMemo(()=>Y<10?"0"+Y:Y,[Y]),Cn=d.useMemo(()=>{var e,t;return(t=(e=o==null?void 0:o.config)==null?void 0:e.locale)==null?void 0:t.today},[(bt=o==null?void 0:o.config)==null?void 0:bt.locale]),Fn=d.useMemo(()=>{var e,t;return(t=(e=o==null?void 0:o.config)==null?void 0:e.locale)==null?void 0:t.clear},[(gt=o==null?void 0:o.config)==null?void 0:gt.locale]),Pn=d.useMemo(()=>{var e,t;return(t=(e=o==null?void 0:o.config)==null?void 0:e.locale)==null?void 0:t.weekHeader},[(Dt=o==null?void 0:o.config)==null?void 0:Dt.locale]),vn=d.useMemo(()=>a.numberOfMonths>1||!!a.disabled,[a.numberOfMonths,a.disabled]),In=d.useMemo(()=>{var e,t,n,l;return L?(t=(e=o==null?void 0:o.config)==null?void 0:e.locale)==null?void 0:t.pm:(l=(n=o==null?void 0:o.config)==null?void 0:n.locale)==null?void 0:l.am},[L,(Mt=o==null?void 0:o.config)==null?void 0:Mt.locale]);return Bn(()=>{setTimeout(()=>{a.disabled||_e()},300)}),d.useEffect(()=>{var e;(e=N.current)!=null&&e.elementRef.current&&Re.current!=null&&He.current!=null&&(N.current.elementRef.current.selectionStart=Re.current,N.current.elementRef.current.selectionEnd=He.current,Re.current=null,He.current=null)},[dt]),d.useEffect(()=>{Pe()},[v,ve]),d.useEffect(()=>{if(a.value===void 0)return;Ze();let e=typeof a.value=="string"?Z(a.value):a.value;Ue(e),!me.current&&N.current&&N.current.elementRef.current&&(N.current.elementRef.current.value=ye(e)),me.current=!1},[a.value]),d.useEffect(()=>{if(a.value!==void 0)return;Ze();let e=typeof a.defaultValue=="string"?Z(a.defaultValue):a.defaultValue;Ue(e),!me.current&&N.current&&N.current.elementRef.current&&(N.current.elementRef.current.value=ye(e)),me.current=!1},[a.defaultValue]),d.useEffect(()=>{Be(s)&&le(!1)},[s]),d.useEffect(()=>{a.showTime&&V&&st()},[L]),d.useEffect(()=>{!V&&re&&Ce(null)},[V]),{state:Ht,inputRef:N,nextButtonRef:Ye,prevButtonRef:Oe,portalRef:de,overlayRef:y,inputFieldValue:dt,weekHeaderLabel:Pn,todayLabel:Cn,clearLabel:Fn,weekDays:Sn,months:ve,getIndexedMonth:kn,getYear:hn,getMonthName:mn,onPrevButtonClick:Nt,onNextButtonClick:Bt,monthPickerValues:Rn,yearPickerValues:Hn,switchToMonthView:Kt,switchToYearView:Vt,onDateSelect:De,onMonthSelect:ot,onYearSelect:ut,onDateCellKeydown:cn,onMonthCellKeydown:fn,onYearCellKeydown:dn,onButtonClick:jt,switchViewButtonDisabled:vn,formattedCurrentHour:Ln,formattedCurrentMinute:xn,formattedCurrentSecond:An,ampmLabel:In,onTimePickerElementMouseDown:Gt,onTimePickerElementMouseUp:rt,onTimePickerElementMouseLeave:_t,onContainerButtonKeydown:$t,onTimePickerElementKeyDown:Qt,onTimePickerElementKeyUp:Xt,toggleAMPM:sn,onTodayButtonClick:zt,onClearButtonClick:Zt,onClearClick:bn,onInput:gn,onInputClick:Dn,onInputKeyDown:Mn,onInputFocus:yn,onInputBlur:En,onOverlayEnter:Tn,changeVisibleState:wn,isRangeSelection:F,isSelected:pe,parseValue:Z,isDateEquals:te,isMonthSelected:xt,isYearSelected:At,isInHoverRange:St,onDateCellMouseEnter:Lt}}});export{yt as defaultProps,Wn as useDatePicker};
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/datepicker/useDatePicker.ts","../../src/datepicker/useDatePicker.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { useMountEffect } from '@primereact/hooks';\nimport { useDatePickerDateMeta, useDatePickerProps } from '@primereact/types/shared/datepicker';\nimport { find, findSingle, getAttribute, getFocusableElements, getIndex, getOuterWidth, isDate, isEmpty, isNotEmpty } from '@primeuix/utils';\nimport * as React from 'react';\nimport { defaultProps } from './useDatePicker.props';\n\nconst TICKS_TO_1970 = ((1970 - 1) * 365 + Math.floor(1970 / 4) - Math.floor(1970 / 100) + Math.floor(1970 / 400)) * 24 * 60 * 60 * 10000000;\n\nconst primereact = {\n config: {\n locale: {\n startsWith: 'Starts with',\n contains: 'Contains',\n notContains: 'Not contains',\n endsWith: 'Ends with',\n equals: 'Equals',\n notEquals: 'Not equals',\n noFilter: 'No Filter',\n lt: 'Less than',\n lte: 'Less than or equal to',\n gt: 'Greater than',\n gte: 'Greater than or equal to',\n dateIs: 'Date is',\n dateIsNot: 'Date is not',\n dateBefore: 'Date is before',\n dateAfter: 'Date is after',\n clear: 'Clear',\n apply: 'Apply',\n matchAll: 'Match All',\n matchAny: 'Match Any',\n addRule: 'Add Rule',\n removeRule: 'Remove Rule',\n accept: 'Yes',\n reject: 'No',\n choose: 'Choose',\n upload: 'Upload',\n cancel: 'Cancel',\n completed: 'Completed',\n pending: 'Pending',\n fileSizeTypes: ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'],\n dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n dayNamesMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\n monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n chooseYear: 'Choose Year',\n chooseMonth: 'Choose Month',\n chooseDate: 'Choose Date',\n prevDecade: 'Previous Decade',\n nextDecade: 'Next Decade',\n prevYear: 'Previous Year',\n nextYear: 'Next Year',\n prevMonth: 'Previous Month',\n nextMonth: 'Next Month',\n prevHour: 'Previous Hour',\n nextHour: 'Next Hour',\n prevMinute: 'Previous Minute',\n nextMinute: 'Next Minute',\n prevSecond: 'Previous Second',\n nextSecond: 'Next Second',\n am: 'am',\n pm: 'pm',\n today: 'Today',\n weekHeader: 'Wk',\n firstDayOfWeek: 0,\n showMonthAfterYear: false,\n dateFormat: 'mm/dd/yy',\n weak: 'Weak',\n medium: 'Medium',\n strong: 'Strong',\n passwordPrompt: 'Enter a password',\n emptyFilterMessage: 'No results found',\n searchMessage: '{0} results are available',\n selectionMessage: '{0} items selected',\n emptySelectionMessage: 'No selected item',\n emptySearchMessage: 'No results found',\n fileChosenMessage: '{0} files',\n noFileChosenMessage: 'No file chosen',\n emptyMessage: 'No available options',\n aria: {\n trueLabel: 'True',\n falseLabel: 'False',\n nullLabel: 'Not Selected',\n star: '1 star',\n stars: '{star} stars',\n selectAll: 'All items selected',\n unselectAll: 'All items unselected',\n close: 'Close',\n previous: 'Previous',\n next: 'Next',\n navigation: 'Navigation',\n scrollTop: 'Scroll Top',\n moveTop: 'Move Top',\n moveUp: 'Move Up',\n moveDown: 'Move Down',\n moveBottom: 'Move Bottom',\n moveToTarget: 'Move to Target',\n moveToSource: 'Move to Source',\n moveAllToTarget: 'Move All to Target',\n moveAllToSource: 'Move All to Source',\n pageLabel: 'Page {page}',\n firstPageLabel: 'First Page',\n lastPageLabel: 'Last Page',\n nextPageLabel: 'Next Page',\n prevPageLabel: 'Previous Page',\n rowsPerPageLabel: 'Rows per page',\n jumpToPageDropdownLabel: 'Jump to Page Dropdown',\n jumpToPageInputLabel: 'Jump to Page Input',\n selectRow: 'Row Selected',\n unselectRow: 'Row Unselected',\n expandRow: 'Row Expanded',\n collapseRow: 'Row Collapsed',\n showFilterMenu: 'Show Filter Menu',\n hideFilterMenu: 'Hide Filter Menu',\n filterOperator: 'Filter Operator',\n filterConstraint: 'Filter Constraint',\n editRow: 'Row Edit',\n saveEdit: 'Save Edit',\n cancelEdit: 'Cancel Edit',\n listView: 'List View',\n gridView: 'Grid View',\n slide: 'Slide',\n slideNumber: '{slideNumber}',\n zoomImage: 'Zoom Image',\n zoomIn: 'Zoom In',\n zoomOut: 'Zoom Out',\n rotateRight: 'Rotate Right',\n rotateLeft: 'Rotate Left',\n listLabel: 'Option List'\n }\n }\n }\n};\n\nexport const useDatePicker = withHeadless({\n name: 'useDatePicker',\n defaultProps,\n setup: ({ props, elementRef }) => {\n const inputRef = React.useRef<{ elementRef: React.RefObject<HTMLInputElement> } | null>(null);\n const nextButtonRef = React.useRef<{ elementRef: React.RefObject<HTMLButtonElement> } | null>(null);\n const prevButtonRef = React.useRef<{ elementRef: React.RefObject<HTMLButtonElement> } | null>(null);\n const portalRef = React.useRef<{ containerRef: { current: { elementRef: React.RefObject<HTMLDivElement> } } } | null>(null);\n const overlayRef = React.useRef<HTMLDivElement | null>(null);\n const timePickerTimer = React.useRef<NodeJS.Timeout | null>(null);\n const typeUpdate = React.useRef(false);\n const selectionStart = React.useRef<number | null>(null);\n const selectionEnd = React.useRef<number | null>(null);\n const [showClearIcon, setShowClearIcon] = React.useState(true);\n const [overlayVisibleState, setOverlayVisibleState] = React.useState<boolean>(false);\n const [currentView, setCurrentView] = React.useState(props.view);\n const [currentMonth, setCurrentMonth] = React.useState<number>(0);\n const [currentYear, setCurrentYear] = React.useState<number>(0);\n const [currentHour, setCurrentHour] = React.useState<number>(0);\n const [currentMinute, setCurrentMinute] = React.useState<number>(0);\n const [currentSecond, setCurrentSecond] = React.useState<number>(0);\n const [pm, setPM] = React.useState<boolean>(false);\n const [focusedDateIndex, setFocusedDateIndex] = React.useState(0);\n const [navigationState, setNavigationState] = React.useState<{ backward?: boolean; button?: boolean } | null>(null);\n const [hoveredDateState, setHoveredDateState] = React.useState<useDatePickerDateMeta | null>(null);\n\n const getInitialValue = (): useDatePickerProps['value'] => {\n if (props.value !== undefined) {\n return typeof props.value === 'string' ? (parseValue(props.value) as useDatePickerProps['value']) : props.value;\n }\n\n if (props.defaultValue !== undefined) {\n return typeof props.defaultValue === 'string' ? (parseValue(props.defaultValue) as useDatePickerProps['value']) : props.defaultValue;\n }\n\n return null;\n };\n\n const [rawValueState, setRawValueState] = React.useState<useDatePickerProps['value']>(() => getInitialValue());\n\n const state = {\n rawValue: rawValueState,\n overlayVisible: overlayVisibleState,\n currentView,\n showClearIcon,\n hoveredDate: hoveredDateState\n };\n\n const isSelected = (dateMeta: useDatePickerDateMeta) => {\n if (rawValueState) {\n if (isSingleSelection()) {\n return isDateEquals(parseValueForComparison(rawValueState), dateMeta);\n } else if (isMultipleSelection()) {\n let selected = false;\n\n if (Array.isArray(rawValueState)) {\n for (const date of rawValueState) {\n selected = isDateEquals(parseValueForComparison(date), dateMeta);\n\n if (selected) {\n break;\n }\n }\n }\n\n return selected;\n } else if (isRangeSelection() && Array.isArray(rawValueState)) {\n const start = parseValueForComparison(rawValueState[0]);\n\n if (start === null) {\n return false;\n }\n\n if (rawValueState[1]) {\n const end = parseValueForComparison(rawValueState[1]);\n\n if (end === null) {\n return false;\n }\n\n return isDateEquals(start, dateMeta) || isDateEquals(end, dateMeta) || isDateBetween(start, end, dateMeta);\n } else {\n return isDateEquals(start, dateMeta);\n }\n }\n }\n\n return false;\n };\n\n const isInHoverRange = (dateMeta: useDatePickerDateMeta) => {\n if (!isRangeSelection() || !hoveredDateState || !rawValueState || !Array.isArray(rawValueState)) {\n return false;\n }\n\n if (rawValueState.length === 0 || rawValueState[1] !== null) {\n return false;\n }\n\n const start = parseValueForComparison(rawValueState[0]);\n\n if (!start) {\n return false;\n }\n\n const hoverDateObj = new Date(hoveredDateState.year, hoveredDateState.month, hoveredDateState.day);\n const currentDateObj = new Date(dateMeta.year, dateMeta.month, dateMeta.day);\n const rangeStart = start.getTime() < hoverDateObj.getTime() ? start : hoverDateObj;\n const rangeEnd = start.getTime() < hoverDateObj.getTime() ? hoverDateObj : start;\n const currentTime = currentDateObj.getTime();\n\n return currentTime >= rangeStart.getTime() && currentTime <= rangeEnd.getTime();\n };\n\n const onDateCellMouseEnter = (dateMeta: useDatePickerDateMeta) => {\n if (isRangeSelection() && dateMeta.selectable) {\n setHoveredDateState(dateMeta);\n }\n };\n\n const isMonthSelected = (month: number) => {\n if (isDate(rawValueState) && rawValueState !== null) {\n return (rawValueState as Date).getMonth() === month && (rawValueState as Date).getFullYear() === currentYear;\n } else if (Array.isArray(rawValueState)) {\n if (isMultipleSelection()) {\n return rawValueState?.some((currentValue) => {\n const parsedDate = parseValueForComparison(currentValue);\n\n return parsedDate ? parsedDate.getMonth() === month && parsedDate.getFullYear() === currentYear : false;\n });\n } else if (isRangeSelection()) {\n const parsedStart = rawValueState?.[0] ? parseValueForComparison(rawValueState[0]) : null;\n const parsedEnd = rawValueState?.[1] ? parseValueForComparison(rawValueState[1]) : null;\n\n if (!parsedEnd) {\n return parsedStart ? parsedStart.getFullYear() === currentYear && parsedStart.getMonth() === month : false;\n } else {\n if (!parsedStart) return false;\n\n const currentDate = new Date(currentYear as number, month, 1);\n const startDate = new Date(parsedStart.getFullYear(), parsedStart.getMonth(), 1);\n const endDate = new Date(parsedEnd.getFullYear(), parsedEnd.getMonth(), 1);\n\n return currentDate >= startDate && currentDate <= endDate;\n }\n }\n }\n\n return false;\n };\n\n const isYearSelected = (year: number) => {\n if (typeof rawValueState !== 'string' && rawValueState !== null) {\n return (rawValueState as Date).getFullYear() === year;\n } else if (Array.isArray(rawValueState)) {\n if (isMultipleSelection()) {\n return rawValueState?.some((currentValue) => {\n const parsedDate = parseValueForComparison(currentValue);\n\n return parsedDate ? parsedDate.getFullYear() === year : false;\n });\n } else if (isRangeSelection()) {\n const parsedStart = rawValueState?.[0] ? parseValueForComparison(rawValueState[0]) : null;\n const parsedEnd = rawValueState?.[1] ? parseValueForComparison(rawValueState[1]) : null;\n\n const start = parsedStart ? parsedStart.getFullYear() : null;\n const end = parsedEnd ? parsedEnd.getFullYear() : null;\n\n if (!start || !end) return false;\n\n return start === year || end === year || (start < year && end > year);\n }\n }\n\n return false;\n };\n\n const isDateEquals = (value: Date | string | null | undefined, dateMeta: useDatePickerDateMeta) => {\n if (value) {\n const dateValue = typeof value === 'string' ? (parseValue(value) as Date | string) : value;\n\n if (dateValue && dateValue instanceof Date) {\n return dateValue.getDate() === dateMeta.day && dateValue.getMonth() === dateMeta.month && dateValue.getFullYear() === dateMeta.year;\n }\n }\n\n return false;\n };\n\n const isDateBetween = (start: Date, end: Date, dateMeta: useDatePickerDateMeta) => {\n const between = false;\n const parsedStart = parseValueForComparison(start);\n const parsedEnd = parseValueForComparison(end);\n\n if (parsedStart && parsedEnd) {\n const date = new Date(dateMeta.year, dateMeta.month, dateMeta.day);\n\n return parsedStart.getTime() <= date.getTime() && parsedEnd.getTime() >= date.getTime();\n }\n\n return between;\n };\n\n const sundayIndex = React.useMemo(() => {\n return primereact?.config?.locale?.firstDayOfWeek > 0 ? 7 - primereact?.config?.locale?.firstDayOfWeek : 0;\n }, []);\n\n const getFirstDayOfMonthIndex = (month: number, year: number) => {\n const day = new Date();\n\n day.setDate(1);\n day.setMonth(month);\n day.setFullYear(year);\n\n const dayIndex = day.getDay() + sundayIndex;\n\n return dayIndex >= 7 ? dayIndex - 7 : dayIndex;\n };\n\n const getDaysCountInMonth = (month: number, year: number) => {\n return 32 - daylightSavingAdjust(new Date(year, month, 32)).getDate();\n };\n\n const getDaysCountInPrevMonth = (month: number, year: number) => {\n const prev = getPreviousMonthAndYear(month, year);\n\n return getDaysCountInMonth(prev.month, prev.year);\n };\n\n const getPreviousMonthAndYear = (month: number, year: number) => {\n let m, y;\n\n if (month === 0) {\n m = 11;\n y = year - 1;\n } else {\n m = month - 1;\n y = year;\n }\n\n return { month: m, year: y };\n };\n\n const getNextMonthAndYear = (month: number, year: number) => {\n let m, y;\n\n if (month === 11) {\n m = 0;\n y = year + 1;\n } else {\n m = month + 1;\n y = year;\n }\n\n return { month: m, year: y };\n };\n\n const daylightSavingAdjust = (date: Date) => {\n if (!date) {\n date = new Date();\n }\n\n date.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0);\n\n return date;\n };\n\n const isToday = (today: Date, day: number, month: number, year: number) => {\n return today.getDate() === day && today.getMonth() === month && today.getFullYear() === year;\n };\n\n const isSelectable = (day: number, month: number, year: number, otherMonth: boolean) => {\n let validMin = true;\n let validMax = true;\n let validDate = true;\n let validDay = true;\n\n if (otherMonth && !props.selectOtherMonths) {\n return false;\n }\n\n if (props.minDate) {\n if (props.minDate.getFullYear() > year) {\n validMin = false;\n } else if (props.minDate.getFullYear() === year) {\n if (props.minDate.getMonth() > month) {\n validMin = false;\n } else if (props.minDate.getMonth() === month) {\n if (props.minDate.getDate() > day) {\n validMin = false;\n }\n }\n }\n }\n\n if (props.maxDate) {\n if (props.maxDate.getFullYear() < year) {\n validMax = false;\n } else if (props.maxDate.getFullYear() === year) {\n if (props.maxDate.getMonth() < month) {\n validMax = false;\n } else if (props.maxDate.getMonth() === month) {\n if (props.maxDate.getDate() < day) {\n validMax = false;\n }\n }\n }\n }\n\n if (props.disabledDates) {\n validDate = !isDateDisabled(day, month, year);\n }\n\n if (props.disabledDays) {\n validDay = !isDayDisabled(day, month, year);\n }\n\n return validMin && validMax && validDate && validDay;\n };\n\n const onPrevButtonClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n setNavigationState({ backward: true, button: true });\n navBackward(event);\n };\n\n const onNextButtonClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n setNavigationState({ backward: false, button: true });\n navForward(event);\n };\n\n const navBackward = (event: React.MouseEvent<HTMLButtonElement> | React.KeyboardEvent<HTMLSpanElement>) => {\n event.preventDefault();\n\n if (!isEnabled()) {\n return;\n }\n\n if (currentView === 'month') {\n decrementYear();\n\n if (props.onYearChange) {\n props.onYearChange({ month: currentMonth, year: currentYear });\n }\n } else if (currentView === 'year') {\n decrementDecade();\n } else {\n if (event.shiftKey) {\n decrementYear();\n } else {\n if (currentMonth === 0) {\n setCurrentMonth(11);\n decrementYear();\n } else {\n setCurrentMonth((currentMonth as number) - 1);\n }\n\n if (props.onMonthChange) {\n props.onMonthChange({ month: currentMonth + 1, year: currentYear });\n }\n }\n }\n };\n\n const navForward = (event: React.MouseEvent<HTMLButtonElement> | React.KeyboardEvent<HTMLSpanElement>) => {\n event.preventDefault();\n\n if (!isEnabled()) {\n return;\n }\n\n if (currentView === 'month') {\n incrementYear();\n\n if (props.onYearChange) {\n props.onYearChange({ month: currentMonth, year: currentYear });\n }\n } else if (currentView === 'year') {\n incrementDecade();\n } else {\n if (event.shiftKey) {\n incrementYear();\n } else {\n if (currentMonth === 11) {\n setCurrentMonth(0);\n incrementYear();\n } else {\n setCurrentMonth((currentMonth as number) + 1);\n }\n\n if (props.onMonthChange) {\n props.onMonthChange({ month: currentMonth + 1, year: currentYear });\n }\n }\n }\n };\n\n const decrementYear = () => {\n setCurrentYear((currentYear ?? 0) - 1);\n };\n\n const decrementDecade = () => {\n setCurrentYear((currentYear ?? 0) - 10);\n };\n\n const incrementYear = () => {\n setCurrentYear((currentYear ?? 0) + 1);\n };\n\n const incrementDecade = () => {\n setCurrentYear((currentYear ?? 0) + 10);\n };\n\n const switchToMonthView = (event: React.MouseEvent<HTMLButtonElement>) => {\n setCurrentView('month');\n event.preventDefault();\n };\n\n const switchToYearView = (event: React.MouseEvent<HTMLButtonElement>) => {\n setCurrentView('year');\n event.preventDefault();\n };\n\n const isEnabled = () => {\n return !props.disabled && !props.readOnly;\n };\n\n const updateCurrentTimeMeta = (date: Date) => {\n let currentHour = date.getHours();\n\n if (props.hourFormat === '12') {\n setPM(currentHour > 11);\n\n if (currentHour >= 12) currentHour = currentHour == 12 ? 12 : currentHour - 12;\n }\n\n setCurrentHour(Math.floor(currentHour / (props.stepHour ?? 1)) * (props.stepHour ?? 1));\n setCurrentMinute(Math.floor(date.getMinutes() / (props.stepMinute ?? 1)) * (props.stepMinute ?? 1));\n setCurrentSecond(Math.floor(date.getSeconds() / (props.stepSecond ?? 1)) * (props.stepSecond ?? 1));\n };\n\n const onButtonClick = () => {\n if (isEnabled()) {\n if (!overlayVisibleState) {\n inputRef.current?.elementRef.current?.focus();\n setOverlayVisibleState(true);\n } else {\n setOverlayVisibleState(false);\n }\n }\n };\n\n const isDateDisabled = (day: number, month: number, year: number) => {\n if (props.disabledDates) {\n for (const disabledDate of props.disabledDates) {\n if (disabledDate.getFullYear() === year && disabledDate.getMonth() === month && disabledDate.getDate() === day) {\n return true;\n }\n }\n }\n\n return false;\n };\n\n const isDayDisabled = (day: number, month: number, year: number) => {\n if (props.disabledDays) {\n const weekday = new Date(year, month, day);\n const weekdayNumber = weekday.getDay();\n\n return props.disabledDays.indexOf(weekdayNumber) !== -1;\n }\n\n return false;\n };\n\n const onDateSelect = (event: React.MouseEvent<HTMLSpanElement> | React.KeyboardEvent<HTMLSpanElement> | null, dateMeta: useDatePickerDateMeta) => {\n if (props.disabled || !dateMeta.selectable) {\n return;\n }\n\n if (overlayRef.current) {\n (find(overlayRef.current, 'table td span:not([data-p-disabled=\"true\"])') as HTMLElement[]).forEach((cell) => (cell.tabIndex = -1));\n }\n\n if (event) {\n event.currentTarget.focus();\n }\n\n if (isMultipleSelection() && isSelected(dateMeta)) {\n if (rawValueState && Array.isArray(rawValueState)) {\n const newValue = rawValueState.filter((date) => !isDateEquals(parseValueForComparison(date), dateMeta)) as Date[];\n\n updateModel(newValue);\n }\n } else {\n if (shouldSelectDate()) {\n if (dateMeta.otherMonth) {\n setCurrentMonth(dateMeta.month);\n setCurrentYear(dateMeta.year);\n selectDate(dateMeta);\n } else {\n selectDate(dateMeta);\n }\n }\n }\n\n if (isSingleSelection() && (!props.showTime || props.hideOnDateTimeSelect)) {\n if (inputRef.current) {\n inputRef.current?.elementRef.current.focus();\n }\n\n setTimeout(() => {\n setOverlayVisibleState(false);\n }, 150);\n }\n };\n\n const selectDate = (dateMeta: useDatePickerDateMeta) => {\n let date = new Date(dateMeta.year, dateMeta.month, dateMeta.day);\n\n if (props.showTime) {\n if (props.hourFormat === '12' && currentHour !== 12 && pm) {\n date.setHours((currentHour as number) + 12);\n } else {\n date.setHours(currentHour as number);\n }\n\n date.setMinutes(currentMinute as number);\n date.setSeconds(props.showSeconds ? (currentSecond as number) : 0);\n }\n\n if (props.minDate && props.minDate > date) {\n date = props.minDate;\n }\n\n if (props.maxDate && props.maxDate < date) {\n date = props.maxDate;\n }\n\n setCurrentHour(date.getHours());\n setCurrentMinute(date.getMinutes());\n setCurrentSecond(date.getSeconds());\n\n let modelVal = null;\n\n if (isSingleSelection()) {\n modelVal = date;\n } else if (isMultipleSelection()) {\n if (Array.isArray(rawValueState)) {\n modelVal = [...rawValueState, date];\n } else {\n modelVal = [date];\n }\n } else if (isRangeSelection()) {\n if (rawValueState && Array.isArray(rawValueState) && rawValueState.length) {\n let startDate = parseValueForComparison(rawValueState[0]) as Date;\n let endDate = rawValueState[1];\n\n if (!endDate && date.getTime() >= startDate.getTime()) {\n endDate = date;\n setFocusedDateIndex(1);\n setHoveredDateState(null);\n } else {\n startDate = date;\n endDate = null;\n setFocusedDateIndex(0);\n setHoveredDateState(null);\n }\n\n modelVal = [startDate, endDate];\n } else {\n modelVal = [date, null];\n setFocusedDateIndex(0);\n }\n }\n\n if (modelVal !== null) {\n updateModel(modelVal as Date);\n }\n\n if (props.onDateSelect) {\n props.onDateSelect({\n value: date\n });\n }\n };\n\n const updateModel = (value: useDatePickerProps['value']) => {\n setRawValueState(value);\n\n if (props.updateModelType === 'date') {\n if (isSingleSelection()) {\n writeValue(value);\n } else {\n let stringArrValue = null;\n\n if (Array.isArray(value)) {\n stringArrValue = value.map((date) => parseValueForComparison(date));\n }\n\n writeValue(stringArrValue);\n }\n } else if (props.updateModelType == 'string') {\n if (isSingleSelection()) {\n if (value instanceof Date || typeof value === 'string' || value === null) {\n writeValue(formatDateTime(value));\n }\n } else if (isMultipleSelection()) {\n let stringArrValue: (string | null)[] | null = null;\n\n if (Array.isArray(value)) {\n stringArrValue = value.map((date) => {\n const formatted = formatDateTime(date);\n\n return typeof formatted === 'string' ? formatted : null;\n });\n }\n\n writeValue(stringArrValue);\n } else if (isRangeSelection()) {\n let stringArrValue: (string | null)[] | null = null;\n\n if (Array.isArray(value)) {\n stringArrValue = value.map((date) => {\n if (date === null || date === undefined) {\n return null;\n }\n\n const formatted = formatDateTime(date);\n\n return formatted !== null && typeof formatted === 'string' ? formatted : null;\n });\n }\n\n writeValue(stringArrValue);\n }\n }\n };\n\n const shouldSelectDate = () => {\n if (isMultipleSelection()) {\n return props.maxDateCount != null ? props.maxDateCount > (rawValueState && Array.isArray(rawValueState) ? rawValueState.length : 0) : true;\n }\n\n return true;\n };\n\n const writeValue = (newValue: useDatePickerProps['value']) => {\n setShowClearIcon(!isEmpty(newValue));\n\n if (props.onValueChange) {\n props.onValueChange({\n value: newValue\n });\n }\n };\n\n const isSingleSelection = () => {\n return props.selectionMode === 'single';\n };\n\n const isRangeSelection = () => {\n return props.selectionMode === 'range';\n };\n\n const isMultipleSelection = () => {\n return props.selectionMode === 'multiple';\n };\n\n const formatValue = (value: useDatePickerProps['value']) => {\n if (typeof value === 'string') {\n return props.dateFormat ? (isNaN(new Date(value).getTime()) ? value : formatDate(new Date(value), props.dateFormat)) : value;\n }\n\n let formattedValue: string | null = '';\n\n if (value) {\n try {\n if (isSingleSelection()) {\n const singleVal = Array.isArray(value) ? (value[0] ?? null) : value;\n\n if (singleVal == null) {\n formattedValue = '';\n } else {\n formattedValue = (formatDateTime(singleVal as string | Date) as string) ?? '';\n }\n } else if (isMultipleSelection()) {\n if (Array.isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n const v = value[i];\n const dateAsString = typeof v === 'string' ? (formatDateTime(parseValueForComparison(v) as Date) as string) : (formatDateTime(v as Date) as string);\n\n formattedValue += dateAsString;\n\n if (i !== value.length - 1) {\n formattedValue += ', ';\n }\n }\n }\n } else if (isRangeSelection()) {\n if (Array.isArray(value) && value.length) {\n const startDate = parseValueForComparison(value[0]) as Date;\n const endDate = parseValueForComparison(value[1]) as Date | null;\n\n formattedValue = (formatDateTime(startDate) as string) ?? '';\n\n if (endDate) {\n formattedValue += ' - ' + ((formatDateTime(endDate) as string) ?? '');\n }\n }\n }\n } catch {\n formattedValue = typeof value === 'string' ? value : '';\n }\n }\n\n return formattedValue;\n };\n\n const formatDateTime = (date: Date | string | null) => {\n let formattedValue = null;\n\n if (isDate(date) && isNotEmpty(date)) {\n if (props.timeOnly) {\n formattedValue = formatTime(date);\n } else {\n formattedValue = formatDate(date, datePattern);\n\n if (props.showTime) {\n formattedValue += ' ' + formatTime(date);\n }\n }\n } else if (props.updateModelType === 'string') {\n formattedValue = date;\n }\n\n return formattedValue;\n };\n\n const formatDate = (date: Date, format: string) => {\n if (!date) {\n return '';\n }\n\n let iFormat: number;\n\n const lookAhead = (match: string) => {\n const matches = iFormat + 1 < format.length && format.charAt(iFormat + 1) === match;\n\n if (matches) {\n iFormat++;\n }\n\n return matches;\n };\n\n const formatNumber = (match: string, value: number, len: number) => {\n let num = '' + value;\n\n if (lookAhead(match)) {\n while (num.length < len) {\n num = '0' + num;\n }\n }\n\n return num;\n };\n\n const formatName = (match: string, value: number, shortNames: string[], longNames: string[]) => {\n return lookAhead(match) ? longNames[value] : shortNames[value];\n };\n\n let output = '';\n let literal = false;\n\n if (date) {\n for (iFormat = 0; iFormat < format.length; iFormat++) {\n if (literal) {\n if (format.charAt(iFormat) === \"'\" && !lookAhead(\"'\")) {\n literal = false;\n } else {\n output += format.charAt(iFormat);\n }\n } else {\n switch (format.charAt(iFormat)) {\n case 'd':\n output += formatNumber('d', date.getDate(), 2);\n break;\n case 'D':\n output += formatName('D', date.getDay(), primereact?.config?.locale?.dayNamesShort, primereact?.config?.locale?.dayNames);\n break;\n case 'o':\n output += formatNumber('o', Math.round((new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime() - new Date(date.getFullYear(), 0, 0).getTime()) / 86400000), 3);\n break;\n case 'm':\n output += formatNumber('m', date.getMonth() + 1, 2);\n break;\n case 'M':\n output += formatName('M', date.getMonth(), primereact?.config?.locale?.monthNamesShort, primereact?.config?.locale?.monthNames);\n break;\n case 'y':\n output += lookAhead('y') ? date.getFullYear() : (date.getFullYear() % 100 < 10 ? '0' : '') + (date.getFullYear() % 100);\n break;\n case '@':\n output += date.getTime();\n break;\n case '!':\n output += date.getTime() * 10000 + TICKS_TO_1970;\n break;\n case \"'\":\n if (lookAhead(\"'\")) {\n output += \"'\";\n } else {\n literal = true;\n }\n\n break;\n default:\n output += format.charAt(iFormat);\n }\n }\n }\n }\n\n return output;\n };\n\n const formatTime = (date: Date) => {\n if (!date) {\n return '';\n }\n\n let output = '';\n let hours = date.getHours();\n const minutes = date.getMinutes();\n const seconds = date.getSeconds();\n\n if (props.hourFormat === '12' && hours > 11 && hours !== 12) {\n hours -= 12;\n }\n\n if (props.hourFormat === '12') {\n output += hours === 0 ? 12 : hours < 10 ? '0' + hours : hours;\n } else {\n output += hours < 10 ? '0' + hours : hours;\n }\n\n output += ':';\n output += minutes < 10 ? '0' + minutes : minutes;\n\n if (props.showSeconds) {\n output += ':';\n output += seconds < 10 ? '0' + seconds : seconds;\n }\n\n if (props.hourFormat === '12') {\n output += date.getHours() > 11 ? ` ${primereact?.config?.locale?.pm}` : ` ${primereact?.config?.locale?.am}`;\n }\n\n return output;\n };\n\n const clearTimePickerTimer = () => {\n if (timePickerTimer.current) {\n clearTimeout(timePickerTimer.current);\n }\n };\n\n const onTodayButtonClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n const date = new Date();\n const dateMeta = {\n day: date.getDate(),\n month: date.getMonth(),\n year: date.getFullYear(),\n otherMonth: date.getMonth() !== currentMonth || date.getFullYear() !== currentYear,\n today: true,\n selectable: true\n };\n\n setCurrentView('date');\n onDateSelect(null, dateMeta);\n\n if (props.onTodayButtonClick) {\n props.onTodayButtonClick({\n originalEvent: event,\n date\n });\n }\n\n event.preventDefault();\n };\n\n const onClearButtonClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n updateModel(null);\n setOverlayVisibleState(false);\n setShowClearIcon(false);\n\n if (props.onClearButtonClick) {\n props.onClearButtonClick(event);\n }\n\n event.preventDefault();\n };\n\n const onTimePickerElementMouseDown = (event: React.MouseEvent<HTMLButtonElement>, type: number, direction: number) => {\n if (isEnabled()) {\n repeat(event, null, type, direction);\n event.preventDefault();\n }\n };\n\n const onTimePickerElementMouseUp = (event: React.MouseEvent<HTMLButtonElement> | React.KeyboardEvent<HTMLButtonElement>) => {\n if (isEnabled()) {\n clearTimePickerTimer();\n updateModelTime();\n event.preventDefault();\n }\n };\n\n const onTimePickerElementMouseLeave = () => {\n clearTimePickerTimer();\n };\n\n const onContainerButtonKeydown = (event: React.KeyboardEvent<HTMLButtonElement>) => {\n switch (event.code) {\n case 'Tab':\n trapFocus(event);\n break;\n\n case 'Escape':\n setOverlayVisibleState(false);\n event.preventDefault();\n break;\n\n default:\n //Noop\n break;\n }\n\n if (props.onKeyDown) {\n props.onKeyDown(event);\n }\n };\n\n const onTimePickerElementKeyDown = (event: React.KeyboardEvent<HTMLButtonElement>, type: number, direction: number) => {\n switch (event.code) {\n case 'Enter':\n case 'NumpadEnter':\n case 'Space':\n if (isEnabled()) {\n repeat(event, null, type, direction);\n event.preventDefault();\n }\n\n break;\n }\n };\n\n const onTimePickerElementKeyUp = (event: React.KeyboardEvent<HTMLButtonElement>) => {\n switch (event.code) {\n case 'Enter':\n case 'NumpadEnter':\n\n case 'Space': {\n onTimePickerElementMouseUp(event);\n }\n }\n };\n\n const repeat = (event: React.MouseEvent<HTMLButtonElement> | React.KeyboardEvent<HTMLButtonElement>, interval: number | null, type: number, direction: number) => {\n const i = interval || 500;\n\n clearTimePickerTimer();\n timePickerTimer.current = setTimeout(() => {\n repeat(event, 100, type, direction);\n }, i);\n\n switch (type) {\n case 0:\n if (direction === 1) {\n incrementHour(event);\n } else {\n decrementHour(event);\n }\n\n break;\n\n case 1:\n if (direction === 1) {\n incrementMinute(event);\n } else {\n decrementMinute(event);\n }\n\n break;\n\n case 2:\n if (direction === 1) {\n incrementSecond(event);\n } else {\n decrementSecond(event);\n }\n\n break;\n }\n };\n\n const convertTo24Hour = (hours: number, pm: boolean) => {\n if (props.hourFormat == '12') {\n if (hours === 12) {\n return pm ? 12 : 0;\n } else {\n return pm ? hours + 12 : hours;\n }\n }\n\n return hours;\n };\n\n const validateTime = (hour: number, minute: number, second: number, pm: boolean) => {\n let value: Date | string | null = viewDate;\n const convertedHour = convertTo24Hour(hour, pm);\n\n if (isRangeSelection()) {\n value = Array.isArray(rawValueState) ? rawValueState[1] || rawValueState[0] : null;\n }\n\n if (isMultipleSelection()) {\n value = Array.isArray(rawValueState) ? rawValueState[rawValueState.length - 1] : null;\n }\n\n const valueDateString = value instanceof Date ? value.toDateString() : null;\n\n if (props.minDate && valueDateString && props.minDate.toDateString() === valueDateString) {\n if (props.minDate.getHours() > convertedHour) {\n return false;\n }\n\n if (props.minDate.getHours() === convertedHour) {\n if (props.minDate.getMinutes() > minute) {\n return false;\n }\n\n if (props.minDate.getMinutes() === minute) {\n if (props.minDate.getSeconds() > second) {\n return false;\n }\n }\n }\n }\n\n if (props.maxDate && valueDateString && props.maxDate.toDateString() === valueDateString) {\n if (props.maxDate.getHours() < convertedHour) {\n return false;\n }\n\n if (props.maxDate.getHours() === convertedHour) {\n if (props.maxDate.getMinutes() < minute) {\n return false;\n }\n\n if (props.maxDate.getMinutes() === minute) {\n if (props.maxDate.getSeconds() < second) {\n return false;\n }\n }\n }\n }\n\n return true;\n };\n\n const incrementHour = (event: React.MouseEvent<HTMLButtonElement> | React.KeyboardEvent<HTMLButtonElement>) => {\n const prevHour = currentHour;\n let newHour = currentHour + Number(props.stepHour);\n let newPM = pm;\n\n if (props.hourFormat == '24') {\n newHour = newHour >= 24 ? newHour - 24 : newHour;\n } else if (props.hourFormat == '12') {\n // Before the AM/PM break, now after\n if (prevHour < 12 && newHour > 11) {\n newPM = !pm;\n }\n\n newHour = newHour >= 13 ? newHour - 12 : newHour;\n }\n\n if (validateTime(newHour, currentMinute, currentSecond, newPM)) {\n setCurrentHour(newHour);\n setPM(newPM);\n }\n\n event.preventDefault();\n };\n\n const decrementHour = (event: React.MouseEvent<HTMLButtonElement> | React.KeyboardEvent<HTMLButtonElement>) => {\n let newHour = currentHour - Number(props.stepHour);\n let newPM = pm;\n\n if (props.hourFormat == '24') {\n newHour = newHour < 0 ? 24 + newHour : newHour;\n } else if (props.hourFormat == '12') {\n // If we were at noon/midnight, then switch\n if (currentHour === 12) {\n newPM = !pm;\n }\n\n newHour = newHour <= 0 ? 12 + newHour : newHour;\n }\n\n if (validateTime(newHour, currentMinute, currentSecond, newPM)) {\n setCurrentHour(newHour);\n setPM(newPM);\n }\n\n event.preventDefault();\n };\n\n const incrementMinute = (event: React.MouseEvent<HTMLButtonElement> | React.KeyboardEvent<HTMLButtonElement>) => {\n const newMinute = currentMinute + Number(props.stepMinute);\n\n if (validateTime(currentHour, newMinute, currentSecond, pm)) {\n setCurrentMinute(newMinute > 59 ? newMinute - 60 : newMinute);\n }\n\n event.preventDefault();\n };\n\n const decrementMinute = (event: React.MouseEvent<HTMLButtonElement> | React.KeyboardEvent<HTMLButtonElement>) => {\n let newMinute = currentMinute - Number(props.stepMinute);\n\n newMinute = newMinute < 0 ? 60 + newMinute : newMinute;\n\n if (validateTime(currentHour, newMinute, currentSecond, pm)) {\n setCurrentMinute(newMinute);\n }\n\n event.preventDefault();\n };\n\n const incrementSecond = (event: React.MouseEvent<HTMLButtonElement> | React.KeyboardEvent<HTMLButtonElement>) => {\n const newSecond = currentSecond + Number(props.stepSecond);\n\n if (validateTime(currentHour, currentMinute, newSecond, pm)) {\n setCurrentSecond(newSecond > 59 ? newSecond - 60 : newSecond);\n }\n\n event.preventDefault();\n };\n\n const decrementSecond = (event: React.MouseEvent<HTMLButtonElement> | React.KeyboardEvent<HTMLButtonElement>) => {\n let newSecond = currentSecond - Number(props.stepSecond);\n\n newSecond = newSecond < 0 ? 60 + newSecond : newSecond;\n\n if (validateTime(currentHour, currentMinute, newSecond, pm)) {\n setCurrentSecond(newSecond);\n }\n\n event.preventDefault();\n };\n\n const updateModelTime = () => {\n let valueDate: Date | string | null = viewDate;\n\n if (isRangeSelection()) {\n valueDate = Array.isArray(rawValueState) ? rawValueState[focusedDateIndex] || rawValueState[0] : null;\n }\n\n if (isMultipleSelection()) {\n valueDate = Array.isArray(rawValueState) ? rawValueState[rawValueState.length - 1] : null;\n }\n\n const dateValue = valueDate && valueDate instanceof Date ? new Date(valueDate.getTime()) : new Date();\n\n if (props.hourFormat == '12') {\n if (currentHour === 12) dateValue.setHours(pm ? 12 : 0);\n else dateValue.setHours(pm ? currentHour + 12 : currentHour);\n } else {\n dateValue.setHours(currentHour);\n }\n\n dateValue.setMinutes(currentMinute);\n dateValue.setSeconds(currentSecond);\n\n let value: useDatePickerProps['value'];\n\n if (isRangeSelection()) {\n if (Array.isArray(rawValueState)) {\n if (focusedDateIndex === 1 && rawValueState[1]) {\n value = [rawValueState[0] as Date | null, dateValue];\n } else if (focusedDateIndex === 0) {\n value = [dateValue, rawValueState[1] as Date | null];\n } else {\n value = [dateValue, null];\n }\n } else {\n value = [dateValue, null];\n }\n } else if (isMultipleSelection()) {\n if (Array.isArray(rawValueState)) {\n value = [...(rawValueState.slice(0, -1) as (Date | null)[]), dateValue];\n } else {\n value = [dateValue];\n }\n } else {\n value = dateValue;\n }\n\n updateModel(value);\n\n if (props.onDateSelect) {\n props.onDateSelect({\n value\n });\n }\n };\n\n const toggleAMPM = (event: React.MouseEvent<HTMLButtonElement>) => {\n const validHour = validateTime(currentHour, currentMinute, currentSecond, !pm);\n\n if (!validHour && (props.maxDate || props.minDate)) return;\n\n setPM(!pm);\n\n event.preventDefault();\n };\n\n const onMonthSelect = (event: React.MouseEvent<HTMLSpanElement> | React.KeyboardEvent<HTMLSpanElement>, index: number) => {\n if (props.view === 'month') {\n onDateSelect(event, {\n year: currentYear,\n month: index,\n day: 1,\n selectable: true,\n otherMonth: false,\n today: false\n });\n } else {\n setCurrentMonth(index);\n setCurrentView('date');\n\n if (props.onMonthChange) {\n props.onMonthChange({ month: currentMonth + 1, year: currentYear });\n }\n }\n\n setTimeout(updateFocus, 0);\n };\n\n const onYearSelect = (event: React.MouseEvent<HTMLSpanElement> | React.KeyboardEvent<HTMLSpanElement>, year: { value: number }) => {\n if (props.view === 'year') {\n onDateSelect(event, {\n year: year.value,\n month: 0,\n day: 1,\n selectable: true,\n otherMonth: false,\n today: false\n });\n } else {\n setCurrentYear(year.value);\n setCurrentView('month');\n\n if (props.onYearChange) {\n props.onYearChange({ month: currentMonth + 1, year: currentYear });\n }\n }\n\n setTimeout(updateFocus, 0);\n };\n\n const updateCurrentMetaData = () => {\n const _viewDate = viewDate as Date;\n\n if (!_viewDate) {\n return;\n }\n\n setCurrentMonth(_viewDate.getMonth());\n setCurrentYear(_viewDate.getFullYear());\n\n if (props.showTime || props.timeOnly) {\n let timeDate = _viewDate;\n\n if (isRangeSelection() && rawValueState && Array.isArray(rawValueState) && rawValueState[focusedDateIndex]) {\n const selectedDate = rawValueState[focusedDateIndex];\n\n if (selectedDate instanceof Date) {\n timeDate = selectedDate;\n }\n }\n\n updateCurrentTimeMeta(timeDate);\n }\n };\n\n const isValidSelection = (value: Date | Date[]) => {\n if (value == null) {\n return true;\n }\n\n let isValid = true;\n\n if (isSingleSelection() && value instanceof Date) {\n if (!isSelectable(value.getDate(), value.getMonth(), value.getFullYear(), false)) {\n isValid = false;\n }\n } else if (Array.isArray(value) && value.every((v) => isSelectable(v.getDate(), v.getMonth(), v.getFullYear(), false))) {\n if (isRangeSelection()) {\n isValid = value.length > 1 && value[1] >= value[0];\n }\n }\n\n return isValid;\n };\n\n const parseValue = (text: string): useDatePickerProps['value'] => {\n if (!text || text.trim().length === 0) {\n return null;\n }\n\n let value: useDatePickerProps['value'];\n\n if (isSingleSelection()) {\n value = parseDateTime(text) ?? null;\n } else if (isMultipleSelection()) {\n const tokens = text.split(',');\n const dateArray: (Date | null)[] = [];\n\n for (const token of tokens) {\n dateArray.push(parseDateTime(token.trim()) ?? null);\n }\n\n value = dateArray;\n } else if (isRangeSelection()) {\n const tokens = text.split(' - ');\n const dateArray: (Date | null)[] = [];\n\n for (let i = 0; i < tokens.length; i++) {\n dateArray[i] = parseDateTime(tokens[i].trim()) ?? null;\n }\n\n value = dateArray;\n }\n\n return value;\n };\n\n const parseValueForComparison = (value: useDatePickerProps['value']): Date | null => {\n if (typeof value === 'string') {\n const parsedValue = parseValue(value);\n\n if (!parsedValue) {\n return null;\n }\n\n if (isSingleSelection()) {\n return parsedValue as Date | null;\n }\n\n if (Array.isArray(parsedValue)) {\n return (parsedValue[0] ?? null) as Date | null;\n }\n\n return null;\n }\n\n if (Array.isArray(value)) {\n return (value[0] ?? null) as Date | null;\n }\n\n return (value ?? null) as Date | null;\n };\n\n const parseDateTime = (text: string) => {\n let date;\n const parts = text.match(/(?:(.+?) )?(\\d{2}:\\d{2}(?::\\d{2})?)(?: (am|pm))?/);\n\n if (props.timeOnly) {\n date = new Date();\n\n if (parts) {\n populateTime(date, parts[2], parts[3]);\n }\n } else {\n const dateFormat = datePattern;\n\n if (props.showTime) {\n if (parts) {\n date = parseDate(parts[1], dateFormat) as Date;\n populateTime(date, parts[2], parts[3]);\n }\n } else {\n date = parseDate(text, dateFormat);\n }\n }\n\n return date;\n };\n\n const populateTime = (value: Date, timeString: string, ampm: string) => {\n if (props.hourFormat == '12' && !ampm) {\n throw new Error('Invalid Time');\n }\n\n setPM(ampm === primereact?.config?.locale?.pm || ampm === primereact?.config?.locale?.pm.toLowerCase());\n const time = parseTime(timeString);\n\n value.setHours(time.hour);\n value.setMinutes(time.minute);\n\n if (time.second !== null) {\n value.setSeconds(time.second);\n }\n };\n\n const parseTime = (value: string) => {\n const tokens = value.split(':');\n const validTokenLength = props.showSeconds ? 3 : 2;\n const regex = /^[0-9][0-9]$/;\n\n if (tokens.length !== validTokenLength || !tokens[0].match(regex) || !tokens[1].match(regex) || (props.showSeconds && !tokens[2].match(regex))) {\n throw 'Invalid time';\n }\n\n let h = parseInt(tokens[0]);\n const m = parseInt(tokens[1]);\n const s = props.showSeconds ? parseInt(tokens[2]) : null;\n\n if (isNaN(h) || isNaN(m) || h > 23 || m > 59 || (props.hourFormat == '12' && h > 12) || (props.showSeconds && (s === null || isNaN(s) || s > 59))) {\n throw 'Invalid time';\n }\n\n if (props.hourFormat == '12' && h !== 12 && pm) {\n h += 12;\n } else if (props.hourFormat == '12' && h == 12 && !pm) {\n h = 0;\n }\n\n return { hour: h, minute: m, second: s };\n };\n\n const parseDate = (value: string | object, format: string) => {\n if (format == null || value == null) {\n throw 'Invalid arguments';\n }\n\n value = typeof value === 'object' ? value.toString() : value + '';\n\n if (value === '') {\n return null;\n }\n\n let iFormat: number;\n let dim;\n let extra;\n let iValue = 0;\n const shortYearCutoff = typeof props.shortYearCutoff !== 'string' ? props.shortYearCutoff : (new Date().getFullYear() % 100) + parseInt(props.shortYearCutoff, 10);\n let year = -1;\n let month = -1;\n let day = -1;\n\n let doy = -1;\n let literal = false;\n let date;\n\n const lookAhead = (match: string) => {\n const matches = iFormat + 1 < format.length && format.charAt(iFormat + 1) === match;\n\n if (matches) {\n iFormat++;\n }\n\n return matches;\n };\n\n const getNumber = (match: string) => {\n const isDoubled = lookAhead(match),\n size = match === '@' ? 14 : match === '!' ? 20 : match === 'y' && isDoubled ? 4 : match === 'o' ? 3 : 2,\n minSize = match === 'y' ? size : 1,\n digits = new RegExp('^\\\\d{' + minSize + ',' + size + '}'),\n num = value.substring(iValue).match(digits);\n\n if (!num) {\n throw 'Missing number at position ' + iValue;\n }\n\n iValue += num[0].length;\n\n return parseInt(num[0], 10);\n };\n\n const getName = (match: string, shortNames: string[], longNames: string[]) => {\n let index = -1;\n const arr = lookAhead(match) ? longNames : shortNames;\n const names: [number, string][] = [];\n\n for (let i = 0; i < arr.length; i++) {\n names.push([i, arr[i]]);\n }\n\n names.sort((a, b) => {\n return b[1].length - a[1].length;\n });\n\n for (let i = 0; i < names.length; i++) {\n const name = names[i][1];\n\n if (value.substr(iValue, name.length).toLowerCase() === name.toLowerCase()) {\n index = names[i][0];\n iValue += name.length;\n break;\n }\n }\n\n if (index !== -1) {\n return index + 1;\n } else {\n throw 'Unknown name at position ' + iValue;\n }\n };\n\n const checkLiteral = () => {\n if (value.charAt(iValue) !== format.charAt(iFormat)) {\n throw 'Unexpected literal at position ' + iValue;\n }\n\n iValue++;\n };\n\n if (currentView === 'month') {\n day = 1;\n }\n\n if (currentView === 'year') {\n day = 1;\n month = 1;\n }\n\n for (iFormat = 0; iFormat < format.length; iFormat++) {\n if (literal) {\n if (format.charAt(iFormat) === \"'\" && !lookAhead(\"'\")) {\n literal = false;\n } else {\n checkLiteral();\n }\n } else {\n switch (format.charAt(iFormat)) {\n case 'd':\n day = getNumber('d');\n break;\n case 'D':\n getName('D', primereact?.config?.locale?.dayNamesShort, primereact?.config?.locale?.dayNames);\n break;\n case 'o':\n doy = getNumber('o');\n break;\n case 'm':\n month = getNumber('m');\n break;\n case 'M':\n month = getName('M', primereact?.config?.locale?.monthNamesShort, primereact?.config?.locale?.monthNames);\n break;\n case 'y':\n year = getNumber('y');\n break;\n case '@':\n date = new Date(getNumber('@'));\n year = date.getFullYear();\n month = date.getMonth() + 1;\n day = date.getDate();\n break;\n case '!':\n date = new Date((getNumber('!') - TICKS_TO_1970) / 10000);\n year = date.getFullYear();\n month = date.getMonth() + 1;\n day = date.getDate();\n break;\n case \"'\":\n if (lookAhead(\"'\")) {\n checkLiteral();\n } else {\n literal = true;\n }\n\n break;\n default:\n checkLiteral();\n }\n }\n }\n\n if (iValue < value.length) {\n extra = value.substr(iValue);\n\n if (!/^\\s+/.test(extra)) {\n throw 'Extra/unparsed characters found in date: ' + extra;\n }\n }\n\n if (year === -1) {\n year = new Date().getFullYear();\n } else if (year < 100) {\n year += new Date().getFullYear() - (new Date().getFullYear() % 100) + (year <= (shortYearCutoff as number) ? 0 : -100);\n }\n\n if (doy > -1) {\n month = 1;\n day = doy;\n\n do {\n dim = getDaysCountInMonth(month - 1, year);\n\n if (day <= dim) {\n break;\n }\n\n month++;\n day -= dim;\n // eslint-disable-next-line\n } while (true);\n }\n\n date = daylightSavingAdjust(new Date(year, month - 1, day));\n\n if (date.getFullYear() !== year || date.getMonth() + 1 !== month || date.getDate() !== day) {\n throw 'Invalid date'; // E.g. 31/02/00\n }\n\n return date;\n };\n\n const getWeekNumber = (date: Date) => {\n const checkDate = new Date(date.getTime());\n\n checkDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7));\n const time = checkDate.getTime();\n\n checkDate.setMonth(0);\n checkDate.setDate(1);\n\n return Math.floor(Math.round((time - checkDate.getTime()) / 86400000) / 7) + 1;\n };\n\n const onDateCellKeydown = (event: React.KeyboardEvent<HTMLSpanElement>, date: useDatePickerDateMeta, groupIndex: number) => {\n event.preventDefault();\n const cellContent = event.currentTarget;\n const cell = cellContent.parentElement as HTMLTableCellElement;\n\n const cellIndex = getIndex(cell);\n\n switch (event.code) {\n case 'ArrowDown': {\n cellContent.tabIndex = -1;\n\n const nextRow = cell.parentElement?.nextElementSibling;\n\n if (nextRow) {\n const tableRowIndex = getIndex(cell.parentElement);\n const tableRows = Array.from(cell.parentElement?.parentElement?.children ?? []);\n const nextTableRows = tableRows.slice(tableRowIndex + 1);\n\n const hasNextFocusableDate = nextTableRows.find((el) => {\n const focusCell = el.children[cellIndex].children[0];\n\n return !getAttribute(focusCell, 'data-p-disabled');\n });\n\n if (hasNextFocusableDate) {\n const focusCell = hasNextFocusableDate.children[cellIndex].children[0] as HTMLElement;\n\n focusCell.tabIndex = 0;\n focusCell.focus();\n } else {\n setNavigationState({ backward: false });\n navForward(event);\n }\n } else {\n setNavigationState({ backward: false });\n navForward(event);\n }\n\n event.preventDefault();\n break;\n }\n\n case 'ArrowUp': {\n cellContent.tabIndex = -1;\n\n if (event.altKey) {\n setOverlayVisibleState(true);\n } else {\n const prevRow = cell.parentElement?.previousElementSibling;\n\n if (prevRow) {\n const tableRowIndex = getIndex(cell.parentElement);\n const tableRows = Array.from(cell.parentElement?.parentElement?.children ?? []);\n const prevTableRows = tableRows.slice(0, tableRowIndex).reverse();\n\n const hasNextFocusableDate = prevTableRows.find((el) => {\n const focusCell = el.children[cellIndex].children[0];\n\n return !getAttribute(focusCell, 'data-p-disabled');\n });\n\n if (hasNextFocusableDate) {\n const focusCell = hasNextFocusableDate.children[cellIndex].children[0] as HTMLElement;\n\n focusCell.tabIndex = 0;\n focusCell.focus();\n } else {\n setNavigationState({ backward: true });\n navBackward(event);\n }\n } else {\n setNavigationState({ backward: true });\n navBackward(event);\n }\n }\n\n event.preventDefault();\n break;\n }\n\n case 'ArrowLeft': {\n cellContent.tabIndex = -1;\n const prevCell = cell.previousElementSibling;\n\n if (prevCell) {\n const cells = Array.from(cell.parentElement?.children ?? []);\n const prevCells = cells.slice(0, cellIndex).reverse();\n\n const hasPrevFocusableDate = prevCells.find((el) => {\n const focusCell = el.children[0];\n\n return getAttribute(focusCell, 'data-pc-section') !== 'weeklabelcontainer';\n });\n\n if (hasPrevFocusableDate) {\n const focusCell = hasPrevFocusableDate.children[0] as HTMLElement;\n\n focusCell.tabIndex = 0;\n focusCell.focus();\n } else {\n navigateToMonth(event, true, groupIndex);\n }\n } else {\n navigateToMonth(event, true, groupIndex);\n }\n\n event.preventDefault();\n break;\n }\n\n case 'ArrowRight': {\n cellContent.tabIndex = -1;\n const nextCell = cell.nextElementSibling;\n\n if (nextCell) {\n const cells = Array.from(cell.parentElement?.children ?? []);\n const nextCells = cells.slice(cellIndex + 1);\n const hasNextFocusableDate = nextCells.find((el) => {\n const focusCell = el.children[0];\n\n return !getAttribute(focusCell, 'data-p-disabled');\n });\n\n if (hasNextFocusableDate) {\n const focusCell = hasNextFocusableDate.children[0] as HTMLElement;\n\n focusCell.tabIndex = 0;\n focusCell.focus();\n } else {\n navigateToMonth(event, false, groupIndex);\n }\n } else {\n navigateToMonth(event, false, groupIndex);\n }\n\n event.preventDefault();\n break;\n }\n\n case 'Enter':\n case 'NumpadEnter':\n\n case 'Space': {\n onDateSelect(event, date);\n event.preventDefault();\n break;\n }\n\n case 'Escape': {\n setOverlayVisibleState(false);\n event.preventDefault();\n break;\n }\n\n case 'Tab': {\n trapFocus(event);\n\n break;\n }\n\n case 'Home': {\n cellContent.tabIndex = -1;\n const currentRow = cell.parentElement as HTMLTableRowElement;\n const focusCell = currentRow.children[0].children[0] as HTMLElement;\n\n if (getAttribute(focusCell, 'data-p-disabled')) {\n navigateToMonth(event, true, groupIndex);\n } else {\n focusCell.tabIndex = 0;\n focusCell.focus();\n }\n\n event.preventDefault();\n break;\n }\n\n case 'End': {\n cellContent.tabIndex = -1;\n const currentRow = cell.parentElement as HTMLTableRowElement;\n const focusCell = currentRow.children[currentRow.children.length - 1].children[0] as HTMLElement;\n\n if (getAttribute(focusCell, 'data-p-disabled')) {\n navigateToMonth(event, false, groupIndex);\n } else {\n focusCell.tabIndex = 0;\n focusCell.focus();\n }\n\n event.preventDefault();\n break;\n }\n\n case 'PageUp': {\n cellContent.tabIndex = -1;\n\n if (event.shiftKey) {\n setNavigationState({ backward: true });\n navBackward(event);\n } else {\n navigateToMonth(event, true, groupIndex);\n }\n\n event.preventDefault();\n break;\n }\n\n case 'PageDown': {\n cellContent.tabIndex = -1;\n\n if (event.shiftKey) {\n setNavigationState({ backward: false });\n navForward(event);\n } else {\n navigateToMonth(event, false, groupIndex);\n }\n\n event.preventDefault();\n break;\n }\n\n default:\n //no op\n break;\n }\n };\n\n const navigateToMonth = (event: React.KeyboardEvent<HTMLSpanElement>, prev: boolean, groupIndex: number = 0) => {\n if (prev) {\n if (props.numberOfMonths === 1 || groupIndex === 0) {\n setNavigationState({ backward: true });\n navBackward(event);\n } else {\n const prevMonthContainer = overlayRef.current?.children[groupIndex - 1] as HTMLElement;\n const cells = find(prevMonthContainer, 'table td span:not([data-p-disabled=\"true\"])');\n const focusCell = cells[cells.length - 1] as HTMLElement;\n\n focusCell.tabIndex = 0;\n focusCell.focus();\n }\n } else {\n if (props.numberOfMonths === 1 || groupIndex === (props.numberOfMonths as number) - 1) {\n setNavigationState({ backward: false });\n navForward(event);\n } else {\n const nextMonthContainer = overlayRef.current?.children[groupIndex + 1] as HTMLElement;\n const focusCell = findSingle(nextMonthContainer, 'table td span:not([data-p-disabled=\"true\"])') as HTMLElement;\n\n focusCell.tabIndex = 0;\n focusCell.focus();\n }\n }\n };\n\n const onMonthCellKeydown = (event: React.KeyboardEvent<HTMLSpanElement>, index: number) => {\n const cell = event.currentTarget;\n\n switch (event.code) {\n case 'ArrowUp':\n\n case 'ArrowDown': {\n cell.tabIndex = -1;\n const parentCell = cell.parentElement as HTMLTableCellElement;\n const currentRow = parentCell?.parentElement as HTMLTableRowElement;\n const targetRow = event.code === 'ArrowUp' ? (currentRow?.previousElementSibling as HTMLTableRowElement) : (currentRow?.nextElementSibling as HTMLTableRowElement);\n const columnIndex = Array.from(parentCell?.parentElement?.children ?? []).indexOf(parentCell);\n const targetCellContainer = targetRow?.children[columnIndex] as HTMLTableCellElement;\n const targetElement = targetCellContainer?.children[0] as HTMLElement;\n\n if (targetElement) {\n targetElement.tabIndex = 0;\n targetElement.focus();\n }\n\n event.preventDefault();\n break;\n }\n\n case 'ArrowLeft': {\n cell.tabIndex = -1;\n const prevCell = cell.parentElement?.previousElementSibling?.children[0];\n\n if (prevCell) {\n (prevCell as HTMLElement).tabIndex = 0;\n (prevCell as HTMLElement).focus();\n } else {\n setNavigationState({ backward: true });\n navBackward(event);\n }\n\n event.preventDefault();\n break;\n }\n\n case 'ArrowRight': {\n cell.tabIndex = -1;\n const nextCell = cell.parentElement?.nextElementSibling?.children[0];\n\n if (nextCell) {\n (nextCell as HTMLElement).tabIndex = 0;\n (nextCell as HTMLElement).focus();\n } else {\n setNavigationState({ backward: false });\n navForward(event);\n }\n\n event.preventDefault();\n break;\n }\n\n case 'Home':\n case 'End':\n break;\n\n case 'PageUp': {\n if (event.shiftKey) return;\n\n setNavigationState({ backward: true });\n navBackward(event);\n\n break;\n }\n\n case 'PageDown': {\n if (event.shiftKey) return;\n\n setNavigationState({ backward: false });\n navForward(event);\n\n break;\n }\n\n case 'Enter':\n case 'NumpadEnter':\n\n case 'Space': {\n onMonthSelect(event, index);\n event.preventDefault();\n break;\n }\n\n case 'Escape': {\n setOverlayVisibleState(false);\n event.preventDefault();\n break;\n }\n\n case 'Tab': {\n trapFocus(event);\n break;\n }\n\n default:\n //no op\n break;\n }\n };\n\n const onYearCellKeydown = (event: React.KeyboardEvent<HTMLSpanElement>, year: { value: number }) => {\n const cell = event.currentTarget;\n\n switch (event.code) {\n case 'ArrowUp':\n\n case 'ArrowDown': {\n cell.tabIndex = -1;\n const parentCell = cell.parentElement as HTMLTableCellElement;\n const currentRow = parentCell?.parentElement as HTMLTableRowElement;\n const targetRow = event.code === 'ArrowUp' ? (currentRow?.previousElementSibling as HTMLTableRowElement) : (currentRow?.nextElementSibling as HTMLTableRowElement);\n const columnIndex = Array.from(parentCell?.parentElement?.children ?? []).indexOf(parentCell);\n const targetCellContainer = targetRow?.children[columnIndex] as HTMLTableCellElement;\n const targetElement = targetCellContainer?.children[0] as HTMLElement;\n\n if (targetElement) {\n targetElement.tabIndex = 0;\n targetElement.focus();\n }\n\n event.preventDefault();\n break;\n }\n\n case 'ArrowLeft': {\n cell.tabIndex = -1;\n const prevCell = cell.parentElement?.previousElementSibling?.children[0];\n\n if (prevCell) {\n (prevCell as HTMLElement).tabIndex = 0;\n (prevCell as HTMLElement).focus();\n } else {\n setNavigationState({ backward: true });\n navBackward(event);\n }\n\n event.preventDefault();\n break;\n }\n\n case 'ArrowRight': {\n cell.tabIndex = -1;\n const nextCell = cell.parentElement?.nextElementSibling?.children[0];\n\n if (nextCell) {\n (nextCell as HTMLElement).tabIndex = 0;\n (nextCell as HTMLElement).focus();\n } else {\n setNavigationState({ backward: false });\n navForward(event);\n }\n\n event.preventDefault();\n break;\n }\n\n case 'Home':\n case 'End':\n break;\n\n case 'PageUp': {\n if (event.shiftKey) return;\n\n setNavigationState({ backward: true });\n navBackward(event);\n\n break;\n }\n\n case 'PageDown': {\n if (event.shiftKey) return;\n\n setNavigationState({ backward: false });\n navForward(event);\n\n break;\n }\n\n case 'Enter':\n case 'NumpadEnter':\n\n case 'Space': {\n onYearSelect(event, year);\n event.preventDefault();\n break;\n }\n\n case 'Escape': {\n setOverlayVisibleState(false);\n event.preventDefault();\n break;\n }\n\n case 'Tab': {\n trapFocus(event);\n break;\n }\n\n default:\n //no op\n break;\n }\n };\n\n const updateFocus = () => {\n let cell: Element | null = null;\n\n if (navigationState) {\n if (navigationState.button) {\n initFocusableCell();\n\n if (navigationState.backward) {\n if (prevButtonRef.current) {\n prevButtonRef.current?.elementRef.current.focus();\n }\n } else {\n if (nextButtonRef.current) {\n nextButtonRef.current?.elementRef.current.focus();\n }\n }\n } else {\n if (!overlayRef.current) {\n return;\n }\n\n if (navigationState.backward) {\n let cells;\n\n if (currentView === 'month') {\n cells = find(overlayRef.current, '[data-pc-name=\"datepickertable\"] [data-pc-section=\"month\"]:not([data-p-disabled=\"true\"])');\n } else if (currentView === 'year') {\n cells = find(overlayRef.current, '[data-pc-name=\"datepickertable\"] [data-pc-section=\"year\"]:not([data-p-disabled=\"true\"])');\n } else {\n cells = find(overlayRef.current, 'table td span:not([data-pc-section=\"weeklabelcontainer\"]):not([data-p-disabled=\"true\"])');\n }\n\n if (cells && cells.length > 0) {\n cell = cells[cells.length - 1];\n }\n } else {\n if (currentView === 'month') {\n cell = findSingle(overlayRef.current, '[data-pc-name=\"datepickertable\"] [data-pc-section=\"month\"]:not([data-p-disabled=\"true\"])');\n } else if (currentView === 'year') {\n cell = findSingle(overlayRef.current, '[data-pc-name=\"datepickertable\"] [data-pc-section=\"year\"]:not([data-p-disabled=\"true\"])');\n } else {\n cell = findSingle(overlayRef.current, 'table td span:not([data-pc-section=\"weeklabelcontainer\"]):not([data-p-disabled=\"true\"])');\n }\n }\n\n if (cell) {\n (cell as HTMLElement).tabIndex = 0;\n (cell as HTMLElement).focus();\n }\n }\n\n setNavigationState(null);\n } else {\n initFocusableCell();\n }\n };\n\n const initFocusableCell = () => {\n let cell;\n\n if (!overlayRef.current) {\n return;\n }\n\n if (currentView === 'month') {\n const cells = find(overlayRef.current, '[data-pc-name=\"datepickertable\"] [data-pc-section=\"month\"]');\n const selectedCell = findSingle(overlayRef.current, '[data-pc-name=\"datepickertable\"] [data-pc-section=\"month\"][data-p-selected=\"true\"]');\n\n cells.forEach((cell) => ((cell as HTMLElement).tabIndex = -1));\n cell = selectedCell || cells[0];\n } else if (currentView === 'year') {\n const cells = find(overlayRef.current, '[data-pc-name=\"datepickertable\"] [data-pc-section=\"year\"]');\n const selectedCell = findSingle(overlayRef.current, '[data-pc-name=\"datepickertable\"] [data-pc-section=\"year\"][data-p-selected=\"true\"]');\n\n cells.forEach((cell) => ((cell as HTMLElement).tabIndex = -1));\n cell = selectedCell || cells[0];\n } else {\n cell = findSingle(overlayRef.current, '.p-datepicker-calendar span[data-p-selected=\"true\"]');\n\n if (!cell) {\n const todayCell = findSingle(overlayRef.current, 'td[data-p-today=\"true\"] span:not([data-pc-section=\"weeklabelcontainer\"]):not([data-p-disabled=\"true\"])');\n\n if (todayCell) cell = todayCell;\n else cell = findSingle(overlayRef.current, '.p-datepicker-calendar td span:not([data-pc-section=\"weeklabelcontainer\"]):not([data-p-disabled=\"true\"])');\n }\n }\n\n if (cell) {\n (cell as HTMLElement).tabIndex = 0;\n }\n };\n\n const trapFocus = (event: React.KeyboardEvent) => {\n event.preventDefault();\n\n if (!overlayRef.current) {\n return;\n }\n\n const focusableElements = getFocusableElements(overlayRef.current) as HTMLElement[];\n\n if (focusableElements && focusableElements.length > 0) {\n if (!document.activeElement) {\n focusableElements[0].focus();\n } else {\n const focusedIndex = focusableElements.indexOf(document.activeElement as HTMLElement);\n\n if (event.shiftKey) {\n if (focusedIndex === -1 || focusedIndex === 0) focusableElements[focusableElements.length - 1].focus();\n else focusableElements[focusedIndex - 1].focus();\n } else {\n if (focusedIndex === -1) {\n if (props.timeOnly) {\n focusableElements[0].focus();\n } else {\n let elementIndex = focusableElements.findIndex((el) => el.tagName === 'SPAN');\n\n if (elementIndex === -1) {\n elementIndex = focusableElements.findIndex((el) => el.tagName === 'BUTTON');\n }\n\n if (elementIndex !== -1) {\n focusableElements[elementIndex].focus();\n } else {\n focusableElements[0].focus();\n }\n }\n } else if (focusedIndex === focusableElements.length - 1) {\n focusableElements[0].focus();\n } else {\n focusableElements[focusedIndex + 1].focus();\n }\n }\n }\n }\n };\n\n const getMonthName = (index?: number) => {\n return primereact?.config?.locale?.monthNames[index ?? currentMonth];\n };\n\n const getYear = () => {\n return currentYear;\n };\n\n const onClearClick = () => {\n updateModel(null);\n setShowClearIcon(false);\n setOverlayVisibleState(false);\n };\n\n const onInput = (event: React.ChangeEvent<HTMLInputElement>) => {\n try {\n selectionStart.current = event.target.selectionStart;\n selectionEnd.current = event.target.selectionEnd;\n\n setShowClearIcon(!isEmpty(event.target.value));\n const value = parseValue(event.target.value) as Date;\n\n if (isValidSelection(value)) {\n typeUpdate.current = true;\n updateModel(props.updateModelType === 'string' ? formatValue(value) : value);\n updateCurrentMetaData();\n }\n } catch {\n /* NoOp */\n }\n\n if (props.onInput) {\n props.onInput(event);\n }\n };\n\n const onInputClick = () => {\n if (props.showOnFocus && isEnabled() && !overlayVisibleState) {\n setOverlayVisibleState(true);\n }\n };\n\n const onInputKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.code === 'ArrowDown' && overlayVisibleState) {\n trapFocus(event);\n } else if (event.code === 'ArrowDown' && !overlayVisibleState) {\n setOverlayVisibleState(true);\n } else if (event.code === 'Escape') {\n if (overlayVisibleState) {\n setOverlayVisibleState(false);\n event.preventDefault();\n event.stopPropagation();\n }\n } else if (event.code === 'Tab') {\n if (overlayVisibleState && overlayRef.current) {\n (getFocusableElements(overlayRef.current) as HTMLElement[]).forEach((el) => (el.tabIndex = -1));\n }\n\n if (overlayVisibleState) {\n setOverlayVisibleState(false);\n }\n } else if (event.code === 'Enter') {\n if (props.manualInput && (event.target as HTMLInputElement).value !== null && (event.target as HTMLInputElement).value?.trim() !== '') {\n try {\n const value = parseValue((event.target as HTMLInputElement).value) as Date | Date[];\n\n if (isValidSelection(value)) {\n setOverlayVisibleState(false);\n }\n } catch {\n /* NoOp */\n }\n }\n\n if (props.onKeyDown) {\n props.onKeyDown(event);\n }\n }\n };\n\n const onInputFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n if (props.showonInputFocus && isEnabled()) {\n setOverlayVisibleState(true);\n }\n\n if (props.onFocus) {\n props.onFocus(event);\n }\n };\n\n const onInputBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n if (props.onBlur) {\n props.onBlur({\n originalEvent: event,\n value: event.target.value\n });\n }\n\n if (props.onValueChange) {\n event.target.value = formatValue(rawValueState);\n }\n\n if (showClearIcon) {\n setShowClearIcon(!isEmpty(event.target.value));\n }\n };\n\n const onOverlayEnter = () => {\n updateFocus();\n\n if (portalRef?.current?.containerRef?.current?.elementRef?.current) {\n const element = portalRef.current.containerRef.current.elementRef.current;\n\n if (elementRef?.current) {\n element.style.width = getOuterWidth(element) + 'px';\n element.style.minWidth = getOuterWidth(elementRef.current) + 'px';\n }\n }\n };\n\n const changeVisibleState = (isVisible: boolean) => {\n setOverlayVisibleState(isVisible);\n };\n\n const viewDate = React.useMemo<Date>(() => {\n let propValue = rawValueState;\n\n if (propValue && Array.isArray(propValue)) {\n if (isRangeSelection()) {\n if (propValue.length === 0) {\n propValue = null;\n } else if (propValue.length === 1) {\n propValue = propValue[0];\n } else {\n const start = parseValueForComparison(propValue[0]) as Date;\n const end = parseValueForComparison(propValue[1]) as Date | null;\n const lastVisibleMonth = new Date(start.getFullYear(), start.getMonth() + (props.numberOfMonths ?? 1), 1);\n\n if (!end || end < lastVisibleMonth) {\n propValue = propValue[0];\n } else {\n propValue = new Date(end.getFullYear(), end.getMonth() - (props.numberOfMonths ?? 1) + 1, 1);\n }\n }\n } else if (isMultipleSelection()) {\n propValue = propValue[propValue.length - 1];\n }\n }\n\n if (propValue && typeof propValue !== 'string') {\n return propValue as Date;\n } else {\n const today = new Date();\n\n if (props.maxDate && props.maxDate < today) {\n return props.maxDate;\n }\n\n if (props.minDate && props.minDate > today) {\n return props.minDate;\n }\n\n return today;\n }\n }, [rawValueState, props.numberOfMonths, props.maxDate, props.minDate]);\n\n const inputFieldValue = React.useMemo(() => {\n return formatValue(rawValueState);\n }, [rawValueState]);\n\n const months = React.useMemo(() => {\n const monthsArray = [];\n\n for (let i = 0; i < (props.numberOfMonths ?? 1); i++) {\n let month = (currentMonth ?? 0) + i;\n let year = currentYear ?? 0;\n\n if (month > 11) {\n month = (month % 11) - 1;\n year = year + 1;\n }\n\n const dates = [];\n const firstDay = getFirstDayOfMonthIndex(month, year);\n const daysLength = getDaysCountInMonth(month, year);\n const prevMonthDaysLength = getDaysCountInPrevMonth(month, year);\n let dayNo = 1;\n const today = new Date();\n const weekNumbers = [];\n const monthRows = Math.ceil((daysLength + firstDay) / 7);\n\n for (let i = 0; i < monthRows; i++) {\n const week = [];\n\n if (i == 0) {\n for (let j = prevMonthDaysLength - firstDay + 1; j <= prevMonthDaysLength; j++) {\n const prev = getPreviousMonthAndYear(month, year);\n\n week.push({\n day: j,\n month: prev.month,\n year: prev.year,\n otherMonth: true,\n today: isToday(today, j, prev.month, prev.year),\n selectable: isSelectable(j, prev.month, prev.year, true)\n });\n }\n\n const remainingDaysLength = 7 - week.length;\n\n for (let j = 0; j < remainingDaysLength; j++) {\n week.push({\n day: dayNo,\n month: month,\n year: year,\n otherMonth: false,\n today: isToday(today, dayNo, month, year),\n selectable: isSelectable(dayNo, month, year, false)\n });\n dayNo++;\n }\n } else {\n for (let j = 0; j < 7; j++) {\n if (dayNo > daysLength) {\n const next = getNextMonthAndYear(month, year);\n\n week.push({\n day: dayNo - daysLength,\n month: next.month,\n year: next.year,\n otherMonth: true,\n today: isToday(today, dayNo - daysLength, next.month, next.year),\n selectable: isSelectable(dayNo - daysLength, next.month, next.year, true)\n });\n } else {\n week.push({\n day: dayNo,\n month: month,\n year: year,\n otherMonth: false,\n today: isToday(today, dayNo, month, year),\n selectable: isSelectable(dayNo, month, year, false)\n });\n }\n\n dayNo++;\n }\n }\n\n weekNumbers.push(getWeekNumber(new Date(week[0].year, week[0].month, week[0].day)));\n\n dates.push(week);\n }\n\n monthsArray.push({\n month: month,\n year: year,\n dates: dates,\n weekNumbers: weekNumbers\n });\n }\n\n return monthsArray;\n }, [currentMonth, currentYear, props.numberOfMonths, props.minDate, props.maxDate, props.disabledDates, props.disabledDays, props.selectOtherMonths]);\n\n const getIndexedMonth = React.useCallback(\n (index: number = 0) => {\n return months[index];\n },\n [months]\n );\n\n const monthPickerValues = React.useMemo(() => {\n const monthPickerValuesArray = [];\n\n const isSelectableMonth = (baseMonth: number) => {\n if (props.minDate) {\n const minMonth = props.minDate.getMonth();\n const minYear = props.minDate.getFullYear();\n\n if ((currentYear as number) < minYear || (currentYear === minYear && baseMonth < minMonth)) {\n return false;\n }\n }\n\n if (props.maxDate) {\n const maxMonth = props.maxDate.getMonth();\n const maxYear = props.maxDate.getFullYear();\n\n if ((currentYear as number) > maxYear || (currentYear === maxYear && baseMonth > maxMonth)) {\n return false;\n }\n }\n\n return true;\n };\n\n for (let i = 0; i <= 11; i++) {\n monthPickerValuesArray.push({\n value: primereact?.config?.locale?.monthNamesShort[i],\n selectable: isSelectableMonth(i)\n });\n }\n\n return monthPickerValuesArray;\n }, [currentYear, props.minDate, props.maxDate]);\n\n const yearPickerValues = React.useMemo(() => {\n const yearPickerValuesArray = [];\n const base = (currentYear as number) - ((currentYear as number) % 10);\n\n const isSelectableYear = (baseYear: number) => {\n if (props.minDate) {\n if (props.minDate.getFullYear() > baseYear) return false;\n }\n\n if (props.maxDate) {\n if (props.maxDate.getFullYear() < baseYear) return false;\n }\n\n return true;\n };\n\n for (let i = 0; i < 10; i++) {\n yearPickerValuesArray.push({ value: base + i, selectable: isSelectableYear(base + i) });\n }\n\n return yearPickerValuesArray;\n }, [currentYear, props.minDate, props.maxDate]);\n\n const weekDays = React.useMemo(() => {\n const weekDays = [];\n\n let dayIndex = primereact?.config?.locale?.firstDayOfWeek;\n\n for (let i = 0; i < 7; i++) {\n weekDays.push(primereact?.config?.locale?.dayNamesMin[dayIndex]);\n dayIndex = dayIndex == 6 ? 0 : ++dayIndex;\n }\n\n return weekDays;\n }, []);\n\n const datePattern = React.useMemo(() => {\n return props.dateFormat || primereact?.config?.locale?.dateFormat;\n }, [props.dateFormat, primereact?.config?.locale]);\n\n const formattedCurrentHour = React.useMemo(() => {\n if (currentHour == 0 && props.hourFormat == '12') {\n return currentHour + 12;\n }\n\n return currentHour < 10 ? '0' + currentHour : currentHour;\n }, [currentHour, props.hourFormat]);\n\n const formattedCurrentMinute = React.useMemo(() => {\n return currentMinute < 10 ? '0' + currentMinute : currentMinute;\n }, [currentMinute]);\n\n const formattedCurrentSecond = React.useMemo(() => {\n return currentSecond < 10 ? '0' + currentSecond : currentSecond;\n }, [currentSecond]);\n\n const todayLabel = React.useMemo(() => {\n return primereact?.config?.locale?.today;\n }, [primereact?.config?.locale]);\n\n const clearLabel = React.useMemo(() => {\n return primereact?.config?.locale?.clear;\n }, [primereact?.config?.locale]);\n\n const weekHeaderLabel = React.useMemo(() => {\n return primereact?.config?.locale?.weekHeader;\n }, [primereact?.config?.locale]);\n\n const switchViewButtonDisabled = React.useMemo(() => {\n return (props.numberOfMonths as number) > 1 || !!props.disabled;\n }, [props.numberOfMonths, props.disabled]);\n\n const ampmLabel = React.useMemo(() => {\n if (pm) {\n return primereact?.config?.locale?.pm;\n }\n\n return primereact?.config?.locale?.am;\n }, [pm, primereact?.config?.locale]);\n\n // effects\n useMountEffect(() => {\n setTimeout(() => {\n if (!props.disabled) {\n initFocusableCell();\n }\n }, 300);\n });\n\n React.useEffect(() => {\n if (inputRef.current?.elementRef.current && selectionStart.current != null && selectionEnd.current != null) {\n inputRef.current.elementRef.current.selectionStart = selectionStart.current;\n inputRef.current.elementRef.current.selectionEnd = selectionEnd.current;\n selectionStart.current = null;\n selectionEnd.current = null;\n }\n }, [inputFieldValue]);\n\n React.useEffect(() => {\n updateFocus();\n }, [currentView, months]);\n\n React.useEffect(() => {\n if (props.value === undefined) return;\n\n updateCurrentMetaData();\n const initialValue = (typeof props.value === 'string' ? parseValue(props.value) : props.value) as useDatePickerProps['value'];\n\n setRawValueState(initialValue);\n\n if (!typeUpdate.current && inputRef.current && inputRef.current.elementRef.current) {\n inputRef.current.elementRef.current.value = formatValue(initialValue);\n }\n\n typeUpdate.current = false;\n }, [props.value]);\n\n React.useEffect(() => {\n if (props.value !== undefined) return;\n\n updateCurrentMetaData();\n const initialValue = (typeof props.defaultValue === 'string' ? parseValue(props.defaultValue) : props.defaultValue) as useDatePickerProps['value'];\n\n setRawValueState(initialValue);\n\n if (!typeUpdate.current && inputRef.current && inputRef.current.elementRef.current) {\n inputRef.current.elementRef.current.value = formatValue(initialValue);\n }\n\n typeUpdate.current = false;\n }, [props.defaultValue]);\n\n React.useEffect(() => {\n if (isEmpty(rawValueState)) {\n setShowClearIcon(false);\n }\n }, [rawValueState]);\n\n React.useEffect(() => {\n if (props.showTime && overlayVisibleState) {\n updateModelTime();\n }\n }, [pm]);\n\n React.useEffect(() => {\n if (!overlayVisibleState && hoveredDateState) {\n setHoveredDateState(null);\n }\n }, [overlayVisibleState]);\n\n return {\n state,\n inputRef,\n nextButtonRef,\n prevButtonRef,\n portalRef,\n overlayRef,\n //methods\n inputFieldValue,\n weekHeaderLabel,\n todayLabel,\n clearLabel,\n weekDays,\n months,\n getIndexedMonth,\n getYear,\n getMonthName,\n onPrevButtonClick,\n onNextButtonClick,\n monthPickerValues,\n yearPickerValues,\n switchToMonthView,\n switchToYearView,\n onDateSelect,\n onMonthSelect,\n onYearSelect,\n onDateCellKeydown,\n onMonthCellKeydown,\n onYearCellKeydown,\n onButtonClick,\n switchViewButtonDisabled,\n formattedCurrentHour,\n formattedCurrentMinute,\n formattedCurrentSecond,\n ampmLabel,\n onTimePickerElementMouseDown,\n onTimePickerElementMouseUp,\n onTimePickerElementMouseLeave,\n onContainerButtonKeydown,\n onTimePickerElementKeyDown,\n onTimePickerElementKeyUp,\n toggleAMPM,\n onTodayButtonClick,\n onClearButtonClick,\n onClearClick,\n onInput,\n onInputClick,\n onInputKeyDown,\n onInputFocus,\n onInputBlur,\n onOverlayEnter,\n changeVisibleState,\n // for styling\n isRangeSelection,\n isSelected,\n parseValue,\n isDateEquals,\n isMonthSelected,\n isYearSelected,\n isInHoverRange,\n onDateCellMouseEnter\n };\n }\n});\n","import type { useDatePickerProps } from '@primereact/types/shared/datepicker';\n\nexport const defaultProps: useDatePickerProps = {\n defaultValue: undefined,\n value: undefined,\n updateModelType: 'date',\n selectionMode: 'single',\n dateFormat: undefined,\n selectOtherMonths: false,\n numberOfMonths: 1,\n view: 'date',\n minDate: undefined,\n maxDate: undefined,\n maxDateCount: undefined,\n showOnFocus: true,\n autoZIndex: true,\n baseZIndex: 0,\n shortYearCutoff: '+10',\n showTime: false,\n timeOnly: false,\n hourFormat: '24',\n stepHour: 1,\n stepMinute: 1,\n stepSecond: 1,\n hideOnDateTimeSelect: false,\n hideOnRangeSelection: false,\n timeSeparator: ':',\n manualInput: true,\n showSeconds: false,\n appendTo: 'body',\n onValueChange: undefined,\n onDateSelect: undefined,\n onMonthChange: undefined,\n onYearChange: undefined,\n onTodayButtonClick: undefined,\n onClearButtonClick: undefined,\n onInput: undefined,\n onKeyDown: undefined,\n onFocus: undefined,\n onBlur: undefined\n};\n"],"mappings":"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","names":["withHeadless","useMountEffect","find","findSingle","getAttribute","getFocusableElements","getIndex","getOuterWidth","isDate","isEmpty","isNotEmpty","React","defaultProps","TICKS_TO_1970","primereact","useDatePicker","withHeadless","defaultProps","props","elementRef","_a","_b","_c","_d","_e","inputRef","nextButtonRef","prevButtonRef","portalRef","overlayRef","timePickerTimer","typeUpdate","selectionStart","selectionEnd","showClearIcon","setShowClearIcon","overlayVisibleState","setOverlayVisibleState","currentView","setCurrentView","currentMonth","setCurrentMonth","currentYear","setCurrentYear","currentHour","setCurrentHour","currentMinute","setCurrentMinute","currentSecond","setCurrentSecond","pm","setPM","focusedDateIndex","setFocusedDateIndex","navigationState","setNavigationState","hoveredDateState","setHoveredDateState","getInitialValue","parseValue","rawValueState","setRawValueState","state","isSelected","dateMeta","isSingleSelection","isDateEquals","parseValueForComparison","isMultipleSelection","selected","date","isRangeSelection","start","end","isDateBetween","isInHoverRange","hoverDateObj","currentDateObj","rangeStart","rangeEnd","currentTime","onDateCellMouseEnter","isMonthSelected","month","isDate","currentValue","parsedDate","parsedStart","parsedEnd","currentDate","startDate","endDate","isYearSelected","year","value","dateValue","sundayIndex","getFirstDayOfMonthIndex","day","dayIndex","getDaysCountInMonth","daylightSavingAdjust","getDaysCountInPrevMonth","prev","getPreviousMonthAndYear","m","y","getNextMonthAndYear","isToday","today","isSelectable","otherMonth","validMin","validMax","validDate","validDay","isDateDisabled","isDayDisabled","onPrevButtonClick","event","navBackward","onNextButtonClick","navForward","isEnabled","decrementYear","decrementDecade","incrementYear","incrementDecade","switchToMonthView","switchToYearView","updateCurrentTimeMeta","_f","onButtonClick","disabledDate","weekdayNumber","onDateSelect","find","cell","newValue","updateModel","shouldSelectDate","selectDate","modelVal","writeValue","stringArrValue","formatDateTime","formatted","isEmpty","formatValue","formatDate","formattedValue","singleVal","i","v","dateAsString","e","isNotEmpty","formatTime","datePattern","format","_g","_h","iFormat","lookAhead","match","matches","formatNumber","len","num","formatName","shortNames","longNames","output","literal","hours","minutes","seconds","clearTimePickerTimer","onTodayButtonClick","onClearButtonClick","onTimePickerElementMouseDown","type","direction","repeat","onTimePickerElementMouseUp","updateModelTime","onTimePickerElementMouseLeave","onContainerButtonKeydown","trapFocus","onTimePickerElementKeyDown","onTimePickerElementKeyUp","interval","incrementHour","decrementHour","incrementMinute","decrementMinute","incrementSecond","decrementSecond","convertTo24Hour","validateTime","hour","minute","second","viewDate","convertedHour","valueDateString","prevHour","newHour","newPM","newMinute","newSecond","valueDate","toggleAMPM","onMonthSelect","index","updateFocus","onYearSelect","updateCurrentMetaData","_viewDate","timeDate","selectedDate","isValidSelection","isValid","text","parseDateTime","tokens","dateArray","token","parsedValue","parts","populateTime","dateFormat","parseDate","timeString","ampm","time","parseTime","validTokenLength","regex","h","s","dim","extra","iValue","shortYearCutoff","doy","getNumber","isDoubled","size","minSize","digits","getName","arr","names","a","b","name","checkLiteral","getWeekNumber","checkDate","onDateCellKeydown","groupIndex","_i","_j","_k","_l","cellContent","cellIndex","getIndex","tableRowIndex","hasNextFocusableDate","el","focusCell","getAttribute","hasPrevFocusableDate","navigateToMonth","currentRow","prevMonthContainer","cells","nextMonthContainer","findSingle","onMonthCellKeydown","parentCell","targetRow","columnIndex","targetCellContainer","targetElement","prevCell","nextCell","onYearCellKeydown","initFocusableCell","selectedCell","todayCell","focusableElements","getFocusableElements","focusedIndex","elementIndex","getMonthName","getYear","onClearClick","onInput","onInputClick","onInputKeyDown","onInputFocus","onInputBlur","onOverlayEnter","element","getOuterWidth","changeVisibleState","isVisible","propValue","lastVisibleMonth","inputFieldValue","months","monthsArray","dates","firstDay","daysLength","prevMonthDaysLength","dayNo","weekNumbers","monthRows","week","j","remainingDaysLength","next","getIndexedMonth","monthPickerValues","monthPickerValuesArray","isSelectableMonth","baseMonth","minMonth","minYear","maxMonth","maxYear","yearPickerValues","yearPickerValuesArray","base","isSelectableYear","baseYear","weekDays","formattedCurrentHour","formattedCurrentMinute","formattedCurrentSecond","todayLabel","clearLabel","weekHeaderLabel","switchViewButtonDisabled","ampmLabel","useMountEffect","initialValue"]}