gant-core 0.1.52 → 0.2.0

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.
Files changed (52) hide show
  1. package/.prettierrc.json +10 -0
  2. package/lib/cli/config/defineConfig.js +2 -0
  3. package/lib/cli/config/index.js +2 -0
  4. package/lib/cli/copyfiles/index.js +2 -0
  5. package/lib/cli/create/config/index.js +10 -0
  6. package/lib/cli/create/index.js +2 -0
  7. package/lib/cli/create/module/index.js +10 -0
  8. package/lib/cli/i18n/index.js +9 -0
  9. package/lib/cli/i18n/utils.js +2 -0
  10. package/lib/cli/index.js +1 -90275
  11. package/lib/cli/ms/index.js +23 -0
  12. package/lib/cli/msmain.js +65 -0
  13. package/lib/cli/routes/index.js +2 -0
  14. package/lib/cli/template/msentry.txt +5 -0
  15. package/lib/cli/template/tsconfig.react.template.json +1 -1
  16. package/lib/cli/template/tsconfig.vue.template.json +1 -1
  17. package/lib/cli/tsconfig/index.js +2 -0
  18. package/lib/cli/utils/getJavascriptfile.js +10 -0
  19. package/lib/cli/utils/index.js +2 -0
  20. package/lib/cli/webpack/Webpack.js +2 -0
  21. package/lib/cli/webpack/config/analyzer.config.js +2 -0
  22. package/lib/cli/webpack/config/cssRules.js +2 -0
  23. package/lib/cli/webpack/config/default.config.js +2 -0
  24. package/lib/cli/webpack/config/development.config.js +2 -0
  25. package/lib/cli/webpack/config/index.js +2 -0
  26. package/lib/cli/webpack/config/production.config.js +14 -0
  27. package/lib/cli/webpack/plugins/copy.js +2 -0
  28. package/lib/cli/webpack/plugins/index.js +2 -0
  29. package/lib/core/cache/index.js +2 -0
  30. package/lib/core/cache/index.js.map +1 -0
  31. package/lib/core/event/index.js +2 -0
  32. package/lib/core/event/index.js.map +1 -0
  33. package/lib/core/i18n/index.js +2 -0
  34. package/lib/core/i18n/index.js.map +1 -0
  35. package/lib/core/index.js +2 -0
  36. package/lib/core/index.js.map +1 -0
  37. package/lib/core/microservices/index.js +2 -0
  38. package/lib/core/microservices/index.js.map +1 -0
  39. package/lib/core/request/index.js +2 -0
  40. package/lib/core/request/index.js.map +1 -0
  41. package/lib/core/store/index.js +2 -0
  42. package/lib/core/store/index.js.map +1 -0
  43. package/lib/core/theme/index.js +2 -0
  44. package/lib/core/theme/index.js.map +1 -0
  45. package/lib/core/utils/index.js +2 -0
  46. package/lib/core/utils/index.js.map +1 -0
  47. package/lib/{index.d.ts → types/index.d.ts} +25 -10
  48. package/package.json +7 -4
  49. package/rollup.config.js +31 -14
  50. package/lib/cli/index.js.map +0 -1
  51. package/lib/index.js +0 -6423
  52. package/lib/index.js.map +0 -1
