"use strict";(self.webpackChunkant_design_pro=self.webpackChunkant_design_pro||[]).push([[6110],{77404:function(le,z,l){Object.defineProperty(z,"__esModule",{value:!0}),z.default=void 0;const o=U(l(85317));function U(K){return K&&K.__esModule?K:{default:K}}const d=o;z.default=d,le.exports=d},86056:function(le,z,l){Object.defineProperty(z,"__esModule",{value:!0}),z.default=void 0;const o=U(l(91724));function U(K){return K&&K.__esModule?K:{default:K}}const d=o;z.default=d,le.exports=d},2236:function(le,z,l){l.d(z,{S:function(){return Oe}});var o=l(1413),U=l(4942),d=l(91),K=l(12044),de=l(21532),me=l(93967),ye=l.n(me),ce=l(98423),i=l(67294),Be=l(73935),A=l(76509),re=l(64847),Re=function(N){return(0,U.Z)({},N.componentCls,{position:"fixed",insetInlineEnd:0,bottom:0,zIndex:99,display:"flex",alignItems:"center",width:"100%",paddingInline:24,paddingBlock:0,boxSizing:"border-box",lineHeight:"64px",backgroundColor:(0,re.uK)(N.colorBgElevated,.6),borderBlockStart:"1px solid ".concat(N.colorSplit),"-webkit-backdrop-filter":"blur(8px)",backdropFilter:"blur(8px)",color:N.colorText,transition:"all 0.2s ease 0s","&-left":{flex:1,color:N.colorText},"&-right":{color:N.colorText,"> *":{marginInlineEnd:8,"&:last-child":{marginBlock:0,marginInline:0}}}})};function pe(se){return(0,re.Xj)("ProLayoutFooterToolbar",function(N){var _=(0,o.Z)((0,o.Z)({},N),{},{componentCls:".".concat(se)});return[Re(_)]})}function xe(se,N){var _=N.stylish;return(0,re.Xj)("ProLayoutFooterToolbarStylish",function(ae){var ue=(0,o.Z)((0,o.Z)({},ae),{},{componentCls:".".concat(se)});return _?[(0,U.Z)({},"".concat(ue.componentCls),_==null?void 0:_(ue))]:[]})}var te=l(85893),ge=["children","className","extra","portalDom","style","renderContent"],Oe=function(N){var _=N.children,ae=N.className,ue=N.extra,be=N.portalDom,Le=be===void 0?!0:be,Ee=N.style,Ne=N.renderContent,Te=(0,d.Z)(N,ge),Se=(0,i.useContext)(de.ZP.ConfigContext),ke=Se.getPrefixCls,Pe=Se.getTargetContainer,He=N.prefixCls||ke("pro"),q="".concat(He,"-footer-bar"),G=pe(q),We=G.wrapSSR,Ze=G.hashId,c=(0,i.useContext)(A.X),we=(0,i.useMemo)(function(){var oe=c.hasSiderMenu,Ae=c.isMobile,De=c.siderWidth;if(oe)return De?Ae?"100%":"calc(100% - ".concat(De,"px)"):"100%"},[c.collapsed,c.hasSiderMenu,c.isMobile,c.siderWidth]),ve=(0,i.useMemo)(function(){return typeof window=="undefined"||typeof document=="undefined"?null:(Pe==null?void 0:Pe())||document.body},[]),Xe=xe("".concat(q,".").concat(q,"-stylish"),{stylish:N.stylish}),$e=(0,te.jsxs)(te.Fragment,{children:[(0,te.jsx)("div",{className:"".concat(q,"-left ").concat(Ze).trim(),children:ue}),(0,te.jsx)("div",{className:"".concat(q,"-right ").concat(Ze).trim(),children:_})]});(0,i.useEffect)(function(){return!c||!(c!=null&&c.setHasFooterToolbar)?function(){}:(c==null||c.setHasFooterToolbar(!0),function(){var oe;c==null||(oe=c.setHasFooterToolbar)===null||oe===void 0||oe.call(c,!1)})},[]);var Me=(0,te.jsx)("div",(0,o.Z)((0,o.Z)({className:ye()(ae,Ze,q,(0,U.Z)({},"".concat(q,"-stylish"),!!N.stylish)),style:(0,o.Z)({width:we},Ee)},(0,ce.Z)(Te,["prefixCls"])),{},{children:Ne?Ne((0,o.Z)((0,o.Z)((0,o.Z)({},N),c),{},{leftWidth:we}),$e):$e})),Ue=!(0,K.j)()||!Le||!ve?Me:(0,Be.createPortal)(Me,ve,q);return Xe.wrapSSR(We((0,te.jsx)(i.Fragment,{children:Ue},q)))}},6110:function(le,z,l){l.d(z,{_z:function(){return tn}});var o=l(4942),U=l(91),d=l(1413),K=l(71002),de=l(10915),me=l(92398),ye=l(67159),ce=l(21532),i=l(67294),Be=l(93967),A=l.n(Be),re=l(48555),Re=l(74902),pe=l(75164);function xe(t){let e;const n=a=>()=>{e=null,t.apply(void 0,(0,Re.Z)(a))},r=function(){if(e==null){for(var a=arguments.length,u=new Array(a),s=0;s<a;s++)u[s]=arguments[s];e=(0,pe.Z)(n(u))}};return r.cancel=()=>{pe.Z.cancel(e),e=null},r}var te=xe,ge=l(53124),Oe=l(83559);const se=t=>{const{componentCls:e}=t;return{[e]:{position:"fixed",zIndex:t.zIndexPopup}}},N=t=>({zIndexPopup:t.zIndexBase+10});var _=(0,Oe.I$)("Affix",se,N);function ae(t){return t!==window?t.getBoundingClientRect():{top:0,bottom:window.innerHeight}}function ue(t,e,n){if(n!==void 0&&Math.round(e.top)>Math.round(t.top)-n)return n+e.top}function be(t,e,n){if(n!==void 0&&Math.round(e.bottom)<Math.round(t.bottom)+n){const r=window.innerHeight-e.bottom;return n+r}}var Le=function(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var a=0,r=Object.getOwnPropertySymbols(t);a<r.length;a++)e.indexOf(r[a])<0&&Object.prototype.propertyIsEnumerable.call(t,r[a])&&(n[r[a]]=t[r[a]]);return n};const Ee=["resize","scroll","touchstart","touchmove","touchend","pageshow","load"];function Ne(){return typeof window!="undefined"?window:null}const Te=0,Se=1;var Pe=i.forwardRef((t,e)=>{var n;const{style:r,offsetTop:a,offsetBottom:u,prefixCls:s,className:v,rootClassName:P,children:h,target:C,onChange:m,onTestUpdatePosition:Z}=t,x=Le(t,["style","offsetTop","offsetBottom","prefixCls","className","rootClassName","children","target","onChange","onTestUpdatePosition"]),{getPrefixCls:y,getTargetContainer:f}=i.useContext(ge.E_),p=y("affix",s),[g,H]=i.useState(!1),[j,I]=i.useState(),[F,b]=i.useState(),B=i.useRef(Te),$=i.useRef(null),w=i.useRef(null),R=i.useRef(null),L=i.useRef(null),Q=i.useRef(null),O=(n=C!=null?C:f)!==null&&n!==void 0?n:Ne,V=u===void 0&&a===void 0?0:a,J=()=>{if(B.current!==Se||!L.current||!R.current||!O)return;const M=O();if(M){const T={status:Te},S=ae(R.current);if(S.top===0&&S.left===0&&S.width===0&&S.height===0)return;const X=ae(M),k=ue(S,X,V),Fe=be(S,X,u);k!==void 0?(T.affixStyle={position:"fixed",top:k,width:S.width,height:S.height},T.placeholderStyle={width:S.width,height:S.height}):Fe!==void 0&&(T.affixStyle={position:"fixed",bottom:Fe,width:S.width,height:S.height},T.placeholderStyle={width:S.width,height:S.height}),T.lastAffix=!!T.affixStyle,g!==T.lastAffix&&(m==null||m(T.lastAffix)),B.current=T.status,I(T.affixStyle),b(T.placeholderStyle),H(T.lastAffix)}},Y=()=>{B.current=Se,J()},W=te(()=>{Y()}),E=te(()=>{if(O&&j){const M=O();if(M&&R.current){const T=ae(M),S=ae(R.current),X=ue(S,T,V),k=be(S,T,u);if(X!==void 0&&j.top===X||k!==void 0&&j.bottom===k)return}}Y()}),D=()=>{const M=O==null?void 0:O();M&&(Ee.forEach(T=>{var S;w.current&&((S=$.current)===null||S===void 0||S.removeEventListener(T,w.current)),M==null||M.addEventListener(T,E)}),$.current=M,w.current=E)},ne=()=>{Q.current&&(clearTimeout(Q.current),Q.current=null);const M=O==null?void 0:O();Ee.forEach(T=>{var S;M==null||M.removeEventListener(T,E),w.current&&((S=$.current)===null||S===void 0||S.removeEventListener(T,w.current))}),W.cancel(),E.cancel()};i.useImperativeHandle(e,()=>({updatePosition:W})),i.useEffect(()=>(Q.current=setTimeout(D),()=>ne()),[]),i.useEffect(()=>{D()},[C,j]),i.useEffect(()=>{W()},[C,a,u]);const[ee,he,fe]=_(p),je=A()(P,he,p,fe),ie=A()({[je]:j});return ee(i.createElement(re.Z,{onResize:W},i.createElement("div",Object.assign({style:r,className:v,ref:R},x),j&&i.createElement("div",{style:F,"aria-hidden":"true"}),i.createElement("div",{className:ie,ref:L,style:j},i.createElement(re.Z,{onResize:W},h)))))}),He=l(76509),q=l(2236),G=l(64847),We=function(e){return(0,o.Z)({},e.componentCls,{width:"100%","&-wide":{maxWidth:1152,margin:"0 auto"}})};function Ze(t){return(0,G.Xj)("ProLayoutGridContent",function(e){var n=(0,d.Z)((0,d.Z)({},e),{},{componentCls:".".concat(t)});return[We(n)]})}var c=l(85893),we=function(e){var n=(0,i.useContext)(He.X),r=e.children,a=e.contentWidth,u=e.className,s=e.style,v=(0,i.useContext)(ce.ZP.ConfigContext),P=v.getPrefixCls,h=e.prefixCls||P("pro"),C=a||n.contentWidth,m="".concat(h,"-grid-content"),Z=Ze(m),x=Z.wrapSSR,y=Z.hashId,f=C==="Fixed"&&n.layout==="top";return x((0,c.jsx)("div",{className:A()(m,y,u,(0,o.Z)({},"".concat(m,"-wide"),f)),style:s,children:(0,c.jsx)("div",{className:"".concat(h,"-grid-content-children ").concat(y).trim(),children:r})}))},ve=l(97685),Xe=l(77404),$e=l.n(Xe),Me=l(86056),Ue=l.n(Me),oe=l(50344),Ae=l(64217),De=l(96159),ut=l(80882),ft=l(7743);const Je=t=>{let{children:e}=t;const{getPrefixCls:n}=i.useContext(ge.E_),r=n("breadcrumb");return i.createElement("li",{className:`${r}-separator`,"aria-hidden":"true"},e===""?e:e||"/")};Je.__ANT_BREADCRUMB_SEPARATOR=!0;var Ke=Je,mt=function(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var a=0,r=Object.getOwnPropertySymbols(t);a<r.length;a++)e.indexOf(r[a])<0&&Object.prototype.propertyIsEnumerable.call(t,r[a])&&(n[r[a]]=t[r[a]]);return n};function gt(t,e){if(t.title===void 0||t.title===null)return null;const n=Object.keys(e).join("|");return typeof t.title=="object"?t.title:String(t.title).replace(new RegExp(`:(${n})`,"g"),(r,a)=>e[a]||r)}function qe(t,e,n,r){if(n==null)return null;const{className:a,onClick:u}=e,s=mt(e,["className","onClick"]),v=Object.assign(Object.assign({},(0,Ae.Z)(s,{data:!0,aria:!0})),{onClick:u});return r!==void 0?i.createElement("a",Object.assign({},v,{className:A()(`${t}-link`,a),href:r}),n):i.createElement("span",Object.assign({},v,{className:A()(`${t}-link`,a)}),n)}function vt(t,e){return(r,a,u,s,v)=>{if(e)return e(r,a,u,s);const P=gt(r,a);return qe(t,r,P,v)}}var Ge=function(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var a=0,r=Object.getOwnPropertySymbols(t);a<r.length;a++)e.indexOf(r[a])<0&&Object.prototype.propertyIsEnumerable.call(t,r[a])&&(n[r[a]]=t[r[a]]);return n};const _e=t=>{const{prefixCls:e,separator:n="/",children:r,menu:a,overlay:u,dropdownProps:s,href:v}=t,h=(C=>{if(a||u){const m=Object.assign({},s);if(a){const Z=a||{},{items:x}=Z,y=Ge(Z,["items"]);m.menu=Object.assign(Object.assign({},y),{items:x==null?void 0:x.map((f,p)=>{var{key:g,title:H,label:j,path:I}=f,F=Ge(f,["key","title","label","path"]);let b=j!=null?j:H;return I&&(b=i.createElement("a",{href:`${v}${I}`},b)),Object.assign(Object.assign({},F),{key:g!=null?g:p,label:b})})})}else u&&(m.overlay=u);return i.createElement(ft.Z,Object.assign({placement:"bottom"},m),i.createElement("span",{className:`${e}-overlay-link`},C,i.createElement(ut.Z,null)))}return C})(r);return h!=null?i.createElement(i.Fragment,null,i.createElement("li",null,h),n&&i.createElement(Ke,null,n)):null},et=t=>{const{prefixCls:e,children:n,href:r}=t,a=Ge(t,["prefixCls","children","href"]),{getPrefixCls:u}=i.useContext(ge.E_),s=u("breadcrumb",e);return i.createElement(_e,Object.assign({},a,{prefixCls:s}),qe(s,a,n,r))};et.__ANT_BREADCRUMB_ITEM=!0;var ht=et,tt=l(11568),nt=l(14747),Ct=l(83262);const yt=t=>{const{componentCls:e,iconCls:n,calc:r}=t;return{[e]:Object.assign(Object.assign({},(0,nt.Wf)(t)),{color:t.itemColor,fontSize:t.fontSize,[n]:{fontSize:t.iconFontSize},ol:{display:"flex",flexWrap:"wrap",margin:0,padding:0,listStyle:"none"},a:Object.assign({color:t.linkColor,transition:`color ${t.motionDurationMid}`,padding:`0 ${(0,tt.bf)(t.paddingXXS)}`,borderRadius:t.borderRadiusSM,height:t.fontHeight,display:"inline-block",marginInline:r(t.marginXXS).mul(-1).equal(),"&:hover":{color:t.linkHoverColor,backgroundColor:t.colorBgTextHover}},(0,nt.Qy)(t)),"li:last-child":{color:t.lastItemColor},[`${e}-separator`]:{marginInline:t.separatorMargin,color:t.separatorColor},[`${e}-link`]:{[`
          > ${n} + span,
          > ${n} + a
        `]:{marginInlineStart:t.marginXXS}},[`${e}-overlay-link`]:{borderRadius:t.borderRadiusSM,height:t.fontHeight,display:"inline-block",padding:`0 ${(0,tt.bf)(t.paddingXXS)}`,marginInline:r(t.marginXXS).mul(-1).equal(),[`> ${n}`]:{marginInlineStart:t.marginXXS,fontSize:t.fontSizeIcon},"&:hover":{color:t.linkHoverColor,backgroundColor:t.colorBgTextHover,a:{color:t.linkHoverColor}},a:{"&:hover":{backgroundColor:"transparent"}}},[`&${t.componentCls}-rtl`]:{direction:"rtl"}})}},pt=t=>({itemColor:t.colorTextDescription,lastItemColor:t.colorText,iconFontSize:t.fontSize,linkColor:t.colorTextDescription,linkHoverColor:t.colorText,separatorColor:t.colorTextDescription,separatorMargin:t.marginXS});var xt=(0,Oe.I$)("Breadcrumb",t=>{const e=(0,Ct.IX)(t,{});return yt(e)},pt),rt=function(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var a=0,r=Object.getOwnPropertySymbols(t);a<r.length;a++)e.indexOf(r[a])<0&&Object.prototype.propertyIsEnumerable.call(t,r[a])&&(n[r[a]]=t[r[a]]);return n};function bt(t){const{breadcrumbName:e,children:n}=t,r=rt(t,["breadcrumbName","children"]),a=Object.assign({title:e},r);return n&&(a.menu={items:n.map(u=>{var{breadcrumbName:s}=u,v=rt(u,["breadcrumbName"]);return Object.assign(Object.assign({},v),{title:s})})}),a}function St(t,e){return(0,i.useMemo)(()=>t||(e?e.map(bt):null),[t,e])}var Pt=function(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var a=0,r=Object.getOwnPropertySymbols(t);a<r.length;a++)e.indexOf(r[a])<0&&Object.prototype.propertyIsEnumerable.call(t,r[a])&&(n[r[a]]=t[r[a]]);return n};const Zt=(t,e)=>{if(e===void 0)return e;let n=(e||"").replace(/^\//,"");return Object.keys(t).forEach(r=>{n=n.replace(`:${r}`,t[r])}),n},Ve=t=>{const{prefixCls:e,separator:n="/",style:r,className:a,rootClassName:u,routes:s,items:v,children:P,itemRender:h,params:C={}}=t,m=Pt(t,["prefixCls","separator","style","className","rootClassName","routes","items","children","itemRender","params"]),{getPrefixCls:Z,direction:x,breadcrumb:y}=i.useContext(ge.E_);let f;const p=Z("breadcrumb",e),[g,H,j]=xt(p),I=St(v,s),F=vt(p,h);if(I&&I.length>0){const $=[],w=v||s;f=I.map((R,L)=>{const{path:Q,key:O,type:V,menu:J,overlay:Y,onClick:W,className:E,separator:D,dropdownProps:ne}=R,ee=Zt(C,Q);ee!==void 0&&$.push(ee);const he=O!=null?O:L;if(V==="separator")return i.createElement(Ke,{key:he},D);const fe={},je=L===I.length-1;J?fe.menu=J:Y&&(fe.overlay=Y);let{href:ie}=R;return $.length&&ee!==void 0&&(ie=`#/${$.join("/")}`),i.createElement(_e,Object.assign({key:he},fe,(0,Ae.Z)(R,{data:!0,aria:!0}),{className:E,dropdownProps:ne,href:ie,separator:je?"":n,onClick:W,prefixCls:p}),F(R,C,w,$,ie))})}else if(P){const $=(0,oe.Z)(P).length;f=(0,oe.Z)(P).map((w,R)=>{if(!w)return w;const L=R===$-1;return(0,De.Tm)(w,{separator:L?"":n,key:R})})}const b=A()(p,y==null?void 0:y.className,{[`${p}-rtl`]:x==="rtl"},a,u,H,j),B=Object.assign(Object.assign({},y==null?void 0:y.style),r);return g(i.createElement("nav",Object.assign({className:b,style:B},m),i.createElement("ol",null,f)))};Ve.Item=ht,Ve.Separator=Ke;var jt=Ve,It=jt,Bt=l(68997),Rt=l(78957),at=l(80334),ot=function(){return{overflow:"hidden",whiteSpace:"nowrap",textOverflow:"ellipsis"}},Ot=function(e){var n;return(0,o.Z)({},e.componentCls,(0,d.Z)((0,d.Z)({},G.Wf===null||G.Wf===void 0?void 0:(0,G.Wf)(e)),{},(0,o.Z)((0,o.Z)((0,o.Z)((0,o.Z)((0,o.Z)((0,o.Z)((0,o.Z)((0,o.Z)({position:"relative",backgroundColor:e.colorWhite,paddingBlock:e.pageHeaderPaddingVertical+2,paddingInline:e.pageHeaderPadding,"&&-ghost":{backgroundColor:e.pageHeaderBgGhost},"&-no-children":{height:(n=e.layout)===null||n===void 0||(n=n.pageContainer)===null||n===void 0?void 0:n.paddingBlockPageContainerContent},"&&-has-breadcrumb":{paddingBlockStart:e.pageHeaderPaddingBreadCrumb},"&&-has-footer":{paddingBlockEnd:0},"& &-back":(0,o.Z)({marginInlineEnd:e.margin,fontSize:16,lineHeight:1,"&-button":(0,d.Z)((0,d.Z)({fontSize:16},G.Nd===null||G.Nd===void 0?void 0:(0,G.Nd)(e)),{},{color:e.pageHeaderColorBack,cursor:"pointer"})},"".concat(e.componentCls,"-rlt &"),{float:"right",marginInlineEnd:0,marginInlineStart:0})},"& ".concat("ant","-divider-vertical"),{height:14,marginBlock:0,marginInline:e.marginSM,verticalAlign:"middle"}),"& &-breadcrumb + &-heading",{marginBlockStart:e.marginXS}),"& &-heading",{display:"flex",justifyContent:"space-between","&-left":{display:"flex",alignItems:"center",marginBlock:e.marginXS/2,marginInlineEnd:0,marginInlineStart:0,overflow:"hidden"},"&-title":(0,d.Z)((0,d.Z)({marginInlineEnd:e.marginSM,marginBlockEnd:0,color:e.colorTextHeading,fontWeight:600,fontSize:e.pageHeaderFontSizeHeaderTitle,lineHeight:e.controlHeight+"px"},ot()),{},(0,o.Z)({},"".concat(e.componentCls,"-rlt &"),{marginInlineEnd:0,marginInlineStart:e.marginSM})),"&-avatar":(0,o.Z)({marginInlineEnd:e.marginSM},"".concat(e.componentCls,"-rlt &"),{float:"right",marginInlineEnd:0,marginInlineStart:e.marginSM}),"&-tags":(0,o.Z)({},"".concat(e.componentCls,"-rlt &"),{float:"right"}),"&-sub-title":(0,d.Z)((0,d.Z)({marginInlineEnd:e.marginSM,color:e.colorTextSecondary,fontSize:e.pageHeaderFontSizeHeaderSubTitle,lineHeight:e.lineHeight},ot()),{},(0,o.Z)({},"".concat(e.componentCls,"-rlt &"),{float:"right",marginInlineEnd:0,marginInlineStart:12})),"&-extra":(0,o.Z)((0,o.Z)({marginBlock:e.marginXS/2,marginInlineEnd:0,marginInlineStart:0,whiteSpace:"nowrap","> *":(0,o.Z)({"white-space":"unset"},"".concat(e.componentCls,"-rlt &"),{marginInlineEnd:e.marginSM,marginInlineStart:0})},"".concat(e.componentCls,"-rlt &"),{float:"left"}),"*:first-child",(0,o.Z)({},"".concat(e.componentCls,"-rlt &"),{marginInlineEnd:0}))}),"&-content",{paddingBlockStart:e.pageHeaderPaddingContentPadding}),"&-footer",{marginBlockStart:e.margin}),"&-compact &-heading",{flexWrap:"wrap"}),"&-wide",{maxWidth:1152,margin:"0 auto"}),"&-rtl",{direction:"rtl"})))};function Et(t){return(0,G.Xj)("ProLayoutPageHeader",function(e){var n=(0,d.Z)((0,d.Z)({},e),{},{componentCls:".".concat(t),pageHeaderBgGhost:"transparent",pageHeaderPadding:16,pageHeaderPaddingVertical:4,pageHeaderPaddingBreadCrumb:e.paddingSM,pageHeaderColorBack:e.colorTextHeading,pageHeaderFontSizeHeaderTitle:e.fontSizeHeading4,pageHeaderFontSizeHeaderSubTitle:14,pageHeaderPaddingContentPadding:e.paddingSM});return[Ot(n)]})}var Nt=function(e,n,r,a){return!r||!a?null:(0,c.jsx)("div",{className:"".concat(e,"-back ").concat(n).trim(),children:(0,c.jsx)("div",{role:"button",onClick:function(s){a==null||a(s)},className:"".concat(e,"-back-button ").concat(n).trim(),"aria-label":"back",children:r})})},Tt=function(e,n){var r;return(r=e.items)!==null&&r!==void 0&&r.length?(0,c.jsx)(It,(0,d.Z)((0,d.Z)({},e),{},{className:A()("".concat(n,"-breadcrumb"),e.className)})):null},Ht=function(e){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"ltr";return e.backIcon!==void 0?e.backIcon:n==="rtl"?(0,c.jsx)(Ue(),{}):(0,c.jsx)($e(),{})},wt=function(e,n){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"ltr",a=arguments.length>3?arguments[3]:void 0,u=n.title,s=n.avatar,v=n.subTitle,P=n.tags,h=n.extra,C=n.onBack,m="".concat(e,"-heading"),Z=u||v||P||h;if(!Z)return null;var x=Ht(n,r),y=Nt(e,a,x,C),f=y||s||Z;return(0,c.jsxs)("div",{className:m+" "+a,children:[f&&(0,c.jsxs)("div",{className:"".concat(m,"-left ").concat(a).trim(),children:[y,s&&(0,c.jsx)(Bt.Z,(0,d.Z)({className:A()("".concat(m,"-avatar"),a,s.className)},s)),u&&(0,c.jsx)("span",{className:"".concat(m,"-title ").concat(a).trim(),title:typeof u=="string"?u:void 0,children:u}),v&&(0,c.jsx)("span",{className:"".concat(m,"-sub-title ").concat(a).trim(),title:typeof v=="string"?v:void 0,children:v}),P&&(0,c.jsx)("span",{className:"".concat(m,"-tags ").concat(a).trim(),children:P})]}),h&&(0,c.jsx)("span",{className:"".concat(m,"-extra ").concat(a).trim(),children:(0,c.jsx)(Rt.Z,{children:h})})]})},$t=function(e,n,r){return n?(0,c.jsx)("div",{className:"".concat(e,"-footer ").concat(r).trim(),children:n}):null},Mt=function(e,n,r){return(0,c.jsx)("div",{className:"".concat(e,"-content ").concat(r).trim(),children:n})},At=function t(e){return e==null?void 0:e.map(function(n){var r;return(0,at.ET)(!!n.breadcrumbName,"Route.breadcrumbName is deprecated, please use Route.title instead."),(0,d.Z)((0,d.Z)({},n),{},{breadcrumbName:void 0,children:void 0,title:n.title||n.breadcrumbName},(r=n.children)!==null&&r!==void 0&&r.length?{menu:{items:t(n.children)}}:{})})},Dt=function(e){var n,r=i.useState(!1),a=(0,ve.Z)(r,2),u=a[0],s=a[1],v=function(ne){var ee=ne.width;return s(ee<768)},P=i.useContext(ce.ZP.ConfigContext),h=P.getPrefixCls,C=P.direction,m=e.prefixCls,Z=e.style,x=e.footer,y=e.children,f=e.breadcrumb,p=e.breadcrumbRender,g=e.className,H=e.contentWidth,j=e.layout,I=e.ghost,F=I===void 0?!0:I,b=h("page-header",m),B=Et(b),$=B.wrapSSR,w=B.hashId,R=function(){return f&&!(f!=null&&f.items)&&f!==null&&f!==void 0&&f.routes&&((0,at.ET)(!1,"The routes of Breadcrumb is deprecated, please use items instead."),f.items=At(f.routes)),f!=null&&f.items?Tt(f,b):null},L=R(),Q=f&&"props"in f,O=(n=p==null?void 0:p((0,d.Z)((0,d.Z)({},e),{},{prefixCls:b}),L))!==null&&n!==void 0?n:L,V=Q?f:O,J=A()(b,w,g,(0,o.Z)((0,o.Z)((0,o.Z)((0,o.Z)((0,o.Z)((0,o.Z)({},"".concat(b,"-has-breadcrumb"),!!V),"".concat(b,"-has-footer"),!!x),"".concat(b,"-rtl"),C==="rtl"),"".concat(b,"-compact"),u),"".concat(b,"-wide"),H==="Fixed"&&j=="top"),"".concat(b,"-ghost"),F)),Y=wt(b,e,C,w),W=y&&Mt(b,y,w),E=$t(b,x,w);return!V&&!Y&&!E&&!W?(0,c.jsx)("div",{className:A()(w,["".concat(b,"-no-children")])}):$((0,c.jsx)(re.Z,{onResize:v,children:(0,c.jsxs)("div",{className:J,style:Z,children:[V,Y,W,E]})}))},zt=l(83832),Ft=function(e){if(!e)return 1;var n=e.backingStorePixelRatio||e.webkitBackingStorePixelRatio||e.mozBackingStorePixelRatio||e.msBackingStorePixelRatio||e.oBackingStorePixelRatio||1;return(window.devicePixelRatio||1)/n},Lt=function(e){var n=(0,G.dQ)(),r=n.token,a=e.children,u=e.style,s=e.className,v=e.markStyle,P=e.markClassName,h=e.zIndex,C=h===void 0?9:h,m=e.gapX,Z=m===void 0?212:m,x=e.gapY,y=x===void 0?222:x,f=e.width,p=f===void 0?120:f,g=e.height,H=g===void 0?64:g,j=e.rotate,I=j===void 0?-22:j,F=e.image,b=e.offsetLeft,B=e.offsetTop,$=e.fontStyle,w=$===void 0?"normal":$,R=e.fontWeight,L=R===void 0?"normal":R,Q=e.fontColor,O=Q===void 0?r.colorFill:Q,V=e.fontSize,J=V===void 0?16:V,Y=e.fontFamily,W=Y===void 0?"sans-serif":Y,E=e.prefixCls,D=(0,i.useContext)(ce.ZP.ConfigContext),ne=D.getPrefixCls,ee=ne("pro-layout-watermark",E),he=A()("".concat(ee,"-wrapper"),s),fe=A()(ee,P),je=(0,i.useState)(""),ie=(0,ve.Z)(je,2),M=ie[0],T=ie[1];return(0,i.useEffect)(function(){var S=document.createElement("canvas"),X=S.getContext("2d"),k=Ft(X),Fe="".concat((Z+p)*k,"px"),nn="".concat((y+H)*k,"px"),rn=b||Z/2,an=B||y/2;if(S.setAttribute("width",Fe),S.setAttribute("height",nn),!X){console.error("\u5F53\u524D\u73AF\u5883\u4E0D\u652F\u6301Canvas");return}X.translate(rn*k,an*k),X.rotate(Math.PI/180*Number(I));var on=p*k,ct=H*k,st=function(Ie){var Ye=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,Qe=Number(J)*k;X.font="".concat(w," normal ").concat(L," ").concat(Qe,"px/").concat(ct,"px ").concat(W),X.fillStyle=O,Array.isArray(Ie)?Ie==null||Ie.forEach(function(ln,dn){return X.fillText(ln,0,dn*Qe+Ye)}):X.fillText(Ie,0,Ye?Ye+Qe:0),T(S.toDataURL())};if(F){var Ce=new Image;Ce.crossOrigin="anonymous",Ce.referrerPolicy="no-referrer",Ce.src=F,Ce.onload=function(){if(X.drawImage(Ce,0,0,on,ct),T(S.toDataURL()),e.content){st(e.content,Ce.height+8);return}};return}if(e.content){st(e.content);return}},[Z,y,b,B,I,w,L,p,H,W,O,F,e.content,J]),(0,c.jsxs)("div",{style:(0,d.Z)({position:"relative"},u),className:he,children:[a,(0,c.jsx)("div",{className:fe,style:(0,d.Z)((0,d.Z)({zIndex:C,position:"absolute",left:0,top:0,width:"100%",height:"100%",backgroundSize:"".concat(Z+p,"px"),pointerEvents:"none",backgroundRepeat:"repeat"},M?{backgroundImage:"url('".concat(M,"')")}:{}),v)})]})},Wt=[576,768,992,1200].map(function(t){return"@media (max-width: ".concat(t,"px)")}),ze=(0,ve.Z)(Wt,4),it=ze[0],lt=ze[1],Xt=ze[2],Ut=ze[3],Kt=function(e){var n,r,a,u,s,v,P,h,C,m,Z,x,y,f,p,g,H,j;return(0,o.Z)({},e.componentCls,(0,o.Z)((0,o.Z)((0,o.Z)((0,o.Z)((0,o.Z)((0,o.Z)({position:"relative","&-children-container":{paddingBlockStart:0,paddingBlockEnd:(n=e.layout)===null||n===void 0||(n=n.pageContainer)===null||n===void 0?void 0:n.paddingBlockPageContainerContent,paddingInline:(r=e.layout)===null||r===void 0||(r=r.pageContainer)===null||r===void 0?void 0:r.paddingInlinePageContainerContent},"&-children-container-no-header":{paddingBlockStart:(a=e.layout)===null||a===void 0||(a=a.pageContainer)===null||a===void 0?void 0:a.paddingBlockPageContainerContent},"&-affix":(0,o.Z)({},"".concat(e.antCls,"-affix"),(0,o.Z)({},"".concat(e.componentCls,"-warp"),{backgroundColor:(u=e.layout)===null||u===void 0||(u=u.pageContainer)===null||u===void 0?void 0:u.colorBgPageContainerFixed,transition:"background-color 0.3s",boxShadow:"0 2px 8px #f0f1f2"}))},"& &-warp-page-header",(0,o.Z)((0,o.Z)((0,o.Z)((0,o.Z)({paddingBlockStart:((s=(v=e.layout)===null||v===void 0||(v=v.pageContainer)===null||v===void 0?void 0:v.paddingBlockPageContainerContent)!==null&&s!==void 0?s:40)/4,paddingBlockEnd:((P=(h=e.layout)===null||h===void 0||(h=h.pageContainer)===null||h===void 0?void 0:h.paddingBlockPageContainerContent)!==null&&P!==void 0?P:40)/2,paddingInlineStart:(C=e.layout)===null||C===void 0||(C=C.pageContainer)===null||C===void 0?void 0:C.paddingInlinePageContainerContent,paddingInlineEnd:(m=e.layout)===null||m===void 0||(m=m.pageContainer)===null||m===void 0?void 0:m.paddingInlinePageContainerContent},"& ~ ".concat(e.proComponentsCls,"-grid-content"),(0,o.Z)({},"".concat(e.proComponentsCls,"-page-container-children-content"),{paddingBlock:((Z=(x=e.layout)===null||x===void 0||(x=x.pageContainer)===null||x===void 0?void 0:x.paddingBlockPageContainerContent)!==null&&Z!==void 0?Z:24)/3})),"".concat(e.antCls,"-page-header-breadcrumb"),{paddingBlockStart:((y=(f=e.layout)===null||f===void 0||(f=f.pageContainer)===null||f===void 0?void 0:f.paddingBlockPageContainerContent)!==null&&y!==void 0?y:40)/4+10}),"".concat(e.antCls,"-page-header-heading"),{paddingBlockStart:((p=(g=e.layout)===null||g===void 0||(g=g.pageContainer)===null||g===void 0?void 0:g.paddingBlockPageContainerContent)!==null&&p!==void 0?p:40)/4}),"".concat(e.antCls,"-page-header-footer"),{marginBlockStart:((H=(j=e.layout)===null||j===void 0||(j=j.pageContainer)===null||j===void 0?void 0:j.paddingBlockPageContainerContent)!==null&&H!==void 0?H:40)/4})),"&-detail",(0,o.Z)({display:"flex"},it,{display:"block"})),"&-main",{width:"100%"}),"&-row",(0,o.Z)({display:"flex",width:"100%"},lt,{display:"block"})),"&-content",{flex:"auto",width:"100%"}),"&-extraContent",(0,o.Z)((0,o.Z)((0,o.Z)((0,o.Z)({flex:"0 1 auto",minWidth:"242px",marginInlineStart:88,textAlign:"end"},Ut,{marginInlineStart:44}),Xt,{marginInlineStart:20}),lt,{marginInlineStart:0,textAlign:"start"}),it,{marginInlineStart:0})))};function Gt(t,e){return(0,G.Xj)("ProLayoutPageContainer",function(n){var r,a=(0,d.Z)((0,d.Z)({},n),{},{componentCls:".".concat(t),layout:(0,d.Z)((0,d.Z)({},n==null?void 0:n.layout),{},{pageContainer:(0,d.Z)((0,d.Z)({},n==null||(r=n.layout)===null||r===void 0?void 0:r.pageContainer),e)})});return[Kt(a)]})}function Vt(t,e){var n=e.stylish;return(0,G.Xj)("ProLayoutPageContainerStylish",function(r){var a=(0,d.Z)((0,d.Z)({},r),{},{componentCls:".".concat(t)});return n?[(0,o.Z)({},"div".concat(a.componentCls),n==null?void 0:n(a))]:[]})}var Yt=l(1977),Qt=["title","content","pageHeaderRender","header","prefixedClassName","extraContent","childrenContentStyle","style","prefixCls","hashId","value","breadcrumbRender"],kt=["children","loading","className","style","footer","affixProps","token","fixedHeader","breadcrumbRender","footerToolBarProps","childrenContentStyle"];function Jt(t){return(0,K.Z)(t)==="object"?t:{spinning:t}}var qt=function(e){var n=e.tabList,r=e.tabActiveKey,a=e.onTabChange,u=e.hashId,s=e.tabBarExtraContent,v=e.tabProps,P=e.prefixedClassName;return Array.isArray(n)||s?(0,c.jsx)(me.Z,(0,d.Z)((0,d.Z)({className:"".concat(P,"-tabs ").concat(u).trim(),activeKey:r,onChange:function(C){a&&a(C)},tabBarExtraContent:s,items:n==null?void 0:n.map(function(h,C){var m;return(0,d.Z)((0,d.Z)({label:h.tab},h),{},{key:((m=h.key)===null||m===void 0?void 0:m.toString())||(C==null?void 0:C.toString())})})},v),{},{children:(0,Yt.n)(ye.Z,"4.23.0")<0?n==null?void 0:n.map(function(h,C){return(0,c.jsx)(me.Z.TabPane,(0,d.Z)({tab:h.tab},h),h.key||C)}):null})):null},_t=function(e,n,r,a){return!e&&!n?null:(0,c.jsx)("div",{className:"".concat(r,"-detail ").concat(a).trim(),children:(0,c.jsx)("div",{className:"".concat(r,"-main ").concat(a).trim(),children:(0,c.jsxs)("div",{className:"".concat(r,"-row ").concat(a).trim(),children:[e&&(0,c.jsx)("div",{className:"".concat(r,"-content ").concat(a).trim(),children:e}),n&&(0,c.jsx)("div",{className:"".concat(r,"-extraContent ").concat(a).trim(),children:n})]})})})},cn=function(e){var n=useContext(RouteContext);return _jsx("div",{style:{height:"100%",display:"flex",alignItems:"center"},children:_jsx(Breadcrumb,_objectSpread(_objectSpread(_objectSpread({},n==null?void 0:n.breadcrumb),n==null?void 0:n.breadcrumbProps),e))})},dt=function(e){var n,r=e.title,a=e.content,u=e.pageHeaderRender,s=e.header,v=e.prefixedClassName,P=e.extraContent,h=e.childrenContentStyle,C=e.style,m=e.prefixCls,Z=e.hashId,x=e.value,y=e.breadcrumbRender,f=(0,U.Z)(e,Qt),p=function(){if(y)return y};if(u===!1)return null;if(u)return(0,c.jsxs)(c.Fragment,{children:[" ",u((0,d.Z)((0,d.Z)({},e),x))]});var g=r;!r&&r!==!1&&(g=x.title);var H=(0,d.Z)((0,d.Z)((0,d.Z)({},x),{},{title:g},f),{},{footer:qt((0,d.Z)((0,d.Z)({},f),{},{hashId:Z,breadcrumbRender:y,prefixedClassName:v}))},s),j=H,I=j.breadcrumb,F=(!I||!(I!=null&&I.itemRender)&&!(I!=null&&(n=I.items)!==null&&n!==void 0&&n.length))&&!y;return["title","subTitle","extra","tags","footer","avatar","backIcon"].every(function(b){return!H[b]})&&F&&!a&&!P?null:(0,c.jsx)(Dt,(0,d.Z)((0,d.Z)({},H),{},{className:"".concat(v,"-warp-page-header ").concat(Z).trim(),breadcrumb:y===!1?void 0:(0,d.Z)((0,d.Z)({},H.breadcrumb),x.breadcrumbProps),breadcrumbRender:p(),prefixCls:m,children:(s==null?void 0:s.children)||_t(a,P,v,Z)}))},en=function(e){var n,r,a=e.children,u=e.loading,s=u===void 0?!1:u,v=e.className,P=e.style,h=e.footer,C=e.affixProps,m=e.token,Z=e.fixedHeader,x=e.breadcrumbRender,y=e.footerToolBarProps,f=e.childrenContentStyle,p=(0,U.Z)(e,kt),g=(0,i.useContext)(He.X);(0,i.useEffect)(function(){var E;return!g||!(g!=null&&g.setHasPageContainer)?function(){}:(g==null||(E=g.setHasPageContainer)===null||E===void 0||E.call(g,function(D){return D+1}),function(){var D;g==null||(D=g.setHasPageContainer)===null||D===void 0||D.call(g,function(ne){return ne-1})})},[]);var H=(0,i.useContext)(de.L_),j=H.token,I=(0,i.useContext)(ce.ZP.ConfigContext),F=I.getPrefixCls,b=e.prefixCls||F("pro"),B="".concat(b,"-page-container"),$=Gt(B,m),w=$.wrapSSR,R=$.hashId,L=Vt("".concat(B,".").concat(B,"-stylish"),{stylish:e.stylish}),Q=(0,i.useMemo)(function(){var E;return x==!1?!1:x||(p==null||(E=p.header)===null||E===void 0?void 0:E.breadcrumbRender)},[x,p==null||(n=p.header)===null||n===void 0?void 0:n.breadcrumbRender]),O=dt((0,d.Z)((0,d.Z)({},p),{},{breadcrumbRender:Q,ghost:!0,hashId:R,prefixCls:void 0,prefixedClassName:B,value:g})),V=(0,i.useMemo)(function(){if(i.isValidElement(s))return s;if(typeof s=="boolean"&&!s)return null;var E=Jt(s);return E.spinning?(0,c.jsx)(zt.S,(0,d.Z)({},E)):null},[s]),J=(0,i.useMemo)(function(){return a?(0,c.jsx)(c.Fragment,{children:(0,c.jsx)("div",{className:A()(R,"".concat(B,"-children-container"),(0,o.Z)({},"".concat(B,"-children-container-no-header"),!O)),style:f,children:a})}):null},[a,B,f,R]),Y=(0,i.useMemo)(function(){var E=V||J;if(e.waterMarkProps||g.waterMarkProps){var D=(0,d.Z)((0,d.Z)({},g.waterMarkProps),e.waterMarkProps);return(0,c.jsx)(Lt,(0,d.Z)((0,d.Z)({},D),{},{children:E}))}return E},[e.waterMarkProps,g.waterMarkProps,V,J]),W=A()(B,R,v,(0,o.Z)((0,o.Z)((0,o.Z)({},"".concat(B,"-with-footer"),h),"".concat(B,"-with-affix"),Z&&O),"".concat(B,"-stylish"),!!p.stylish));return w(L.wrapSSR((0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)("div",{style:P,className:W,children:[Z&&O?(0,c.jsx)(Pe,(0,d.Z)((0,d.Z)({offsetTop:g.hasHeader&&g.fixedHeader?(r=j.layout)===null||r===void 0||(r=r.header)===null||r===void 0?void 0:r.heightLayoutHeader:1},C),{},{className:"".concat(B,"-affix ").concat(R).trim(),children:(0,c.jsx)("div",{className:"".concat(B,"-warp ").concat(R).trim(),children:O})})):O,Y&&(0,c.jsx)(we,{children:Y})]}),h&&(0,c.jsx)(q.S,(0,d.Z)((0,d.Z)({stylish:p.footerStylish,prefixCls:b},y),{},{children:h}))]})))},tn=function(e){return(0,c.jsx)(de._Y,{needDeps:!0,children:(0,c.jsx)(en,(0,d.Z)({},e))})},sn=function(e){var n=useContext(RouteContext);return dt(_objectSpread(_objectSpread({},e),{},{hashId:"",value:n}))}},83832:function(le,z,l){l.d(z,{S:function(){return ye}});var o=l(1413),U=l(91),d=l(57381),K=l(67294),de=l(85893),me=["isLoading","pastDelay","timedOut","error","retry"],ye=function(i){var Be=i.isLoading,A=i.pastDelay,re=i.timedOut,Re=i.error,pe=i.retry,xe=(0,U.Z)(i,me);return(0,de.jsx)("div",{style:{paddingBlockStart:100,textAlign:"center"},children:(0,de.jsx)(d.Z,(0,o.Z)({size:"large"},xe))})}},76509:function(le,z,l){l.d(z,{X:function(){return U}});var o=l(67294),U=(0,o.createContext)({})}}]);
