@flow97/antd-schema 0.0.1 → 0.0.3

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # antd-schema
2
2
 
3
+ ## 0.0.3
4
+
5
+ ### Patch Changes
6
+
7
+ - df5b54f: refactor: rename ToolkitsProvider to ToolkitProvider and update related imports
8
+ - Updated dependencies [df5b54f]
9
+ - @flow97/react-toolkit@0.0.3
10
+
11
+ ## 0.0.2
12
+
13
+ ### Patch Changes
14
+
15
+ - Updated dependencies [1faf74b]
16
+ - @flow97/react-toolkit@0.0.2
17
+
3
18
  ## 0.1.0
4
19
 
5
20
  ### Minor Changes
package/lib/index.js CHANGED
@@ -1 +1 @@
1
- import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {InfiniteList,QueryList,useToolkitsStore,APP_ID_HEADER,AuthButton,useModal}from'@flow97/react-toolkit';import {Card,Descriptions,Flex,Form,Col,Row,Typography,InputNumber,Input,Select,Table,DatePicker,App,Skeleton}from'antd';import {saveAs}from'file-saver';import {search}from'jmespath';import {useState,useEffect,useRef}from'react';import {createPortal}from'react-dom';import gt from'ky';import {useNavigate}from'react-router';import {z,string}from'zod';import {create}from'zustand';import Ee,{extend}from'dayjs';import Zt from'dayjs/plugin/utc';import {isPlainObject,merge}from'lodash-es';import Rr from'query-string';import {withErrorBoundary}from'react-error-boundary';var ut=Object.defineProperty;var yt=(e,t,r)=>t in e?ut(e,t,{enumerable:true,configurable:true,writable:true,value:r}):e[t]=r;var Fe=(e,t,r)=>yt(e,typeof t!="symbol"?t+"":t,r);var Le=new Map;function P(e,t){Le.set(e,t);}function re(e){return Le.get(e)}function x(e,t){return e?.map((r,o)=>{let{type:n}=r,a=re(n);return a?jsx(a,{data:r,source:t},`${n}${o}`):null})}var Ae=class extends Error{constructor(r,o,n){super(r);Fe(this,"response");Fe(this,"data");this.name="HttpResponseError",this.response=o,this.data=n;}},Me={code:[0,1,200],status:[0,1,200],errno:[0,1,200]},Rt=["msg","message","error"],fe={OK:200,UNAUTHORIZED:401,FORBIDDEN:403,UNREGISTERED:412},wt=3e4;function Tt(e,t){if(t<fe.OK||t>=300)return false;if(!e||typeof e!="object")return true;let r=e;return Object.keys(Me).some(n=>r[n]!==void 0&&r[n]!==null)?Object.entries(Me).every(([n,a])=>{let m=r[n];return m==null?true:typeof m=="number"&&a.includes(m)}):true}function Ve(e){if(!e||typeof e!="object")return "Unknown error";for(let t of Rt){let r=e[t];if(r)return String(r)}return "Unknown error"}async function kt(e,t){switch(t){case "text":return e.text();case "arrayBuffer":return e.arrayBuffer();case "formData":return e.formData();case "json":return e.json();default:return e}}function M(e){let{notification:t}=App.useApp(),r=useNavigate(),{token:{token:o,clearToken:n},context:{apiBaseUrl:a,loginPath:m},game:{appId:p}}=useToolkitsStore(),u=(s,c)=>{o&&s.headers.set("Authorization",`Bearer ${o}`);let S=c.context?.isGlobalMode??!p;s.headers.has(APP_ID_HEADER)||s.headers.set(APP_ID_HEADER,S?"global":encodeURIComponent(String(p)));},l=async s=>{if(!s.response)return t.error({message:"Network Error",description:s.message||"Network request failed"}),s;let{status:c}=s.response,i;try{let h=s.response.headers.get("content-type")||"";(h.includes("application/json")||h.startsWith("text/"))&&(i=await s.response.clone().json());}catch{}let S=Ve(i);switch(c){case fe.UNAUTHORIZED:n(),m&&r(m,{replace:true});break;case fe.UNREGISTERED:n(),m&&r(`${m}?unregistered=true`,{replace:true});break;case fe.FORBIDDEN:t.error({message:"\u8BBF\u95EE\u88AB\u7981\u6B62",description:"\u60A8\u6CA1\u6709\u6743\u9650\u8BBF\u95EE\u6B64\u8D44\u6E90\u3002"});break;default:t.error({message:"Request failed",description:S});}return s},R=async(s,c,i)=>{if(!(i.headers.get("content-type")||"").includes("application/json"))return i;let h;try{h=await i.clone().json();}catch{return i}if(Tt(h,i.status))return new Response(JSON.stringify(h),{status:i.status,statusText:i.statusText,headers:i.headers});let D=Ve(h);throw t.error({message:"Request failed",description:D}),new Ae(D,i,h)},f=gt.create({prefixUrl:a,retry:0,timeout:wt,...e,hooks:{beforeRequest:[u],beforeError:[l],afterResponse:[R]}}),E=async(s,c,i,S)=>{let{responseType:h="json",isGlobalMode:D,context:_,...w}=S||{},g={..._,responseType:h,...D!==void 0&&{isGlobalMode:D}},I={...w,context:g};i!==void 0&&(i instanceof FormData||i instanceof URLSearchParams||i instanceof Blob||typeof i=="string"||i instanceof ArrayBuffer||ArrayBuffer.isView(i)?I.body=i:I.json=i);let te=await f(c,{method:s,...I});return kt(te,h)};return {get:(s,c)=>E("GET",s,void 0,c),post:(s,c,i)=>E("POST",s,c,i),put:(s,c,i)=>E("PUT",s,c,i),delete:(s,c)=>E("DELETE",s,void 0,c),patch:(s,c,i)=>E("PATCH",s,c,i),request:s=>{let{url:c,method:i="GET",...S}=s;return E(i,c,void 0,S)},instance:f}}var d=z.object({type:z.string().describe("\u7EC4\u4EF6\u7C7B\u578B"),storeId:z.string().optional().describe("\u5B58\u50A8 ID\u3002\u7528\u4E8E\u5B58\u50A8\u8868\u5355\u7F16\u8F91\u3001Service \u7EC4\u4EF6(\u76EE\u524D\u672A\u652F\u6301) \u53D1\u8D77 HTTP \u8BF7\u6C42\u4EA7\u751F\u7684\u503C\u3002\u7EC4\u4EF6\u95F4\u4EA4\u4E92\u65F6\u7528\u5230\uFF0C\u6570\u636E\u4F1A\u4EE5\u6B64 ID \u4F5C\u4E3A key \u5B58\u50A8\u5230 Map \u4E2D\u3002"),storeIdRef:z.string().optional().describe("\u5173\u8054\u7EC4\u4EF6\u7684 ID\uFF0C\u4F1A\u6839\u636E\u6B64 ID \u53BB store \u4E2D\u67E5\u627E\u6570\u636E\uFF0C\u5173\u8054\u7684\u6570\u636E\u4F1A\u53EF\u4EE5\u88AB\u7EC4\u4EF6\u8BBF\u95EE\u3002")});var K=d.extend({type:z.literal("button"),code:z.string().optional().describe("\u6743\u9650\u7F16\u53F7"),buttonType:z.enum(["primary","default","dashed","link","text"]).optional().describe("\u6309\u94AE\u7C7B\u578B\uFF0C\u5F71\u54CD\u6309\u94AE\u7684\u663E\u793A\u6837\u5F0F"),action:z.enum(["modal","download"]).optional(),text:z.string().optional(),data:z.any().optional().describe("\u81EA\u5B9A\u4E49\u6570\u636E"),method:z.enum(["GET","POST"]).optional().describe("\u8BF7\u6C42\u65B9\u6CD5\uFF0C\u9ED8\u8BA4 GET"),url:string().optional().describe("\u8BF7\u6C42\u5730\u5740"),params:z.record(z.string(),z.any()).optional().describe("\u8BF7\u6C42\u65F6\u643A\u5E26\u7684\u8BF7\u6C42\u53C2\u6570"),body:z.record(z.string(),z.any()).optional().describe("\u8BF7\u6C42\u643A\u5E26\u7684\u8BF7\u6C42\u4F53"),showLoading:z.boolean().default(true).describe("\u662F\u5426\u663E\u793A\u52A0\u8F7D\u72B6\u6001"),modal:z.object({title:z.string(),body:z.any().array().optional(),data:z.record(z.string(),z.any()).optional(),width:z.number().optional()}).optional()}).refine(e=>!(e.action==="download"&&!e.url),{message:"When action is 'download', 'url' is required.",path:["url"]}).refine(e=>!(e.action==="modal"&&!e.modal),{message:"When action is 'modal', 'modal' field is required.",path:["modal"]});var Dt=d.extend({type:z.literal("card"),title:z.string().optional(),extra:z.any().array().optional()}),It=z.lazy(()=>z.any().array()),ue=Dt.extend({body:It.optional()});var q=d.extend({label:z.string(),name:z.string(),preserve:z.boolean().optional(),span:z.number().optional().describe("\u6805\u683C\u5360\u4F4D\u683C\u6570"),value:z.any().optional().describe("\u5B57\u6BB5\u9ED8\u8BA4\u503C\uFF0C\u4F1A\u4F5C\u4E3A Form.Item \u7684 initialValue"),rules:z.object({type:z.enum(["string","number","boolean","integer"]).optional().describe("\u5B57\u6BB5\u6570\u636E\u7C7B\u578B"),required:z.boolean().optional().describe("\u662F\u5426\u4E3A\u5FC5\u9009\u5B57\u6BB5"),message:z.string().optional().describe("\u9519\u8BEF\u4FE1\u606F\uFF0C\u4E0D\u8BBE\u7F6E\u65F6\u4F1A\u901A\u8FC7\u6A21\u677F\u81EA\u52A8\u751F\u6210"),min:z.number().optional().describe("\u5FC5\u987B\u8BBE\u7F6E type\uFF1Astring \u7C7B\u578B\u4E3A\u5B57\u7B26\u4E32\u6700\u5C0F\u957F\u5EA6\uFF1Bnumber \u7C7B\u578B\u65F6\u4E3A\u6700\u5C0F\u503C\uFF1Barray \u7C7B\u578B\u65F6\u4E3A\u6570\u7EC4\u6700\u5C0F\u957F\u5EA6"),max:z.number().optional().describe("\u5FC5\u987B\u8BBE\u7F6E type\uFF1Astring \u7C7B\u578B\u4E3A\u5B57\u7B26\u4E32\u6700\u5927\u957F\u5EA6\uFF1Bnumber \u7C7B\u578B\u65F6\u4E3A\u6700\u5927\u503C\uFF1Barray \u7C7B\u578B\u65F6\u4E3A\u6570\u7EC4\u6700\u5927\u957F\u5EA6")}).array().optional().describe("\u8868\u5355\u6821\u9A8C\u89C4\u5219")});var ye=q.extend({type:z.literal("date-picker"),showTime:z.boolean().optional().describe("\u662F\u5426\u663E\u793A\u65F6\u95F4\u9009\u62E9\u5668"),showNow:z.boolean().optional().describe("\u663E\u793A\u5F53\u524D\u65E5\u671F\u65F6\u95F4\u7684\u5FEB\u6377\u9009\u62E9"),showWeek:z.boolean().optional().describe("\u5C55\u793A\u5F53\u524D\u5468"),utc:z.boolean().optional().describe("\u662F\u5426\u4F7F\u7528UTC\u65F6\u95F4")});var he=q.extend({type:z.literal("date-range"),allowEmpty:z.tuple([z.boolean(),z.boolean()]).optional().describe("\u662F\u5426\u5141\u8BB8\u4E3A\u7A7A"),showTime:z.boolean().optional().describe("\u662F\u5426\u663E\u793A\u65F6\u95F4\u9009\u62E9\u5668"),utc:z.boolean().optional().describe("\u662F\u5426\u4F7F\u7528UTC\u65F6\u95F4")}).describe("\u65E5\u671F\u8303\u56F4\u9009\u62E9\u5668\u3002\u8BE5\u7EC4\u4EF6\u7684\u503C\u4E3A\u6570\u7EC4\u7C7B\u578B\uFF0C\u9700\u8981\u81EA\u5DF1\u505A\u6620\u5C04\u3002");var ie=d.extend({type:z.literal("descriptions"),title:z.string().optional().describe("\u6807\u9898"),dataIndex:z.string().optional().describe("JMESPath"),dataSource:z.any().optional().describe("\u6570\u636E\u6E90"),column:z.number().optional().describe("\u5217\u6570")}).describe("\u63CF\u8FF0\u5217\u8868\u7EC4\u4EF6\uFF0C\u7528\u4E8E\u5C55\u793A\u4E00\u7EC4\u63CF\u8FF0\u4FE1\u606F");var be=d.extend({type:z.literal("div"),body:z.any().array().optional().describe("\u5B50\u5143\u7D20"),style:z.record(z.string(),z.any()).optional().describe("\u6837\u5F0F")});var Se=d.extend({type:z.literal("flex"),vertical:z.boolean().optional().describe("flex \u4E3B\u8F74\u7684\u65B9\u5411\u662F\u5426\u5782\u76F4\uFF0C\u4F7F\u7528 flex-direction: column"),wrap:z.boolean().optional().describe("\u8BBE\u7F6E\u5143\u7D20\u5355\u884C\u663E\u793A\u8FD8\u662F\u591A\u884C\u663E\u793A"),justify:z.enum(["flex-start","center","flex-end","space-between","space-around","space-evenly"]).optional().describe("\u8BBE\u7F6E\u5143\u7D20\u5728\u4E3B\u8F74\u65B9\u5411\u4E0A\u7684\u5BF9\u9F50\u65B9\u5F0F"),align:z.enum(["flex-start","center","flex-end","baseline","stretch"]).optional().describe("\u8BBE\u7F6E\u5143\u7D20\u5728\u4EA4\u53C9\u8F74\u65B9\u5411\u4E0A\u7684\u5BF9\u9F50\u65B9\u5F0F"),gap:z.union([z.number(),z.string()]).optional().describe("\u8BBE\u7F6E\u7F51\u683C\u4E4B\u95F4\u7684\u95F4\u9699"),body:z.any().array().optional().describe("\u5B50\u5143\u7D20"),style:z.record(z.string(),z.any()).optional().describe("\u6837\u5F0F")});var O=d.extend({type:z.literal("form"),name:z.string().optional(),preserve:z.boolean().optional(),fields:z.any().array().optional().describe("\u8868\u5355\u9879\u914D\u7F6E"),initialValues:z.record(z.string(),z.any()).optional().describe("\u8BBE\u7F6E\u8868\u5355\u7684\u521D\u59CB\u503C"),layout:z.union([z.literal("horizontal"),z.literal("inline"),z.literal("vertical")]).default("horizontal").describe("\u8868\u5355\u5E03\u5C40"),labelWidth:z.union([z.number(),z.string()]).optional().describe("\u6807\u7B7E\u5BBD\u5EA6\uFF0C\u5F53\u4E3A\u6570\u5B57\u65F6\u8868\u793A\u5728 24 \u5217\u7684\u6805\u683C\u4E2D\u5360\u636E\u591A\u5C11\u5217\uFF0C\u5F53\u4E3A string \u65F6\u4F7F\u7528 flex \u5E03\u5C40"),labelAlign:z.enum(["left","right"]).optional().describe("\u6807\u7B7E\u5BF9\u9F50\u65B9\u5F0F"),clearOnDestroy:z.boolean().optional().describe("\u5F53\u8868\u5355\u88AB\u5378\u8F7D\u65F6\u6E05\u7A7A\u8868\u5355\u503C"),gutter:z.union([z.number().describe("\u6A2A\u5411\u95F4\u9694"),z.tuple([z.number().describe("\u6A2A\u5411\u95F4\u9694"),z.number().describe("\u7EB5\u5411\u95F4\u9694")])]).default(10).describe("Grid \u6805\u683C\u95F4\u9694")});var L=d.extend({type:z.literal("table"),rowKey:z.string().optional().describe("\u8868\u683C\u884C key \u7684\u53D6\u503C\uFF0C\u552F\u4E00\u6807\u8BC6"),columns:z.object({title:z.string(),dataIndex:z.string().optional().describe("\u6570\u636E\u6E90\u7684\u5B57\u6BB5\u540D\uFF0C\u652F\u6301\u70B9\u8BED\u6CD5"),width:z.union([z.number(),z.string()]).optional(),align:z.enum(["left","right","center"]).optional(),tpl:z.string().optional().describe("\u6A21\u677F\u5B57\u7B26\u4E32\u3002\u652F\u6301\u6A21\u677F\u5B57\u7B26\u4E32\uFF0C\u53EF\u4EE5\u5728\u6B64\u5904\u505A\u6570\u636E\u6620\u5C04\u3002(\u6682\u65F6\u4E0D\u652F\u6301)")}).array().optional().describe("\u8868\u683C\u5217\u914D\u7F6E"),footer:z.any().array().optional().describe("\u8868\u683C\u5E95\u90E8"),api:z.string().optional().describe("\u6570\u636E\u67E5\u8BE2\u5730\u5740\uFF0C\u53EA\u652F\u6301 GET \u8BF7\u6C42\uFF0C\u4F18\u5148\u7EA7\u9AD8\u4E8E data"),data:z.union([z.any().array(),z.string()]).optional().describe("\u8868\u683C\u6570\u636E\u6E90\uFF0C\u53EF\u4EE5\u662F\u6570\u7EC4\u6216\u8005\u53D8\u91CF\u3002"),bordered:z.boolean().optional(),size:z.enum(["small","middle","large"]).default("middle"),tableLayout:z.enum(["fixed","auto"]).optional().describe("\u8868\u683C\u5143\u7D20\u7684 table-layout \u5C5E\u6027\uFF0C\u8BBE\u4E3A fixed \u8868\u793A\u5185\u5BB9\u4E0D\u4F1A\u5F71\u54CD\u5217\u7684\u5E03\u5C40"),pagination:z.union([z.literal(false),z.object({current:z.number().optional(),pageSize:z.number().optional(),total:z.number().optional()})]).default(false).describe("\u5206\u9875\u914D\u7F6E")}).describe("\u8868\u683C\u7EC4\u4EF6\uFF0C\u5982\u679C\u9700\u8981\u53D1\u8D77\u8BF7\u6C42\uFF0C\u5EFA\u8BAE\u4F7F\u7528 query-list\u3002");var ge=d.extend({type:z.literal("infinite-list"),url:z.string(),params:z.record(z.string(),z.any()).optional().describe("\u67E5\u8BE2\u53C2\u6570\u3002\u652F\u6301\u6A21\u677F\u5B57\u7B26\u4E32\uFF0C\u53EF\u4EE5\u5728\u6B64\u5904\u505A\u6570\u636E\u6620\u5C04\u3002"),code:z.string().optional().describe("\u6743\u9650\u7F16\u53F7"),extra:z.any().array().optional().describe("\u8868\u683C\u989D\u5916\u914D\u7F6E"),actions:K.array().optional().describe("\u8868\u683C\u64CD\u4F5C\u3002\u4F1A\u81EA\u52A8\u628A\u8BE5\u884C\u7684\u8868\u683C\u6570\u636E\u6CBF\u7740\u7EC4\u4EF6\u6811\u9010\u7EA7\u5F80\u4E0B\u4F20\u9012\u3002"),formLayout:O.shape.layout,gutter:O.shape.gutter,fields:O.shape.fields,initialValues:O.shape.initialValues,rowKey:L.shape.rowKey,tableLayout:L.shape.tableLayout,footer:L.shape.footer,columns:L.shape.columns});var xe=q.extend({type:z.literal("input-number"),clearable:z.boolean().optional(),min:z.number().optional(),max:z.number().optional(),step:z.number().optional(),width:z.string().default("100px").describe("\u5BBD\u5EA6"),controls:z.boolean().default(false).describe("\u662F\u5426\u4F7F\u7528\u63A7\u5236\u6309\u94AE")});var Re=q.extend({type:z.literal("input-text"),clearable:z.boolean().optional()});var we=d.extend({type:z.literal("link"),text:z.string().optional(),href:z.string(),target:z.enum(["_blank","_self","_parent","_top"]).default("_blank"),params:z.record(z.string(),z.any()).optional().describe("\u8DF3\u8F6C\u65F6\u643A\u5E26\u7684\u67E5\u8BE2\u53C2\u6570")});var Te=d.extend({type:z.literal("query-list"),identifier:z.string().optional().describe("\u7EC4\u4EF6\u552F\u4E00\u6807\u8BC6\uFF0C\u672A\u63D0\u4F9B\u65F6\u81EA\u52A8\u751F\u6210"),url:z.string(),code:z.string().optional().describe("\u6743\u9650\u7F16\u53F7"),method:z.enum(["GET","POST"]).default("GET"),onePage:z.boolean().optional(),headers:z.record(z.string(),z.any()).optional(),body:z.record(z.string(),z.any()).optional().describe("\u8BF7\u6C42\u4F53\u3002\u652F\u6301\u6A21\u677F\u5B57\u7B26\u4E32\uFF0C\u53EF\u4EE5\u5728\u6B64\u5904\u505A\u6570\u636E\u6620\u5C04\u3002"),params:z.record(z.string(),z.any()).optional().describe("\u67E5\u8BE2\u53C2\u6570\u3002\u652F\u6301\u6A21\u677F\u5B57\u7B26\u4E32\uFF0C\u53EF\u4EE5\u5728\u6B64\u5904\u505A\u6570\u636E\u6620\u5C04\u3002"),extra:z.any().array().optional().describe("\u8868\u683C\u989D\u5916\u914D\u7F6E"),actions:K.array().optional().describe("\u8868\u683C\u64CD\u4F5C\u3002\u4F1A\u81EA\u52A8\u628A\u8BE5\u884C\u7684\u8868\u683C\u6570\u636E\u6CBF\u7740\u7EC4\u4EF6\u6811\u9010\u7EA7\u5F80\u4E0B\u4F20\u9012\u3002"),buttonsAlign:z.enum(["left","right","bottom"]).optional(),formLayout:O.shape.layout,gutter:O.shape.gutter,fields:O.shape.fields,initialValues:O.shape.initialValues,rowKey:L.shape.rowKey,tableLayout:L.shape.tableLayout,footer:L.shape.footer,columns:L.shape.columns});var ke=q.extend({type:z.literal("select"),allowClear:z.boolean().optional().describe("\u662F\u5426\u663E\u793A\u6E05\u9664\u6309\u94AE"),virtual:z.boolean().optional().describe("\u662F\u5426\u5F00\u542F\u865A\u62DF\u6EDA\u52A8\uFF0C\u6570\u636E\u91CF\u5927\u65F6\u5F00\u542F\u53EF\u4EE5\u63D0\u9AD8\u6027\u80FD"),showSearch:z.boolean().optional().describe("\u662F\u5426\u53EF\u641C\u7D22"),width:z.string().default("100px").describe("\u5BBD\u5EA6"),options:z.array(z.object({label:z.string(),value:z.string()})).optional().describe("\u9009\u9879\u5217\u8868"),optionFilterProp:z.string().default("label").describe("\u641C\u7D22\u8FC7\u6EE4\u5B57\u6BB5"),source:z.string().optional().describe("\u6570\u636E\u6E90")});var Pe=d.extend({type:z.literal("service"),method:z.enum(["GET","POST"]).optional(),url:z.string().optional(),params:z.record(z.string(),z.any()).optional(),body:z.any().optional()}).describe("\u6570\u636E\u8BF7\u6C42\u7EC4\u4EF6\uFF0C\u7528\u4E8E\u8C03\u7528\u5916\u90E8\u670D\u52A1\uFF0C\u652F\u6301 GET \u548C POST \u8BF7\u6C42\uFF0C\u8FD4\u56DE\u7684\u6570\u636E\u4F1A\u5B58\u50A8\u5230 store \u4E2D");var De=d.extend({type:z.literal("span"),text:z.string().describe("\u6587\u5B57\u8282\u70B9")}).describe("\u63D2\u5165 span \u6807\u7B7E\uFF0C\u7528\u4E8E\u8F93\u51FA\u6587\u5B57\u6216\u5B57\u7B26\u4E32\u6A21\u677F");var Ie=d.extend({type:z.literal("viewport"),body:z.any().array().optional().describe("\u89C6\u7A97\u5185\u5BB9"),data:z.record(z.string(),z.any()).optional().describe("\u89C6\u7A97\u6570\u636E")});z.union([K,ue,ye,he,ie,be,Se,O,ge,xe,Re,we,Te,ke,Pe,De,L,Ie,ie]);var V=create()(()=>({dataMap:new Map})),W=(e,t)=>{V.setState(r=>({dataMap:new Map(r.dataMap).set(e,t)}));},pe=e=>{if(e)return V.getState().dataMap.get(e)};var Oe=/^\${(.+)}$/;function A(e,t){function r(o){if(typeof o=="string"){let n=o.match(Oe);return n?search(e,n[1]):o}else {if(Array.isArray(o))return o.map(r);if(typeof o=="object"&&o!==null){let n={};return Object.keys(o).forEach(a=>{n[a]=r(o[a]);}),n}}return o}return r(t)}var ce=e=>e.clone().add(e.utcOffset(),"minutes"),le=e=>e.clone().add(-e.utcOffset(),"minutes");function y(e){return function(t){let r=o=>{let{data:n,...a}=o,[m,p]=useState(null);return useEffect(()=>{let u=e.parse(n);p(u);},[n]),m?jsx(t,{...a,parsedData:m}):null};return r.displayName=`withParsedData(${t.displayName||t.name||"Component"})`,r}}var Mt=({data:e,source:t})=>{let{text:r,buttonType:o,modal:n,storeIdRef:a,storeId:m,method:p,url:u,params:l,body:R,...f}=e,[E,s]=useState(null),c=M(),{show:i,modal:S}=useModal({title:n?.title,content:E,width:n?.width,destroyOnClose:true,afterOpen:async()=>{s(jsx(Skeleton,{}));let h;if(u){let D=await c.request({method:p,url:u,searchParams:l&&A(pe(a),l),json:R&&A(pe(a),R)});m&&W(m,D.data.data),h=x(n?.body,D.data.data||void 0);}else h=x(n?.body,t);s(h);}});return jsxs(Fragment,{children:[jsx(AuthButton,{...f,type:o,onClick:i,children:r}),createPortal(S,document.body)]})},Vt=({data:e})=>{let{text:t,buttonType:r,url:o,method:n,params:a,body:m,storeIdRef:p,action:u,...l}=e,{dataMap:R}=V(),f=M();return jsx(AuthButton,{...l,type:r,onClick:async()=>{let s=p?R.get(p):null,c=o.replace(/\$\{([^}]+)\}/g,(g,I)=>search(s,I)??""),i={method:n,searchParams:a,json:m},S=await f.instance(c,i),h=S.headers.get("content-disposition"),D="unknown";D=h?.match(/filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/)?.[1]||D;let w=await S.blob();saveAs(w,D);},children:t})},Ke=y(K)(({parsedData:e,source:t})=>{let{action:r,code:o,text:n,buttonType:a,params:m,body:p,storeIdRef:u,showLoading:l}=e,{dataMap:R}=V(),f=u?R.get(u):null,E=m&&A(f,m),s=p&&A(f,p),c={...e,params:E,body:s};return r==="modal"?jsx(Mt,{data:c,source:t}):r==="download"?jsx(Vt,{data:c}):jsx(AuthButton,{code:o,type:a,showLoading:l,children:n})});var Ge=y(ue)(({parsedData:e,source:t})=>{let{title:r,body:o}=e,n=x(o,t);return jsx(Card,{title:r,children:n})});var Jt=e=>{let{value:t,onChange:r,utc:o,...n}=e,a=typeof t=="number"?o?le(Ee(t*1e3)):Ee(t*1e3):null;return jsx(DatePicker,{...n,value:a,onChange:p=>{r?.(o?ce(p).unix():p.unix());}})},Be=Jt;extend(Zt);var Xt=e=>{let{value:t,onChange:r,utc:o,...n}=e,a=[t?.[0]?o?le(Ee(t[0]*1e3)):Ee(t[0]*1e3):null,t?.[1]?o?le(Ee(t[1]*1e3)):Ee(t[1]*1e3):null],m=p=>{r?.([p?.[0]?o?ce(p[0]).unix():p[0].unix():null,p?.[1]?o?ce(p[1]).unix():p[1].unix():null]);};return jsx(DatePicker.RangePicker,{...n,value:a,onChange:m})},Ue=Xt;function N(e){return function(t){return y(e)(({parsedData:r,...o})=>{let{label:n,name:a,preserve:m,rules:p,value:u,...l}=r;return jsx(Form.Item,{label:n,name:a,rules:p,preserve:m,initialValue:u,...o,children:t(l)})})}}var Je=N(ye)(e=>jsx(Be,{...e}));var $e=N(he)(e=>jsx(Ue,{...e}));var Qe=y(ie)(({parsedData:e})=>{let{title:t,dataSource:r,dataIndex:o,storeIdRef:n,...a}=e,{dataMap:m}=V(),[p,u]=useState([]);return useEffect(()=>{let l;typeof r=="object"?l=r:n&&(l=m.get(n)),l=o?search(l,o):l;let R=l?.map(f=>({key:f.label,label:f.label,children:f.value}));u(R);},[m]),jsx(Descriptions,{...a,title:t,items:p})});var We=y(be)(({parsedData:e,source:t})=>{let{body:r,style:o}=e,n=x(r,t);return jsx("div",{style:o,children:n})});var Ze=y(Se)(({parsedData:e,source:t})=>{let{body:r,style:o,...n}=e,a=x(r,t);return jsx(Flex,{...n,style:o,children:a})});var X=y(O)(({parsedData:e,form:t,externalStoreId:r})=>{let[o]=Form.useForm(),n=t||o,{storeId:a,fields:m,labelWidth:p,gutter:u,...l}=e,R=a||r,f=m?.map((c,i)=>{let{type:S,span:h}=c,D=re(S);if(D){let _=`${S}${i}`;return jsx(Col,{span:h,children:jsx(D,{data:c})},_)}return null});return jsx(Form,{...l,form:n,labelCol:typeof p=="number"?{span:p}:{flex:p},onValuesChange:(c,i)=>{R&&W(R,i);},children:jsx(Row,{gutter:u,children:f})})});var tt=y(ge)(({parsedData:e})=>{let{storeId:t,columns:r,url:o,footer:n,actions:a,fields:m,gutter:p,initialValues:u,formLayout:l,params:R,extra:f,...E}=e,s=useRef(null),c=`infinite-list-${t||"default"}-${Date.now()}`,i=r?[...r]:[];i.forEach(w=>{w.render=g=>{if(isPlainObject(g))return jsx(Typography.Paragraph,{style:{maxHeight:200,overflow:"auto"},children:jsx("pre",{children:JSON.stringify(g,null,2)})});if(typeof g=="string")try{let I=JSON.parse(g);return isPlainObject(I)?jsx(Typography.Paragraph,{style:{maxHeight:200,overflow:"auto"},children:jsx("pre",{children:JSON.stringify(I,null,2)})}):g}catch{return g}else return g};}),a&&i.push({title:"\u64CD\u4F5C",align:"center",render:w=>x(a,w)});let S=w=>{let g=O.parse({type:"form",fields:m,initialValues:u,layout:l,gutter:p});return jsx(X,{data:g,form:w,externalStoreId:t})},h=n&&(()=>{let w=s.current?.data?.[s.current.data.length-1]?.data;return x(n,w)}),D={items:(w,g)=>w?.reduce((I,te)=>I.concat(te?.data?.rows??[]),[])??[],hasMore:w=>!!w?.data?.hasMore,nextPageParam:(w,g,I)=>{if(w?.data?.hasMore)return {rowKey:w?.data?.rowKey,page:(I?.page||0)+1}}},_=x(f);return jsx(InfiniteList,{...E,ref:s,identifier:c,columns:i,footer:h,dataAdapter:D,renderForm:S,tableExtra:_,request:{url:o,method:"GET",searchParams:(w,g)=>{let{filters:I}=w;return I?R?merge({rowKey:g?.rowKey,page:g?.page||0},A(I,R)):{...I,rowKey:g?.rowKey,page:g?.page||0}:{rowKey:g?.rowKey,page:g?.page||0}}}})});var rt=N(xe)(e=>{let{type:t,width:r,...o}=e;return jsx(InputNumber,{...o,style:{width:r}})});var ot=N(Re)(e=>jsx(Input,{...e}));var nt=y(we)(({parsedData:e})=>{let{type:t,href:r,params:o,text:n,...a}=e,m=Rr.stringifyUrl({url:r,query:o});return jsx("a",{href:m,...a,children:n})});var mt=y(Te)(({parsedData:e})=>{let{storeId:t,fields:r,initialValues:o,formLayout:n,columns:a,params:m,body:p,footer:u,extra:l,gutter:R,actions:f,identifier:E,url:s,method:c="GET",...i}=e,S=useRef(null),h=a?[...a]:[];h.forEach(C=>{C.render=F=>{if(isPlainObject(F))return jsx(Typography.Paragraph,{style:{maxHeight:200,overflow:"auto"},children:jsx("pre",{children:JSON.stringify(F,null,2)})});if(typeof F=="string")try{let j=JSON.parse(F);return isPlainObject(j)?jsx(Typography.Paragraph,{style:{maxHeight:200,overflow:"auto"},children:jsx("pre",{children:JSON.stringify(j,null,2)})}):F}catch{return F}else return F};}),f&&h.push({title:"\u64CD\u4F5C",align:"center",render:C=>x(f,C)});let D=C=>{let F=O.parse({type:"form",fields:r,initialValues:o,layout:n,gutter:R});return jsx(X,{data:F,form:C,externalStoreId:t})},_=u&&(()=>x(u,S.current?.data)),w=C=>C?.data?{items:C.data.rows,total:C.data.total}:{items:C?.rows,total:C?.total},g=({page:C,size:F,filters:j})=>m?merge({page:C,size:F},A(j,m)):{...j,page:C,size:F},I=({page:C,size:F,filters:j})=>p?merge({page:C,size:F},A(j,p)):{...j,page:C,size:F},te=x(l);return jsx(QueryList,{identifier:E,...i,ref:S,columns:h,renderForm:D,footer:_,dataAdapter:w,request:{url:s,method:c,searchParams:g,body:I},tableExtra:te})});var pt=N(ke)(e=>{let{type:t,options:r,source:o,width:n,...a}=e,[m,p]=useState(),u=M();return useEffect(()=>{o?u.get(o).then(l=>{p(l?.options);}).catch(()=>{p([]);}):r&&p(r);},[o,r]),jsx(Select,{...a,options:m,style:{width:n}})});var ct=y(Pe)(({parsedData:e})=>{let{storeId:t,params:r,url:o,body:n,storeIdRef:a,method:m}=e,p=M();return useEffect(()=>{let u=pe(a),l=r&&A(u,r),R=r&&A(u,n);o&&p.request({method:m,url:o,searchParams:l,json:R}).then(f=>{t&&W(t,f.data.data);}).catch(f=>{console.error(f);});},[]),null});var lt=y(De)(({parsedData:e,source:t})=>{let{text:r}=e,o=r.replace(/\$\{(\w+)\}/g,(n,a)=>search(t,a)??"");return jsx("span",{children:o})});var dt=y(L)(({parsedData:e,source:t})=>{let{columns:r,footer:o,rowKey:n,data:a,api:m,storeIdRef:p,...u}=e,{dataMap:l}=V(),R=M(),f=[];if(m){let s=null;p&&(s=l.get(p));let c=m.replace(/\$\{([^}]+)\}/g,(i,S)=>search(s,S)??"");R.get(c).then(i=>{f=Array.isArray(i.data)?i.data:[];});}else if(Array.isArray(a))f=a;else {let s=a?.match(Oe);s&&(f=search(t,s[1])??[]);}return jsx(Table,{...u,rowKey:n,columns:r,footer:o&&(()=>x(o)),dataSource:f})});var ve=y(Ie)(({parsedData:e})=>{let{body:t}=e,r=x(t);return jsx("div",{children:r})});function Br({error:e}){return jsx("pre",{children:JSON.stringify(e,null,2)})}var Ur=e=>{let{schema:t}=e;return t?jsx("div",{className:"antd-schema",children:jsx(ve,{data:t})}):null},qr=withErrorBoundary(Ur,{fallbackRender:Br}),Nr=qr;P("button",Ke);P("card",Ge);P("date-picker",Je);P("date-range",$e);P("descriptions",Qe);P("div",We);P("flex",Ze);P("form",X);P("infinite-list",tt);P("input-number",rt);P("input-text",ot);P("link",nt);P("query-list",mt);P("select",pt);P("service",ct);P("span",lt);P("table",dt);P("viewport",ve);export{Ke as ButtonRenderer,Ge as CardRenderer,Je as DatePickerRenderer,$e as DateRangeRenderer,Qe as DescriptionsRenderer,We as DivRenderer,Ze as FlexRenderer,X as FormRenderer,tt as InfiniteListRenderer,rt as InputNumberRenderer,ot as InputTextRenderer,nt as LinkRenderer,mt as QueryListRenderer,Nr as SchemaRenderer,pt as SelectRenderer,ct as ServiceRenderer,lt as SpanRenderer,dt as TableRenderer,ve as ViewportRenderer,d as baseSchema,K as buttonSchema,ue as cardSchema,O as formSchema,xe as inputNumberSchema,Re as inputTextSchema,x as renderArray,Pe as serviceSchema,L as tableSchema,Ie as viewportSchema};
1
+ import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {InfiniteList,QueryList,useToolkitStore,APP_ID_HEADER,AuthButton,useModal}from'@flow97/react-toolkit';import {Card,Descriptions,Flex,Form,Col,Row,Typography,InputNumber,Input,Select,Table,DatePicker,App,Skeleton}from'antd';import {saveAs}from'file-saver';import {search}from'jmespath';import {useState,useEffect,useRef}from'react';import {createPortal}from'react-dom';import gt from'ky';import {useNavigate}from'react-router';import {z,string}from'zod';import {create}from'zustand';import Ee,{extend}from'dayjs';import Zt from'dayjs/plugin/utc';import {isPlainObject,merge}from'lodash-es';import Rr from'query-string';import {withErrorBoundary}from'react-error-boundary';var ut=Object.defineProperty;var yt=(e,t,r)=>t in e?ut(e,t,{enumerable:true,configurable:true,writable:true,value:r}):e[t]=r;var Fe=(e,t,r)=>yt(e,typeof t!="symbol"?t+"":t,r);var Le=new Map;function P(e,t){Le.set(e,t);}function re(e){return Le.get(e)}function x(e,t){return e?.map((r,o)=>{let{type:n}=r,a=re(n);return a?jsx(a,{data:r,source:t},`${n}${o}`):null})}var Ae=class extends Error{constructor(r,o,n){super(r);Fe(this,"response");Fe(this,"data");this.name="HttpResponseError",this.response=o,this.data=n;}},Me={code:[0,1,200],status:[0,1,200],errno:[0,1,200]},Rt=["msg","message","error"],fe={OK:200,UNAUTHORIZED:401,FORBIDDEN:403,UNREGISTERED:412},wt=3e4;function Tt(e,t){if(t<fe.OK||t>=300)return false;if(!e||typeof e!="object")return true;let r=e;return Object.keys(Me).some(n=>r[n]!==void 0&&r[n]!==null)?Object.entries(Me).every(([n,a])=>{let m=r[n];return m==null?true:typeof m=="number"&&a.includes(m)}):true}function Ve(e){if(!e||typeof e!="object")return "Unknown error";for(let t of Rt){let r=e[t];if(r)return String(r)}return "Unknown error"}async function kt(e,t){switch(t){case "text":return e.text();case "arrayBuffer":return e.arrayBuffer();case "formData":return e.formData();case "json":return e.json();default:return e}}function M(e){let{notification:t}=App.useApp(),r=useNavigate(),{token:{token:o,clearToken:n},context:{apiBaseUrl:a,loginPath:m},game:{appId:p}}=useToolkitStore(),u=(s,c)=>{o&&s.headers.set("Authorization",`Bearer ${o}`);let S=c.context?.isGlobalMode??!p;s.headers.has(APP_ID_HEADER)||s.headers.set(APP_ID_HEADER,S?"global":encodeURIComponent(String(p)));},l=async s=>{if(!s.response)return t.error({message:"Network Error",description:s.message||"Network request failed"}),s;let{status:c}=s.response,i;try{let h=s.response.headers.get("content-type")||"";(h.includes("application/json")||h.startsWith("text/"))&&(i=await s.response.clone().json());}catch{}let S=Ve(i);switch(c){case fe.UNAUTHORIZED:n(),m&&r(m,{replace:true});break;case fe.UNREGISTERED:n(),m&&r(`${m}?unregistered=true`,{replace:true});break;case fe.FORBIDDEN:t.error({message:"\u8BBF\u95EE\u88AB\u7981\u6B62",description:"\u60A8\u6CA1\u6709\u6743\u9650\u8BBF\u95EE\u6B64\u8D44\u6E90\u3002"});break;default:t.error({message:"Request failed",description:S});}return s},R=async(s,c,i)=>{if(!(i.headers.get("content-type")||"").includes("application/json"))return i;let h;try{h=await i.clone().json();}catch{return i}if(Tt(h,i.status))return new Response(JSON.stringify(h),{status:i.status,statusText:i.statusText,headers:i.headers});let D=Ve(h);throw t.error({message:"Request failed",description:D}),new Ae(D,i,h)},f=gt.create({prefixUrl:a,retry:0,timeout:wt,...e,hooks:{beforeRequest:[u],beforeError:[l],afterResponse:[R]}}),E=async(s,c,i,S)=>{let{responseType:h="json",isGlobalMode:D,context:_,...w}=S||{},g={..._,responseType:h,...D!==void 0&&{isGlobalMode:D}},I={...w,context:g};i!==void 0&&(i instanceof FormData||i instanceof URLSearchParams||i instanceof Blob||typeof i=="string"||i instanceof ArrayBuffer||ArrayBuffer.isView(i)?I.body=i:I.json=i);let te=await f(c,{method:s,...I});return kt(te,h)};return {get:(s,c)=>E("GET",s,void 0,c),post:(s,c,i)=>E("POST",s,c,i),put:(s,c,i)=>E("PUT",s,c,i),delete:(s,c)=>E("DELETE",s,void 0,c),patch:(s,c,i)=>E("PATCH",s,c,i),request:s=>{let{url:c,method:i="GET",...S}=s;return E(i,c,void 0,S)},instance:f}}var d=z.object({type:z.string().describe("\u7EC4\u4EF6\u7C7B\u578B"),storeId:z.string().optional().describe("\u5B58\u50A8 ID\u3002\u7528\u4E8E\u5B58\u50A8\u8868\u5355\u7F16\u8F91\u3001Service \u7EC4\u4EF6(\u76EE\u524D\u672A\u652F\u6301) \u53D1\u8D77 HTTP \u8BF7\u6C42\u4EA7\u751F\u7684\u503C\u3002\u7EC4\u4EF6\u95F4\u4EA4\u4E92\u65F6\u7528\u5230\uFF0C\u6570\u636E\u4F1A\u4EE5\u6B64 ID \u4F5C\u4E3A key \u5B58\u50A8\u5230 Map \u4E2D\u3002"),storeIdRef:z.string().optional().describe("\u5173\u8054\u7EC4\u4EF6\u7684 ID\uFF0C\u4F1A\u6839\u636E\u6B64 ID \u53BB store \u4E2D\u67E5\u627E\u6570\u636E\uFF0C\u5173\u8054\u7684\u6570\u636E\u4F1A\u53EF\u4EE5\u88AB\u7EC4\u4EF6\u8BBF\u95EE\u3002")});var K=d.extend({type:z.literal("button"),code:z.string().optional().describe("\u6743\u9650\u7F16\u53F7"),buttonType:z.enum(["primary","default","dashed","link","text"]).optional().describe("\u6309\u94AE\u7C7B\u578B\uFF0C\u5F71\u54CD\u6309\u94AE\u7684\u663E\u793A\u6837\u5F0F"),action:z.enum(["modal","download"]).optional(),text:z.string().optional(),data:z.any().optional().describe("\u81EA\u5B9A\u4E49\u6570\u636E"),method:z.enum(["GET","POST"]).optional().describe("\u8BF7\u6C42\u65B9\u6CD5\uFF0C\u9ED8\u8BA4 GET"),url:string().optional().describe("\u8BF7\u6C42\u5730\u5740"),params:z.record(z.string(),z.any()).optional().describe("\u8BF7\u6C42\u65F6\u643A\u5E26\u7684\u8BF7\u6C42\u53C2\u6570"),body:z.record(z.string(),z.any()).optional().describe("\u8BF7\u6C42\u643A\u5E26\u7684\u8BF7\u6C42\u4F53"),showLoading:z.boolean().default(true).describe("\u662F\u5426\u663E\u793A\u52A0\u8F7D\u72B6\u6001"),modal:z.object({title:z.string(),body:z.any().array().optional(),data:z.record(z.string(),z.any()).optional(),width:z.number().optional()}).optional()}).refine(e=>!(e.action==="download"&&!e.url),{message:"When action is 'download', 'url' is required.",path:["url"]}).refine(e=>!(e.action==="modal"&&!e.modal),{message:"When action is 'modal', 'modal' field is required.",path:["modal"]});var Dt=d.extend({type:z.literal("card"),title:z.string().optional(),extra:z.any().array().optional()}),It=z.lazy(()=>z.any().array()),ue=Dt.extend({body:It.optional()});var q=d.extend({label:z.string(),name:z.string(),preserve:z.boolean().optional(),span:z.number().optional().describe("\u6805\u683C\u5360\u4F4D\u683C\u6570"),value:z.any().optional().describe("\u5B57\u6BB5\u9ED8\u8BA4\u503C\uFF0C\u4F1A\u4F5C\u4E3A Form.Item \u7684 initialValue"),rules:z.object({type:z.enum(["string","number","boolean","integer"]).optional().describe("\u5B57\u6BB5\u6570\u636E\u7C7B\u578B"),required:z.boolean().optional().describe("\u662F\u5426\u4E3A\u5FC5\u9009\u5B57\u6BB5"),message:z.string().optional().describe("\u9519\u8BEF\u4FE1\u606F\uFF0C\u4E0D\u8BBE\u7F6E\u65F6\u4F1A\u901A\u8FC7\u6A21\u677F\u81EA\u52A8\u751F\u6210"),min:z.number().optional().describe("\u5FC5\u987B\u8BBE\u7F6E type\uFF1Astring \u7C7B\u578B\u4E3A\u5B57\u7B26\u4E32\u6700\u5C0F\u957F\u5EA6\uFF1Bnumber \u7C7B\u578B\u65F6\u4E3A\u6700\u5C0F\u503C\uFF1Barray \u7C7B\u578B\u65F6\u4E3A\u6570\u7EC4\u6700\u5C0F\u957F\u5EA6"),max:z.number().optional().describe("\u5FC5\u987B\u8BBE\u7F6E type\uFF1Astring \u7C7B\u578B\u4E3A\u5B57\u7B26\u4E32\u6700\u5927\u957F\u5EA6\uFF1Bnumber \u7C7B\u578B\u65F6\u4E3A\u6700\u5927\u503C\uFF1Barray \u7C7B\u578B\u65F6\u4E3A\u6570\u7EC4\u6700\u5927\u957F\u5EA6")}).array().optional().describe("\u8868\u5355\u6821\u9A8C\u89C4\u5219")});var ye=q.extend({type:z.literal("date-picker"),showTime:z.boolean().optional().describe("\u662F\u5426\u663E\u793A\u65F6\u95F4\u9009\u62E9\u5668"),showNow:z.boolean().optional().describe("\u663E\u793A\u5F53\u524D\u65E5\u671F\u65F6\u95F4\u7684\u5FEB\u6377\u9009\u62E9"),showWeek:z.boolean().optional().describe("\u5C55\u793A\u5F53\u524D\u5468"),utc:z.boolean().optional().describe("\u662F\u5426\u4F7F\u7528UTC\u65F6\u95F4")});var he=q.extend({type:z.literal("date-range"),allowEmpty:z.tuple([z.boolean(),z.boolean()]).optional().describe("\u662F\u5426\u5141\u8BB8\u4E3A\u7A7A"),showTime:z.boolean().optional().describe("\u662F\u5426\u663E\u793A\u65F6\u95F4\u9009\u62E9\u5668"),utc:z.boolean().optional().describe("\u662F\u5426\u4F7F\u7528UTC\u65F6\u95F4")}).describe("\u65E5\u671F\u8303\u56F4\u9009\u62E9\u5668\u3002\u8BE5\u7EC4\u4EF6\u7684\u503C\u4E3A\u6570\u7EC4\u7C7B\u578B\uFF0C\u9700\u8981\u81EA\u5DF1\u505A\u6620\u5C04\u3002");var ie=d.extend({type:z.literal("descriptions"),title:z.string().optional().describe("\u6807\u9898"),dataIndex:z.string().optional().describe("JMESPath"),dataSource:z.any().optional().describe("\u6570\u636E\u6E90"),column:z.number().optional().describe("\u5217\u6570")}).describe("\u63CF\u8FF0\u5217\u8868\u7EC4\u4EF6\uFF0C\u7528\u4E8E\u5C55\u793A\u4E00\u7EC4\u63CF\u8FF0\u4FE1\u606F");var be=d.extend({type:z.literal("div"),body:z.any().array().optional().describe("\u5B50\u5143\u7D20"),style:z.record(z.string(),z.any()).optional().describe("\u6837\u5F0F")});var Se=d.extend({type:z.literal("flex"),vertical:z.boolean().optional().describe("flex \u4E3B\u8F74\u7684\u65B9\u5411\u662F\u5426\u5782\u76F4\uFF0C\u4F7F\u7528 flex-direction: column"),wrap:z.boolean().optional().describe("\u8BBE\u7F6E\u5143\u7D20\u5355\u884C\u663E\u793A\u8FD8\u662F\u591A\u884C\u663E\u793A"),justify:z.enum(["flex-start","center","flex-end","space-between","space-around","space-evenly"]).optional().describe("\u8BBE\u7F6E\u5143\u7D20\u5728\u4E3B\u8F74\u65B9\u5411\u4E0A\u7684\u5BF9\u9F50\u65B9\u5F0F"),align:z.enum(["flex-start","center","flex-end","baseline","stretch"]).optional().describe("\u8BBE\u7F6E\u5143\u7D20\u5728\u4EA4\u53C9\u8F74\u65B9\u5411\u4E0A\u7684\u5BF9\u9F50\u65B9\u5F0F"),gap:z.union([z.number(),z.string()]).optional().describe("\u8BBE\u7F6E\u7F51\u683C\u4E4B\u95F4\u7684\u95F4\u9699"),body:z.any().array().optional().describe("\u5B50\u5143\u7D20"),style:z.record(z.string(),z.any()).optional().describe("\u6837\u5F0F")});var O=d.extend({type:z.literal("form"),name:z.string().optional(),preserve:z.boolean().optional(),fields:z.any().array().optional().describe("\u8868\u5355\u9879\u914D\u7F6E"),initialValues:z.record(z.string(),z.any()).optional().describe("\u8BBE\u7F6E\u8868\u5355\u7684\u521D\u59CB\u503C"),layout:z.union([z.literal("horizontal"),z.literal("inline"),z.literal("vertical")]).default("horizontal").describe("\u8868\u5355\u5E03\u5C40"),labelWidth:z.union([z.number(),z.string()]).optional().describe("\u6807\u7B7E\u5BBD\u5EA6\uFF0C\u5F53\u4E3A\u6570\u5B57\u65F6\u8868\u793A\u5728 24 \u5217\u7684\u6805\u683C\u4E2D\u5360\u636E\u591A\u5C11\u5217\uFF0C\u5F53\u4E3A string \u65F6\u4F7F\u7528 flex \u5E03\u5C40"),labelAlign:z.enum(["left","right"]).optional().describe("\u6807\u7B7E\u5BF9\u9F50\u65B9\u5F0F"),clearOnDestroy:z.boolean().optional().describe("\u5F53\u8868\u5355\u88AB\u5378\u8F7D\u65F6\u6E05\u7A7A\u8868\u5355\u503C"),gutter:z.union([z.number().describe("\u6A2A\u5411\u95F4\u9694"),z.tuple([z.number().describe("\u6A2A\u5411\u95F4\u9694"),z.number().describe("\u7EB5\u5411\u95F4\u9694")])]).default(10).describe("Grid \u6805\u683C\u95F4\u9694")});var L=d.extend({type:z.literal("table"),rowKey:z.string().optional().describe("\u8868\u683C\u884C key \u7684\u53D6\u503C\uFF0C\u552F\u4E00\u6807\u8BC6"),columns:z.object({title:z.string(),dataIndex:z.string().optional().describe("\u6570\u636E\u6E90\u7684\u5B57\u6BB5\u540D\uFF0C\u652F\u6301\u70B9\u8BED\u6CD5"),width:z.union([z.number(),z.string()]).optional(),align:z.enum(["left","right","center"]).optional(),tpl:z.string().optional().describe("\u6A21\u677F\u5B57\u7B26\u4E32\u3002\u652F\u6301\u6A21\u677F\u5B57\u7B26\u4E32\uFF0C\u53EF\u4EE5\u5728\u6B64\u5904\u505A\u6570\u636E\u6620\u5C04\u3002(\u6682\u65F6\u4E0D\u652F\u6301)")}).array().optional().describe("\u8868\u683C\u5217\u914D\u7F6E"),footer:z.any().array().optional().describe("\u8868\u683C\u5E95\u90E8"),api:z.string().optional().describe("\u6570\u636E\u67E5\u8BE2\u5730\u5740\uFF0C\u53EA\u652F\u6301 GET \u8BF7\u6C42\uFF0C\u4F18\u5148\u7EA7\u9AD8\u4E8E data"),data:z.union([z.any().array(),z.string()]).optional().describe("\u8868\u683C\u6570\u636E\u6E90\uFF0C\u53EF\u4EE5\u662F\u6570\u7EC4\u6216\u8005\u53D8\u91CF\u3002"),bordered:z.boolean().optional(),size:z.enum(["small","middle","large"]).default("middle"),tableLayout:z.enum(["fixed","auto"]).optional().describe("\u8868\u683C\u5143\u7D20\u7684 table-layout \u5C5E\u6027\uFF0C\u8BBE\u4E3A fixed \u8868\u793A\u5185\u5BB9\u4E0D\u4F1A\u5F71\u54CD\u5217\u7684\u5E03\u5C40"),pagination:z.union([z.literal(false),z.object({current:z.number().optional(),pageSize:z.number().optional(),total:z.number().optional()})]).default(false).describe("\u5206\u9875\u914D\u7F6E")}).describe("\u8868\u683C\u7EC4\u4EF6\uFF0C\u5982\u679C\u9700\u8981\u53D1\u8D77\u8BF7\u6C42\uFF0C\u5EFA\u8BAE\u4F7F\u7528 query-list\u3002");var ge=d.extend({type:z.literal("infinite-list"),url:z.string(),params:z.record(z.string(),z.any()).optional().describe("\u67E5\u8BE2\u53C2\u6570\u3002\u652F\u6301\u6A21\u677F\u5B57\u7B26\u4E32\uFF0C\u53EF\u4EE5\u5728\u6B64\u5904\u505A\u6570\u636E\u6620\u5C04\u3002"),code:z.string().optional().describe("\u6743\u9650\u7F16\u53F7"),extra:z.any().array().optional().describe("\u8868\u683C\u989D\u5916\u914D\u7F6E"),actions:K.array().optional().describe("\u8868\u683C\u64CD\u4F5C\u3002\u4F1A\u81EA\u52A8\u628A\u8BE5\u884C\u7684\u8868\u683C\u6570\u636E\u6CBF\u7740\u7EC4\u4EF6\u6811\u9010\u7EA7\u5F80\u4E0B\u4F20\u9012\u3002"),formLayout:O.shape.layout,gutter:O.shape.gutter,fields:O.shape.fields,initialValues:O.shape.initialValues,rowKey:L.shape.rowKey,tableLayout:L.shape.tableLayout,footer:L.shape.footer,columns:L.shape.columns});var xe=q.extend({type:z.literal("input-number"),clearable:z.boolean().optional(),min:z.number().optional(),max:z.number().optional(),step:z.number().optional(),width:z.string().default("100px").describe("\u5BBD\u5EA6"),controls:z.boolean().default(false).describe("\u662F\u5426\u4F7F\u7528\u63A7\u5236\u6309\u94AE")});var Re=q.extend({type:z.literal("input-text"),clearable:z.boolean().optional()});var we=d.extend({type:z.literal("link"),text:z.string().optional(),href:z.string(),target:z.enum(["_blank","_self","_parent","_top"]).default("_blank"),params:z.record(z.string(),z.any()).optional().describe("\u8DF3\u8F6C\u65F6\u643A\u5E26\u7684\u67E5\u8BE2\u53C2\u6570")});var Te=d.extend({type:z.literal("query-list"),identifier:z.string().optional().describe("\u7EC4\u4EF6\u552F\u4E00\u6807\u8BC6\uFF0C\u672A\u63D0\u4F9B\u65F6\u81EA\u52A8\u751F\u6210"),url:z.string(),code:z.string().optional().describe("\u6743\u9650\u7F16\u53F7"),method:z.enum(["GET","POST"]).default("GET"),onePage:z.boolean().optional(),headers:z.record(z.string(),z.any()).optional(),body:z.record(z.string(),z.any()).optional().describe("\u8BF7\u6C42\u4F53\u3002\u652F\u6301\u6A21\u677F\u5B57\u7B26\u4E32\uFF0C\u53EF\u4EE5\u5728\u6B64\u5904\u505A\u6570\u636E\u6620\u5C04\u3002"),params:z.record(z.string(),z.any()).optional().describe("\u67E5\u8BE2\u53C2\u6570\u3002\u652F\u6301\u6A21\u677F\u5B57\u7B26\u4E32\uFF0C\u53EF\u4EE5\u5728\u6B64\u5904\u505A\u6570\u636E\u6620\u5C04\u3002"),extra:z.any().array().optional().describe("\u8868\u683C\u989D\u5916\u914D\u7F6E"),actions:K.array().optional().describe("\u8868\u683C\u64CD\u4F5C\u3002\u4F1A\u81EA\u52A8\u628A\u8BE5\u884C\u7684\u8868\u683C\u6570\u636E\u6CBF\u7740\u7EC4\u4EF6\u6811\u9010\u7EA7\u5F80\u4E0B\u4F20\u9012\u3002"),buttonsAlign:z.enum(["left","right","bottom"]).optional(),formLayout:O.shape.layout,gutter:O.shape.gutter,fields:O.shape.fields,initialValues:O.shape.initialValues,rowKey:L.shape.rowKey,tableLayout:L.shape.tableLayout,footer:L.shape.footer,columns:L.shape.columns});var ke=q.extend({type:z.literal("select"),allowClear:z.boolean().optional().describe("\u662F\u5426\u663E\u793A\u6E05\u9664\u6309\u94AE"),virtual:z.boolean().optional().describe("\u662F\u5426\u5F00\u542F\u865A\u62DF\u6EDA\u52A8\uFF0C\u6570\u636E\u91CF\u5927\u65F6\u5F00\u542F\u53EF\u4EE5\u63D0\u9AD8\u6027\u80FD"),showSearch:z.boolean().optional().describe("\u662F\u5426\u53EF\u641C\u7D22"),width:z.string().default("100px").describe("\u5BBD\u5EA6"),options:z.array(z.object({label:z.string(),value:z.string()})).optional().describe("\u9009\u9879\u5217\u8868"),optionFilterProp:z.string().default("label").describe("\u641C\u7D22\u8FC7\u6EE4\u5B57\u6BB5"),source:z.string().optional().describe("\u6570\u636E\u6E90")});var Pe=d.extend({type:z.literal("service"),method:z.enum(["GET","POST"]).optional(),url:z.string().optional(),params:z.record(z.string(),z.any()).optional(),body:z.any().optional()}).describe("\u6570\u636E\u8BF7\u6C42\u7EC4\u4EF6\uFF0C\u7528\u4E8E\u8C03\u7528\u5916\u90E8\u670D\u52A1\uFF0C\u652F\u6301 GET \u548C POST \u8BF7\u6C42\uFF0C\u8FD4\u56DE\u7684\u6570\u636E\u4F1A\u5B58\u50A8\u5230 store \u4E2D");var De=d.extend({type:z.literal("span"),text:z.string().describe("\u6587\u5B57\u8282\u70B9")}).describe("\u63D2\u5165 span \u6807\u7B7E\uFF0C\u7528\u4E8E\u8F93\u51FA\u6587\u5B57\u6216\u5B57\u7B26\u4E32\u6A21\u677F");var Ie=d.extend({type:z.literal("viewport"),body:z.any().array().optional().describe("\u89C6\u7A97\u5185\u5BB9"),data:z.record(z.string(),z.any()).optional().describe("\u89C6\u7A97\u6570\u636E")});z.union([K,ue,ye,he,ie,be,Se,O,ge,xe,Re,we,Te,ke,Pe,De,L,Ie,ie]);var V=create()(()=>({dataMap:new Map})),W=(e,t)=>{V.setState(r=>({dataMap:new Map(r.dataMap).set(e,t)}));},pe=e=>{if(e)return V.getState().dataMap.get(e)};var Oe=/^\${(.+)}$/;function A(e,t){function r(o){if(typeof o=="string"){let n=o.match(Oe);return n?search(e,n[1]):o}else {if(Array.isArray(o))return o.map(r);if(typeof o=="object"&&o!==null){let n={};return Object.keys(o).forEach(a=>{n[a]=r(o[a]);}),n}}return o}return r(t)}var ce=e=>e.clone().add(e.utcOffset(),"minutes"),le=e=>e.clone().add(-e.utcOffset(),"minutes");function y(e){return function(t){let r=o=>{let{data:n,...a}=o,[m,p]=useState(null);return useEffect(()=>{let u=e.parse(n);p(u);},[n]),m?jsx(t,{...a,parsedData:m}):null};return r.displayName=`withParsedData(${t.displayName||t.name||"Component"})`,r}}var Mt=({data:e,source:t})=>{let{text:r,buttonType:o,modal:n,storeIdRef:a,storeId:m,method:p,url:u,params:l,body:R,...f}=e,[E,s]=useState(null),c=M(),{show:i,modal:S}=useModal({title:n?.title,content:E,width:n?.width,destroyOnClose:true,afterOpen:async()=>{s(jsx(Skeleton,{}));let h;if(u){let D=await c.request({method:p,url:u,searchParams:l&&A(pe(a),l),json:R&&A(pe(a),R)});m&&W(m,D.data.data),h=x(n?.body,D.data.data||void 0);}else h=x(n?.body,t);s(h);}});return jsxs(Fragment,{children:[jsx(AuthButton,{...f,type:o,onClick:i,children:r}),createPortal(S,document.body)]})},Vt=({data:e})=>{let{text:t,buttonType:r,url:o,method:n,params:a,body:m,storeIdRef:p,action:u,...l}=e,{dataMap:R}=V(),f=M();return jsx(AuthButton,{...l,type:r,onClick:async()=>{let s=p?R.get(p):null,c=o.replace(/\$\{([^}]+)\}/g,(g,I)=>search(s,I)??""),i={method:n,searchParams:a,json:m},S=await f.instance(c,i),h=S.headers.get("content-disposition"),D="unknown";D=h?.match(/filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/)?.[1]||D;let w=await S.blob();saveAs(w,D);},children:t})},Ke=y(K)(({parsedData:e,source:t})=>{let{action:r,code:o,text:n,buttonType:a,params:m,body:p,storeIdRef:u,showLoading:l}=e,{dataMap:R}=V(),f=u?R.get(u):null,E=m&&A(f,m),s=p&&A(f,p),c={...e,params:E,body:s};return r==="modal"?jsx(Mt,{data:c,source:t}):r==="download"?jsx(Vt,{data:c}):jsx(AuthButton,{code:o,type:a,showLoading:l,children:n})});var Ge=y(ue)(({parsedData:e,source:t})=>{let{title:r,body:o}=e,n=x(o,t);return jsx(Card,{title:r,children:n})});var Jt=e=>{let{value:t,onChange:r,utc:o,...n}=e,a=typeof t=="number"?o?le(Ee(t*1e3)):Ee(t*1e3):null;return jsx(DatePicker,{...n,value:a,onChange:p=>{r?.(o?ce(p).unix():p.unix());}})},Be=Jt;extend(Zt);var Xt=e=>{let{value:t,onChange:r,utc:o,...n}=e,a=[t?.[0]?o?le(Ee(t[0]*1e3)):Ee(t[0]*1e3):null,t?.[1]?o?le(Ee(t[1]*1e3)):Ee(t[1]*1e3):null],m=p=>{r?.([p?.[0]?o?ce(p[0]).unix():p[0].unix():null,p?.[1]?o?ce(p[1]).unix():p[1].unix():null]);};return jsx(DatePicker.RangePicker,{...n,value:a,onChange:m})},Ue=Xt;function N(e){return function(t){return y(e)(({parsedData:r,...o})=>{let{label:n,name:a,preserve:m,rules:p,value:u,...l}=r;return jsx(Form.Item,{label:n,name:a,rules:p,preserve:m,initialValue:u,...o,children:t(l)})})}}var Je=N(ye)(e=>jsx(Be,{...e}));var $e=N(he)(e=>jsx(Ue,{...e}));var Qe=y(ie)(({parsedData:e})=>{let{title:t,dataSource:r,dataIndex:o,storeIdRef:n,...a}=e,{dataMap:m}=V(),[p,u]=useState([]);return useEffect(()=>{let l;typeof r=="object"?l=r:n&&(l=m.get(n)),l=o?search(l,o):l;let R=l?.map(f=>({key:f.label,label:f.label,children:f.value}));u(R);},[m]),jsx(Descriptions,{...a,title:t,items:p})});var We=y(be)(({parsedData:e,source:t})=>{let{body:r,style:o}=e,n=x(r,t);return jsx("div",{style:o,children:n})});var Ze=y(Se)(({parsedData:e,source:t})=>{let{body:r,style:o,...n}=e,a=x(r,t);return jsx(Flex,{...n,style:o,children:a})});var X=y(O)(({parsedData:e,form:t,externalStoreId:r})=>{let[o]=Form.useForm(),n=t||o,{storeId:a,fields:m,labelWidth:p,gutter:u,...l}=e,R=a||r,f=m?.map((c,i)=>{let{type:S,span:h}=c,D=re(S);if(D){let _=`${S}${i}`;return jsx(Col,{span:h,children:jsx(D,{data:c})},_)}return null});return jsx(Form,{...l,form:n,labelCol:typeof p=="number"?{span:p}:{flex:p},onValuesChange:(c,i)=>{R&&W(R,i);},children:jsx(Row,{gutter:u,children:f})})});var tt=y(ge)(({parsedData:e})=>{let{storeId:t,columns:r,url:o,footer:n,actions:a,fields:m,gutter:p,initialValues:u,formLayout:l,params:R,extra:f,...E}=e,s=useRef(null),c=`infinite-list-${t||"default"}-${Date.now()}`,i=r?[...r]:[];i.forEach(w=>{w.render=g=>{if(isPlainObject(g))return jsx(Typography.Paragraph,{style:{maxHeight:200,overflow:"auto"},children:jsx("pre",{children:JSON.stringify(g,null,2)})});if(typeof g=="string")try{let I=JSON.parse(g);return isPlainObject(I)?jsx(Typography.Paragraph,{style:{maxHeight:200,overflow:"auto"},children:jsx("pre",{children:JSON.stringify(I,null,2)})}):g}catch{return g}else return g};}),a&&i.push({title:"\u64CD\u4F5C",align:"center",render:w=>x(a,w)});let S=w=>{let g=O.parse({type:"form",fields:m,initialValues:u,layout:l,gutter:p});return jsx(X,{data:g,form:w,externalStoreId:t})},h=n&&(()=>{let w=s.current?.data?.[s.current.data.length-1]?.data;return x(n,w)}),D={items:(w,g)=>w?.reduce((I,te)=>I.concat(te?.data?.rows??[]),[])??[],hasMore:w=>!!w?.data?.hasMore,nextPageParam:(w,g,I)=>{if(w?.data?.hasMore)return {rowKey:w?.data?.rowKey,page:(I?.page||0)+1}}},_=x(f);return jsx(InfiniteList,{...E,ref:s,identifier:c,columns:i,footer:h,dataAdapter:D,renderForm:S,tableExtra:_,request:{url:o,method:"GET",searchParams:(w,g)=>{let{filters:I}=w;return I?R?merge({rowKey:g?.rowKey,page:g?.page||0},A(I,R)):{...I,rowKey:g?.rowKey,page:g?.page||0}:{rowKey:g?.rowKey,page:g?.page||0}}}})});var rt=N(xe)(e=>{let{type:t,width:r,...o}=e;return jsx(InputNumber,{...o,style:{width:r}})});var ot=N(Re)(e=>jsx(Input,{...e}));var nt=y(we)(({parsedData:e})=>{let{type:t,href:r,params:o,text:n,...a}=e,m=Rr.stringifyUrl({url:r,query:o});return jsx("a",{href:m,...a,children:n})});var mt=y(Te)(({parsedData:e})=>{let{storeId:t,fields:r,initialValues:o,formLayout:n,columns:a,params:m,body:p,footer:u,extra:l,gutter:R,actions:f,identifier:E,url:s,method:c="GET",...i}=e,S=useRef(null),h=a?[...a]:[];h.forEach(C=>{C.render=F=>{if(isPlainObject(F))return jsx(Typography.Paragraph,{style:{maxHeight:200,overflow:"auto"},children:jsx("pre",{children:JSON.stringify(F,null,2)})});if(typeof F=="string")try{let j=JSON.parse(F);return isPlainObject(j)?jsx(Typography.Paragraph,{style:{maxHeight:200,overflow:"auto"},children:jsx("pre",{children:JSON.stringify(j,null,2)})}):F}catch{return F}else return F};}),f&&h.push({title:"\u64CD\u4F5C",align:"center",render:C=>x(f,C)});let D=C=>{let F=O.parse({type:"form",fields:r,initialValues:o,layout:n,gutter:R});return jsx(X,{data:F,form:C,externalStoreId:t})},_=u&&(()=>x(u,S.current?.data)),w=C=>C?.data?{items:C.data.rows,total:C.data.total}:{items:C?.rows,total:C?.total},g=({page:C,size:F,filters:j})=>m?merge({page:C,size:F},A(j,m)):{...j,page:C,size:F},I=({page:C,size:F,filters:j})=>p?merge({page:C,size:F},A(j,p)):{...j,page:C,size:F},te=x(l);return jsx(QueryList,{identifier:E,...i,ref:S,columns:h,renderForm:D,footer:_,dataAdapter:w,request:{url:s,method:c,searchParams:g,body:I},tableExtra:te})});var pt=N(ke)(e=>{let{type:t,options:r,source:o,width:n,...a}=e,[m,p]=useState(),u=M();return useEffect(()=>{o?u.get(o).then(l=>{p(l?.options);}).catch(()=>{p([]);}):r&&p(r);},[o,r]),jsx(Select,{...a,options:m,style:{width:n}})});var ct=y(Pe)(({parsedData:e})=>{let{storeId:t,params:r,url:o,body:n,storeIdRef:a,method:m}=e,p=M();return useEffect(()=>{let u=pe(a),l=r&&A(u,r),R=r&&A(u,n);o&&p.request({method:m,url:o,searchParams:l,json:R}).then(f=>{t&&W(t,f.data.data);}).catch(f=>{console.error(f);});},[]),null});var lt=y(De)(({parsedData:e,source:t})=>{let{text:r}=e,o=r.replace(/\$\{(\w+)\}/g,(n,a)=>search(t,a)??"");return jsx("span",{children:o})});var dt=y(L)(({parsedData:e,source:t})=>{let{columns:r,footer:o,rowKey:n,data:a,api:m,storeIdRef:p,...u}=e,{dataMap:l}=V(),R=M(),f=[];if(m){let s=null;p&&(s=l.get(p));let c=m.replace(/\$\{([^}]+)\}/g,(i,S)=>search(s,S)??"");R.get(c).then(i=>{f=Array.isArray(i.data)?i.data:[];});}else if(Array.isArray(a))f=a;else {let s=a?.match(Oe);s&&(f=search(t,s[1])??[]);}return jsx(Table,{...u,rowKey:n,columns:r,footer:o&&(()=>x(o)),dataSource:f})});var ve=y(Ie)(({parsedData:e})=>{let{body:t}=e,r=x(t);return jsx("div",{children:r})});function Br({error:e}){return jsx("pre",{children:JSON.stringify(e,null,2)})}var Ur=e=>{let{schema:t}=e;return t?jsx("div",{className:"antd-schema",children:jsx(ve,{data:t})}):null},qr=withErrorBoundary(Ur,{fallbackRender:Br}),Nr=qr;P("button",Ke);P("card",Ge);P("date-picker",Je);P("date-range",$e);P("descriptions",Qe);P("div",We);P("flex",Ze);P("form",X);P("infinite-list",tt);P("input-number",rt);P("input-text",ot);P("link",nt);P("query-list",mt);P("select",pt);P("service",ct);P("span",lt);P("table",dt);P("viewport",ve);export{Ke as ButtonRenderer,Ge as CardRenderer,Je as DatePickerRenderer,$e as DateRangeRenderer,Qe as DescriptionsRenderer,We as DivRenderer,Ze as FlexRenderer,X as FormRenderer,tt as InfiniteListRenderer,rt as InputNumberRenderer,ot as InputTextRenderer,nt as LinkRenderer,mt as QueryListRenderer,Nr as SchemaRenderer,pt as SelectRenderer,ct as ServiceRenderer,lt as SpanRenderer,dt as TableRenderer,ve as ViewportRenderer,d as baseSchema,K as buttonSchema,ue as cardSchema,O as formSchema,xe as inputNumberSchema,Re as inputTextSchema,x as renderArray,Pe as serviceSchema,L as tableSchema,Ie as viewportSchema};
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/core/renderer-registry.ts","../src/core/render-helpers.tsx","../src/libs/useKy.ts","../src/schemas/base.ts","../src/schemas/button.ts","../src/schemas/card.ts","../src/schemas/form-item.ts","../src/schemas/date-picker.ts","../src/schemas/date-range.ts","../src/schemas/descriptions.ts","../src/schemas/div.ts","../src/schemas/flex.ts","../src/schemas/form.ts","../src/schemas/table.ts","../src/schemas/infinite-list.ts","../src/schemas/input-number.ts","../src/schemas/input-text.ts","../src/schemas/link.ts","../src/schemas/query-list.tsx","../src/schemas/select.ts","../src/schemas/service.ts","../src/schemas/span.ts","../src/schemas/viewport.ts","../src/schemas/index.ts","../src/stores/index.ts","../src/constants/index.ts","../src/utils/index.tsx","../src/renderers/base.tsx","../src/renderers/button.tsx","../src/renderers/card.tsx","../src/components/UnixDatePicker.tsx","../src/components/UnixRangePicker.tsx","../src/renderers/form-item.tsx","../src/renderers/date-picker.tsx","../src/renderers/date-range.tsx","../src/renderers/desciptions.tsx","../src/renderers/div.tsx","../src/renderers/flex.tsx","../src/renderers/form.tsx","../src/renderers/infinite-list.tsx","../src/renderers/input-number.tsx","../src/renderers/input-text.tsx","../src/renderers/link.tsx","../src/renderers/query-list.tsx","../src/renderers/select.tsx","../src/renderers/service.tsx","../src/renderers/span.tsx","../src/renderers/table.tsx","../src/renderers/viewport.tsx","../src/schema-renderer.tsx","../src/index.tsx"],"names":["request","z","formItemSchema","jsx","useState","search","dayjs","DatePicker","useEffect","Form","useRef","isPlainObject","Typography","merge"],"mappings":"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","file":"index.js","sourcesContent":["import type { ComponentType } from 'react'\n\nimport type { SchemaType } from '../schemas'\n\n/**\n * Renderer 注册表\n * 用于存储和管理所有的 renderer 组件\n */\nexport const rendererRegistry = new Map<SchemaType, ComponentType<any>>()\n\n/**\n * 注册 renderer 组件\n * @param type - schema 类型\n * @param component - renderer 组件\n */\nexport function registerRenderer(type: SchemaType, component: ComponentType<any>) {\n rendererRegistry.set(type, component)\n}\n\n/**\n * 获取 renderer 组件\n * @param type - schema 类型\n * @returns renderer 组件\n */\nexport function getRenderer(type: SchemaType): ComponentType<any> | undefined {\n return rendererRegistry.get(type)\n}\n","import type { BaseSchema, SchemaType } from '../schemas'\nimport { getRenderer } from './renderer-registry'\n\n/**\n * 渲染 schema 数组\n * @param array - schema 数组\n * @param source - 外部数据源,传递给子组件\n * @returns 渲染的组件数组\n */\nexport function renderArray<T extends BaseSchema, S extends object>(array?: T[], source?: S) {\n return array?.map((item, index) => {\n const { type } = item\n const RendererComponent = getRenderer(type as SchemaType)\n\n if (RendererComponent) {\n return <RendererComponent data={item} source={source} key={`${type}${index}`} />\n }\n\n return null\n })\n}\n","import { APP_ID_HEADER, useToolkitStore } from '@flow97/react-toolkit'\nimport { App } from 'antd'\nimport ky, {\n type AfterResponseHook,\n type BeforeErrorHook,\n type BeforeRequestHook,\n type HTTPError,\n type KyInstance,\n type Options as KyOptions,\n} from 'ky'\nimport { useNavigate } from 'react-router'\n\n/** HTTP 响应错误,包含响应和数据 */\nexport class HttpResponseError extends Error {\n response?: Response\n data?: unknown\n\n constructor(message: string, response?: Response, data?: unknown) {\n super(message)\n this.name = 'HttpResponseError'\n this.response = response\n this.data = data\n }\n}\n\n/** 默认状态码字段配置 */\nconst DEFAULT_STATUS_FIELDS: Record<string, readonly number[]> = {\n code: [0, 1, 200],\n status: [0, 1, 200],\n errno: [0, 1, 200],\n} as const\n\n/** 默认错误消息字段 */\nconst DEFAULT_ERROR_FIELDS = ['msg', 'message', 'error'] as const\n\n/** HTTP 状态码常量 */\nconst HTTP_STATUS = {\n OK: 200,\n UNAUTHORIZED: 401,\n FORBIDDEN: 403,\n UNREGISTERED: 412,\n} as const\n\n/** 请求超时时间(毫秒) */\nconst REQUEST_TIMEOUT = 30000\n\n/** 响应类型 */\nexport type ResponseType = 'json' | 'blob' | 'text' | 'arrayBuffer' | 'formData'\n\n/** 通用请求选项接口 */\nexport interface RequestOptions extends KyOptions {\n /** 响应类型 */\n responseType?: ResponseType\n /** 是否使用全局模式,为 true 时 app-id header 设置为 global */\n isGlobalMode?: boolean\n}\n\n/** HTTP 客户端方法接口 */\nexport interface KyMethods {\n get: <T = unknown>(url: string, options?: RequestOptions) => Promise<T>\n post: <T = unknown>(url: string, data?: unknown, options?: RequestOptions) => Promise<T>\n put: <T = unknown>(url: string, data?: unknown, options?: RequestOptions) => Promise<T>\n delete: <T = unknown>(url: string, options?: RequestOptions) => Promise<T>\n patch: <T = unknown>(url: string, data?: unknown, options?: RequestOptions) => Promise<T>\n /** 通用请求方法 */\n request: <T = unknown>(options: RequestOptions & { url: string; method?: string }) => Promise<T>\n instance: KyInstance\n}\n\n/** 判断响应是否成功 */\nfunction isSuccessResponse(data: unknown, status: number): boolean {\n if (status < HTTP_STATUS.OK || status >= 300) return false\n if (!data || typeof data !== 'object') return true\n\n const dataObj = data as Record<string, unknown>\n const hasBusinessCode = Object.keys(DEFAULT_STATUS_FIELDS).some(\n field => dataObj[field] !== undefined && dataObj[field] !== null,\n )\n\n if (hasBusinessCode) {\n return Object.entries(DEFAULT_STATUS_FIELDS).every(([field, allowedCodes]) => {\n const value = dataObj[field]\n if (value === undefined || value === null) return true\n return typeof value === 'number' && allowedCodes.includes(value)\n })\n }\n return true\n}\n\n/** 提取错误消息 */\nfunction extractErrorMessage(data: unknown): string {\n if (!data || typeof data !== 'object') return 'Unknown error'\n for (const field of DEFAULT_ERROR_FIELDS) {\n const value = (data as Record<string, unknown>)[field]\n if (value) return String(value)\n }\n return 'Unknown error'\n}\n\n/** 根据响应类型处理响应数据 */\nasync function processResponse(response: Response, responseType?: ResponseType): Promise<unknown> {\n switch (responseType) {\n case 'text':\n return response.text()\n case 'arrayBuffer':\n return response.arrayBuffer()\n case 'formData':\n return response.formData()\n case 'json':\n return response.json()\n default:\n return response\n }\n}\n\n/**\n * HTTP 客户端 Hook\n *\n * @example\n * ```tsx\n * const client = useKy()\n *\n * // GET 请求\n * const data = await client.get<User[]>('/api/users')\n *\n * // POST 请求\n * const result = await client.post<User>('/api/users', { name: 'John' })\n *\n * // 全局模式(app-id: global)\n * const games = await client.get('/api/games', { isGlobalMode: true })\n * ```\n */\nexport function useKy(options?: Omit<KyOptions, 'hooks'>): KyMethods {\n const { notification } = App.useApp()\n const navigate = useNavigate()\n const {\n token: { token, clearToken },\n context: { apiBaseUrl, loginPath },\n game: { appId },\n } = useToolkitStore()\n\n // beforeRequest: 设置 Authorization 和 app-id headers\n const beforeRequestHook: BeforeRequestHook = (request, opts) => {\n if (token) {\n request.headers.set('Authorization', `Bearer ${token}`)\n }\n const ctx = opts.context as { isGlobalMode?: boolean } | undefined\n const finalIsGlobal = ctx?.isGlobalMode ?? !appId\n if (!request.headers.has(APP_ID_HEADER)) {\n request.headers.set(APP_ID_HEADER, finalIsGlobal ? 'global' : encodeURIComponent(String(appId)))\n }\n }\n\n // beforeError: 处理 HTTP 错误\n const beforeErrorHook: BeforeErrorHook = async (error: HTTPError) => {\n if (!error.response) {\n notification.error({ message: 'Network Error', description: error.message || 'Network request failed' })\n return error\n }\n\n const { status } = error.response\n let data: unknown\n try {\n const contentType = error.response.headers.get('content-type') || ''\n if (contentType.includes('application/json') || contentType.startsWith('text/')) {\n data = await error.response.clone().json()\n }\n } catch {\n /* ignore */\n }\n\n const errorMessage = extractErrorMessage(data)\n\n switch (status) {\n case HTTP_STATUS.UNAUTHORIZED:\n clearToken()\n loginPath && navigate(loginPath, { replace: true })\n break\n case HTTP_STATUS.UNREGISTERED:\n clearToken()\n loginPath && navigate(`${loginPath}?unregistered=true`, { replace: true })\n break\n case HTTP_STATUS.FORBIDDEN:\n notification.error({ message: '访问被禁止', description: '您没有权限访问此资源。' })\n break\n default:\n notification.error({ message: 'Request failed', description: errorMessage })\n }\n return error\n }\n\n // afterResponse: 处理业务状态码\n const afterResponseHook: AfterResponseHook = async (_request, _options, response) => {\n const contentType = response.headers.get('content-type') || ''\n if (!contentType.includes('application/json')) return response\n\n let data: unknown\n try {\n data = await response.clone().json()\n } catch {\n return response\n }\n\n if (isSuccessResponse(data, response.status)) {\n return new Response(JSON.stringify(data), {\n status: response.status,\n statusText: response.statusText,\n headers: response.headers,\n })\n }\n\n const errorMessage = extractErrorMessage(data)\n notification.error({ message: 'Request failed', description: errorMessage })\n throw new HttpResponseError(errorMessage, response, data)\n }\n\n const instance = ky.create({\n prefixUrl: apiBaseUrl,\n retry: 0,\n timeout: REQUEST_TIMEOUT,\n ...options,\n hooks: {\n beforeRequest: [beforeRequestHook],\n beforeError: [beforeErrorHook],\n afterResponse: [afterResponseHook],\n },\n })\n\n // 统一请求方法\n const request = async <T>(method: string, url: string, data?: unknown, opts?: RequestOptions): Promise<T> => {\n const { responseType = 'json', isGlobalMode: reqGlobalMode, context, ...reqOptions } = opts || {}\n\n const finalContext: Record<string, unknown> = {\n ...context,\n responseType,\n ...(reqGlobalMode !== undefined && { isGlobalMode: reqGlobalMode }),\n }\n\n const finalOptions: KyOptions & { context?: Record<string, unknown> } = {\n ...reqOptions,\n context: finalContext,\n }\n\n if (data !== undefined) {\n if (\n data instanceof FormData ||\n data instanceof URLSearchParams ||\n data instanceof Blob ||\n typeof data === 'string' ||\n data instanceof ArrayBuffer ||\n ArrayBuffer.isView(data)\n ) {\n finalOptions.body = data as BodyInit\n } else {\n finalOptions.json = data\n }\n }\n\n const response = await instance(url, { method, ...finalOptions })\n return processResponse(response, responseType) as Promise<T>\n }\n\n return {\n get: <T = unknown>(url: string, opts?: RequestOptions) => request<T>('GET', url, undefined, opts),\n post: <T = unknown>(url: string, data?: unknown, opts?: RequestOptions) => request<T>('POST', url, data, opts),\n put: <T = unknown>(url: string, data?: unknown, opts?: RequestOptions) => request<T>('PUT', url, data, opts),\n delete: <T = unknown>(url: string, opts?: RequestOptions) => request<T>('DELETE', url, undefined, opts),\n patch: <T = unknown>(url: string, data?: unknown, opts?: RequestOptions) => request<T>('PATCH', url, data, opts),\n request: <T = unknown>(opts: RequestOptions & { url: string; method?: string }) => {\n const { url, method = 'GET', ...rest } = opts\n return request<T>(method, url, undefined, rest)\n },\n instance,\n }\n}\n","import { z } from 'zod'\n\nexport const baseSchema = z.object({\n type: z.string().describe('组件类型'),\n storeId: z\n .string()\n .optional()\n .describe(\n '存储 ID。用于存储表单编辑、Service 组件(目前未支持) 发起 HTTP 请求产生的值。组件间交互时用到,数据会以此 ID 作为 key 存储到 Map 中。',\n ),\n storeIdRef: z\n .string()\n .optional()\n .describe('关联组件的 ID,会根据此 ID 去 store 中查找数据,关联的数据会可以被组件访问。'),\n})\n\nexport type BaseSchema = z.infer<typeof baseSchema>\n","import { string, z } from 'zod'\n\nimport { baseSchema } from './base'\n\nexport const buttonSchema = baseSchema\n .extend({\n type: z.literal('button'),\n code: z.string().optional().describe('权限编号'),\n buttonType: z\n .enum(['primary', 'default', 'dashed', 'link', 'text'])\n .optional()\n .describe('按钮类型,影响按钮的显示样式'),\n action: z.enum(['modal', 'download']).optional(),\n text: z.string().optional(),\n data: z.any().optional().describe('自定义数据'),\n method: z.enum(['GET', 'POST']).optional().describe('请求方法,默认 GET'),\n url: string().optional().describe('请求地址'),\n params: z.record(z.string(), z.any()).optional().describe('请求时携带的请求参数'),\n body: z.record(z.string(), z.any()).optional().describe('请求携带的请求体'),\n showLoading: z.boolean().default(true).describe('是否显示加载状态'),\n modal: z\n .object({\n title: z.string(),\n body: z.any().array().optional(),\n data: z.record(z.string(), z.any()).optional(),\n width: z.number().optional(),\n })\n .optional(),\n })\n .refine(\n data => {\n // 当 action 是 'download' 时,url 字段必须存在且不为空\n if (data.action === 'download' && !data.url) {\n return false\n }\n\n return true\n },\n {\n message: \"When action is 'download', 'url' is required.\",\n path: ['url'],\n },\n )\n .refine(\n data => {\n // 当 action 是 'dialog' 时,dialog 字段必须存在且不为空\n if (data.action === 'modal' && !data.modal) {\n return false\n }\n\n return true\n },\n {\n message: \"When action is 'modal', 'modal' field is required.\",\n path: ['modal'],\n },\n )\n\nexport type ButtonSchema = z.infer<typeof buttonSchema>\n","import { z } from 'zod'\n\nimport { baseSchema } from './base'\n\nconst baseCardSchema = baseSchema.extend({\n type: z.literal('card'),\n title: z.string().optional(),\n extra: z.any().array().optional(),\n})\n\nconst cardBodySchema = z.lazy(() => z.any().array())\n\ntype Card = z.infer<typeof baseCardSchema> & {\n body?: z.infer<typeof cardBodySchema>\n}\n\nexport const cardSchema: z.ZodType<Card> = baseCardSchema.extend({\n body: cardBodySchema.optional(),\n})\n\nexport type CardSchema = z.infer<typeof cardSchema>\n","import { z } from 'zod'\n\nimport { baseSchema } from './base'\n\nexport const formItemSchema = baseSchema.extend({\n label: z.string(),\n name: z.string(),\n preserve: z.boolean().optional(),\n span: z.number().optional().describe('栅格占位格数'),\n value: z.any().optional().describe('字段默认值,会作为 Form.Item 的 initialValue'),\n rules: z\n .object({\n type: z.enum(['string', 'number', 'boolean', 'integer']).optional().describe('字段数据类型'),\n required: z.boolean().optional().describe('是否为必选字段'),\n message: z.string().optional().describe('错误信息,不设置时会通过模板自动生成'),\n min: z\n .number()\n .optional()\n .describe('必须设置 type:string 类型为字符串最小长度;number 类型时为最小值;array 类型时为数组最小长度'),\n max: z\n .number()\n .optional()\n .describe('必须设置 type:string 类型为字符串最大长度;number 类型时为最大值;array 类型时为数组最大长度'),\n })\n .array()\n .optional()\n .describe('表单校验规则'),\n})\n\nexport type FormItemSchema = z.infer<typeof formItemSchema>\n","import { z } from 'zod'\n\nimport { formItemSchema } from './form-item'\n\nexport const datePickerSchema = formItemSchema.extend({\n type: z.literal('date-picker'),\n showTime: z.boolean().optional().describe('是否显示时间选择器'),\n showNow: z.boolean().optional().describe('显示当前日期时间的快捷选择'),\n showWeek: z.boolean().optional().describe('展示当前周'),\n utc: z.boolean().optional().describe('是否使用UTC时间'),\n})\n\nexport type DatePickerSchema = z.infer<typeof datePickerSchema>\n","import { z } from 'zod'\n\nimport { formItemSchema } from './form-item'\n\nexport const dateRangeSchema = formItemSchema\n .extend({\n type: z.literal('date-range'),\n allowEmpty: z.tuple([z.boolean(), z.boolean()]).optional().describe('是否允许为空'),\n showTime: z.boolean().optional().describe('是否显示时间选择器'),\n utc: z.boolean().optional().describe('是否使用UTC时间'),\n })\n .describe('日期范围选择器。该组件的值为数组类型,需要自己做映射。')\n\nexport type DateRangeSchema = z.infer<typeof dateRangeSchema>\n","import { z } from 'zod'\n\nimport { baseSchema } from './base'\n\n/**\n * 描述列表组件,用于展示一组描述信息\n * 接受的数据类型\n * {\n * label: string | number\n * value: string | number\n * }[]\n */\n\nexport const descriptionsSchema = baseSchema\n .extend({\n type: z.literal('descriptions'),\n title: z.string().optional().describe('标题'),\n dataIndex: z.string().optional().describe('JMESPath'),\n dataSource: z.any().optional().describe('数据源'),\n column: z.number().optional().describe('列数'),\n })\n\n .describe('描述列表组件,用于展示一组描述信息')\n\nexport type DescriptionsSchema = z.infer<typeof descriptionsSchema>\n","import { z } from 'zod'\n\nimport { baseSchema } from './base'\n\nexport const divSchema = baseSchema.extend({\n type: z.literal('div'),\n body: z.any().array().optional().describe('子元素'),\n style: z.record(z.string(), z.any()).optional().describe('样式'),\n})\n\nexport type DivSchema = z.infer<typeof divSchema>\n","import { z } from 'zod'\n\nimport { baseSchema } from './base'\n\nexport const flexSchema = baseSchema.extend({\n type: z.literal('flex'),\n vertical: z.boolean().optional().describe('flex 主轴的方向是否垂直,使用 flex-direction: column'),\n wrap: z.boolean().optional().describe('设置元素单行显示还是多行显示'),\n justify: z\n .enum(['flex-start', 'center', 'flex-end', 'space-between', 'space-around', 'space-evenly'])\n .optional()\n .describe('设置元素在主轴方向上的对齐方式'),\n align: z\n .enum(['flex-start', 'center', 'flex-end', 'baseline', 'stretch'])\n .optional()\n .describe('设置元素在交叉轴方向上的对齐方式'),\n gap: z.union([z.number(), z.string()]).optional().describe('设置网格之间的间隙'),\n body: z.any().array().optional().describe('子元素'),\n style: z.record(z.string(), z.any()).optional().describe('样式'),\n})\n\nexport type FlexSchema = z.infer<typeof flexSchema>\n","import { z } from 'zod'\n\nimport { baseSchema } from './base'\n\nexport const formSchema = baseSchema.extend({\n type: z.literal('form'),\n name: z.string().optional(),\n preserve: z.boolean().optional(),\n fields: z.any().array().optional().describe('表单项配置'),\n initialValues: z.record(z.string(), z.any()).optional().describe('设置表单的初始值'),\n layout: z\n .union([z.literal('horizontal'), z.literal('inline'), z.literal('vertical')])\n .default('horizontal')\n .describe('表单布局'),\n labelWidth: z\n .union([z.number(), z.string()])\n .optional()\n .describe('标签宽度,当为数字时表示在 24 列的栅格中占据多少列,当为 string 时使用 flex 布局'),\n labelAlign: z.enum(['left', 'right']).optional().describe('标签对齐方式'),\n clearOnDestroy: z.boolean().optional().describe('当表单被卸载时清空表单值'),\n gutter: z\n .union([\n z.number().describe('横向间隔'),\n z.tuple([z.number().describe('横向间隔'), z.number().describe('纵向间隔')]),\n ])\n .default(10)\n .describe('Grid 栅格间隔'),\n})\n\nexport type FormSchema = z.infer<typeof formSchema>\n","import { z } from 'zod'\n\nimport { baseSchema } from './base'\n\nexport const tableSchema = baseSchema\n .extend({\n type: z.literal('table'),\n rowKey: z.string().optional().describe('表格行 key 的取值,唯一标识'),\n columns: z\n .object({\n title: z.string(),\n dataIndex: z.string().optional().describe('数据源的字段名,支持点语法'),\n width: z.union([z.number(), z.string()]).optional(),\n align: z.enum(['left', 'right', 'center']).optional(),\n tpl: z.string().optional().describe('模板字符串。支持模板字符串,可以在此处做数据映射。(暂时不支持)'),\n })\n .array()\n .optional()\n .describe('表格列配置'),\n footer: z.any().array().optional().describe('表格底部'),\n api: z.string().optional().describe('数据查询地址,只支持 GET 请求,优先级高于 data'),\n data: z.union([z.any().array(), z.string()]).optional().describe('表格数据源,可以是数组或者变量。'),\n bordered: z.boolean().optional(),\n size: z.enum(['small', 'middle', 'large']).default('middle'),\n tableLayout: z\n .enum(['fixed', 'auto'])\n .optional()\n .describe('表格元素的 table-layout 属性,设为 fixed 表示内容不会影响列的布局'),\n pagination: z\n .union([\n z.literal(false),\n z.object({\n current: z.number().optional(),\n pageSize: z.number().optional(),\n total: z.number().optional(),\n }),\n ])\n .default(false)\n .describe('分页配置'),\n })\n .describe('表格组件,如果需要发起请求,建议使用 query-list。')\n\nexport type TableSchema = z.infer<typeof tableSchema>\n","import { z } from 'zod'\n\nimport { baseSchema } from './base'\nimport { buttonSchema } from './button'\nimport { formSchema } from './form'\nimport { tableSchema } from './table'\n\n/**\n * 无限列表组件\n * 接口返回的数据格式\n * {\n * rows: any[]\n * rowKey: string\n * hasMore: boolean\n * }\n */\n\nexport const infiniteListSchema = baseSchema.extend({\n type: z.literal('infinite-list'),\n url: z.string(),\n params: z.record(z.string(), z.any()).optional().describe('查询参数。支持模板字符串,可以在此处做数据映射。'),\n code: z.string().optional().describe('权限编号'),\n extra: z.any().array().optional().describe('表格额外配置'),\n actions: buttonSchema.array().optional().describe('表格操作。会自动把该行的表格数据沿着组件树逐级往下传递。'),\n formLayout: formSchema.shape.layout,\n gutter: formSchema.shape.gutter,\n fields: formSchema.shape.fields,\n initialValues: formSchema.shape.initialValues,\n rowKey: tableSchema.shape.rowKey,\n tableLayout: tableSchema.shape.tableLayout,\n footer: tableSchema.shape.footer,\n columns: tableSchema.shape.columns,\n})\n\nexport type InfiniteListSchema = z.infer<typeof infiniteListSchema>\n","import { z } from 'zod'\n\nimport { formItemSchema } from './form-item'\n\nexport const inputNumberSchema = formItemSchema.extend({\n type: z.literal('input-number'),\n clearable: z.boolean().optional(),\n min: z.number().optional(),\n max: z.number().optional(),\n step: z.number().optional(),\n width: z.string().default('100px').describe('宽度'),\n controls: z.boolean().default(false).describe('是否使用控制按钮'),\n})\n\nexport type InputNumberSchema = z.infer<typeof inputNumberSchema>\n","import { z } from 'zod'\n\nimport { formItemSchema } from './form-item'\n\nexport const inputTextSchema = formItemSchema.extend({\n type: z.literal('input-text'),\n clearable: z.boolean().optional(),\n})\n\nexport type InputTextSchema = z.infer<typeof inputTextSchema>\n","import { z } from 'zod'\n\nimport { baseSchema } from './base'\n\nexport const linkSchema = baseSchema.extend({\n type: z.literal('link'),\n text: z.string().optional(),\n href: z.string(),\n target: z.enum(['_blank', '_self', '_parent', '_top']).default('_blank'),\n params: z.record(z.string(), z.any()).optional().describe('跳转时携带的查询参数'),\n})\n\nexport type LinkSchema = z.infer<typeof linkSchema>\n","import { z } from 'zod'\n\nimport { baseSchema } from './base'\nimport { buttonSchema } from './button'\nimport { formSchema } from './form'\nimport { tableSchema } from './table'\n\n/**\n * 查询列表组件\n * 接口返回的数据格式\n * {\n * rows: any[]\n * total: number\n * }\n */\n\nexport const queryListSchema = baseSchema.extend({\n type: z.literal('query-list'),\n identifier: z.string().optional().describe('组件唯一标识,未提供时自动生成'),\n url: z.string(),\n code: z.string().optional().describe('权限编号'),\n method: z.enum(['GET', 'POST']).default('GET'),\n onePage: z.boolean().optional(),\n headers: z.record(z.string(), z.any()).optional(),\n body: z.record(z.string(), z.any()).optional().describe('请求体。支持模板字符串,可以在此处做数据映射。'),\n params: z.record(z.string(), z.any()).optional().describe('查询参数。支持模板字符串,可以在此处做数据映射。'),\n extra: z.any().array().optional().describe('表格额外配置'),\n actions: buttonSchema.array().optional().describe('表格操作。会自动把该行的表格数据沿着组件树逐级往下传递。'),\n buttonsAlign: z.enum(['left', 'right', 'bottom']).optional(),\n formLayout: formSchema.shape.layout,\n gutter: formSchema.shape.gutter,\n fields: formSchema.shape.fields,\n initialValues: formSchema.shape.initialValues,\n rowKey: tableSchema.shape.rowKey,\n tableLayout: tableSchema.shape.tableLayout,\n footer: tableSchema.shape.footer,\n columns: tableSchema.shape.columns,\n})\n\nexport type QueryListSchema = z.infer<typeof queryListSchema>\n","import { z } from 'zod'\n\nimport { formItemSchema } from './form-item'\n\nexport const selectSchema = formItemSchema.extend({\n type: z.literal('select'),\n allowClear: z.boolean().optional().describe('是否显示清除按钮'),\n virtual: z.boolean().optional().describe('是否开启虚拟滚动,数据量大时开启可以提高性能'),\n showSearch: z.boolean().optional().describe('是否可搜索'),\n width: z.string().default('100px').describe('宽度'),\n options: z\n .array(z.object({ label: z.string(), value: z.string() }))\n .optional()\n .describe('选项列表'),\n optionFilterProp: z.string().default('label').describe('搜索过滤字段'),\n source: z.string().optional().describe('数据源'),\n})\n\nexport type SelectSchema = z.infer<typeof selectSchema>\n","import { z } from 'zod'\n\nimport { baseSchema } from './base'\n\nexport const serviceSchema = baseSchema\n .extend({\n type: z.literal('service'),\n method: z.enum(['GET', 'POST']).optional(),\n url: z.string().optional(),\n params: z.record(z.string(), z.any()).optional(),\n body: z.any().optional(),\n })\n .describe('数据请求组件,用于调用外部服务,支持 GET 和 POST 请求,返回的数据会存储到 store 中')\n\nexport type ServiceSchema = z.infer<typeof serviceSchema>\n","import { z } from 'zod'\n\nimport { baseSchema } from './base'\n\nexport const spanSchema = baseSchema\n .extend({\n type: z.literal('span'),\n text: z.string().describe('文字节点'),\n })\n .describe('插入 span 标签,用于输出文字或字符串模板')\n\nexport type SpanSchema = z.infer<typeof spanSchema>\n","import { z } from 'zod'\n\nimport { baseSchema } from './base'\n\nexport const viewportSchema = baseSchema.extend({\n type: z.literal('viewport'),\n body: z.any().array().optional().describe('视窗内容'),\n data: z.record(z.string(), z.any()).optional().describe('视窗数据'),\n})\n\nexport type ViewportSchema = z.infer<typeof viewportSchema>\n","import { z } from 'zod'\n\nimport type { BaseSchema } from './base'\nimport { baseSchema } from './base'\nimport type { ButtonSchema } from './button'\nimport { buttonSchema } from './button'\nimport type { CardSchema } from './card'\nimport { cardSchema } from './card'\nimport type { DatePickerSchema } from './date-picker'\nimport { datePickerSchema } from './date-picker'\nimport type { DateRangeSchema } from './date-range'\nimport { dateRangeSchema } from './date-range'\nimport type { DescriptionsSchema } from './descriptions'\nimport { descriptionsSchema } from './descriptions'\nimport type { DivSchema } from './div'\nimport { divSchema } from './div'\nimport type { FlexSchema } from './flex'\nimport { flexSchema } from './flex'\nimport type { FormSchema } from './form'\nimport { formSchema } from './form'\nimport type { FormItemSchema, formItemSchema } from './form-item'\nimport { infiniteListSchema } from './infinite-list'\nimport type { InputNumberSchema } from './input-number'\nimport { inputNumberSchema } from './input-number'\nimport type { InputTextSchema } from './input-text'\nimport { inputTextSchema } from './input-text'\nimport type { LinkSchema } from './link'\nimport { linkSchema } from './link'\nimport type { QueryListSchema } from './query-list'\nimport { queryListSchema } from './query-list'\nimport type { SelectSchema } from './select'\nimport { selectSchema } from './select'\nimport type { ServiceSchema } from './service'\nimport { serviceSchema } from './service'\nimport type { SpanSchema } from './span'\nimport { spanSchema } from './span'\nimport type { TableSchema } from './table'\nimport { tableSchema } from './table'\nimport type { ViewportSchema } from './viewport'\nimport { viewportSchema } from './viewport'\n\nconst _schemaUnion = z.union([\n buttonSchema,\n cardSchema,\n datePickerSchema,\n dateRangeSchema,\n descriptionsSchema,\n divSchema,\n flexSchema,\n formSchema,\n infiniteListSchema,\n inputNumberSchema,\n inputTextSchema,\n linkSchema,\n queryListSchema,\n selectSchema,\n serviceSchema,\n spanSchema,\n tableSchema,\n viewportSchema,\n descriptionsSchema,\n])\n\ntype SchemaUnion = z.infer<typeof _schemaUnion>\n\nexport type SchemaType = SchemaUnion['type']\n\nexport {\n baseSchema,\n buttonSchema,\n cardSchema,\n datePickerSchema,\n dateRangeSchema,\n descriptionsSchema,\n divSchema,\n flexSchema,\n formItemSchema,\n formSchema,\n infiniteListSchema,\n inputNumberSchema,\n inputTextSchema,\n linkSchema,\n queryListSchema,\n selectSchema,\n serviceSchema,\n spanSchema,\n tableSchema,\n viewportSchema,\n}\n\nexport type {\n BaseSchema,\n ButtonSchema,\n CardSchema,\n DatePickerSchema,\n DateRangeSchema,\n DescriptionsSchema,\n DivSchema,\n FlexSchema,\n FormItemSchema,\n FormSchema,\n InputNumberSchema,\n InputTextSchema,\n LinkSchema,\n QueryListSchema,\n SelectSchema,\n ServiceSchema,\n SpanSchema,\n TableSchema,\n ViewportSchema,\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { create } from 'zustand'\n\ninterface State {\n dataMap: Map<string, any>\n}\n\nexport const useDataStore = create<State>()(() => ({\n dataMap: new Map(),\n}))\n\nexport const setStoreData = (key: string, value: any) => {\n useDataStore.setState(prev => ({ dataMap: new Map(prev.dataMap).set(key, value) }))\n}\n\nexport const getStoreData = (key?: string) => {\n if (key) {\n return useDataStore.getState().dataMap.get(key)\n }\n}\n","// 用于匹配字符串变量\nexport const STRING_VAR_REG = /^\\${(.+)}$/\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { Dayjs } from 'dayjs'\nimport { search } from 'jmespath'\n\nimport { STRING_VAR_REG } from '../constants'\n\ntype ValueOrNestedObject<T = any> = {\n [key: string]: T | ValueOrNestedObject<T>\n}\n\ntype Replaceable = string | ValueOrNestedObject\n\nexport function replaceValueWithJMESPath(source: object, target: object) {\n function replace(item: Replaceable): Replaceable {\n if (typeof item === 'string') {\n // 检查字符串是否符合 `${}` 形式\n const match = item.match(STRING_VAR_REG)\n if (match) {\n // 使用 JMESPath 查询 source 对象\n const result = search(source, match[1])\n return result\n }\n return item // 不是 `${}` 形式的字符串,保留原始值\n } else if (Array.isArray(item)) {\n return item.map(replace) // 递归处理数组元素\n } else if (typeof item === 'object' && item !== null) {\n const newObj: ValueOrNestedObject = {}\n\n Object.keys(item).forEach(key => {\n newObj[key] = replace(item[key])\n })\n\n return newObj\n }\n return item // 其他类型的值,保留原始值\n }\n\n return replace(target)\n}\n\nexport const addUtcOffset = (date: Dayjs) => {\n return date.clone().add(date.utcOffset(), 'minutes')\n}\n\nexport const minusUtcOffset = (date: Dayjs) => {\n return date.clone().add(-date.utcOffset(), 'minutes')\n}\n","import { useEffect, useState } from 'react'\nimport type { ZodType } from 'zod'\n\nimport type { BaseSchema } from '../schemas'\n\nexport function withParsedData<Schema extends BaseSchema>(schema: ZodType<Schema>) {\n return function <P extends object>(WrappedComponent: React.ComponentType<P & { parsedData: Schema }>) {\n const WithParsedDataComponent = (props: P & { data: Schema }) => {\n const { data, ...restProps } = props\n const [parsedData, setParsedData] = useState<Schema | null>(null)\n\n useEffect(() => {\n // NOTICE: 不要在此 catch error,让外部的 react-error-boundary 捕获错误\n const parsed = schema.parse(data)\n setParsedData(parsed)\n }, [data])\n\n if (!parsedData) {\n return null\n }\n\n return <WrappedComponent {...(restProps as P)} parsedData={parsedData} />\n }\n\n WithParsedDataComponent.displayName = `withParsedData(${WrappedComponent.displayName || WrappedComponent.name || 'Component'})`\n\n return WithParsedDataComponent\n }\n}\n","import { AuthButton, useModal } from '@flow97/react-toolkit'\nimport { Skeleton } from 'antd'\nimport { saveAs } from 'file-saver'\nimport { search } from 'jmespath'\nimport type { ReactNode } from 'react'\nimport { useState } from 'react'\nimport { createPortal } from 'react-dom'\n\nimport { renderArray } from '../core'\nimport { useKy } from '../libs/useKy'\nimport type { ButtonSchema } from '../schemas'\nimport { buttonSchema } from '../schemas'\nimport { getStoreData, setStoreData, useDataStore } from '../stores'\nimport { replaceValueWithJMESPath } from '../utils'\nimport { withParsedData } from './base'\n\nconst ModalButtonRenderer = <S extends object>({ data, source }: { data: ButtonSchema; source?: S }) => {\n const { text, buttonType, modal, storeIdRef, storeId, method, url, params, body, ...rest } = data\n\n const [content, setContent] = useState<ReactNode | null>(null)\n const kyClient = useKy()\n\n const { show, modal: modalElement } = useModal({\n title: modal?.title,\n content,\n width: modal?.width,\n destroyOnClose: true,\n afterOpen: async () => {\n setContent(<Skeleton />)\n\n let _content\n\n if (url) {\n const response = await kyClient.request<{ data: { data: unknown } }>({\n method,\n url,\n searchParams: params && replaceValueWithJMESPath(getStoreData(storeIdRef), params),\n json: body && replaceValueWithJMESPath(getStoreData(storeIdRef), body),\n })\n\n if (storeId) {\n setStoreData(storeId, response.data.data)\n }\n\n _content = renderArray(modal?.body, (response.data.data as object) || undefined)\n } else {\n _content = renderArray(modal?.body, source)\n }\n setContent(_content)\n },\n })\n\n return (\n <>\n <AuthButton {...rest} type={buttonType} onClick={show}>\n {text}\n </AuthButton>\n {createPortal(modalElement, document.body)}\n </>\n )\n}\n\nconst DownloadButtonRenderer = ({ data }: { data: ButtonSchema }) => {\n const { text, buttonType, url, method, params, body, storeIdRef, action: _action, ...rest } = data\n const { dataMap } = useDataStore()\n const kyClient = useKy()\n\n const onClick = async () => {\n const storeData = storeIdRef ? dataMap.get(storeIdRef) : null\n const newUrl = url!.replace(/\\$\\{([^}]+)\\}/g, (_match, key) => search(storeData, key) ?? '')\n\n const kyOptions = {\n method,\n searchParams: params,\n json: body,\n }\n // 使用 instance 获取原始 Response 以访问 headers\n const response = await kyClient.instance(newUrl, kyOptions)\n\n const header = response.headers.get('content-disposition')\n let filename = 'unknown'\n const filenameMatch = header?.match(/filename[^;=\\n]*=((['\"]).*?\\2|[^;\\n]*)/)\n filename = filenameMatch?.[1] || filename\n const blob = await response.blob()\n saveAs(blob, filename)\n }\n\n return (\n <AuthButton {...rest} type={buttonType} onClick={onClick}>\n {text}\n </AuthButton>\n )\n}\n\nexport const ButtonRenderer = withParsedData(buttonSchema)<{ source?: object }>(({ parsedData, source }) => {\n const { action, code, text, buttonType, params, body, storeIdRef, showLoading } = parsedData\n const { dataMap } = useDataStore()\n const storeData = storeIdRef ? dataMap.get(storeIdRef) : null\n const newParams = params && replaceValueWithJMESPath(storeData, params)\n const newBody = body && replaceValueWithJMESPath(storeData, body)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const newData = { ...parsedData, params: newParams, body: newBody } as any\n\n if (action === 'modal') {\n return <ModalButtonRenderer data={newData} source={source} />\n } else if (action === 'download') {\n return <DownloadButtonRenderer data={newData} />\n }\n\n return (\n <AuthButton code={code} type={buttonType} showLoading={showLoading}>\n {text}\n </AuthButton>\n )\n})\n","import { Card } from 'antd'\n\nimport { renderArray } from '../core'\nimport { cardSchema } from '../schemas'\nimport { withParsedData } from './base'\n\nexport const CardRenderer = withParsedData(cardSchema)<{ source?: object }>(({ parsedData, source }) => {\n const { title, body } = parsedData\n const children = renderArray(body, source)\n return <Card title={title}>{children}</Card>\n})\n","import { DatePicker } from 'antd'\nimport type { Dayjs } from 'dayjs'\nimport dayjs from 'dayjs'\nimport type { FC } from 'react'\n\nimport type { DatePickerSchema } from '../schemas'\nimport { addUtcOffset, minusUtcOffset } from '../utils'\n\ninterface UnixDatePickerProps extends Pick<DatePickerSchema, 'showTime' | 'showNow' | 'showWeek' | 'utc'> {\n value?: number\n onChange?: (value?: number) => void\n}\n\nconst UnixDatePicker: FC<UnixDatePickerProps> = props => {\n const { value, onChange, utc, ...rest } = props\n\n const internelValue =\n typeof value === 'number' ? (utc ? minusUtcOffset(dayjs(value * 1000)) : dayjs(value * 1000)) : null\n\n const onChangeHandler = (date: Dayjs) => {\n onChange?.(utc ? addUtcOffset(date).unix() : date.unix())\n }\n\n return <DatePicker {...rest} value={internelValue} onChange={onChangeHandler} />\n}\n\nexport default UnixDatePicker\n","import { DatePicker } from 'antd'\nimport type { RangePickerProps } from 'antd/es/date-picker'\nimport dayjs, { extend } from 'dayjs'\nimport utcPlugin from 'dayjs/plugin/utc'\nimport type { FC } from 'react'\n\nimport type { DateRangeSchema } from '../schemas'\nimport { addUtcOffset, minusUtcOffset } from '../utils'\n\nextend(utcPlugin)\n\ninterface UnixRangePickerProps extends Pick<DateRangeSchema, 'utc' | 'showTime' | 'allowEmpty'> {\n value?: [number | null, number | null]\n onChange?: (value?: [number | null, number | null]) => void\n}\n\nconst UnixRangePicker: FC<UnixRangePickerProps> = props => {\n const { value, onChange, utc, ...rest } = props\n\n const internelValue: RangePickerProps['value'] = [\n value?.[0] ? (utc ? minusUtcOffset(dayjs(value[0] * 1000)) : dayjs(value[0] * 1000)) : null,\n value?.[1] ? (utc ? minusUtcOffset(dayjs(value[1] * 1000)) : dayjs(value[1] * 1000)) : null,\n ]\n\n const onChangeHandler: RangePickerProps['onChange'] = range => {\n onChange?.([\n range?.[0] ? (utc ? addUtcOffset(range[0]).unix() : range[0].unix()) : null,\n range?.[1] ? (utc ? addUtcOffset(range[1]).unix() : range[1].unix()) : null,\n ])\n }\n\n return <DatePicker.RangePicker {...rest} value={internelValue} onChange={onChangeHandler} />\n}\n\nexport default UnixRangePicker\n","import { Form } from 'antd'\nimport type { ReactElement } from 'react'\nimport type { ZodType } from 'zod'\n\nimport type { FormItemSchema } from '../schemas'\nimport { withParsedData } from './base'\n\nexport function withFormItem<Schema extends FormItemSchema>(schema: ZodType<Schema>) {\n return function (\n getChildren: (props: Omit<Schema, 'label' | 'name' | 'preserve' | 'rules' | 'value'>) => ReactElement,\n ) {\n return withParsedData(schema)(({ parsedData, ...restProps }) => {\n const { label, name, preserve, rules, value, ...childrenProps } = parsedData\n\n return (\n <Form.Item label={label} name={name} rules={rules} preserve={preserve} initialValue={value} {...restProps}>\n {getChildren(childrenProps)}\n </Form.Item>\n )\n })\n }\n}\n","import { UnixDatePicker } from '../components'\nimport { datePickerSchema } from '../schemas'\nimport { withFormItem } from './form-item'\n\nexport const DatePickerRenderer = withFormItem(datePickerSchema)(childrenProps => {\n return <UnixDatePicker {...childrenProps} />\n})\n","import { UnixRangePicker } from '../components'\nimport { dateRangeSchema } from '../schemas'\nimport { withFormItem } from './form-item'\n\nexport const DateRangeRenderer = withFormItem(dateRangeSchema)(childrenProps => {\n return <UnixRangePicker {...childrenProps} />\n})\n","import type { DescriptionsProps } from 'antd'\nimport { Descriptions } from 'antd'\nimport { search } from 'jmespath'\nimport { useEffect, useState } from 'react'\n\nimport { descriptionsSchema } from '../schemas/descriptions'\nimport { useDataStore } from '../stores'\nimport { withParsedData } from './base'\n\nexport const DescriptionsRenderer = withParsedData(descriptionsSchema)(({ parsedData }) => {\n const { title, dataSource, dataIndex, storeIdRef, ...rest } = parsedData\n const { dataMap } = useDataStore()\n const [items, setItems] = useState<DescriptionsProps['items']>([])\n\n useEffect(() => {\n let _dataSource\n\n if (typeof dataSource === 'object') {\n _dataSource = dataSource\n } else if (storeIdRef) {\n _dataSource = dataMap.get(storeIdRef)\n }\n\n _dataSource = dataIndex ? search(_dataSource, dataIndex) : _dataSource\n\n const _items: DescriptionsProps['items'] = _dataSource?.map(\n (item: { label: string | number; value: string | number }) => ({\n key: item.label,\n label: item.label,\n children: item.value,\n }),\n )\n\n setItems(_items)\n }, [dataMap])\n\n return <Descriptions {...rest} title={title} items={items} />\n})\n","import { renderArray } from '../core'\nimport { divSchema } from '../schemas'\nimport { withParsedData } from './base'\n\nexport const DivRenderer = withParsedData(divSchema)<{ source?: object }>(({ parsedData, source }) => {\n const { body, style } = parsedData\n const children = renderArray(body, source)\n return <div style={style}>{children}</div>\n})\n","import { Flex } from 'antd'\n\nimport { renderArray } from '../core'\nimport { flexSchema } from '../schemas'\nimport { withParsedData } from './base'\n\nexport const FlexRenderer = withParsedData(flexSchema)<{ source?: object }>(({ parsedData, source }) => {\n const { body, style, ...rest } = parsedData\n const children = renderArray(body, source)\n\n return (\n <Flex {...rest} style={style}>\n {children}\n </Flex>\n )\n})\n","import type { FormInstance, FormProps } from 'antd'\nimport { Col, Form, Row } from 'antd'\n\nimport { getRenderer } from '../core'\nimport type { SchemaType } from '../schemas'\nimport { formSchema } from '../schemas'\nimport { setStoreData } from '../stores'\nimport { withParsedData } from './base'\n\nexport const FormRenderer = withParsedData(formSchema)<{\n form?: FormInstance\n externalStoreId?: string\n}>(({ parsedData, form, externalStoreId }) => {\n const [formInstance] = Form.useForm()\n const _from = form || formInstance\n const { storeId, fields, labelWidth, gutter, ...rest } = parsedData\n // query-list 调用此组件是,storeId 为空,需要从外部传入\n const _storeId = storeId || externalStoreId\n\n const children = fields?.map((item, index) => {\n const { type, span } = item\n const RendererComponent = getRenderer(type as SchemaType)\n\n if (RendererComponent) {\n const key = `${type}${index}`\n return (\n <Col span={span} key={key}>\n <RendererComponent data={item} />\n </Col>\n )\n }\n\n return null\n })\n\n const labelCol = typeof labelWidth === 'number' ? { span: labelWidth } : { flex: labelWidth }\n\n const onValuesChange: FormProps['onValuesChange'] = (_, values) => {\n if (_storeId) {\n setStoreData(_storeId, values)\n }\n }\n\n return (\n <Form {...rest} form={_from} labelCol={labelCol} onValuesChange={onValuesChange}>\n <Row gutter={gutter}>{children}</Row>\n </Form>\n )\n})\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { InfiniteListPayload, InfiniteListRef } from '@flow97/react-toolkit'\nimport { InfiniteList } from '@flow97/react-toolkit'\nimport type { FormInstance, TableColumnType } from 'antd'\nimport { Typography } from 'antd'\nimport { isPlainObject, merge } from 'lodash-es'\nimport { useRef } from 'react'\n\nimport { renderArray } from '../core'\nimport { formSchema } from '../schemas'\nimport { infiniteListSchema } from '../schemas/infinite-list'\nimport { replaceValueWithJMESPath } from '../utils'\nimport { withParsedData } from './base'\nimport { FormRenderer } from './form'\n\ninterface ListData {\n rows: any[]\n rowKey: string\n hasMore: boolean\n}\n\ninterface ApiResponse {\n status: number\n msg: string\n data: ListData\n}\n\nexport const InfiniteListRenderer = withParsedData(infiniteListSchema)(({ parsedData }) => {\n const { storeId, columns, url, footer, actions, fields, gutter, initialValues, formLayout, params, extra, ...rest } =\n parsedData\n const ref = useRef<InfiniteListRef<any, any, ApiResponse>>(null)\n\n // 为每个渲染器实例生成唯一 ID\n const identifier = `infinite-list-${storeId || 'default'}-${Date.now()}`\n\n const newColumns: (TableColumnType<any> & { tpl?: string })[] = columns ? [...columns] : []\n\n // 处理对象字面量或 JSON 字符串\n newColumns.forEach(column => {\n column.render = (value: any) => {\n if (isPlainObject(value)) {\n return (\n <Typography.Paragraph style={{ maxHeight: 200, overflow: 'auto' }}>\n <pre>{JSON.stringify(value, null, 2)}</pre>\n </Typography.Paragraph>\n )\n } else if (typeof value === 'string') {\n try {\n const obj = JSON.parse(value)\n if (isPlainObject(obj)) {\n return (\n <Typography.Paragraph style={{ maxHeight: 200, overflow: 'auto' }}>\n <pre>{JSON.stringify(obj, null, 2)}</pre>\n </Typography.Paragraph>\n )\n }\n return value\n } catch {\n return value\n }\n } else {\n return value\n }\n }\n })\n\n if (actions) {\n newColumns.push({\n title: '操作',\n align: 'center',\n render: (record: any) => renderArray(actions, record),\n })\n }\n\n const renderForm = (form: FormInstance) => {\n const data = formSchema.parse({\n type: 'form',\n fields,\n initialValues,\n layout: formLayout,\n gutter,\n })\n return <FormRenderer data={data} form={form} externalStoreId={storeId} />\n }\n\n const renderFooter =\n footer &&\n (() => {\n // 获取最后一页的 data 字段作为 source\n const lastPageData = ref.current?.data?.[ref.current.data.length - 1]?.data\n return renderArray(footer, lastPageData)\n })\n\n const dataAdapter = {\n items: (data: ApiResponse[] | undefined, _form: FormInstance) =>\n data?.reduce((acc, curr) => acc.concat(curr?.data?.rows ?? []), [] as any[]) ?? [],\n hasMore: (lastPage: ApiResponse | undefined) => !!lastPage?.data?.hasMore,\n nextPageParam: (lastPage: ApiResponse | undefined, _allPages: ApiResponse[], currentPageParam: any) => {\n if (!lastPage?.data?.hasMore) return undefined\n return {\n rowKey: lastPage?.data?.rowKey,\n page: (currentPageParam?.page || 0) + 1,\n }\n },\n }\n\n const tableExtra = renderArray(extra)\n\n return (\n <InfiniteList\n {...rest}\n ref={ref}\n identifier={identifier}\n columns={newColumns}\n footer={renderFooter}\n dataAdapter={dataAdapter}\n renderForm={renderForm}\n tableExtra={tableExtra}\n request={{\n url,\n method: 'GET',\n searchParams: (payload: InfiniteListPayload<any>, pageParam: any) => {\n const { filters } = payload\n if (!filters) {\n return {\n rowKey: pageParam?.rowKey,\n page: pageParam?.page || 0,\n }\n }\n\n if (params) {\n return merge(\n {\n rowKey: pageParam?.rowKey,\n page: pageParam?.page || 0,\n },\n replaceValueWithJMESPath(filters, params),\n )\n } else {\n return {\n ...filters,\n rowKey: pageParam?.rowKey,\n page: pageParam?.page || 0,\n }\n }\n },\n }}\n />\n )\n})\n","import { InputNumber } from 'antd'\n\nimport { inputNumberSchema } from '../schemas'\nimport { withFormItem } from './form-item'\n\nexport const InputNumberRenderer = withFormItem(inputNumberSchema)(props => {\n const { type: _type, width, ...rest } = props\n return <InputNumber {...rest} style={{ width }} />\n})\n","import { Input } from 'antd'\n\nimport { inputTextSchema } from '../schemas'\nimport { withFormItem } from './form-item'\n\nexport const InputTextRenderer = withFormItem(inputTextSchema)(childrenProps => {\n return <Input {...childrenProps} />\n})\n","import qs from 'query-string'\n\nimport { linkSchema } from '../schemas'\nimport { withParsedData } from './base'\n\nexport const LinkRenderer = withParsedData(linkSchema)(({ parsedData }) => {\n const { type: _type, href, params, text, ...rest } = parsedData\n const url = qs.stringifyUrl({ url: href, query: params })\n return (\n <a href={url} {...rest}>\n {text}\n </a>\n )\n})\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { QueryListPayload, QueryListRef } from '@flow97/react-toolkit'\nimport { QueryList } from '@flow97/react-toolkit'\nimport { type FormInstance, type TableColumnType, Typography } from 'antd'\nimport type { AnyObject } from 'antd/es/_util/type'\nimport { isPlainObject, merge } from 'lodash-es'\nimport { useRef } from 'react'\n\nimport { renderArray } from '../core'\nimport { formSchema } from '../schemas'\nimport { queryListSchema } from '../schemas/query-list'\nimport { replaceValueWithJMESPath } from '../utils'\nimport { withParsedData } from './base'\nimport { FormRenderer } from './form'\n\ntype FormValues = AnyObject\n\ninterface ListResponse {\n status?: number\n msg?: string\n data?: {\n rows: any[]\n total: number\n }\n // 兼容直接返回 rows 和 total 的格式\n rows?: any[]\n total?: number\n}\n\nexport const QueryListRenderer = withParsedData(queryListSchema)(({ parsedData }) => {\n const {\n storeId,\n fields,\n initialValues,\n formLayout,\n columns,\n params,\n body,\n footer,\n extra,\n gutter,\n actions,\n identifier,\n url,\n method = 'GET',\n ...rest\n } = parsedData\n const ref = useRef<QueryListRef<any, FormValues, ListResponse>>(null)\n const newColumns: (TableColumnType<any> & { tpl?: string })[] = columns ? [...columns] : []\n\n // 处理对象字面量或 JSON 字符串\n newColumns.forEach(column => {\n column.render = (value: any) => {\n if (isPlainObject(value)) {\n return (\n <Typography.Paragraph style={{ maxHeight: 200, overflow: 'auto' }}>\n <pre>{JSON.stringify(value, null, 2)}</pre>\n </Typography.Paragraph>\n )\n } else if (typeof value === 'string') {\n try {\n const obj = JSON.parse(value)\n if (isPlainObject(obj)) {\n return (\n <Typography.Paragraph style={{ maxHeight: 200, overflow: 'auto' }}>\n <pre>{JSON.stringify(obj, null, 2)}</pre>\n </Typography.Paragraph>\n )\n }\n return value\n } catch {\n return value\n }\n } else {\n return value\n }\n }\n })\n\n if (actions) {\n newColumns.push({\n title: '操作',\n align: 'center',\n render: (record: any) => renderArray(actions, record),\n })\n }\n\n const renderForm = (form: FormInstance) => {\n const data = formSchema.parse({\n type: 'form',\n fields,\n initialValues,\n layout: formLayout,\n gutter,\n })\n return <FormRenderer data={data} form={form} externalStoreId={storeId} />\n }\n\n const renderFooter = footer && (() => renderArray(footer, ref.current?.data))\n\n const dataAdapter = (data?: ListResponse) => {\n // 支持两种数据格式:\n // 1. { status: 0, msg: \"ok\", data: { rows: [], total: 0 } }\n // 2. { rows: [], total: 0 }\n if (data?.data) {\n return {\n items: data.data.rows,\n total: data.data.total,\n }\n }\n return {\n items: data?.rows,\n total: data?.total,\n }\n }\n\n const getSearchParams = ({ page, size, filters }: QueryListPayload) => {\n if (params) {\n return merge(\n {\n page,\n size,\n },\n replaceValueWithJMESPath(filters, params),\n )\n } else {\n return {\n ...filters,\n page,\n size,\n }\n }\n }\n\n const getBody = ({ page, size, filters }: QueryListPayload) => {\n if (body) {\n return merge(\n {\n page,\n size,\n },\n replaceValueWithJMESPath(filters, body),\n )\n } else {\n return {\n ...filters,\n page,\n size,\n }\n }\n }\n\n const tableExtra = renderArray(extra)\n\n return (\n <QueryList<any, FormValues, ListResponse>\n identifier={identifier}\n {...rest}\n ref={ref}\n columns={newColumns}\n renderForm={renderForm}\n footer={renderFooter}\n dataAdapter={dataAdapter}\n request={{\n url,\n method,\n searchParams: getSearchParams,\n body: getBody,\n }}\n tableExtra={tableExtra}\n />\n )\n})\n","import { Select } from 'antd'\nimport { useEffect, useState } from 'react'\n\nimport { useKy } from '../libs/useKy'\nimport { selectSchema } from '../schemas/select'\nimport { withFormItem } from './form-item'\n\nexport const SelectRenderer = withFormItem(selectSchema)(childrenProps => {\n const { type: _type, options, source, width, ...rest } = childrenProps\n const [internalOptions, setInternalOptions] = useState<{ label: string; value: string | number }[]>()\n const kyClient = useKy()\n\n useEffect(() => {\n if (source) {\n kyClient\n .get<{ options: { label: string; value: string | number }[] }>(source)\n .then(response => {\n setInternalOptions(response?.options)\n })\n .catch(() => {\n setInternalOptions([])\n })\n } else if (options) {\n setInternalOptions(options)\n }\n }, [source, options])\n\n return <Select {...rest} options={internalOptions} style={{ width }} />\n})\n","import { useEffect } from 'react'\n\nimport { useKy } from '../libs/useKy'\nimport { serviceSchema } from '../schemas'\nimport { getStoreData, setStoreData } from '../stores'\nimport { replaceValueWithJMESPath } from '../utils'\nimport { withParsedData } from './base'\n\nexport const ServiceRenderer = withParsedData(serviceSchema)(({ parsedData }) => {\n const { storeId, params, url, body, storeIdRef, method } = parsedData\n const kyClient = useKy()\n\n useEffect(() => {\n const storeData = getStoreData(storeIdRef)\n const newParams = params && replaceValueWithJMESPath(storeData, params)\n const newBody = params && replaceValueWithJMESPath(storeData, body)\n\n if (url) {\n kyClient\n .request<{ data: { data: unknown } }>({\n method,\n url: url!,\n searchParams: newParams,\n json: newBody,\n })\n\n .then(res => {\n if (storeId) {\n setStoreData(storeId, res.data.data)\n }\n })\n .catch(err => {\n console.error(err)\n })\n }\n }, [])\n\n return null\n})\n","import { search } from 'jmespath'\n\nimport { spanSchema } from '../schemas/span'\nimport { withParsedData } from './base'\n\nexport const SpanRenderer = withParsedData(spanSchema)<{ source?: object }>(({ parsedData, source }) => {\n const { text } = parsedData\n\n // 使用 JMESPath 在 source 对象中查找变量,替换为变量值\n const result = text.replace(/\\$\\{(\\w+)\\}/g, (_match, varName) => {\n return search(source, varName) ?? ''\n })\n\n return <span>{result}</span>\n})\n","import { Table } from 'antd'\nimport { search } from 'jmespath'\n\nimport { STRING_VAR_REG } from '../constants'\nimport { renderArray } from '../core'\nimport { useKy } from '../libs/useKy'\nimport { tableSchema } from '../schemas/table'\nimport { useDataStore } from '../stores'\nimport { withParsedData } from './base'\n\nexport const TableRenderer = withParsedData(tableSchema)<{ source?: object }>(({ parsedData, source }) => {\n const { columns, footer, rowKey, data, api, storeIdRef, ...rest } = parsedData\n const { dataMap } = useDataStore()\n const kyClient = useKy()\n\n let dataSource: unknown[] = []\n\n if (api) {\n let storeData = null\n\n if (storeIdRef) {\n storeData = dataMap.get(storeIdRef)\n }\n\n const newUrl = api.replace(/\\$\\{([^}]+)\\}/g, (_match, key) => search(storeData, key) ?? '')\n kyClient.get<{ data: unknown }>(newUrl).then(res => {\n dataSource = Array.isArray(res.data) ? res.data : []\n })\n } else {\n if (Array.isArray(data)) {\n dataSource = data\n } else {\n // 将字符串变量转换为 JMESPath 查询\n const match = data?.match(STRING_VAR_REG)\n if (match) {\n const result = search(source, match[1])\n dataSource = result ?? []\n }\n }\n }\n\n const renderFooter = footer && (() => renderArray(footer))\n\n return <Table {...rest} rowKey={rowKey} columns={columns} footer={renderFooter} dataSource={dataSource} />\n})\n","import { renderArray } from '../core'\nimport { viewportSchema } from '../schemas'\nimport { withParsedData } from './base'\n\nexport const ViewportRenderer = withParsedData(viewportSchema)(({ parsedData }) => {\n const { body } = parsedData\n const children = renderArray(body)\n return <div>{children}</div>\n})\n","import type { FC } from 'react'\nimport { withErrorBoundary } from 'react-error-boundary'\nimport type { ZodError } from 'zod'\n\nimport { ViewportRenderer } from './renderers/viewport'\nimport type { ViewportSchema } from './schemas/viewport'\n\ninterface SchemaRendererProps {\n schema?: ViewportSchema\n}\n\nfunction fallbackRender({ error }: { error: ZodError }) {\n return <pre>{JSON.stringify(error, null, 2)}</pre>\n}\n\nconst Renderer: FC<SchemaRendererProps> = props => {\n const { schema } = props\n\n if (!schema) return null\n\n return (\n <div className=\"antd-schema\">\n <ViewportRenderer data={schema} />\n </div>\n )\n}\n\nconst SchemaRenderer = withErrorBoundary(Renderer, { fallbackRender })\n\nexport default SchemaRenderer\n","/**\n * 注册所有 renderers\n * 这个文件会在 SchemaRenderer 导入时自动执行\n */\n// 导入所有 renderers\nimport { registerRenderer } from './core'\nimport { ButtonRenderer } from './renderers/button'\nimport { CardRenderer } from './renderers/card'\nimport { DatePickerRenderer } from './renderers/date-picker'\nimport { DateRangeRenderer } from './renderers/date-range'\nimport { DescriptionsRenderer } from './renderers/desciptions'\nimport { DivRenderer } from './renderers/div'\nimport { FlexRenderer } from './renderers/flex'\nimport { FormRenderer } from './renderers/form'\nimport { InfiniteListRenderer } from './renderers/infinite-list'\nimport { InputNumberRenderer } from './renderers/input-number'\nimport { InputTextRenderer } from './renderers/input-text'\nimport { LinkRenderer } from './renderers/link'\nimport { QueryListRenderer } from './renderers/query-list'\nimport { SelectRenderer } from './renderers/select'\nimport { ServiceRenderer } from './renderers/service'\nimport { SpanRenderer } from './renderers/span'\nimport { TableRenderer } from './renderers/table'\nimport { ViewportRenderer } from './renderers/viewport'\n\n// 注册所有 renderers(立即执行)\nregisterRenderer('button', ButtonRenderer)\nregisterRenderer('card', CardRenderer)\nregisterRenderer('date-picker', DatePickerRenderer)\nregisterRenderer('date-range', DateRangeRenderer)\nregisterRenderer('descriptions', DescriptionsRenderer)\nregisterRenderer('div', DivRenderer)\nregisterRenderer('flex', FlexRenderer)\nregisterRenderer('form', FormRenderer)\nregisterRenderer('infinite-list', InfiniteListRenderer)\nregisterRenderer('input-number', InputNumberRenderer)\nregisterRenderer('input-text', InputTextRenderer)\nregisterRenderer('link', LinkRenderer)\nregisterRenderer('query-list', QueryListRenderer)\nregisterRenderer('select', SelectRenderer)\nregisterRenderer('service', ServiceRenderer)\nregisterRenderer('span', SpanRenderer)\nregisterRenderer('table', TableRenderer)\nregisterRenderer('viewport', ViewportRenderer)\n\n// 导出所有 renderers\nexport {\n ButtonRenderer,\n CardRenderer,\n DatePickerRenderer,\n DateRangeRenderer,\n DescriptionsRenderer,\n DivRenderer,\n FlexRenderer,\n FormRenderer,\n InfiniteListRenderer,\n InputNumberRenderer,\n InputTextRenderer,\n LinkRenderer,\n QueryListRenderer,\n SelectRenderer,\n ServiceRenderer,\n SpanRenderer,\n TableRenderer,\n ViewportRenderer,\n}\n\n// 导出核心功能\nexport { renderArray } from './core'\n\n// 导出主组件\nexport { default as SchemaRenderer } from './schema-renderer'\n\n// 导出 Schemas\nexport * from './schemas/base'\nexport * from './schemas/button'\nexport * from './schemas/card'\nexport * from './schemas/form'\nexport * from './schemas/input-number'\nexport * from './schemas/input-text'\nexport * from './schemas/service'\nexport * from './schemas/table'\nexport * from './schemas/viewport'\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flow97/antd-schema",
3
- "version": "0.0.1",
3
+ "version": "0.0.3",
4
4
  "description": "",
5
5
  "main": "./lib/index.js",
6
6
  "type": "module",
@@ -44,7 +44,7 @@
44
44
  "react-error-boundary": "^4.1.2",
45
45
  "zod": "^3.23.8",
46
46
  "zustand": "^5.0.1",
47
- "@flow97/react-toolkit": "^0.0.1"
47
+ "@flow97/react-toolkit": "^0.0.3"
48
48
  },
49
49
  "devDependencies": {
50
50
  "@types/jmespath": "^0.15.2",
@@ -58,8 +58,8 @@
58
58
  "react-router": "^7.9.6",
59
59
  "tsup": "^8.3.5",
60
60
  "typescript": "^5.6.3",
61
- "tsconfig": "0.0.6",
62
- "@flow97/eslint-config-react": "1.1.2"
61
+ "@flow97/eslint-config-react": "1.1.2",
62
+ "tsconfig": "0.0.6"
63
63
  },
64
64
  "peerDependencies": {
65
65
  "antd": "^6.0.0",