@@ -0,0 +1,2 @@
1
+ import{get as e}from"lodash-es";const o="x-g-trace-id",r=r=>e(r,"headers",o)||e(r,"config.headers",o);export{r as g};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../src/core/microservices/index.ts"],"sourcesContent":["/**\n * 异常处理程序\n */\nimport { get } from 'lodash-es';\nexport const TraceIdKey = 'x-g-trace-id';\nexport const StateKey = 'x-g-process-result';\n\nlet microServiceMap: any = {};\nexport const setMicroServiceMap = (map: any) => {\n microServiceMap = { ...microServiceMap, ...map };\n};\n\nexport const getTraceId = (response: any) =>\n get(response, 'headers', TraceIdKey) ||\n get(response, 'config.headers', TraceIdKey);\n\nexport const getMicroSevicesUrl = (url: string, serviceId?: string) => {\n const serviceIdMap: any = {};\n Object.keys(microServiceMap).forEach((key) => {\n microServiceMap[key as keyof typeof microServiceMap].forEach(\n (module: any) => {\n serviceIdMap[module] = key;\n },\n );\n });\n\n const urlMap: any = {};\n Object.keys(microServiceMap).forEach((key) => {\n urlMap[key] = key;\n });\n const suffix = '.api';\n //传入拼接的url\n let newUrl = suffix ? `${url}${suffix}` : url;\n if (serviceId) {\n newUrl = `/${urlMap[serviceId]}${newUrl}`;\n } else {\n const [, urlPrefix] = newUrl.split('/');\n newUrl = serviceIdMap[urlPrefix]\n ? `/${serviceIdMap[urlPrefix]}${newUrl}`\n : newUrl;\n }\n return newUrl;\n};\n"],"names":["TraceIdKey","getTraceId","response","get"],"mappings":"gCAIO,MAAMA,EAAa,eAQbC,EAAcC,GACzBC,EAAID,EAAU,UAAWF,IACzBG,EAAID,EAAU,iBAAkBF"}
@@ -0,0 +1,2 @@
1
+ import e from"axios";import{forEach as t}from"lodash-es";const s=e.create({}),r=new class{handlers;constructor(){this.handlers=[]}use(e,t){return this.handlers.push({fulfilled:e,rejected:t}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){t(this.handlers,(function(t){null!==t&&e(t)}))}},n={showSuccess:!1,successMessage:"",showWarning:!1,showError:!0,getParams:!1,isStream:!1,dangerParse:!1},o=function(e,t,o){const a={...n,...o},{getParams:h,isStream:c}=a,l=[];r.forEach((function(e){l.push(e)}));let i=s.request({method:"post",...t,url:e}),u=0;for(;u<l.length;){const e=l[u]?.fulfilled,t=l[u]?.rejected;i=i.then((t=>"function"==typeof e?e(t,a):t)).catch((e=>"function"==typeof t?t(e,a):Promise.reject(e))),u++}return i.then((e=>{const{data:t}=e;return h?e:c?t:t.data}))};["post","get","put","delete"].forEach((e=>{o[e]=function(t,s,...r){return o(t,{...s,method:e},...r)}}));const a={...s,interceptors:{request:s.interceptors.request,response:r}};export{a,o as r};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../src/core/request/index.ts","../../../src/core/request/InterceptorManager.ts"],"sourcesContent":["import axios from 'axios';\nimport type { AxiosResponse, AxiosInterceptorManager } from 'axios';\nimport {\n GantAxiosRequestConfig,\n GantServerOptions,\n InternalAxiosRequestConfig,\n} from './interface';\nimport InterceptorManager from './InterceptorManager';\nexport * from './interface';\n\nconst instance = axios.create({});\nconst responseInterceptor = new InterceptorManager<AxiosResponse>();\n\ntype RequestMethodType = <T = any>(\n url: string,\n config?: GantAxiosRequestConfig,\n options?: GantServerOptions,\n) => Promise<T>;\n\ntype Request = {\n <T = any>(\n url: string,\n config: GantAxiosRequestConfig,\n options?: GantServerOptions,\n ): Promise<T>;\n} & {\n post: RequestMethodType;\n get: RequestMethodType;\n put: RequestMethodType;\n delete: RequestMethodType;\n};\nconst defaultOptions = {\n showSuccess: false,\n successMessage: '',\n showWarning: false,\n showError: true,\n getParams: false,\n isStream: false,\n dangerParse: false,\n};\nconst requestInterceptor: RequestMethodType = function (\n url,\n config,\n optionsProp,\n) {\n const options = { ...defaultOptions, ...optionsProp };\n const { getParams, isStream } = options;\n const responseInterceptorChain: any[] = [];\n\n responseInterceptor.forEach(function pushResponseInterceptors(\n interceptor: any,\n ) {\n responseInterceptorChain.push(interceptor);\n });\n\n let promise = instance.request<any, AxiosResponse>({\n method: 'post',\n ...config,\n url,\n });\n let i = 0;\n while (i < responseInterceptorChain.length) {\n const fulfilled = responseInterceptorChain[i]?.fulfilled;\n const rejected = responseInterceptorChain[i]?.rejected;\n promise = promise\n .then((res: any) => {\n if (typeof fulfilled == 'function') return fulfilled(res, options);\n return res;\n })\n .catch((reject: any) => {\n if (typeof rejected == 'function') return rejected(reject, options);\n return Promise.reject(reject);\n });\n i++;\n }\n return promise.then((res: AxiosResponse) => {\n const { data: serveData } = res;\n return getParams ? res : isStream ? serveData : serveData.data;\n });\n};\n\nconst request = requestInterceptor as Request;\n\n//兼容写法\n(\n ['post', 'get', 'put', 'delete'] as ('post' | 'get' | 'put' | 'delete')[]\n).forEach((method) => {\n request[method] = function namedRequest(url, config, ...options) {\n return request(url, { ...config, method }, ...options);\n } as RequestMethodType;\n});\n\nexport default request;\nexport const requestInstance = {\n ...instance,\n interceptors: {\n request: instance.interceptors\n .request as AxiosInterceptorManager<InternalAxiosRequestConfig>,\n response: responseInterceptor,\n },\n};\n","import { GantServerOptions } from './interface';\nimport { forEach } from 'lodash-es';\nclass InterceptorManager<V> {\n handlers: any[];\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(\n fulfilled?:\n | ((value: V, options?: GantServerOptions) => V | Promise<V>)\n | null,\n rejected?: ((error: any, options?: GantServerOptions) => any) | null,\n ) {\n this.handlers.push({\n fulfilled,\n rejected,\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id: number) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn: any) {\n forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n"],"names":["instance","axios","create","responseInterceptor","handlers","constructor","this","use","fulfilled","rejected","push","length","eject","id","clear","forEach","fn","h","defaultOptions","showSuccess","successMessage","showWarning","showError","getParams","isStream","dangerParse","request","url","config","optionsProp","options","responseInterceptorChain","interceptor","promise","method","i","then","res","catch","reject","Promise","data","serveData","requestInstance","interceptors","response"],"mappings":"yDAUA,MAAMA,EAAWC,EAAMC,OAAO,CAAA,GACxBC,EAAsB,ICT5B,MACEC,SACA,WAAAC,GACEC,KAAKF,SAAW,EACjB,CAUD,GAAAG,CACEC,EAGAC,GAMA,OAJAH,KAAKF,SAASM,KAAK,CACjBF,YACAC,aAEKH,KAAKF,SAASO,OAAS,CAC/B,CASD,KAAAC,CAAMC,GACAP,KAAKF,SAASS,KAChBP,KAAKF,SAASS,GAAM,KAEvB,CAOD,KAAAC,GACMR,KAAKF,WACPE,KAAKF,SAAW,GAEnB,CAYD,OAAAW,CAAQC,GACND,EAAQT,KAAKF,UAAU,SAAwBa,GACnC,OAANA,GACFD,EAAGC,EAEP,GACD,GDtCGC,EAAiB,CACrBC,aAAa,EACbC,eAAgB,GAChBC,aAAa,EACbC,WAAW,EACXC,WAAW,EACXC,UAAU,EACVC,aAAa,GA2CTC,EAzCwC,SAC5CC,EACAC,EACAC,GAEA,MAAMC,EAAU,IAAKZ,KAAmBW,IAClCN,UAAEA,EAASC,SAAEA,GAAaM,EAC1BC,EAAkC,GAExC5B,EAAoBY,SAAQ,SAC1BiB,GAEAD,EAAyBrB,KAAKsB,EAChC,IAEA,IAAIC,EAAUjC,EAAS0B,QAA4B,CACjDQ,OAAQ,UACLN,EACHD,QAEEQ,EAAI,EACR,KAAOA,EAAIJ,EAAyBpB,QAAQ,CAC1C,MAAMH,EAAYuB,EAAyBI,IAAI3B,UACzCC,EAAWsB,EAAyBI,IAAI1B,SAC9CwB,EAAUA,EACPG,MAAMC,GACmB,mBAAb7B,EAAgCA,EAAU6B,EAAKP,GACnDO,IAERC,OAAOC,GACiB,mBAAZ9B,EAA+BA,EAAS8B,EAAQT,GACpDU,QAAQD,OAAOA,KAE1BJ,GACD,CACD,OAAOF,EAAQG,MAAMC,IACnB,MAAQI,KAAMC,GAAcL,EAC5B,OAAOd,EAAYc,EAAMb,EAAWkB,EAAYA,EAAUD,IAAI,GAElE,EAME,CAAC,OAAQ,MAAO,MAAO,UACvB1B,SAASmB,IACTR,EAAQQ,GAAU,SAAsBP,EAAKC,KAAWE,GACtD,OAAOJ,EAAQC,EAAK,IAAKC,EAAQM,aAAaJ,EAChD,CAAsB,IAIX,MAAAa,EAAkB,IAC1B3C,EACH4C,aAAc,CACZlB,QAAS1B,EAAS4C,aACflB,QACHmB,SAAU1C"}
@@ -0,0 +1,2 @@
1
+ import{r as e}from"../request/index.js";import{groupBy as t,reduce as s,find as i,keyBy as n,pick as a,get as r,uniqueId as o,omit as c,isEmpty as h,findIndex as u,isPlainObject as d,cloneDeep as g,mapValues as m,uniqBy as l}from"lodash-es";import{e as p}from"../event/index.js";const y=new class{codeLists=[];codeMaps={};async findAllCodeList(){const s=await e("/codeList/findAll",{data:{},serviceId:"fwPlatform"})||[],i=t(s,"type");this.codeLists=s,this.codeMaps=i}getCodeLocaleList=e=>[...this.codeMaps?.[e]]||[];getCodeLocaleName=(e,t)=>{const n=this.getCodeLocaleList(e);function a(e){const t=i(n,(t=>t.value===String(e)));return t?.name||""}if(Array.isArray(t)){const e=s(t,((e="",t="")=>e+","+a(t)),"");return e.slice(1,e.length)}if(String(t).indexOf(",")>=0){const e=t.replace("[","").replace("]","").split(","),i=s(e,((e="",t="")=>e+","+a(t)),"");return i.slice(1,i.length)}return a(t)}};y.getCodeLocaleList,y.getCodeLocaleName;const w=new class{parameterList=[];parameterMap={};findAllParameters=async()=>{const t=await e("/parameter/findAll",{serviceId:"fwPlatform",data:{}},{showError:!1})||[],s=n(t,"name");this.parameterList=t,this.parameterMap=s};getSystemParameterByName=e=>"string"==typeof e?this.parameterMap[e]:a(this.parameterMap,e)},S="ping",f="pong",I="WS_CONTENT_SUCCESS",L="WS_CONTENT_ERROR",P="WS_CONTENT_CLOSE";const T=new class{RECIPIENT_TYPE_ALL="all";RECIPIENT_TYPE_USER="user";RECIPIENT_TYPE_OBSERVER="obsvr";RECIPIENT_TYPE_CONNECTION="conn";webSocketUrl="";ws=null;repeat=0;connectLoading=!1;disReconnect=!1;pingTimeoutFn=null;pongTimeoutFn=null;reconnectFn=null;repeatLimit=2;connectionId="";userLoginName="";eventStack={};constructor(){}init=(e,t)=>{this.userLoginName=e,this.webSocketUrl=(e=>{const t=`userLoginName=${e}`,{host:s,protocol:i,port:n,hostname:a}=window.location,r=i.includes("https");let o=r?"wss":"ws",c=s;!r&&n&&(c=`${a}:${parseInt(n)}`);return`${o}://${c}/notification-ws?${t}`})(e),this.disReconnect=r(t,"disReconnect",!1),this.repeatLimit=r(t,"repeatLimit",20),this.createWebSocket()};createWebSocket=()=>{this.connectLoading=!0;try{this.ws=new WebSocket(this.webSocketUrl),this.registerEvent()}catch(e){this.ws=null,this.reconnect()}finally{this.connectLoading=!1}};reconnect=()=>{this.reconnectFn&&clearTimeout(this.reconnectFn),this.repeatLimit&&this.repeatLimit<=this.repeat||this.connectLoading||this.disReconnect||this.ws||(this.repeat++,this.reconnectFn=setTimeout((()=>{this.createWebSocket()}),1e4))};heartCheck=()=>{this.repeat=0,this.disReconnect||(this.pingTimeoutFn=setTimeout((()=>{const e=`{"userLoginName":"${this.userLoginName}","connectionId":"${this.connectionId}","content":"${S}"}`;this.ws?.send(e),this.pongTimeoutFn=setTimeout((()=>{this.ws?.close()}),1e4)}),1e4))};heartReset=()=>{this.pingTimeoutFn&&(clearTimeout(this.pingTimeoutFn),this.pingTimeoutFn=null),this.pongTimeoutFn&&(clearTimeout(this.pongTimeoutFn),this.pongTimeoutFn=null)};disconnect=()=>{this.heartReset(),1==this.ws?.readyState&&this.ws?.close(),this.ws=null};registerEvent=()=>{this.ws&&(this.ws.onopen=()=>{this.heartCheck()},this.ws.onmessage=e=>{this.heartReset(),this.heartCheck();const t=e.data;try{if(t==f||JSON.parse(t).content==S||JSON.parse(t).content==f)return;const e=JSON.parse(t),s={...e,senderTime:e.senderTime};if(p.emit(I,s),Object.keys(this.eventStack).map((e=>{const t=this.eventStack[e],i=t.recipientType?.includes(s.recipientType);i&&t?.event?.(s)})),s.recipientType==this.RECIPIENT_TYPE_CONNECTION)return void(this.connectionId=s.recipientCode)}catch(e){console.warn("received error!!!",e)}},this.ws.onerror=()=>{this.heartReset(),this.reconnect(),p.emit(L)},this.ws.onclose=()=>{console.warn("webSocket close"),this.ws=null,this.heartReset(),this.reconnect(),p.emit(P)})};addTypeListener=(e,t)=>{const s=Array.isArray(e)?e:[e],i=o();return this.eventStack[i]={recipientType:s,type:"recipientType",event:t},i};removeListener=e=>{this.eventStack=c(this.eventStack,e)}},{RECIPIENT_TYPE_OBSERVER:C}=T,v="PROGRESS_UPDEDATE";const k=new class{websocketId;progressObserver={};constructor(){this.websocketId=T.addTypeListener(C,this.progressEvent)}progressEvent(e){Object.keys(this.progressObserver).map((t=>{const s=this.progressObserver[t];e?.recipientCode===s.type&&(this.progressObserver[t]={...s,data:e})})),this.updedataProgress()}updedataProgress(){const e=[];Object.keys(this.progressObserver).map((t=>{const s=this.progressObserver[t];h(s?.data)||e.push(s)})),p.emit(v,e)}addProgressListener(e,t){const s=o();return this.progressObserver[s]={type:e,options:t},s}removeProgressListener(e){this.progressObserver=c(this.progressObserver,e),this.updedataProgress()}async requestProgress(t,s){if(!T.connectionId&&!s?.headers?.connectionId)return console.error("WebSocket no link established");const i=(new Date).getDate()+"",n=this.addProgressListener(i);try{const n=await e.post(t,{headers:{observerId:i,connectionId:T.connectionId,...s?.headers},data:s?.params},{getParams:s?.getParams});s?.success?.(n)}catch(e){console.error("---\x3e",e),s?.error?.(e)}this.removeProgressListener(n)}};const U=(({prefixKey:e="",storage:t=localStorage}={})=>new class{storage=t;prefixKey=e;getKey(e){return`${this.prefixKey}${e}`.toUpperCase()}set(e,t,s=604800){const i=JSON.stringify({value:t,expire:null!==s?(new Date).getTime()+1e3*s:null});this.storage.setItem(this.getKey(e),i)}get(e,t=null){const s=this.storage.getItem(this.getKey(e));if(s)try{const t=JSON.parse(s),{value:i,expire:n}=t;if(null===n||n>=Date.now())return i;this.remove(e)}catch(e){return console.error(e),t}return t}remove(e){this.storage.removeItem(this.getKey(e))}clear(){this.storage.clear()}setCookie(e,t,s=604800){document.cookie=`${this.getKey(e)}=${t}; Max-Age=${s}`}getCookie(e){const t=document.cookie.split("; ");for(let s=0,i=t.length;s<i;s++){const i=t[s].split("=");if(i[0]===this.getKey(e))return i[1]}return""}removeCookie(e){this.setCookie(e,1,-1)}clearCookie(){const e=document.cookie.match(/[^ =;]+(?==)/g);if(e)for(let t=e.length;t--;)document.cookie=e[t]+"=0;expire="+new Date(0).toUTCString()}})();class b{userIdentity={};currentUser={};isSuperAdmin=!1;roles=[];functions=[];delegations=[];userSetting={};users=[];getUserIdentity(){if(!h(this.userIdentity))return this.userIdentity;const e=U?.get("userIdentity");return e||{}}setUserIdentity(e){return this.userIdentity={...this.userIdentity,...e},U.set("userIdentity",this.userIdentity),this.userIdentity}clearUserIdentity(){U.remove("userIdentity"),this.userIdentity={}}setUserAggregateInfo=({delegations:e,roles:t,functions:s,isSuperAdmin:i,currentUser:n})=>{this.delegations=e,this.roles=t,this.functions=s,this.isSuperAdmin=i,this.currentUser=n};getUserSettingType=e=>`${this.currentUser.id}-${e}`;getUserSetting=async t=>{const s=this.getUserSettingType(t),i=this.currentUser.id;if(this.userSetting[s])return this.userSetting[s];const n=await async function(t){return e("/accountUserSelf/getUserData",{data:t,serviceId:"fwSecurity"})}({dataType:t,dataId:i+t}),a=n?.bigData?JSON.parse(n.bigData):void 0;return this.userSetting[s]=a,a};updateUserSetting=async(t,s)=>{const i=this.getUserSettingType(t),n=this.currentUser.id;return await async function(t,s){return e("/accountUserSelf/setUserData",{data:t,serviceId:"fwSecurity"},s)}({dataType:t,dataId:n+t,bigData:JSON.stringify(s)}),this.userSetting[i]=s,s};removeUserSetting=async t=>{const s=this.getUserSettingType(t),i=this.currentUser.id;await async function(t,s){return e("/accountUserSelf/delUserData",{data:t,serviceId:"fwSecurity"},s)}({dataType:t,dataId:i}),delete this.userSetting[s]};getUserInfo=async(t,s)=>{const i=u(this.users,(e=>s?e.userLoginName===t:e.id===t));if(i>-1)return r(this.users,`[${i}]`);const n=s?await async function(t){return e("/security/getUserByUserLoginName",{method:"POST",data:{userLoginName:t},serviceId:"fwSecurity"})}(t):await async function(t){return e("/security/getUserById",{method:"POST",data:{id:t},serviceId:"fwSecurity"})}(t);return d(n)&&this.users.push(n),n}}const E=/^https?:\/\/(([a-zA-Z0-9_-])+(\.)?)*(:\d+)?(\/((\.)?(\?)?=?&?[a-zA-Z0-9_-](\?)?)*)*$/i,O=/^https?:\/\/(([a-zA-Z0-9_-])+(\.)?)*(:\d+)?(\/((\.)?(\?)?=?&?[a-zA-Z0-9_-](\?)?)*)*$/i,N=e=>E.test(e)||O.test(e)||0===e?.indexOf("/")?e:"/"+e,D="MENU_HISTORY_UPDATE",R="MENU_BREADCRUMBS_UPDATE";class A{menuDataMaps={};menuData=[];menuPathMaps={};breadcrumbs=[];menuHistorys=[];userId;constructor(){}addListenerMenuHistorys=e=>{p.on(D,e)};removeListenerMenuHistorys=e=>p.off(D,e);addListenerBreadcrumbs=e=>p.on(R,e);removeListenerBreadcrumbs=e=>p.off(R,e);getTreeMenuData=(e,t,s)=>e.map((e=>{const{id:i,path:n,leaf:a}=e,r=t[i],o={...e,key:i,path:s?s+N(n):N(n)};if(r&&!a){const e=this.getTreeMenuData(r,t,o.path);o.children=e}return this.menuDataMaps[o.path]=o,o})).sort(((e,t)=>e.seqNum-t.seqNum));init=(e,s)=>{const i=g(e);if(h(i))return;const n=t(i,"parentResourceId"),{ROOT:a,...r}=n;this.menuData=this.getTreeMenuData(a,r),this.menuData=[...this.menuData];const o=m(this.menuDataMaps,"name");this.updateMenuMaps(o),this.initMenuHistorys(s)};updateMenuMaps=e=>{this.menuPathMaps={...this.menuPathMaps,...e};const t=this.menuHistorys.map((e=>{const t=this.menuPathMaps[e.pathname];return{pathname:e.pathname,name:t||e.name}})),s=this.breadcrumbs.map((e=>{const t=this.menuPathMaps[e.pathname];return{...e,name:t||e.name}}));this.updatehistorys(t),this.updateBreadcrumbs(s)};liseterHistorys=e=>{let t=this.menuHistorys;this.menuDataMaps[e]?.leaf&&!t.some((t=>t.pathname===e))&&(t=[{pathname:e,name:this.menuPathMaps[e]},...t],this.updatehistorys(t))};updatehistorys=e=>{if(!this.userId)return;const t=e.map((e=>({...e,name:e.name?e.name:this.menuPathMaps[e.pathname]})));this.menuHistorys=t,this.menuHistorys=l(this.menuHistorys,"pathname"),p.emit(D,this.menuHistorys),U.set(`${this.userId}-menu-history`,this.menuHistorys)};initMenuHistorys=e=>{this.userId=e;const t=U.get(`${e}-menu-history`,this.menuHistorys);this.updatehistorys(t)};liseterBreadcrumbs=e=>{const t=e.split("/");let s=1;const i=[],n={pathname:e,name:this.menuPathMaps[e]};for(;s<t.length;){const e=t.slice(0,s).join("/");this.menuPathMaps[e]&&i.push({name:this.menuPathMaps[e],pathname:e}),s++}i.push(n),this.updateBreadcrumbs(i)};updateBreadcrumbs=e=>{this.breadcrumbs=e,this.breadcrumbs=l(this.breadcrumbs,"pathname"),p.emit(R,e)}}class M{loginPathname;BASE="/";get baseLoginPathname(){return`${this.BASE}${this.loginPathname?.replace("/","")}`}tokenValue="";get isLoginPathname(){const e=window.location.pathname;return this.baseLoginPathname==e}getRealPath=e=>`${this.BASE}${e.replace("/","")}`;chekToken=async()=>{const t=await e("/authentication/checkToken",{serviceId:"fwSecurity"},{showError:!1});return t&&this.isLoginPathname&&window.location.replace(this.BASE),t};getLoginMethod=async()=>e("/authentication/getLoginMethod",{serviceId:"fwSecurity"});redirectBaseLogin=async()=>{const e=window.location.pathname,t=window.location.href;if(this.isLoginPathname)return!0;const s=new URLSearchParams;e!==this.BASE&&"/"!==e&&s.append("redirectUrl",t);const i=decodeURIComponent(s.toString());return window.location.replace(`${this.baseLoginPathname}${i?"?"+decodeURIComponent(s.toString()):""}`),!1};checkPassword=async()=>"noPass"!==await e("/security/checkPasswordUpdateTime",{data:{}},{showError:!1})||(this.tokenValue=await e("/authentication/extractToken",{data:{}}),!1);refactorToken=async()=>{var t;await(t=this.tokenValue,e("/authentication/refactorToken",{data:{value:t}}))};login=async e=>{const t=await this.baseLogin(e);return t.error,t};baseLogin=async t=>{const s={error:void 0,data:void 0};try{const i=await function(t){return e("/authentication/login",{data:t,serviceId:"fwSecurity"})}(t),{userToken:n,traceId:a}=i;if(n){s.data=i;return await this.checkPassword()||(s.error="passwordExpiration"),s}return a?(s.data=i,s.error="SLIDER_VERIFICATION_LOGIN",s):(s.error="passwordError",s)}catch(e){return s.error="validateError",s}};loginSuccess=()=>{let e=new URLSearchParams(window.location.search).get("redirectUrl");e?window.location.href=e:window.location.replace(this.BASE)};baseLoginOut=async()=>{const t=new URLSearchParams,s=window.location.href;window.location.pathname!==this.BASE&&t.append("redirectUrl",s),await e("/authentication/logout",{data:{},serviceId:"fwSecurity"}),window.location.replace(`${this.baseLoginPathname}?${t.toString()}`)}}const $={sso:!1,ssoUrlSearchParams:["ticket"],ssoCheckTokenUrl:"",ssoSuccessUrlkey:"successUrl",ssoLoginUrl:window.location.origin+"/fwSecurity/ssoAuth/login.api",ssologinOutUrl:window.location.origin+"fwSecurity/ssoAuth/logout.api"};class _{init(e){this.ssoConfig={...this.ssoConfig,...e}}ssoConfig=$;isSso=async t=>{if(!this.ssoConfig.sso)return!1;let s=!1;try{s=await e("/ssoAuthConfig/checkOnlyRedirect",{},{showError:!1})}catch(e){console.error("sso",e)}return t&&(s=await t()),!!s};ssoLogin=()=>{const{ssoSuccessUrlkey:e,ssoUrlSearchParams:t,ssoLoginUrl:s}=this.ssoConfig,i=new URLSearchParams(window.location.search.slice(1)),n=new URLSearchParams,a=window.location.href;return n.append(e,encodeURIComponent(a)),t.map((e=>{const t=i.get(e);t&&n.append(e,t)})),window.location.href=`${s}?${n.toString()}`,!1};ssoLoginOut=()=>{window.location.href=this.ssoConfig.ssologinOutUrl}}class B{getValidateCodeImage=t=>function(t={}){return e("/authentication/getValidateCode",{data:t,serviceId:"fwSecurity"})}(t);sliderVerificationCodeImage=()=>e("/authentication/sliderVerificationCode",{method:"POST",serviceId:"fwSecurity"});checkCaptcha=t=>{return s=t,e("/authentication/checkCaptcha",{method:"POST",data:{...s},serviceId:"fwSecurity"});var s}}class x extends M{ssoLogin;validate;noCheckPermissionsPath=[];ssoCallback;constructor(){super(),this.ssoLogin=new _,this.validate=new B}init=(e,t="/",s)=>{this.BASE=t,this.ssoCallback=s,this.noCheckPermissionsPath=e?.noCheckPermissionsPath,this.ssoLogin.init(e),this.loginPathname=e?.loginPathname||"/login"};isNoLoginRequiredPage=()=>{const e=window.location.pathname,t=this.noCheckPermissionsPath?.some((t=>this.getRealPath(t)==e));return t};loginOut=async()=>{await this.ssoLogin.isSso(this.ssoCallback)&&this.ssoLogin.ssoLoginOut(),await this.baseLoginOut()};loginAuthentication=async t=>{var s;await(s=t,e("/authentication/beforeLoginCheckCode",{method:"POST",data:{...s},serviceId:"fwSecurity"})),this.loginSuccess()};redirectLogin=async()=>{if(this.isNoLoginRequiredPage())return!0;return await this.ssoLogin.isSso(this.ssoCallback)?(this.ssoLogin.ssoLogin(),!1):!!this.isLoginPathname||await this.redirectBaseLogin()}}const F=new class{userStore;menuStore;loginStore;isSuperAdmin=!1;loginCallback;constructor(){this.userStore=new b,this.menuStore=new A,this.loginStore=new x}platformLanguages=[];productInfo={isProdEnv:!1,productName:""};get isPrd(){return this.productInfo?.isProdEnv}get userInfo(){return this.userStore.currentUser}get menuData(){return this.menuStore.menuData}findPlantform=async()=>{const t=await e("/platformManage/getPlatformAggregateInfo",{method:"POST"},{showError:!1});this.platformLanguages=t.platformLanguages,this.productInfo=t.productInfo};getAggregateInfo=async t=>{const s=await async function(){return e("/security/findUserAggregateInfo",{method:"POST"})}(),{user:i,startMenus:n,isSuperAdmin:a,...r}=s;this.userStore.setUserAggregateInfo({...r,currentUser:i}),this.isSuperAdmin=a;const o="function"==typeof t?await t(s):t;this.menuStore.init(h(o)?n:o,i.id)};init=async e=>{const{base:t="/",menuData:s,loginSuccessCallback:i,ssoCallback:n,websocket:a=!0}=e;this.loginStore.init(e?.loginConfig,t,n);try{const e=await this.loginStore.chekToken();return e?(this.userStore.setUserIdentity(e),await this.getAggregateInfo(s),await y.findAllCodeList(),await w.findAllParameters(),a&&T.init(this.userStore.currentUser.userLoginName),await(i?.()),!0):await this.loginStore.redirectLogin()}catch(e){console.error(e)}return!1}};const H="company-v1";var V=new class{data={};getCompanyDataType=e=>`${H}-${e}`;getCompanyData=async t=>{const s=this.getCompanyDataType(t);if(this.data[s])return this.data[s];const i=await async function(t){return e("/companyData/getCompanyData",{data:t,serviceId:"fwSecurity"})}({dataType:t,dataId:H}),n=i?.bigData?JSON.parse(i.bigData):void 0;this.data[s]=n};updateCompanyData=async(t,s)=>{const i=this.getCompanyDataType(t);return await async function(t){return e("/companyData/setCompanyData",{data:t,serviceId:"fwSecurity"})}({dataType:t,dataId:H,bigData:JSON.stringify(s)}),this.data[i]=s,s};removeCompanyData=async t=>{const s=this.getCompanyDataType(t);await async function(t){return e("/companyData/delCompanyData",{data:t,serviceId:"fwSecurity"})}({dataType:t,dataId:H}),delete this.data[s]}};const J=y,K=w,W=F.userStore,Y=F.loginStore,j=F.menuStore;export{D as M,k as P,P as W,R as a,v as b,J as c,L as d,I as e,F as g,V as i,Y as l,j as m,K as p,U as s,W as u,T as w};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../src/core/store/codelist/index.ts","../../../src/core/store/codelist/services.ts","../../../src/core/store/parameter/index.ts","../../../src/core/store/parameter/services.ts","../../../src/core/store/websocket.ts","../../../src/core/store/progress.ts","../../../src/core/store/storage.ts","../../../src/core/store/user/index.ts","../../../src/core/store/user/services.ts","../../../src/core/store/menu/index.ts","../../../src/core/store/login/base.ts","../../../src/core/store/login/services/base.ts","../../../src/core/store/login/services/authentication.ts","../../../src/core/store/login/sso.ts","../../../src/core/store/login/services/sso.ts","../../../src/core/store/login/validate.ts","../../../src/core/store/login/services/validate.ts","../../../src/core/store/login/index.ts","../../../src/core/store/global/index.ts","../../../src/core/store/global/services.ts","../../../src/core/store/companydata/index.ts","../../../src/core/store/companydata/services.ts","../../../src/core/store/index.ts"],"sourcesContent":["import { findAllCodeListApi } from './services';\nimport { groupBy, find, reduce } from 'lodash-es';\n\nexport interface CodeTypeGroup {\n codeTypeId: string;\n id: string;\n isGroup: boolean;\n name: string;\n type: string;\n typeName: string;\n value: string;\n}\n\nexport interface CodeTypeChild extends CodeTypeGroup {\n groupId: string;\n}\n\nexport type CodeTypeItem = CodeTypeChild | CodeTypeGroup;\nexport type CodeList = CodeTypeItem[];\nexport type CodeValue = Record<string, any>;\nexport type CodeMaps = { [name: string]: CodeList };\n\nclass CodeListStore {\n codeLists: CodeList = [];\n codeMaps: CodeMaps = {};\n async findAllCodeList() {\n const res = await findAllCodeListApi();\n const data = res || [];\n const dataMap = groupBy(data, 'type');\n this.codeLists = data;\n this.codeMaps = dataMap;\n }\n getCodeLocaleList = (codeType: string) => {\n return [...this.codeMaps?.[codeType]] || [];\n };\n getCodeLocaleName = (codeType: string, value: string) => {\n const codeList = this.getCodeLocaleList(codeType);\n function getName(value: string): string {\n const code = find(codeList, (item: any) => item.value === String(value));\n return code?.name || '';\n }\n if (Array.isArray(value)) {\n const text = reduce(\n value,\n (res = '', value = '') => res + ',' + getName(value),\n '',\n );\n return text.slice(1, text.length);\n } else if (String(value).indexOf(',') >= 0) {\n const str = value.replace('[', '').replace(']', '');\n const valueArr = str.split(',');\n const text = reduce(\n valueArr,\n (res = '', value = '') => res + ',' + getName(value),\n '',\n );\n return text.slice(1, text.length);\n } else {\n return getName(value);\n }\n };\n}\n\nconst codeListStoreInstance = new CodeListStore();\nexport const getCodeLocaleList = codeListStoreInstance.getCodeLocaleList;\nexport const getCodeLocaleName = codeListStoreInstance.getCodeLocaleName;\nexport default codeListStoreInstance;\n","import request from '@core/request';\n\nexport function findAllCodeListApi() {\n return request('/codeList/findAll', {\n data: {},\n serviceId: 'fwPlatform',\n });\n}\n","import { findSystemParameterApi } from './services';\nimport { keyBy, pick } from 'lodash-es';\n\nexport interface ParameterItem {\n catalog: string;\n description: string;\n id: string;\n name: string;\n optCounter: number;\n type: string;\n value: string;\n}\n\nexport type ParameterList = ParameterItem[];\nexport type ParameterMaps = { [name: string]: ParameterItem };\n\nclass ParameterStoreClass {\n parameterList: ParameterList = [];\n parameterMap: ParameterMaps = {};\n findAllParameters= async()=>{\n const res = await findSystemParameterApi();\n const data = res || [];\n const dataMap: any = keyBy(data, 'name');\n this.parameterList = data;\n this.parameterMap = dataMap;\n }\n /**\n * 获取系统参数,可以一次指定获取多个参数(传入数组)\n * @param name {string | string[]} 需要获取到的参数的key\n * @returns 返回根据key查询到一个参数对象\n */\n getSystemParameterByName =(name: string | string[])=> {\n if (typeof name === 'string') return this.parameterMap[name];\n return pick(this.parameterMap, name);\n }\n}\n\nconst parameterStoreInstance = new ParameterStoreClass();\n\nexport default parameterStoreInstance;\n","import request from '@core/request';\n//获取系统参数\nexport function findSystemParameterApi() {\n return request(\n '/parameter/findAll',\n {\n serviceId: 'fwPlatform',\n data: {},\n },\n {\n showError: false,\n },\n );\n}\n","import { uniqueId, get, omit } from \"lodash-es\";\nimport emitter from \"@core/event\";\n//计算最终的WebSocketUrl\nconst pingMsg = \"ping\"; //客户端心跳信息\nconst pongMsg = \"pong\"; //服务端心跳信息\nconst reconnectTimeout = 10000;\nconst pingPongTimeout = 10000; //发送的心跳的间隔时间\nexport interface WEBSOCKETRECROD {\n id: string;\n recipientType: string;\n recipientCode: string;\n title?: string;\n status?: \"01\" | \"00\";\n senderName?: string;\n senderTime?: string;\n content: string;\n linkUri?: string;\n linkName?: string;\n progress?: number;\n}\nexport const WS_CONTENT_SUCCESS = \"WS_CONTENT_SUCCESS\";\nexport const WS_CONTENT_ERROR = \"WS_CONTENT_ERROR\";\nexport const WS_CONTENT_CLOSE = \"WS_CONTENT_CLOSE\";\nconst getWebSocketUrl = (userLoginName: string) => {\n const suffix = \"notification-ws\";\n const paramStr = `userLoginName=${userLoginName}`;\n const { host, protocol, port, hostname } = window.location;\n //是否是https\n const isHttps = protocol.includes(\"https\");\n //ws协议\n let wsProtocol = isHttps ? \"wss\" : \"ws\";\n //默认是host\n let wsHost: string = host;\n //如果不是是https并且有端口号时,ws端口就是web端口+1\n if (!isHttps && port) {\n let newhost = parseInt(port);\n wsHost = `${hostname}:${newhost}`;\n }\n const wsAddress = `${wsProtocol}://${wsHost}/${suffix}?${paramStr}`;\n return wsAddress;\n};\n\ntype GantWebSocketOptions = {\n disReconnect?: boolean;\n repeatLimit?: null | undefined | number;\n};\nexport class GantWebSocket {\n RECIPIENT_TYPE_ALL = \"all\"; // 所有用户均可收到的消息类型【公告等消息】\n RECIPIENT_TYPE_USER = \"user\"; // 某个用户可以收到【用户通知】\n RECIPIENT_TYPE_OBSERVER = \"obsvr\"; // 某个观察者可以收到【接口处理进度】\n RECIPIENT_TYPE_CONNECTION = \"conn\"; // 某个连接成功接收到【ws连接专用】\n //链接地址\n private webSocketUrl: string = \"\";\n // WebSocket\n private ws: WebSocket | null = null;\n //重链次数\n private repeat = 0;\n // 链接状态\n private connectLoading = false;\n\n //禁止重链\n private disReconnect = false;\n\n private pingTimeoutFn: null | NodeJS.Timeout = null;\n private pongTimeoutFn: null | NodeJS.Timeout = null;\n private reconnectFn: null | NodeJS.Timeout = null;\n\n //是否限制次数\n private repeatLimit: null | undefined | number = 2;\n\n //链接标识\n connectionId: string = \"\";\n private userLoginName: string = \"\";\n\n private eventStack: {\n [name: string]: {\n type: \"recipientType\" | \"message\";\n recipientType: string[];\n event: (data: WEBSOCKETRECROD) => void;\n };\n } = {};\n constructor() {}\n\n init = (userLoginName: string, options?: GantWebSocketOptions) => {\n this.userLoginName = userLoginName;\n this.webSocketUrl = getWebSocketUrl(userLoginName);\n this.disReconnect = get(options, \"disReconnect\", false);\n this.repeatLimit = get(options, \"repeatLimit\", 20);\n this.createWebSocket();\n };\n createWebSocket = () => {\n this.connectLoading = true;\n try {\n this.ws = new WebSocket(this.webSocketUrl);\n this.registerEvent();\n } catch (error) {\n this.ws = null;\n this.reconnect();\n } finally {\n this.connectLoading = false;\n }\n };\n //重新链接\n reconnect = () => {\n if (this.reconnectFn) clearTimeout(this.reconnectFn);\n if (!!this.repeatLimit && this.repeatLimit <= this.repeat) return;\n if (this.connectLoading || this.disReconnect || this.ws) return;\n this.repeat++;\n this.reconnectFn = setTimeout(() => {\n this.createWebSocket();\n }, reconnectTimeout);\n };\n //链接状态检查\n heartCheck = () => {\n this.repeat = 0;\n if (this.disReconnect) return;\n this.pingTimeoutFn = setTimeout(() => {\n const msg = `{\"userLoginName\":\"${this.userLoginName}\",\"connectionId\":\"${this.connectionId}\",\"content\":\"${pingMsg}\"}`;\n this.ws?.send(msg);\n this.pongTimeoutFn = setTimeout(() => {\n this.ws?.close();\n }, pingPongTimeout);\n }, pingPongTimeout);\n };\n\n heartReset = () => {\n if (this.pingTimeoutFn) {\n clearTimeout(this.pingTimeoutFn);\n this.pingTimeoutFn = null;\n }\n if (this.pongTimeoutFn) {\n clearTimeout(this.pongTimeoutFn);\n this.pongTimeoutFn = null;\n }\n };\n\n //主动断开连接\n disconnect = () => {\n this.heartReset();\n this.ws?.readyState == 1 && this.ws?.close();\n this.ws = null;\n };\n\n //注册事件\n registerEvent = () => {\n if (!this.ws) return;\n this.ws.onopen = () => {\n this.heartCheck();\n };\n this.ws.onmessage = (e) => {\n this.heartReset();\n this.heartCheck();\n const dataStr = e.data;\n try {\n //忽略心跳回复信息\n if (\n dataStr == pongMsg ||\n JSON.parse(dataStr).content == pingMsg ||\n JSON.parse(dataStr).content == pongMsg\n )\n return;\n const wsdata: WEBSOCKETRECROD = JSON.parse(dataStr);\n const data = {\n ...wsdata,\n senderTime: wsdata.senderTime,\n };\n emitter.emit(WS_CONTENT_SUCCESS, data);\n Object.keys(this.eventStack).map((eventId) => {\n const itemEevent = this.eventStack[eventId];\n const isIncludes = itemEevent.recipientType?.includes(\n data.recipientType\n );\n if (isIncludes) itemEevent?.event?.(data);\n });\n //存储服务端连接成功后的第一次响应返回的标识id\n if (data.recipientType == this.RECIPIENT_TYPE_CONNECTION) {\n this.connectionId = data.recipientCode;\n return;\n }\n } catch (err) {\n console.warn(\"received error!!!\", err);\n }\n };\n this.ws.onerror = () => {\n this.heartReset();\n this.reconnect();\n emitter.emit(WS_CONTENT_ERROR);\n };\n this.ws.onclose = () => {\n console.warn(\"webSocket close\");\n this.ws = null;\n this.heartReset();\n this.reconnect();\n emitter.emit(WS_CONTENT_CLOSE);\n };\n };\n\n addTypeListener = (\n type: string | string[],\n event: (data: WEBSOCKETRECROD) => void\n ) => {\n const eventType = Array.isArray(type) ? type : [type];\n const id = uniqueId();\n this.eventStack[id] = {\n recipientType: eventType,\n type: \"recipientType\",\n event,\n };\n return id;\n };\n removeListener = (id: string | string[]) => {\n this.eventStack = omit(this.eventStack, id);\n };\n}\nconst websocket = new GantWebSocket();\nexport default websocket;\n","import websocket, { WEBSOCKETRECROD } from './websocket';\nimport request from '@core/request';\nimport { uniqueId, omit, isEmpty } from 'lodash-es';\nimport emitter from '@core/event';\nconst { RECIPIENT_TYPE_OBSERVER } = websocket;\nexport interface ProgressOptions {\n type?: string;\n options?: any;\n data?: WEBSOCKETRECROD;\n}\nexport const PROGRESS_UPDEDATE = 'PROGRESS_UPDEDATE';\nexport class GantProgress {\n websocketId: string;\n private progressObserver: { [id: string]: ProgressOptions } = {};\n constructor() {\n this.websocketId = websocket.addTypeListener(\n RECIPIENT_TYPE_OBSERVER,\n this.progressEvent,\n );\n }\n progressEvent(data: WEBSOCKETRECROD) {\n Object.keys(this.progressObserver).map((id) => {\n const itemObserver = this.progressObserver[id];\n if (data?.recipientCode === itemObserver.type) {\n this.progressObserver[id] = {\n ...itemObserver,\n data: data,\n };\n }\n });\n this.updedataProgress();\n }\n\n updedataProgress() {\n const newProgress: ProgressOptions[] = [];\n Object.keys(this.progressObserver).map((id) => {\n const itemObserver = this.progressObserver[id];\n if (!isEmpty(itemObserver?.data)) newProgress.push(itemObserver);\n });\n emitter.emit(PROGRESS_UPDEDATE, newProgress);\n }\n\n addProgressListener(type: string, options?: any) {\n const id = uniqueId();\n this.progressObserver[id] = {\n type: type,\n options,\n };\n return id;\n }\n removeProgressListener(id: string) {\n this.progressObserver = omit(this.progressObserver, id);\n this.updedataProgress();\n }\n async requestProgress(\n url: string,\n options?: {\n params?: any;\n success?: (params: any) => void;\n error?: (error: any) => void;\n headers?: any;\n getParams?: boolean;\n },\n ) {\n if (!websocket.connectionId && !options?.headers?.connectionId)\n return console.error(`WebSocket no link established`);\n const observerId = new Date().getDate() + '';\n const progressId = this.addProgressListener(observerId);\n try {\n const response = await request.post(\n url,\n {\n headers: {\n observerId,\n connectionId: websocket.connectionId,\n ...options?.headers,\n },\n data: options?.params,\n },\n {\n getParams: options?.getParams,\n },\n );\n options?.success?.(response);\n } catch (error) {\n console.error('--->', error);\n options?.error?.(error);\n }\n this.removeProgressListener(progressId);\n }\n}\n\nconst Progress = new GantProgress();\nexport default Progress;\n","// 默认缓存期限为7天\nconst DEFAULT_CACHE_TIME = 60 * 60 * 24 * 7;\n\n/**\n * 创建本地缓存对象\n * @param {string=} prefixKey -\n * @param {Object} [storage=localStorage] - sessionStorage | localStorage\n */\nexport const createStorage = ({\n prefixKey = '',\n storage = localStorage,\n} = {}) => {\n /**\n * 本地缓存类\n * @class Storage\n */\n const StorageClass = class {\n storage = storage;\n prefixKey?: string = prefixKey;\n\n getKey(key: string) {\n return `${this.prefixKey}${key}`.toUpperCase();\n }\n\n /**\n * @description 设置缓存\n * @param {string} key 缓存键\n * @param {*} value 缓存值\n * @param expire\n */\n set(key: string, value: any, expire: number | null = DEFAULT_CACHE_TIME) {\n const stringData = JSON.stringify({\n value,\n expire: expire !== null ? new Date().getTime() + expire * 1000 : null,\n });\n this.storage.setItem(this.getKey(key), stringData);\n }\n\n /**\n * 读取缓存\n * @param {string} key 缓存键\n * @param {*=} def 默认值\n */\n get(key: string, def: any = null) {\n const item = this.storage.getItem(this.getKey(key));\n if (item) {\n try {\n const data = JSON.parse(item);\n const { value, expire } = data;\n // 在有效期内直接返回\n if (expire === null || expire >= Date.now()) {\n return value;\n }\n this.remove(key);\n } catch (e) {\n console.error(e);\n return def;\n }\n }\n return def;\n }\n\n /**\n * 从缓存删除某项\n * @param {string} key\n */\n remove(key: string) {\n this.storage.removeItem(this.getKey(key));\n }\n\n /**\n * 清空所有缓存\n * @memberOf Cache\n */\n clear(): void {\n this.storage.clear();\n }\n\n /**\n * 设置cookie\n * @param {string} name cookie 名称\n * @param {*} value cookie 值\n * @param {number=} expire 过期时间\n * 如果过期时间未设置,默认关闭浏览器自动删除\n * @example\n */\n setCookie(\n name: string,\n value: any,\n expire: number | null = DEFAULT_CACHE_TIME,\n ) {\n document.cookie = `${this.getKey(name)}=${value}; Max-Age=${expire}`;\n }\n\n /**\n * 根据名字获取cookie值\n * @param name\n */\n getCookie(name: string): string {\n const cookieArr = document.cookie.split('; ');\n for (let i = 0, length = cookieArr.length; i < length; i++) {\n const kv = cookieArr[i].split('=');\n if (kv[0] === this.getKey(name)) {\n return kv[1];\n }\n }\n return '';\n }\n\n /**\n * 根据名字删除指定的cookie\n * @param {string} key\n */\n removeCookie(key: string) {\n this.setCookie(key, 1, -1);\n }\n\n /**\n * 清空cookie,使所有cookie失效\n */\n clearCookie(): void {\n const keys = document.cookie.match(/[^ =;]+(?==)/g);\n if (keys) {\n for (let i = keys.length; i--; ) {\n document.cookie = keys[i] + '=0;expire=' + new Date(0).toUTCString();\n }\n }\n }\n };\n return new StorageClass();\n};\n\nexport const storage = createStorage();\n","import { findIndex, get, isEmpty, isPlainObject, omit } from \"lodash-es\";\nimport { storage } from \"../storage\";\nimport { UserIdentityType, User } from \"../type\";\nimport {\n getUserDataApi,\n setUserDataApi,\n delUserDataApi,\n getUserByIdApi,\n getUserByUserLoginNameApi,\n} from \"./services\";\n\nexport default class UserStore {\n userIdentity = {} as UserIdentityType; //用户身份信息\n currentUser = {} as User; //当前用户信息\n isSuperAdmin = false;\n roles: string[] = []; //用户所属角色\n functions: string[] = []; //用户授权功能点\n delegations: any[] = []; //用户代理信息\n userSetting: { [type: string]: any } = {};\n users: User[] = [];\n getUserIdentity(): UserIdentityType {\n if (!isEmpty(this.userIdentity)) return this.userIdentity;\n const localUserIdentity = storage?.get(\"userIdentity\");\n return localUserIdentity ? localUserIdentity : ({} as UserIdentityType);\n }\n setUserIdentity(identity: Partial<UserIdentityType>) {\n this.userIdentity = {\n ...this.userIdentity,\n ...identity,\n };\n storage.set(\"userIdentity\", this.userIdentity);\n return this.userIdentity;\n }\n clearUserIdentity() {\n storage.remove(\"userIdentity\");\n this.userIdentity = {} as UserIdentityType;\n }\n setUserAggregateInfo = ({\n delegations,\n roles,\n functions,\n isSuperAdmin,\n currentUser,\n }: any) => {\n this.delegations = delegations;\n this.roles = roles;\n this.functions = functions;\n this.isSuperAdmin = isSuperAdmin;\n this.currentUser = currentUser;\n };\n getUserSettingType = (dataType: string) => {\n const userId = this.currentUser.id;\n return `${userId}-${dataType}`;\n };\n getUserSetting = async (dataType: string) => {\n const key = this.getUserSettingType(dataType);\n const userId = this.currentUser.id;\n if (!!this.userSetting[key]) {\n return this.userSetting[key];\n }\n const res = await getUserDataApi({ dataType, dataId: userId+dataType });\n const bigData = res?.bigData ? JSON.parse(res.bigData) : undefined;\n this.userSetting[key] = bigData;\n return bigData;\n };\n updateUserSetting = async (dataType: string, data: any) => {\n const key = this.getUserSettingType(dataType);\n const userId = this.currentUser.id;\n await setUserDataApi({\n dataType,\n dataId: userId+dataType,\n bigData: JSON.stringify(data),\n });\n this.userSetting[key] = data;\n return data;\n };\n removeUserSetting = async (dataType: string) => {\n const key = this.getUserSettingType(dataType);\n const userId = this.currentUser.id;\n await delUserDataApi({ dataType, dataId: userId });\n delete this.userSetting[key];\n };\n getUserInfo = async (userId: string, userLoginName?: boolean) => {\n const index = findIndex(this.users, (itemUser) =>\n userLoginName ? itemUser.userLoginName === userId : itemUser.id === userId\n );\n if (index > -1) return get(this.users, `[${index}]`);\n const userInfo = userLoginName\n ? await getUserByUserLoginNameApi(userId)\n : await getUserByIdApi(userId);\n isPlainObject(userInfo) && this.users.push(userInfo);\n return userInfo;\n };\n}\n","import request, { GantServerOptions } from \"@core/request\";\n//公司定制化数据接口\nexport async function setUserDataApi(params: any, options?: GantServerOptions) {\n return request(\n \"/accountUserSelf/setUserData\",\n {\n data: params,\n serviceId: \"fwSecurity\",\n },\n options\n );\n}\n\n//获取公司定制化信息\nexport async function getUserDataApi(params: any) {\n return request(\"/accountUserSelf/getUserData\", {\n data: params,\n serviceId: \"fwSecurity\",\n });\n}\n//删除公司定制化信息\nexport async function delUserDataApi(params: any, options?: GantServerOptions) {\n return request(\n \"/accountUserSelf/delUserData\",\n {\n data: params,\n serviceId: \"fwSecurity\",\n },\n options\n );\n}\n\nexport async function getUserByIdApi(userId: string) {\n return request(\"/security/getUserById\", {\n method: \"POST\",\n data: { id: userId },\n serviceId: \"fwSecurity\",\n });\n}\n\nexport async function getUserByUserLoginNameApi(userLoginName: string) {\n return request(\"/security/getUserByUserLoginName\", {\n method: \"POST\",\n data: { userLoginName: userLoginName },\n serviceId: \"fwSecurity\",\n });\n}\n","import {\n isEmpty,\n groupBy,\n omit,\n cloneDeep,\n mapValues,\n uniqBy,\n remove,\n includes,\n} from 'lodash-es';\nimport { ServerMenuData, ServerMenuMap, ServerMenu } from '../type';\nimport emitter from '@core/event';\nimport { storage } from '../storage';\nexport const httpsRegexp =\n /^https?:\\/\\/(([a-zA-Z0-9_-])+(\\.)?)*(:\\d+)?(\\/((\\.)?(\\?)?=?&?[a-zA-Z0-9_-](\\?)?)*)*$/i;\nexport const httpRegexp =\n /^https?:\\/\\/(([a-zA-Z0-9_-])+(\\.)?)*(:\\d+)?(\\/((\\.)?(\\?)?=?&?[a-zA-Z0-9_-](\\?)?)*)*$/i;\n\nconst getItemPath = (path: string) => {\n if (httpsRegexp.test(path) || httpRegexp.test(path)) return path;\n return path?.indexOf('/') === 0 ? path : '/' + path;\n};\n\nexport const MENU_HISTORY_UPDATE = 'MENU_HISTORY_UPDATE';\nexport const MENU_BREADCRUMBS_UPDATE = 'MENU_BREADCRUMBS_UPDATE';\n\nexport default class MenuStore {\n menuDataMaps: ServerMenuMap = {};\n menuData: ServerMenuData = [];\n menuPathMaps: { [name: string]: string } = {};\n breadcrumbs: any[] = [];\n menuHistorys = [] as { pathname: string; name: string }[];\n userId?: string;\n constructor() {}\n addListenerMenuHistorys = (listener: (...args: any[]) => void) => {\n emitter.on(MENU_HISTORY_UPDATE, listener);\n };\n\n removeListenerMenuHistorys = (listener: (...args: any[]) => void) => {\n return emitter.off(MENU_HISTORY_UPDATE, listener);\n };\n addListenerBreadcrumbs = (listener: (...args: any[]) => void) => {\n return emitter.on(MENU_BREADCRUMBS_UPDATE, listener);\n };\n removeListenerBreadcrumbs = (listener: (...args: any[]) => void) => {\n return emitter.off(MENU_BREADCRUMBS_UPDATE, listener);\n };\n getTreeMenuData = (\n data: ServerMenuData,\n childrenGroup: {\n [name: string]: ServerMenuData;\n },\n parentPath?: string,\n ) => {\n return data\n .map((item) => {\n const { id, path, leaf } = item;\n const childrenData = childrenGroup[id];\n const newItem: ServerMenu = {\n ...item,\n key: id,\n path: parentPath ? parentPath + getItemPath(path) : getItemPath(path),\n };\n if (!!childrenData && !leaf) {\n const children = this.getTreeMenuData(\n childrenData,\n childrenGroup,\n newItem.path,\n );\n newItem.children = children;\n }\n this.menuDataMaps[newItem.path] = newItem;\n return newItem;\n })\n .sort((a, b) => a.seqNum - b.seqNum);\n };\n init = (menuData: ServerMenuData, userId: string) => {\n const cloneMenuData = cloneDeep(menuData);\n if (isEmpty(cloneMenuData)) return;\n const groupObj = groupBy(cloneMenuData, 'parentResourceId');\n const { ROOT, ...childrenGroup } = groupObj;\n this.menuData = this.getTreeMenuData(ROOT, childrenGroup);\n this.menuData = [...this.menuData];\n const menuPathMaps = mapValues(this.menuDataMaps, 'name');\n this.updateMenuMaps(menuPathMaps);\n this.initMenuHistorys(userId);\n return;\n };\n updateMenuMaps = (menuPathMaps: any) => {\n this.menuPathMaps = { ...this.menuPathMaps, ...menuPathMaps };\n const historys = this.menuHistorys;\n const newHistorys = historys.map((item) => {\n const itemName = this.menuPathMaps[item.pathname];\n return {\n pathname: item.pathname,\n name: itemName ? itemName : item.name,\n };\n });\n const newBreadcrumbs = this.breadcrumbs.map((item) => {\n const itemName = this.menuPathMaps[item.pathname];\n return {\n ...item,\n name: itemName ? itemName : item.name,\n };\n });\n this.updatehistorys(newHistorys);\n this.updateBreadcrumbs(newBreadcrumbs);\n };\n\n liseterHistorys = (pathname: string) => {\n let historys = this.menuHistorys;\n if (\n !this.menuDataMaps[pathname]?.leaf ||\n historys.some((item) => item.pathname === pathname)\n )\n return;\n historys = [{ pathname, name: this.menuPathMaps[pathname] }, ...historys];\n this.updatehistorys(historys);\n };\n\n updatehistorys = (historys: { pathname: string; name: string }[]) => {\n if (!this.userId) return;\n const newHistorys = historys.map((item) => {\n return {\n ...item,\n name: item.name ? item.name : this.menuPathMaps[item.pathname],\n };\n });\n this.menuHistorys = newHistorys;\n this.menuHistorys = uniqBy(this.menuHistorys, 'pathname');\n emitter.emit(MENU_HISTORY_UPDATE, this.menuHistorys);\n storage.set(`${this.userId}-menu-history`, this.menuHistorys);\n };\n initMenuHistorys = (userId: string) => {\n this.userId = userId;\n const historys = storage.get(`${userId}-menu-history`, this.menuHistorys);\n this.updatehistorys(historys);\n };\n liseterBreadcrumbs = (pathname: string) => {\n const array = pathname.split('/');\n let index = 1;\n const breadcrumbs: any[] = [];\n const current = { pathname, name: this.menuPathMaps[pathname] };\n while (index < array.length) {\n const itemPathname = array.slice(0, index).join('/');\n if (!!this.menuPathMaps[itemPathname])\n breadcrumbs.push({\n name: this.menuPathMaps[itemPathname],\n pathname: itemPathname,\n });\n index++;\n }\n breadcrumbs.push(current);\n this.updateBreadcrumbs(breadcrumbs);\n };\n updateBreadcrumbs = (breadcrumbs: any[]) => {\n this.breadcrumbs = breadcrumbs;\n this.breadcrumbs = uniqBy(this.breadcrumbs, 'pathname');\n emitter.emit(MENU_BREADCRUMBS_UPDATE, breadcrumbs);\n };\n}\n","import { LoginResultData } from \"../type\";\nimport {\n accountLoginApi,\n accountLogoutApi,\n BaseLoginParams,\n getLoginMethodApi,\n checkPasswordApi,\n extractTokenApi,\n refactorTokenApi,\n checkTokenApi,\n} from \"./services\";\nexport type LoginErrorType =\n | \"passwordError\"\n | \"validateError\"\n | \"passwordExpiration\"\n | \"SLIDER_VERIFICATION_LOGIN\";\n\nexport default class BaseLogin {\n loginPathname?: string;\n BASE: string = \"/\";\n get baseLoginPathname() {\n return `${this.BASE}${this.loginPathname?.replace(\"/\", \"\")}`;\n }\n tokenValue: string = \"\";\n\n get isLoginPathname() {\n const pathname = window.location.pathname;\n return this.baseLoginPathname == pathname;\n }\n\n getRealPath = (pathname: string) => {\n return `${this.BASE}${pathname.replace(\"/\", \"\")}`;\n };\n\n chekToken = async () => {\n const res = await checkTokenApi();\n if (!!res && this.isLoginPathname) window.location.replace(this.BASE);\n return res;\n };\n\n getLoginMethod = async () => {\n return getLoginMethodApi();\n };\n\n redirectBaseLogin = async () => {\n const pathname = window.location.pathname;\n const url = window.location.href;\n if (this.isLoginPathname) return true;\n const urlParams = new URLSearchParams();\n if (pathname !== this.BASE && pathname !== \"/\")\n urlParams.append(\"redirectUrl\", url);\n const searchString = decodeURIComponent(urlParams.toString());\n window.location.replace(\n `${this.baseLoginPathname}${\n !!searchString ? \"?\" + decodeURIComponent(urlParams.toString()) : \"\"\n }`\n );\n return false;\n };\n\n checkPassword = async () => {\n const res = await checkPasswordApi();\n if (res === \"noPass\") {\n // 临时清除token,待修改完密码后恢复\n this.tokenValue = await extractTokenApi();\n return false;\n }\n return true;\n };\n\n refactorToken = async () => {\n await refactorTokenApi(this.tokenValue);\n };\n\n login = async (params: BaseLoginParams) => {\n const res = await this.baseLogin(params);\n if (res.error) return res;\n return res;\n };\n\n private baseLogin = async (params: BaseLoginParams) => {\n const result: {\n error?: LoginErrorType;\n data?: LoginResultData;\n } = {\n error: undefined,\n data: undefined,\n };\n try {\n //其他登录方式未补充完\n const res = await accountLoginApi(params);\n const { userToken, traceId } = res;\n if (userToken) {\n result.data = res;\n const checked = await this.checkPassword();\n if (!checked) result.error = \"passwordExpiration\";\n return result;\n }\n //traceId 需要第三方验证 //验证码之后的由业务自行判断\n if (traceId) {\n result.data = res;\n result.error = \"SLIDER_VERIFICATION_LOGIN\";\n return result;\n }\n result.error = \"passwordError\";\n return result;\n } catch (err) {\n result.error = \"validateError\";\n return result;\n }\n };\n\n loginSuccess = () => {\n const params = new URLSearchParams(window.location.search);\n let url = params.get(\"redirectUrl\");\n if (url) window.location.href = url;\n else window.location.replace(this.BASE);\n };\n baseLoginOut = async () => {\n const params = new URLSearchParams();\n const url = window.location.href;\n if (window.location.pathname !== this.BASE)\n params.append(\"redirectUrl\", url);\n await accountLogoutApi();\n window.location.replace(`${this.baseLoginPathname}?${params.toString()}`);\n };\n}\n","import request from '@core/request';\nimport { AccountLoginParams } from './types';\n//获取登录方式\n// 获取登录方式\nexport function getLoginMethodApi() {\n return request('/authentication/getLoginMethod', {\n serviceId: 'fwSecurity',\n });\n}\n\n// 检查登录状态\nexport function checkTokenApi() {\n return request(\n '/authentication/checkToken',\n {\n serviceId: 'fwSecurity',\n },\n { showError: false },\n );\n}\n\nexport function accountLoginApi(params: AccountLoginParams) {\n return request('/authentication/login', {\n data: params,\n serviceId: 'fwSecurity',\n });\n}\n\n// 登出\nexport function accountLogoutApi() {\n return request('/authentication/logout', {\n data: {},\n serviceId: 'fwSecurity',\n });\n}\n\n// 进入代理\nexport function delegateLoginApi(params: any) {\n return request('/delegateAuth/delegateLogin', {\n data: params,\n serviceId: 'fwSecurity',\n });\n}\n\n// 退出代理\nexport function delegateLogoutApi(params: any) {\n return request('/delegateAuth/delegateLogout', {\n data: params,\n serviceId: 'fwSecurity',\n });\n}\n","import request from '@core/request';\nimport { BeforeLoginCheckCodeParams } from './types';\n\n// 登录之后校验二次验证码\nexport function beforeLoginCheckCodeApi(payload: BeforeLoginCheckCodeParams) {\n return request('/authentication/beforeLoginCheckCode', {\n method: 'POST',\n data: {\n ...payload,\n },\n serviceId: 'fwSecurity',\n });\n}\n// 检测登录密码是否需要重置\nexport function checkPasswordApi() {\n return request(\n '/security/checkPasswordUpdateTime',\n { data: {} },\n { showError: false },\n );\n}\n\n// 提取token\nexport function extractTokenApi() {\n return request('/authentication/extractToken', { data: {} });\n}\n\n// 恢复token\nexport function refactorTokenApi(tokenValue: string) {\n return request('/authentication/refactorToken', {\n data: { value: tokenValue },\n });\n}\n","import { SSOConfigType } from \"../type\";\nimport { checkAuthConfigApi } from \"./services\";\n\nconst defaultSsoConfig = {\n sso: false,\n ssoUrlSearchParams: [\"ticket\"],\n ssoCheckTokenUrl: \"\",\n ssoSuccessUrlkey: \"successUrl\",\n ssoLoginUrl: window.location.origin + \"/fwSecurity/ssoAuth/login.api\",\n ssologinOutUrl: window.location.origin + \"fwSecurity/ssoAuth/logout.api\",\n};\n\nexport default class SSOLogin {\n init(ssoConfig?: SSOConfigType) {\n this.ssoConfig = { ...this.ssoConfig, ...ssoConfig };\n }\n private ssoConfig: Required<SSOConfigType> = defaultSsoConfig;\n\n isSso = async (ssoCallback?: () => boolean) => {\n if (!this.ssoConfig.sso) return false;\n let sso = false;\n try {\n sso = await checkAuthConfigApi();\n } catch (error) {\n console.error(\"sso\", error);\n }\n if (ssoCallback) {\n sso = await ssoCallback();\n }\n return !!sso;\n };\n\n ssoLogin = () => {\n //在检测cookie中是否包含userIdentity信息\n const { ssoSuccessUrlkey, ssoUrlSearchParams, ssoLoginUrl } =\n this.ssoConfig;\n const params = new URLSearchParams(window.location.search.slice(1));\n const ssoParams = new URLSearchParams();\n const url = window.location.href;\n ssoParams.append(ssoSuccessUrlkey, encodeURIComponent(url));\n ssoUrlSearchParams.map((key) => {\n const value = params.get(key);\n if (value) ssoParams.append(key, value);\n });\n //待补充sso检测\n window.location.href = `${ssoLoginUrl}?${ssoParams.toString()}`;\n\n return false;\n };\n\n ssoLoginOut = () => {\n window.location.href = this.ssoConfig.ssologinOutUrl;\n };\n}\n","import request from '@core/request';\n// 检测三方是否配置sso登录\nexport function checkAuthConfigApi() {\n return request('/ssoAuthConfig/checkOnlyRedirect', {}, { showError: false });\n}\n// 验证ssoToken并转换为甘棠Token, 写入到Cookie中\nexport function ssoLoginApi(params: any) {\n const { ssoTokenType, ssoToken } = params;\n return request(\n `/authentication/ssoLogin?tokenType=${ssoTokenType}&token=${ssoToken}`,\n {\n serviceId: 'fwSecurity',\n },\n );\n}\n","import {\n getValidateCodeApi,\n sliderVerificationCodeApi,\n checkCaptchaApi,\n GetValidateCodeParams,\n CaptchaCheckParams,\n} from './services';\nexport default class ValidateLogin {\n getValidateCodeImage = (params: GetValidateCodeParams) => {\n return getValidateCodeApi(params);\n };\n sliderVerificationCodeImage = () => {\n return sliderVerificationCodeApi();\n };\n checkCaptcha = (params: CaptchaCheckParams) => {\n return checkCaptchaApi(params);\n };\n}\n","import request from '@core/request';\nimport { CaptchaCheckParams } from './types';\n\n//获取验证码\nexport function getValidateCodeApi(params = {}) {\n return request('/authentication/getValidateCode', {\n data: params,\n serviceId: 'fwSecurity',\n });\n}\n\n//获取滑块验证码\nexport function sliderVerificationCodeApi() {\n return request('/authentication/sliderVerificationCode', {\n method: 'POST',\n serviceId: 'fwSecurity',\n });\n}\n\n//校验滑块验证码\nexport function checkCaptchaApi(payload: CaptchaCheckParams) {\n return request('/authentication/checkCaptcha', {\n method: 'POST',\n data: {\n ...payload,\n },\n serviceId: 'fwSecurity',\n });\n}\n","import BaseLogin from \"./base\";\nimport SSOLogin from \"./sso\";\nimport ValidateLogin from \"./validate\";\nimport {\n BeforeLoginCheckCodeParams,\n beforeLoginCheckCodeApi,\n} from \"./services\";\nimport type { LOGIN_CONFIG } from \"../../../cli/interfaces\";\nexport default class LoginStore extends BaseLogin {\n ssoLogin: SSOLogin;\n validate: ValidateLogin;\n noCheckPermissionsPath?: string[] = [];\n ssoCallback?: () => boolean;\n constructor() {\n super();\n this.ssoLogin = new SSOLogin();\n this.validate = new ValidateLogin();\n }\n init = (\n loginConfig?: LOGIN_CONFIG,\n base = \"/\",\n ssoCallback?: () => boolean\n ) => {\n this.BASE = base;\n this.ssoCallback = ssoCallback;\n this.noCheckPermissionsPath = loginConfig?.noCheckPermissionsPath;\n this.ssoLogin.init(loginConfig);\n this.loginPathname = loginConfig?.loginPathname || \"/login\";\n };\n isNoLoginRequiredPage = () => {\n const pathname = window.location.pathname;\n const isNoLogin = this.noCheckPermissionsPath?.some((itemPath) => {\n return this.getRealPath(itemPath) == pathname;\n });\n return isNoLogin;\n };\n loginOut = async () => {\n const isSSO = await this.ssoLogin.isSso(this.ssoCallback);\n if (isSSO) this.ssoLogin.ssoLoginOut();\n await this.baseLoginOut();\n };\n loginAuthentication = async (params: BeforeLoginCheckCodeParams) => {\n await beforeLoginCheckCodeApi(params);\n this.loginSuccess();\n return;\n };\n redirectLogin = async () => {\n if (this.isNoLoginRequiredPage()) return true;\n const isSSO = await this.ssoLogin.isSso(this.ssoCallback);\n if (isSSO) {\n this.ssoLogin.ssoLogin();\n return false;\n }\n if (this.isLoginPathname) return true;\n return await this.redirectBaseLogin();\n };\n}\n","import {\n findUserAggregateInfoApi,\n getPlatformAggregateInfoApi,\n} from \"./services\";\nimport CodeListStoreInstance from \"../codelist\";\nimport ParameterStoreInstance from \"../parameter\";\nimport websocket from \"../websocket\";\nimport UserStore from \"../user\";\nimport MenuStore from \"../menu\";\nimport LoginStore from \"../login\";\nimport {\n UserAggregateInfo,\n Language,\n ProductInfo,\n ServerMenuData,\n GlobalOptions,\n} from \"../type\";\nimport { isEmpty } from \"lodash-es\";\nclass GlobalStoreClass {\n //无需登录验证的页面\n userStore: UserStore;\n menuStore: MenuStore;\n loginStore: LoginStore;\n isSuperAdmin: boolean = false;\n loginCallback?: () => void;\n constructor() {\n this.userStore = new UserStore();\n this.menuStore = new MenuStore();\n this.loginStore = new LoginStore();\n }\n platformLanguages: Language[] = [];\n productInfo: ProductInfo = {\n isProdEnv: false,\n productName: \"\",\n };\n get isPrd() {\n return this.productInfo?.isProdEnv;\n }\n get userInfo() {\n return this.userStore.currentUser;\n }\n\n get menuData() {\n return this.menuStore.menuData;\n }\n\n findPlantform = async () => {\n const res = await getPlatformAggregateInfoApi();\n this.platformLanguages = res.platformLanguages;\n this.productInfo = res.productInfo;\n };\n getAggregateInfo = async (\n menus?: ServerMenuData | ((res: UserAggregateInfo) => ServerMenuData)\n ) => {\n const res: UserAggregateInfo = await findUserAggregateInfoApi();\n\n const { user: currentUser, startMenus, isSuperAdmin, ...restInfo } = res;\n\n this.userStore.setUserAggregateInfo({ ...restInfo, currentUser });\n\n this.isSuperAdmin = isSuperAdmin;\n\n const localeMenus = typeof menus == \"function\" ? await menus(res) : menus;\n\n this.menuStore.init(\n isEmpty(localeMenus) ? startMenus : localeMenus,\n currentUser.id\n );\n };\n init = async (options: GlobalOptions) => {\n const { base = \"/\", menuData, loginSuccessCallback, ssoCallback,websocket:_startwebsocket=true } = options;\n this.loginStore.init(options?.loginConfig, base, ssoCallback);\n try {\n //检查token\n const res = await this.loginStore.chekToken();\n if (res) {\n //登录状态下获取聚合信息 保存header\n this.userStore.setUserIdentity(res);\n await this.getAggregateInfo(menuData);\n await CodeListStoreInstance.findAllCodeList();\n await ParameterStoreInstance.findAllParameters();\n //websocket注册\n if(_startwebsocket) websocket.init(this.userStore.currentUser.userLoginName);\n await loginSuccessCallback?.();\n return true;\n }\n //未登录情况下跳转到登录\n return await this.loginStore.redirectLogin();\n } catch (error) {\n console.error(error);\n }\n return false;\n };\n}\n\nconst globalStore = new GlobalStoreClass();\n\nexport default globalStore;\n","import request from '@core/request';\nexport async function findUserAggregateInfoApi() {\n return request('/security/findUserAggregateInfo', {\n method: 'POST',\n });\n}\n\n// 获取平台信息\nexport function getPlatformAggregateInfoApi() {\n return request(\n '/platformManage/getPlatformAggregateInfo',\n {\n method: 'POST',\n },\n { showError: false },\n );\n}\n","const companyVersion = 'company-v1';\nimport {\n getCompanyDataApi,\n setCompanyDataApi,\n delCompanyDataApi,\n} from './services';\nclass CompanyData {\n data: any = {};\n getCompanyDataType = (dataType: string) => {\n return `${companyVersion}-${dataType}`;\n };\n getCompanyData = async (dataType: string) => {\n const key = this.getCompanyDataType(dataType);\n if (!!this.data[key]) {\n return this.data[key];\n }\n const res = await getCompanyDataApi({ dataType, dataId: companyVersion });\n const bigData = res?.bigData ? JSON.parse(res.bigData) : undefined;\n this.data[key] = bigData;\n };\n updateCompanyData = async (dataType: string, data: any) => {\n const key = this.getCompanyDataType(dataType);\n await setCompanyDataApi({\n dataType,\n dataId: companyVersion,\n bigData: JSON.stringify(data),\n });\n this.data[key] = data;\n return data;\n };\n removeCompanyData = async (dataType: string) => {\n const key = this.getCompanyDataType(dataType);\n await delCompanyDataApi({ dataType, dataId: companyVersion });\n delete this.data[key];\n };\n}\n\nexport default new CompanyData();\n","import request from '@core/request';\nexport type CompanyDataParams = {\n dataType: string;\n dataId: string;\n bigData?: string;\n};\n\n//公司定制化数据接口\nexport async function setCompanyDataApi(params: CompanyDataParams) {\n return request('/companyData/setCompanyData', {\n data: params,\n serviceId: 'fwSecurity',\n });\n}\n\n//获取公司定制化信息\nexport async function getCompanyDataApi(params: CompanyDataParams) {\n return request('/companyData/getCompanyData', {\n data: params,\n serviceId: 'fwSecurity',\n });\n}\n\n//删除公司定制化信息\nexport async function delCompanyDataApi(params: CompanyDataParams) {\n return request('/companyData/delCompanyData', {\n data: params,\n serviceId: 'fwSecurity',\n });\n}\n","import CodeListStoreInstance from './codelist';\nimport ParameterStoreInstance from './parameter';\nimport websocket from './websocket';\nimport progress from './progress';\nimport globalStore from './global';\nimport companydataStore from './companydata';\nimport { storage as storageStore } from './storage';\nexport type * from './type';\n\nconst codeListStore = CodeListStoreInstance;\nconst parameterStore = ParameterStoreInstance;\nconst userStore = globalStore.userStore;\nconst loginStore = globalStore.loginStore;\nconst menuStore = globalStore.menuStore;\n\nexport {\n globalStore,\n codeListStore,\n parameterStore,\n websocket,\n progress,\n userStore,\n loginStore,\n menuStore,\n companydataStore,\n storageStore,\n};\nexport { MENU_HISTORY_UPDATE, MENU_BREADCRUMBS_UPDATE } from './menu';\nexport { PROGRESS_UPDEDATE } from './progress';\nexport {\n WS_CONTENT_CLOSE,\n WS_CONTENT_ERROR,\n WS_CONTENT_SUCCESS,\n} from './websocket';\n"],"names":["codeListStoreInstance","codeLists","codeMaps","findAllCodeList","data","request","serviceId","dataMap","groupBy","this","getCodeLocaleList","codeType","getCodeLocaleName","value","codeList","getName","code","find","item","String","name","Array","isArray","text","reduce","res","slice","length","indexOf","valueArr","replace","split","parameterStoreInstance","parameterList","parameterMap","findAllParameters","async","showError","keyBy","getSystemParameterByName","pick","pingMsg","pongMsg","WS_CONTENT_SUCCESS","WS_CONTENT_ERROR","WS_CONTENT_CLOSE","websocket","RECIPIENT_TYPE_ALL","RECIPIENT_TYPE_USER","RECIPIENT_TYPE_OBSERVER","RECIPIENT_TYPE_CONNECTION","webSocketUrl","ws","repeat","connectLoading","disReconnect","pingTimeoutFn","pongTimeoutFn","reconnectFn","repeatLimit","connectionId","userLoginName","eventStack","constructor","init","options","paramStr","host","protocol","port","hostname","window","location","isHttps","includes","wsProtocol","wsHost","parseInt","getWebSocketUrl","get","createWebSocket","WebSocket","registerEvent","error","reconnect","clearTimeout","setTimeout","heartCheck","msg","send","close","heartReset","disconnect","readyState","onopen","onmessage","e","dataStr","JSON","parse","content","wsdata","senderTime","emitter","emit","Object","keys","map","eventId","itemEevent","isIncludes","recipientType","event","recipientCode","err","console","warn","onerror","onclose","addTypeListener","type","eventType","id","uniqueId","removeListener","omit","PROGRESS_UPDEDATE","Progress","websocketId","progressObserver","progressEvent","itemObserver","updedataProgress","newProgress","isEmpty","push","addProgressListener","removeProgressListener","requestProgress","url","headers","observerId","Date","getDate","progressId","response","post","params","getParams","success","storage","prefixKey","localStorage","getKey","key","toUpperCase","set","expire","DEFAULT_CACHE_TIME","stringData","stringify","getTime","setItem","def","getItem","now","remove","removeItem","clear","setCookie","document","cookie","getCookie","cookieArr","i","kv","removeCookie","clearCookie","match","toUTCString","createStorage","UserStore","userIdentity","currentUser","isSuperAdmin","roles","functions","delegations","userSetting","users","getUserIdentity","localUserIdentity","setUserIdentity","identity","clearUserIdentity","setUserAggregateInfo","getUserSettingType","dataType","getUserSetting","userId","getUserDataApi","dataId","bigData","undefined","updateUserSetting","setUserDataApi","removeUserSetting","delUserDataApi","getUserInfo","index","findIndex","itemUser","userInfo","method","getUserByUserLoginNameApi","getUserByIdApi","isPlainObject","httpsRegexp","httpRegexp","getItemPath","path","test","MENU_HISTORY_UPDATE","MENU_BREADCRUMBS_UPDATE","MenuStore","menuDataMaps","menuData","menuPathMaps","breadcrumbs","menuHistorys","addListenerMenuHistorys","listener","on","removeListenerMenuHistorys","off","addListenerBreadcrumbs","removeListenerBreadcrumbs","getTreeMenuData","childrenGroup","parentPath","leaf","childrenData","newItem","children","sort","a","b","seqNum","cloneMenuData","cloneDeep","groupObj","ROOT","mapValues","updateMenuMaps","initMenuHistorys","newHistorys","itemName","pathname","newBreadcrumbs","updatehistorys","updateBreadcrumbs","liseterHistorys","historys","some","uniqBy","liseterBreadcrumbs","array","current","itemPathname","join","BaseLogin","loginPathname","BASE","baseLoginPathname","tokenValue","isLoginPathname","getRealPath","chekToken","getLoginMethod","redirectBaseLogin","href","urlParams","URLSearchParams","append","searchString","decodeURIComponent","toString","checkPassword","refactorToken","login","baseLogin","result","accountLoginApi","userToken","traceId","loginSuccess","search","baseLoginOut","defaultSsoConfig","sso","ssoUrlSearchParams","ssoCheckTokenUrl","ssoSuccessUrlkey","ssoLoginUrl","origin","ssologinOutUrl","SSOLogin","ssoConfig","isSso","ssoCallback","ssoLogin","ssoParams","encodeURIComponent","ssoLoginOut","ValidateLogin","getValidateCodeImage","getValidateCodeApi","sliderVerificationCodeImage","checkCaptcha","payload","LoginStore","validate","noCheckPermissionsPath","super","loginConfig","base","isNoLoginRequiredPage","isNoLogin","itemPath","loginOut","loginAuthentication","redirectLogin","globalStore","userStore","menuStore","loginStore","loginCallback","platformLanguages","productInfo","isProdEnv","productName","isPrd","findPlantform","getAggregateInfo","menus","findUserAggregateInfoApi","user","startMenus","restInfo","localeMenus","loginSuccessCallback","_startwebsocket","CodeListStoreInstance","ParameterStoreInstance","companyVersion","getCompanyDataType","getCompanyData","getCompanyDataApi","updateCompanyData","setCompanyDataApi","removeCompanyData","delCompanyDataApi","codeListStore","parameterStore"],"mappings":"uRA+DA,MAAMA,EAAwB,IAzC9B,MACEC,UAAsB,GACtBC,SAAqB,CAAA,EACrB,qBAAMC,GACJ,MACMC,QCxBDC,EAAQ,oBAAqB,CAClCD,KAAM,CAAE,EACRE,UAAW,gBDsBS,GACdC,EAAUC,EAAQJ,EAAM,QAC9BK,KAAKR,UAAYG,EACjBK,KAAKP,SAAWK,CACjB,CACDG,kBAAqBC,GACZ,IAAIF,KAAKP,WAAWS,KAAc,GAE3CC,kBAAoB,CAACD,EAAkBE,KACrC,MAAMC,EAAWL,KAAKC,kBAAkBC,GACxC,SAASI,EAAQF,GACf,MAAMG,EAAOC,EAAKH,GAAWI,GAAcA,EAAKL,QAAUM,OAAON,KACjE,OAAOG,GAAMI,MAAQ,EACtB,CACD,GAAIC,MAAMC,QAAQT,GAAQ,CACxB,MAAMU,EAAOC,EACXX,GACA,CAACY,EAAM,GAAIZ,EAAQ,KAAOY,EAAM,IAAMV,EAAQF,IAC9C,IAEF,OAAOU,EAAKG,MAAM,EAAGH,EAAKI,OAC3B,CAAM,GAAIR,OAAON,GAAOe,QAAQ,MAAQ,EAAG,CAC1C,MACMC,EADMhB,EAAMiB,QAAQ,IAAK,IAAIA,QAAQ,IAAK,IAC3BC,MAAM,KACrBR,EAAOC,EACXK,GACA,CAACJ,EAAM,GAAIZ,EAAQ,KAAOY,EAAM,IAAMV,EAAQF,IAC9C,IAEF,OAAOU,EAAKG,MAAM,EAAGH,EAAKI,OAC3B,CACC,OAAOZ,EAAQF,EAChB,GAK4Bb,EAAsBU,kBACtBV,EAAsBY,kBE5BvD,MAAMoB,EAAyB,IArB/B,MACEC,cAA+B,GAC/BC,aAA8B,CAAA,EAC7BC,kBAAmBC,UAClB,MACMhC,QClBDC,EACL,qBACA,CACEC,UAAW,aACXF,KAAM,CAAE,GAEV,CACEiC,WAAW,KDWO,GACd9B,EAAe+B,EAAMlC,EAAM,QACjCK,KAAKwB,cAAgB7B,EACrBK,KAAKyB,aAAe3B,CAAO,EAO7BgC,yBAA2BnB,GACL,iBAATA,EAA0BX,KAAKyB,aAAad,GAChDoB,EAAK/B,KAAKyB,aAAcd,IE9B7BqB,EAAU,OACVC,EAAU,OAgBHC,EAAqB,qBACrBC,EAAmB,mBACnBC,EAAmB,mBAgMhC,MAAMC,EAAY,UAvKhBC,mBAAqB,MACrBC,oBAAsB,OACtBC,wBAA0B,QAC1BC,0BAA4B,OAEpBC,aAAuB,GAEvBC,GAAuB,KAEvBC,OAAS,EAETC,gBAAiB,EAGjBC,cAAe,EAEfC,cAAuC,KACvCC,cAAuC,KACvCC,YAAqC,KAGrCC,YAAyC,EAGjDC,aAAuB,GACfC,cAAwB,GAExBC,WAMJ,CAAA,EACJ,WAAAC,GAAgB,CAEhBC,KAAO,CAACH,EAAuBI,KAC7BxD,KAAKoD,cAAgBA,EACrBpD,KAAK0C,aA9De,CAACU,IACvB,MACMK,EAAW,iBAAiBL,KAC5BM,KAAEA,EAAIC,SAAEA,EAAQC,KAAEA,EAAIC,SAAEA,GAAaC,OAAOC,SAE5CC,EAAUL,EAASM,SAAS,SAElC,IAAIC,EAAaF,EAAU,MAAQ,KAE/BG,EAAiBT,GAEhBM,GAAWJ,IAEdO,EAAS,GAAGN,KADEO,SAASR,MAIzB,MADkB,GAAGM,OAAgBC,qBAAoBV,GACzC,EA8CMY,CAAgBjB,GACpCpD,KAAK8C,aAAewB,EAAId,EAAS,gBAAgB,GACjDxD,KAAKkD,YAAcoB,EAAId,EAAS,cAAe,IAC/CxD,KAAKuE,iBAAiB,EAExBA,gBAAkB,KAChBvE,KAAK6C,gBAAiB,EACtB,IACE7C,KAAK2C,GAAK,IAAI6B,UAAUxE,KAAK0C,cAC7B1C,KAAKyE,eACN,CAAC,MAAOC,GACP1E,KAAK2C,GAAK,KACV3C,KAAK2E,WACN,CAAS,QACR3E,KAAK6C,gBAAiB,CACvB,GAGH8B,UAAY,KACN3E,KAAKiD,aAAa2B,aAAa5E,KAAKiD,aAClCjD,KAAKkD,aAAelD,KAAKkD,aAAelD,KAAK4C,QAC/C5C,KAAK6C,gBAAkB7C,KAAK8C,cAAgB9C,KAAK2C,KACrD3C,KAAK4C,SACL5C,KAAKiD,YAAc4B,YAAW,KAC5B7E,KAAKuE,iBAAiB,GAxGH,KAyGD,EAGtBO,WAAa,KACX9E,KAAK4C,OAAS,EACV5C,KAAK8C,eACT9C,KAAK+C,cAAgB8B,YAAW,KAC9B,MAAME,EAAM,qBAAqB/E,KAAKoD,kCAAkCpD,KAAKmD,4BAA4BnB,MACzGhC,KAAK2C,IAAIqC,KAAKD,GACd/E,KAAKgD,cAAgB6B,YAAW,KAC9B7E,KAAK2C,IAAIsC,OAAO,GAlHA,IAmHC,GAnHD,KAoHD,EAGrBC,WAAa,KACPlF,KAAK+C,gBACP6B,aAAa5E,KAAK+C,eAClB/C,KAAK+C,cAAgB,MAEnB/C,KAAKgD,gBACP4B,aAAa5E,KAAKgD,eAClBhD,KAAKgD,cAAgB,KACtB,EAIHmC,WAAa,KACXnF,KAAKkF,aACkB,GAAvBlF,KAAK2C,IAAIyC,YAAmBpF,KAAK2C,IAAIsC,QACrCjF,KAAK2C,GAAK,IAAI,EAIhB8B,cAAgB,KACTzE,KAAK2C,KACV3C,KAAK2C,GAAG0C,OAAS,KACfrF,KAAK8E,YAAY,EAEnB9E,KAAK2C,GAAG2C,UAAaC,IACnBvF,KAAKkF,aACLlF,KAAK8E,aACL,MAAMU,EAAUD,EAAE5F,KAClB,IAEE,GACE6F,GAAWvD,GACXwD,KAAKC,MAAMF,GAASG,SAAW3D,GAC/ByD,KAAKC,MAAMF,GAASG,SAAW1D,EAE/B,OACF,MAAM2D,EAA0BH,KAAKC,MAAMF,GACrC7F,EAAO,IACRiG,EACHC,WAAYD,EAAOC,YAWrB,GATAC,EAAQC,KAAK7D,EAAoBvC,GACjCqG,OAAOC,KAAKjG,KAAKqD,YAAY6C,KAAKC,IAChC,MAAMC,EAAapG,KAAKqD,WAAW8C,GAC7BE,EAAaD,EAAWE,eAAerC,SAC3CtE,EAAK2G,eAEHD,GAAYD,GAAYG,QAAQ5G,EAAK,IAGvCA,EAAK2G,eAAiBtG,KAAKyC,0BAE7B,YADAzC,KAAKmD,aAAexD,EAAK6G,cAG5B,CAAC,MAAOC,GACPC,QAAQC,KAAK,oBAAqBF,EACnC,GAEHzG,KAAK2C,GAAGiE,QAAU,KAChB5G,KAAKkF,aACLlF,KAAK2E,YACLmB,EAAQC,KAAK5D,EAAiB,EAEhCnC,KAAK2C,GAAGkE,QAAU,KAChBH,QAAQC,KAAK,mBACb3G,KAAK2C,GAAK,KACV3C,KAAKkF,aACLlF,KAAK2E,YACLmB,EAAQC,KAAK3D,EAAiB,EAC/B,EAGH0E,gBAAkB,CAChBC,EACAR,KAEA,MAAMS,EAAYpG,MAAMC,QAAQkG,GAAQA,EAAO,CAACA,GAC1CE,EAAKC,IAMX,OALAlH,KAAKqD,WAAW4D,GAAM,CACpBX,cAAeU,EACfD,KAAM,gBACNR,SAEKU,CAAE,EAEXE,eAAkBF,IAChBjH,KAAKqD,WAAa+D,EAAKpH,KAAKqD,WAAY4D,EAAG,IC/MzCzE,wBAAEA,GAA4BH,EAMvBgF,EAAoB,oBAkFjC,MAAMC,EAAW,UAhFfC,YACQC,iBAAsD,CAAA,EAC9D,WAAAlE,GACEtD,KAAKuH,YAAclF,EAAUyE,gBAC3BtE,EACAxC,KAAKyH,cAER,CACD,aAAAA,CAAc9H,GACZqG,OAAOC,KAAKjG,KAAKwH,kBAAkBtB,KAAKe,IACtC,MAAMS,EAAe1H,KAAKwH,iBAAiBP,GACvCtH,GAAM6G,gBAAkBkB,EAAaX,OACvC/G,KAAKwH,iBAAiBP,GAAM,IACvBS,EACH/H,KAAMA,GAET,IAEHK,KAAK2H,kBACN,CAED,gBAAAA,GACE,MAAMC,EAAiC,GACvC5B,OAAOC,KAAKjG,KAAKwH,kBAAkBtB,KAAKe,IACtC,MAAMS,EAAe1H,KAAKwH,iBAAiBP,GACtCY,EAAQH,GAAc/H,OAAOiI,EAAYE,KAAKJ,EAAa,IAElE5B,EAAQC,KAAKsB,EAAmBO,EACjC,CAED,mBAAAG,CAAoBhB,EAAcvD,GAChC,MAAMyD,EAAKC,IAKX,OAJAlH,KAAKwH,iBAAiBP,GAAM,CAC1BF,KAAMA,EACNvD,WAEKyD,CACR,CACD,sBAAAe,CAAuBf,GACrBjH,KAAKwH,iBAAmBJ,EAAKpH,KAAKwH,iBAAkBP,GACpDjH,KAAK2H,kBACN,CACD,qBAAMM,CACJC,EACA1E,GAQA,IAAKnB,EAAUc,eAAiBK,GAAS2E,SAAShF,aAChD,OAAOuD,QAAQhC,MAAM,iCACvB,MAAM0D,GAAa,IAAIC,MAAOC,UAAY,GACpCC,EAAavI,KAAK+H,oBAAoBK,GAC5C,IACE,MAAMI,QAAiB5I,EAAQ6I,KAC7BP,EACA,CACEC,QAAS,CACPC,aACAjF,aAAcd,EAAUc,gBACrBK,GAAS2E,SAEdxI,KAAM6D,GAASkF,QAEjB,CACEC,UAAWnF,GAASmF,YAGxBnF,GAASoF,UAAUJ,EACpB,CAAC,MAAO9D,GACPgC,QAAQhC,MAAM,UAAQA,GACtBlB,GAASkB,QAAQA,EAClB,CACD1E,KAAKgI,uBAAuBO,EAC7B,GCxFH,MAmIaM,EA5HgB,GAC3BC,YAAY,GACZD,UAAUE,cACR,KAsHK,IAjHc,MACnBF,QAAUA,EACVC,UAAqBA,EAErB,MAAAE,CAAOC,GACL,MAAO,GAAGjJ,KAAK8I,YAAYG,IAAMC,aAClC,CAQD,GAAAC,CAAIF,EAAa7I,EAAYgJ,EAAwBC,QACnD,MAAMC,EAAa7D,KAAK8D,UAAU,CAChCnJ,QACAgJ,OAAmB,OAAXA,GAAkB,IAAIf,MAAOmB,UAAqB,IAATJ,EAAgB,OAEnEpJ,KAAK6I,QAAQY,QAAQzJ,KAAKgJ,OAAOC,GAAMK,EACxC,CAOD,GAAAhF,CAAI2E,EAAaS,EAAW,MAC1B,MAAMjJ,EAAOT,KAAK6I,QAAQc,QAAQ3J,KAAKgJ,OAAOC,IAC9C,GAAIxI,EACF,IACE,MAAMd,EAAO8F,KAAKC,MAAMjF,IAClBL,MAAEA,EAAKgJ,OAAEA,GAAWzJ,EAE1B,GAAe,OAAXyJ,GAAmBA,GAAUf,KAAKuB,MACpC,OAAOxJ,EAETJ,KAAK6J,OAAOZ,EACb,CAAC,MAAO1D,GAEP,OADAmB,QAAQhC,MAAMa,GACPmE,CACR,CAEH,OAAOA,CACR,CAMD,MAAAG,CAAOZ,GACLjJ,KAAK6I,QAAQiB,WAAW9J,KAAKgJ,OAAOC,GACrC,CAMD,KAAAc,GACE/J,KAAK6I,QAAQkB,OACd,CAUD,SAAAC,CACErJ,EACAP,EACAgJ,EAAwBC,QAExBY,SAASC,OAAS,GAAGlK,KAAKgJ,OAAOrI,MAASP,cAAkBgJ,GAC7D,CAMD,SAAAe,CAAUxJ,GACR,MAAMyJ,EAAYH,SAASC,OAAO5I,MAAM,MACxC,IAAK,IAAI+I,EAAI,EAAGnJ,EAASkJ,EAAUlJ,OAAQmJ,EAAInJ,EAAQmJ,IAAK,CAC1D,MAAMC,EAAKF,EAAUC,GAAG/I,MAAM,KAC9B,GAAIgJ,EAAG,KAAOtK,KAAKgJ,OAAOrI,GACxB,OAAO2J,EAAG,EAEb,CACD,MAAO,EACR,CAMD,YAAAC,CAAatB,GACXjJ,KAAKgK,UAAUf,EAAK,GAAI,EACzB,CAKD,WAAAuB,GACE,MAAMvE,EAAOgE,SAASC,OAAOO,MAAM,iBACnC,GAAIxE,EACF,IAAK,IAAIoE,EAAIpE,EAAK/E,OAAQmJ,KACxBJ,SAASC,OAASjE,EAAKoE,GAAK,aAAe,IAAIhC,KAAK,GAAGqC,aAG5D,GAKkBC,GCzHT,MAAOC,EACnBC,aAAe,CAAA,EACfC,YAAc,CAAA,EACdC,cAAe,EACfC,MAAkB,GAClBC,UAAsB,GACtBC,YAAqB,GACrBC,YAAuC,CAAA,EACvCC,MAAgB,GAChB,eAAAC,GACE,IAAKxD,EAAQ7H,KAAK6K,cAAe,OAAO7K,KAAK6K,aAC7C,MAAMS,EAAoBzC,GAASvE,IAAI,gBACvC,OAAOgH,GAAyC,EACjD,CACD,eAAAC,CAAgBC,GAMd,OALAxL,KAAK6K,aAAe,IACf7K,KAAK6K,gBACLW,GAEL3C,EAAQM,IAAI,eAAgBnJ,KAAK6K,cAC1B7K,KAAK6K,YACb,CACD,iBAAAY,GACE5C,EAAQgB,OAAO,gBACf7J,KAAK6K,aAAe,EACrB,CACDa,qBAAuB,EACrBR,cACAF,QACAC,YACAF,eACAD,kBAEA9K,KAAKkL,YAAcA,EACnBlL,KAAKgL,MAAQA,EACbhL,KAAKiL,UAAYA,EACjBjL,KAAK+K,aAAeA,EACpB/K,KAAK8K,YAAcA,CAAW,EAEhCa,mBAAsBC,GAEb,GADQ5L,KAAK8K,YAAY7D,MACZ2E,IAEtBC,eAAiBlK,MAAOiK,IACtB,MAAM3C,EAAMjJ,KAAK2L,mBAAmBC,GAC9BE,EAAS9L,KAAK8K,YAAY7D,GAChC,GAAMjH,KAAKmL,YAAYlC,GACrB,OAAOjJ,KAAKmL,YAAYlC,GAE1B,MAAMjI,QC9CHW,eAA8B+G,GACnC,OAAO9I,EAAQ,+BAAgC,CAC7CD,KAAM+I,EACN7I,UAAW,cAEf,CDyCsBkM,CAAe,CAAEH,WAAUI,OAAQF,EAAOF,IACtDK,EAAUjL,GAAKiL,QAAUxG,KAAKC,MAAM1E,EAAIiL,cAAWC,EAEzD,OADAlM,KAAKmL,YAAYlC,GAAOgD,EACjBA,CAAO,EAEhBE,kBAAoBxK,MAAOiK,EAAkBjM,KAC3C,MAAMsJ,EAAMjJ,KAAK2L,mBAAmBC,GAC9BE,EAAS9L,KAAK8K,YAAY7D,GAOhC,aCxEGtF,eAA8B+G,EAAalF,GAChD,OAAO5D,EACL,+BACA,CACED,KAAM+I,EACN7I,UAAW,cAEb2D,EAEJ,CDyDU4I,CAAe,CACnBR,WACAI,OAAQF,EAAOF,EACfK,QAASxG,KAAK8D,UAAU5J,KAE1BK,KAAKmL,YAAYlC,GAAOtJ,EACjBA,CAAI,EAEb0M,kBAAoB1K,MAAOiK,IACzB,MAAM3C,EAAMjJ,KAAK2L,mBAAmBC,GAC9BE,EAAS9L,KAAK8K,YAAY7D,SCzD7BtF,eAA8B+G,EAAalF,GAChD,OAAO5D,EACL,+BACA,CACED,KAAM+I,EACN7I,UAAW,cAEb2D,EAEJ,CDiDU8I,CAAe,CAAEV,WAAUI,OAAQF,WAClC9L,KAAKmL,YAAYlC,EAAI,EAE9BsD,YAAc5K,MAAOmK,EAAgB1I,KACnC,MAAMoJ,EAAQC,EAAUzM,KAAKoL,OAAQsB,GACnCtJ,EAAgBsJ,EAAStJ,gBAAkB0I,EAASY,EAASzF,KAAO6E,IAEtE,GAAIU,GAAS,EAAG,OAAOlI,EAAItE,KAAKoL,MAAO,IAAIoB,MAC3C,MAAMG,EAAWvJ,QC/CdzB,eAAyCyB,GAC9C,OAAOxD,EAAQ,mCAAoC,CACjDgN,OAAQ,OACRjN,KAAM,CAAEyD,cAAeA,GACvBvD,UAAW,cAEf,CD0CcgN,CAA0Bf,SCxDjCnK,eAA8BmK,GACnC,OAAOlM,EAAQ,wBAAyB,CACtCgN,OAAQ,OACRjN,KAAM,CAAEsH,GAAI6E,GACZjM,UAAW,cAEf,CDmDciN,CAAehB,GAEzB,OADAiB,EAAcJ,IAAa3M,KAAKoL,MAAMtD,KAAK6E,GACpCA,CAAQ,EE9EZ,MAAMK,EACX,wFACWC,EACX,wFAEIC,EAAeC,GACfH,EAAYI,KAAKD,IAASF,EAAWG,KAAKD,IAChB,IAAvBA,GAAMhM,QAAQ,KADuCgM,EACnB,IAAMA,EAGpCE,EAAsB,sBACtBC,EAA0B,0BAEzB,MAAOC,EACnBC,aAA8B,CAAA,EAC9BC,SAA2B,GAC3BC,aAA2C,CAAA,EAC3CC,YAAqB,GACrBC,aAAe,GACf9B,OACA,WAAAxI,GAAgB,CAChBuK,wBAA2BC,IACzBhI,EAAQiI,GAAGV,EAAqBS,EAAS,EAG3CE,2BAA8BF,GACrBhI,EAAQmI,IAAIZ,EAAqBS,GAE1CI,uBAA0BJ,GACjBhI,EAAQiI,GAAGT,EAAyBQ,GAE7CK,0BAA6BL,GACpBhI,EAAQmI,IAAIX,EAAyBQ,GAE9CM,gBAAkB,CAChBzO,EACA0O,EAGAC,IAEO3O,EACJuG,KAAKzF,IACJ,MAAMwG,GAAEA,EAAEkG,KAAEA,EAAIoB,KAAEA,GAAS9N,EACrB+N,EAAeH,EAAcpH,GAC7BwH,EAAsB,IACvBhO,EACHwI,IAAKhC,EACLkG,KAAMmB,EAAaA,EAAapB,EAAYC,GAAQD,EAAYC,IAElE,GAAMqB,IAAiBD,EAAM,CAC3B,MAAMG,EAAW1O,KAAKoO,gBACpBI,EACAH,EACAI,EAAQtB,MAEVsB,EAAQC,SAAWA,CACpB,CAED,OADA1O,KAAKwN,aAAaiB,EAAQtB,MAAQsB,EAC3BA,CAAO,IAEfE,MAAK,CAACC,EAAGC,IAAMD,EAAEE,OAASD,EAAEC,SAEjCvL,KAAO,CAACkK,EAA0B3B,KAChC,MAAMiD,EAAgBC,EAAUvB,GAChC,GAAI5F,EAAQkH,GAAgB,OAC5B,MAAME,EAAWlP,EAAQgP,EAAe,qBAClCG,KAAEA,KAASb,GAAkBY,EACnCjP,KAAKyN,SAAWzN,KAAKoO,gBAAgBc,EAAMb,GAC3CrO,KAAKyN,SAAW,IAAIzN,KAAKyN,UACzB,MAAMC,EAAeyB,EAAUnP,KAAKwN,aAAc,QAClDxN,KAAKoP,eAAe1B,GACpB1N,KAAKqP,iBAAiBvD,EACf,EAETsD,eAAkB1B,IAChB1N,KAAK0N,aAAe,IAAK1N,KAAK0N,gBAAiBA,GAC/C,MACM4B,EADWtP,KAAK4N,aACO1H,KAAKzF,IAChC,MAAM8O,EAAWvP,KAAK0N,aAAajN,EAAK+O,UACxC,MAAO,CACLA,SAAU/O,EAAK+O,SACf7O,KAAM4O,GAAsB9O,EAAKE,KAClC,IAEG8O,EAAiBzP,KAAK2N,YAAYzH,KAAKzF,IAC3C,MAAM8O,EAAWvP,KAAK0N,aAAajN,EAAK+O,UACxC,MAAO,IACF/O,EACHE,KAAM4O,GAAsB9O,EAAKE,KAClC,IAEHX,KAAK0P,eAAeJ,GACpBtP,KAAK2P,kBAAkBF,EAAe,EAGxCG,gBAAmBJ,IACjB,IAAIK,EAAW7P,KAAK4N,aAEjB5N,KAAKwN,aAAagC,IAAWjB,OAC9BsB,EAASC,MAAMrP,GAASA,EAAK+O,WAAaA,MAG5CK,EAAW,CAAC,CAAEL,WAAU7O,KAAMX,KAAK0N,aAAa8B,OAAgBK,GAChE7P,KAAK0P,eAAeG,GAAS,EAG/BH,eAAkBG,IAChB,IAAK7P,KAAK8L,OAAQ,OAClB,MAAMwD,EAAcO,EAAS3J,KAAKzF,IACzB,IACFA,EACHE,KAAMF,EAAKE,KAAOF,EAAKE,KAAOX,KAAK0N,aAAajN,EAAK+O,cAGzDxP,KAAK4N,aAAe0B,EACpBtP,KAAK4N,aAAemC,EAAO/P,KAAK4N,aAAc,YAC9C9H,EAAQC,KAAKsH,EAAqBrN,KAAK4N,cACvC/E,EAAQM,IAAI,GAAGnJ,KAAK8L,sBAAuB9L,KAAK4N,aAAa,EAE/DyB,iBAAoBvD,IAClB9L,KAAK8L,OAASA,EACd,MAAM+D,EAAWhH,EAAQvE,IAAI,GAAGwH,iBAAuB9L,KAAK4N,cAC5D5N,KAAK0P,eAAeG,EAAS,EAE/BG,mBAAsBR,IACpB,MAAMS,EAAQT,EAASlO,MAAM,KAC7B,IAAIkL,EAAQ,EACZ,MAAMmB,EAAqB,GACrBuC,EAAU,CAAEV,WAAU7O,KAAMX,KAAK0N,aAAa8B,IACpD,KAAOhD,EAAQyD,EAAM/O,QAAQ,CAC3B,MAAMiP,EAAeF,EAAMhP,MAAM,EAAGuL,GAAO4D,KAAK,KAC1CpQ,KAAK0N,aAAayC,IACtBxC,EAAY7F,KAAK,CACfnH,KAAMX,KAAK0N,aAAayC,GACxBX,SAAUW,IAEd3D,GACD,CACDmB,EAAY7F,KAAKoI,GACjBlQ,KAAK2P,kBAAkBhC,EAAY,EAErCgC,kBAAqBhC,IACnB3N,KAAK2N,YAAcA,EACnB3N,KAAK2N,YAAcoC,EAAO/P,KAAK2N,YAAa,YAC5C7H,EAAQC,KAAKuH,EAAyBK,EAAY,EC7IxC,MAAO0C,EACnBC,cACAC,KAAe,IACf,qBAAIC,GACF,MAAO,GAAGxQ,KAAKuQ,OAAOvQ,KAAKsQ,eAAejP,QAAQ,IAAK,KACxD,CACDoP,WAAqB,GAErB,mBAAIC,GACF,MAAMlB,EAAW1L,OAAOC,SAASyL,SACjC,OAAOxP,KAAKwQ,mBAAqBhB,CAClC,CAEDmB,YAAenB,GACN,GAAGxP,KAAKuQ,OAAOf,EAASnO,QAAQ,IAAK,MAG9CuP,UAAYjP,UACV,MAAMX,QCvBDpB,EACL,6BACA,CACEC,UAAW,cAEb,CAAE+B,WAAW,IDoBb,OADMZ,GAAOhB,KAAK0Q,iBAAiB5M,OAAOC,SAAS1C,QAAQrB,KAAKuQ,MACzDvP,CAAG,EAGZ6P,eAAiBlP,SCnCV/B,EAAQ,iCAAkC,CAC/CC,UAAW,eDsCbiR,kBAAoBnP,UAClB,MAAM6N,EAAW1L,OAAOC,SAASyL,SAC3BtH,EAAMpE,OAAOC,SAASgN,KAC5B,GAAI/Q,KAAK0Q,gBAAiB,OAAO,EACjC,MAAMM,EAAY,IAAIC,gBAClBzB,IAAaxP,KAAKuQ,MAAqB,MAAbf,GAC5BwB,EAAUE,OAAO,cAAehJ,GAClC,MAAMiJ,EAAeC,mBAAmBJ,EAAUK,YAMlD,OALAvN,OAAOC,SAAS1C,QACd,GAAGrB,KAAKwQ,oBACJW,EAAe,IAAMC,mBAAmBJ,EAAUK,YAAc,OAG/D,CAAK,EAGdC,cAAgB3P,SAEF,iBE/CP/B,EACL,oCACA,CAAED,KAAM,CAAE,GACV,CAAEiC,WAAW,MF8CX5B,KAAKyQ,iBExCF7Q,EAAQ,+BAAgC,CAAED,KAAM,CAAA,KFyC5C,GAKX4R,cAAgB5P,UE1CZ,IAA2B8O,UF2CNzQ,KAAKyQ,WE1CvB7Q,EAAQ,gCAAiC,CAC9CD,KAAM,CAAES,MAAOqQ,KFyCwB,EAGzCe,MAAQ7P,MAAO+G,IACb,MAAM1H,QAAYhB,KAAKyR,UAAU/I,GACjC,OAAI1H,EAAI0D,MAAc1D,CACZ,EAGJyQ,UAAY9P,MAAO+G,IACzB,MAAMgJ,EAGF,CACFhN,WAAOwH,EACPvM,UAAMuM,GAER,IAEE,MAAMlL,QCrEN,SAA0B0H,GAC9B,OAAO9I,EAAQ,wBAAyB,CACtCD,KAAM+I,EACN7I,UAAW,cAEf,CDgEwB8R,CAAgBjJ,IAC5BkJ,UAAEA,EAASC,QAAEA,GAAY7Q,EAC/B,GAAI4Q,EAAW,CACbF,EAAO/R,KAAOqB,EAGd,aAFsBhB,KAAKsR,kBACbI,EAAOhN,MAAQ,sBACtBgN,CACR,CAED,OAAIG,GACFH,EAAO/R,KAAOqB,EACd0Q,EAAOhN,MAAQ,4BACRgN,IAETA,EAAOhN,MAAQ,gBACRgN,EACR,CAAC,MAAOjL,GAEP,OADAiL,EAAOhN,MAAQ,gBACRgN,CACR,GAGHI,aAAe,KAEb,IAAI5J,EADW,IAAI+I,gBAAgBnN,OAAOC,SAASgO,QAClCzN,IAAI,eACjB4D,EAAKpE,OAAOC,SAASgN,KAAO7I,EAC3BpE,OAAOC,SAAS1C,QAAQrB,KAAKuQ,KAAK,EAEzCyB,aAAerQ,UACb,MAAM+G,EAAS,IAAIuI,gBACb/I,EAAMpE,OAAOC,SAASgN,KACxBjN,OAAOC,SAASyL,WAAaxP,KAAKuQ,MACpC7H,EAAOwI,OAAO,cAAehJ,SC5F1BtI,EAAQ,yBAA0B,CACvCD,KAAM,CAAE,EACRE,UAAW,eD4FXiE,OAAOC,SAAS1C,QAAQ,GAAGrB,KAAKwQ,qBAAqB9H,EAAO2I,aAAa,EGzH7E,MAAMY,EAAmB,CACvBC,KAAK,EACLC,mBAAoB,CAAC,UACrBC,iBAAkB,GAClBC,iBAAkB,aAClBC,YAAaxO,OAAOC,SAASwO,OAAS,gCACtCC,eAAgB1O,OAAOC,SAASwO,OAAS,iCAG7B,MAAOE,EACnB,IAAAlP,CAAKmP,GACH1S,KAAK0S,UAAY,IAAK1S,KAAK0S,aAAcA,EAC1C,CACOA,UAAqCT,EAE7CU,MAAQhR,MAAOiR,IACb,IAAK5S,KAAK0S,UAAUR,IAAK,OAAO,EAChC,IAAIA,GAAM,EACV,IACEA,QCnBGtS,EAAQ,mCAAoC,CAAA,EAAI,CAAEgC,WAAW,GDoBjE,CAAC,MAAO8C,GACPgC,QAAQhC,MAAM,MAAOA,EACtB,CAID,OAHIkO,IACFV,QAAYU,OAELV,CAAG,EAGdW,SAAW,KAET,MAAMR,iBAAEA,EAAgBF,mBAAEA,EAAkBG,YAAEA,GAC5CtS,KAAK0S,UACDhK,EAAS,IAAIuI,gBAAgBnN,OAAOC,SAASgO,OAAO9Q,MAAM,IAC1D6R,EAAY,IAAI7B,gBAChB/I,EAAMpE,OAAOC,SAASgN,KAS5B,OARA+B,EAAU5B,OAAOmB,EAAkBU,mBAAmB7K,IACtDiK,EAAmBjM,KAAK+C,IACtB,MAAM7I,EAAQsI,EAAOpE,IAAI2E,GACrB7I,GAAO0S,EAAU5B,OAAOjI,EAAK7I,EAAM,IAGzC0D,OAAOC,SAASgN,KAAO,GAAGuB,KAAeQ,EAAUzB,cAE5C,CAAK,EAGd2B,YAAc,KACZlP,OAAOC,SAASgN,KAAO/Q,KAAK0S,UAAUF,cAAc,EE5C1C,MAAOS,EACnBC,qBAAwBxK,GCJV,SAAmBA,EAAS,IAC1C,OAAO9I,EAAQ,kCAAmC,CAChDD,KAAM+I,EACN7I,UAAW,cAEf,CDAWsT,CAAmBzK,GAE5B0K,4BAA8B,ICEvBxT,EAAQ,yCAA0C,CACvDgN,OAAQ,OACR/M,UAAW,eDDbwT,aAAgB3K,IACd,OCK4B4K,EDLL5K,ECMlB9I,EAAQ,+BAAgC,CAC7CgN,OAAQ,OACRjN,KAAM,IACD2T,GAELzT,UAAW,eANT,IAA0ByT,CDLE,EEPb,MAAAC,UAAmBlD,EACtCwC,SACAW,SACAC,uBAAoC,GACpCb,YACA,WAAAtP,GACEoQ,QACA1T,KAAK6S,SAAW,IAAIJ,EACpBzS,KAAKwT,SAAW,IAAIP,CACrB,CACD1P,KAAO,CACLoQ,EACAC,EAAO,IACPhB,KAEA5S,KAAKuQ,KAAOqD,EACZ5T,KAAK4S,YAAcA,EACnB5S,KAAKyT,uBAAyBE,GAAaF,uBAC3CzT,KAAK6S,SAAStP,KAAKoQ,GACnB3T,KAAKsQ,cAAgBqD,GAAarD,eAAiB,QAAQ,EAE7DuD,sBAAwB,KACtB,MAAMrE,EAAW1L,OAAOC,SAASyL,SAC3BsE,EAAY9T,KAAKyT,wBAAwB3D,MAAMiE,GAC5C/T,KAAK2Q,YAAYoD,IAAavE,IAEvC,OAAOsE,CAAS,EAElBE,SAAWrS,gBACW3B,KAAK6S,SAASF,MAAM3S,KAAK4S,cAClC5S,KAAK6S,SAASG,oBACnBhT,KAAKgS,cAAc,EAE3BiC,oBAAsBtS,MAAO+G,ILrCzB,IAAkC4K,UKsCN5K,ELrCzB9I,EAAQ,uCAAwC,CACrDgN,OAAQ,OACRjN,KAAM,IACD2T,GAELzT,UAAW,gBKiCXG,KAAK8R,cACE,EAEToC,cAAgBvS,UACd,GAAI3B,KAAK6T,wBAAyB,OAAO,EAEzC,aADoB7T,KAAK6S,SAASF,MAAM3S,KAAK4S,cAE3C5S,KAAK6S,SAASA,YACP,KAEL7S,KAAK0Q,uBACI1Q,KAAK8Q,mBAAmB,ECyCzC,MAAMqD,EAAc,IA7EpB,MAEEC,UACAC,UACAC,WACAvJ,cAAwB,EACxBwJ,cACA,WAAAjR,GACEtD,KAAKoU,UAAY,IAAIxJ,EACrB5K,KAAKqU,UAAY,IAAI9G,EACrBvN,KAAKsU,WAAa,IAAIf,CACvB,CACDiB,kBAAgC,GAChCC,YAA2B,CACzBC,WAAW,EACXC,YAAa,IAEf,SAAIC,GACF,OAAO5U,KAAKyU,aAAaC,SAC1B,CACD,YAAI/H,GACF,OAAO3M,KAAKoU,UAAUtJ,WACvB,CAED,YAAI2C,GACF,OAAOzN,KAAKqU,UAAU5G,QACvB,CAEDoH,cAAgBlT,UACd,MAAMX,QCtCDpB,EACL,2CACA,CACEgN,OAAQ,QAEV,CAAEhL,WAAW,IDkCb5B,KAAKwU,kBAAoBxT,EAAIwT,kBAC7BxU,KAAKyU,YAAczT,EAAIyT,WAAW,EAEpCK,iBAAmBnT,MACjBoT,IAEA,MAAM/T,QCrDHW,iBACL,OAAO/B,EAAQ,kCAAmC,CAChDgN,OAAQ,QAEZ,CDiDyCoI,IAE7BC,KAAMnK,EAAWoK,WAAEA,EAAUnK,aAAEA,KAAiBoK,GAAanU,EAErEhB,KAAKoU,UAAU1I,qBAAqB,IAAKyJ,EAAUrK,gBAEnD9K,KAAK+K,aAAeA,EAEpB,MAAMqK,EAA8B,mBAATL,QAA4BA,EAAM/T,GAAO+T,EAEpE/U,KAAKqU,UAAU9Q,KACbsE,EAAQuN,GAAeF,EAAaE,EACpCtK,EAAY7D,GACb,EAEH1D,KAAO5B,MAAO6B,IACZ,MAAMoQ,KAAEA,EAAO,IAAGnG,SAAEA,EAAQ4H,qBAAEA,EAAoBzC,YAAEA,EAAYvQ,UAAUiT,GAAgB,GAAS9R,EACnGxD,KAAKsU,WAAW/Q,KAAKC,GAASmQ,YAAaC,EAAMhB,GACjD,IAEE,MAAM5R,QAAYhB,KAAKsU,WAAW1D,YAClC,OAAI5P,GAEFhB,KAAKoU,UAAU7I,gBAAgBvK,SACzBhB,KAAK8U,iBAAiBrH,SACtB8H,EAAsB7V,wBACtB8V,EAAuB9T,oBAE1B4T,GAAiBjT,EAAUkB,KAAKvD,KAAKoU,UAAUtJ,YAAY1H,qBACxDiS,QACC,SAGIrV,KAAKsU,WAAWJ,eAC9B,CAAC,MAAOxP,GACPgC,QAAQhC,MAAMA,EACf,CACD,OAAO,CAAK,GE3FhB,MAAM+Q,EAAiB,aAqCvB,IAAejJ,EAAA,IA/Bf,MACE7M,KAAY,CAAA,EACZ+V,mBAAsB9J,GACb,GAAG6J,KAAkB7J,IAE9B+J,eAAiBhU,MAAOiK,IACtB,MAAM3C,EAAMjJ,KAAK0V,mBAAmB9J,GACpC,GAAM5L,KAAKL,KAAKsJ,GACd,OAAOjJ,KAAKL,KAAKsJ,GAEnB,MAAMjI,QCAHW,eAAiC+G,GACtC,OAAO9I,EAAQ,8BAA+B,CAC5CD,KAAM+I,EACN7I,UAAW,cAEf,CDLsB+V,CAAkB,CAAEhK,WAAUI,OAAQyJ,IAClDxJ,EAAUjL,GAAKiL,QAAUxG,KAAKC,MAAM1E,EAAIiL,cAAWC,EACzDlM,KAAKL,KAAKsJ,GAAOgD,CAAO,EAE1B4J,kBAAoBlU,MAAOiK,EAAkBjM,KAC3C,MAAMsJ,EAAMjJ,KAAK0V,mBAAmB9J,GAOpC,aCpBGjK,eAAiC+G,GACtC,OAAO9I,EAAQ,8BAA+B,CAC5CD,KAAM+I,EACN7I,UAAW,cAEf,CDSUiW,CAAkB,CACtBlK,WACAI,OAAQyJ,EACRxJ,QAASxG,KAAK8D,UAAU5J,KAE1BK,KAAKL,KAAKsJ,GAAOtJ,EACVA,CAAI,EAEboW,kBAAoBpU,MAAOiK,IACzB,MAAM3C,EAAMjJ,KAAK0V,mBAAmB9J,SCPjCjK,eAAiC+G,GACtC,OAAO9I,EAAQ,8BAA+B,CAC5CD,KAAM+I,EACN7I,UAAW,cAEf,CDGUmW,CAAkB,CAAEpK,WAAUI,OAAQyJ,WACrCzV,KAAKL,KAAKsJ,EAAI,GExBnB,MAAAgN,EAAgBV,EAChBW,EAAiBV,EACjBpB,EAAYD,EAAYC,UACxBE,EAAaH,EAAYG,WACzBD,EAAYF,EAAYE"}
@@ -0,0 +1,2 @@
1
+ import{mapValues as r,toLower as e,isObject as o,pick as t,mergeWith as n,omit as a}from"lodash-es";function i(r,e){(function(r){return"string"==typeof r&&-1!==r.indexOf(".")&&1===parseFloat(r)})(r)&&(r="100%");var o=function(r){return"string"==typeof r&&-1!==r.indexOf("%")}(r);return r=360===e?r:Math.min(e,Math.max(0,parseFloat(r))),o&&(r=parseInt(String(r*e),10)/100),Math.abs(r-e)<1e-6?1:r=360===e?(r<0?r%e+e:r%e)/parseFloat(String(e)):r%e/parseFloat(String(e))}function c(r){return Math.min(1,Math.max(0,r))}function s(r){return r=parseFloat(r),(isNaN(r)||r<0||r>1)&&(r=1),r}function l(r){return r<=1?"".concat(100*Number(r),"%"):r}function u(r){return 1===r.length?"0"+r:String(r)}function g(r,e,o){return{r:255*i(r,255),g:255*i(e,255),b:255*i(o,255)}}function h(r,e,o){r=i(r,255),e=i(e,255),o=i(o,255);var t=Math.max(r,e,o),n=Math.min(r,e,o),a=0,c=0,s=(t+n)/2;if(t===n)c=0,a=0;else{var l=t-n;switch(c=s>.5?l/(2-t-n):l/(t+n),t){case r:a=(e-o)/l+(e<o?6:0);break;case e:a=(o-r)/l+2;break;case o:a=(r-e)/l+4}a/=6}return{h:a,s:c,l:s}}function d(r,e,o){return o<0&&(o+=1),o>1&&(o-=1),o<1/6?r+6*o*(e-r):o<.5?e:o<2/3?r+(e-r)*(2/3-o)*6:r}function f(r,e,o){var t,n,a;if(r=i(r,360),e=i(e,100),o=i(o,100),0===e)n=o,a=o,t=o;else{var c=o<.5?o*(1+e):o+e-o*e,s=2*o-c;t=d(s,c,r+1/3),n=d(s,c,r),a=d(s,c,r-1/3)}return{r:255*t,g:255*n,b:255*a}}function p(r,e,o){r=i(r,255),e=i(e,255),o=i(o,255);var t=Math.max(r,e,o),n=Math.min(r,e,o),a=0,c=t,s=t-n,l=0===t?0:s/t;if(t===n)a=0;else{switch(t){case r:a=(e-o)/s+(e<o?6:0);break;case e:a=(o-r)/s+2;break;case o:a=(r-e)/s+4}a/=6}return{h:a,s:l,v:c}}function b(r,e,o){r=6*i(r,360),e=i(e,100),o=i(o,100);var t=Math.floor(r),n=r-t,a=o*(1-e),c=o*(1-n*e),s=o*(1-(1-n)*e),l=t%6;return{r:255*[o,c,a,a,s,o][l],g:255*[s,o,o,c,a,a][l],b:255*[a,a,s,o,o,c][l]}}function x(r,e,o,t){var n=[u(Math.round(r).toString(16)),u(Math.round(e).toString(16)),u(Math.round(o).toString(16))];return t&&n[0].startsWith(n[0].charAt(1))&&n[1].startsWith(n[1].charAt(1))&&n[2].startsWith(n[2].charAt(1))?n[0].charAt(0)+n[1].charAt(0)+n[2].charAt(0):n.join("")}function m(r,e,o,t,n){var a=[u(Math.round(r).toString(16)),u(Math.round(e).toString(16)),u(Math.round(o).toString(16)),u(y(t))];return n&&a[0].startsWith(a[0].charAt(1))&&a[1].startsWith(a[1].charAt(1))&&a[2].startsWith(a[2].charAt(1))&&a[3].startsWith(a[3].charAt(1))?a[0].charAt(0)+a[1].charAt(0)+a[2].charAt(0)+a[3].charAt(0):a.join("")}function v(r,e,o,t){return[u(y(t)),u(Math.round(r).toString(16)),u(Math.round(e).toString(16)),u(Math.round(o).toString(16))].join("")}function y(r){return Math.round(255*parseFloat(r)).toString(16)}function S(r){return w(r)/255}function w(r){return parseInt(r,16)}function M(r){return{r:r>>16,g:(65280&r)>>8,b:255&r}}var B={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",goldenrod:"#daa520",gold:"#ffd700",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavenderblush:"#fff0f5",lavender:"#e6e6fa",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"};function H(r){var e={r:0,g:0,b:0},o=1,t=null,n=null,a=null,i=!1,c=!1;return"string"==typeof r&&(r=T(r)),"object"==typeof r&&(R(r.r)&&R(r.g)&&R(r.b)?(e=g(r.r,r.g,r.b),i=!0,c="%"===String(r.r).substr(-1)?"prgb":"rgb"):R(r.h)&&R(r.s)&&R(r.v)?(t=l(r.s),n=l(r.v),e=b(r.h,t,n),i=!0,c="hsv"):R(r.h)&&R(r.s)&&R(r.l)&&(t=l(r.s),a=l(r.l),e=f(r.h,t,a),i=!0,c="hsl"),Object.prototype.hasOwnProperty.call(r,"a")&&(o=r.a)),o=s(o),{ok:i,format:r.format||c,r:Math.min(255,Math.max(e.r,0)),g:Math.min(255,Math.max(e.g,0)),b:Math.min(255,Math.max(e.b,0)),a:o}}var k="(?:".concat("[-\\+]?\\d*\\.\\d+%?",")|(?:").concat("[-\\+]?\\d+%?",")"),A="[\\s|\\(]+(".concat(k,")[,|\\s]+(").concat(k,")[,|\\s]+(").concat(k,")\\s*\\)?"),z="[\\s|\\(]+(".concat(k,")[,|\\s]+(").concat(k,")[,|\\s]+(").concat(k,")[,|\\s]+(").concat(k,")\\s*\\)?"),F={CSS_UNIT:new RegExp(k),rgb:new RegExp("rgb"+A),rgba:new RegExp("rgba"+z),hsl:new RegExp("hsl"+A),hsla:new RegExp("hsla"+z),hsv:new RegExp("hsv"+A),hsva:new RegExp("hsva"+z),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/};function T(r){if(0===(r=r.trim().toLowerCase()).length)return!1;var e=!1;if(B[r])r=B[r],e=!0;else if("transparent"===r)return{r:0,g:0,b:0,a:0,format:"name"};var o=F.rgb.exec(r);return o?{r:o[1],g:o[2],b:o[3]}:(o=F.rgba.exec(r))?{r:o[1],g:o[2],b:o[3],a:o[4]}:(o=F.hsl.exec(r))?{h:o[1],s:o[2],l:o[3]}:(o=F.hsla.exec(r))?{h:o[1],s:o[2],l:o[3],a:o[4]}:(o=F.hsv.exec(r))?{h:o[1],s:o[2],v:o[3]}:(o=F.hsva.exec(r))?{h:o[1],s:o[2],v:o[3],a:o[4]}:(o=F.hex8.exec(r))?{r:w(o[1]),g:w(o[2]),b:w(o[3]),a:S(o[4]),format:e?"name":"hex8"}:(o=F.hex6.exec(r))?{r:w(o[1]),g:w(o[2]),b:w(o[3]),format:e?"name":"hex"}:(o=F.hex4.exec(r))?{r:w(o[1]+o[1]),g:w(o[2]+o[2]),b:w(o[3]+o[3]),a:S(o[4]+o[4]),format:e?"name":"hex8"}:!!(o=F.hex3.exec(r))&&{r:w(o[1]+o[1]),g:w(o[2]+o[2]),b:w(o[3]+o[3]),format:e?"name":"hex"}}function R(r){return Boolean(F.CSS_UNIT.exec(String(r)))}var L=function(){function r(e,o){var t;if(void 0===e&&(e=""),void 0===o&&(o={}),e instanceof r)return e;"number"==typeof e&&(e=M(e)),this.originalInput=e;var n=H(e);this.originalInput=e,this.r=n.r,this.g=n.g,this.b=n.b,this.a=n.a,this.roundA=Math.round(100*this.a)/100,this.format=null!==(t=o.format)&&void 0!==t?t:n.format,this.gradientType=o.gradientType,this.r<1&&(this.r=Math.round(this.r)),this.g<1&&(this.g=Math.round(this.g)),this.b<1&&(this.b=Math.round(this.b)),this.isValid=n.ok}return r.prototype.isDark=function(){return this.getBrightness()<128},r.prototype.isLight=function(){return!this.isDark()},r.prototype.getBrightness=function(){var r=this.toRgb();return(299*r.r+587*r.g+114*r.b)/1e3},r.prototype.getLuminance=function(){var r=this.toRgb(),e=r.r/255,o=r.g/255,t=r.b/255;return.2126*(e<=.03928?e/12.92:Math.pow((e+.055)/1.055,2.4))+.7152*(o<=.03928?o/12.92:Math.pow((o+.055)/1.055,2.4))+.0722*(t<=.03928?t/12.92:Math.pow((t+.055)/1.055,2.4))},r.prototype.getAlpha=function(){return this.a},r.prototype.setAlpha=function(r){return this.a=s(r),this.roundA=Math.round(100*this.a)/100,this},r.prototype.isMonochrome=function(){return 0===this.toHsl().s},r.prototype.toHsv=function(){var r=p(this.r,this.g,this.b);return{h:360*r.h,s:r.s,v:r.v,a:this.a}},r.prototype.toHsvString=function(){var r=p(this.r,this.g,this.b),e=Math.round(360*r.h),o=Math.round(100*r.s),t=Math.round(100*r.v);return 1===this.a?"hsv(".concat(e,", ").concat(o,"%, ").concat(t,"%)"):"hsva(".concat(e,", ").concat(o,"%, ").concat(t,"%, ").concat(this.roundA,")")},r.prototype.toHsl=function(){var r=h(this.r,this.g,this.b);return{h:360*r.h,s:r.s,l:r.l,a:this.a}},r.prototype.toHslString=function(){var r=h(this.r,this.g,this.b),e=Math.round(360*r.h),o=Math.round(100*r.s),t=Math.round(100*r.l);return 1===this.a?"hsl(".concat(e,", ").concat(o,"%, ").concat(t,"%)"):"hsla(".concat(e,", ").concat(o,"%, ").concat(t,"%, ").concat(this.roundA,")")},r.prototype.toHex=function(r){return void 0===r&&(r=!1),x(this.r,this.g,this.b,r)},r.prototype.toHexString=function(r){return void 0===r&&(r=!1),"#"+this.toHex(r)},r.prototype.toHex8=function(r){return void 0===r&&(r=!1),m(this.r,this.g,this.b,this.a,r)},r.prototype.toHex8String=function(r){return void 0===r&&(r=!1),"#"+this.toHex8(r)},r.prototype.toHexShortString=function(r){return void 0===r&&(r=!1),1===this.a?this.toHexString(r):this.toHex8String(r)},r.prototype.toRgb=function(){return{r:Math.round(this.r),g:Math.round(this.g),b:Math.round(this.b),a:this.a}},r.prototype.toRgbString=function(){var r=Math.round(this.r),e=Math.round(this.g),o=Math.round(this.b);return 1===this.a?"rgb(".concat(r,", ").concat(e,", ").concat(o,")"):"rgba(".concat(r,", ").concat(e,", ").concat(o,", ").concat(this.roundA,")")},r.prototype.toPercentageRgb=function(){var r=function(r){return"".concat(Math.round(100*i(r,255)),"%")};return{r:r(this.r),g:r(this.g),b:r(this.b),a:this.a}},r.prototype.toPercentageRgbString=function(){var r=function(r){return Math.round(100*i(r,255))};return 1===this.a?"rgb(".concat(r(this.r),"%, ").concat(r(this.g),"%, ").concat(r(this.b),"%)"):"rgba(".concat(r(this.r),"%, ").concat(r(this.g),"%, ").concat(r(this.b),"%, ").concat(this.roundA,")")},r.prototype.toName=function(){if(0===this.a)return"transparent";if(this.a<1)return!1;for(var r="#"+x(this.r,this.g,this.b,!1),e=0,o=Object.entries(B);e<o.length;e++){var t=o[e],n=t[0];if(r===t[1])return n}return!1},r.prototype.toString=function(r){var e=Boolean(r);r=null!=r?r:this.format;var o=!1,t=this.a<1&&this.a>=0;return e||!t||!r.startsWith("hex")&&"name"!==r?("rgb"===r&&(o=this.toRgbString()),"prgb"===r&&(o=this.toPercentageRgbString()),"hex"!==r&&"hex6"!==r||(o=this.toHexString()),"hex3"===r&&(o=this.toHexString(!0)),"hex4"===r&&(o=this.toHex8String(!0)),"hex8"===r&&(o=this.toHex8String()),"name"===r&&(o=this.toName()),"hsl"===r&&(o=this.toHslString()),"hsv"===r&&(o=this.toHsvString()),o||this.toHexString()):"name"===r&&0===this.a?this.toName():this.toRgbString()},r.prototype.toNumber=function(){return(Math.round(this.r)<<16)+(Math.round(this.g)<<8)+Math.round(this.b)},r.prototype.clone=function(){return new r(this.toString())},r.prototype.lighten=function(e){void 0===e&&(e=10);var o=this.toHsl();return o.l+=e/100,o.l=c(o.l),new r(o)},r.prototype.brighten=function(e){void 0===e&&(e=10);var o=this.toRgb();return o.r=Math.max(0,Math.min(255,o.r-Math.round(-e/100*255))),o.g=Math.max(0,Math.min(255,o.g-Math.round(-e/100*255))),o.b=Math.max(0,Math.min(255,o.b-Math.round(-e/100*255))),new r(o)},r.prototype.darken=function(e){void 0===e&&(e=10);var o=this.toHsl();return o.l-=e/100,o.l=c(o.l),new r(o)},r.prototype.tint=function(r){return void 0===r&&(r=10),this.mix("white",r)},r.prototype.shade=function(r){return void 0===r&&(r=10),this.mix("black",r)},r.prototype.desaturate=function(e){void 0===e&&(e=10);var o=this.toHsl();return o.s-=e/100,o.s=c(o.s),new r(o)},r.prototype.saturate=function(e){void 0===e&&(e=10);var o=this.toHsl();return o.s+=e/100,o.s=c(o.s),new r(o)},r.prototype.greyscale=function(){return this.desaturate(100)},r.prototype.spin=function(e){var o=this.toHsl(),t=(o.h+e)%360;return o.h=t<0?360+t:t,new r(o)},r.prototype.mix=function(e,o){void 0===o&&(o=50);var t=this.toRgb(),n=new r(e).toRgb(),a=o/100;return new r({r:(n.r-t.r)*a+t.r,g:(n.g-t.g)*a+t.g,b:(n.b-t.b)*a+t.b,a:(n.a-t.a)*a+t.a})},r.prototype.analogous=function(e,o){void 0===e&&(e=6),void 0===o&&(o=30);var t=this.toHsl(),n=360/o,a=[this];for(t.h=(t.h-(n*e>>1)+720)%360;--e;)t.h=(t.h+n)%360,a.push(new r(t));return a},r.prototype.complement=function(){var e=this.toHsl();return e.h=(e.h+180)%360,new r(e)},r.prototype.monochromatic=function(e){void 0===e&&(e=6);for(var o=this.toHsv(),t=o.h,n=o.s,a=o.v,i=[],c=1/e;e--;)i.push(new r({h:t,s:n,v:a})),a=(a+c)%1;return i},r.prototype.splitcomplement=function(){var e=this.toHsl(),o=e.h;return[this,new r({h:(o+72)%360,s:e.s,l:e.l}),new r({h:(o+216)%360,s:e.s,l:e.l})]},r.prototype.onBackground=function(e){var o=this.toRgb(),t=new r(e).toRgb(),n=o.a+t.a*(1-o.a);return new r({r:(o.r*o.a+t.r*t.a*(1-o.a))/n,g:(o.g*o.a+t.g*t.a*(1-o.a))/n,b:(o.b*o.a+t.b*t.a*(1-o.a))/n,a:n})},r.prototype.triad=function(){return this.polyad(3)},r.prototype.tetrad=function(){return this.polyad(4)},r.prototype.polyad=function(e){for(var o=this.toHsl(),t=o.h,n=[this],a=360/e,i=1;i<e;i++)n.push(new r({h:(t+i*a)%360,s:o.s,l:o.l}));return n},r.prototype.equals=function(e){return this.toRgbString()===new r(e).toRgbString()},r}();function C(r,e){return void 0===r&&(r=""),void 0===e&&(e={}),new L(r,e)}function X(r,e){var o=new L(r),t=new L(e);return(Math.max(o.getLuminance(),t.getLuminance())+.05)/(Math.min(o.getLuminance(),t.getLuminance())+.05)}function D(r,e,o){var t,n;void 0===o&&(o={level:"AA",size:"small"});var a=X(r,e);switch((null!==(t=o.level)&&void 0!==t?t:"AA")+(null!==(n=o.size)&&void 0!==n?n:"small")){case"AAsmall":case"AAAlarge":return a>=4.5;case"AAlarge":return a>=3;case"AAAsmall":return a>=7;default:return!1}}function E(r,e,o){void 0===o&&(o={includeFallbackColors:!1,level:"AA",size:"small"});for(var t=null,n=0,a=o.includeFallbackColors,i=o.level,c=o.size,s=0,l=e;s<l.length;s++){var u=l[s],g=X(r,u);g>n&&(n=g,t=new L(u))}return D(r,t,{level:i,size:c})||!a?t:(o.includeFallbackColors=!1,E(r,["#fff","#000"],o))}function I(r,e){var o=new L(r),t="#"+v(o.r,o.g,o.b,o.a),n=t,a=o.gradientType?"GradientType = 1, ":"";if(e){var i=new L(e);n="#"+v(i.r,i.g,i.b,i.a)}return"progid:DXImageTransform.Microsoft.gradient(".concat(a,"startColorstr=").concat(t,",endColorstr=").concat(n,")")}function W(r,e){var o={r:l(r.r),g:l(r.g),b:l(r.b)};return void 0!==r.a&&(o.a=Number(r.a)),new L(o,e)}function P(){return new L({r:Math.random(),g:Math.random(),b:Math.random()})}function O(r){if(void 0===r&&(r={}),void 0!==r.count&&null!==r.count){var e=r.count,o=[];for(r.count=void 0;e>o.length;)r.count=null,r.seed&&(r.seed+=1),o.push(O(r));return r.count=e,o}var t=function(r,e){var o=G(function(r){var e=parseInt(r,10);if(!Number.isNaN(e)&&e<360&&e>0)return[e,e];if("string"==typeof r){var o=j.find((function(e){return e.name===r}));if(o){var t=N(o);if(t.hueRange)return t.hueRange}var n=new L(r);if(n.isValid){var a=n.toHsv().h;return[a,a]}}return[0,360]}(r),e);o<0&&(o=360+o);return o}(r.hue,r.seed),n=function(r,e){if("monochrome"===e.hue)return 0;if("random"===e.luminosity)return G([0,100],e.seed);var o=$(r).saturationRange,t=o[0],n=o[1];switch(e.luminosity){case"bright":t=55;break;case"dark":t=n-10;break;case"light":n=55}return G([t,n],e.seed)}(t,r),a=function(r,e,o){var t=function(r,e){for(var o=$(r).lowerBounds,t=0;t<o.length-1;t++){var n=o[t][0],a=o[t][1],i=o[t+1][0],c=o[t+1][1];if(e>=n&&e<=i){var s=(c-a)/(i-n);return s*e+(a-s*n)}}return 0}(r,e),n=100;switch(o.luminosity){case"dark":n=t+20;break;case"light":t=(n+t)/2;break;case"random":t=0,n=100}return G([t,n],o.seed)}(t,n,r),i={h:t,s:n,v:a};return void 0!==r.alpha&&(i.a=r.alpha),new L(i)}function $(r){r>=334&&r<=360&&(r-=360);for(var e=0,o=j;e<o.length;e++){var t=N(o[e]);if(t.hueRange&&r>=t.hueRange[0]&&r<=t.hueRange[1])return t}throw Error("Color not found")}function G(r,e){if(void 0===e)return Math.floor(r[0]+Math.random()*(r[1]+1-r[0]));var o=r[1]||1,t=r[0]||0,n=(e=(9301*e+49297)%233280)/233280;return Math.floor(t+n*(o-t))}function N(r){var e=r.lowerBounds[0][0],o=r.lowerBounds[r.lowerBounds.length-1][0],t=r.lowerBounds[r.lowerBounds.length-1][1],n=r.lowerBounds[0][1];return{name:r.name,hueRange:r.hueRange,lowerBounds:r.lowerBounds,saturationRange:[e,o],brightnessRange:[t,n]}}var j=[{name:"monochrome",hueRange:null,lowerBounds:[[0,0],[100,0]]},{name:"red",hueRange:[-26,18],lowerBounds:[[20,100],[30,92],[40,89],[50,85],[60,78],[70,70],[80,60],[90,55],[100,50]]},{name:"orange",hueRange:[19,46],lowerBounds:[[20,100],[30,93],[40,88],[50,86],[60,85],[70,70],[100,70]]},{name:"yellow",hueRange:[47,62],lowerBounds:[[25,100],[40,94],[50,89],[60,86],[70,84],[80,82],[90,80],[100,75]]},{name:"green",hueRange:[63,178],lowerBounds:[[30,100],[40,90],[50,85],[60,81],[70,74],[80,64],[90,50],[100,40]]},{name:"blue",hueRange:[179,257],lowerBounds:[[20,100],[30,86],[40,80],[50,74],[60,60],[70,52],[80,44],[90,39],[100,35]]},{name:"purple",hueRange:[258,282],lowerBounds:[[20,100],[30,87],[40,79],[50,70],[60,65],[70,59],[80,52],[90,45],[100,42]]},{name:"pink",hueRange:[283,334],lowerBounds:[[20,100],[30,90],[40,86],[60,84],[80,80],[90,75],[100,73]]}],Q=2,q=.16,U=.05,V=.05,_=.15,J=5,K=4,Y=[{index:7,opacity:.15},{index:6,opacity:.25},{index:5,opacity:.3},{index:5,opacity:.45},{index:5,opacity:.65},{index:5,opacity:.85},{index:4,opacity:.9},{index:3,opacity:.95},{index:2,opacity:.97},{index:1,opacity:.98}];function Z(r){var e=p(r.r,r.g,r.b);return{h:360*e.h,s:e.s,v:e.v}}function rr(r){var e=r.r,o=r.g,t=r.b;return"#".concat(x(e,o,t,!1))}function er(r,e,o){var t;return(t=Math.round(r.h)>=60&&Math.round(r.h)<=240?o?Math.round(r.h)-Q*e:Math.round(r.h)+Q*e:o?Math.round(r.h)+Q*e:Math.round(r.h)-Q*e)<0?t+=360:t>=360&&(t-=360),t}function or(r,e,o){return 0===r.h&&0===r.s?r.s:((t=o?r.s-q*e:e===K?r.s+q:r.s+U*e)>1&&(t=1),o&&e===J&&t>.1&&(t=.1),t<.06&&(t=.06),Number(t.toFixed(2)));var t}function tr(r,e,o){var t;return(t=o?r.v+V*e:r.v-_*e)>1&&(t=1),Number(t.toFixed(2))}function nr(r){for(var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=[],t=H(r),n=J;n>0;n-=1){var a=Z(t),i=rr(H({h:er(a,n,!0),s:or(a,n,!0),v:tr(a,n,!0)}));o.push(i)}o.push(rr(t));for(var c=1;c<=K;c+=1){var s=Z(t),l=rr(H({h:er(s,c),s:or(s,c),v:tr(s,c)}));o.push(l)}return"dark"===e.theme?Y.map((function(r){var t,n,a,i=r.index,c=r.opacity;return rr((t=H(e.backgroundColor||"#141414"),n=H(o[i]),a=100*c/100,{r:(n.r-t.r)*a+t.r,g:(n.g-t.g)*a+t.g,b:(n.b-t.b)*a+t.b}))})):o}var ar={red:"#F5222D",volcano:"#FA541C",orange:"#FA8C16",gold:"#FAAD14",yellow:"#FADB14",lime:"#A0D911",green:"#52C41A",cyan:"#13C2C2",blue:"#1677FF",geekblue:"#2F54EB",purple:"#722ED1",magenta:"#EB2F96",grey:"#666666"},ir={},cr={};Object.keys(ar).forEach((function(r){ir[r]=nr(ar[r]),ir[r].primary=ir[r][5],cr[r]=nr(ar[r],{theme:"dark",backgroundColor:"#141414"}),cr[r].primary=cr[r][5]}));const sr=r=>{const{controlHeight:e}=r;return{controlHeightSM:.75*e,controlHeightXS:.5*e,controlHeightLG:1.25*e}};function lr(r){const{sizeUnit:e,sizeStep:o}=r;return{sizeXXL:e*(o+8),sizeXL:e*(o+4),sizeLG:e*(o+2),sizeMD:e*(o+1),sizeMS:e*o,size:e*o,sizeSM:e*(o-1),sizeXS:e*(o-2),sizeXXS:e*(o-3)}}const ur={blue:"#1677ff",purple:"#722ED1",cyan:"#13C2C2",green:"#52C41A",magenta:"#EB2F96",pink:"#eb2f96",red:"#F5222D",orange:"#FA8C16",yellow:"#FADB14",volcano:"#FA541C",geekblue:"#2F54EB",gold:"#FAAD14",lime:"#A0D911"},gr={...ur,colorPrimary:"#1677ff",colorSuccess:"#52c41a",colorWarning:"#faad14",colorError:"#ff4d4f",colorInfo:"#1677ff",colorLink:"",colorTextBase:"",colorBgBase:"",fontFamily:'microsoft yahei,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif',fontFamilyCode:"'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, monospace",fontWeight:400,fontSize:12,lineWidth:1,lineType:"solid",motionUnit:.1,motionBase:0,motionEaseOutCirc:"cubic-bezier(0.08, 0.82, 0.17, 1)",motionEaseInOutCirc:"cubic-bezier(0.78, 0.14, 0.15, 0.86)",motionEaseOut:"cubic-bezier(0.215, 0.61, 0.355, 1)",motionEaseInOut:"cubic-bezier(0.645, 0.045, 0.355, 1)",motionEaseOutBack:"cubic-bezier(0.12, 0.4, 0.29, 1.46)",motionEaseInBack:"cubic-bezier(0.71, -0.46, 0.88, 0.6)",motionEaseInQuint:"cubic-bezier(0.755, 0.05, 0.855, 0.06)",motionEaseOutQuint:"cubic-bezier(0.23, 1, 0.32, 1)",borderRadius:6,sizeUnit:4,sizeStep:4,sizePopupArrow:16,controlHeight:32,zIndexBase:0,zIndexPopupBase:1e3,opacity:1,wireframe:!1,motion:!0,layoutHeaderHeight:50,layoutSiderWidth:200,layoutIconSize:24,layoutNavHeight:40,gradientColors:["rgba(0, 64, 237,0.3)","rgba(0, 229, 237,0.3)"]};function hr(r,e){const o=parseInt(r,16)+e,t=o>255?255:o;return t.toString(16).length>1?t.toString(16):`0${t.toString(16)}`}function dr(r,e){return r=r.indexOf("#")>=0?r.substring(1,r.length):r,e=Math.trunc(255*e/100),`#${hr(r.substring(0,2),e)}${hr(r.substring(2,4),e)}${hr(r.substring(4,6),e)}`}function fr(t,n){if("object"!=typeof t||Array.isArray(t))return;const a={};return r(t,((r,t)=>{const i=n?`--${n}-`+t:"--"+t,c="number"!=typeof r||["lineheight","opacity","weight"].some((r=>e(t).includes(r)))?r:r+"px";if(o(r))return fr(c,t);a[i]=c})),a}const pr=(r,e)=>new L(r).setAlpha(e).toRgbString(),br=(r,e)=>new L(r).darken(e).toHexString(),xr=(r,e)=>new L(r).lighten(e).toHexString(),mr=(r,e)=>new L(r).onBackground(e).toRgbString(),vr=(r,e)=>e.map((e=>mr(e,r)));function yr(r,{generateColorPalettes:e,generateNeutralColorPalettes:o}){const{colorSuccess:t,colorWarning:n,colorError:a,colorInfo:i,colorPrimary:c,colorBgBase:s,colorTextBase:l}=r,u=e(c),g=e(t),h=e(n),d=e(a),f=e(i),p=o(s,l),b=vr(p.colorBgBase,r.gradientColors),x=e(r.colorLink||r.colorInfo);return{...p,gradientColors:b,colorPrimaryBg:u[1],colorPrimaryBgHover:u[2],colorPrimaryBorder:u[3],colorPrimaryBorderHover:u[4],colorPrimaryHover:u[5],colorPrimary:u[6],colorPrimaryActive:u[7],colorPrimaryTextHover:u[8],colorPrimaryText:u[9],colorPrimaryTextActive:u[10],colorSuccessBg:g[1],colorSuccessBgHover:g[2],colorSuccessBorder:g[3],colorSuccessBorderHover:g[4],colorSuccessHover:g[4],colorSuccess:g[6],colorSuccessActive:g[7],colorSuccessTextHover:g[8],colorSuccessText:g[9],colorSuccessTextActive:g[10],colorErrorBg:d[1],colorErrorBgHover:d[2],colorErrorBorder:d[3],colorErrorBorderHover:d[4],colorErrorHover:d[5],colorError:d[6],colorErrorActive:d[7],colorErrorTextHover:d[8],colorErrorText:d[9],colorErrorTextActive:d[10],colorWarningBg:h[1],colorWarningBgHover:h[2],colorWarningBorder:h[3],colorWarningBorderHover:h[4],colorWarningHover:h[4],colorWarning:h[6],colorWarningActive:h[7],colorWarningTextHover:h[8],colorWarningText:h[9],colorWarningTextActive:h[10],colorInfoBg:f[1],colorInfoBgHover:f[2],colorInfoBorder:f[3],colorInfoBorderHover:f[4],colorInfoHover:f[4],colorInfo:f[6],colorInfoActive:f[7],colorInfoTextHover:f[8],colorInfoText:f[9],colorInfoTextActive:f[10],colorLinkHover:x[4],colorLink:x[6],colorLinkActive:x[7],colorBgMask:new L("#000").setAlpha(.45).toRgbString(),colorWhite:"#fff"}}const Sr=r=>{let e=r,o=r,t=r,n=r,a=r,i=r;return r<6&&r>=5?e=r+1:r<16&&r>=6?e=r+2:r>=16&&(e=16),r<7&&r>=5?o=4:r<8&&r>=7?o=5:r<14&&r>=8?o=6:r<16&&r>=14?o=7:r>=16&&(o=8),r<6&&r>=2?t=1:r>=6&&(t=2),r>4&&r<8?i=4:r>=8&&(i=6),n=e>0?e+4:e,a=e>0?e+8:e,{borderRadius:r>16?16:r,borderRadiusXS:t,borderRadiusSM:o,borderRadiusLG:e,borderRadiusXL:n,borderRadiusXXL:a,borderRadiusOuter:i}};function wr(r){const{motionUnit:e,motionBase:o,borderRadius:t,lineWidth:n,opacity:a,layoutHeaderHeight:i}=r;return{motionDurationFast:`${(o+e).toFixed(1)}s`,motionDurationMid:`${(o+2*e).toFixed(1)}s`,motionDurationSlow:`${(o+3*e).toFixed(1)}s`,lineWidthBold:n+1,...Sr(t),opacityImage:a,opacity1:.8*a,opacity2:.6*a}}const Mr=r=>{const e=nr(r);return{1:e[0],2:e[1],3:e[2],4:e[3],5:e[4],6:e[5],7:e[6],8:e[4],9:e[5],10:e[6]}},Br=(r,e)=>{let o=r||"#fff",t=e||"#000";return o=new L(o).lighten()?o:new L(o).lighten(100).toRgbString(),t=new L(t).isDark()?t:new L(t).darken(100).toRgbString(),{colorBgBase:o,colorTextBase:t,colorFill:pr(t,.15),colorFillSecondary:pr(t,.06),colorFillTertiary:pr(t,.04),colorFillQuaternary:pr(t,.02),colorBgLayout:br(o,4),colorBgContainer:br(o,0),colorBgElevated:br(o,0),colorBgSpotlight:pr(t,.85),colorBorder:br(o,15),colorBorderSecondary:br(o,6),colorText:"#333",colorTextSecondary:"#666",colorTextTertiary:"#999",colorTextQuaternary:"#999"}};const Hr=r=>{const e=function(r){const e=new Array(10).fill(null).map(((e,o)=>{const t=r*2.71828**((o-1)/5),n=o>1?Math.floor(t):Math.ceil(t);return 2*Math.floor(n/2)}));return e[1]=r,e.map((r=>({size:r,lineHeight:(r+8)/r})))}(r),o=e.map((r=>r.size)),t=e.map((r=>r.lineHeight));return{fontSizeSM:o[0],fontSize:o[1],fontSizeLG:o[2],fontSizeXL:o[3],fontSizeHeading1:o[6],fontSizeHeading2:o[5],fontSizeHeading3:o[4],fontSizeHeading4:o[3],fontSizeHeading5:o[2],lineHeight:t[1],lineHeightLG:t[2],lineHeightSM:t[0],lineHeightHeading1:t[6],lineHeightHeading2:t[5],lineHeightHeading3:t[4],lineHeightHeading4:t[3],lineHeightHeading5:t[2]}};function kr(r){const e=Object.keys(ur).map((e=>{const o=nr(r[e]);return new Array(10).fill(1).reduce(((r,t,n)=>(r[`${e}-${n+1}`]=o[n],r[`${e}${n+1}`]=o[n],r)),{})})).reduce(((r,e)=>r={...r,...e}),{});return{...r,...e,...yr(r,{generateColorPalettes:Mr,generateNeutralColorPalettes:Br}),...Hr(r.fontSize),...lr(r),...sr(r),...wr(r)}}const Ar=r=>{const e=nr(r,{theme:"dark"});return{1:e[0],2:e[1],3:e[2],4:e[3],5:e[6],6:e[5],7:e[4],8:e[6],9:e[5],10:e[4]}},zr=(r,e)=>{let o=r||"#000",t=e||"#fff";return o=new L(o).isDark()?o:new L(o).darken(100).toRgbString(),t=new L(t).isLight()?t:new L(t).lighten(100).toRgbString(),{colorBgBase:o,colorTextBase:t,colorText:pr(t,.85),colorTextSecondary:pr(t,.65),colorTextTertiary:pr(t,.35),colorTextQuaternary:pr(t,.35),colorFill:pr(t,.18),colorFillSecondary:pr(t,.12),colorFillTertiary:pr(t,.08),colorFillQuaternary:pr(t,.04),colorBgElevated:xr(o,12),colorBgContainer:xr(o,8),colorBgLayout:xr(o,0),colorBgSpotlight:xr(o,26),colorBorder:xr(o,26),colorBorderSecondary:xr(o,19)}},Fr=(r,e)=>{const o=Object.keys(ur).map((e=>{const o=nr(r[e],{theme:"dark"});return new Array(10).fill(1).reduce(((r,t,n)=>(r[`${e}-${n+1}`]=o[n],r[`${e}${n+1}`]=o[n],r)),{})})).reduce(((r,e)=>r={...r,...e}),{});return{...e??kr(r),...o,...yr(r,{generateColorPalettes:Ar,generateNeutralColorPalettes:zr})}};function Tr(r){const{sizeUnit:e,sizeStep:o}=r,t=o-2;return{sizeXXL:e*(t+10),sizeXL:e*(t+6),sizeLG:e*(t+2),sizeMD:e*(t+2),sizeMS:e*(t+1),size:e*t,sizeSM:e*t,sizeXS:e*(t-1),sizeXXS:e*(t-1)}}const Rr=(r,e)=>{const o=e??kr(r),t=o.fontSizeSM,n=o.controlHeight-4;return{...o,...Tr(e??r),...Hr(t),controlHeight:n,...sr({...o,controlHeight:n})}},Lr=(r,e)=>{const o=r||"#fff",t=e||"#000";return{colorBgBase:o,colorTextBase:t,colorText:pr(t,.9),colorTextSecondary:pr(t,.8),colorTextTertiary:pr(t,.7),colorTextQuaternary:pr(t,.6),colorFill:pr(t,.3),colorFillSecondary:pr(t,.2),colorFillTertiary:pr(t,.1),colorFillQuaternary:pr(t,.06),colorBgLayout:br(o,6),colorBgContainer:br(o,0),colorBgElevated:br(o,0),colorBgSpotlight:pr(t,1),colorBorder:br(o,30),colorBorderSecondary:br(o,12)}};function Cr(r){return r>=0&&r<=255}function Xr(r,e){const{r:o,g:t,b:n,a:a}=new L(r).toRgb();if(a<1)return r;const{r:i,g:c,b:s}=new L(e).toRgb();for(let r=.01;r<=1;r+=.01){const e=Math.round((o-i*(1-r))/r),a=Math.round((t-c*(1-r))/r),l=Math.round((n-s*(1-r))/r);if(Cr(e)&&Cr(a)&&Cr(l))return new L({r:e,g:a,b:l,a:Math.round(100*r)/100}).toRgbString()}return new L({r:o,g:t,b:n,a:1}).toRgbString()}function Dr(r){const{override:e,...o}=r,t={...e};Object.keys(gr).forEach((r=>{delete t[r]}));const n={...o,...t},a=1200,i=1600;if(!1===n.motion){const r="0s";n.motionDurationFast=r,n.motionDurationMid=r,n.motionDurationSlow=r}return{...n,colorFillContent:n.colorFillSecondary,colorFillContentHover:n.colorFill,colorFillAlter:n.colorFillQuaternary,colorBgContainerDisabled:n.colorFillTertiary,colorBorderBg:n.colorBgContainer,colorSplit:Xr(n.colorBorderSecondary,n.colorBgContainer),colorTextPlaceholder:n.colorTextQuaternary,colorTextDisabled:n.colorTextQuaternary,colorTextHeading:n.colorText,colorTextLabel:n.colorTextSecondary,colorTextDescription:n.colorTextTertiary,colorTextLightSolid:n.colorWhite,colorHighlight:n.colorError,colorBgTextHover:n.colorFillSecondary,colorBgTextActive:n.colorFill,colorIcon:n.colorTextTertiary,colorIconHover:n.colorText,colorErrorOutline:Xr(n.colorErrorBg,n.colorBgContainer),colorWarningOutline:Xr(n.colorWarningBg,n.colorBgContainer),fontSizeIcon:n.fontSizeSM,lineWidthFocus:2*n.lineWidth,lineWidth:n.lineWidth,controlOutlineWidth:2*n.lineWidth,controlInteractiveSize:n.controlHeight/2,controlItemBgHover:n.colorFillTertiary,controlItemBgActive:n.colorPrimaryBg,controlItemBgActiveHover:n.colorPrimaryBgHover,controlItemBgActiveDisabled:n.colorFill,controlTmpOutline:n.colorFillQuaternary,controlOutline:Xr(n.colorPrimaryBg,n.colorBgContainer),lineType:n.lineType,borderRadius:n.borderRadius,borderRadiusXS:n.borderRadiusXS,borderRadiusSM:n.borderRadiusSM,borderRadiusLG:n.borderRadiusLG,fontWeightStrong:700,opacityLoading:.65,linkDecoration:"none",linkHoverDecoration:"none",linkFocusDecoration:"none",controlPaddingHorizontal:12,controlPaddingHorizontalSM:8,paddingXXS:n.sizeXXS,paddingXS:n.sizeXS,paddingSM:n.sizeSM,padding:n.size,paddingMD:n.sizeMD,paddingLG:n.sizeLG,paddingXL:n.sizeXL,paddingContentHorizontalLG:n.sizeLG,paddingContentVerticalLG:n.sizeMS,paddingContentHorizontal:n.sizeMS,paddingContentVertical:n.sizeSM,paddingContentHorizontalSM:n.size,paddingContentVerticalSM:n.sizeXS,marginXXS:n.sizeXXS,marginXS:n.sizeXS,marginSM:n.sizeSM,margin:n.size,marginMD:n.sizeMD,marginLG:n.sizeLG,marginXL:n.sizeXL,marginXXL:n.sizeXXL,boxShadow:"\n 0 1px 2px 0 rgba(0, 0, 0, 0.04),\n 0 1px 8px -1px rgba(0, 0, 0, 0.03),\n 0 2px 4px 0 rgba(0, 0, 0, 0.02)\n ",boxShadowSecondary:"\n 0 1px 2px 0 rgba(0, 0, 0, 0.04),\n 0 1px 8px -1px rgba(0, 0, 0, 0.03),\n 0 2px 4px 0 rgba(0, 0, 0, 0.02)\n ",boxShadowTertiary:"\n 0 1px 2px 0 rgba(0, 0, 0, 0.04),\n 0 1px 8px -1px rgba(0, 0, 0, 0.03),\n 0 2px 4px 0 rgba(0, 0, 0, 0.02)\n ",screenXS:480,screenXSMin:480,screenXSMax:575,screenSM:576,screenSMMin:576,screenSMMax:767,screenMD:768,screenMDMin:768,screenMDMax:991,screenLG:992,screenLGMin:992,screenLGMax:1199,screenXL:a,screenXLMin:a,screenXLMax:1599,screenXXL:i,screenXXLMin:i,boxShadowPopoverArrow:"2px 2px 5px rgba(0, 0, 0, 0.05)",boxShadowCard:"0px 0px 10px 0px rgba(0, 0, 0, 0.1)",boxShadowDrawerRight:"\n -6px 0 16px 0 rgba(0, 0, 0, 0.04),\n -3px 0 6px -4px rgba(0, 0, 0, 0.03),\n -9px 0 28px 8px rgba(0, 0, 0, 0.02)\n ",boxShadowDrawerLeft:"\n 6px 0 16px 0 rgba(0, 0, 0, 0.04),\n 3px 0 6px -4px rgba(0, 0, 0, 0.03),\n 9px 0 28px 8px rgba(0, 0, 0, 0.02)\n ",boxShadowDrawerUp:"\n 6px 0 16px 0 rgba(0, 0, 0, 0.04),\n 3px 0 6px -4px rgba(0, 0, 0, 0.03),\n 9px 0 28px 8px rgba(0, 0, 0, 0.02)\n ",boxShadowDrawerDown:"\n 0 -6px 16px 0 rgba(0, 0, 0, 0.04),\n 0 -3px 6px -4px rgba(0, 0, 0, 0.03),\n 0 -9px 28px 8px rgba(0, 0, 0, 0.02)\n ",boxShadowTabsOverflowLeft:"\n 6px 0 16px 0 rgba(0, 0, 0, 0.04),\n 3px 0 6px -4px rgba(0, 0, 0, 0.03),\n 9px 0 28px 8px rgba(0, 0, 0, 0.02)\n ",boxShadowTabsOverflowRight:"\n -6px 0 16px 0 rgba(0, 0, 0, 0.04),\n -3px 0 6px -4px rgba(0, 0, 0, 0.03),\n -9px 0 28px 8px rgba(0, 0, 0, 0.02)\n ",boxShadowTabsOverflowTop:"\n 6px 0 16px 0 rgba(0, 0, 0, 0.04),\n 3px 0 6px -4px rgba(0, 0, 0, 0.03),\n 9px 0 28px 8px rgba(0, 0, 0, 0.02)\n ",boxShadowTabsOverflowBottom:"\n 0 -6px 16px 0 rgba(0, 0, 0, 0.04),\n 0 -3px 6px -4px rgba(0, 0, 0, 0.03),\n 0 -9px 28px 8px rgba(0, 0, 0, 0.02)\n ",...t}}const Er=(r=gr,e="default")=>{let o=t(r,Object.keys(gr));o=n(gr,o);const i=kr(o),c=a(r,Object.keys(gr));let s;switch(e){case"dark":s=Fr(o,i);break;case"compact":s=Rr(o,i);break;case"meeting":s=function(r,e){const o=e??kr(r),t=Object.keys(ur).map((e=>{const o=nr(r[e]);return new Array(10).fill(1).reduce(((r,t,n)=>(r[`${e}-${n+1}`]=o[n],r[`${e}${n+1}`]=o[n],r)),{})})).reduce(((r,e)=>({...r,...e})),{}),{fontSize:n,colorBgBase:a,colorTextBase:i}=o;return{...o,...t,...Lr(a,i),fontSizeSM:n,fontSize:n+2,fontSizeLG:n+3,fontSizeXL:n+4}}(o,i);break;default:s=i}return Dr({...s,override:c})},Ir=["blue","purple","cyan","green","magenta","pink","red","orange","yellow","volcano","geekblue","lime","gold"],Wr=Er();export{g as A,h as B,f as C,p as D,b as E,x as F,m as G,v as H,y as I,S as J,w as K,M as L,Ir as P,L as T,Fr as a,Rr as b,fr as c,kr as d,pr as e,Dr as f,Er as g,br as h,xr as i,mr as j,C as k,dr as l,D as m,B as n,E as o,I as p,W as q,X as r,gr as s,Wr as t,P as u,H as v,T as w,R as x,O as y,j as z};
2
+ //# sourceMappingURL=index.js.map