@cgi-learning-hub/ui
Version:
@cgi-learning-hub/ui is an open-source React component library that implements UI for HUB's features
8 lines (7 loc) • 16.6 kB
JavaScript
const Se=require("react"),L=require("./generateUtilityClasses-CENS22bI.cjs"),e=require("./index-kjfz41UI.cjs"),Re=require("./index-D_kvDIOz.cjs"),k=require("./DefaultPropsProvider-C1g4BXET.cjs"),Y=require("./useSlot-C-aMxEm0.cjs"),V=require("react/jsx-runtime"),xe=require("./useSlotProps-BVVfeURp.cjs"),ke=require("./isHostComponent-PydJW4A4.cjs"),De=require("./Paper-DcVuAxq3.cjs"),oe=require("./ownerDocument-4MViGo3k.cjs"),te=require("./ownerWindow-DDHucZi0.cjs"),je=require("./debounce-DpCj7ugL.cjs"),Ne=require("./Grow-6zwoqUfO.cjs"),Ie=require("./mergeSlotProps-CL6s5QgQ.cjs"),ye=require("./Modal-DB9K8sJI.cjs"),Fe=require("./integerPropType-CR7ytEJG.cjs"),qe=require("./chainPropTypes-CEUi6Jb4.cjs"),Le=require("./refType-DJyA--UV.cjs"),ze=require("./elementTypeAcceptingRef-vjR5jGLx.cjs"),re=require("./Portal-Cmv45gpL.cjs"),Ke=require("./useEventCallback-BxpcFap0.cjs"),Ue=require("./useForkRef-CFhhTu-Q.cjs"),He=require("./List-eQ4D0MvJ.cjs");function _e(o){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(o){for(const r in o)if(r!=="default"){const E=Object.getOwnPropertyDescriptor(o,r);Object.defineProperty(t,r,E.get?E:{enumerable:!0,get:()=>o[r]})}}return t.default=o,Object.freeze(t)}const u=_e(Se);function ee(o,t,r){return o===t?o.firstChild:t&&t.nextElementSibling?t.nextElementSibling:r?null:o.firstChild}function le(o,t,r){return o===t?r?o.firstChild:o.lastChild:t&&t.previousElementSibling?t.previousElementSibling:r?null:o.lastChild}function de(o,t){if(t===void 0)return!0;let r=o.innerText;return r===void 0&&(r=o.textContent),r=r.trim().toLowerCase(),r.length===0?!1:t.repeating?r[0]===t.keys[0]:r.startsWith(t.keys.join(""))}function B(o,t,r,E,O,h){let m=!1,d=O(o,t,t?r:!1);for(;d;){if(d===o.firstChild){if(m)return!1;m=!0}const T=E?!1:d.disabled||d.getAttribute("aria-disabled")==="true";if(!d.hasAttribute("tabindex")||!de(d,h)||T)d=O(o,d,r);else return d.focus(),!0}return!1}const Pe=u.forwardRef(function(t,r){const{actions:E,autoFocus:O=!1,autoFocusItem:h=!1,children:m,className:d,disabledItemsFocusable:T=!1,disableListWrap:S=!1,onKeyDown:D,variant:z="selectedMenu",...U}=t,i=u.useRef(null),b=u.useRef({keys:[],repeating:!0,previousKeyMatched:!0,lastTime:null});Ke.useEnhancedEffect(()=>{O&&i.current.focus()},[O]),u.useImperativeHandle(E,()=>({adjustStyleForScrollbar:(n,{direction:a})=>{const l=!i.current.style.width;if(n.clientHeight<i.current.clientHeight&&l){const w=`${ye.getScrollbarSize(te.ownerWindow(n))}px`;i.current.style[a==="rtl"?"paddingLeft":"paddingRight"]=w,i.current.style.width=`calc(100% + ${w})`}return i.current}}),[]);const H=n=>{const a=i.current,l=n.key;if(n.ctrlKey||n.metaKey||n.altKey){D&&D(n);return}const j=oe.ownerDocument(a).activeElement;if(l==="ArrowDown")n.preventDefault(),B(a,j,S,T,ee);else if(l==="ArrowUp")n.preventDefault(),B(a,j,S,T,le);else if(l==="Home")n.preventDefault(),B(a,null,S,T,ee);else if(l==="End")n.preventDefault(),B(a,null,S,T,le);else if(l.length===1){const c=b.current,R=l.toLowerCase(),K=performance.now();c.keys.length>0&&(K-c.lastTime>500?(c.keys=[],c.repeating=!0,c.previousKeyMatched=!0):c.repeating&&R!==c.keys[0]&&(c.repeating=!1)),c.lastTime=K,c.keys.push(R);const N=j&&!c.repeating&&de(j,c);c.previousKeyMatched&&(N||B(a,j,!1,T,ee,c))?n.preventDefault():c.previousKeyMatched=!1}D&&D(n)},I=Ue.useForkRef(i,r);let p=-1;u.Children.forEach(m,(n,a)=>{if(!u.isValidElement(n)){p===a&&(p+=1,p>=m.length&&(p=-1));return}process.env.NODE_ENV!=="production"&&L.reactIsExports.isFragment(n)&&console.error(["MUI: The Menu component doesn't accept a Fragment as a child.","Consider providing an array instead."].join(`
`)),n.props.disabled||(z==="selectedMenu"&&n.props.selected||p===-1)&&(p=a),p===a&&(n.props.disabled||n.props.muiSkipListHighlight||n.type.muiSkipListHighlight)&&(p+=1,p>=m.length&&(p=-1))});const v=u.Children.map(m,(n,a)=>{if(a===p){const l={};return h&&(l.autoFocus=!0),n.props.tabIndex===void 0&&z==="selectedMenu"&&(l.tabIndex=0),u.cloneElement(n,l)}return n});return V.jsx(He.List,{role:"menu",ref:I,className:d,onKeyDown:H,tabIndex:O?0:-1,...U,children:v})});process.env.NODE_ENV!=="production"&&(Pe.propTypes={autoFocus:e.PropTypes.bool,autoFocusItem:e.PropTypes.bool,children:e.PropTypes.node,className:e.PropTypes.string,disabledItemsFocusable:e.PropTypes.bool,disableListWrap:e.PropTypes.bool,onKeyDown:e.PropTypes.func,variant:e.PropTypes.oneOf(["menu","selectedMenu"])});function Ae(o){return L.generateUtilityClass("MuiPopover",o)}L.generateUtilityClasses("MuiPopover",["root","paper"]);function ce(o,t){let r=0;return typeof t=="number"?r=t:t==="center"?r=o.height/2:t==="bottom"&&(r=o.height),r}function ue(o,t){let r=0;return typeof t=="number"?r=t:t==="center"?r=o.width/2:t==="right"&&(r=o.width),r}function fe(o){return[o.horizontal,o.vertical].map(t=>typeof t=="number"?`${t}px`:t).join(" ")}function G(o){return typeof o=="function"?o():o}const Ve=o=>{const{classes:t}=o,r={root:["root"],paper:["paper"]};return k.composeClasses(r,Ae,t)},We=k.styled(ye.Modal,{name:"MuiPopover",slot:"Root"})({}),Te=k.styled(De.Paper,{name:"MuiPopover",slot:"Paper"})({position:"absolute",overflowY:"auto",overflowX:"hidden",minWidth:16,minHeight:16,maxWidth:"calc(100% - 32px)",maxHeight:"calc(100% - 32px)",outline:0}),he=u.forwardRef(function(t,r){const E=k.useDefaultProps({props:t,name:"MuiPopover"}),{action:O,anchorEl:h,anchorOrigin:m={vertical:"top",horizontal:"left"},anchorPosition:d,anchorReference:T="anchorEl",children:S,className:D,container:z,elevation:U=8,marginThreshold:i=16,open:b,PaperProps:H={},slots:I={},slotProps:p={},transformOrigin:v={vertical:"top",horizontal:"left"},TransitionComponent:n,transitionDuration:a="auto",TransitionProps:l={},disableScrollLock:w=!1,...j}=E,c=u.useRef(),R={...E,anchorOrigin:m,anchorReference:T,elevation:U,marginThreshold:i,transformOrigin:v,TransitionComponent:n,transitionDuration:a,TransitionProps:l},K=Ve(R),N=u.useCallback(()=>{if(T==="anchorPosition")return process.env.NODE_ENV!=="production"&&(d||console.error('MUI: You need to provide a `anchorPosition` prop when using <Popover anchorReference="anchorPosition" />.')),d;const s=G(h),y=s&&s.nodeType===1?s:oe.ownerDocument(c.current).body,P=y.getBoundingClientRect();if(process.env.NODE_ENV!=="production"){const x=y.getBoundingClientRect();process.env.NODE_ENV!=="test"&&x.top===0&&x.left===0&&x.right===0&&x.bottom===0&&console.warn(["MUI: The `anchorEl` prop provided to the component is invalid.","The anchor element should be part of the document layout.","Make sure the element is present in the document or that it's not display none."].join(`
`))}return{top:P.top+ce(P,m.vertical),left:P.left+ue(P,m.horizontal)}},[h,m.horizontal,m.vertical,d,T]),F=u.useCallback(s=>({vertical:ce(s,v.vertical),horizontal:ue(s,v.horizontal)}),[v.horizontal,v.vertical]),X=u.useCallback(s=>{const y={width:s.offsetWidth,height:s.offsetHeight},P=F(y);if(T==="none")return{top:null,left:null,transformOrigin:fe(P)};const x=N();let _=x.top-P.vertical,A=x.left-P.horizontal;const se=_+y.height,pe=A+y.width,ie=te.ownerWindow(G(h)),$=ie.innerHeight-i,ae=ie.innerWidth-i;if(i!==null&&_<i){const C=_-i;_-=C,P.vertical+=C}else if(i!==null&&se>$){const C=se-$;_-=C,P.vertical+=C}if(process.env.NODE_ENV!=="production"&&y.height>$&&y.height&&$&&console.error(["MUI: The popover component is too tall.",`Some part of it can not be seen on the screen (${y.height-$}px).`,"Please consider adding a `max-height` to improve the user-experience."].join(`
`)),i!==null&&A<i){const C=A-i;A-=C,P.horizontal+=C}else if(pe>ae){const C=pe-ae;A-=C,P.horizontal+=C}return{top:`${Math.round(_)}px`,left:`${Math.round(A)}px`,transformOrigin:fe(P)}},[h,T,N,F,i]),[Q,J]=u.useState(b),M=u.useCallback(()=>{const s=c.current;if(!s)return;const y=X(s);y.top!==null&&s.style.setProperty("top",y.top),y.left!==null&&(s.style.left=y.left),s.style.transformOrigin=y.transformOrigin,J(!0)},[X]);u.useEffect(()=>(w&&window.addEventListener("scroll",M),()=>window.removeEventListener("scroll",M)),[h,w,M]);const Z=()=>{M()},q=()=>{J(!1)};u.useEffect(()=>{b&&M()}),u.useImperativeHandle(O,()=>b?{updatePosition:()=>{M()}}:null,[b,M]),u.useEffect(()=>{if(!b)return;const s=je.debounce(()=>{M()}),y=te.ownerWindow(G(h));return y.addEventListener("resize",s),()=>{s.clear(),y.removeEventListener("resize",s)}},[h,b,M]);let f=a;const g={slots:{transition:n,...I},slotProps:{transition:l,paper:H,...p}},[W,ge]=Y.useSlot("transition",{elementType:Ne.Grow,externalForwardedProps:g,ownerState:R,getSlotProps:s=>({...s,onEntering:(y,P)=>{var x;(x=s.onEntering)==null||x.call(s,y,P),Z()},onExited:y=>{var P;(P=s.onExited)==null||P.call(s,y),q()}}),additionalProps:{appear:!0,in:b}});a==="auto"&&!W.muiSupportAuto&&(f=void 0);const ve=z||(h?oe.ownerDocument(G(h)).body:void 0),[ne,{slots:Ee,slotProps:Oe,...we}]=Y.useSlot("root",{ref:r,elementType:We,externalForwardedProps:{...g,...j},shouldForwardComponentProp:!0,additionalProps:{slots:{backdrop:I.backdrop},slotProps:{backdrop:Ie.mergeSlotProps(typeof p.backdrop=="function"?p.backdrop(R):p.backdrop,{invisible:!0})},container:ve,open:b},ownerState:R,className:L.clsx(K.root,D)}),[Me,Ce]=Y.useSlot("paper",{ref:c,className:K.paper,elementType:Te,externalForwardedProps:g,shouldForwardComponentProp:!0,additionalProps:{elevation:U,style:Q?void 0:{opacity:0}},ownerState:R});return V.jsx(ne,{...we,...!ke.isHostComponent(ne)&&{slots:Ee,slotProps:Oe,disableScrollLock:w},children:V.jsx(W,{...ge,timeout:f,children:V.jsx(Me,{...Ce,children:S})})})});process.env.NODE_ENV!=="production"&&(he.propTypes={action:Le.refType,anchorEl:qe.chainPropTypes(e.PropTypes.oneOfType([re.HTMLElementType,e.PropTypes.func]),o=>{if(o.open&&(!o.anchorReference||o.anchorReference==="anchorEl")){const t=G(o.anchorEl);if(t&&t.nodeType===1){const r=t.getBoundingClientRect();if(process.env.NODE_ENV!=="test"&&r.top===0&&r.left===0&&r.right===0&&r.bottom===0)return new Error(["MUI: The `anchorEl` prop provided to the component is invalid.","The anchor element should be part of the document layout.","Make sure the element is present in the document or that it's not display none."].join(`
`))}else return new Error(["MUI: The `anchorEl` prop provided to the component is invalid.",`It should be an Element or PopoverVirtualElement instance but it's \`${t}\` instead.`].join(`
`))}return null}),anchorOrigin:e.PropTypes.shape({horizontal:e.PropTypes.oneOfType([e.PropTypes.oneOf(["center","left","right"]),e.PropTypes.number]).isRequired,vertical:e.PropTypes.oneOfType([e.PropTypes.oneOf(["bottom","center","top"]),e.PropTypes.number]).isRequired}),anchorPosition:e.PropTypes.shape({left:e.PropTypes.number.isRequired,top:e.PropTypes.number.isRequired}),anchorReference:e.PropTypes.oneOf(["anchorEl","anchorPosition","none"]),BackdropComponent:e.PropTypes.elementType,BackdropProps:e.PropTypes.object,children:e.PropTypes.node,classes:e.PropTypes.object,className:e.PropTypes.string,container:e.PropTypes.oneOfType([re.HTMLElementType,e.PropTypes.func]),disableScrollLock:e.PropTypes.bool,elevation:Fe.integerPropType,marginThreshold:e.PropTypes.number,onClose:e.PropTypes.func,open:e.PropTypes.bool.isRequired,PaperProps:e.PropTypes.shape({component:ze.elementTypeAcceptingRef}),slotProps:e.PropTypes.shape({backdrop:e.PropTypes.oneOfType([e.PropTypes.func,e.PropTypes.object]),paper:e.PropTypes.oneOfType([e.PropTypes.func,e.PropTypes.object]),root:e.PropTypes.oneOfType([e.PropTypes.func,e.PropTypes.object]),transition:e.PropTypes.oneOfType([e.PropTypes.func,e.PropTypes.object])}),slots:e.PropTypes.shape({backdrop:e.PropTypes.elementType,paper:e.PropTypes.elementType,root:e.PropTypes.elementType,transition:e.PropTypes.elementType}),sx:e.PropTypes.oneOfType([e.PropTypes.arrayOf(e.PropTypes.oneOfType([e.PropTypes.func,e.PropTypes.object,e.PropTypes.bool])),e.PropTypes.func,e.PropTypes.object]),transformOrigin:e.PropTypes.shape({horizontal:e.PropTypes.oneOfType([e.PropTypes.oneOf(["center","left","right"]),e.PropTypes.number]).isRequired,vertical:e.PropTypes.oneOfType([e.PropTypes.oneOf(["bottom","center","top"]),e.PropTypes.number]).isRequired}),TransitionComponent:e.PropTypes.elementType,transitionDuration:e.PropTypes.oneOfType([e.PropTypes.oneOf(["auto"]),e.PropTypes.number,e.PropTypes.shape({appear:e.PropTypes.number,enter:e.PropTypes.number,exit:e.PropTypes.number})]),TransitionProps:e.PropTypes.object});function me(o){return L.generateUtilityClass("MuiMenu",o)}const $e=L.generateUtilityClasses("MuiMenu",["root","paper","list"]),Be={vertical:"top",horizontal:"right"},Ge={vertical:"top",horizontal:"left"},Ye=o=>{const{classes:t}=o,r={root:["root"],paper:["paper"],list:["list"]};return k.composeClasses(r,me,t)},Xe=k.styled(he,{shouldForwardProp:o=>k.rootShouldForwardProp(o)||o==="classes",name:"MuiMenu",slot:"Root"})({}),Je=k.styled(Te,{name:"MuiMenu",slot:"Paper"})({maxHeight:"calc(100% - 96px)",WebkitOverflowScrolling:"touch"}),Qe=k.styled(Pe,{name:"MuiMenu",slot:"List"})({outline:0}),be=u.forwardRef(function(t,r){const E=k.useDefaultProps({props:t,name:"MuiMenu"}),{autoFocus:O=!0,children:h,className:m,disableAutoFocusItem:d=!1,MenuListProps:T={},onClose:S,open:D,PaperProps:z={},PopoverClasses:U,transitionDuration:i="auto",TransitionProps:{onEntering:b,...H}={},variant:I="selectedMenu",slots:p={},slotProps:v={},...n}=E,a=Re.useRtl(),l={...E,autoFocus:O,disableAutoFocusItem:d,MenuListProps:T,onEntering:b,PaperProps:z,transitionDuration:i,TransitionProps:H,variant:I},w=Ye(l),j=O&&!d&&D,c=u.useRef(null),R=(f,g)=>{c.current&&c.current.adjustStyleForScrollbar(f,{direction:a?"rtl":"ltr"}),b&&b(f,g)},K=f=>{f.key==="Tab"&&(f.preventDefault(),S&&S(f,"tabKeyDown"))};let N=-1;u.Children.map(h,(f,g)=>{u.isValidElement(f)&&(process.env.NODE_ENV!=="production"&&L.reactIsExports.isFragment(f)&&console.error(["MUI: The Menu component doesn't accept a Fragment as a child.","Consider providing an array instead."].join(`
`)),f.props.disabled||(I==="selectedMenu"&&f.props.selected||N===-1)&&(N=g))});const F={slots:p,slotProps:{list:T,transition:H,paper:z,...v}},X=xe.useSlotProps({elementType:p.root,externalSlotProps:v.root,ownerState:l,className:[w.root,m]}),[Q,J]=Y.useSlot("paper",{className:w.paper,elementType:Je,externalForwardedProps:F,shouldForwardComponentProp:!0,ownerState:l}),[M,Z]=Y.useSlot("list",{className:L.clsx(w.list,T.className),elementType:Qe,shouldForwardComponentProp:!0,externalForwardedProps:F,getSlotProps:f=>({...f,onKeyDown:g=>{var W;K(g),(W=f.onKeyDown)==null||W.call(f,g)}}),ownerState:l}),q=typeof F.slotProps.transition=="function"?F.slotProps.transition(l):F.slotProps.transition;return V.jsx(Xe,{onClose:S,anchorOrigin:{vertical:"bottom",horizontal:a?"right":"left"},transformOrigin:a?Be:Ge,slots:{root:p.root,paper:Q,backdrop:p.backdrop,...p.transition&&{transition:p.transition}},slotProps:{root:X,paper:J,backdrop:typeof v.backdrop=="function"?v.backdrop(l):v.backdrop,transition:{...q,onEntering:(...f)=>{var g;R(...f),(g=q==null?void 0:q.onEntering)==null||g.call(q,...f)}}},open:D,ref:r,transitionDuration:i,ownerState:l,...n,classes:U,children:V.jsx(M,{actions:c,autoFocus:O&&(N===-1||d),autoFocusItem:j,variant:I,...Z,children:h})})});process.env.NODE_ENV!=="production"&&(be.propTypes={anchorEl:e.PropTypes.oneOfType([re.HTMLElementType,e.PropTypes.func]),autoFocus:e.PropTypes.bool,children:e.PropTypes.node,classes:e.PropTypes.object,className:e.PropTypes.string,disableAutoFocusItem:e.PropTypes.bool,MenuListProps:e.PropTypes.object,onClose:e.PropTypes.func,open:e.PropTypes.bool.isRequired,PaperProps:e.PropTypes.object,PopoverClasses:e.PropTypes.object,slotProps:e.PropTypes.shape({backdrop:e.PropTypes.oneOfType([e.PropTypes.func,e.PropTypes.object]),list:e.PropTypes.oneOfType([e.PropTypes.func,e.PropTypes.object]),paper:e.PropTypes.oneOfType([e.PropTypes.func,e.PropTypes.object]),root:e.PropTypes.oneOfType([e.PropTypes.func,e.PropTypes.object]),transition:e.PropTypes.oneOfType([e.PropTypes.func,e.PropTypes.object])}),slots:e.PropTypes.shape({backdrop:e.PropTypes.elementType,list:e.PropTypes.elementType,paper:e.PropTypes.elementType,root:e.PropTypes.elementType,transition:e.PropTypes.elementType}),sx:e.PropTypes.oneOfType([e.PropTypes.arrayOf(e.PropTypes.oneOfType([e.PropTypes.func,e.PropTypes.object,e.PropTypes.bool])),e.PropTypes.func,e.PropTypes.object]),transitionDuration:e.PropTypes.oneOfType([e.PropTypes.oneOf(["auto"]),e.PropTypes.number,e.PropTypes.shape({appear:e.PropTypes.number,enter:e.PropTypes.number,exit:e.PropTypes.number})]),TransitionProps:e.PropTypes.object,variant:e.PropTypes.oneOf(["menu","selectedMenu"])});exports.Menu=be;exports.getMenuUtilityClass=me;exports.menuClasses=$e;
;