@jenesei-software/jenesei-kit-react 2.0.0 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/{AnimatePresence-BByJ67dn.js → AnimatePresence-19yP-TCg.js} +2 -2
- package/build/{AnimatePresence-BByJ67dn.js.map → AnimatePresence-19yP-TCg.js.map} +1 -1
- package/build/{AnimatePresence-BtUPiqYm.cjs → AnimatePresence-BdBJCJuf.cjs} +2 -2
- package/build/{AnimatePresence-BtUPiqYm.cjs.map → AnimatePresence-BdBJCJuf.cjs.map} +1 -1
- package/build/area-outside.cjs.js +1 -1
- package/build/area-outside.es.js +1 -1
- package/build/area-preview.cjs.js +1 -1
- package/build/area-preview.es.js +1 -1
- package/build/area-skeleton.cjs.js +1 -1
- package/build/area-skeleton.es.js +1 -1
- package/build/build-info.txt +3 -3
- package/build/{button-D8zdhI-0.js → button-BbGiFvok.js} +2 -2
- package/build/{button-D8zdhI-0.js.map → button-BbGiFvok.js.map} +1 -1
- package/build/{button-C5PgNYns.cjs → button-BuPpgfL_.cjs} +2 -2
- package/build/{button-C5PgNYns.cjs.map → button-BuPpgfL_.cjs.map} +1 -1
- package/build/{checkbox-Ba0-4wxk.js → checkbox-CXxWDklX.js} +3 -3
- package/build/{checkbox-Ba0-4wxk.js.map → checkbox-CXxWDklX.js.map} +1 -1
- package/build/{checkbox-BtkbSjHq.cjs → checkbox-qgc_Ntc3.cjs} +2 -2
- package/build/{checkbox-BtkbSjHq.cjs.map → checkbox-qgc_Ntc3.cjs.map} +1 -1
- package/build/chunk-Dd8m0Ver.cjs +1 -0
- package/build/{chunk-D1xtDmiO.js → chunk-cI0lbGMq.js} +7 -7
- package/build/{component-6HgOL-7c.js → component-BHyXT2-h.js} +2 -2
- package/build/{component-6HgOL-7c.js.map → component-BHyXT2-h.js.map} +1 -1
- package/build/component-button.cjs.js +1 -1
- package/build/component-button.es.js +1 -1
- package/build/component-checkbox.cjs.js +1 -1
- package/build/component-checkbox.es.js +1 -1
- package/build/component-date-picker.cjs.js +1 -1
- package/build/component-date-picker.es.js +1 -1
- package/build/component-icon.cjs.js +1 -1
- package/build/component-icon.es.js +1 -1
- package/build/component-input-otp.cjs.js +1 -1
- package/build/component-input-otp.es.js +1 -1
- package/build/component-input.cjs.js +1 -1
- package/build/component-input.es.js +1 -1
- package/build/{component-BjdeqpEq.cjs → component-jsn2T8Hu.cjs} +2 -2
- package/build/{component-BjdeqpEq.cjs.map → component-jsn2T8Hu.cjs.map} +1 -1
- package/build/component-pagination.cjs.js +1 -1
- package/build/component-pagination.es.js +1 -1
- package/build/component-popover.cjs.js +1 -1
- package/build/component-select.cjs.js +1 -1
- package/build/component-select.es.js +1 -1
- package/build/component-separator.cjs.js +1 -1
- package/build/component-stack.cjs.js +1 -1
- package/build/component-stack.es.js +1 -1
- package/build/component-textarea.cjs.js +1 -1
- package/build/component-textarea.es.js +1 -1
- package/build/component-toggle.cjs.js +1 -1
- package/build/component-toggle.es.js +1 -1
- package/build/component-tooltip.cjs.js +1 -1
- package/build/component-typography.cjs.js +1 -1
- package/build/components-error.cjs.js +1 -1
- package/build/components-error.es.js +1 -1
- package/build/{context-app-4_kY3Qcd.js → context-app-CMK9g6MI.js} +4 -4
- package/build/{context-app-4_kY3Qcd.js.map → context-app-CMK9g6MI.js.map} +1 -1
- package/build/{context-app-DKsS6_WR.cjs → context-app-HhFcx1wY.cjs} +2 -2
- package/build/{context-app-DKsS6_WR.cjs.map → context-app-HhFcx1wY.cjs.map} +1 -1
- package/build/context-app.cjs.js +1 -1
- package/build/context-app.es.js +1 -1
- package/build/{context-browser-theme-CPhqqRUP.js → context-browser-theme-Cb6siWO0.js} +2 -2
- package/build/{context-browser-theme-CPhqqRUP.js.map → context-browser-theme-Cb6siWO0.js.map} +1 -1
- package/build/{context-browser-theme-o9geUlSH.cjs → context-browser-theme-Cso_rAT5.cjs} +2 -2
- package/build/{context-browser-theme-o9geUlSH.cjs.map → context-browser-theme-Cso_rAT5.cjs.map} +1 -1
- package/build/context-browser-theme.cjs.js +1 -1
- package/build/context-browser-theme.es.js +1 -1
- package/build/{context-cookie-CvTU44MD.cjs → context-cookie-Btkd2aXy.cjs} +2 -2
- package/build/{context-cookie-CvTU44MD.cjs.map → context-cookie-Btkd2aXy.cjs.map} +1 -1
- package/build/context-cookie.cjs.js +1 -1
- package/build/{context-dialog-CCnhd1EY.cjs → context-dialog-B67-_jMH.cjs} +2 -2
- package/build/{context-dialog-CCnhd1EY.cjs.map → context-dialog-B67-_jMH.cjs.map} +1 -1
- package/build/{context-dialog-HLeQ5WNn.js → context-dialog-CxGGmBqC.js} +5 -5
- package/build/{context-dialog-HLeQ5WNn.js.map → context-dialog-CxGGmBqC.js.map} +1 -1
- package/build/context-dialog.cjs.js +1 -1
- package/build/context-dialog.es.js +1 -1
- package/build/{context-geolocation-ffFFV4kn.cjs → context-geolocation-CV4hV0NX.cjs} +2 -2
- package/build/{context-geolocation-ffFFV4kn.cjs.map → context-geolocation-CV4hV0NX.cjs.map} +1 -1
- package/build/context-geolocation.cjs.js +1 -1
- package/build/{context-local-storage-kmxWNK_4.cjs → context-local-storage-DUKHVPAA.cjs} +2 -2
- package/build/{context-local-storage-kmxWNK_4.cjs.map → context-local-storage-DUKHVPAA.cjs.map} +1 -1
- package/build/context-local-storage.cjs.js +1 -1
- package/build/{context-permission-K3tWOiAx.cjs → context-permission-DrcIwK9y.cjs} +2 -2
- package/build/{context-permission-K3tWOiAx.cjs.map → context-permission-DrcIwK9y.cjs.map} +1 -1
- package/build/context-permission.cjs.js +1 -1
- package/build/{context-screen-width-CEsyIyg6.js → context-screen-width-CFexCIzV.js} +2 -2
- package/build/{context-screen-width-CEsyIyg6.js.map → context-screen-width-CFexCIzV.js.map} +1 -1
- package/build/{context-screen-width-ind6z7Ny.cjs → context-screen-width-hcRkxzy7.cjs} +2 -2
- package/build/{context-screen-width-ind6z7Ny.cjs.map → context-screen-width-hcRkxzy7.cjs.map} +1 -1
- package/build/context-screen-width.cjs.js +1 -1
- package/build/context-screen-width.es.js +1 -1
- package/build/{context-sonner-L0OMEvZE.cjs → context-sonner-4gBa1F7G.cjs} +2 -2
- package/build/{context-sonner-L0OMEvZE.cjs.map → context-sonner-4gBa1F7G.cjs.map} +1 -1
- package/build/{context-sonner-Bniiz914.js → context-sonner-qDPLFpD5.js} +6 -6
- package/build/{context-sonner-Bniiz914.js.map → context-sonner-qDPLFpD5.js.map} +1 -1
- package/build/context-sonner.cjs.js +1 -1
- package/build/context-sonner.es.js +1 -1
- package/build/{date-picker-CQUe3ZXt.cjs → date-picker-CPNNIEa-.cjs} +2 -2
- package/build/{date-picker-CQUe3ZXt.cjs.map → date-picker-CPNNIEa-.cjs.map} +1 -1
- package/build/{date-picker-z3LcE7Ab.js → date-picker-Uuce_InW.js} +5 -5
- package/build/{date-picker-z3LcE7Ab.js.map → date-picker-Uuce_InW.js.map} +1 -1
- package/build/{dist-Dq_YJa2q.js → dist-BV0C3tLK.js} +2 -2
- package/build/{dist-Dq_YJa2q.js.map → dist-BV0C3tLK.js.map} +1 -1
- package/build/{dist-C8r_OdG1.cjs → dist-DswBAjW1.cjs} +2 -2
- package/build/{dist-C8r_OdG1.cjs.map → dist-DswBAjW1.cjs.map} +1 -1
- package/build/{error--kiPVmoi.cjs → error-DzkkNL2H.cjs} +2 -2
- package/build/{error--kiPVmoi.cjs.map → error-DzkkNL2H.cjs.map} +1 -1
- package/build/{error-D1UNY-0f.js → error-L2fvWcNv.js} +2 -2
- package/build/{error-D1UNY-0f.js.map → error-L2fvWcNv.js.map} +1 -1
- package/build/hooks-use-debounced-callback.cjs.js +1 -1
- package/build/hooks-use-deep-compare-memoize.cjs.js +1 -1
- package/build/hooks-use-deep-compare-memoize.es.js +2 -2
- package/build/hooks-use-deep-memo.cjs.js +1 -1
- package/build/hooks-use-deep-memo.es.js +2 -2
- package/build/hooks-use-merge-refs.cjs.js +1 -1
- package/build/hooks-use-overflowing-advanced.cjs.js +1 -1
- package/build/hooks-use-overflowing-in-container.cjs.js +1 -1
- package/build/hooks-use-overflowing.cjs.js +1 -1
- package/build/hooks-use-responsive-layout.cjs.js +1 -1
- package/build/hooks-use-responsive-layout.es.js +1 -1
- package/build/hooks-use-typography-styles.cjs.js +1 -1
- package/build/{icon-CreblPsB.cjs → icon-CoIQwke4.cjs} +2 -2
- package/build/{icon-CreblPsB.cjs.map → icon-CoIQwke4.cjs.map} +1 -1
- package/build/{icon-BG6R5Lfa.js → icon-DzAWOQJg.js} +2 -2
- package/build/{icon-BG6R5Lfa.js.map → icon-DzAWOQJg.js.map} +1 -1
- package/build/index.cjs.js +1 -1
- package/build/index.es.js +21 -21
- package/build/{input-DqMLnOz5.js → input-CV02F03L.js} +2 -2
- package/build/{input-DqMLnOz5.js.map → input-CV02F03L.js.map} +1 -1
- package/build/{input-otp-DPp3qmvI.js → input-otp-B9cYxJ7X.js} +3 -3
- package/build/{input-otp-DPp3qmvI.js.map → input-otp-B9cYxJ7X.js.map} +1 -1
- package/build/{input-otp-Z_wz6o6L.cjs → input-otp-BVRCfoRK.cjs} +2 -2
- package/build/{input-otp-Z_wz6o6L.cjs.map → input-otp-BVRCfoRK.cjs.map} +1 -1
- package/build/{input-CWcWWMCp.cjs → input-zXF5f99Z.cjs} +2 -2
- package/build/{input-CWcWWMCp.cjs.map → input-zXF5f99Z.cjs.map} +1 -1
- package/build/isEqual-DeC2HFe5.cjs +3 -0
- package/build/{isEqual-wc3RBuBi.cjs.map → isEqual-DeC2HFe5.cjs.map} +1 -1
- package/build/{isEqual-VCZu3vai.js → isEqual-Qb81B2zH.js} +4 -3
- package/build/{isEqual-VCZu3vai.js.map → isEqual-Qb81B2zH.js.map} +1 -1
- package/build/{motion-BeQRGZxW.cjs → motion-CAPq8wSn.cjs} +2 -2
- package/build/{motion-BeQRGZxW.cjs.map → motion-CAPq8wSn.cjs.map} +1 -1
- package/build/{motion-Ot_yGWVJ.js → motion-Dt6TyEjN.js} +3 -3
- package/build/{motion-Ot_yGWVJ.js.map → motion-Dt6TyEjN.js.map} +1 -1
- package/build/{outside-DJ1B9sBT.cjs → outside-B3nRnDGb.cjs} +2 -2
- package/build/{outside-DJ1B9sBT.cjs.map → outside-B3nRnDGb.cjs.map} +1 -1
- package/build/{outside-BtjOuCPD.js → outside-DpK1pI8b.js} +2 -2
- package/build/{outside-BtjOuCPD.js.map → outside-DpK1pI8b.js.map} +1 -1
- package/build/{pagination-BnvQ1aha.cjs → pagination-Dbs4Lrpt.cjs} +2 -2
- package/build/{pagination-BnvQ1aha.cjs.map → pagination-Dbs4Lrpt.cjs.map} +1 -1
- package/build/{pagination-CpaP3Svg.js → pagination-YXSjZsMZ.js} +5 -5
- package/build/{pagination-CpaP3Svg.js.map → pagination-YXSjZsMZ.js.map} +1 -1
- package/build/{popover-fte_EMYr.cjs → popover-CgwGn-55.cjs} +2 -2
- package/build/{popover-fte_EMYr.cjs.map → popover-CgwGn-55.cjs.map} +1 -1
- package/build/{preview-BvJN6QoV.js → preview-C_yFxoFH.js} +4 -4
- package/build/{preview-BvJN6QoV.js.map → preview-C_yFxoFH.js.map} +1 -1
- package/build/{preview-CG76AiC9.cjs → preview-dT7fmxcc.cjs} +2 -2
- package/build/{preview-CG76AiC9.cjs.map → preview-dT7fmxcc.cjs.map} +1 -1
- package/build/{proxy-D2Z8K6jr.cjs → proxy-_gZenxVU.cjs} +2 -2
- package/build/{proxy-D2Z8K6jr.cjs.map → proxy-_gZenxVU.cjs.map} +1 -1
- package/build/{proxy-DTLy-pV-.js → proxy-wCWa57J3.js} +2 -2
- package/build/{proxy-DTLy-pV-.js.map → proxy-wCWa57J3.js.map} +1 -1
- package/build/{select-BQtWzaxE.cjs → select-B0adRX2_.cjs} +4 -4
- package/build/{select-BQtWzaxE.cjs.map → select-B0adRX2_.cjs.map} +1 -1
- package/build/{select-B4JeEvIF.js → select-D7EyxR2l.js} +10 -10
- package/build/{select-B4JeEvIF.js.map → select-D7EyxR2l.js.map} +1 -1
- package/build/{separator-BXoT44nC.cjs → separator-CbeH8Lug.cjs} +2 -2
- package/build/{separator-BXoT44nC.cjs.map → separator-CbeH8Lug.cjs.map} +1 -1
- package/build/{skeleton-BOfnrUaI.cjs → skeleton-BoVFwt7y.cjs} +2 -2
- package/build/{skeleton-BOfnrUaI.cjs.map → skeleton-BoVFwt7y.cjs.map} +1 -1
- package/build/{skeleton-Bzr92XmL.js → skeleton-DNwTI6w0.js} +2 -2
- package/build/{skeleton-Bzr92XmL.js.map → skeleton-DNwTI6w0.js.map} +1 -1
- package/build/style-motion.cjs.js +1 -1
- package/build/style-motion.es.js +1 -1
- package/build/style-utils.cjs.js +1 -1
- package/build/{textarea-BRzorAFw.cjs → textarea-CbZSeqGR.cjs} +2 -2
- package/build/{textarea-BRzorAFw.cjs.map → textarea-CbZSeqGR.cjs.map} +1 -1
- package/build/{textarea-BssfjUe3.js → textarea-ChkjV_Ha.js} +2 -2
- package/build/{textarea-BssfjUe3.js.map → textarea-ChkjV_Ha.js.map} +1 -1
- package/build/{toggle-CCfZoBpW.js → toggle-I6YvEX4w.js} +2 -2
- package/build/{toggle-CCfZoBpW.js.map → toggle-I6YvEX4w.js.map} +1 -1
- package/build/{toggle-BFp9Nmas.cjs → toggle-gYw5FUp-.cjs} +2 -2
- package/build/{toggle-BFp9Nmas.cjs.map → toggle-gYw5FUp-.cjs.map} +1 -1
- package/build/{typography-whjfut7N.cjs → typography-DcxhX_9e.cjs} +2 -2
- package/build/{typography-whjfut7N.cjs.map → typography-DcxhX_9e.cjs.map} +1 -1
- package/package.json +1 -5
- package/build/chunk-CW3en5xf.cjs +0 -1
- package/build/isEqual-wc3RBuBi.cjs +0 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("./chunk-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("./chunk-Dd8m0Ver.cjs"),e=require("./context-screen-width-hcRkxzy7.cjs");exports.ProviderScreenWidth=e.ProviderScreenWidth;exports.useScreenWidth=e.useScreenWidth;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
const ae=require("./chunk-
|
|
1
|
+
const ae=require("./chunk-Dd8m0Ver.cjs"),P=require("./proxy-_gZenxVU.cjs"),B=require("./AnimatePresence-BdBJCJuf.cjs"),u=require("./utils-DtinAjAU.cjs"),H=require("./functions-Dwo54amB.cjs"),_=require("./icon-CoIQwke4.cjs"),z=require("./button-BuPpgfL_.cjs"),O=require("./dist-DswBAjW1.cjs"),M=require("./v4-BDi_Luux.cjs");let r=require("react/jsx-runtime"),i=require("react");var U=.04,F=.3;var G={content:"Undo",onClick:()=>{}},d=u.CSS_CLASS.context.sonner,W=d.layout,$=d.elementWrapper,K=d.content,Y=d.icon,J=d.contentTitle,Q=d.contentDescription,X=d.buttonWrapper,Z={"bottom-center":d.layoutBottomCenter,"bottom-left":d.layoutBottomLeft,"bottom-right":d.layoutBottomRight,"top-right":d.layoutTopRight,"top-left":d.layoutTopLeft,"top-center":d.layoutTopCenter},p=e=>H.setClasses([W,Z[e]]),ee=e=>({"--context-sonner-gap":`${e.gap}px`,"--context-sonner-z-index":`${e.zIndex??0}`}),ne=e=>{const t=u.CSS_VARS.genre.button[e];return{"--context-sonner-wrapper-background":t.background.index,"--context-sonner-wrapper-border-color":t.border.index,"--context-sonner-wrapper-box-shadow":e==="primary"||e==="secondary"?u.CSS_VARS.palette.shadowPrimaryLight:u.CSS_VARS.palette.shadowSecondaryLight,"--context-sonner-wrapper-box-shadow-hover":e==="primary"||e==="secondary"?u.CSS_VARS.palette.shadowSecondaryLight:u.CSS_VARS.palette.shadowPrimaryLight,"--context-sonner-icon-color":t.color.index,"--context-sonner-title-color":t.color.index,"--context-sonner-description-color":t.color.index}},k=O.createContext(null),te=e=>{const t=(0,i.useMemo)(()=>e.visibleToasts,[e.visibleToasts]),S=(0,i.useMemo)(()=>e?.default?.description,[e?.default?.description]),f=(0,i.useMemo)(()=>e?.default?.title,[e?.default?.title]),g=(0,i.useMemo)(()=>e?.default?.button,[e?.default?.button]),b=(0,i.useMemo)(()=>e?.default?.hidingTime,[e?.default?.hidingTime]),I=(0,i.useMemo)(()=>e?.default?.hidingMode??"clickOnButton",[e?.default?.hidingMode]),E=(0,i.useMemo)(()=>e?.default?.genre??"product",[e?.default?.genre]),w=(0,i.useMemo)(()=>e.position.includes("top"),[e.position]),[C,y]=(0,i.useState)([]),[R,L]=(0,i.useState)(!1),N=(0,i.useCallback)(()=>{L(!0)},[]),T=(0,i.useCallback)(()=>{L(!1)},[]),x=(0,i.useCallback)(n=>{y(a=>{const s=a.find(o=>o.id===n);if(!s)return a;const c=s.index,l=a.filter(o=>o.id!==n).map(o=>({...o,index:o.index>c?o.index-1:o.index}));return l.length===0&&T(),l})},[T]),m=(0,i.useCallback)(n=>{const a=n.id??M.v4(),s=n.hidingTime??b;y(c=>{const l=c.findIndex(h=>h.id===a);let o;if(l!==-1)o=[...c],o[l]={...n,id:a,index:c[l].index};else{o=c.map(v=>({...v,index:v.index+1}));const h={...n,id:a,index:0};o.unshift(h)}return o}),s!==void 0&&setTimeout(()=>{x(a)},s)},[b,x]),D=(0,i.useCallback)((n,a,s)=>{const c=M.v4();return m({...a,id:c,isLoading:!0}),n.then(l=>{m({...s(l,void 0),id:c})}).catch(l=>{m({...s(void 0,l),id:c})})},[m]),q=(0,i.useCallback)(n=>{x(n)},[x]);return(0,i.useEffect)(()=>()=>{y([])},[]),(0,r.jsxs)(k.Provider,{value:{toast:m,promise:D,remove:x,contentHistory:C},children:[(0,r.jsx)("div",{className:p(e.position),style:ee({gap:e.gap,zIndex:e.zIndex??100}),onMouseEnter:N,onMouseLeave:T,children:(0,r.jsx)(B.AnimatePresence,{children:C.map(n=>{const a=n.index,s=t?a>t:!1,c=t?a>t-1:!1,l=t?a===t-1:!1,o=n.genre??E,h=o,v=n.hidingMode??I,V="content"in n?n.content:!1,j="title"in n?n.title:!1,A="description"in n?n.description:!1;return(0,r.jsx)(oe,{isMoreThanLastViewIndexPlusOne:s,isMoreThanLastViewIndex:c,isLastViewIndex:l,isTop:w,id:n.id,icon:n.icon,isLoading:n.isLoading,index:a,buttonGenre:h,hidingMode:v,isHovered:R,genre:o,content:V,title:j||f,description:A||S,button:n.button??g??G,handleOnClick:q},n.id)})})}),e.children]})},ie=e=>(0,r.jsx)(P.motion.div,{layout:!0,initial:{opacity:0,scale:1,y:e.isLastViewIndex?e.isTop?100:-100:e.isTop?-100:100},animate:{y:0,opacity:e.isMoreThanLastViewIndex?0:1,pointerEvents:e.isMoreThanLastViewIndex?"none":"auto",display:e.isMoreThanLastViewIndex?"none":"flex",scale:e.isHovered?1:Math.max(1-e.index*U,.88),marginTop:e.isTop?e.isHovered||e.index===0?"0px":"-65px":"0px",marginBottom:e.isTop||e.isHovered||e.index===0?"0px":"-65px"},style:{zIndex:-e.index},whileInView:{opacity:e.isMoreThanLastViewIndex?0:1},exit:{opacity:0,y:e.isTop?-100:100},transition:{type:"spring",duration:F},children:(0,r.jsxs)("div",{className:$,style:ne(e.genre),role:e.hidingMode==="clickOnSonner"?"button":void 0,tabIndex:e.hidingMode==="clickOnSonner"?0:void 0,onClick:()=>e.hidingMode==="clickOnSonner"&&e.handleOnClick(e.id,"clickOnSonner"),onKeyDown:t=>{e.hidingMode==="clickOnSonner"&&(t.key==="Enter"||t.key===" ")&&(t.preventDefault(),e.handleOnClick(e.id,"clickOnSonner"))},children:[(e.isLoading||e.icon)&&(0,r.jsx)("div",{className:Y,children:e.isLoading?(0,r.jsx)(_.Icon,{size:"medium",type:"loading",name:"Line"}):e.icon&&(0,r.jsx)(_.Icon,{...e.icon,size:e.icon.size??"medium"})}),(0,r.jsx)("div",{className:K,children:e.content?e.content:(0,r.jsxs)(r.Fragment,{children:[e.title&&(0,r.jsx)("div",{className:J,children:e.title}),e.description&&(0,r.jsx)("div",{className:Q,children:e.description})]})}),e.button&&"content"in e.button&&e.button?.content&&(0,r.jsx)("div",{className:X,children:(0,r.jsx)(z.Button,{genre:e.buttonGenre,size:"small",onClick:()=>e.hidingMode==="clickOnButton"&&e.handleOnClick(e.id,"clickOnButton"),children:e.button.content})})]})},e.id),oe=(0,i.memo)(ie),re=e=>{const t=O.useContextSelector(k,S=>S?e.reduce((f,g)=>(f[g]=S[g],f),{}):null);if(!t)throw new Error("useSonner must be used within an ProviderSonner");return t};Object.defineProperty(exports,"ProviderSonner",{enumerable:!0,get:function(){return te}});Object.defineProperty(exports,"useSonner",{enumerable:!0,get:function(){return re}});
|
|
2
2
|
|
|
3
|
-
//# sourceMappingURL=context-sonner-
|
|
3
|
+
//# sourceMappingURL=context-sonner-4gBa1F7G.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-sonner-L0OMEvZE.cjs","names":[],"sources":["../src/contexts/context-sonner/context.constants.ts","../src/contexts/context-sonner/context.styles.tsx","../src/contexts/context-sonner/context.tsx","../src/contexts/context-sonner/context.hooks.ts"],"sourcesContent":["import { IThemeGenreSonner } from '@local/styles/utils/types';\n\nimport { ISonnerProvider } from './context.types';\n\nexport const DEFAULT_PROVIDER_SONNER_Z_INDEX = 100;\nexport const DEFAULT_PROVIDER_SONNER_SCALE = 0.04;\nexport const DEFAULT_PROVIDER_SONNER_Y = 100;\nexport const DEFAULT_PROVIDER_SONNER_DURATION = 0.3;\nexport const DEFAULT_PROVIDER_SONNER_GENRE: IThemeGenreSonner = 'product';\nexport const DEFAULT_PROVIDER_SONNER_MARGIN_BOTTOM = 65;\nexport const DEFAULT_PROVIDER_SONNER_BUTTON: ISonnerProvider['default']['button'] = {\n content: 'Undo',\n onClick: () => {},\n};\n","import { CSS_CLASS, CSS_VARS } from '@local/styles/utils';\nimport { setClasses } from '@local/styles/utils/functions';\nimport { IThemeGenreSonner } from '@local/styles/utils/types';\n\nimport { CSSProperties } from 'react';\n\nimport { ISonnerProvider } from './context.types';\n\nexport const SonnerClass = CSS_CLASS.context.sonner;\n\nexport const SonnerLayout = SonnerClass.layout;\nexport const SonnerElementWrapper = SonnerClass.elementWrapper;\nexport const SonnerContent = SonnerClass.content;\nexport const SonnerIcon = SonnerClass.icon;\nexport const SonnerContentTitle = SonnerClass.contentTitle;\nexport const SonnerContentDescription = SonnerClass.contentDescription;\nexport const SonnerButtonWrapper = SonnerClass.buttonWrapper;\n\nconst SONNER_LAYOUT_POSITION_CLASS: Record<ISonnerProvider['position'], string> = {\n 'bottom-center': SonnerClass.layoutBottomCenter,\n 'bottom-left': SonnerClass.layoutBottomLeft,\n 'bottom-right': SonnerClass.layoutBottomRight,\n 'top-right': SonnerClass.layoutTopRight,\n 'top-left': SonnerClass.layoutTopLeft,\n 'top-center': SonnerClass.layoutTopCenter,\n};\n\ntype ISonnerStyleWithVars = CSSProperties & Record<string, string>;\n\nexport const getSonnerLayoutClassName = (position: ISonnerProvider['position']) =>\n setClasses([SonnerLayout, SONNER_LAYOUT_POSITION_CLASS[position]]);\n\nexport const getSonnerLayoutStyle = (props: Pick<ISonnerProvider, 'gap' | 'zIndex'>): ISonnerStyleWithVars => ({\n '--context-sonner-gap': `${props.gap}px`,\n '--context-sonner-z-index': `${props.zIndex ?? 0}`,\n});\n\nexport const getSonnerElementWrapperStyle = (genre: IThemeGenreSonner): ISonnerStyleWithVars => {\n const genreTheme = CSS_VARS.genre.button[genre];\n\n return {\n '--context-sonner-wrapper-background': genreTheme.background.index,\n '--context-sonner-wrapper-border-color': genreTheme.border.index,\n '--context-sonner-wrapper-box-shadow':\n genre === 'primary' || genre === 'secondary'\n ? CSS_VARS.palette.shadowPrimaryLight\n : CSS_VARS.palette.shadowSecondaryLight,\n '--context-sonner-wrapper-box-shadow-hover':\n genre === 'primary' || genre === 'secondary'\n ? CSS_VARS.palette.shadowSecondaryLight\n : CSS_VARS.palette.shadowPrimaryLight,\n '--context-sonner-icon-color': genreTheme.color.index,\n '--context-sonner-title-color': genreTheme.color.index,\n '--context-sonner-description-color': genreTheme.color.index,\n };\n};\n","import { Button } from '@local/components/button';\nimport { Icon } from '@local/components/icon';\n\nimport { AnimatePresence, motion } from 'framer-motion';\nimport { FC, memo, useCallback, useEffect, useMemo, useState } from 'react';\nimport { createContext } from 'use-context-selector';\nimport { v4 as uuidv4 } from 'uuid';\n\nimport {\n DEFAULT_PROVIDER_SONNER_BUTTON,\n DEFAULT_PROVIDER_SONNER_DURATION,\n DEFAULT_PROVIDER_SONNER_GENRE,\n DEFAULT_PROVIDER_SONNER_MARGIN_BOTTOM,\n DEFAULT_PROVIDER_SONNER_SCALE,\n DEFAULT_PROVIDER_SONNER_Y,\n DEFAULT_PROVIDER_SONNER_Z_INDEX,\n} from './context.constants';\nimport {\n getSonnerElementWrapperStyle,\n getSonnerLayoutClassName,\n getSonnerLayoutStyle,\n SonnerButtonWrapper,\n SonnerContent,\n SonnerContentDescription,\n SonnerContentTitle,\n SonnerElementWrapper,\n SonnerIcon,\n} from './context.styles';\nimport {\n ISonnerContent,\n ISonnerContentStandard,\n ISonnerContext,\n ISonnerElement,\n ISonnerProvider,\n} from './context.types';\n\nexport const SonnerContext = createContext<ISonnerContext | null>(null);\n\nexport const ProviderSonner: FC<ISonnerProvider> = (props) => {\n const memoVisibleToasts: ISonnerProvider['visibleToasts'] = useMemo(() => props.visibleToasts, [props.visibleToasts]);\n const memoDefaultDescription: ISonnerProvider['default']['description'] = useMemo(\n () => props?.default?.description,\n [props?.default?.description],\n );\n const memoDefaultTitle: ISonnerProvider['default']['title'] = useMemo(\n () => props?.default?.title,\n [props?.default?.title],\n );\n const memoDefaultButton: ISonnerProvider['default']['button'] = useMemo(\n () => props?.default?.button,\n [props?.default?.button],\n );\n const memoDefaultHidingTime: ISonnerProvider['default']['hidingTime'] = useMemo(\n () => props?.default?.hidingTime,\n [props?.default?.hidingTime],\n );\n const memoDefaultHidingMode: ISonnerProvider['default']['hidingMode'] = useMemo(\n () => props?.default?.hidingMode ?? 'clickOnButton',\n [props?.default?.hidingMode],\n );\n const memoDefaultGenre = useMemo(\n () => props?.default?.genre ?? DEFAULT_PROVIDER_SONNER_GENRE,\n [props?.default?.genre],\n );\n\n const isTop = useMemo(() => props.position.includes('top'), [props.position]);\n\n const [contentHistory, setContentHistory] = useState<ISonnerContent[]>([]);\n\n const [isHovered, setIsHovered] = useState(false);\n\n const handleMouseEnter = useCallback(() => {\n setIsHovered(true);\n }, []);\n\n const handleMouseLeave = useCallback(() => {\n setIsHovered(false);\n }, []);\n\n const remove: ISonnerContext['remove'] = useCallback(\n (id) => {\n setContentHistory((prev) => {\n const itemToRemove = prev.find((item) => item.id === id);\n\n if (!itemToRemove) return prev;\n\n const indexToRemove = itemToRemove.index;\n\n const updatedHistory = prev\n .filter((item) => item.id !== id)\n .map((item) => ({\n ...item,\n index: item.index > indexToRemove ? item.index - 1 : item.index,\n }));\n\n if (updatedHistory.length === 0) handleMouseLeave();\n\n return updatedHistory;\n });\n },\n [handleMouseLeave],\n );\n\n const toast: ISonnerContext['toast'] = useCallback(\n (content) => {\n const id = content.id ?? uuidv4();\n\n const hidingTime = content.hidingTime ?? memoDefaultHidingTime;\n\n setContentHistory((prev) => {\n const existingIndex = prev.findIndex((item) => item.id === id);\n\n let updatedHistory: ISonnerContent[];\n if (existingIndex !== -1) {\n // Replace existing item\n updatedHistory = [...prev];\n updatedHistory[existingIndex] = { ...content, id, index: prev[existingIndex].index };\n } else {\n // Add new item\n updatedHistory = prev.map((item) => ({\n ...item,\n index: item.index + 1,\n }));\n const newContent = { ...content, id, index: 0 };\n updatedHistory.unshift(newContent);\n }\n\n return updatedHistory;\n });\n\n if (hidingTime !== undefined) {\n setTimeout(() => {\n remove(id);\n }, hidingTime);\n }\n },\n [memoDefaultHidingTime, remove],\n );\n\n const promise: ISonnerContext['promise'] = useCallback(\n <T,>(\n promise: Promise<T>,\n expectation: Omit<ISonnerContent, 'index'>,\n localToast: (success: T | undefined, error: unknown | undefined) => Omit<ISonnerContent, 'index'>,\n ) => {\n const id = uuidv4();\n toast({ ...expectation, id, isLoading: true });\n\n return promise\n .then((result) => {\n toast({ ...localToast(result, undefined), id });\n })\n .catch((error) => {\n toast({ ...localToast(undefined, error), id });\n });\n },\n [toast],\n );\n\n const handleOnClick = useCallback(\n (id: ISonnerContentStandard['id']) => {\n remove(id);\n },\n [remove],\n );\n\n useEffect(() => {\n return () => {\n setContentHistory([]);\n };\n }, []);\n return (\n <SonnerContext.Provider value={{ toast, promise, remove, contentHistory }}>\n <div\n className={getSonnerLayoutClassName(props.position)}\n style={getSonnerLayoutStyle({\n gap: props.gap,\n zIndex: props.zIndex ?? DEFAULT_PROVIDER_SONNER_Z_INDEX,\n })}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n <AnimatePresence>\n {contentHistory.map((content) => {\n const index = content.index;\n const isMoreThanLastViewIndexPlusOne = memoVisibleToasts ? index > memoVisibleToasts : false;\n const isMoreThanLastViewIndex = memoVisibleToasts ? index > memoVisibleToasts - 1 : false;\n const isLastViewIndex = memoVisibleToasts ? index === memoVisibleToasts - 1 : false;\n const localGenre = content.genre ?? memoDefaultGenre;\n const buttonGenre = localGenre;\n const hidingMode = content.hidingMode ?? memoDefaultHidingMode;\n\n const localContent = 'content' in content ? content.content : false;\n const localTitle = 'title' in content ? content.title : false;\n const localDescription = 'description' in content ? content.description : false;\n return (\n <MemoizedSonnerElement\n isMoreThanLastViewIndexPlusOne={isMoreThanLastViewIndexPlusOne}\n isMoreThanLastViewIndex={isMoreThanLastViewIndex}\n isLastViewIndex={isLastViewIndex}\n isTop={isTop}\n key={content.id}\n id={content.id}\n icon={content.icon}\n isLoading={content.isLoading}\n index={index}\n buttonGenre={buttonGenre}\n hidingMode={hidingMode}\n isHovered={isHovered}\n genre={localGenre}\n content={localContent}\n title={localTitle || memoDefaultTitle}\n description={localDescription || memoDefaultDescription}\n button={content.button ?? memoDefaultButton ?? DEFAULT_PROVIDER_SONNER_BUTTON}\n handleOnClick={handleOnClick}\n />\n );\n })}\n </AnimatePresence>\n </div>\n {props.children}\n </SonnerContext.Provider>\n );\n};\n\nconst SonnerElement = (props: ISonnerElement) => {\n return (\n <motion.div\n key={props.id}\n layout\n initial={{\n opacity: 0,\n scale: 1,\n y: props.isLastViewIndex\n ? !props.isTop\n ? -DEFAULT_PROVIDER_SONNER_Y\n : DEFAULT_PROVIDER_SONNER_Y\n : !props.isTop\n ? DEFAULT_PROVIDER_SONNER_Y\n : -DEFAULT_PROVIDER_SONNER_Y,\n }}\n animate={{\n y: 0,\n opacity: props.isMoreThanLastViewIndex ? 0 : 1,\n pointerEvents: props.isMoreThanLastViewIndex ? 'none' : 'auto',\n display: props.isMoreThanLastViewIndex ? 'none' : 'flex',\n scale: !props.isHovered ? Math.max(1 - props.index * DEFAULT_PROVIDER_SONNER_SCALE, 0.88) : 1,\n marginTop: props.isTop\n ? props.isHovered || props.index === 0\n ? `0px`\n : `-${DEFAULT_PROVIDER_SONNER_MARGIN_BOTTOM}px`\n : '0px',\n marginBottom: !props.isTop\n ? props.isHovered || props.index === 0\n ? `0px`\n : `-${DEFAULT_PROVIDER_SONNER_MARGIN_BOTTOM}px`\n : '0px',\n }}\n style={{\n zIndex: -props.index,\n }}\n whileInView={{ opacity: props.isMoreThanLastViewIndex ? 0 : 1 }}\n exit={{ opacity: 0, y: !props.isTop ? DEFAULT_PROVIDER_SONNER_Y : -DEFAULT_PROVIDER_SONNER_Y }}\n transition={{ type: 'spring', duration: DEFAULT_PROVIDER_SONNER_DURATION }}\n >\n <div\n className={SonnerElementWrapper}\n style={getSonnerElementWrapperStyle(props.genre)}\n role={props.hidingMode === 'clickOnSonner' ? 'button' : undefined}\n tabIndex={props.hidingMode === 'clickOnSonner' ? 0 : undefined}\n onClick={() => props.hidingMode === 'clickOnSonner' && props.handleOnClick(props.id, 'clickOnSonner')}\n onKeyDown={(event) => {\n if (props.hidingMode !== 'clickOnSonner') return;\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n props.handleOnClick(props.id, 'clickOnSonner');\n }\n }}\n >\n {(props.isLoading || props.icon) && (\n <div className={SonnerIcon}>\n {props.isLoading ? (\n <Icon size='medium' type='loading' name='Line' />\n ) : (\n props.icon && <Icon {...props.icon} size={props.icon.size ?? 'medium'} />\n )}\n </div>\n )}\n <div className={SonnerContent}>\n {props.content ? (\n props.content\n ) : (\n <>\n {props.title && <div className={SonnerContentTitle}>{props.title}</div>}\n {props.description && <div className={SonnerContentDescription}>{props.description}</div>}\n </>\n )}\n </div>\n\n {props.button && 'content' in props.button && props.button?.content && (\n <div className={SonnerButtonWrapper}>\n <Button\n genre={props.buttonGenre}\n size='small'\n onClick={() => props.hidingMode === 'clickOnButton' && props.handleOnClick(props.id, 'clickOnButton')}\n >\n {props.button.content}\n </Button>\n </div>\n )}\n </div>\n </motion.div>\n );\n};\nconst MemoizedSonnerElement = memo(SonnerElement);\n","import { useContextSelector } from 'use-context-selector';\n\nimport { SonnerContext } from './context';\nimport { ISonnerContext, IUseSonnerDependencies } from './context.types';\n\nexport const useSonner = (props: IUseSonnerDependencies): ISonnerContext => {\n const context = useContextSelector(SonnerContext, (v) => {\n return v\n ? props.reduce((acc, prop) => {\n acc[prop] = v[prop];\n return acc;\n }, {} as any)\n : null;\n });\n if (!context) {\n throw new Error('useSonner must be used within an ProviderSonner');\n }\n return context;\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"context-sonner-4gBa1F7G.cjs","names":[],"sources":["../src/contexts/context-sonner/context.constants.ts","../src/contexts/context-sonner/context.styles.tsx","../src/contexts/context-sonner/context.tsx","../src/contexts/context-sonner/context.hooks.ts"],"sourcesContent":["import { IThemeGenreSonner } from '@local/styles/utils/types';\n\nimport { ISonnerProvider } from './context.types';\n\nexport const DEFAULT_PROVIDER_SONNER_Z_INDEX = 100;\nexport const DEFAULT_PROVIDER_SONNER_SCALE = 0.04;\nexport const DEFAULT_PROVIDER_SONNER_Y = 100;\nexport const DEFAULT_PROVIDER_SONNER_DURATION = 0.3;\nexport const DEFAULT_PROVIDER_SONNER_GENRE: IThemeGenreSonner = 'product';\nexport const DEFAULT_PROVIDER_SONNER_MARGIN_BOTTOM = 65;\nexport const DEFAULT_PROVIDER_SONNER_BUTTON: ISonnerProvider['default']['button'] = {\n content: 'Undo',\n onClick: () => {},\n};\n","import { CSS_CLASS, CSS_VARS } from '@local/styles/utils';\nimport { setClasses } from '@local/styles/utils/functions';\nimport { IThemeGenreSonner } from '@local/styles/utils/types';\n\nimport { CSSProperties } from 'react';\n\nimport { ISonnerProvider } from './context.types';\n\nexport const SonnerClass = CSS_CLASS.context.sonner;\n\nexport const SonnerLayout = SonnerClass.layout;\nexport const SonnerElementWrapper = SonnerClass.elementWrapper;\nexport const SonnerContent = SonnerClass.content;\nexport const SonnerIcon = SonnerClass.icon;\nexport const SonnerContentTitle = SonnerClass.contentTitle;\nexport const SonnerContentDescription = SonnerClass.contentDescription;\nexport const SonnerButtonWrapper = SonnerClass.buttonWrapper;\n\nconst SONNER_LAYOUT_POSITION_CLASS: Record<ISonnerProvider['position'], string> = {\n 'bottom-center': SonnerClass.layoutBottomCenter,\n 'bottom-left': SonnerClass.layoutBottomLeft,\n 'bottom-right': SonnerClass.layoutBottomRight,\n 'top-right': SonnerClass.layoutTopRight,\n 'top-left': SonnerClass.layoutTopLeft,\n 'top-center': SonnerClass.layoutTopCenter,\n};\n\ntype ISonnerStyleWithVars = CSSProperties & Record<string, string>;\n\nexport const getSonnerLayoutClassName = (position: ISonnerProvider['position']) =>\n setClasses([SonnerLayout, SONNER_LAYOUT_POSITION_CLASS[position]]);\n\nexport const getSonnerLayoutStyle = (props: Pick<ISonnerProvider, 'gap' | 'zIndex'>): ISonnerStyleWithVars => ({\n '--context-sonner-gap': `${props.gap}px`,\n '--context-sonner-z-index': `${props.zIndex ?? 0}`,\n});\n\nexport const getSonnerElementWrapperStyle = (genre: IThemeGenreSonner): ISonnerStyleWithVars => {\n const genreTheme = CSS_VARS.genre.button[genre];\n\n return {\n '--context-sonner-wrapper-background': genreTheme.background.index,\n '--context-sonner-wrapper-border-color': genreTheme.border.index,\n '--context-sonner-wrapper-box-shadow':\n genre === 'primary' || genre === 'secondary'\n ? CSS_VARS.palette.shadowPrimaryLight\n : CSS_VARS.palette.shadowSecondaryLight,\n '--context-sonner-wrapper-box-shadow-hover':\n genre === 'primary' || genre === 'secondary'\n ? CSS_VARS.palette.shadowSecondaryLight\n : CSS_VARS.palette.shadowPrimaryLight,\n '--context-sonner-icon-color': genreTheme.color.index,\n '--context-sonner-title-color': genreTheme.color.index,\n '--context-sonner-description-color': genreTheme.color.index,\n };\n};\n","import { Button } from '@local/components/button';\nimport { Icon } from '@local/components/icon';\n\nimport { AnimatePresence, motion } from 'framer-motion';\nimport { FC, memo, useCallback, useEffect, useMemo, useState } from 'react';\nimport { createContext } from 'use-context-selector';\nimport { v4 as uuidv4 } from 'uuid';\n\nimport {\n DEFAULT_PROVIDER_SONNER_BUTTON,\n DEFAULT_PROVIDER_SONNER_DURATION,\n DEFAULT_PROVIDER_SONNER_GENRE,\n DEFAULT_PROVIDER_SONNER_MARGIN_BOTTOM,\n DEFAULT_PROVIDER_SONNER_SCALE,\n DEFAULT_PROVIDER_SONNER_Y,\n DEFAULT_PROVIDER_SONNER_Z_INDEX,\n} from './context.constants';\nimport {\n getSonnerElementWrapperStyle,\n getSonnerLayoutClassName,\n getSonnerLayoutStyle,\n SonnerButtonWrapper,\n SonnerContent,\n SonnerContentDescription,\n SonnerContentTitle,\n SonnerElementWrapper,\n SonnerIcon,\n} from './context.styles';\nimport {\n ISonnerContent,\n ISonnerContentStandard,\n ISonnerContext,\n ISonnerElement,\n ISonnerProvider,\n} from './context.types';\n\nexport const SonnerContext = createContext<ISonnerContext | null>(null);\n\nexport const ProviderSonner: FC<ISonnerProvider> = (props) => {\n const memoVisibleToasts: ISonnerProvider['visibleToasts'] = useMemo(() => props.visibleToasts, [props.visibleToasts]);\n const memoDefaultDescription: ISonnerProvider['default']['description'] = useMemo(\n () => props?.default?.description,\n [props?.default?.description],\n );\n const memoDefaultTitle: ISonnerProvider['default']['title'] = useMemo(\n () => props?.default?.title,\n [props?.default?.title],\n );\n const memoDefaultButton: ISonnerProvider['default']['button'] = useMemo(\n () => props?.default?.button,\n [props?.default?.button],\n );\n const memoDefaultHidingTime: ISonnerProvider['default']['hidingTime'] = useMemo(\n () => props?.default?.hidingTime,\n [props?.default?.hidingTime],\n );\n const memoDefaultHidingMode: ISonnerProvider['default']['hidingMode'] = useMemo(\n () => props?.default?.hidingMode ?? 'clickOnButton',\n [props?.default?.hidingMode],\n );\n const memoDefaultGenre = useMemo(\n () => props?.default?.genre ?? DEFAULT_PROVIDER_SONNER_GENRE,\n [props?.default?.genre],\n );\n\n const isTop = useMemo(() => props.position.includes('top'), [props.position]);\n\n const [contentHistory, setContentHistory] = useState<ISonnerContent[]>([]);\n\n const [isHovered, setIsHovered] = useState(false);\n\n const handleMouseEnter = useCallback(() => {\n setIsHovered(true);\n }, []);\n\n const handleMouseLeave = useCallback(() => {\n setIsHovered(false);\n }, []);\n\n const remove: ISonnerContext['remove'] = useCallback(\n (id) => {\n setContentHistory((prev) => {\n const itemToRemove = prev.find((item) => item.id === id);\n\n if (!itemToRemove) return prev;\n\n const indexToRemove = itemToRemove.index;\n\n const updatedHistory = prev\n .filter((item) => item.id !== id)\n .map((item) => ({\n ...item,\n index: item.index > indexToRemove ? item.index - 1 : item.index,\n }));\n\n if (updatedHistory.length === 0) handleMouseLeave();\n\n return updatedHistory;\n });\n },\n [handleMouseLeave],\n );\n\n const toast: ISonnerContext['toast'] = useCallback(\n (content) => {\n const id = content.id ?? uuidv4();\n\n const hidingTime = content.hidingTime ?? memoDefaultHidingTime;\n\n setContentHistory((prev) => {\n const existingIndex = prev.findIndex((item) => item.id === id);\n\n let updatedHistory: ISonnerContent[];\n if (existingIndex !== -1) {\n // Replace existing item\n updatedHistory = [...prev];\n updatedHistory[existingIndex] = { ...content, id, index: prev[existingIndex].index };\n } else {\n // Add new item\n updatedHistory = prev.map((item) => ({\n ...item,\n index: item.index + 1,\n }));\n const newContent = { ...content, id, index: 0 };\n updatedHistory.unshift(newContent);\n }\n\n return updatedHistory;\n });\n\n if (hidingTime !== undefined) {\n setTimeout(() => {\n remove(id);\n }, hidingTime);\n }\n },\n [memoDefaultHidingTime, remove],\n );\n\n const promise: ISonnerContext['promise'] = useCallback(\n <T,>(\n promise: Promise<T>,\n expectation: Omit<ISonnerContent, 'index'>,\n localToast: (success: T | undefined, error: unknown | undefined) => Omit<ISonnerContent, 'index'>,\n ) => {\n const id = uuidv4();\n toast({ ...expectation, id, isLoading: true });\n\n return promise\n .then((result) => {\n toast({ ...localToast(result, undefined), id });\n })\n .catch((error) => {\n toast({ ...localToast(undefined, error), id });\n });\n },\n [toast],\n );\n\n const handleOnClick = useCallback(\n (id: ISonnerContentStandard['id']) => {\n remove(id);\n },\n [remove],\n );\n\n useEffect(() => {\n return () => {\n setContentHistory([]);\n };\n }, []);\n return (\n <SonnerContext.Provider value={{ toast, promise, remove, contentHistory }}>\n <div\n className={getSonnerLayoutClassName(props.position)}\n style={getSonnerLayoutStyle({\n gap: props.gap,\n zIndex: props.zIndex ?? DEFAULT_PROVIDER_SONNER_Z_INDEX,\n })}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n <AnimatePresence>\n {contentHistory.map((content) => {\n const index = content.index;\n const isMoreThanLastViewIndexPlusOne = memoVisibleToasts ? index > memoVisibleToasts : false;\n const isMoreThanLastViewIndex = memoVisibleToasts ? index > memoVisibleToasts - 1 : false;\n const isLastViewIndex = memoVisibleToasts ? index === memoVisibleToasts - 1 : false;\n const localGenre = content.genre ?? memoDefaultGenre;\n const buttonGenre = localGenre;\n const hidingMode = content.hidingMode ?? memoDefaultHidingMode;\n\n const localContent = 'content' in content ? content.content : false;\n const localTitle = 'title' in content ? content.title : false;\n const localDescription = 'description' in content ? content.description : false;\n return (\n <MemoizedSonnerElement\n isMoreThanLastViewIndexPlusOne={isMoreThanLastViewIndexPlusOne}\n isMoreThanLastViewIndex={isMoreThanLastViewIndex}\n isLastViewIndex={isLastViewIndex}\n isTop={isTop}\n key={content.id}\n id={content.id}\n icon={content.icon}\n isLoading={content.isLoading}\n index={index}\n buttonGenre={buttonGenre}\n hidingMode={hidingMode}\n isHovered={isHovered}\n genre={localGenre}\n content={localContent}\n title={localTitle || memoDefaultTitle}\n description={localDescription || memoDefaultDescription}\n button={content.button ?? memoDefaultButton ?? DEFAULT_PROVIDER_SONNER_BUTTON}\n handleOnClick={handleOnClick}\n />\n );\n })}\n </AnimatePresence>\n </div>\n {props.children}\n </SonnerContext.Provider>\n );\n};\n\nconst SonnerElement = (props: ISonnerElement) => {\n return (\n <motion.div\n key={props.id}\n layout\n initial={{\n opacity: 0,\n scale: 1,\n y: props.isLastViewIndex\n ? !props.isTop\n ? -DEFAULT_PROVIDER_SONNER_Y\n : DEFAULT_PROVIDER_SONNER_Y\n : !props.isTop\n ? DEFAULT_PROVIDER_SONNER_Y\n : -DEFAULT_PROVIDER_SONNER_Y,\n }}\n animate={{\n y: 0,\n opacity: props.isMoreThanLastViewIndex ? 0 : 1,\n pointerEvents: props.isMoreThanLastViewIndex ? 'none' : 'auto',\n display: props.isMoreThanLastViewIndex ? 'none' : 'flex',\n scale: !props.isHovered ? Math.max(1 - props.index * DEFAULT_PROVIDER_SONNER_SCALE, 0.88) : 1,\n marginTop: props.isTop\n ? props.isHovered || props.index === 0\n ? `0px`\n : `-${DEFAULT_PROVIDER_SONNER_MARGIN_BOTTOM}px`\n : '0px',\n marginBottom: !props.isTop\n ? props.isHovered || props.index === 0\n ? `0px`\n : `-${DEFAULT_PROVIDER_SONNER_MARGIN_BOTTOM}px`\n : '0px',\n }}\n style={{\n zIndex: -props.index,\n }}\n whileInView={{ opacity: props.isMoreThanLastViewIndex ? 0 : 1 }}\n exit={{ opacity: 0, y: !props.isTop ? DEFAULT_PROVIDER_SONNER_Y : -DEFAULT_PROVIDER_SONNER_Y }}\n transition={{ type: 'spring', duration: DEFAULT_PROVIDER_SONNER_DURATION }}\n >\n <div\n className={SonnerElementWrapper}\n style={getSonnerElementWrapperStyle(props.genre)}\n role={props.hidingMode === 'clickOnSonner' ? 'button' : undefined}\n tabIndex={props.hidingMode === 'clickOnSonner' ? 0 : undefined}\n onClick={() => props.hidingMode === 'clickOnSonner' && props.handleOnClick(props.id, 'clickOnSonner')}\n onKeyDown={(event) => {\n if (props.hidingMode !== 'clickOnSonner') return;\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n props.handleOnClick(props.id, 'clickOnSonner');\n }\n }}\n >\n {(props.isLoading || props.icon) && (\n <div className={SonnerIcon}>\n {props.isLoading ? (\n <Icon size='medium' type='loading' name='Line' />\n ) : (\n props.icon && <Icon {...props.icon} size={props.icon.size ?? 'medium'} />\n )}\n </div>\n )}\n <div className={SonnerContent}>\n {props.content ? (\n props.content\n ) : (\n <>\n {props.title && <div className={SonnerContentTitle}>{props.title}</div>}\n {props.description && <div className={SonnerContentDescription}>{props.description}</div>}\n </>\n )}\n </div>\n\n {props.button && 'content' in props.button && props.button?.content && (\n <div className={SonnerButtonWrapper}>\n <Button\n genre={props.buttonGenre}\n size='small'\n onClick={() => props.hidingMode === 'clickOnButton' && props.handleOnClick(props.id, 'clickOnButton')}\n >\n {props.button.content}\n </Button>\n </div>\n )}\n </div>\n </motion.div>\n );\n};\nconst MemoizedSonnerElement = memo(SonnerElement);\n","import { useContextSelector } from 'use-context-selector';\n\nimport { SonnerContext } from './context';\nimport { ISonnerContext, IUseSonnerDependencies } from './context.types';\n\nexport const useSonner = (props: IUseSonnerDependencies): ISonnerContext => {\n const context = useContextSelector(SonnerContext, (v) => {\n return v\n ? props.reduce((acc, prop) => {\n acc[prop] = v[prop];\n return acc;\n }, {} as any)\n : null;\n });\n if (!context) {\n throw new Error('useSonner must be used within an ProviderSonner');\n }\n return context;\n};\n"],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { t as U } from "./proxy-
|
|
2
|
-
import { t as F } from "./AnimatePresence-
|
|
1
|
+
import { t as U } from "./proxy-wCWa57J3.js";
|
|
2
|
+
import { t as F } from "./AnimatePresence-19yP-TCg.js";
|
|
3
3
|
import { n as G, r as f } from "./utils-Cona48dZ.js";
|
|
4
4
|
import { t as W } from "./functions-CLGf7hqw.js";
|
|
5
|
-
import { r as I } from "./icon-
|
|
6
|
-
import { t as $ } from "./button-
|
|
7
|
-
import { n as j, t as K } from "./dist-
|
|
5
|
+
import { r as I } from "./icon-DzAWOQJg.js";
|
|
6
|
+
import { t as $ } from "./button-BbGiFvok.js";
|
|
7
|
+
import { n as j, t as K } from "./dist-BV0C3tLK.js";
|
|
8
8
|
import { t as w } from "./v4-CYaPyb-W.js";
|
|
9
9
|
import { Fragment as Y, jsx as l, jsxs as b } from "react/jsx-runtime";
|
|
10
10
|
import { memo as q, useCallback as u, useEffect as J, useMemo as s, useState as M } from "react";
|
|
@@ -215,4 +215,4 @@ export {
|
|
|
215
215
|
Oe as t
|
|
216
216
|
};
|
|
217
217
|
|
|
218
|
-
//# sourceMappingURL=context-sonner-
|
|
218
|
+
//# sourceMappingURL=context-sonner-qDPLFpD5.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-sonner-Bniiz914.js","names":[],"sources":["../src/contexts/context-sonner/context.constants.ts","../src/contexts/context-sonner/context.styles.tsx","../src/contexts/context-sonner/context.tsx","../src/contexts/context-sonner/context.hooks.ts"],"sourcesContent":["import { IThemeGenreSonner } from '@local/styles/utils/types';\n\nimport { ISonnerProvider } from './context.types';\n\nexport const DEFAULT_PROVIDER_SONNER_Z_INDEX = 100;\nexport const DEFAULT_PROVIDER_SONNER_SCALE = 0.04;\nexport const DEFAULT_PROVIDER_SONNER_Y = 100;\nexport const DEFAULT_PROVIDER_SONNER_DURATION = 0.3;\nexport const DEFAULT_PROVIDER_SONNER_GENRE: IThemeGenreSonner = 'product';\nexport const DEFAULT_PROVIDER_SONNER_MARGIN_BOTTOM = 65;\nexport const DEFAULT_PROVIDER_SONNER_BUTTON: ISonnerProvider['default']['button'] = {\n content: 'Undo',\n onClick: () => {},\n};\n","import { CSS_CLASS, CSS_VARS } from '@local/styles/utils';\nimport { setClasses } from '@local/styles/utils/functions';\nimport { IThemeGenreSonner } from '@local/styles/utils/types';\n\nimport { CSSProperties } from 'react';\n\nimport { ISonnerProvider } from './context.types';\n\nexport const SonnerClass = CSS_CLASS.context.sonner;\n\nexport const SonnerLayout = SonnerClass.layout;\nexport const SonnerElementWrapper = SonnerClass.elementWrapper;\nexport const SonnerContent = SonnerClass.content;\nexport const SonnerIcon = SonnerClass.icon;\nexport const SonnerContentTitle = SonnerClass.contentTitle;\nexport const SonnerContentDescription = SonnerClass.contentDescription;\nexport const SonnerButtonWrapper = SonnerClass.buttonWrapper;\n\nconst SONNER_LAYOUT_POSITION_CLASS: Record<ISonnerProvider['position'], string> = {\n 'bottom-center': SonnerClass.layoutBottomCenter,\n 'bottom-left': SonnerClass.layoutBottomLeft,\n 'bottom-right': SonnerClass.layoutBottomRight,\n 'top-right': SonnerClass.layoutTopRight,\n 'top-left': SonnerClass.layoutTopLeft,\n 'top-center': SonnerClass.layoutTopCenter,\n};\n\ntype ISonnerStyleWithVars = CSSProperties & Record<string, string>;\n\nexport const getSonnerLayoutClassName = (position: ISonnerProvider['position']) =>\n setClasses([SonnerLayout, SONNER_LAYOUT_POSITION_CLASS[position]]);\n\nexport const getSonnerLayoutStyle = (props: Pick<ISonnerProvider, 'gap' | 'zIndex'>): ISonnerStyleWithVars => ({\n '--context-sonner-gap': `${props.gap}px`,\n '--context-sonner-z-index': `${props.zIndex ?? 0}`,\n});\n\nexport const getSonnerElementWrapperStyle = (genre: IThemeGenreSonner): ISonnerStyleWithVars => {\n const genreTheme = CSS_VARS.genre.button[genre];\n\n return {\n '--context-sonner-wrapper-background': genreTheme.background.index,\n '--context-sonner-wrapper-border-color': genreTheme.border.index,\n '--context-sonner-wrapper-box-shadow':\n genre === 'primary' || genre === 'secondary'\n ? CSS_VARS.palette.shadowPrimaryLight\n : CSS_VARS.palette.shadowSecondaryLight,\n '--context-sonner-wrapper-box-shadow-hover':\n genre === 'primary' || genre === 'secondary'\n ? CSS_VARS.palette.shadowSecondaryLight\n : CSS_VARS.palette.shadowPrimaryLight,\n '--context-sonner-icon-color': genreTheme.color.index,\n '--context-sonner-title-color': genreTheme.color.index,\n '--context-sonner-description-color': genreTheme.color.index,\n };\n};\n","import { Button } from '@local/components/button';\nimport { Icon } from '@local/components/icon';\n\nimport { AnimatePresence, motion } from 'framer-motion';\nimport { FC, memo, useCallback, useEffect, useMemo, useState } from 'react';\nimport { createContext } from 'use-context-selector';\nimport { v4 as uuidv4 } from 'uuid';\n\nimport {\n DEFAULT_PROVIDER_SONNER_BUTTON,\n DEFAULT_PROVIDER_SONNER_DURATION,\n DEFAULT_PROVIDER_SONNER_GENRE,\n DEFAULT_PROVIDER_SONNER_MARGIN_BOTTOM,\n DEFAULT_PROVIDER_SONNER_SCALE,\n DEFAULT_PROVIDER_SONNER_Y,\n DEFAULT_PROVIDER_SONNER_Z_INDEX,\n} from './context.constants';\nimport {\n getSonnerElementWrapperStyle,\n getSonnerLayoutClassName,\n getSonnerLayoutStyle,\n SonnerButtonWrapper,\n SonnerContent,\n SonnerContentDescription,\n SonnerContentTitle,\n SonnerElementWrapper,\n SonnerIcon,\n} from './context.styles';\nimport {\n ISonnerContent,\n ISonnerContentStandard,\n ISonnerContext,\n ISonnerElement,\n ISonnerProvider,\n} from './context.types';\n\nexport const SonnerContext = createContext<ISonnerContext | null>(null);\n\nexport const ProviderSonner: FC<ISonnerProvider> = (props) => {\n const memoVisibleToasts: ISonnerProvider['visibleToasts'] = useMemo(() => props.visibleToasts, [props.visibleToasts]);\n const memoDefaultDescription: ISonnerProvider['default']['description'] = useMemo(\n () => props?.default?.description,\n [props?.default?.description],\n );\n const memoDefaultTitle: ISonnerProvider['default']['title'] = useMemo(\n () => props?.default?.title,\n [props?.default?.title],\n );\n const memoDefaultButton: ISonnerProvider['default']['button'] = useMemo(\n () => props?.default?.button,\n [props?.default?.button],\n );\n const memoDefaultHidingTime: ISonnerProvider['default']['hidingTime'] = useMemo(\n () => props?.default?.hidingTime,\n [props?.default?.hidingTime],\n );\n const memoDefaultHidingMode: ISonnerProvider['default']['hidingMode'] = useMemo(\n () => props?.default?.hidingMode ?? 'clickOnButton',\n [props?.default?.hidingMode],\n );\n const memoDefaultGenre = useMemo(\n () => props?.default?.genre ?? DEFAULT_PROVIDER_SONNER_GENRE,\n [props?.default?.genre],\n );\n\n const isTop = useMemo(() => props.position.includes('top'), [props.position]);\n\n const [contentHistory, setContentHistory] = useState<ISonnerContent[]>([]);\n\n const [isHovered, setIsHovered] = useState(false);\n\n const handleMouseEnter = useCallback(() => {\n setIsHovered(true);\n }, []);\n\n const handleMouseLeave = useCallback(() => {\n setIsHovered(false);\n }, []);\n\n const remove: ISonnerContext['remove'] = useCallback(\n (id) => {\n setContentHistory((prev) => {\n const itemToRemove = prev.find((item) => item.id === id);\n\n if (!itemToRemove) return prev;\n\n const indexToRemove = itemToRemove.index;\n\n const updatedHistory = prev\n .filter((item) => item.id !== id)\n .map((item) => ({\n ...item,\n index: item.index > indexToRemove ? item.index - 1 : item.index,\n }));\n\n if (updatedHistory.length === 0) handleMouseLeave();\n\n return updatedHistory;\n });\n },\n [handleMouseLeave],\n );\n\n const toast: ISonnerContext['toast'] = useCallback(\n (content) => {\n const id = content.id ?? uuidv4();\n\n const hidingTime = content.hidingTime ?? memoDefaultHidingTime;\n\n setContentHistory((prev) => {\n const existingIndex = prev.findIndex((item) => item.id === id);\n\n let updatedHistory: ISonnerContent[];\n if (existingIndex !== -1) {\n // Replace existing item\n updatedHistory = [...prev];\n updatedHistory[existingIndex] = { ...content, id, index: prev[existingIndex].index };\n } else {\n // Add new item\n updatedHistory = prev.map((item) => ({\n ...item,\n index: item.index + 1,\n }));\n const newContent = { ...content, id, index: 0 };\n updatedHistory.unshift(newContent);\n }\n\n return updatedHistory;\n });\n\n if (hidingTime !== undefined) {\n setTimeout(() => {\n remove(id);\n }, hidingTime);\n }\n },\n [memoDefaultHidingTime, remove],\n );\n\n const promise: ISonnerContext['promise'] = useCallback(\n <T,>(\n promise: Promise<T>,\n expectation: Omit<ISonnerContent, 'index'>,\n localToast: (success: T | undefined, error: unknown | undefined) => Omit<ISonnerContent, 'index'>,\n ) => {\n const id = uuidv4();\n toast({ ...expectation, id, isLoading: true });\n\n return promise\n .then((result) => {\n toast({ ...localToast(result, undefined), id });\n })\n .catch((error) => {\n toast({ ...localToast(undefined, error), id });\n });\n },\n [toast],\n );\n\n const handleOnClick = useCallback(\n (id: ISonnerContentStandard['id']) => {\n remove(id);\n },\n [remove],\n );\n\n useEffect(() => {\n return () => {\n setContentHistory([]);\n };\n }, []);\n return (\n <SonnerContext.Provider value={{ toast, promise, remove, contentHistory }}>\n <div\n className={getSonnerLayoutClassName(props.position)}\n style={getSonnerLayoutStyle({\n gap: props.gap,\n zIndex: props.zIndex ?? DEFAULT_PROVIDER_SONNER_Z_INDEX,\n })}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n <AnimatePresence>\n {contentHistory.map((content) => {\n const index = content.index;\n const isMoreThanLastViewIndexPlusOne = memoVisibleToasts ? index > memoVisibleToasts : false;\n const isMoreThanLastViewIndex = memoVisibleToasts ? index > memoVisibleToasts - 1 : false;\n const isLastViewIndex = memoVisibleToasts ? index === memoVisibleToasts - 1 : false;\n const localGenre = content.genre ?? memoDefaultGenre;\n const buttonGenre = localGenre;\n const hidingMode = content.hidingMode ?? memoDefaultHidingMode;\n\n const localContent = 'content' in content ? content.content : false;\n const localTitle = 'title' in content ? content.title : false;\n const localDescription = 'description' in content ? content.description : false;\n return (\n <MemoizedSonnerElement\n isMoreThanLastViewIndexPlusOne={isMoreThanLastViewIndexPlusOne}\n isMoreThanLastViewIndex={isMoreThanLastViewIndex}\n isLastViewIndex={isLastViewIndex}\n isTop={isTop}\n key={content.id}\n id={content.id}\n icon={content.icon}\n isLoading={content.isLoading}\n index={index}\n buttonGenre={buttonGenre}\n hidingMode={hidingMode}\n isHovered={isHovered}\n genre={localGenre}\n content={localContent}\n title={localTitle || memoDefaultTitle}\n description={localDescription || memoDefaultDescription}\n button={content.button ?? memoDefaultButton ?? DEFAULT_PROVIDER_SONNER_BUTTON}\n handleOnClick={handleOnClick}\n />\n );\n })}\n </AnimatePresence>\n </div>\n {props.children}\n </SonnerContext.Provider>\n );\n};\n\nconst SonnerElement = (props: ISonnerElement) => {\n return (\n <motion.div\n key={props.id}\n layout\n initial={{\n opacity: 0,\n scale: 1,\n y: props.isLastViewIndex\n ? !props.isTop\n ? -DEFAULT_PROVIDER_SONNER_Y\n : DEFAULT_PROVIDER_SONNER_Y\n : !props.isTop\n ? DEFAULT_PROVIDER_SONNER_Y\n : -DEFAULT_PROVIDER_SONNER_Y,\n }}\n animate={{\n y: 0,\n opacity: props.isMoreThanLastViewIndex ? 0 : 1,\n pointerEvents: props.isMoreThanLastViewIndex ? 'none' : 'auto',\n display: props.isMoreThanLastViewIndex ? 'none' : 'flex',\n scale: !props.isHovered ? Math.max(1 - props.index * DEFAULT_PROVIDER_SONNER_SCALE, 0.88) : 1,\n marginTop: props.isTop\n ? props.isHovered || props.index === 0\n ? `0px`\n : `-${DEFAULT_PROVIDER_SONNER_MARGIN_BOTTOM}px`\n : '0px',\n marginBottom: !props.isTop\n ? props.isHovered || props.index === 0\n ? `0px`\n : `-${DEFAULT_PROVIDER_SONNER_MARGIN_BOTTOM}px`\n : '0px',\n }}\n style={{\n zIndex: -props.index,\n }}\n whileInView={{ opacity: props.isMoreThanLastViewIndex ? 0 : 1 }}\n exit={{ opacity: 0, y: !props.isTop ? DEFAULT_PROVIDER_SONNER_Y : -DEFAULT_PROVIDER_SONNER_Y }}\n transition={{ type: 'spring', duration: DEFAULT_PROVIDER_SONNER_DURATION }}\n >\n <div\n className={SonnerElementWrapper}\n style={getSonnerElementWrapperStyle(props.genre)}\n role={props.hidingMode === 'clickOnSonner' ? 'button' : undefined}\n tabIndex={props.hidingMode === 'clickOnSonner' ? 0 : undefined}\n onClick={() => props.hidingMode === 'clickOnSonner' && props.handleOnClick(props.id, 'clickOnSonner')}\n onKeyDown={(event) => {\n if (props.hidingMode !== 'clickOnSonner') return;\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n props.handleOnClick(props.id, 'clickOnSonner');\n }\n }}\n >\n {(props.isLoading || props.icon) && (\n <div className={SonnerIcon}>\n {props.isLoading ? (\n <Icon size='medium' type='loading' name='Line' />\n ) : (\n props.icon && <Icon {...props.icon} size={props.icon.size ?? 'medium'} />\n )}\n </div>\n )}\n <div className={SonnerContent}>\n {props.content ? (\n props.content\n ) : (\n <>\n {props.title && <div className={SonnerContentTitle}>{props.title}</div>}\n {props.description && <div className={SonnerContentDescription}>{props.description}</div>}\n </>\n )}\n </div>\n\n {props.button && 'content' in props.button && props.button?.content && (\n <div className={SonnerButtonWrapper}>\n <Button\n genre={props.buttonGenre}\n size='small'\n onClick={() => props.hidingMode === 'clickOnButton' && props.handleOnClick(props.id, 'clickOnButton')}\n >\n {props.button.content}\n </Button>\n </div>\n )}\n </div>\n </motion.div>\n );\n};\nconst MemoizedSonnerElement = memo(SonnerElement);\n","import { useContextSelector } from 'use-context-selector';\n\nimport { SonnerContext } from './context';\nimport { ISonnerContext, IUseSonnerDependencies } from './context.types';\n\nexport const useSonner = (props: IUseSonnerDependencies): ISonnerContext => {\n const context = useContextSelector(SonnerContext, (v) => {\n return v\n ? props.reduce((acc, prop) => {\n acc[prop] = v[prop];\n return acc;\n }, {} as any)\n : null;\n });\n if (!context) {\n throw new Error('useSonner must be used within an ProviderSonner');\n }\n return context;\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"context-sonner-qDPLFpD5.js","names":[],"sources":["../src/contexts/context-sonner/context.constants.ts","../src/contexts/context-sonner/context.styles.tsx","../src/contexts/context-sonner/context.tsx","../src/contexts/context-sonner/context.hooks.ts"],"sourcesContent":["import { IThemeGenreSonner } from '@local/styles/utils/types';\n\nimport { ISonnerProvider } from './context.types';\n\nexport const DEFAULT_PROVIDER_SONNER_Z_INDEX = 100;\nexport const DEFAULT_PROVIDER_SONNER_SCALE = 0.04;\nexport const DEFAULT_PROVIDER_SONNER_Y = 100;\nexport const DEFAULT_PROVIDER_SONNER_DURATION = 0.3;\nexport const DEFAULT_PROVIDER_SONNER_GENRE: IThemeGenreSonner = 'product';\nexport const DEFAULT_PROVIDER_SONNER_MARGIN_BOTTOM = 65;\nexport const DEFAULT_PROVIDER_SONNER_BUTTON: ISonnerProvider['default']['button'] = {\n content: 'Undo',\n onClick: () => {},\n};\n","import { CSS_CLASS, CSS_VARS } from '@local/styles/utils';\nimport { setClasses } from '@local/styles/utils/functions';\nimport { IThemeGenreSonner } from '@local/styles/utils/types';\n\nimport { CSSProperties } from 'react';\n\nimport { ISonnerProvider } from './context.types';\n\nexport const SonnerClass = CSS_CLASS.context.sonner;\n\nexport const SonnerLayout = SonnerClass.layout;\nexport const SonnerElementWrapper = SonnerClass.elementWrapper;\nexport const SonnerContent = SonnerClass.content;\nexport const SonnerIcon = SonnerClass.icon;\nexport const SonnerContentTitle = SonnerClass.contentTitle;\nexport const SonnerContentDescription = SonnerClass.contentDescription;\nexport const SonnerButtonWrapper = SonnerClass.buttonWrapper;\n\nconst SONNER_LAYOUT_POSITION_CLASS: Record<ISonnerProvider['position'], string> = {\n 'bottom-center': SonnerClass.layoutBottomCenter,\n 'bottom-left': SonnerClass.layoutBottomLeft,\n 'bottom-right': SonnerClass.layoutBottomRight,\n 'top-right': SonnerClass.layoutTopRight,\n 'top-left': SonnerClass.layoutTopLeft,\n 'top-center': SonnerClass.layoutTopCenter,\n};\n\ntype ISonnerStyleWithVars = CSSProperties & Record<string, string>;\n\nexport const getSonnerLayoutClassName = (position: ISonnerProvider['position']) =>\n setClasses([SonnerLayout, SONNER_LAYOUT_POSITION_CLASS[position]]);\n\nexport const getSonnerLayoutStyle = (props: Pick<ISonnerProvider, 'gap' | 'zIndex'>): ISonnerStyleWithVars => ({\n '--context-sonner-gap': `${props.gap}px`,\n '--context-sonner-z-index': `${props.zIndex ?? 0}`,\n});\n\nexport const getSonnerElementWrapperStyle = (genre: IThemeGenreSonner): ISonnerStyleWithVars => {\n const genreTheme = CSS_VARS.genre.button[genre];\n\n return {\n '--context-sonner-wrapper-background': genreTheme.background.index,\n '--context-sonner-wrapper-border-color': genreTheme.border.index,\n '--context-sonner-wrapper-box-shadow':\n genre === 'primary' || genre === 'secondary'\n ? CSS_VARS.palette.shadowPrimaryLight\n : CSS_VARS.palette.shadowSecondaryLight,\n '--context-sonner-wrapper-box-shadow-hover':\n genre === 'primary' || genre === 'secondary'\n ? CSS_VARS.palette.shadowSecondaryLight\n : CSS_VARS.palette.shadowPrimaryLight,\n '--context-sonner-icon-color': genreTheme.color.index,\n '--context-sonner-title-color': genreTheme.color.index,\n '--context-sonner-description-color': genreTheme.color.index,\n };\n};\n","import { Button } from '@local/components/button';\nimport { Icon } from '@local/components/icon';\n\nimport { AnimatePresence, motion } from 'framer-motion';\nimport { FC, memo, useCallback, useEffect, useMemo, useState } from 'react';\nimport { createContext } from 'use-context-selector';\nimport { v4 as uuidv4 } from 'uuid';\n\nimport {\n DEFAULT_PROVIDER_SONNER_BUTTON,\n DEFAULT_PROVIDER_SONNER_DURATION,\n DEFAULT_PROVIDER_SONNER_GENRE,\n DEFAULT_PROVIDER_SONNER_MARGIN_BOTTOM,\n DEFAULT_PROVIDER_SONNER_SCALE,\n DEFAULT_PROVIDER_SONNER_Y,\n DEFAULT_PROVIDER_SONNER_Z_INDEX,\n} from './context.constants';\nimport {\n getSonnerElementWrapperStyle,\n getSonnerLayoutClassName,\n getSonnerLayoutStyle,\n SonnerButtonWrapper,\n SonnerContent,\n SonnerContentDescription,\n SonnerContentTitle,\n SonnerElementWrapper,\n SonnerIcon,\n} from './context.styles';\nimport {\n ISonnerContent,\n ISonnerContentStandard,\n ISonnerContext,\n ISonnerElement,\n ISonnerProvider,\n} from './context.types';\n\nexport const SonnerContext = createContext<ISonnerContext | null>(null);\n\nexport const ProviderSonner: FC<ISonnerProvider> = (props) => {\n const memoVisibleToasts: ISonnerProvider['visibleToasts'] = useMemo(() => props.visibleToasts, [props.visibleToasts]);\n const memoDefaultDescription: ISonnerProvider['default']['description'] = useMemo(\n () => props?.default?.description,\n [props?.default?.description],\n );\n const memoDefaultTitle: ISonnerProvider['default']['title'] = useMemo(\n () => props?.default?.title,\n [props?.default?.title],\n );\n const memoDefaultButton: ISonnerProvider['default']['button'] = useMemo(\n () => props?.default?.button,\n [props?.default?.button],\n );\n const memoDefaultHidingTime: ISonnerProvider['default']['hidingTime'] = useMemo(\n () => props?.default?.hidingTime,\n [props?.default?.hidingTime],\n );\n const memoDefaultHidingMode: ISonnerProvider['default']['hidingMode'] = useMemo(\n () => props?.default?.hidingMode ?? 'clickOnButton',\n [props?.default?.hidingMode],\n );\n const memoDefaultGenre = useMemo(\n () => props?.default?.genre ?? DEFAULT_PROVIDER_SONNER_GENRE,\n [props?.default?.genre],\n );\n\n const isTop = useMemo(() => props.position.includes('top'), [props.position]);\n\n const [contentHistory, setContentHistory] = useState<ISonnerContent[]>([]);\n\n const [isHovered, setIsHovered] = useState(false);\n\n const handleMouseEnter = useCallback(() => {\n setIsHovered(true);\n }, []);\n\n const handleMouseLeave = useCallback(() => {\n setIsHovered(false);\n }, []);\n\n const remove: ISonnerContext['remove'] = useCallback(\n (id) => {\n setContentHistory((prev) => {\n const itemToRemove = prev.find((item) => item.id === id);\n\n if (!itemToRemove) return prev;\n\n const indexToRemove = itemToRemove.index;\n\n const updatedHistory = prev\n .filter((item) => item.id !== id)\n .map((item) => ({\n ...item,\n index: item.index > indexToRemove ? item.index - 1 : item.index,\n }));\n\n if (updatedHistory.length === 0) handleMouseLeave();\n\n return updatedHistory;\n });\n },\n [handleMouseLeave],\n );\n\n const toast: ISonnerContext['toast'] = useCallback(\n (content) => {\n const id = content.id ?? uuidv4();\n\n const hidingTime = content.hidingTime ?? memoDefaultHidingTime;\n\n setContentHistory((prev) => {\n const existingIndex = prev.findIndex((item) => item.id === id);\n\n let updatedHistory: ISonnerContent[];\n if (existingIndex !== -1) {\n // Replace existing item\n updatedHistory = [...prev];\n updatedHistory[existingIndex] = { ...content, id, index: prev[existingIndex].index };\n } else {\n // Add new item\n updatedHistory = prev.map((item) => ({\n ...item,\n index: item.index + 1,\n }));\n const newContent = { ...content, id, index: 0 };\n updatedHistory.unshift(newContent);\n }\n\n return updatedHistory;\n });\n\n if (hidingTime !== undefined) {\n setTimeout(() => {\n remove(id);\n }, hidingTime);\n }\n },\n [memoDefaultHidingTime, remove],\n );\n\n const promise: ISonnerContext['promise'] = useCallback(\n <T,>(\n promise: Promise<T>,\n expectation: Omit<ISonnerContent, 'index'>,\n localToast: (success: T | undefined, error: unknown | undefined) => Omit<ISonnerContent, 'index'>,\n ) => {\n const id = uuidv4();\n toast({ ...expectation, id, isLoading: true });\n\n return promise\n .then((result) => {\n toast({ ...localToast(result, undefined), id });\n })\n .catch((error) => {\n toast({ ...localToast(undefined, error), id });\n });\n },\n [toast],\n );\n\n const handleOnClick = useCallback(\n (id: ISonnerContentStandard['id']) => {\n remove(id);\n },\n [remove],\n );\n\n useEffect(() => {\n return () => {\n setContentHistory([]);\n };\n }, []);\n return (\n <SonnerContext.Provider value={{ toast, promise, remove, contentHistory }}>\n <div\n className={getSonnerLayoutClassName(props.position)}\n style={getSonnerLayoutStyle({\n gap: props.gap,\n zIndex: props.zIndex ?? DEFAULT_PROVIDER_SONNER_Z_INDEX,\n })}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n <AnimatePresence>\n {contentHistory.map((content) => {\n const index = content.index;\n const isMoreThanLastViewIndexPlusOne = memoVisibleToasts ? index > memoVisibleToasts : false;\n const isMoreThanLastViewIndex = memoVisibleToasts ? index > memoVisibleToasts - 1 : false;\n const isLastViewIndex = memoVisibleToasts ? index === memoVisibleToasts - 1 : false;\n const localGenre = content.genre ?? memoDefaultGenre;\n const buttonGenre = localGenre;\n const hidingMode = content.hidingMode ?? memoDefaultHidingMode;\n\n const localContent = 'content' in content ? content.content : false;\n const localTitle = 'title' in content ? content.title : false;\n const localDescription = 'description' in content ? content.description : false;\n return (\n <MemoizedSonnerElement\n isMoreThanLastViewIndexPlusOne={isMoreThanLastViewIndexPlusOne}\n isMoreThanLastViewIndex={isMoreThanLastViewIndex}\n isLastViewIndex={isLastViewIndex}\n isTop={isTop}\n key={content.id}\n id={content.id}\n icon={content.icon}\n isLoading={content.isLoading}\n index={index}\n buttonGenre={buttonGenre}\n hidingMode={hidingMode}\n isHovered={isHovered}\n genre={localGenre}\n content={localContent}\n title={localTitle || memoDefaultTitle}\n description={localDescription || memoDefaultDescription}\n button={content.button ?? memoDefaultButton ?? DEFAULT_PROVIDER_SONNER_BUTTON}\n handleOnClick={handleOnClick}\n />\n );\n })}\n </AnimatePresence>\n </div>\n {props.children}\n </SonnerContext.Provider>\n );\n};\n\nconst SonnerElement = (props: ISonnerElement) => {\n return (\n <motion.div\n key={props.id}\n layout\n initial={{\n opacity: 0,\n scale: 1,\n y: props.isLastViewIndex\n ? !props.isTop\n ? -DEFAULT_PROVIDER_SONNER_Y\n : DEFAULT_PROVIDER_SONNER_Y\n : !props.isTop\n ? DEFAULT_PROVIDER_SONNER_Y\n : -DEFAULT_PROVIDER_SONNER_Y,\n }}\n animate={{\n y: 0,\n opacity: props.isMoreThanLastViewIndex ? 0 : 1,\n pointerEvents: props.isMoreThanLastViewIndex ? 'none' : 'auto',\n display: props.isMoreThanLastViewIndex ? 'none' : 'flex',\n scale: !props.isHovered ? Math.max(1 - props.index * DEFAULT_PROVIDER_SONNER_SCALE, 0.88) : 1,\n marginTop: props.isTop\n ? props.isHovered || props.index === 0\n ? `0px`\n : `-${DEFAULT_PROVIDER_SONNER_MARGIN_BOTTOM}px`\n : '0px',\n marginBottom: !props.isTop\n ? props.isHovered || props.index === 0\n ? `0px`\n : `-${DEFAULT_PROVIDER_SONNER_MARGIN_BOTTOM}px`\n : '0px',\n }}\n style={{\n zIndex: -props.index,\n }}\n whileInView={{ opacity: props.isMoreThanLastViewIndex ? 0 : 1 }}\n exit={{ opacity: 0, y: !props.isTop ? DEFAULT_PROVIDER_SONNER_Y : -DEFAULT_PROVIDER_SONNER_Y }}\n transition={{ type: 'spring', duration: DEFAULT_PROVIDER_SONNER_DURATION }}\n >\n <div\n className={SonnerElementWrapper}\n style={getSonnerElementWrapperStyle(props.genre)}\n role={props.hidingMode === 'clickOnSonner' ? 'button' : undefined}\n tabIndex={props.hidingMode === 'clickOnSonner' ? 0 : undefined}\n onClick={() => props.hidingMode === 'clickOnSonner' && props.handleOnClick(props.id, 'clickOnSonner')}\n onKeyDown={(event) => {\n if (props.hidingMode !== 'clickOnSonner') return;\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n props.handleOnClick(props.id, 'clickOnSonner');\n }\n }}\n >\n {(props.isLoading || props.icon) && (\n <div className={SonnerIcon}>\n {props.isLoading ? (\n <Icon size='medium' type='loading' name='Line' />\n ) : (\n props.icon && <Icon {...props.icon} size={props.icon.size ?? 'medium'} />\n )}\n </div>\n )}\n <div className={SonnerContent}>\n {props.content ? (\n props.content\n ) : (\n <>\n {props.title && <div className={SonnerContentTitle}>{props.title}</div>}\n {props.description && <div className={SonnerContentDescription}>{props.description}</div>}\n </>\n )}\n </div>\n\n {props.button && 'content' in props.button && props.button?.content && (\n <div className={SonnerButtonWrapper}>\n <Button\n genre={props.buttonGenre}\n size='small'\n onClick={() => props.hidingMode === 'clickOnButton' && props.handleOnClick(props.id, 'clickOnButton')}\n >\n {props.button.content}\n </Button>\n </div>\n )}\n </div>\n </motion.div>\n );\n};\nconst MemoizedSonnerElement = memo(SonnerElement);\n","import { useContextSelector } from 'use-context-selector';\n\nimport { SonnerContext } from './context';\nimport { ISonnerContext, IUseSonnerDependencies } from './context.types';\n\nexport const useSonner = (props: IUseSonnerDependencies): ISonnerContext => {\n const context = useContextSelector(SonnerContext, (v) => {\n return v\n ? props.reduce((acc, prop) => {\n acc[prop] = v[prop];\n return acc;\n }, {} as any)\n : null;\n });\n if (!context) {\n throw new Error('useSonner must be used within an ProviderSonner');\n }\n return context;\n};\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("./chunk-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("./chunk-Dd8m0Ver.cjs"),e=require("./context-sonner-4gBa1F7G.cjs");exports.ProviderSonner=e.ProviderSonner;exports.useSonner=e.useSonner;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
const Fe=require("./chunk-CW3en5xf.cjs"),t=require("./utils-DtinAjAU.cjs"),_=require("./functions-Dwo54amB.cjs"),ae=require("./component-BjdeqpEq.cjs"),oe=require("./hooks-use-typography-styles.cjs.js"),T=require("./button-C5PgNYns.cjs"),we=require("./error--kiPVmoi.cjs"),re=require("./popover-fte_EMYr.cjs"),Oe=require("./typography-whjfut7N.cjs"),R=require("./select-BQtWzaxE.cjs");require("./component-stack.cjs.js");let g=require("react/jsx-runtime"),o=require("react");var s=(function(e){return e.DD="DD",e.MM="MM",e.YYYY="YYYY",e})({}),Be=["mo","tu","we","th","fr","sa","su"],ze=e=>{const{onChange:d}=e,[i,S]=(0,o.useState)(null),[u,f]=(0,o.useState)(R.hooks(e.dateDefault).utc()),[l,C]=(0,o.useState)({[s.DD]:"",[s.MM]:"",[s.YYYY]:""});(0,o.useEffect)(()=>{E.current=l},[l]);const y=(0,o.useMemo)(()=>l[s.DD]!==""||l[s.MM]!==""||l[s.YYYY]!=="",[l]),V=(0,o.useCallback)(()=>{C({[s.DD]:"",[s.MM]:"",[s.YYYY]:""})},[]),[r,b]=(0,o.useState)(null),[ce,D]=(0,o.useState)(!1),x=(0,o.useMemo)(()=>!e.mode||e.mode.length===0?[s.DD,s.MM,s.YYYY]:new Set(e.mode).size!==e.mode.length?[s.DD,s.MM,s.YYYY]:e.mode,[e.mode]),P=(0,o.useMemo)(()=>e.type?e.type:"manualAndSelect",[e.type]),h=(0,o.useMemo)(()=>{const n=[s.DD,s.MM,s.YYYY],a=Object.fromEntries(n.map(c=>[c,{type:c,value:l[c],placeholder:e.locale.inputs[c===s.DD?"day":c===s.MM?"month":"year"],isFirst:x[0]===c,isLast:x[x.length-1]===c,segmentNext:ie(c,x),segmentPrev:se(c,x),onNextSegment:()=>b(ie(c,x)),onPrevSegment:()=>b(se(c,x)),setValue:A=>C(m=>({...m,[c]:A})),setActive:()=>b(c)}]));return{sort:x.map(c=>a[c]).filter(Boolean),default:a}},[e,x,l]),ue=(0,o.useMemo)(()=>Be.map((n,a)=>({index:a,label:e.locale.weeks.find(c=>c.value===n)?.localeShort??n.toUpperCase()})),[e.locale.weeks]),O=(0,o.useMemo)(()=>{const n=R.hooks.utc(),a=i??u,c=a.clone().startOf("month"),A=a.clone().endOf("month"),m=e.dateMin?R.hooks.utc(e.dateMin):null,M=e.dateMax?R.hooks.utc(e.dateMax):null,L=c.clone().subtract(c.isoWeekday()-1,"days"),j=A.clone().add(7-A.isoWeekday(),"days"),w=[],k=L.clone();for(;k<=j;){const q=k.isBetween(c,A,"day","[]");w.push({value:k.valueOf(),labelString:k.format("dd"),labelNumber:k.date(),dayOfWeek:k.isoWeekday(),isWeekend:[6,7].includes(k.isoWeekday()),weekOfMonth:Math.ceil((w.length+1)/7),isToday:k.isSame(n,"day"),isCurrentMonth:q,isChoice:k.valueOf()===i?.valueOf(),isDisabled:!!(m&&k.isBefore(m,"day")||M&&k.isAfter(M,"day"))}),k.add(1,"day")}return w},[i,u,e.dateMax,e.dateMin]),de=(0,o.useMemo)(()=>Ee(O.length)+1,[O]),K=(0,o.useMemo)(()=>t.CSS_VARS.sizeValue[e.size].radius,[e.size]),Se=(0,o.useMemo)(()=>t.CSS_VARS.sizeValue[e.size].padding,[e.size]),N=(0,o.useMemo)(()=>i!==null,[i]),U=(0,o.useMemo)(()=>{const n=(i??u).clone().add(1,"month").startOf("month");return e.dateMax?n.isAfter(R.hooks.utc(e.dateMax),"month"):!1},[i,e.dateMax,u]),X=(0,o.useMemo)(()=>{const n=(i??u).clone().subtract(1,"month").startOf("month");return e.dateMin?n.isBefore(R.hooks.utc(e.dateMin),"month"):!1},[i,e.dateMin,u]),[B,G]=(0,o.useState)(!1),E=(0,o.useRef)(l),z=(0,o.useRef)(!1),Q=(0,o.useRef)(""),Z=(0,o.useRef)(null),J=(0,o.useRef)(null),W=(0,o.useRef)(null),fe=(0,o.useCallback)(()=>{e.onFocus?.()},[e.onFocus]),ge=(0,o.useCallback)(()=>{e.onBlur?.()},[e.onBlur]),Ce=(0,o.useCallback)(()=>{b(null)},[]),{isOpen:Y,refReference:me,refFloating:he,floatingStyles:ye,close:F,toggle:p}=re.usePopover({isFocusTrap:!0,placement:"bottom-start",offset:Se,mode:"independence",isClickOutside:!0,refsExcludeClickOutside:[Z,J],isDisabled:e?.isDisabled||e?.isReadOnly,onFocus:fe,onBlur:ge,onBlurReference:Ce}),H=(0,o.useMemo)(()=>!!(!B&&!N&&e.labelPlaceholder&&(P==="select"||!Y)&&!y&&!r),[B,N,Y,e.labelPlaceholder,y,r,P]),v=(0,o.useCallback)((n,a,c)=>{const A=R.hooks(n).utc(),m=A.clone().date().toString(),M=(A.clone().month()+1).toString(),L=m.padStart(2,"0"),j=M.padStart(2,"0"),w=A.clone().year().toString(),k=c?.[s.DD],q=c?.[s.MM],Ne=c?.[s.YYYY],We=L===k&&j===q&&Ne===w,ne=i?.isSame(A,"day");ne||(S(A),d(A.valueOf())),(!ne||c)&&!We&&C({[s.DD]:a?L:m,[s.MM]:a?j:M,[s.YYYY]:w})},[i,d]),I=(0,o.useCallback)(n=>{const a=n.key,c=["ArrowLeft","ArrowRight","ArrowUp","ArrowDown","Backspace","Delete","Tab","Enter"],A=/^\d$/.test(a);if(!(A||c.includes(a)||n.ctrlKey||n.metaKey)){n.preventDefault();return}if(r&&h.default[r]){if(A&&(je(a,r,l,h),n.preventDefault(),n.stopPropagation()),a==="Tab"&&(h.default[r].isLast?W?.current?.blur():(n.preventDefault(),h.default[r].onNextSegment())),a==="Enter"&&(n.preventDefault(),n.stopPropagation()),a==="Backspace"||a==="Delete"){if(r===s.DD)if(l.DD!==""){const m=l.DD;if(m.length===1)h.default[r].setValue("");else{const M=m.slice(0,-1);h.default[r].setValue(M)}}else h.default[r].onPrevSegment();else if(r===s.MM)if(l.MM!==""){const m=l.MM;if(m.length===1)h.default[r].setValue("");else{const M=m.slice(0,-1);h.default[r].setValue(M)}}else h.default[r].onPrevSegment();else if(r===s.YYYY)if(l.YYYY!==""){const m=l.YYYY;if(m.length===1)h.default[r].setValue("");else{const M=m.slice(0,-1);h.default[r].setValue(M)}}else h.default[r].onPrevSegment();n.preventDefault(),n.stopPropagation()}(a==="ArrowLeft"||a==="ArrowDown")&&(n.preventDefault(),h.default[r].onPrevSegment()),(a==="ArrowRight"||a==="ArrowUp")&&(n.preventDefault(),h.default[r].onNextSegment())}},[r,l,h.default,h]),Ae=(0,o.useCallback)(()=>{v((i??u).clone().add(1,"month").valueOf(),!0)},[i,v,u]),ke=(0,o.useCallback)(()=>{v((i??u).clone().subtract(1,"month").valueOf(),!0)},[i,v,u]),_e=(0,o.useCallback)(()=>{P!=="select"&&(G(!0),r||b(s.DD))},[r,P]),Re=(0,o.useCallback)(()=>{G(!1),Y||e.onBlur?.()},[Y,e.onBlur]),Ve=(0,o.useCallback)(n=>{const a=n.target.value,c=Te(a);if(c){C({DD:String(c.day).padStart(2,"0"),MM:String(c.month).padStart(2,"0"),YYYY:String(c.year)}),W.current&&(W.current.value="");return}const A=Q.current,m=a.length>A.length?a.slice(-1):null;Q.current=a,m&&/^\d$/.test(m)&&I({key:m,preventDefault:()=>{},stopPropagation:()=>{}}),a.length<A.length&&I({key:"Backspace",preventDefault:()=>{},stopPropagation:()=>{}}),W.current&&(W.current.value="")},[I]);(0,o.useEffect)(()=>{N&&!z.current&&(z.current=!0)},[N]),(0,o.useEffect)(()=>{f(R.hooks(e.dateDefault).utc())},[e.dateDefault]),(0,o.useEffect)(()=>{if(S(e.value||e.defaultValue?R.hooks(e.value??e.defaultValue).utc():null),e.value){const n=R.hooks(e.value).utc();C({[s.DD]:n.date().toString().padStart(2,"0"),[s.MM]:(n.month()+1).toString().padStart(2,"0"),[s.YYYY]:n.year().toString()})}},[e.value,e.defaultValue]),(0,o.useEffect)(()=>{r||$(l,n=>{v(n,!0,l),D(!1)},()=>{d(null),D(!0)},n=>{n||(z.current&&(d(null),z.current=!1),D(!1))})},[v,d,l,r]),(0,o.useEffect)(()=>{!Y&&!B&&y&&!r&&$(l,()=>{},()=>{d(null),V(),D(!1)},()=>{d(null),V(),D(!1)})},[V,l,Y,B,d,y,r]),(0,o.useEffect)(()=>{r&&$(E.current,n=>{v(n,!0,E.current),D(!1)},()=>{D(!0)},n=>{n||D(!1)})},[v,r]),(0,o.useEffect)(()=>{r&&(F(),W?.current?.focus())},[r,F]);const{className:ee,style:te}=oe.useTypographyStyles({sx:{variant:t.EXTRA_VALUE.sizeToController.small,weight:"500",...e?.sxTypography}}),{className:be,style:ve}=oe.useTypographyStyles({sx:{size:16,weight:e.isBold?"700":"400",...e?.sxTypography}}),{className:Me,style:Pe}=(0,o.useMemo)(()=>{const n=_.setClasses([t.CSS_CLASS.component.datePicker.wrapper,e.className]),a={};return a[t.CSS_VARS_RAW.component.datePicker.padding]=t.CSS_VARS.size[e.size].padding,a[t.CSS_VARS_RAW.component.datePicker.inputBackground]=t.CSS_VARS.genre.select[e.genre].background.index,a[t.CSS_VARS_RAW.component.datePicker.inputBackgroundHover]=t.CSS_VARS.genre.input[e.genre].background,a[t.CSS_VARS_RAW.component.datePicker.inputSegmentBackgroundActive]=t.CSS_VARS.palette.fillQuaternaryLight,a[t.CSS_VARS_RAW.component.datePicker.inputBorderColor]=t.CSS_VARS.genre.input[e.genre].border,a[t.CSS_VARS_RAW.component.datePicker.inputBorderColorHover]=t.CSS_VARS.genre.input[e.genre].border,a[t.CSS_VARS_RAW.component.datePicker.inputColor]=t.CSS_VARS.genre.input[e.genre].color,a[t.CSS_VARS_RAW.component.datePicker.inputColorHover]=t.CSS_VARS.genre.input[e.genre].color,a[t.CSS_VARS_RAW.component.datePicker.inputPadding]=H?`0px ${t.CSS_VARS.size[e.size].padding}`:`0px ${t.CSS_VARS.size[e.size].padding} 0px ${t.CSS_VARS.sizeValue[e.size].padding-2}px`,a[t.CSS_VARS_RAW.component.datePicker.inputHeight]=t.CSS_VARS.size[e.size].height,a[t.CSS_VARS_RAW.component.datePicker.inputRadius]=t.CSS_VARS.size[e.size].radius,a[t.CSS_VARS_RAW.component.datePicker.inputValueColor]=t.CSS_VARS.genre.input[e.genre].color,a[t.CSS_VARS_RAW.component.datePicker.inputPlaceholderColor]=t.CSS_VARS.genre.input[e.genre].placeholder,a[t.CSS_VARS_RAW.component.datePicker.buttonToggleRight]=`${t.CSS_VARS.size[e.size].padding}`,a[t.CSS_VARS_RAW.component.datePicker.buttonClearRight]=`${t.CSS_VARS.sizeValue[e.size].padding*2+t.CSS_VARS.sizeValue[e.size].height}px`,{className:n,style:_.setStyles([Object.keys(a).length?a:void 0,e.style])}},[e.className,e.style,H,e.genre,e.size]),{className:De,style:xe}=(0,o.useMemo)(()=>{const n=_.setClasses([e.classNamePopover]),a={};return a[t.CSS_VARS_RAW.component.datePicker.dayRadius]=`${K}px`,a[t.CSS_VARS_RAW.component.datePicker.dayBackgroundRest]=t.CSS_VARS.genre.datepicker[e.genre].background.index,a[t.CSS_VARS_RAW.component.datePicker.dayBackgroundHover]=t.CSS_VARS.genre.datepicker[e.genre].background.hover,a[t.CSS_VARS_RAW.component.datePicker.dayBackgroundWeekend]=t.CSS_VARS.genre.datepicker[e.genre].background.weekend,a[t.CSS_VARS_RAW.component.datePicker.dayBackgroundToday]=t.CSS_VARS.genre.datepicker[e.genre].background.today,a[t.CSS_VARS_RAW.component.datePicker.dayBackgroundChoice]=t.CSS_VARS.genre.datepicker[e.genre].background.choice,a[t.CSS_VARS_RAW.component.datePicker.dayBorderRest]=t.CSS_VARS.genre.datepicker[e.genre].border.index,a[t.CSS_VARS_RAW.component.datePicker.dayBorderWeekend]=t.CSS_VARS.genre.datepicker[e.genre].border.weekend,a[t.CSS_VARS_RAW.component.datePicker.dayBorderToday]=t.CSS_VARS.genre.datepicker[e.genre].border.today,a[t.CSS_VARS_RAW.component.datePicker.dayBorderChoice]=t.CSS_VARS.genre.datepicker[e.genre].border.choice,a[t.CSS_VARS_RAW.component.datePicker.dayBorderHover]=t.CSS_VARS.genre.datepicker[e.genre].border.hover,a[t.CSS_VARS_RAW.component.datePicker.dayColorRest]=t.CSS_VARS.genre.datepicker[e.genre].color.index,a[t.CSS_VARS_RAW.component.datePicker.dayColorHover]=t.CSS_VARS.genre.datepicker[e.genre].color.hover,a[t.CSS_VARS_RAW.component.datePicker.dayColorWeekend]=t.CSS_VARS.genre.datepicker[e.genre].color.weekend,a[t.CSS_VARS_RAW.component.datePicker.dayColorToday]=t.CSS_VARS.genre.datepicker[e.genre].color.today,a[t.CSS_VARS_RAW.component.datePicker.dayColorChoice]=t.CSS_VARS.genre.datepicker[e.genre].color.choice,{className:n,style:_.setStyles([Object.keys(a).length?a:void 0,{background:t.CSS_VARS.genre.popover[e.genre].background,border:`solid 1px ${t.CSS_VARS.genre.input[e.genre].border}`},e.stylePopover])}},[e.classNamePopover,e.stylePopover,e.genre,K]),Ye=(0,o.useMemo)(()=>P!=="manual"||e.isShowClearButton&&(N||y)&&!e?.isDisabled&&!e?.isReadOnly,[P,y,N,e.isShowClearButton,e?.isDisabled,e?.isReadOnly]);return(0,g.jsxs)(g.Fragment,{children:[(0,g.jsx)("div",{className:Me,style:Pe,tabIndex:-1,children:(0,g.jsxs)("div",{ref:me,tabIndex:-1,onClick:()=>{if(P==="select"){p();return}!r&&!e?.isReadOnly&&b(s.DD)},className:_.setClasses([t.CSS_CLASS.component.datePicker.inputWrapper,t.CSS_CLASS.transition.color,t.CSS_CLASS.control[e.isDisabled?"none":e.control??(Y||r?"boxShadowSelect":"boxShadowOnlyHover")]]),children:[P!=="select"?(0,g.jsx)("input",{name:e.name,"aria-label":e.ariaLabel??e.name,autoComplete:e.autoComplete,id:e.id,ref:W,type:"tel",inputMode:"numeric",tabIndex:0,disabled:e?.isDisabled||e?.isReadOnly,style:{position:"absolute",left:"-100dvw",top:0,width:"100%",height:"100%",opacity:0,border:"none",background:"transparent"},onKeyDown:I,onChange:Ve,onFocus:_e,onBlur:Re}):null,H?(0,g.jsx)(Oe.Typography,{sx:{size:16,line:1,isNoUserSelect:!0},style:{color:t.CSS_VARS.genre.input[e.genre].placeholder},children:e.labelPlaceholder}):h.sort.map((n,a)=>(0,g.jsxs)(o.Fragment,{children:[(0,g.jsx)("div",{className:_.setClasses([t.CSS_CLASS.component.datePicker.inputSegment,t.CSS_CLASS.transition.color,be,!!n.value&&t.CSS_CLASS.component.datePicker.inputSegmentHasValue,r===n.type&&t.CSS_CLASS.component.datePicker.inputSegmentIsActive]),style:ve,onClick:c=>{P!=="select"&&(c.preventDefault(),c.stopPropagation(),!(e?.isDisabled||e?.isReadOnly)&&n.setActive())},children:n.value||n.placeholder||""}),a!==h.sort.length-1&&(0,g.jsx)("span",{style:{width:"4px",pointerEvents:"none",textAlign:"center"},children:"."})]},n.type)),Ye?(0,g.jsxs)("div",{className:_.setClasses([t.CSS_CLASS.component.datePicker.listButton]),children:[e.isShowClearButton&&(N||y)&&!e?.isDisabled&&!e?.isReadOnly?(0,g.jsx)(T.Button,{genre:e.genre,size:"small",isWidthAsHeight:!0,isFullRadius:!0,isFullSize:!0,isHiddenBorder:!0,isOnlyIcon:!0,tabIndex:0,icons:[{name:"Close",type:"id"}],isDisabled:e?.isDisabled||e?.isReadOnly,onFocus:n=>{n.preventDefault(),n.stopPropagation(),b(null)},onClick:n=>{n.preventDefault(),n.stopPropagation(),d(null),V(),D(!1)}}):null,P!=="manual"?(0,g.jsx)(T.Button,{genre:e.genre,size:"small",isWidthAsHeight:!0,isFullRadius:!0,isFullSize:!0,isHiddenBorder:!0,isOnlyIcon:!0,icons:[{name:"Calendar",type:"id"}],isDisabled:e?.isDisabled||e?.isReadOnly,tabIndex:0,onFocus:n=>{n.preventDefault(),n.stopPropagation(),b(null)},onClick:n=>{n.preventDefault(),n.stopPropagation(),p()}}):null]}):null]})}),(0,g.jsx)(re.Popover,{style:xe,className:De,size:e.size,genre:e.genre,isOpen:Y,floatingStyles:ye,ref:he,control:"boxShadowSelect",isDisabledBoxShadow:!0,children:(0,g.jsxs)("div",{className:_.setClasses([t.CSS_CLASS.component.datePicker.dropdownList]),children:[(0,g.jsxs)(ae.Stack,{style:{justifyContent:"space-between",alignItems:"center"},children:[(0,g.jsx)(T.Button,{type:"button",isFullRadius:!0,icons:[{name:"Arrow2",type:"id",turn:90}],isWidthAsHeight:!0,genre:e.genre,size:"small",onClick:()=>ke(),isHidden:X,isDisabled:X}),(0,g.jsxs)(ae.Stack,{style:{gap:"8px"},children:[(0,g.jsx)(R.SelectMonth,{isToggleWhenClickSelectListOption:!0,monthsLocale:e.locale.months,genre:e.genre,size:"small",value:(i??u).clone().startOf("month").utc().valueOf(),isOnClickOptionClose:!0,isStayValueAfterSelect:!0,isOnlyColorInSelectListOption:!0,isCenter:!0,isShortLabel:!0,refFloating:Z,onChange:n=>{n&&v(n,!0)},dateMin:e.dateMin,dateMax:e.dateMax,style:{width:"60px"}}),(0,g.jsx)(R.SelectYear,{isToggleWhenClickSelectListOption:!0,genre:e.genre,size:"small",refFloating:J,value:(i??u).clone().startOf("year").utc().valueOf(),onChange:n=>{n&&v(n,!0)},isOnClickOptionClose:!0,isStayValueAfterSelect:!0,isOnlyColorInSelectListOption:!0,isCenter:!0,dateMin:e.dateMin,dateMax:e.dateMax,style:{width:"60px"}})]}),(0,g.jsx)(T.Button,{type:"button",onClick:()=>Ae(),isWidthAsHeight:!0,isFullRadius:!0,icons:[{name:"Arrow2",type:"id",turn:-90}],genre:e.genre,size:"small",isDisabled:U,isHidden:U})]}),(0,g.jsxs)("div",{className:_.setClasses([t.CSS_CLASS.component.datePicker.dropdownListDays]),style:_.setStyles([{[t.CSS_VARS_RAW.component.datePicker.rows]:de}]),children:[ue.map((n,a)=>(0,g.jsx)("div",{className:_.setClasses([t.CSS_CLASS.component.datePicker.dayOfWeek,ee,t.CSS_CLASS.transition.color]),style:_.setStyles([te,{[t.CSS_VARS_RAW.component.datePicker.row]:O[0]?.weekOfMonth-1,[t.CSS_VARS_RAW.component.datePicker.column]:a+1}]),tabIndex:-1,children:n.label},`${n.label}-${a}`)),O.map(n=>(0,g.jsx)("div",{className:_.setClasses([t.CSS_CLASS.component.datePicker.day,ee,t.CSS_CLASS.control[n.isDisabled||n.isChoice?"none":"boxShadow"],t.CSS_CLASS.transition.color,n.isDisabled&&t.CSS_CLASS.component.datePicker.dayIsHidden,n.isToday&&t.CSS_CLASS.component.datePicker.dayIsToday,n.isWeekend&&t.CSS_CLASS.component.datePicker.dayIsWeekend,n.isChoice&&t.CSS_CLASS.component.datePicker.dayIsChoice,!n.isCurrentMonth&&t.CSS_CLASS.component.datePicker.dayIsNotCurrentMonth]),style:_.setStyles([te,{[t.CSS_VARS_RAW.component.datePicker.row]:n?.weekOfMonth+1,[t.CSS_VARS_RAW.component.datePicker.column]:n.dayOfWeek}]),onClick:()=>{n.isDisabled||(v(n.value,!0),e.isOnClickClose&&F())},tabIndex:n.isDisabled?-1:0,children:n.labelNumber},n.value))]})]})}),(e?.error?.isError||ce)&&(0,g.jsx)(we.ErrorMessage,{size:e?.error?.size??e.size,sxTypography:{size:16,weight:"400",...e?.error?.sxTypography},...e.error})]})},Ie=/^\d{4}-\d{2}-\d{2}$/,Le=/^(\d{1,2})\/(\d{1,2})\/(\d{4})$/;function je(e,d,i,S){const u=e,f=d,l=i[f]??"";if(f===s.DD){if(l.length>=2){S.default[f].setValue(u);return}if(l===""){S.default[f].setValue(u);return}const C=l+u,y=Number(C);if(y>31){S.default[f].setValue(u);return}if(y===0){S.default[f].setValue(u);return}S.default[f].setValue(C),S.default[f].onNextSegment()}else if(f===s.MM){if(l.length>=2){S.default[f].setValue(u);return}if(l===""){S.default[f].setValue(u);return}const C=l+u,y=Number(C);if(y>12){S.default[f].setValue(u);return}if(y===0){S.default[f].setValue(u);return}S.default[f].setValue(C),(C.length===2||C.length===1&&Number(C)>1)&&S.default[f].onNextSegment()}else if(f===s.YYYY){if(l.length>=4){S.default[f].setValue(u);return}const C=l+u;S.default[f].setValue(C)}}function Te(e){if(Ie.test(e)){const[i,S,u]=e.split("-").map(Number);return le(i,S,u)}const d=Le.exec(e);if(d){const[i,S,u,f]=d,l=Number(S),C=Number(u),y=Number(f);let V,r;return l>12?(r=l,V=C):(V=l,r=C),le(y,V,r)}return null}function le(e,d,i){const S=new Date(e,d-1,i);return S.getFullYear()===e&&S.getMonth()===d-1&&S.getDate()===i?{year:e,month:d,day:i}:null}function Ee(e){const i=Math.floor(e/7);return e%7>0?i+1:i}function ie(e,d){const i=d.indexOf(e);return i<d.length-1?d[i+1]:d[0]}function se(e,d){const i=d.indexOf(e);return i>0?d[i-1]:d[d.length-1]}function $(e,d,i,S){const u=e.DD,f=e.MM,l=e.YYYY,C=u===""?NaN:Number(u),y=f===""?NaN:Number(f),V=l===""?NaN:Number(l),r=u!==""||f!==""||l!=="";if(!Number.isNaN(C)&&!Number.isNaN(y)&&!Number.isNaN(V)){const b=R.hooks.utc(`${C}.${y}.${V}`,"D.M.YYYY",!0).startOf("day");b.isValid()?d?.(b.valueOf()):i?.()}else S?.(r)}Object.defineProperty(exports,"DatePicker",{enumerable:!0,get:function(){return ze}});
|
|
1
|
+
const Fe=require("./chunk-Dd8m0Ver.cjs"),t=require("./utils-DtinAjAU.cjs"),_=require("./functions-Dwo54amB.cjs"),ae=require("./component-jsn2T8Hu.cjs"),oe=require("./hooks-use-typography-styles.cjs.js"),T=require("./button-BuPpgfL_.cjs"),we=require("./error-DzkkNL2H.cjs"),re=require("./popover-CgwGn-55.cjs"),Oe=require("./typography-DcxhX_9e.cjs"),R=require("./select-B0adRX2_.cjs");require("./component-stack.cjs.js");let g=require("react/jsx-runtime"),o=require("react");var s=(function(e){return e.DD="DD",e.MM="MM",e.YYYY="YYYY",e})({}),Be=["mo","tu","we","th","fr","sa","su"],ze=e=>{const{onChange:d}=e,[i,S]=(0,o.useState)(null),[u,f]=(0,o.useState)(R.hooks(e.dateDefault).utc()),[l,C]=(0,o.useState)({[s.DD]:"",[s.MM]:"",[s.YYYY]:""});(0,o.useEffect)(()=>{E.current=l},[l]);const y=(0,o.useMemo)(()=>l[s.DD]!==""||l[s.MM]!==""||l[s.YYYY]!=="",[l]),V=(0,o.useCallback)(()=>{C({[s.DD]:"",[s.MM]:"",[s.YYYY]:""})},[]),[r,b]=(0,o.useState)(null),[ce,D]=(0,o.useState)(!1),x=(0,o.useMemo)(()=>!e.mode||e.mode.length===0?[s.DD,s.MM,s.YYYY]:new Set(e.mode).size!==e.mode.length?[s.DD,s.MM,s.YYYY]:e.mode,[e.mode]),P=(0,o.useMemo)(()=>e.type?e.type:"manualAndSelect",[e.type]),h=(0,o.useMemo)(()=>{const n=[s.DD,s.MM,s.YYYY],a=Object.fromEntries(n.map(c=>[c,{type:c,value:l[c],placeholder:e.locale.inputs[c===s.DD?"day":c===s.MM?"month":"year"],isFirst:x[0]===c,isLast:x[x.length-1]===c,segmentNext:ie(c,x),segmentPrev:se(c,x),onNextSegment:()=>b(ie(c,x)),onPrevSegment:()=>b(se(c,x)),setValue:A=>C(m=>({...m,[c]:A})),setActive:()=>b(c)}]));return{sort:x.map(c=>a[c]).filter(Boolean),default:a}},[e,x,l]),ue=(0,o.useMemo)(()=>Be.map((n,a)=>({index:a,label:e.locale.weeks.find(c=>c.value===n)?.localeShort??n.toUpperCase()})),[e.locale.weeks]),O=(0,o.useMemo)(()=>{const n=R.hooks.utc(),a=i??u,c=a.clone().startOf("month"),A=a.clone().endOf("month"),m=e.dateMin?R.hooks.utc(e.dateMin):null,M=e.dateMax?R.hooks.utc(e.dateMax):null,L=c.clone().subtract(c.isoWeekday()-1,"days"),j=A.clone().add(7-A.isoWeekday(),"days"),w=[],k=L.clone();for(;k<=j;){const q=k.isBetween(c,A,"day","[]");w.push({value:k.valueOf(),labelString:k.format("dd"),labelNumber:k.date(),dayOfWeek:k.isoWeekday(),isWeekend:[6,7].includes(k.isoWeekday()),weekOfMonth:Math.ceil((w.length+1)/7),isToday:k.isSame(n,"day"),isCurrentMonth:q,isChoice:k.valueOf()===i?.valueOf(),isDisabled:!!(m&&k.isBefore(m,"day")||M&&k.isAfter(M,"day"))}),k.add(1,"day")}return w},[i,u,e.dateMax,e.dateMin]),de=(0,o.useMemo)(()=>Ee(O.length)+1,[O]),K=(0,o.useMemo)(()=>t.CSS_VARS.sizeValue[e.size].radius,[e.size]),Se=(0,o.useMemo)(()=>t.CSS_VARS.sizeValue[e.size].padding,[e.size]),N=(0,o.useMemo)(()=>i!==null,[i]),U=(0,o.useMemo)(()=>{const n=(i??u).clone().add(1,"month").startOf("month");return e.dateMax?n.isAfter(R.hooks.utc(e.dateMax),"month"):!1},[i,e.dateMax,u]),X=(0,o.useMemo)(()=>{const n=(i??u).clone().subtract(1,"month").startOf("month");return e.dateMin?n.isBefore(R.hooks.utc(e.dateMin),"month"):!1},[i,e.dateMin,u]),[B,G]=(0,o.useState)(!1),E=(0,o.useRef)(l),z=(0,o.useRef)(!1),Q=(0,o.useRef)(""),Z=(0,o.useRef)(null),J=(0,o.useRef)(null),W=(0,o.useRef)(null),fe=(0,o.useCallback)(()=>{e.onFocus?.()},[e.onFocus]),ge=(0,o.useCallback)(()=>{e.onBlur?.()},[e.onBlur]),Ce=(0,o.useCallback)(()=>{b(null)},[]),{isOpen:Y,refReference:me,refFloating:he,floatingStyles:ye,close:F,toggle:p}=re.usePopover({isFocusTrap:!0,placement:"bottom-start",offset:Se,mode:"independence",isClickOutside:!0,refsExcludeClickOutside:[Z,J],isDisabled:e?.isDisabled||e?.isReadOnly,onFocus:fe,onBlur:ge,onBlurReference:Ce}),H=(0,o.useMemo)(()=>!!(!B&&!N&&e.labelPlaceholder&&(P==="select"||!Y)&&!y&&!r),[B,N,Y,e.labelPlaceholder,y,r,P]),v=(0,o.useCallback)((n,a,c)=>{const A=R.hooks(n).utc(),m=A.clone().date().toString(),M=(A.clone().month()+1).toString(),L=m.padStart(2,"0"),j=M.padStart(2,"0"),w=A.clone().year().toString(),k=c?.[s.DD],q=c?.[s.MM],Ne=c?.[s.YYYY],We=L===k&&j===q&&Ne===w,ne=i?.isSame(A,"day");ne||(S(A),d(A.valueOf())),(!ne||c)&&!We&&C({[s.DD]:a?L:m,[s.MM]:a?j:M,[s.YYYY]:w})},[i,d]),I=(0,o.useCallback)(n=>{const a=n.key,c=["ArrowLeft","ArrowRight","ArrowUp","ArrowDown","Backspace","Delete","Tab","Enter"],A=/^\d$/.test(a);if(!(A||c.includes(a)||n.ctrlKey||n.metaKey)){n.preventDefault();return}if(r&&h.default[r]){if(A&&(je(a,r,l,h),n.preventDefault(),n.stopPropagation()),a==="Tab"&&(h.default[r].isLast?W?.current?.blur():(n.preventDefault(),h.default[r].onNextSegment())),a==="Enter"&&(n.preventDefault(),n.stopPropagation()),a==="Backspace"||a==="Delete"){if(r===s.DD)if(l.DD!==""){const m=l.DD;if(m.length===1)h.default[r].setValue("");else{const M=m.slice(0,-1);h.default[r].setValue(M)}}else h.default[r].onPrevSegment();else if(r===s.MM)if(l.MM!==""){const m=l.MM;if(m.length===1)h.default[r].setValue("");else{const M=m.slice(0,-1);h.default[r].setValue(M)}}else h.default[r].onPrevSegment();else if(r===s.YYYY)if(l.YYYY!==""){const m=l.YYYY;if(m.length===1)h.default[r].setValue("");else{const M=m.slice(0,-1);h.default[r].setValue(M)}}else h.default[r].onPrevSegment();n.preventDefault(),n.stopPropagation()}(a==="ArrowLeft"||a==="ArrowDown")&&(n.preventDefault(),h.default[r].onPrevSegment()),(a==="ArrowRight"||a==="ArrowUp")&&(n.preventDefault(),h.default[r].onNextSegment())}},[r,l,h.default,h]),Ae=(0,o.useCallback)(()=>{v((i??u).clone().add(1,"month").valueOf(),!0)},[i,v,u]),ke=(0,o.useCallback)(()=>{v((i??u).clone().subtract(1,"month").valueOf(),!0)},[i,v,u]),_e=(0,o.useCallback)(()=>{P!=="select"&&(G(!0),r||b(s.DD))},[r,P]),Re=(0,o.useCallback)(()=>{G(!1),Y||e.onBlur?.()},[Y,e.onBlur]),Ve=(0,o.useCallback)(n=>{const a=n.target.value,c=Te(a);if(c){C({DD:String(c.day).padStart(2,"0"),MM:String(c.month).padStart(2,"0"),YYYY:String(c.year)}),W.current&&(W.current.value="");return}const A=Q.current,m=a.length>A.length?a.slice(-1):null;Q.current=a,m&&/^\d$/.test(m)&&I({key:m,preventDefault:()=>{},stopPropagation:()=>{}}),a.length<A.length&&I({key:"Backspace",preventDefault:()=>{},stopPropagation:()=>{}}),W.current&&(W.current.value="")},[I]);(0,o.useEffect)(()=>{N&&!z.current&&(z.current=!0)},[N]),(0,o.useEffect)(()=>{f(R.hooks(e.dateDefault).utc())},[e.dateDefault]),(0,o.useEffect)(()=>{if(S(e.value||e.defaultValue?R.hooks(e.value??e.defaultValue).utc():null),e.value){const n=R.hooks(e.value).utc();C({[s.DD]:n.date().toString().padStart(2,"0"),[s.MM]:(n.month()+1).toString().padStart(2,"0"),[s.YYYY]:n.year().toString()})}},[e.value,e.defaultValue]),(0,o.useEffect)(()=>{r||$(l,n=>{v(n,!0,l),D(!1)},()=>{d(null),D(!0)},n=>{n||(z.current&&(d(null),z.current=!1),D(!1))})},[v,d,l,r]),(0,o.useEffect)(()=>{!Y&&!B&&y&&!r&&$(l,()=>{},()=>{d(null),V(),D(!1)},()=>{d(null),V(),D(!1)})},[V,l,Y,B,d,y,r]),(0,o.useEffect)(()=>{r&&$(E.current,n=>{v(n,!0,E.current),D(!1)},()=>{D(!0)},n=>{n||D(!1)})},[v,r]),(0,o.useEffect)(()=>{r&&(F(),W?.current?.focus())},[r,F]);const{className:ee,style:te}=oe.useTypographyStyles({sx:{variant:t.EXTRA_VALUE.sizeToController.small,weight:"500",...e?.sxTypography}}),{className:be,style:ve}=oe.useTypographyStyles({sx:{size:16,weight:e.isBold?"700":"400",...e?.sxTypography}}),{className:Me,style:Pe}=(0,o.useMemo)(()=>{const n=_.setClasses([t.CSS_CLASS.component.datePicker.wrapper,e.className]),a={};return a[t.CSS_VARS_RAW.component.datePicker.padding]=t.CSS_VARS.size[e.size].padding,a[t.CSS_VARS_RAW.component.datePicker.inputBackground]=t.CSS_VARS.genre.select[e.genre].background.index,a[t.CSS_VARS_RAW.component.datePicker.inputBackgroundHover]=t.CSS_VARS.genre.input[e.genre].background,a[t.CSS_VARS_RAW.component.datePicker.inputSegmentBackgroundActive]=t.CSS_VARS.palette.fillQuaternaryLight,a[t.CSS_VARS_RAW.component.datePicker.inputBorderColor]=t.CSS_VARS.genre.input[e.genre].border,a[t.CSS_VARS_RAW.component.datePicker.inputBorderColorHover]=t.CSS_VARS.genre.input[e.genre].border,a[t.CSS_VARS_RAW.component.datePicker.inputColor]=t.CSS_VARS.genre.input[e.genre].color,a[t.CSS_VARS_RAW.component.datePicker.inputColorHover]=t.CSS_VARS.genre.input[e.genre].color,a[t.CSS_VARS_RAW.component.datePicker.inputPadding]=H?`0px ${t.CSS_VARS.size[e.size].padding}`:`0px ${t.CSS_VARS.size[e.size].padding} 0px ${t.CSS_VARS.sizeValue[e.size].padding-2}px`,a[t.CSS_VARS_RAW.component.datePicker.inputHeight]=t.CSS_VARS.size[e.size].height,a[t.CSS_VARS_RAW.component.datePicker.inputRadius]=t.CSS_VARS.size[e.size].radius,a[t.CSS_VARS_RAW.component.datePicker.inputValueColor]=t.CSS_VARS.genre.input[e.genre].color,a[t.CSS_VARS_RAW.component.datePicker.inputPlaceholderColor]=t.CSS_VARS.genre.input[e.genre].placeholder,a[t.CSS_VARS_RAW.component.datePicker.buttonToggleRight]=`${t.CSS_VARS.size[e.size].padding}`,a[t.CSS_VARS_RAW.component.datePicker.buttonClearRight]=`${t.CSS_VARS.sizeValue[e.size].padding*2+t.CSS_VARS.sizeValue[e.size].height}px`,{className:n,style:_.setStyles([Object.keys(a).length?a:void 0,e.style])}},[e.className,e.style,H,e.genre,e.size]),{className:De,style:xe}=(0,o.useMemo)(()=>{const n=_.setClasses([e.classNamePopover]),a={};return a[t.CSS_VARS_RAW.component.datePicker.dayRadius]=`${K}px`,a[t.CSS_VARS_RAW.component.datePicker.dayBackgroundRest]=t.CSS_VARS.genre.datepicker[e.genre].background.index,a[t.CSS_VARS_RAW.component.datePicker.dayBackgroundHover]=t.CSS_VARS.genre.datepicker[e.genre].background.hover,a[t.CSS_VARS_RAW.component.datePicker.dayBackgroundWeekend]=t.CSS_VARS.genre.datepicker[e.genre].background.weekend,a[t.CSS_VARS_RAW.component.datePicker.dayBackgroundToday]=t.CSS_VARS.genre.datepicker[e.genre].background.today,a[t.CSS_VARS_RAW.component.datePicker.dayBackgroundChoice]=t.CSS_VARS.genre.datepicker[e.genre].background.choice,a[t.CSS_VARS_RAW.component.datePicker.dayBorderRest]=t.CSS_VARS.genre.datepicker[e.genre].border.index,a[t.CSS_VARS_RAW.component.datePicker.dayBorderWeekend]=t.CSS_VARS.genre.datepicker[e.genre].border.weekend,a[t.CSS_VARS_RAW.component.datePicker.dayBorderToday]=t.CSS_VARS.genre.datepicker[e.genre].border.today,a[t.CSS_VARS_RAW.component.datePicker.dayBorderChoice]=t.CSS_VARS.genre.datepicker[e.genre].border.choice,a[t.CSS_VARS_RAW.component.datePicker.dayBorderHover]=t.CSS_VARS.genre.datepicker[e.genre].border.hover,a[t.CSS_VARS_RAW.component.datePicker.dayColorRest]=t.CSS_VARS.genre.datepicker[e.genre].color.index,a[t.CSS_VARS_RAW.component.datePicker.dayColorHover]=t.CSS_VARS.genre.datepicker[e.genre].color.hover,a[t.CSS_VARS_RAW.component.datePicker.dayColorWeekend]=t.CSS_VARS.genre.datepicker[e.genre].color.weekend,a[t.CSS_VARS_RAW.component.datePicker.dayColorToday]=t.CSS_VARS.genre.datepicker[e.genre].color.today,a[t.CSS_VARS_RAW.component.datePicker.dayColorChoice]=t.CSS_VARS.genre.datepicker[e.genre].color.choice,{className:n,style:_.setStyles([Object.keys(a).length?a:void 0,{background:t.CSS_VARS.genre.popover[e.genre].background,border:`solid 1px ${t.CSS_VARS.genre.input[e.genre].border}`},e.stylePopover])}},[e.classNamePopover,e.stylePopover,e.genre,K]),Ye=(0,o.useMemo)(()=>P!=="manual"||e.isShowClearButton&&(N||y)&&!e?.isDisabled&&!e?.isReadOnly,[P,y,N,e.isShowClearButton,e?.isDisabled,e?.isReadOnly]);return(0,g.jsxs)(g.Fragment,{children:[(0,g.jsx)("div",{className:Me,style:Pe,tabIndex:-1,children:(0,g.jsxs)("div",{ref:me,tabIndex:-1,onClick:()=>{if(P==="select"){p();return}!r&&!e?.isReadOnly&&b(s.DD)},className:_.setClasses([t.CSS_CLASS.component.datePicker.inputWrapper,t.CSS_CLASS.transition.color,t.CSS_CLASS.control[e.isDisabled?"none":e.control??(Y||r?"boxShadowSelect":"boxShadowOnlyHover")]]),children:[P!=="select"?(0,g.jsx)("input",{name:e.name,"aria-label":e.ariaLabel??e.name,autoComplete:e.autoComplete,id:e.id,ref:W,type:"tel",inputMode:"numeric",tabIndex:0,disabled:e?.isDisabled||e?.isReadOnly,style:{position:"absolute",left:"-100dvw",top:0,width:"100%",height:"100%",opacity:0,border:"none",background:"transparent"},onKeyDown:I,onChange:Ve,onFocus:_e,onBlur:Re}):null,H?(0,g.jsx)(Oe.Typography,{sx:{size:16,line:1,isNoUserSelect:!0},style:{color:t.CSS_VARS.genre.input[e.genre].placeholder},children:e.labelPlaceholder}):h.sort.map((n,a)=>(0,g.jsxs)(o.Fragment,{children:[(0,g.jsx)("div",{className:_.setClasses([t.CSS_CLASS.component.datePicker.inputSegment,t.CSS_CLASS.transition.color,be,!!n.value&&t.CSS_CLASS.component.datePicker.inputSegmentHasValue,r===n.type&&t.CSS_CLASS.component.datePicker.inputSegmentIsActive]),style:ve,onClick:c=>{P!=="select"&&(c.preventDefault(),c.stopPropagation(),!(e?.isDisabled||e?.isReadOnly)&&n.setActive())},children:n.value||n.placeholder||""}),a!==h.sort.length-1&&(0,g.jsx)("span",{style:{width:"4px",pointerEvents:"none",textAlign:"center"},children:"."})]},n.type)),Ye?(0,g.jsxs)("div",{className:_.setClasses([t.CSS_CLASS.component.datePicker.listButton]),children:[e.isShowClearButton&&(N||y)&&!e?.isDisabled&&!e?.isReadOnly?(0,g.jsx)(T.Button,{genre:e.genre,size:"small",isWidthAsHeight:!0,isFullRadius:!0,isFullSize:!0,isHiddenBorder:!0,isOnlyIcon:!0,tabIndex:0,icons:[{name:"Close",type:"id"}],isDisabled:e?.isDisabled||e?.isReadOnly,onFocus:n=>{n.preventDefault(),n.stopPropagation(),b(null)},onClick:n=>{n.preventDefault(),n.stopPropagation(),d(null),V(),D(!1)}}):null,P!=="manual"?(0,g.jsx)(T.Button,{genre:e.genre,size:"small",isWidthAsHeight:!0,isFullRadius:!0,isFullSize:!0,isHiddenBorder:!0,isOnlyIcon:!0,icons:[{name:"Calendar",type:"id"}],isDisabled:e?.isDisabled||e?.isReadOnly,tabIndex:0,onFocus:n=>{n.preventDefault(),n.stopPropagation(),b(null)},onClick:n=>{n.preventDefault(),n.stopPropagation(),p()}}):null]}):null]})}),(0,g.jsx)(re.Popover,{style:xe,className:De,size:e.size,genre:e.genre,isOpen:Y,floatingStyles:ye,ref:he,control:"boxShadowSelect",isDisabledBoxShadow:!0,children:(0,g.jsxs)("div",{className:_.setClasses([t.CSS_CLASS.component.datePicker.dropdownList]),children:[(0,g.jsxs)(ae.Stack,{style:{justifyContent:"space-between",alignItems:"center"},children:[(0,g.jsx)(T.Button,{type:"button",isFullRadius:!0,icons:[{name:"Arrow2",type:"id",turn:90}],isWidthAsHeight:!0,genre:e.genre,size:"small",onClick:()=>ke(),isHidden:X,isDisabled:X}),(0,g.jsxs)(ae.Stack,{style:{gap:"8px"},children:[(0,g.jsx)(R.SelectMonth,{isToggleWhenClickSelectListOption:!0,monthsLocale:e.locale.months,genre:e.genre,size:"small",value:(i??u).clone().startOf("month").utc().valueOf(),isOnClickOptionClose:!0,isStayValueAfterSelect:!0,isOnlyColorInSelectListOption:!0,isCenter:!0,isShortLabel:!0,refFloating:Z,onChange:n=>{n&&v(n,!0)},dateMin:e.dateMin,dateMax:e.dateMax,style:{width:"60px"}}),(0,g.jsx)(R.SelectYear,{isToggleWhenClickSelectListOption:!0,genre:e.genre,size:"small",refFloating:J,value:(i??u).clone().startOf("year").utc().valueOf(),onChange:n=>{n&&v(n,!0)},isOnClickOptionClose:!0,isStayValueAfterSelect:!0,isOnlyColorInSelectListOption:!0,isCenter:!0,dateMin:e.dateMin,dateMax:e.dateMax,style:{width:"60px"}})]}),(0,g.jsx)(T.Button,{type:"button",onClick:()=>Ae(),isWidthAsHeight:!0,isFullRadius:!0,icons:[{name:"Arrow2",type:"id",turn:-90}],genre:e.genre,size:"small",isDisabled:U,isHidden:U})]}),(0,g.jsxs)("div",{className:_.setClasses([t.CSS_CLASS.component.datePicker.dropdownListDays]),style:_.setStyles([{[t.CSS_VARS_RAW.component.datePicker.rows]:de}]),children:[ue.map((n,a)=>(0,g.jsx)("div",{className:_.setClasses([t.CSS_CLASS.component.datePicker.dayOfWeek,ee,t.CSS_CLASS.transition.color]),style:_.setStyles([te,{[t.CSS_VARS_RAW.component.datePicker.row]:O[0]?.weekOfMonth-1,[t.CSS_VARS_RAW.component.datePicker.column]:a+1}]),tabIndex:-1,children:n.label},`${n.label}-${a}`)),O.map(n=>(0,g.jsx)("div",{className:_.setClasses([t.CSS_CLASS.component.datePicker.day,ee,t.CSS_CLASS.control[n.isDisabled||n.isChoice?"none":"boxShadow"],t.CSS_CLASS.transition.color,n.isDisabled&&t.CSS_CLASS.component.datePicker.dayIsHidden,n.isToday&&t.CSS_CLASS.component.datePicker.dayIsToday,n.isWeekend&&t.CSS_CLASS.component.datePicker.dayIsWeekend,n.isChoice&&t.CSS_CLASS.component.datePicker.dayIsChoice,!n.isCurrentMonth&&t.CSS_CLASS.component.datePicker.dayIsNotCurrentMonth]),style:_.setStyles([te,{[t.CSS_VARS_RAW.component.datePicker.row]:n?.weekOfMonth+1,[t.CSS_VARS_RAW.component.datePicker.column]:n.dayOfWeek}]),onClick:()=>{n.isDisabled||(v(n.value,!0),e.isOnClickClose&&F())},tabIndex:n.isDisabled?-1:0,children:n.labelNumber},n.value))]})]})}),(e?.error?.isError||ce)&&(0,g.jsx)(we.ErrorMessage,{size:e?.error?.size??e.size,sxTypography:{size:16,weight:"400",...e?.error?.sxTypography},...e.error})]})},Ie=/^\d{4}-\d{2}-\d{2}$/,Le=/^(\d{1,2})\/(\d{1,2})\/(\d{4})$/;function je(e,d,i,S){const u=e,f=d,l=i[f]??"";if(f===s.DD){if(l.length>=2){S.default[f].setValue(u);return}if(l===""){S.default[f].setValue(u);return}const C=l+u,y=Number(C);if(y>31){S.default[f].setValue(u);return}if(y===0){S.default[f].setValue(u);return}S.default[f].setValue(C),S.default[f].onNextSegment()}else if(f===s.MM){if(l.length>=2){S.default[f].setValue(u);return}if(l===""){S.default[f].setValue(u);return}const C=l+u,y=Number(C);if(y>12){S.default[f].setValue(u);return}if(y===0){S.default[f].setValue(u);return}S.default[f].setValue(C),(C.length===2||C.length===1&&Number(C)>1)&&S.default[f].onNextSegment()}else if(f===s.YYYY){if(l.length>=4){S.default[f].setValue(u);return}const C=l+u;S.default[f].setValue(C)}}function Te(e){if(Ie.test(e)){const[i,S,u]=e.split("-").map(Number);return le(i,S,u)}const d=Le.exec(e);if(d){const[i,S,u,f]=d,l=Number(S),C=Number(u),y=Number(f);let V,r;return l>12?(r=l,V=C):(V=l,r=C),le(y,V,r)}return null}function le(e,d,i){const S=new Date(e,d-1,i);return S.getFullYear()===e&&S.getMonth()===d-1&&S.getDate()===i?{year:e,month:d,day:i}:null}function Ee(e){const i=Math.floor(e/7);return e%7>0?i+1:i}function ie(e,d){const i=d.indexOf(e);return i<d.length-1?d[i+1]:d[0]}function se(e,d){const i=d.indexOf(e);return i>0?d[i-1]:d[d.length-1]}function $(e,d,i,S){const u=e.DD,f=e.MM,l=e.YYYY,C=u===""?NaN:Number(u),y=f===""?NaN:Number(f),V=l===""?NaN:Number(l),r=u!==""||f!==""||l!=="";if(!Number.isNaN(C)&&!Number.isNaN(y)&&!Number.isNaN(V)){const b=R.hooks.utc(`${C}.${y}.${V}`,"D.M.YYYY",!0).startOf("day");b.isValid()?d?.(b.valueOf()):i?.()}else S?.(r)}Object.defineProperty(exports,"DatePicker",{enumerable:!0,get:function(){return ze}});
|
|
2
2
|
|
|
3
|
-
//# sourceMappingURL=date-picker-
|
|
3
|
+
//# sourceMappingURL=date-picker-CPNNIEa-.cjs.map
|