UNPKG

react-weekline

Version:
24 lines (23 loc) 10.5 kB
"use strict";const h=require("react");var W={exports:{}},C={};/** * @license React * react-jsx-runtime.production.js * * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */var K;function ne(){if(K)return C;K=1;var t=Symbol.for("react.transitional.element"),f=Symbol.for("react.fragment");function o(m,c,d){var _=null;if(d!==void 0&&(_=""+d),c.key!==void 0&&(_=""+c.key),"key"in c){d={};for(var g in c)g!=="key"&&(d[g]=c[g])}else d=c;return c=d.ref,{$$typeof:t,type:m,key:_,ref:c!==void 0?c:null,props:d}}return C.Fragment=f,C.jsx=o,C.jsxs=o,C}var D={};/** * @license React * react-jsx-runtime.development.js * * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */var ee;function se(){return ee||(ee=1,process.env.NODE_ENV!=="production"&&(function(){function t(e){if(e==null)return null;if(typeof e=="function")return e.$$typeof===S?null:e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case b:return"Fragment";case R:return"Profiler";case L:return"StrictMode";case z:return"Suspense";case G:return"SuspenseList";case $:return"Activity"}if(typeof e=="object")switch(typeof e.tag=="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),e.$$typeof){case F:return"Portal";case q:return e.displayName||"Context";case x:return(e._context.displayName||"Context")+".Consumer";case J:var r=e.render;return e=e.displayName,e||(e=r.displayName||r.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case X:return r=e.displayName||null,r!==null?r:t(e.type)||"Memo";case j:r=e._payload,e=e._init;try{return t(e(r))}catch{}}return null}function f(e){return""+e}function o(e){try{f(e);var r=!1}catch{r=!0}if(r){r=console;var a=r.error,i=typeof Symbol=="function"&&Symbol.toStringTag&&e[Symbol.toStringTag]||e.constructor.name||"Object";return a.call(r,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",i),f(e)}}function m(e){if(e===b)return"<>";if(typeof e=="object"&&e!==null&&e.$$typeof===j)return"<...>";try{var r=t(e);return r?"<"+r+">":"<...>"}catch{return"<...>"}}function c(){var e=A.A;return e===null?null:e.getOwner()}function d(){return Error("react-stack-top-frame")}function _(e){if(O.call(e,"key")){var r=Object.getOwnPropertyDescriptor(e,"key").get;if(r&&r.isReactWarning)return!1}return e.key!==void 0}function g(e,r){function a(){s||(s=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",r))}a.isReactWarning=!0,Object.defineProperty(e,"key",{get:a,configurable:!0})}function I(){var e=t(this.type);return k[e]||(k[e]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),e=this.props.ref,e!==void 0?e:null}function p(e,r,a,i,U,H){var u=a.ref;return e={$$typeof:T,type:e,key:r,props:a,_owner:i},(u!==void 0?u:null)!==null?Object.defineProperty(e,"ref",{enumerable:!1,get:I}):Object.defineProperty(e,"ref",{enumerable:!1,value:null}),e._store={},Object.defineProperty(e._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(e,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(e,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:U}),Object.defineProperty(e,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:H}),Object.freeze&&(Object.freeze(e.props),Object.freeze(e)),e}function M(e,r,a,i,U,H){var u=r.children;if(u!==void 0)if(i)if(B(u)){for(i=0;i<u.length;i++)Y(u[i]);Object.freeze&&Object.freeze(u)}else console.error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else Y(u);if(O.call(r,"key")){u=t(e);var y=Object.keys(r).filter(function(te){return te!=="key"});i=0<y.length?"{key: someKey, "+y.join(": ..., ")+": ...}":"{key: someKey}",w[u+i]||(y=0<y.length?"{"+y.join(": ..., ")+": ...}":"{}",console.error(`A props object containing a "key" prop is being spread into JSX: let props = %s; <%s {...props} /> React keys must be passed directly to JSX without using spread: let props = %s; <%s key={someKey} {...props} />`,i,u,y,u),w[u+i]=!0)}if(u=null,a!==void 0&&(o(a),u=""+a),_(r)&&(o(r.key),u=""+r.key),"key"in r){a={};for(var Z in r)Z!=="key"&&(a[Z]=r[Z])}else a=r;return u&&g(a,typeof e=="function"?e.displayName||e.name||"Unknown":e),p(e,u,a,c(),U,H)}function Y(e){N(e)?e._store&&(e._store.validated=1):typeof e=="object"&&e!==null&&e.$$typeof===j&&(e._payload.status==="fulfilled"?N(e._payload.value)&&e._payload.value._store&&(e._payload.value._store.validated=1):e._store&&(e._store.validated=1))}function N(e){return typeof e=="object"&&e!==null&&e.$$typeof===T}var E=h,T=Symbol.for("react.transitional.element"),F=Symbol.for("react.portal"),b=Symbol.for("react.fragment"),L=Symbol.for("react.strict_mode"),R=Symbol.for("react.profiler"),x=Symbol.for("react.consumer"),q=Symbol.for("react.context"),J=Symbol.for("react.forward_ref"),z=Symbol.for("react.suspense"),G=Symbol.for("react.suspense_list"),X=Symbol.for("react.memo"),j=Symbol.for("react.lazy"),$=Symbol.for("react.activity"),S=Symbol.for("react.client.reference"),A=E.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,O=Object.prototype.hasOwnProperty,B=Array.isArray,P=console.createTask?console.createTask:function(){return null};E={react_stack_bottom_frame:function(e){return e()}};var s,k={},l=E.react_stack_bottom_frame.bind(E,d)(),v=P(m(d)),w={};D.Fragment=b,D.jsx=function(e,r,a){var i=1e4>A.recentlyCreatedOwnerStacks++;return M(e,r,a,!1,i?Error("react-stack-top-frame"):l,i?P(m(e)):v)},D.jsxs=function(e,r,a){var i=1e4>A.recentlyCreatedOwnerStacks++;return M(e,r,a,!0,i?Error("react-stack-top-frame"):l,i?P(m(e)):v)}})()),D}var re;function ae(){return re||(re=1,process.env.NODE_ENV==="production"?W.exports=ne():W.exports=se()),W.exports}var n=ae();const oe=["일","월","화","수","목","금","토"],le=["월","화","수","목","금","토","일"];function ce(t,f){const o=new Date(t),m=o.getDay(),c=f==="mon"?(m+6)%7:m;return o.setDate(o.getDate()-c),o.setHours(0,0,0,0),o}function V(t,f){const o=new Date(t);return o.setDate(o.getDate()+f),o}function ie(t,f){return t.getFullYear()===f.getFullYear()&&t.getMonth()===f.getMonth()&&t.getDate()===f.getDate()}function Q(t){return t.toString().padStart(2,"0")}function ue(t){return t.getFullYear()+"."+Q(t.getMonth()+1)}function fe(t){const f=["일","월","화","수","목","금","토"][t.getDay()];return t.getFullYear()+"."+Q(t.getMonth()+1)+"."+Q(t.getDate())+" ("+f+")"}const de=()=>n.jsx("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",children:n.jsx("path",{d:"M15 18L9 12L15 6",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})}),me=()=>n.jsx("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",children:n.jsx("path",{d:"M9 18L15 12L9 6",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})});function ke({leftHeader:t,rightHeader:f,initialDate:o,renderDayContent:m,startOfWeek:c="sun",onWeekChange:d,onDateClick:_,showEmptyDays:g=!0,emptyWeekData:I,anchorDateProp:p,onAnchorDateChange:M,scrollToDateOnClick:Y=!0}){const N=h.useMemo(()=>new Date,[]),E=p!==void 0,[T,F]=h.useState(p?new Date(p):o?new Date(o):N),b=h.useMemo(()=>E?new Date(p):T,[E,p,T]),L=s=>{E?M?.(s):F(s)};h.useEffect(()=>{if(E||!o)return;const s=new Date(o);T.getTime()!==s.getTime()&&F(s)},[o,E,T]);const R=h.useMemo(()=>ce(b,c),[b,c]),x=h.useMemo(()=>Array.from({length:7},(s,k)=>V(R,k)),[R]),q=c==="mon"?le:oe,J=c==="sun"?0:6,z=c==="sun"?6:5,G=x[3],X=ue(G),j=h.useMemo(()=>V(R,6),[R]),$=h.useRef(d);h.useEffect(()=>{$.current=d},[d]),h.useEffect(()=>{$.current?.(R,j)},[R,j]);const S=h.useRef(new Map),A=s=>{const k=s.toISOString(),l=S.current.get(k);if(l)l.scrollIntoView({behavior:"smooth",block:"start"});else{const v=Array.from(S.current.keys()).map(w=>new Date(w)).sort((w,e)=>Math.abs(w.getTime()-s.getTime())-Math.abs(e.getTime()-s.getTime()));v.length>0&&S.current.get(v[0].toISOString())?.scrollIntoView({behavior:"smooth",block:"start"})}},O=s=>{_?.(s),Y&&A(s)},B=()=>L(V(b,-7)),P=()=>L(V(b,7));return n.jsxs("div",{className:"wk-wrapper",children:[n.jsxs("div",{className:"wk-header",children:[n.jsx("div",{className:"wk-header-side wk-left",children:t}),n.jsxs("div",{className:"wk-header-center",children:[n.jsx("button",{className:"wk-nav-btn","aria-label":"이전 주",onClick:B,children:n.jsx(de,{})}),n.jsx("span",{className:"wk-year-month",children:X}),n.jsx("button",{className:"wk-nav-btn","aria-label":"다음 주",onClick:P,children:n.jsx(me,{})})]}),n.jsx("div",{className:"wk-header-side wk-right",children:f})]}),n.jsx("div",{className:"wk-weekbar",children:q.map((s,k)=>{const l=k===J,v=k===z,w="wk-weekbar-col "+(v?"wk-sat":l?"wk-sun":""),e="wk-weekbar-date "+(ie(x[k],N)?"wk-today ":"")+(v?"wk-sat":l?" wk-sun":"");return n.jsxs("div",{className:w,children:[n.jsx("div",{className:"wk-weekbar-label",children:s}),n.jsx("div",{className:e+(_?" wk-clickable":""),onClick:()=>O(x[k]),role:"button",tabIndex:0,"aria-label":"Select date",children:x[k].getDate()})]},s)})}),n.jsx("div",{className:"wk-weeklist",children:(()=>{const s=x.map(l=>({date:l,content:m?m(l):n.jsx("div",{children:"sample html"})}));return!!m&&s.every(l=>l.content===null||l.content===void 0)&&I?n.jsx("div",{className:"wk-weeklist-empty",children:I}):s.map(({date:l,content:v})=>!g&&m&&v==null?null:n.jsxs("div",{className:"wk-weeklist-row",ref:w=>{w?S.current.set(l.toISOString(),w):S.current.delete(l.toISOString())},children:[n.jsxs("div",{className:"wk-weeklist-date-row",onClick:()=>O(l),children:[n.jsx("div",{className:"wk-weeklist-date-text",children:fe(l)}),n.jsx("div",{className:"wk-divider","aria-hidden":"true"})]}),n.jsx("div",{className:"wk-weeklist-content",children:v??null})]},l.toISOString()))})()})]})}exports.WeekCalendar=ke; //# sourceMappingURL=WeekCalendar-Cnf3Ub1v.cjs.map