"use strict";(self.webpackChunkant_design_pro=self.webpackChunkant_design_pro||[]).push([[6412],{26412:function(ve,X,f){f.d(X,{Z:function(){return ce}});var o=f(67294),G=f(93967),j=f.n(G),T=f(74443),U=f(53124),F=f(98675),Z=f(25378),V={xxl:3,xl:3,lg:3,md:3,sm:2,xs:1},M=o.createContext({}),J=f(50344),K=function(e,t){var s={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(s[n]=e[n]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var l=0,n=Object.getOwnPropertySymbols(e);l<n.length;l++)t.indexOf(n[l])<0&&Object.prototype.propertyIsEnumerable.call(e,n[l])&&(s[n[l]]=e[n[l]]);return s};const Q=e=>(0,J.Z)(e).map(t=>Object.assign(Object.assign({},t==null?void 0:t.props),{key:t.key}));function Y(e,t,s){const n=o.useMemo(()=>t||Q(s),[t,s]);return o.useMemo(()=>n.map(a=>{var{span:i}=a,g=K(a,["span"]);return i==="filled"?Object.assign(Object.assign({},g),{filled:!0}):Object.assign(Object.assign({},g),{span:typeof i=="number"?i:(0,T.m9)(e,i)})}),[n,e])}var q=function(e,t){var s={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(s[n]=e[n]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var l=0,n=Object.getOwnPropertySymbols(e);l<n.length;l++)t.indexOf(n[l])<0&&Object.prototype.propertyIsEnumerable.call(e,n[l])&&(s[n[l]]=e[n[l]]);return s};function _(e,t){let s=[],n=[],l=!1,a=0;return e.filter(i=>i).forEach(i=>{const{filled:g}=i,u=q(i,["filled"]);if(g){n.push(u),s.push(n),n=[],a=0;return}const v=t-a;a+=i.span||1,a>=t?(a>t?(l=!0,n.push(Object.assign(Object.assign({},u),{span:v}))):n.push(u),s.push(n),n=[],a=0):n.push(u)}),n.length>0&&s.push(n),s=s.map(i=>{const g=i.reduce((u,v)=>u+(v.span||1),0);if(g<t){const u=i[i.length-1];return u.span=t-(g-(u.span||1)),i}return i}),[s,l]}var k=(e,t)=>{const[s,n]=(0,o.useMemo)(()=>_(t,e),[t,e]);return s},ee=e=>{let{children:t}=e;return t};function D(e){return e!=null}var B=e=>{const{itemPrefixCls:t,component:s,span:n,className:l,style:a,labelStyle:i,contentStyle:g,bordered:u,label:v,content:$,colon:S,type:m,styles:b}=e,x=s,r=o.useContext(M),{classNames:p}=r;return u?o.createElement(x,{className:j()({[`${t}-item-label`]:m==="label",[`${t}-item-content`]:m==="content",[`${p==null?void 0:p.label}`]:m==="label",[`${p==null?void 0:p.content}`]:m==="content"},l),style:a,colSpan:n},D(v)&&o.createElement("span",{style:Object.assign(Object.assign({},i),b==null?void 0:b.label)},v),D($)&&o.createElement("span",{style:Object.assign(Object.assign({},i),b==null?void 0:b.content)},$)):o.createElement(x,{className:j()(`${t}-item`,l),style:a,colSpan:n},o.createElement("div",{className:`${t}-item-container`},(v||v===0)&&o.createElement("span",{className:j()(`${t}-item-label`,p==null?void 0:p.label,{[`${t}-item-no-colon`]:!S}),style:Object.assign(Object.assign({},i),b==null?void 0:b.label)},v),($||$===0)&&o.createElement("span",{className:j()(`${t}-item-content`,p==null?void 0:p.content),style:Object.assign(Object.assign({},g),b==null?void 0:b.content)},$)))};function L(e,t,s){let{colon:n,prefixCls:l,bordered:a}=t,{component:i,type:g,showLabel:u,showContent:v,labelStyle:$,contentStyle:S,styles:m}=s;return e.map((b,x)=>{let{label:r,children:p,prefixCls:c=l,className:C,style:E,labelStyle:w,contentStyle:I,span:P=1,key:O,styles:d}=b;return typeof i=="string"?o.createElement(B,{key:`${g}-${O||x}`,className:C,style:E,styles:{label:Object.assign(Object.assign(Object.assign(Object.assign({},$),m==null?void 0:m.label),w),d==null?void 0:d.label),content:Object.assign(Object.assign(Object.assign(Object.assign({},S),m==null?void 0:m.content),I),d==null?void 0:d.content)},span:P,colon:n,component:i,itemPrefixCls:c,bordered:a,label:u?r:null,content:v?p:null,type:g}):[o.createElement(B,{key:`label-${O||x}`,className:C,style:Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},$),m==null?void 0:m.label),E),w),d==null?void 0:d.label),span:1,colon:n,component:i[0],itemPrefixCls:c,bordered:a,label:r,type:"label"}),o.createElement(B,{key:`content-${O||x}`,className:C,style:Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},S),m==null?void 0:m.content),E),I),d==null?void 0:d.content),span:P*2-1,component:i[1],itemPrefixCls:c,bordered:a,content:p,type:"content"})]})}var te=e=>{const t=o.useContext(M),{prefixCls:s,vertical:n,row:l,index:a,bordered:i}=e;return n?o.createElement(o.Fragment,null,o.createElement("tr",{key:`label-${a}`,className:`${s}-row`},L(l,e,Object.assign({component:"th",type:"label",showLabel:!0},t))),o.createElement("tr",{key:`content-${a}`,className:`${s}-row`},L(l,e,Object.assign({component:"td",type:"content",showContent:!0},t)))):o.createElement("tr",{key:a,className:`${s}-row`},L(l,e,Object.assign({component:i?["th","td"]:"td",type:"item",showLabel:!0,showContent:!0},t)))},y=f(11568),W=f(14747),ne=f(83559),le=f(83262);const se=e=>{const{componentCls:t,labelBg:s}=e;return{[`&${t}-bordered`]:{[`> ${t}-view`]:{border:`${(0,y.bf)(e.lineWidth)} ${e.lineType} ${e.colorSplit}`,"> table":{tableLayout:"auto"},[`${t}-row`]:{borderBottom:`${(0,y.bf)(e.lineWidth)} ${e.lineType} ${e.colorSplit}`,"&:last-child":{borderBottom:"none"},[`> ${t}-item-label, > ${t}-item-content`]:{padding:`${(0,y.bf)(e.padding)} ${(0,y.bf)(e.paddingLG)}`,borderInlineEnd:`${(0,y.bf)(e.lineWidth)} ${e.lineType} ${e.colorSplit}`,"&:last-child":{borderInlineEnd:"none"}},[`> ${t}-item-label`]:{color:e.colorTextSecondary,backgroundColor:s,"&::after":{display:"none"}}}},[`&${t}-middle`]:{[`${t}-row`]:{[`> ${t}-item-label, > ${t}-item-content`]:{padding:`${(0,y.bf)(e.paddingSM)} ${(0,y.bf)(e.paddingLG)}`}}},[`&${t}-small`]:{[`${t}-row`]:{[`> ${t}-item-label, > ${t}-item-content`]:{padding:`${(0,y.bf)(e.paddingXS)} ${(0,y.bf)(e.padding)}`}}}}}},oe=e=>{const{componentCls:t,extraColor:s,itemPaddingBottom:n,itemPaddingEnd:l,colonMarginRight:a,colonMarginLeft:i,titleMarginBottom:g}=e;return{[t]:Object.assign(Object.assign(Object.assign({},(0,W.Wf)(e)),se(e)),{"&-rtl":{direction:"rtl"},[`${t}-header`]:{display:"flex",alignItems:"center",marginBottom:g},[`${t}-title`]:Object.assign(Object.assign({},W.vS),{flex:"auto",color:e.titleColor,fontWeight:e.fontWeightStrong,fontSize:e.fontSizeLG,lineHeight:e.lineHeightLG}),[`${t}-extra`]:{marginInlineStart:"auto",color:s,fontSize:e.fontSize},[`${t}-view`]:{width:"100%",borderRadius:e.borderRadiusLG,table:{width:"100%",tableLayout:"fixed",borderCollapse:"collapse"}},[`${t}-row`]:{"> th, > td":{paddingBottom:n,paddingInlineEnd:l},"> th:last-child, > td:last-child":{paddingInlineEnd:0},"&:last-child":{borderBottom:"none","> th, > td":{paddingBottom:0}}},[`${t}-item-label`]:{color:e.labelColor,fontWeight:"normal",fontSize:e.fontSize,lineHeight:e.lineHeight,textAlign:"start","&::after":{content:'":"',position:"relative",top:-.5,marginInline:`${(0,y.bf)(i)} ${(0,y.bf)(a)}`},[`&${t}-item-no-colon::after`]:{content:'""'}},[`${t}-item-no-label`]:{"&::after":{margin:0,content:'""'}},[`${t}-item-content`]:{display:"table-cell",flex:1,color:e.contentColor,fontSize:e.fontSize,lineHeight:e.lineHeight,wordBreak:"break-word",overflowWrap:"break-word"},[`${t}-item`]:{paddingBottom:0,verticalAlign:"top","&-container":{display:"flex",[`${t}-item-label`]:{display:"inline-flex",alignItems:"baseline"},[`${t}-item-content`]:{display:"inline-flex",alignItems:"baseline",minWidth:"1em"}}},"&-middle":{[`${t}-row`]:{"> th, > td":{paddingBottom:e.paddingSM}}},"&-small":{[`${t}-row`]:{"> th, > td":{paddingBottom:e.paddingXS}}}})}},ie=e=>({labelBg:e.colorFillAlter,labelColor:e.colorTextTertiary,titleColor:e.colorText,titleMarginBottom:e.fontSizeSM*e.lineHeightSM,itemPaddingBottom:e.padding,itemPaddingEnd:e.padding,colonMarginRight:e.marginXS,colonMarginLeft:e.marginXXS/2,contentColor:e.colorText,extraColor:e.colorText});var ae=(0,ne.I$)("Descriptions",e=>{const t=(0,le.IX)(e,{});return oe(t)},ie),re=function(e,t){var s={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(s[n]=e[n]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var l=0,n=Object.getOwnPropertySymbols(e);l<n.length;l++)t.indexOf(n[l])<0&&Object.prototype.propertyIsEnumerable.call(e,n[l])&&(s[n[l]]=e[n[l]]);return s};const A=e=>{const{prefixCls:t,title:s,extra:n,column:l,colon:a=!0,bordered:i,layout:g,children:u,className:v,rootClassName:$,style:S,size:m,labelStyle:b,contentStyle:x,styles:r,items:p,classNames:c}=e,C=re(e,["prefixCls","title","extra","column","colon","bordered","layout","children","className","rootClassName","style","size","labelStyle","contentStyle","styles","items","classNames"]),{getPrefixCls:E,direction:w,className:I,style:P,classNames:O,styles:d}=(0,U.dj)("descriptions"),h=E("descriptions",t),z=(0,Z.Z)(),de=o.useMemo(()=>{var N;return typeof l=="number"?l:(N=(0,T.m9)(z,Object.assign(Object.assign({},V),l)))!==null&&N!==void 0?N:3},[z,l]),me=Y(z,p,u),R=(0,F.Z)(m),be=k(de,me),[pe,ge,ue]=ae(h),fe=o.useMemo(()=>({labelStyle:b,contentStyle:x,styles:{content:Object.assign(Object.assign({},d.content),r==null?void 0:r.content),label:Object.assign(Object.assign({},d.label),r==null?void 0:r.label)},classNames:{label:j()(O.label,c==null?void 0:c.label),content:j()(O.content,c==null?void 0:c.content)}}),[b,x,r,c,O,d]);return pe(o.createElement(M.Provider,{value:fe},o.createElement("div",Object.assign({className:j()(h,I,O.root,c==null?void 0:c.root,{[`${h}-${R}`]:R&&R!=="default",[`${h}-bordered`]:!!i,[`${h}-rtl`]:w==="rtl"},v,$,ge,ue),style:Object.assign(Object.assign(Object.assign(Object.assign({},P),d.root),r==null?void 0:r.root),S)},C),(s||n)&&o.createElement("div",{className:j()(`${h}-header`,O.header,c==null?void 0:c.header),style:Object.assign(Object.assign({},d.header),r==null?void 0:r.header)},s&&o.createElement("div",{className:j()(`${h}-title`,O.title,c==null?void 0:c.title),style:Object.assign(Object.assign({},d.title),r==null?void 0:r.title)},s),n&&o.createElement("div",{className:j()(`${h}-extra`,O.extra,c==null?void 0:c.extra),style:Object.assign(Object.assign({},d.extra),r==null?void 0:r.extra)},n)),o.createElement("div",{className:`${h}-view`},o.createElement("table",null,o.createElement("tbody",null,be.map((N,H)=>o.createElement(te,{key:H,index:H,colon:a,prefixCls:h,vertical:g==="vertical",bordered:i,row:N}))))))))};A.Item=ee;var ce=A}}]);
