@veccu/react-calendar
Version:
Headless Calendar UI Library with react hooks
3 lines (2 loc) • 8.1 kB
JavaScript
import{setHours as e,setMinutes as t,setSeconds as r,setMilliseconds as n,isEqual as o,isSameMonth as u,isSameYear as a,isWeekend as c,getDate as i,setDay as f,getDay as y,startOfMonth as s,getDaysInMonth as l,addDays as p,addWeeks as b,startOfWeek as O,addMonths as v,subDays as w,subWeeks as d,subMonths as h}from"date-fns";import{useState as j,useEffect as g,useMemo as m,useCallback as D}from"react";var k;!function(e){e.Month="month",e.Week="week",e.Day="day"}(k||(k={}));var P=k;var S=function(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e};var M=function(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n};var I=function(e){if(Array.isArray(e))return M(e)};var A=function(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)};var W=function(e,t){if(e){if("string"==typeof e)return M(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?M(e,t):void 0}};var x=function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")};var E=function(e){return I(e)||A(e)||W(e)||x()};function V(e){return E(new Array(e).keys())}var C=0,T=new Map;function B(e){if(T.has(e)){var t=T.get(e)+1;T.set(e,t),C=t}else{T.set(e,1),C=1}return"".concat(e,"-").concat(C)}function F(o){return e(t(r(n(o,0),0),0),0)}function N(e,t){var r=F(e),n=F(t);return o(r,n)}function U(e,t){return u(t,e)&&a(t,e)}function Y(e){return{year:e.getFullYear(),month:e.getMonth(),day:e.getDate()}}function $(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return function(){for(var e=arguments.length,r=new Array(e),n=0;n<e;n++)r[n]=arguments[n];return t.reduce((function(e,t,r){var n=0===r?e:[e];return t.apply(void 0,E(n))}),r)}}function q(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];return $.apply(void 0,r)(e)}function z(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function G(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?z(Object(r),!0).forEach((function(t){S(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):z(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function H(e,t){return e.map((function(e){return G(G({},e),{},{key:B(t)})}))}function J(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function K(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?J(Object(r),!0).forEach((function(t){S(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):J(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function L(e,t){return function(r){var n=r.value,o=U(t,n),u=N(e,n),a=c(n);return K(K({},r),{},{date:i(n),isCurrentMonth:o,isCurrentDate:u,isWeekend:a})}}function Q(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function R(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Q(Object(r),!0).forEach((function(t){S(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Q(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function X(e){return function(t){return R(R({},t),{},{key:B(e)})}}var Z=function(e){if(Array.isArray(e))return e};var _=function(e,t){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e)){var r=[],n=!0,o=!1,u=void 0;try{for(var a,c=e[Symbol.iterator]();!(n=(a=c.next()).done)&&(r.push(a.value),!t||r.length!==t);n=!0);}catch(e){o=!0,u=e}finally{try{n||null==c.return||c.return()}finally{if(o)throw u}}return r}};var ee=function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")};var te=function(e,t){return Z(e)||_(e,t)||W(e,t)||ee()};function re(e,t){var r=t.weekStartsOn,n=Y(e),o=n.year,u=n.month,a=n.day,c=function(e,t){var r=(s(e).getDay()-t)%7;return r<0?r+7:r}(e,r),i=function(e,t){var r=l(e);return Math.ceil((t+r)/7)}(e,c),p=V(7).map((function(t){return{value:f(e,t+r)}}));return{cursorDate:e,year:o,month:u,day:a,weekStartsOn:r,startWeekdayInMonth:c,weeksInMonth:i,weekendDays:p,today:{weekIndex:ne(a,c),dateIndex:y(e)},getDateCellByIndex:function(e,t){return{value:new Date(o,u,7*e+t-c+1)}}}}function ne(e,t){return(e+t)%7>0?Math.floor((e+t)/7):Math.floor((e+t)/7)-1}function oe(){var e=j(!1),t=te(e,2),r=t[0],n=t[1];return g((function(){n(!0)}),[]),r}function ue(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function ae(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ue(Object(r),!0).forEach((function(t){S(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ue(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function ce(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.defaultDate,r=e.defaultWeekStart,n=void 0===r?0:r,o=e.defaultViewType,u=void 0===o?P.Month:o,a=oe(),c=m((function(){return null!=t?new Date(t):new Date}),[t,a]),i=j(n),f=te(i,2),y=f[0],l=f[1],g=j(c),k=te(g,2),M=k[0],I=k[1],A=j(u),W=te(A,2),x=W[0],E=W[1],C=re(M,{weekStartsOn:y}),T=C.weekendDays,F=C.weeksInMonth,N=C.today,U=C.getDateCellByIndex,Y=D((function(e){switch(e){case P.Month:case P.Week:return{weekDays:H(T,"weekdays")};case P.Day:default:return{weekDays:H([{value:M}],"weekdays")}}}),[M,T]),$=D((function(e){return{value:V(e).map((function(e){return{key:B("weeks"),value:V(7).map((function(t){return q(U(e,t),L(c,M),X("days"))}))}}))}}),[c,M,U]),z=D((function(e){var t,r,n=$(F),o=N.weekIndex,u=N.dateIndex;return(r={},S(r,P.Month,n),S(r,P.Week,{value:[n.value[o]]}),S(r,P.Day,{value:[{key:"week-day-type",value:[null===(t=n.value[o])||void 0===t?void 0:t.value[u]]}]}),r)[e]}),[$,N,F]),G=m((function(){switch(x){case P.Month:return function(e){return v(s(e),1)};case P.Week:return function(e){return b(O(e,{weekStartsOn:y}),1)};case P.Day:return function(e){return p(e,1)}}}),[x,y]),J=m((function(){switch(x){case P.Month:return function(e){return h(s(e),1)};case P.Week:return function(e){return d(O(e,{weekStartsOn:y}),1)};case P.Day:return function(e){return w(e,1)}}}),[x,y]);return m((function(){return ae(ae({},C),{},{headers:Y(x),body:z(x),navigation:{toNext:function(){return I((function(e){return G(e)}))},toPrev:function(){return I((function(e){return J(e)}))},setToday:function(){return I(new Date)},setDate:function(e){return I(e)}},view:{type:x,setViewType:E,setWeekStartsOn:l,isMonthView:x===P.Month,isWeekView:x===P.Week,isDayView:x===P.Day,showMonthView:function(){return E(P.Month)},showWeekView:function(){return E(P.Week)},showDayView:function(){return E(P.Day)}}})}),[C,z,Y,G,J,x])}export default ce;export{P as CalendarViewType,V as arrayOf,B as generateID,N as isSameDate,U as isSameYearAndMonth,Y as parseDate,$ as pipe,q as pipeWith,L as withDateProps,H as withKey,X as withKeyProps};
//# sourceMappingURL=index.js.map