"use strict";(self.webpackChunkant_design_pro=self.webpackChunkant_design_pro||[]).push([[7903,8975],{94162:function(ne,B,n){var E=n(64599),i=n.n(E),K=n(67294),t=n(66309),S=n(85893),T=function(c){function P(d){switch(d){case"primary":return"blue";case"success":return"success";case"info":return"green";case"warning":return"warning";case"danger":return"error";case"default":default:return"default"}}function C(d){if(d===void 0)return"";if(c.enums){var A=c.enums[d];return A.label}if(c.options){if(!Array.isArray(c.options))return console.log("DictTag options is no array!"),"";var o=i()(c.options),u;try{for(o.s();!(u=o.n()).done;){var _=u.value;if(_.value===d)return _.text}}catch(h){o.e(h)}finally{o.f()}}return String(c.value)}function l(d){if(d===void 0)return"default";if(c.enums){var A=c.enums[d];return A.listClass||"default"}if(c.options){if(!Array.isArray(c.options))return console.log("DictTag options is no array!"),"default";var o=i()(c.options),u;try{for(o.s();!(u=o.n()).done;){var _=u.value;if(_.value===d)return _.listClass||"default"}}catch(h){o.e(h)}finally{o.f()}}return String(c.value)}var D=function(){return P(l(c.value).toLowerCase())},x=function(){return C(c.value)};return(0,S.jsx)(t.Z,{color:D(),children:x()})};B.Z=T},33867:function(ne,B,n){n.d(B,{iK:function(){return E},zc:function(){return K}});var E=function(t){return t[t.SUCCESS=200]="SUCCESS",t[t.ERROR=-1]="ERROR",t[t.TIMEOUT=401]="TIMEOUT",t.TYPE="success",t}({}),i=function(t){return t.GET="GET",t.POST="POST",t.PUT="PUT",t.DELETE="DELETE",t}({}),K=function(t){return t.JSON="application/json;charset=UTF-8",t.FORM_URLENCODED="application/x-www-form-urlencoded;charset=UTF-8",t.FORM_DATA="multipart/form-data;charset=UTF-8",t}({})},59193:function(ne,B,n){n.r(B);var E=n(5574),i=n.n(E),K=n(15009),t=n.n(K),S=n(97857),T=n.n(S),g=n(99289),c=n.n(g),P=n(67294),C=n(76772),l=n(2453),D=n(83622),x=n(17788),d=n(6110),A=n(65385),o=n(2236),u=n(24969),_=n(11475),h=n(48689),O=n(52728),I=n(45349),v=n(92982),le=n(31981),oe=n(94162),f=n(85893),b=function(){var X=c()(t()().mark(function e(a){var m;return t()().wrap(function(r){for(;;)switch(r.prev=r.next){case 0:return m=l.ZP.loading("\u6B63\u5728\u6DFB\u52A0"),r.prev=1,r.next=4,(0,O.bL)(T()({},a));case 4:return m(),l.ZP.success("\u6DFB\u52A0\u6210\u529F"),r.abrupt("return",!0);case 9:return r.prev=9,r.t0=r.catch(1),m(),l.ZP.error("\u6DFB\u52A0\u5931\u8D25\u8BF7\u91CD\u8BD5\uFF01"),r.abrupt("return",!1);case 14:case"end":return r.stop()}},e,null,[[1,9]])}));return function(a){return X.apply(this,arguments)}}(),R=function(){var X=c()(t()().mark(function e(a){var m;return t()().wrap(function(r){for(;;)switch(r.prev=r.next){case 0:return m=l.ZP.loading("\u6B63\u5728\u914D\u7F6E"),r.prev=1,r.next=4,(0,O._8)(a);case 4:return m(),l.ZP.success("\u914D\u7F6E\u6210\u529F"),r.abrupt("return",!0);case 9:return r.prev=9,r.t0=r.catch(1),m(),l.ZP.error("\u914D\u7F6E\u5931\u8D25\u8BF7\u91CD\u8BD5\uFF01"),r.abrupt("return",!1);case 14:case"end":return r.stop()}},e,null,[[1,9]])}));return function(a){return X.apply(this,arguments)}}(),z=function(){var X=c()(t()().mark(function e(a){var m;return t()().wrap(function(r){for(;;)switch(r.prev=r.next){case 0:if(m=l.ZP.loading("\u6B63\u5728\u5220\u9664"),a){r.next=3;break}return r.abrupt("return",!0);case 3:return r.prev=3,r.next=6,(0,O.n_)(a.map(function(y){return y.menuId}).join(","));case 6:return m(),l.ZP.success("\u5220\u9664\u6210\u529F\uFF0C\u5373\u5C06\u5237\u65B0"),r.abrupt("return",!0);case 11:return r.prev=11,r.t0=r.catch(3),m(),l.ZP.error("\u5220\u9664\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5"),r.abrupt("return",!1);case 16:case"end":return r.stop()}},e,null,[[3,11]])}));return function(a){return X.apply(this,arguments)}}(),p=function(){var X=c()(t()().mark(function e(a){var m,s;return t()().wrap(function(y){for(;;)switch(y.prev=y.next){case 0:if(m=l.ZP.loading("\u6B63\u5728\u5220\u9664"),a){y.next=3;break}return y.abrupt("return",!0);case 3:return y.prev=3,s=[a.menuId],y.next=7,(0,O.n_)(s.join(","));case 7:return m(),l.ZP.success("\u5220\u9664\u6210\u529F\uFF0C\u5373\u5C06\u5237\u65B0"),y.abrupt("return",!0);case 12:return y.prev=12,y.t0=y.catch(3),m(),l.ZP.error("\u5220\u9664\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5"),y.abrupt("return",!1);case 17:case"end":return y.stop()}},e,null,[[3,12]])}));return function(a){return X.apply(this,arguments)}}(),k=function(){var e=(0,P.useState)(!1),a=i()(e,2),m=a[0],s=a[1],r=(0,P.useRef)(),y=(0,P.useState)(),W=i()(y,2),ee=W[0],G=W[1],re=(0,P.useState)([]),Q=i()(re,2),F=Q[0],J=Q[1],ie=(0,P.useState)([]),se=i()(ie,2),Y=se[0],ce=se[1],ue=(0,P.useState)([]),me=i()(ue,2),pe=me[0],fe=me[1],de=(0,P.useState)([]),he=i()(de,2),H=he[0],ge=he[1],te=(0,C.useAccess)(),be=(0,C.useIntl)();(0,P.useEffect)(function(){(0,v.pX)("sys_show_hide").then(function($){fe($)}),(0,v.pX)("sys_normal_disable").then(function($){ge($)})},[]);var ve=[{title:(0,f.jsx)(C.FormattedMessage,{id:"system.menu.menu_name",defaultMessage:"\u83DC\u5355\u540D\u79F0"}),dataIndex:"menuName",valueType:"text"},{title:(0,f.jsx)(C.FormattedMessage,{id:"system.menu.icon",defaultMessage:"\u83DC\u5355\u56FE\u6807"}),dataIndex:"icon",valueType:"text",hideInSearch:!0},{title:(0,f.jsx)(C.FormattedMessage,{id:"system.menu.order_num",defaultMessage:"\u663E\u793A\u987A\u5E8F"}),dataIndex:"orderNum",valueType:"text",hideInSearch:!0},{title:(0,f.jsx)(C.FormattedMessage,{id:"system.menu.component",defaultMessage:"\u7EC4\u4EF6\u8DEF\u5F84"}),dataIndex:"component",valueType:"text",hideInSearch:!0},{title:(0,f.jsx)(C.FormattedMessage,{id:"system.menu.perms",defaultMessage:"\u6743\u9650\u6807\u8BC6"}),dataIndex:"perms",valueType:"text",hideInSearch:!0},{title:(0,f.jsx)(C.FormattedMessage,{id:"system.menu.status",defaultMessage:"\u83DC\u5355\u72B6\u6001"}),dataIndex:"status",valueType:"select",valueEnum:H,render:function(Z,L){return(0,f.jsx)(oe.Z,{enums:H,value:L.status})}},{title:(0,f.jsx)(C.FormattedMessage,{id:"pages.searchTable.titleOption",defaultMessage:"\u64CD\u4F5C"}),dataIndex:"option",width:"220px",valueType:"option",render:function(Z,L){return[(0,f.jsx)(D.ZP,{type:"link",size:"small",hidden:!te.hasPerms("system:menu:edit"),onClick:function(){s(!0),G(L)},children:"\u7F16\u8F91"},"edit"),(0,f.jsx)(D.ZP,{type:"link",size:"small",danger:!0,hidden:!te.hasPerms("system:menu:remove"),onClick:c()(t()().mark(function M(){return t()().wrap(function(j){for(;;)switch(j.prev=j.next){case 0:x.Z.confirm({title:"\u5220\u9664",content:"\u786E\u5B9A\u5220\u9664\u8BE5\u9879\u5417\uFF1F",okText:"\u786E\u8BA4",cancelText:"\u53D6\u6D88",onOk:function(){var N=c()(t()().mark(function U(){var ae;return t()().wrap(function(_e){for(;;)switch(_e.prev=_e.next){case 0:return _e.next=2,p(L);case 2:ae=_e.sent,ae&&r.current&&r.current.reload();case 4:case"end":return _e.stop()}},U)}));function V(){return N.apply(this,arguments)}return V}()});case 1:case"end":return j.stop()}},M)})),children:"\u5220\u9664"},"batchRemove")]}}];return(0,f.jsxs)(d._z,{children:[(0,f.jsx)("div",{style:{width:"100%",float:"right"},children:(0,f.jsx)(A.Z,{headerTitle:be.formatMessage({id:"pages.searchTable.title",defaultMessage:"\u4FE1\u606F"}),actionRef:r,rowKey:"menuId",search:{labelWidth:120},toolBarRender:function(){return[(0,f.jsxs)(D.ZP,{type:"primary",hidden:!te.hasPerms("system:menu:add"),onClick:c()(t()().mark(function Z(){return t()().wrap(function(M){for(;;)switch(M.prev=M.next){case 0:G(void 0),s(!0);case 2:case"end":return M.stop()}},Z)})),children:[(0,f.jsx)(u.Z,{})," ",(0,f.jsx)(C.FormattedMessage,{id:"pages.searchTable.new",defaultMessage:"\u65B0\u5EFA"})]},"add"),(0,f.jsxs)(D.ZP,{type:"primary",danger:!0,hidden:(F==null?void 0:F.length)===0||!te.hasPerms("system:menu:remove"),onClick:c()(t()().mark(function Z(){return t()().wrap(function(M){for(;;)switch(M.prev=M.next){case 0:x.Z.confirm({title:"\u662F\u5426\u786E\u8BA4\u5220\u9664\u6240\u9009\u6570\u636E\u9879?",icon:(0,f.jsx)(_.Z,{}),content:"\u8BF7\u8C28\u614E\u64CD\u4F5C",onOk:function(){return c()(t()().mark(function j(){var N,V,U;return t()().wrap(function(w){for(;;)switch(w.prev=w.next){case 0:return w.next=2,z(F);case 2:N=w.sent,N&&(J([]),(V=r.current)===null||V===void 0||(U=V.reloadAndRest)===null||U===void 0||U.call(V));case 4:case"end":return w.stop()}},j)}))()},onCancel:function(){}});case 1:case"end":return M.stop()}},Z)})),children:[(0,f.jsx)(h.Z,{}),(0,f.jsx)(C.FormattedMessage,{id:"pages.searchTable.delete",defaultMessage:"\u5220\u9664"})]},"remove")]},request:function(Z){return(0,O.Af)(T()({},Z)).then(function(L){var M={id:0,label:"\u4E3B\u7C7B\u76EE",children:[],value:0},q=(0,le.C2)(L.data,"menuId","menuName","","","");M.children=q;var j=[];return j.push(M),ce(j),{data:q,total:L.data.length,success:!0}})},columns:ve,rowSelection:{onChange:function(Z,L){J(L)}}},"menuList")}),(F==null?void 0:F.length)>0&&(0,f.jsx)(o.S,{extra:(0,f.jsxs)("div",{children:[(0,f.jsx)(C.FormattedMessage,{id:"pages.searchTable.chosen",defaultMessage:"\u5DF2\u9009\u62E9"}),(0,f.jsx)("a",{style:{fontWeight:600},children:F.length}),(0,f.jsx)(C.FormattedMessage,{id:"pages.searchTable.item",defaultMessage:"\u9879"})]}),children:(0,f.jsx)(D.ZP,{danger:!0,hidden:!te.hasPerms("system:menu:del"),onClick:c()(t()().mark(function $(){return t()().wrap(function(L){for(;;)switch(L.prev=L.next){case 0:x.Z.confirm({title:"\u5220\u9664",content:"\u786E\u5B9A\u5220\u9664\u8BE5\u9879\u5417\uFF1F",okText:"\u786E\u8BA4",cancelText:"\u53D6\u6D88",onOk:function(){var M=c()(t()().mark(function j(){var N,V,U;return t()().wrap(function(w){for(;;)switch(w.prev=w.next){case 0:return w.next=2,z(F);case 2:N=w.sent,N&&(J([]),(V=r.current)===null||V===void 0||(U=V.reloadAndRest)===null||U===void 0||U.call(V));case 4:case"end":return w.stop()}},j)}));function q(){return M.apply(this,arguments)}return q}()});case 1:case"end":return L.stop()}},$)})),children:(0,f.jsx)(C.FormattedMessage,{id:"pages.searchTable.batchDeletion",defaultMessage:"\u6279\u91CF\u5220\u9664"})},"remove")}),(0,f.jsx)(I.default,{onSubmit:function(){var $=c()(t()().mark(function Z(L){var M;return t()().wrap(function(j){for(;;)switch(j.prev=j.next){case 0:if(M=!1,!L.menuId){j.next=7;break}return j.next=4,R(T()({},L));case 4:M=j.sent,j.next=10;break;case 7:return j.next=9,b(T()({},L));case 9:M=j.sent;case 10:M&&(s(!1),G(void 0),r.current&&r.current.reload());case 11:case"end":return j.stop()}},Z)}));return function(Z){return $.apply(this,arguments)}}(),onCancel:function(){s(!1),G(void 0)},open:m,values:ee||{},visibleOptions:pe,statusOptions:H,menuTree:Y})]})};B.default=k},92982:function(ne,B,n){n.d(B,{Hr:function(){return A},QK:function(){return oe},Vd:function(){return D},a7:function(){return h},jK:function(){return C},n2:function(){return le},oH:function(){return u},pX:function(){return x},sF:function(){return I}});var E=n(15009),i=n.n(E),K=n(97857),t=n.n(K),S=n(99289),T=n.n(S),g=n(76772),c=n(33867),P=n(30964);function C(b){return l.apply(this,arguments)}function l(){return l=T()(i()().mark(function b(R){return i()().wrap(function(p){for(;;)switch(p.prev=p.next){case 0:return p.abrupt("return",(0,g.request)("/api/system/dict/type/list",{params:t()({},R),method:"GET",headers:{"Content-Type":"application/json;charset=UTF-8"}}));case 1:case"end":return p.stop()}},b)})),l.apply(this,arguments)}function D(b){return(0,g.request)("/api/system/dict/type/".concat(b),{method:"GET"})}function x(b,R){return d.apply(this,arguments)}function d(){return d=T()(i()().mark(function b(R,z){var p,k;return i()().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,g.request)("/api/system/dict/data/type/".concat(R),{method:"GET"});case 2:if(p=e.sent,p.code!==c.iK.SUCCESS){e.next=9;break}return k={},p.data.forEach(function(a){k[a.dictValue]={text:a.dictLabel,label:a.dictLabel,value:z?Number(a.dictValue):a.dictValue,key:a.dictCode,listClass:a.listClass,status:a.listClass}}),e.abrupt("return",k);case 9:return e.abrupt("return",{});case 10:case"end":return e.stop()}},b)})),d.apply(this,arguments)}function A(b,R){return o.apply(this,arguments)}function o(){return o=T()(i()().mark(function b(R,z){var p,k;return i()().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,g.request)("/api/system/dict/data/type/".concat(R),{method:"GET"});case 2:if(p=e.sent,p.code!==200){e.next=6;break}return k=p.data.map(function(a){return{text:a.dictLabel,label:a.dictLabel,value:z?Number(a.dictValue):a.dictValue,key:a.dictCode,listClass:a.listClass,status:a.listClass}}),e.abrupt("return",k);case 6:return e.abrupt("return",[]);case 7:case"end":return e.stop()}},b)})),o.apply(this,arguments)}function u(b){return _.apply(this,arguments)}function _(){return _=T()(i()().mark(function b(R){return i()().wrap(function(p){for(;;)switch(p.prev=p.next){case 0:return p.abrupt("return",(0,g.request)("/api/system/dict/type",{method:"POST",headers:{"Content-Type":"application/json;charset=UTF-8"},data:R}));case 1:case"end":return p.stop()}},b)})),_.apply(this,arguments)}function h(b){return O.apply(this,arguments)}function O(){return O=T()(i()().mark(function b(R){return i()().wrap(function(p){for(;;)switch(p.prev=p.next){case 0:return p.abrupt("return",(0,g.request)("/api/system/dict/type",{method:"PUT",headers:{"Content-Type":"application/json;charset=UTF-8"},data:R}));case 1:case"end":return p.stop()}},b)})),O.apply(this,arguments)}function I(b){return v.apply(this,arguments)}function v(){return v=T()(i()().mark(function b(R){return i()().wrap(function(p){for(;;)switch(p.prev=p.next){case 0:return p.abrupt("return",(0,g.request)("/api/system/dict/type/".concat(R),{method:"DELETE"}));case 1:case"end":return p.stop()}},b)})),v.apply(this,arguments)}function le(b){return(0,P.su)("/api/system/dict/type/export",{params:b},"dict_type_".concat(new Date().getTime(),".xlsx"))}function oe(b){return f.apply(this,arguments)}function f(){return f=T()(i()().mark(function b(R){return i()().wrap(function(p){for(;;)switch(p.prev=p.next){case 0:return p.abrupt("return",(0,g.request)("/api/system/dict/type/optionselect",{params:t()({},R),method:"GET",headers:{"Content-Type":"application/json;charset=UTF-8"}}));case 1:case"end":return p.stop()}},b)})),f.apply(this,arguments)}},52728:function(ne,B,n){n.d(B,{Af:function(){return c},Th:function(){return u},_8:function(){return x},bL:function(){return l},n_:function(){return A}});var E=n(15009),i=n.n(E),K=n(97857),t=n.n(K),S=n(99289),T=n.n(S),g=n(76772);function c(_,h){return P.apply(this,arguments)}function P(){return P=T()(i()().mark(function _(h,O){return i()().wrap(function(v){for(;;)switch(v.prev=v.next){case 0:return v.abrupt("return",(0,g.request)("/api/system/menu/list",t()({method:"GET",headers:{"Content-Type":"application/json;charset=UTF-8"},params:h},O||{})));case 1:case"end":return v.stop()}},_)})),P.apply(this,arguments)}function C(_,h){return request("/api/system/menu/".concat(_),_objectSpread({method:"GET"},h||{}))}function l(_,h){return D.apply(this,arguments)}function D(){return D=T()(i()().mark(function _(h,O){return i()().wrap(function(v){for(;;)switch(v.prev=v.next){case 0:return v.abrupt("return",(0,g.request)("/api/system/menu",t()({method:"POST",headers:{"Content-Type":"application/json;charset=UTF-8"},data:h},O||{})));case 1:case"end":return v.stop()}},_)})),D.apply(this,arguments)}function x(_,h){return d.apply(this,arguments)}function d(){return d=T()(i()().mark(function _(h,O){return i()().wrap(function(v){for(;;)switch(v.prev=v.next){case 0:return v.abrupt("return",(0,g.request)("/api/system/menu",t()({method:"PUT",headers:{"Content-Type":"application/json;charset=UTF-8"},data:h},O||{})));case 1:case"end":return v.stop()}},_)})),d.apply(this,arguments)}function A(_,h){return o.apply(this,arguments)}function o(){return o=T()(i()().mark(function _(h,O){return i()().wrap(function(v){for(;;)switch(v.prev=v.next){case 0:return v.abrupt("return",(0,g.request)("/api/system/menu/".concat(h),t()({method:"DELETE"},O||{})));case 1:case"end":return v.stop()}},_)})),o.apply(this,arguments)}function u(){return(0,g.request)("/api/system/menu/treeselect",{method:"GET"})}},30964:function(ne,B,n){n.d(B,{p6:function(){return C},su:function(){return l}});var E=n(15009),i=n.n(E),K=n(97857),t=n.n(K),S=n(99289),T=n.n(S),g=n(76772),c={xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",zip:"application/zip"};function P(d,A){var o=document.createElement("a"),u=new Blob([d.data],{type:A}),_=new RegExp("filename=([^;]+\\.[^\\.;]+);*"),h=decodeURI(d.headers["content-disposition"]),O=_.exec(h),I=O?O[1]:"file";I=I.replace(/"/g,""),o.style.display="none",o.href=URL.createObjectURL(u),o.setAttribute("download",I),document.body.appendChild(o),o.click(),URL.revokeObjectURL(o.href),document.body.removeChild(o)}function C(d){(0,g.request)(d,{method:"GET",responseType:"blob",getResponse:!0}).then(function(A){P(A,c.zip)})}function l(d,A,o){return D.apply(this,arguments)}function D(){return D=T()(i()().mark(function d(A,o,u){return i()().wrap(function(h){for(;;)switch(h.prev=h.next){case 0:return h.abrupt("return",(0,g.request)(A,t()(t()({},o),{},{method:"POST",responseType:"blob"})).then(function(O){var I=document.createElement("a"),v=O;I.style.display="none",I.href=URL.createObjectURL(v),I.setAttribute("download",u),document.body.appendChild(I),I.click(),URL.revokeObjectURL(I.href),document.body.removeChild(I)}));case 1:case"end":return h.stop()}},d)})),D.apply(this,arguments)}function x(d){window.location.href="/api/common/download?fileName=".concat(encodeURI(d),"&delete=",!0)}},31981:function(ne,B,n){n.d(B,{C2:function(){return i},lt:function(){return t}});var E=n(87735);function i(S,T,g,c,P,C){var l={id:T||"id",name:g||"name",parentId:c||"parentId",parentName:P||"parentName",childrenList:C||"children"},D=[],x=[],d=[];S.forEach(function(o){var u=o,_=u[l.parentId];D[_]||(D[_]=[]),u.key=u[l.id],u.title=u[l.name],u.value=u[l.id],u[l.childrenList]=null,x[u[l.id]]=u,D[_].push(u)}),S.forEach(function(o){var u=o,_=u[l.parentId];x[_]||(u[l.parentName]="",d.push(u))});function A(o){var u=o;D[u[l.id]]&&(u[l.childrenList]||(u[l.childrenList]=[]),u[l.childrenList]=D[u[l.id]]),u[l.childrenList]&&u[l.childrenList].forEach(function(_){var h=_;h[l.parentName]=u[l.name],A(h)})}return d.forEach(function(o){A(o)}),d}var K=function(){return parse(window.location.href.split("?")[1])};function t(S){var T=S.map(function(g){var c={id:g.id,title:g.label,key:"".concat(g.id),value:g.id};return g.children&&(c.children=t(g.children)),c});return T}},66309:function(ne,B,n){n.d(B,{Z:function(){return X}});var E=n(67294),i=n(93967),K=n.n(i),t=n(98423),S=n(98787),T=n(69760),g=n(96159),c=n(45353),P=n(53124),C=n(11568),l=n(15063),D=n(14747),x=n(83262),d=n(83559);const A=e=>{const{paddingXXS:a,lineWidth:m,tagPaddingHorizontal:s,componentCls:r,calc:y}=e,W=y(s).sub(m).equal(),ee=y(a).sub(m).equal();return{[r]:Object.assign(Object.assign({},(0,D.Wf)(e)),{display:"inline-block",height:"auto",marginInlineEnd:e.marginXS,paddingInline:W,fontSize:e.tagFontSize,lineHeight:e.tagLineHeight,whiteSpace:"nowrap",background:e.defaultBg,border:`${(0,C.bf)(e.lineWidth)} ${e.lineType} ${e.colorBorder}`,borderRadius:e.borderRadiusSM,opacity:1,transition:`all ${e.motionDurationMid}`,textAlign:"start",position:"relative",[`&${r}-rtl`]:{direction:"rtl"},"&, a, a:hover":{color:e.defaultColor},[`${r}-close-icon`]:{marginInlineStart:ee,fontSize:e.tagIconSize,color:e.colorTextDescription,cursor:"pointer",transition:`all ${e.motionDurationMid}`,"&:hover":{color:e.colorTextHeading}},[`&${r}-has-color`]:{borderColor:"transparent",[`&, a, a:hover, ${e.iconCls}-close, ${e.iconCls}-close:hover`]:{color:e.colorTextLightSolid}},"&-checkable":{backgroundColor:"transparent",borderColor:"transparent",cursor:"pointer",[`&:not(${r}-checkable-checked):hover`]:{color:e.colorPrimary,backgroundColor:e.colorFillSecondary},"&:active, &-checked":{color:e.colorTextLightSolid},"&-checked":{backgroundColor:e.colorPrimary,"&:hover":{backgroundColor:e.colorPrimaryHover}},"&:active":{backgroundColor:e.colorPrimaryActive}},"&-hidden":{display:"none"},[`> ${e.iconCls} + span, > span + ${e.iconCls}`]:{marginInlineStart:W}}),[`${r}-borderless`]:{borderColor:"transparent",background:e.tagBorderlessBg}}},o=e=>{const{lineWidth:a,fontSizeIcon:m,calc:s}=e,r=e.fontSizeSM;return(0,x.IX)(e,{tagFontSize:r,tagLineHeight:(0,C.bf)(s(e.lineHeightSM).mul(r).equal()),tagIconSize:s(m).sub(s(a).mul(2)).equal(),tagPaddingHorizontal:8,tagBorderlessBg:e.defaultBg})},u=e=>({defaultBg:new l.t(e.colorFillQuaternary).onBackground(e.colorBgContainer).toHexString(),defaultColor:e.colorText});var _=(0,d.I$)("Tag",e=>{const a=o(e);return A(a)},u),h=function(e,a){var m={};for(var s in e)Object.prototype.hasOwnProperty.call(e,s)&&a.indexOf(s)<0&&(m[s]=e[s]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var r=0,s=Object.getOwnPropertySymbols(e);r<s.length;r++)a.indexOf(s[r])<0&&Object.prototype.propertyIsEnumerable.call(e,s[r])&&(m[s[r]]=e[s[r]]);return m},I=E.forwardRef((e,a)=>{const{prefixCls:m,style:s,className:r,checked:y,onChange:W,onClick:ee}=e,G=h(e,["prefixCls","style","className","checked","onChange","onClick"]),{getPrefixCls:re,tag:Q}=E.useContext(P.E_),F=ue=>{W==null||W(!y),ee==null||ee(ue)},J=re("tag",m),[ie,se,Y]=_(J),ce=K()(J,`${J}-checkable`,{[`${J}-checkable-checked`]:y},Q==null?void 0:Q.className,r,se,Y);return ie(E.createElement("span",Object.assign({},G,{ref:a,style:Object.assign(Object.assign({},s),Q==null?void 0:Q.style),className:ce,onClick:F})))}),v=n(98719);const le=e=>(0,v.Z)(e,(a,m)=>{let{textColor:s,lightBorderColor:r,lightColor:y,darkColor:W}=m;return{[`${e.componentCls}${e.componentCls}-${a}`]:{color:s,background:y,borderColor:r,"&-inverse":{color:e.colorTextLightSolid,background:W,borderColor:W},[`&${e.componentCls}-borderless`]:{borderColor:"transparent"}}}});var oe=(0,d.bk)(["Tag","preset"],e=>{const a=o(e);return le(a)},u);function f(e){return typeof e!="string"?e:e.charAt(0).toUpperCase()+e.slice(1)}const b=(e,a,m)=>{const s=f(m);return{[`${e.componentCls}${e.componentCls}-${a}`]:{color:e[`color${m}`],background:e[`color${s}Bg`],borderColor:e[`color${s}Border`],[`&${e.componentCls}-borderless`]:{borderColor:"transparent"}}}};var R=(0,d.bk)(["Tag","status"],e=>{const a=o(e);return[b(a,"success","Success"),b(a,"processing","Info"),b(a,"error","Error"),b(a,"warning","Warning")]},u),z=function(e,a){var m={};for(var s in e)Object.prototype.hasOwnProperty.call(e,s)&&a.indexOf(s)<0&&(m[s]=e[s]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var r=0,s=Object.getOwnPropertySymbols(e);r<s.length;r++)a.indexOf(s[r])<0&&Object.prototype.propertyIsEnumerable.call(e,s[r])&&(m[s[r]]=e[s[r]]);return m};const k=E.forwardRef((e,a)=>{const{prefixCls:m,className:s,rootClassName:r,style:y,children:W,icon:ee,color:G,onClose:re,bordered:Q=!0,visible:F}=e,J=z(e,["prefixCls","className","rootClassName","style","children","icon","color","onClose","bordered","visible"]),{getPrefixCls:ie,direction:se,tag:Y}=E.useContext(P.E_),[ce,ue]=E.useState(!0),me=(0,t.Z)(J,["closeIcon","closable"]);E.useEffect(()=>{F!==void 0&&ue(F)},[F]);const pe=(0,S.o2)(G),fe=(0,S.yT)(G),de=pe||fe,he=Object.assign(Object.assign({backgroundColor:G&&!de?G:void 0},Y==null?void 0:Y.style),y),H=ie("tag",m),[ge,te,be]=_(H),ve=K()(H,Y==null?void 0:Y.className,{[`${H}-${G}`]:de,[`${H}-has-color`]:G&&!de,[`${H}-hidden`]:!ce,[`${H}-rtl`]:se==="rtl",[`${H}-borderless`]:!Q},s,r,te,be),$=N=>{N.stopPropagation(),re==null||re(N),!N.defaultPrevented&&ue(!1)},[,Z]=(0,T.Z)((0,T.w)(e),(0,T.w)(Y),{closable:!1,closeIconRender:N=>{const V=E.createElement("span",{className:`${H}-close-icon`,onClick:$},N);return(0,g.wm)(N,V,U=>({onClick:ae=>{var w;(w=U==null?void 0:U.onClick)===null||w===void 0||w.call(U,ae),$(ae)},className:K()(U==null?void 0:U.className,`${H}-close-icon`)}))}}),L=typeof J.onClick=="function"||W&&W.type==="a",M=ee||null,q=M?E.createElement(E.Fragment,null,M,W&&E.createElement("span",null,W)):W,j=E.createElement("span",Object.assign({},me,{ref:a,className:ve,style:he}),q,Z,pe&&E.createElement(oe,{key:"preset",prefixCls:H}),fe&&E.createElement(R,{key:"status",prefixCls:H}));return ge(L?E.createElement(c.Z,{component:"Tag"},j):j)});k.CheckableTag=I;var X=k}}]);
