bi-components-library 1.0.13 → 1.0.15

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/dist/index.umd.js CHANGED
@@ -1,4 +1,4 @@
1
- (function(Q,n){typeof exports=="object"&&typeof module<"u"?n(exports,require("react"),require("antd"),require("@ant-design/icons"),require("react-dom")):typeof define=="function"&&define.amd?define(["exports","react","antd","@ant-design/icons","react-dom"],n):(Q=typeof globalThis<"u"?globalThis:Q||self,n(Q.SealSeekBIComponents={},Q.React,Q.antd,Q.AntdIcons,Q.ReactDOM))})(this,function(Q,n,z,he,Qe){"use strict";var ke={exports:{}},Ee={};/**
1
+ (function(Z,n){typeof exports=="object"&&typeof module<"u"?n(exports,require("react"),require("antd"),require("@ant-design/icons"),require("react-dom")):typeof define=="function"&&define.amd?define(["exports","react","antd","@ant-design/icons","react-dom"],n):(Z=typeof globalThis<"u"?globalThis:Z||self,n(Z.SealSeekBIComponents={},Z.React,Z.antd,Z.AntdIcons,Z.ReactDOM))})(this,function(Z,n,z,he,nt){"use strict";var Ce={exports:{}},ke={};/**
2
2
  * @license React
3
3
  * react-jsx-runtime.production.js
4
4
  *
@@ -6,7 +6,7 @@
6
6
  *
7
7
  * This source code is licensed under the MIT license found in the
8
8
  * LICENSE file in the root directory of this source tree.
9
- */var Ie;function Ze(){if(Ie)return Ee;Ie=1;var t=Symbol.for("react.transitional.element"),f=Symbol.for("react.fragment");function l(r,o,y){var _=null;if(y!==void 0&&(_=""+y),o.key!==void 0&&(_=""+o.key),"key"in o){y={};for(var h in o)h!=="key"&&(y[h]=o[h])}else y=o;return o=y.ref,{$$typeof:t,type:r,key:_,ref:o!==void 0?o:null,props:y}}return Ee.Fragment=f,Ee.jsx=l,Ee.jsxs=l,Ee}var we={};/**
9
+ */var Pe;function at(){if(Pe)return ke;Pe=1;var t=Symbol.for("react.transitional.element"),f=Symbol.for("react.fragment");function l(r,s,g){var A=null;if(g!==void 0&&(A=""+g),s.key!==void 0&&(A=""+s.key),"key"in s){g={};for(var b in s)b!=="key"&&(g[b]=s[b])}else g=s;return s=g.ref,{$$typeof:t,type:r,key:A,ref:s!==void 0?s:null,props:g}}return ke.Fragment=f,ke.jsx=l,ke.jsxs=l,ke}var Te={};/**
10
10
  * @license React
11
11
  * react-jsx-runtime.development.js
12
12
  *
@@ -14,20 +14,20 @@
14
14
  *
15
15
  * This source code is licensed under the MIT license found in the
16
16
  * LICENSE file in the root directory of this source tree.
17
- */var Ve;function $e(){return Ve||(Ve=1,process.env.NODE_ENV!=="production"&&function(){function t(i){if(i==null)return null;if(typeof i=="function")return i.$$typeof===X?null:i.displayName||i.name||null;if(typeof i=="string")return i;switch(i){case A:return"Fragment";case w:return"Profiler";case u:return"StrictMode";case P:return"Suspense";case I:return"SuspenseList";case M:return"Activity"}if(typeof i=="object")switch(typeof i.tag=="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),i.$$typeof){case s:return"Portal";case j:return(i.displayName||"Context")+".Provider";case T:return(i._context.displayName||"Context")+".Consumer";case x:var O=i.render;return i=i.displayName,i||(i=O.displayName||O.name||"",i=i!==""?"ForwardRef("+i+")":"ForwardRef"),i;case q:return O=i.displayName||null,O!==null?O:t(i.type)||"Memo";case G:O=i._payload,i=i._init;try{return t(i(O))}catch{}}return null}function f(i){return""+i}function l(i){try{f(i);var O=!1}catch{O=!0}if(O){O=console;var Y=O.error,ae=typeof Symbol=="function"&&Symbol.toStringTag&&i[Symbol.toStringTag]||i.constructor.name||"Object";return Y.call(O,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",ae),f(i)}}function r(i){if(i===A)return"<>";if(typeof i=="object"&&i!==null&&i.$$typeof===G)return"<...>";try{var O=t(i);return O?"<"+O+">":"<...>"}catch{return"<...>"}}function o(){var i=U.A;return i===null?null:i.getOwner()}function y(){return Error("react-stack-top-frame")}function _(i){if(K.call(i,"key")){var O=Object.getOwnPropertyDescriptor(i,"key").get;if(O&&O.isReactWarning)return!1}return i.key!==void 0}function h(i,O){function Y(){B||(B=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",O))}Y.isReactWarning=!0,Object.defineProperty(i,"key",{get:Y,configurable:!0})}function c(){var i=t(this.type);return Z[i]||(Z[i]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),i=this.props.ref,i!==void 0?i:null}function e(i,O,Y,ae,me,ie,ve,D){return Y=ie.ref,i={$$typeof:p,type:i,key:O,props:ie,_owner:me},(Y!==void 0?Y:null)!==null?Object.defineProperty(i,"ref",{enumerable:!1,get:c}):Object.defineProperty(i,"ref",{enumerable:!1,value:null}),i._store={},Object.defineProperty(i._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(i,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(i,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:ve}),Object.defineProperty(i,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:D}),Object.freeze&&(Object.freeze(i.props),Object.freeze(i)),i}function E(i,O,Y,ae,me,ie,ve,D){var W=O.children;if(W!==void 0)if(ae)if($(W)){for(ae=0;ae<W.length;ae++)d(W[ae]);Object.freeze&&Object.freeze(W)}else console.error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else d(W);if(K.call(O,"key")){W=t(i);var ce=Object.keys(O).filter(function(_e){return _e!=="key"});ae=0<ce.length?"{key: someKey, "+ce.join(": ..., ")+": ...}":"{key: someKey}",ge[W+ae]||(ce=0<ce.length?"{"+ce.join(": ..., ")+": ...}":"{}",console.error(`A props object containing a "key" prop is being spread into JSX:
17
+ */var Oe;function rt(){return Oe||(Oe=1,process.env.NODE_ENV!=="production"&&function(){function t(i){if(i==null)return null;if(typeof i=="function")return i.$$typeof===K?null:i.displayName||i.name||null;if(typeof i=="string")return i;switch(i){case S:return"Fragment";case k:return"Profiler";case c:return"StrictMode";case P:return"Suspense";case _:return"SuspenseList";case M:return"Activity"}if(typeof i=="object")switch(typeof i.tag=="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),i.$$typeof){case o:return"Portal";case j:return(i.displayName||"Context")+".Provider";case T:return(i._context.displayName||"Context")+".Consumer";case v:var O=i.render;return i=i.displayName,i||(i=O.displayName||O.name||"",i=i!==""?"ForwardRef("+i+")":"ForwardRef"),i;case q:return O=i.displayName||null,O!==null?O:t(i.type)||"Memo";case G:O=i._payload,i=i._init;try{return t(i(O))}catch{}}return null}function f(i){return""+i}function l(i){try{f(i);var O=!1}catch{O=!0}if(O){O=console;var J=O.error,ae=typeof Symbol=="function"&&Symbol.toStringTag&&i[Symbol.toStringTag]||i.constructor.name||"Object";return J.call(O,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",ae),f(i)}}function r(i){if(i===S)return"<>";if(typeof i=="object"&&i!==null&&i.$$typeof===G)return"<...>";try{var O=t(i);return O?"<"+O+">":"<...>"}catch{return"<...>"}}function s(){var i=H.A;return i===null?null:i.getOwner()}function g(){return Error("react-stack-top-frame")}function A(i){if(Y.call(i,"key")){var O=Object.getOwnPropertyDescriptor(i,"key").get;if(O&&O.isReactWarning)return!1}return i.key!==void 0}function b(i,O){function J(){B||(B=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",O))}J.isReactWarning=!0,Object.defineProperty(i,"key",{get:J,configurable:!0})}function u(){var i=t(this.type);return $[i]||($[i]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),i=this.props.ref,i!==void 0?i:null}function e(i,O,J,ae,pe,le,xe,F){return J=le.ref,i={$$typeof:y,type:i,key:O,props:le,_owner:pe},(J!==void 0?J:null)!==null?Object.defineProperty(i,"ref",{enumerable:!1,get:u}):Object.defineProperty(i,"ref",{enumerable:!1,value:null}),i._store={},Object.defineProperty(i._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(i,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(i,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:xe}),Object.defineProperty(i,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:F}),Object.freeze&&(Object.freeze(i.props),Object.freeze(i)),i}function w(i,O,J,ae,pe,le,xe,F){var W=O.children;if(W!==void 0)if(ae)if(ee(W)){for(ae=0;ae<W.length;ae++)d(W[ae]);Object.freeze&&Object.freeze(W)}else console.error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else d(W);if(Y.call(O,"key")){W=t(i);var ce=Object.keys(O).filter(function(Ne){return Ne!=="key"});ae=0<ce.length?"{key: someKey, "+ce.join(": ..., ")+": ...}":"{key: someKey}",ye[W+ae]||(ce=0<ce.length?"{"+ce.join(": ..., ")+": ...}":"{}",console.error(`A props object containing a "key" prop is being spread into JSX:
18
18
  let props = %s;
19
19
  <%s {...props} />
20
20
  React keys must be passed directly to JSX without using spread:
21
21
  let props = %s;
22
- <%s key={someKey} {...props} />`,ae,W,ce,W),ge[W+ae]=!0)}if(W=null,Y!==void 0&&(l(Y),W=""+Y),_(O)&&(l(O.key),W=""+O.key),"key"in O){Y={};for(var be in O)be!=="key"&&(Y[be]=O[be])}else Y=O;return W&&h(Y,typeof i=="function"?i.displayName||i.name||"Unknown":i),e(i,W,ie,me,o(),Y,ve,D)}function d(i){typeof i=="object"&&i!==null&&i.$$typeof===p&&i._store&&(i._store.validated=1)}var R=n,p=Symbol.for("react.transitional.element"),s=Symbol.for("react.portal"),A=Symbol.for("react.fragment"),u=Symbol.for("react.strict_mode"),w=Symbol.for("react.profiler"),T=Symbol.for("react.consumer"),j=Symbol.for("react.context"),x=Symbol.for("react.forward_ref"),P=Symbol.for("react.suspense"),I=Symbol.for("react.suspense_list"),q=Symbol.for("react.memo"),G=Symbol.for("react.lazy"),M=Symbol.for("react.activity"),X=Symbol.for("react.client.reference"),U=R.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,K=Object.prototype.hasOwnProperty,$=Array.isArray,C=console.createTask?console.createTask:function(){return null};R={react_stack_bottom_frame:function(i){return i()}};var B,Z={},ee=R.react_stack_bottom_frame.bind(R,y)(),de=C(r(y)),ge={};we.Fragment=A,we.jsx=function(i,O,Y,ae,me){var ie=1e4>U.recentlyCreatedOwnerStacks++;return E(i,O,Y,!1,ae,me,ie?Error("react-stack-top-frame"):ee,ie?C(r(i)):de)},we.jsxs=function(i,O,Y,ae,me){var ie=1e4>U.recentlyCreatedOwnerStacks++;return E(i,O,Y,!0,ae,me,ie?Error("react-stack-top-frame"):ee,ie?C(r(i)):de)}}()),we}var Le;function et(){return Le||(Le=1,process.env.NODE_ENV==="production"?ke.exports=Ze():ke.exports=$e()),ke.exports}var a=et();const Be=({variant:t="primary",loading:f=!1,children:l,...r})=>{const o=y=>{switch(y){case"primary":return"primary";case"ghost":return"default";case"dashed":return"dashed";case"link":return"link";case"text":return"text";default:return"primary"}};return a.jsx(z.Button,{...r,type:o(t),loading:f,ghost:t==="ghost",children:l})};Be.__docgenInfo={displayName:"Button",description:"基础按钮,用于触发操作",props:{variant:{name:"variant",required:!1,description:"视觉风格",type:{name:"ButtonVariant",raw:'"primary" | "ghost" | "dashed" | "link" | "text"'},defaultValue:{value:'"primary"'}},loading:{name:"loading",required:!1,description:"是否加载中",type:{name:"boolean",raw:"boolean"},defaultValue:{value:"false"}},children:{name:"children",required:!1,description:"按钮内容",type:{name:"ReactNode",raw:"React.ReactNode"}},size:{name:"size",required:!1,description:"按钮大小",type:{name:"ButtonSize",raw:'"small" | "middle" | "large"'}},disabled:{name:"disabled",required:!1,description:"是否禁用",type:{name:"boolean",raw:"boolean"}},onClick:{name:"onClick",required:!1,description:"点击事件",type:{name:"function",raw:"(event: MouseEvent) => void"}}}};const Pe=({title:t,children:f,bordered:l=!0,hoverable:r=!1,size:o="default",...y})=>a.jsx(z.Card,{...y,title:t,bordered:l,hoverable:r,size:o,children:f});Pe.__docgenInfo={displayName:"Card",description:"卡片容器,用于分组内容",props:{title:{name:"title",required:!1,description:"标题",type:{name:"ReactNode",raw:"React.ReactNode"}},children:{name:"children",required:!1,description:"内容区域",type:{name:"ReactNode",raw:"React.ReactNode"}},bordered:{name:"bordered",required:!1,description:"是否显示边框",type:{name:"boolean",raw:"boolean"},defaultValue:{value:"true"}},hoverable:{name:"hoverable",required:!1,description:"是否可悬停",type:{name:"boolean",raw:"boolean"},defaultValue:{value:"false"}},size:{name:"size",required:!1,description:"卡片大小",type:{name:"CardSize",raw:'"default" | "small"'},defaultValue:{value:'"default"'}},loading:{name:"loading",required:!1,description:"是否加载中",type:{name:"boolean",raw:"boolean"}},actions:{name:"actions",required:!1,description:"卡片操作组",type:{name:"ReactNode[]",raw:"React.ReactNode[]"}}}};const Oe=({showDefaultFooter:t=!0,...f})=>{const l=f.footer!==void 0?f.footer:t?(r,{OkBtn:o,CancelBtn:y})=>a.jsxs(a.Fragment,{children:[a.jsx(o,{}),a.jsx(y,{})]}):null;return a.jsx(z.Modal,{...f,footer:l})};Oe.__docgenInfo={displayName:"AppModal",description:"应用级模态框组件,基于 Ant Design Modal 封装",props:{showDefaultFooter:{name:"showDefaultFooter",required:!1,description:"是否显示默认的确定和取消按钮",type:{name:"boolean",raw:"boolean"},defaultValue:{value:"true"}},title:{name:"title",required:!1,description:"模态框标题",type:{name:"ReactNode",raw:"React.ReactNode"}},open:{name:"open",required:!1,description:"是否显示模态框",type:{name:"boolean",raw:"boolean"}},onCancel:{name:"onCancel",required:!1,description:"取消按钮点击事件",type:{name:"function",raw:"(e: React.MouseEvent<HTMLElement>) => void"}},onOk:{name:"onOk",required:!1,description:"确定按钮点击事件",type:{name:"function",raw:"(e: React.MouseEvent<HTMLElement>) => void"}},children:{name:"children",required:!1,description:"模态框内容",type:{name:"ReactNode",raw:"React.ReactNode"}},width:{name:"width",required:!1,description:"模态框宽度",type:{name:"string | number",raw:"string | number"}},centered:{name:"centered",required:!1,description:"是否居中显示",type:{name:"boolean",raw:"boolean"}},maskClosable:{name:"maskClosable",required:!1,description:"点击蒙层是否允许关闭",type:{name:"boolean",raw:"boolean"}}}};const qe=({scrollX:t,showPagination:f=!0,defaultPageSize:l=10,...r})=>a.jsx(z.Table,{...r,scroll:{x:t||"max-content",y:"50vh"},pagination:f?{hideOnSinglePage:!0,showSizeChanger:!0,showQuickJumper:!0,defaultPageSize:l,...r.pagination}:!1});qe.__docgenInfo={displayName:"PageTable",description:"页面级表格组件,高度铺满容器,自动滚动",props:{scrollX:{name:"scrollX",required:!1,description:"水平滚动宽度",type:{name:"number",raw:"number"}},showPagination:{name:"showPagination",required:!1,description:"是否显示分页器",type:{name:"boolean",raw:"boolean"},defaultValue:{value:"true"}},defaultPageSize:{name:"defaultPageSize",required:!1,description:"默认页面大小",type:{name:"number",raw:"number"},defaultValue:{value:"10"}},columns:{name:"columns",required:!1,description:"表格列配置",type:{name:"ColumnType[]",raw:"ColumnType<any>[]"}},dataSource:{name:"dataSource",required:!1,description:"数据源",type:{name:"any[]",raw:"any[]"}},loading:{name:"loading",required:!1,description:"是否加载中",type:{name:"boolean",raw:"boolean"}},rowKey:{name:"rowKey",required:!1,description:"行数据的 Key",type:{name:"string | function",raw:"string | ((record: any) => string)"}}}};const tt=he.createFromIconfontCN({scriptUrl:["https://at.alicdn.com/t/c/font_4968458_eh91gfr4j9e.js"]}),Me=({name:t,size:f,color:l,style:r,...o})=>{const y={fontSize:f,color:l,...r};return a.jsx(tt,{...o,type:t,style:y})};Me.__docgenInfo={displayName:"XcIcon",description:"自定义图标组件,基于 iconfont",props:{name:{name:"name",required:!0,description:"图标名称",type:{name:"string",raw:"string"}},size:{name:"size",required:!1,description:"图标大小",type:{name:"number | string",raw:"number | string"}},color:{name:"color",required:!1,description:"图标颜色",type:{name:"string",raw:"string"}},className:{name:"className",required:!1,description:"自定义类名",type:{name:"string",raw:"string"}},style:{name:"style",required:!1,description:"自定义样式",type:{name:"CSSProperties",raw:"React.CSSProperties"}}}};const De=({loading:t,description:f="暂无数据",className:l,emptyChildren:r,loadingText:o,emptyImage:y})=>t?a.jsxs(z.Flex,{className:`pt-10 w-full ${l||""}`,align:"center",justify:"center",vertical:!0,children:[a.jsx(z.Spin,{size:"large"}),o&&a.jsx("div",{className:"mt-4 text-gray-500",children:o})]}):a.jsx(z.Flex,{className:`pt-10 w-full ${l||""}`,align:"center",justify:"center",children:a.jsx(z.Empty,{image:y,description:f,imageStyle:{height:180},children:r})});De.__docgenInfo={displayName:"EmptyAndSpin",description:"空状态和加载状态组合组件",props:{loading:{name:"loading",required:!0,description:"是否加载中",type:{name:"boolean",raw:"boolean"}},description:{name:"description",required:!1,description:"空状态描述",type:{name:"ReactNode",raw:"React.ReactNode"},defaultValue:{value:'"暂无数据"'}},className:{name:"className",required:!1,description:"自定义类名",type:{name:"string",raw:"string"}},emptyChildren:{name:"emptyChildren",required:!1,description:"空状态额外内容",type:{name:"ReactNode",raw:"React.ReactNode"}},loadingText:{name:"loadingText",required:!1,description:"加载中提示文字",type:{name:"string",raw:"string"}},emptyImage:{name:"emptyImage",required:!1,description:"空状态图片",type:{name:"string",raw:"string"}}}};const Fe=({onClick:t,showText:f=!1,className:l,size:r="small",type:o="default"})=>a.jsx(z.Button,{size:r,type:o,icon:a.jsx(he.LeftOutlined,{}),className:`cursor-pointer ${l||""}`,onClick:t,children:f&&"返回"});Fe.__docgenInfo={displayName:"BackButton",description:"返回按钮组件",props:{onClick:{name:"onClick",required:!1,description:"点击事件",type:{name:"function",raw:"() => void"}},showText:{name:"showText",required:!1,description:"是否显示文字",type:{name:"boolean",raw:"boolean"},defaultValue:{value:"false"}},className:{name:"className",required:!1,description:"自定义类名",type:{name:"string",raw:"string"}},size:{name:"size",required:!1,description:"按钮大小",type:{name:"ButtonSize",raw:'"small" | "middle" | "large"'},defaultValue:{value:'"small"'}},type:{name:"type",required:!1,description:"按钮类型",type:{name:"ButtonType",raw:'"primary" | "default" | "dashed" | "link" | "text"'},defaultValue:{value:'"default"'}}}};const Ge=({removePadding:t=!0,className:f,...l})=>{const r=t?`px-0 h-auto ${f||""}`:f;return a.jsx(z.Button,{type:"link",...l,className:r,children:l.children})};Ge.__docgenInfo={displayName:"LinkButton",description:"链接样式按钮组件,适用于表格操作列",props:{removePadding:{name:"removePadding",required:!1,description:"是否去除默认内边距",type:{name:"boolean",raw:"boolean"},defaultValue:{value:"true"}},children:{name:"children",required:!1,description:"按钮内容",type:{name:"ReactNode",raw:"React.ReactNode"}},onClick:{name:"onClick",required:!1,description:"点击事件",type:{name:"function",raw:"(event: React.MouseEvent<HTMLButtonElement>) => void"}},disabled:{name:"disabled",required:!1,description:"是否禁用",type:{name:"boolean",raw:"boolean"}},className:{name:"className",required:!1,description:"自定义类名",type:{name:"string",raw:"string"}}}};const{Option:nt}=z.Select,ze=({columns:t,request:f,searchFields:l=[],showSearch:r=!0,showRefresh:o=!0,defaultPageSize:y=10,pageSizeOptions:_=["10","20","50","100"],autoLoad:h=!0,externalParams:c={},...e})=>{const[E,d]=n.useState([]),[R,p]=n.useState(!1),[s,A]=n.useState({current:1,pageSize:y,total:0}),[u,w]=n.useState({}),[T,j]=n.useState({}),[x]=z.Form.useForm(),P=n.useRef(s);P.current=s;const I=n.useRef(c);I.current=c;const q=n.useRef(!1),G=n.useMemo(()=>t.map(C=>{const{sortable:B,render:Z,...ee}=C;return{...ee,sorter:B?!0:void 0,render:Z||(de=>de)}}),[t]),M=n.useCallback(async(C={})=>{if(f){p(!0);try{const B={page:P.current.current,pageSize:P.current.pageSize,sortField:T.field,sortOrder:T.order,searchParams:{...u,...I.current},...C},Z=await f(B);Z.success&&(d(Z.data),A(ee=>({...ee,total:Z.total,current:B.page||ee.current})))}catch(B){console.error("加载数据失败:",B)}finally{p(!1)}}},[f,T,u]),X=n.useCallback(C=>{w(C),A(B=>({...B,current:1}))},[]),U=n.useCallback(()=>{x.resetFields(),w({}),A(C=>({...C,current:1}))},[x]),K=n.useCallback(()=>{M()},[M]),$=n.useCallback((C,B,Z)=>{const ee={current:C.current||1,pageSize:C.pageSize||y,total:C.total||0},de={field:Z?.field,order:Z?.order};A(ee),j(de)},[y]);return n.useEffect(()=>{const C=Object.keys(c).length>0;(h&&!q.current||C)&&(M(),q.current=!0)},[h,c,M]),a.jsxs("div",{children:[r&&l.length>0&&a.jsx(z.Card,{size:"small",style:{marginBottom:16},children:a.jsxs(z.Form,{form:x,layout:"inline",onFinish:X,initialValues:l.reduce((C,B)=>(B.defaultValue!==void 0&&(C[B.key]=B.defaultValue),C),{}),children:[l.map(C=>a.jsx(z.Form.Item,{name:C.key,label:C.label,children:C.type==="input"?a.jsx(z.Input,{placeholder:C.placeholder||`请输入${C.label}`,style:{width:200}}):a.jsx(z.Select,{placeholder:C.placeholder||`请选择${C.label}`,style:{width:200},allowClear:!0,children:C.options?.map(B=>a.jsx(nt,{value:B.value,children:B.label},B.value))})},C.key)),a.jsx(z.Form.Item,{children:a.jsxs(z.Space,{children:[a.jsx(z.Button,{type:"primary",htmlType:"submit",icon:a.jsx(he.SearchOutlined,{}),children:"查询"}),a.jsx(z.Button,{onClick:U,children:"重置"}),o&&a.jsx(z.Button,{icon:a.jsx(he.ReloadOutlined,{}),onClick:K,children:"刷新"})]})})]})}),a.jsx(z.Table,{...e,columns:G,dataSource:E,loading:R,pagination:{...s,showSizeChanger:!0,showQuickJumper:!0,showTotal:(C,B)=>`第 ${B[0]}-${B[1]} 条/共 ${C} 条`,pageSizeOptions:_},onChange:$,scroll:{x:"max-content",y:"50vh"}})]})};ze.__docgenInfo={displayName:"AdvancedTable",description:"高阶表格组件,支持异步请求、搜索、排序等功能",props:{columns:{name:"columns",required:!0,description:"列配置",type:{name:"AdvancedColumnType[]",raw:"AdvancedColumnType<any>[]"}},request:{name:"request",required:!1,description:"异步请求函数",type:{name:"function",raw:"(params: RequestParams) => Promise<RequestResponse>"}},searchFields:{name:"searchFields",required:!1,description:"搜索字段配置",type:{name:"SearchFieldConfig[]",raw:"SearchFieldConfig[]"},defaultValue:{value:"[]"}},showSearch:{name:"showSearch",required:!1,description:"是否显示搜索区域",type:{name:"boolean",raw:"boolean"},defaultValue:{value:"true"}},showRefresh:{name:"showRefresh",required:!1,description:"是否显示刷新按钮",type:{name:"boolean",raw:"boolean"},defaultValue:{value:"true"}},defaultPageSize:{name:"defaultPageSize",required:!1,description:"默认页面大小",type:{name:"number",raw:"number"},defaultValue:{value:"10"}},pageSizeOptions:{name:"pageSizeOptions",required:!1,description:"页面大小选项",type:{name:"string[]",raw:"string[]"},defaultValue:{value:'["10", "20", "50", "100"]'}},autoLoad:{name:"autoLoad",required:!1,description:"是否自动加载",type:{name:"boolean",raw:"boolean"},defaultValue:{value:"true"}},externalParams:{name:"externalParams",required:!1,description:"外部请求参数",type:{name:"Record<string, any>",raw:"Record<string, any>"},defaultValue:{value:"{}"}}}};function Ne(t,f,l){if(!t.current)return;const r=new Set,o={};for(const d of f)d.exclusionGroup&&d.exclusionGroup!=="separator"&&(r.add(d.exclusionGroup),o[d.exclusionGroup]||(o[d.exclusionGroup]=[]),o[d.exclusionGroup].push({type:d.type,key:d.key,exclusionGroup:d.exclusionGroup}));const y={};for(const d of r){y[d]=!1;for(const R of o[d])if(R.type==="upload"&&R.key){if(l[R.key]!==null&&l[R.key]!==void 0){y[d]=!0;break}}else if(R.type==="variable"&&R.key){const p=t.current.querySelector(`[data-type="variable"][data-key="${R.key}"]`);if(p&&p.innerText.replace(/[\u200B\n]/g,"").trim().length>0){y[d]=!0;break}}}const _=f.some(d=>d.exclusionGroup==="separator"),c=Object.keys(y).filter(d=>y[d]).length>0;let e=null;if(c&&_){for(const d of f)if(d.exclusionGroup&&d.exclusionGroup!=="separator"&&y[d.exclusionGroup]){e=d.exclusionGroup;break}}for(const d of r){const R=t.current.querySelectorAll(`[data-group="${d}"]`);_&&c&&e?d===e?R.forEach(p=>{p.classList.contains("required-upload-group")?p.style.setProperty("display","inline-flex","important"):(p.classList.contains("exclusion-wrapper"),p.style.setProperty("display","inline-block","important"))}):R.forEach(p=>{p.style.display="none",p.style.setProperty("display","none","important")}):R.forEach(p=>{p.classList.contains("required-upload-group")?p.style.setProperty("display","inline-flex","important"):(p.classList.contains("exclusion-wrapper"),p.style.setProperty("display","inline-block","important"))})}t.current.querySelectorAll('[data-group="separator"]').forEach(d=>{d.style.display=c?"none":"inline"})}function Se(t,f,l,r){if(!t.current){r(!1);return}const o=[];for(let c=0;c<f.length;c++){const e=f[c];if((e.type==="variable"||e.type==="upload"||e.type==="multi-variable")&&e.required&&e.key){o.push({exclusionGroup:e.exclusionGroup||"",key:e.key,type:e.type==="multi-variable"?"variable":e.type,isMultiVariable:e.type==="multi-variable"});continue}if(e.type==="text"&&e.className?.includes("rte-text-required")&&e.exclusionGroup)for(let E=c+1;E<f.length;E++){const d=f[E];if(d.exclusionGroup===e.exclusionGroup&&(d.type==="variable"||d.type==="upload")&&d.key){o.push({exclusionGroup:e.exclusionGroup,key:d.key,type:d.type});break}}}const y=f.some(c=>c.exclusionGroup==="separator");let _=!1;if(y&&o.length>1){const c=f.findIndex(d=>d.exclusionGroup==="separator"),e=o.filter(d=>f.findIndex(p=>(p.type==="variable"||p.type==="upload")&&p.key===d.key&&p.exclusionGroup===d.exclusionGroup)<c),E=o.filter(d=>f.findIndex(p=>(p.type==="variable"||p.type==="upload")&&p.key===d.key&&p.exclusionGroup===d.exclusionGroup)>c);_=e.length>0&&E.length>0}if(o.length===0){if(f.length===0){if(!t.current){r(!1);return}const c=t.current.textContent?.replace(/[\u200B\n]/g,"").trim()||"";r(c.length>0);return}r(!0);return}const h=o.filter(c=>{if(!t.current)return!1;const e=t.current.querySelectorAll(`[data-group="${c.exclusionGroup}"]`);return e.length===0?!1:e[0].style.display!=="none"});if(h.length===0){r(!0);return}if(_){let c=!1;for(const e of h)if(e.type==="upload"&&e.key){if(l[e.key]!==null&&l[e.key]!==void 0){c=!0;break}}else if(e.type==="variable"&&e.key)if(e.isMultiVariable){const E=t.current.querySelectorAll(`[data-type="variable"][data-multi-key="${e.key}"]`);let d=!1;for(const R of Array.from(E))if(R.innerText.replace(/[\u200B\n]/g,"").trim().length>0){d=!0;break}if(d){c=!0;break}}else{const E=t.current.querySelector(`[data-type="variable"][data-key="${e.key}"]`);if(E&&E.innerText.replace(/[\u200B\n]/g,"").trim().length>0){c=!0;break}}r(c)}else{let c=!0;for(const e of h)if(e.type==="upload"&&e.key){if(l[e.key]===null||l[e.key]===void 0){c=!1;break}}else if(e.type==="variable"&&e.key)if(e.isMultiVariable){const E=t.current.querySelectorAll(`[data-type="variable"][data-multi-key="${e.key}"]`);let d=!1;for(const R of Array.from(E))if(R.innerText.replace(/[\u200B\n]/g,"").trim().length>0){d=!0;break}if(!d){c=!1;break}}else{const E=t.current.querySelector(`[data-type="variable"][data-key="${e.key}"]`);if(!E){c=!1;break}if(E.innerText.replace(/[\u200B\n]/g,"").trim().length===0){c=!1;break}}r(c)}}function Ae(t,f){if(!t.current)return;t.current.querySelectorAll('[data-type="variable"]').forEach(r=>{const o=r.innerText.replace(/\n/g,"");o.replace(/\u200B/g,"")?r.classList.remove("show-placeholder"):(o!=="​"&&(r.innerText="​"),r.classList.add("show-placeholder"))})}function at(t,f,l,r,o,y={},_){if(!t.current)return;let h="",c=0;for(;c<f.length;){const e=f[c],E=c+1<f.length?f[c+1]:null;if(e.type==="text"&&(e.text?.includes("icon-bitian")||e.className==="rte-text-required")&&E){const u=E.type==="upload"&&E.exclusionGroup==="fileInput"&&e.exclusionGroup==="fileInput"&&e.exclusionGroup===E.exclusionGroup,w=E.type==="variable"&&E.exclusionGroup==="textInput"&&e.exclusionGroup==="textInput"&&e.exclusionGroup===E.exclusionGroup;if(u){const j=`<span ${e.exclusionGroup?`data-group="${e.exclusionGroup}"`:""} class="exclusion-wrapper required-upload-group">`,x="</span>";let P="";e.className?P=`<span class="${e.className}">${e.text??""}</span>`:P=e.text??"";const I=E,q=l[I.key]!==null&&l[I.key]!==void 0,G=q?l[I.key]?.name:I.text,M=q?"":"hidden",X=I.tooltip&&!q?"":"hidden",U=q?"has-file":"",K=q&&G?` data-file-name="${G.replace(/"/g,"&quot;")}"`:"",$=`<span contenteditable="false" data-type="upload" data-key="${I.key}" class="upload-chip"><span class="upload-inner-wrapper ${U}"><span class="upload-icon">${q?"<i class='iconfont icon-exlwenjian'></i>":"<i class='iconfont icon-shangchuan1'></i>"}</span><span class="upload-label"${K}>${G||I.text}</span>${I.tooltip?`<i contenteditable="false" class="iconfont icon-tishi upload-info-icon ${X}" data-upload-key="${I.key}" data-tooltip="${I.tooltip}" title="提示"></i>`:""}<span class="file-remove-btn ${M}" title="移除文件">×</span></span></span>`;h+=j+P+$+x,c+=2;continue}if(w){const j=`<span ${e.exclusionGroup?`data-group="${e.exclusionGroup}"`:""} class="exclusion-wrapper required-upload-group">`,x="</span>";let P="";e.className?P=`<span class="${e.className}">${e.text??""}</span>`:P=e.text??"";const I=E,G=(I.key?o[I.key]:void 0)||I.text||"",M=!G,X=M?"​":G,U=M?"show-placeholder":"",K=I.exclusionGroup?` data-group="${I.exclusionGroup}"`:"",$=I.tooltip?` data-tooltip="${I.tooltip.replace(/"/g,"&quot;")}" data-variable-key="${I.key||""}"`:"",C=I.tooltip&&M?"":"hidden",B=`<span contenteditable="true" data-type="variable" data-key="${I.key}" data-placeholder="${I.placeholder||""}"${K}${$} class="variable-chip ${U}">${X}${I.tooltip?`<i contenteditable="false" class="iconfont icon-tishi variable-info-icon ${C}" data-variable-key="${I.key}" data-tooltip="${I.tooltip.replace(/"/g,"&quot;")}" title="提示"></i>`:""}</span>`;h+=j+P+B+x,c+=2;continue}}const R=e.exclusionGroup?`data-group="${e.exclusionGroup}"`:"",p=e.exclusionGroup?`<span ${R} class="exclusion-wrapper">`:"",s=e.exclusionGroup?"</span>":"";let A="";if(e.type==="tag"){const w=r||_==="hideTagClose"?"":'<span class="tag-close-btn" title="Clear (ESC)"><svg width="10" height="10" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"><path d="M18 6L6 18M6 6l12 12"/></svg></span>',T=r?' data-locked="true"':"",j=e.tooltip?` data-tooltip="${e.tooltip.replace(/"/g,"&quot;")}" data-tag-key="${e.key||""}"`:"";A=`<span contenteditable="false" class="tag-node group"${T}${j}><span class="tag-label">${e.text}</span>${w}</span>`}else if(e.type==="text"){const u=r?' data-locked="true" contenteditable="false"':' contenteditable="false"';e.className?A=`<span class="${e.className}"${u}>${e.text??""}</span>`:A=r?`<span${u}>${e.text??""}</span>`:`<span contenteditable="false">${e.text??""}</span>`}else if(e.type==="variable"&&e.key){const w=o[e.key]||e.text||"",T=!w,j=T?"​":w,x=T?"show-placeholder":"",P=e.exclusionGroup?` data-group="${e.exclusionGroup}"`:"",I=e.tooltip?` data-tooltip="${e.tooltip.replace(/"/g,"&quot;")}" data-variable-key="${e.key||""}"`:"",q=e.tooltip&&T?"":"hidden",G=`<span contenteditable="true" data-type="variable" data-key="${e.key}" data-placeholder="${e.placeholder||""}"${P}${I} class="variable-chip ${x}">${j}${e.tooltip?`<i contenteditable="false" class="iconfont icon-tishi variable-info-icon ${q}" data-variable-key="${e.key}" data-tooltip="${e.tooltip.replace(/"/g,"&quot;")}" title="提示"></i>`:""}</span>`;e.required?A=`<span ${e.exclusionGroup?`data-group="${e.exclusionGroup}"`:""} class="exclusion-wrapper required-upload-group"><span class="rte-text-required"><i class='iconfont icon-bitian' style='font-size: 10px;'></i></span>${G}</span>`:A=G}else if(e.type==="upload"&&e.key){const u=l[e.key]!==null&&l[e.key]!==void 0,w=u?l[e.key]?.name:e.text,T=u?"":"hidden",j=e.tooltip&&!u?"":"hidden",x=u?"has-file":"",P=u&&w?` data-file-name="${w.replace(/"/g,"&quot;")}"`:"",I=`<span contenteditable="false" data-type="upload" data-key="${e.key}" class="upload-chip"><span class="upload-inner-wrapper ${x}"><span class="upload-icon">${u?"<i class='iconfont icon-exlwenjian'></i>":"<i class='iconfont icon-shangchuan1'></i>"}</span><span class="upload-label"${P}>${w||e.text}</span>${e.tooltip?`<i contenteditable="false" class="iconfont icon-tishi upload-info-icon ${j}" data-upload-key="${e.key}" data-tooltip="${e.tooltip}" title="提示"></i>`:""}<span class="file-remove-btn ${T}" title="移除文件">×</span></span></span>`;e.required?A=`<span ${e.exclusionGroup?`data-group="${e.exclusionGroup}"`:""} class="exclusion-wrapper required-upload-group"><span class="rte-text-required"><i class='iconfont icon-bitian' style='font-size: 10px;'></i></span>${I}</span>`:A=I}else if(e.type==="multi-variable"&&e.key){const u=e.maxCount||9,w=y[e.key]||1,T=Math.min(w,u);let j="";for(let x=0;x<T;x++){const P=`${e.key}_${x}`,I=o[P]||"",q=!I,G=q?"​":I,M=q?"show-placeholder":"",X=e.tooltip?` data-tooltip="${e.tooltip.replace(/"/g,"&quot;")}" data-variable-key="${e.key||""}"`:"",U=e.tooltip&&q?"":"hidden",K=`<span contenteditable="true" data-type="variable" data-key="${P}" data-multi-key="${e.key}" data-index="${x}" data-placeholder="${e.placeholder||""}"${X} class="variable-chip ${M}">${G}${e.tooltip?`<i contenteditable="false" class="iconfont icon-tishi variable-info-icon ${U}" data-variable-key="${e.key}" data-tooltip="${e.tooltip.replace(/"/g,"&quot;")}" title="提示"></i>`:""}</span>`;j+=K}e.required?A=`<span ${e.exclusionGroup?`data-group="${e.exclusionGroup}"`:""} class="exclusion-wrapper required-upload-group"><span class="rte-text-required"><i class='iconfont icon-bitian' style='font-size: 10px;'></i></span>${j}</span>`:A=j}h+=p+A+s,c++}t.current&&(t.current.innerHTML=h,setTimeout(()=>{if(!t.current)return;t.current.querySelectorAll('[data-type="variable"]').forEach(E=>{const d=E.innerText.replace(/\n/g,"");d.replace(/\u200B/g,"")?E.classList.remove("show-placeholder"):(d!=="​"&&(E.innerText="​"),E.classList.add("show-placeholder"))})},0))}function rt(t,f,l,r,o={},y,_,h){const c=n.useCallback(()=>{if(!t.current)return;if(f.length===0){t.current.innerHTML="";return}let e={};const d=t.current.__tempVariableValues;if(d?(e=d,setTimeout(()=>{if(t.current){const R=t.current;R.__tempVariableValues===d&&delete R.__tempVariableValues}},100)):t.current.querySelectorAll('[data-type="variable"]').forEach(p=>{const s=p.dataset.key;if(s){const A=p.innerText.replace(/[\u200B\n]/g,"").trim();A&&(e[s]=A)}}),at(t,f,l,r,e,o,h),y?.current){const{key:R,offset:p}=y.current;setTimeout(()=>{if(!t.current)return;const s=t.current.querySelector(`[data-type="variable"][data-key="${R}"]`);if(s){try{const A=document.createRange(),u=document.createTreeWalker(s,NodeFilter.SHOW_TEXT,null);let w=0,T=null,j=0;for(;u.nextNode();){const x=u.currentNode,P=x.textContent?.length||0;if(w+P>=p){T=x,j=p-w;break}w+=P}if(T){A.setStart(T,Math.min(j,T.textContent?.length||0)),A.collapse(!0);const x=window.getSelection();x&&(x.removeAllRanges(),x.addRange(A),s.focus())}else{A.selectNodeContents(s),A.collapse(!1);const x=window.getSelection();x&&(x.removeAllRanges(),x.addRange(A),s.focus())}}catch{const A=document.createRange();A.selectNodeContents(s),A.collapse(!1);const u=window.getSelection();u&&(u.removeAllRanges(),u.addRange(A),s.focus())}y.current=null}},0)}},[f,l,r,t,o,y,_,h]);n.useEffect(()=>{c()},[c])}function ot(t,f,l,r){n.useEffect(()=>{const o=t.current;if(!o)return;const y=h=>{const c=h.target?.closest(".upload-info-icon");if(c&&c.classList.contains("upload-info-icon")){const e=c.dataset.uploadKey;e&&r({key:e,anchorEl:c,type:"upload"})}},_=h=>{const c=h.target?.closest(".upload-info-icon"),e=h.relatedTarget;c&&c.classList.contains("upload-info-icon")&&(!e||!o.contains(e)?r(null):e.closest(".upload-info-icon")||r(null))};return o.addEventListener("mouseover",y,!0),o.addEventListener("mouseout",_,!0),()=>{o.removeEventListener("mouseover",y,!0),o.removeEventListener("mouseout",_,!0)}},[f,l,t,r])}function st(t,f,l,r){n.useEffect(()=>{if(!t.current)return;const o=c=>{if(r==="hideTagClose")return;const e=c.currentTarget,E=e.dataset.tooltip,d=e.dataset.tagKey||"";E&&l({key:d,anchorEl:e,type:"tag"})},y=()=>{l(null)};let _;const h=()=>{if(!t.current)return;t.current.querySelectorAll(".tag-node[data-tooltip]").forEach(e=>{e.addEventListener("mouseenter",o),e.addEventListener("mouseleave",y)})};return _=requestAnimationFrame(()=>{_=requestAnimationFrame(h)}),()=>{cancelAnimationFrame(_),t.current&&t.current.querySelectorAll(".tag-node[data-tooltip]").forEach(e=>{e.removeEventListener("mouseenter",o),e.removeEventListener("mouseleave",y)})}},[f,t,l,r])}function lt(t,f,l){n.useEffect(()=>{const r=t.current;if(!r)return;const o=_=>{const h=_.target?.closest(".variable-info-icon");if(h&&h.classList.contains("variable-info-icon")){const c=h.dataset.variableKey;c&&l({key:c,anchorEl:h,type:"variable"})}},y=_=>{const h=_.target?.closest(".variable-info-icon"),c=_.relatedTarget;h&&h.classList.contains("variable-info-icon")&&(!c||!r.contains(c)?l(null):c.closest(".variable-info-icon")||l(null))};return r.addEventListener("mouseover",o,!0),r.addEventListener("mouseout",y,!0),()=>{r.removeEventListener("mouseover",o,!0),r.removeEventListener("mouseout",y,!0)}},[f,t,l])}function it(t,f,l,r){n.useEffect(()=>{if(!t.current)return;const o=c=>{const e=c.currentTarget;e.dataset.fileName&&r({key:"",anchorEl:e,type:"upload-label"})},y=()=>{r(null)};let _;const h=()=>{if(!t.current)return;t.current.querySelectorAll(".upload-label[data-file-name]").forEach(e=>{e.addEventListener("mouseenter",o),e.addEventListener("mouseleave",y)})};return _=requestAnimationFrame(()=>{_=requestAnimationFrame(h)}),()=>{cancelAnimationFrame(_),t.current&&t.current.querySelectorAll(".upload-label[data-file-name]").forEach(e=>{e.removeEventListener("mouseenter",o),e.removeEventListener("mouseleave",y)})}},[f,l,t,r])}function ct(t,f,l,r){n.useEffect(()=>{Ne(t,f,l),Se(t,f,l,r)},[l,f,t,r])}function ut(t,f){n.useEffect(()=>{if(!t.current)return;let l=!1,r=0;const o=()=>{l=!0},y=()=>{l=!1,r=Date.now()};let _=!1,h=0;const c=()=>{_=!0},e=()=>{_=!1,h=Date.now()},E=()=>{h=Date.now()},d=()=>{if(!t.current)return;const p=window.getSelection();if(!p||p.rangeCount===0||f.current||l||_||Date.now()-h<500)return;const s=p.getRangeAt(0);if(!s.collapsed){t.current.contains(s.commonAncestorContainer)||p.removeAllRanges();return}const A=p.anchorNode;if(!A)return;if(!t.current.contains(A)){p.removeAllRanges();return}let u=null;if(A.nodeType===Node.ELEMENT_NODE?u=A.closest('[data-type="variable"]'):A.nodeType===Node.TEXT_NODE&&A.parentElement&&(u=A.parentElement.closest('[data-type="variable"]')),!u){if(Date.now()-r>500)return;const w=t.current.querySelectorAll('[data-type="variable"]');if(w.length>0){let T=null;for(const j of Array.from(w))if(j.style.display!=="none"){T=j;break}if(!T&&w.length>0&&(T=w[0]),T){const j=document.createRange();j.selectNodeContents(T),j.collapse(!1),p.removeAllRanges(),p.addRange(j),T.focus()}else p.removeAllRanges()}else p.removeAllRanges()}},R=t.current;return R&&(R.addEventListener("compositionstart",c),R.addEventListener("compositionend",e),R.addEventListener("input",E)),document.addEventListener("mousedown",o),document.addEventListener("mouseup",y),document.addEventListener("selectionchange",d),()=>{const p=t.current;p&&(p.removeEventListener("compositionstart",c),p.removeEventListener("compositionend",e),p.removeEventListener("input",E)),document.removeEventListener("mousedown",o),document.removeEventListener("mouseup",y),document.removeEventListener("selectionchange",d)}},[t,f])}const We=({config:t,onSend:f,isProcessing:l=!1,disabled:r=!1,width:o,lockStructure:y=!1,agentOptions:_=[],onAgentSelect:h,onAgentExit:c,loading:e=!1,placeholder:E,border:d,background:R="transparent",hideButtons:p})=>{const s=n.useRef(null),A=n.useRef(null),[u,w]=n.useState({}),[T,j]=n.useState(null),[x,P]=n.useState(null),I=n.useRef(!1),q=n.useRef(null),[G,M]=n.useState(!1),X=n.useRef(null),[U,K]=n.useState(!0),[$,C]=n.useState(()=>{const m={};return t.forEach(g=>{g.type==="multi-variable"&&g.key&&(m[g.key]=1)}),m}),B=n.useRef({}),Z=n.useRef({}),ee=n.useRef({});n.useEffect(()=>{Z.current=u},[u]),n.useEffect(()=>{ee.current=$},[$]);const de=n.useCallback(m=>m.find(b=>b.type==="tag")?.text||null,[]),ge=n.useRef(t),i=n.useRef(null);n.useEffect(()=>{const m=de(ge.current),g=de(t);if(m&&m!==g&&s.current){const b={};s.current.querySelectorAll('[data-type="variable"]').forEach(v=>{const k=v.dataset.key;if(k){const N=v.innerText.replace(/[\u200B\n]/g,"").trim();N&&(b[k]=N)}}),B.current[m]={variableValues:b,files:{...Z.current},multiVariableCounts:{...ee.current}}}if(g&&B.current[g]){const b=B.current[g];i.current=b,w(b.files),C(b.multiVariableCounts)}else if(g){i.current=null;const b={};t.forEach(S=>{S.type==="multi-variable"&&S.key&&(b[S.key]=1)}),C(b),w({})}else i.current=null,C({}),w({});ge.current=t},[t,de]),n.useLayoutEffect(()=>{i.current&&s.current&&(s.current.__tempVariableValues=i.current.variableValues,setTimeout(()=>{i.current&&(i.current=null)},0))}),rt(s,t,u,y,$,X,void 0,p),ot(s,t,u,P),st(s,t,P,p),it(s,t,u,P),lt(s,t,P),ct(s,t,u,M),ut(s,I),n.useEffect(()=>{if(t.length>0){K(!1);return}const m=()=>{if(!s.current){K(!0);return}const b=s.current.textContent?.replace(/[\u200B\n]/g,"").trim()||"",S=s.current.querySelectorAll('[data-type="variable"]'),v=s.current.querySelectorAll('[data-type="upload"]');let k=!1;S.forEach(L=>{(L.textContent?.replace(/[\u200B\n]/g,"").trim()||"")&&(k=!0)}),v.forEach(L=>{L.querySelector(".upload-inner-wrapper.has-file")&&(k=!0)});const N=!b&&!k;K(N),t.length===0&&M(!N)};m();const g=new MutationObserver(m);return s.current&&g.observe(s.current,{childList:!0,subtree:!0,characterData:!0}),()=>{g.disconnect()}},[t]);const O=m=>{if(r){m.preventDefault();return}m.preventDefault();const g=m.clipboardData.getData("text/plain"),b=window.getSelection();if(b&&b.rangeCount>0){const S=b.anchorNode;if(S){let v=null;if(S.nodeType===Node.ELEMENT_NODE?v=S.closest('[data-type="variable"]'):S.nodeType===Node.TEXT_NODE&&S.parentElement&&(v=S.parentElement.closest('[data-type="variable"]')),v){const k=v.dataset.multiKey;if(k){const N=/[、,,\s\n\r\t]+/,L=g.split(N).map(V=>V.trim()).filter(V=>V.length>0);if(console.log("[Paste Event] 粘贴的内容:",g),console.log("[Paste Event] 拆分后的值:",L),L.length>1){const V=parseInt(v.dataset.index||"0",10),F=t.find(se=>se.type==="multi-variable"&&se.key===k)?.maxCount||9,ne=$[k]||1,re=Math.min(V+L.length,F);re>ne&&C(J=>({...J,[k]:re}));const le=[];for(let J=0;J<ne;J++){const se=`${k}_${J}`,pe=s.current.querySelector(`[data-type="variable"][data-key="${se}"][data-multi-key="${k}"]`);if(pe){const fe=pe.innerText.replace(/[\u200B\n]/g,"").trim();le.push(fe)}}le.splice(V,1,...L.slice(0,F-V));const oe=le.slice(0,F);oe.length>0&&oe[oe.length-1]!==""&&oe.length<F&&oe.push("");const H=Math.max(oe.length,1),te={};oe.forEach((J,se)=>{J&&(te[`${k}_${se}`]=J)}),s.current.querySelectorAll('[data-type="variable"]').forEach(J=>{const se=J.dataset.key,pe=J.dataset.multiKey;if(se&&pe!==k){const fe=J.innerText.replace(/[\u200B\n]/g,"").trim();fe&&(te[se]=fe)}}),s.current.__tempVariableValues=te,C(J=>({...J,[k]:H})),console.log("[Paste Event] 粘贴完成,已填充到多个输入框,值:",oe);return}else L.length===1&&console.log("[Paste Event] 粘贴单个值,将在失去焦点时检查是否需要拆分")}}}}document.execCommand("insertText",!1,g),ce(),setTimeout(()=>{const S=window.getSelection();if(S&&S.rangeCount>0){const v=S.anchorNode;if(v){let k=null;if(v.nodeType===Node.ELEMENT_NODE?k=v.closest('[data-type="variable"][data-multi-key]'):v.nodeType===Node.TEXT_NODE&&v.parentElement&&(k=v.parentElement.closest('[data-type="variable"][data-multi-key]')),k){const N=k.innerText.replace(/[\u200B\n]/g,"").trim();/[、,,\s]+/.test(N)&&(console.log("[Paste Event] 粘贴后检测到分隔符,内容:",N),console.log("[Paste Event] 提示:失去焦点后将自动拆分"))}}}},0)},Y=m=>{if(m.target.files&&m.target.files[0]&&T){const g=m.target.files[0],b=T;w(S=>({...S,[b]:g}))}m.target&&(m.target.value=""),j(null)},ae=m=>{w(g=>{const b={...g};return delete b[m],b})},me=m=>{const g=m.target;if(g.closest(".tag-close-btn")){if(m.preventDefault(),m.stopPropagation(),y)return;P(null),c?c():s.current&&(s.current.innerHTML="",s.current.focus());return}if(y){const v=g.closest(".tag-node"),k=g.closest('[data-type="text"]');if(v||k){m.preventDefault(),m.stopPropagation();const N=window.getSelection();N&&N.removeAllRanges();return}}g.closest('[data-type="variable"]')||(q.current={x:m.clientX,y:m.clientY},I.current=!1,g.closest(".file-remove-btn")&&(m.preventDefault(),m.stopPropagation()))},ie=m=>{if(!m.target.closest('[data-type="variable"]')&&q.current){const S=Math.abs(m.clientX-q.current.x),v=Math.abs(m.clientY-q.current.y);(S>3||v>3)&&(I.current=!0)}},ve=m=>{if(m.target.closest('[data-type="variable"]')){q.current=null,I.current=!1;return}q.current=null,I.current=!1},D=m=>{if(r)return;const g=m.target;if(g.closest(".tag-close-btn")){m.preventDefault(),m.stopPropagation();return}if(t.length===0)return;if(g.closest('[data-type="text"]')){m.preventDefault(),m.stopPropagation();const L=window.getSelection();L&&L.removeAllRanges();return}if(y&&g.closest(".tag-node")){m.preventDefault(),m.stopPropagation();const V=window.getSelection();V&&V.removeAllRanges();return}if(g.closest('[data-type="variable"]')){if(I.current)return;setTimeout(()=>{const L=window.getSelection();L&&!L.isCollapsed||Ae(s)},10);return}const k=g.closest(".file-remove-btn");if(k){m.preventDefault(),m.stopPropagation();const V=k.closest('[data-type="upload"]')?.dataset.key;V&&ae(V);return}const N=g.closest('[data-type="upload"]');if(N){const L=N.dataset.key;L&&(j(L),A.current?.click());return}},W=m=>{const b=m.target.closest('[data-type="variable"]');if(b){const S=window.getSelection();if(S){const v=document.createRange(),k=b.textContent||"";if(k.replace(/\u200B/g,"")){let L=0,V=k.length;k.startsWith("​")&&(L=1),k.endsWith("​")&&k.length>1&&(V=k.length-1);const F=b.firstChild;F&&F.nodeType===Node.TEXT_NODE?(v.setStart(F,L),v.setEnd(F,V)):v.selectNodeContents(b)}else v.selectNodeContents(b),v.collapse(!0);S.removeAllRanges(),S.addRange(v)}}},ce=()=>{if(t.length===0){if(s.current){const b=!(s.current.textContent?.replace(/[\u200B\n]/g,"").trim()||"");K(b),M(!b)}return}if(Ae(s),s.current&&s.current.querySelectorAll('[data-type="variable"]').forEach(b=>{const S=b.querySelector(".variable-info-icon");if(S){let v=!1;const k=document.createTreeWalker(b,NodeFilter.SHOW_TEXT,{acceptNode:N=>S.contains(N)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT});for(;k.nextNode();)if(k.currentNode.textContent?.replace(/[\u200B\n]/g,"").trim()){v=!0;break}v?S.classList.add("hidden"):S.classList.remove("hidden")}}),Ne(s,t,u),Se(s,t,u,M),!s.current)return;t.filter(g=>g.type==="multi-variable"&&g.key).forEach(g=>{if(!g.key)return;const b=g.maxCount||9,S=$[g.key]||1,v=[];for(let F=0;F<S;F++){const ne=`${g.key}_${F}`,re=s.current.querySelector(`[data-type="variable"][data-key="${ne}"][data-multi-key="${g.key}"]`);if(re){const le=re.innerText.replace(/[\u200B\n]/g,"").trim();v.push(le)}}const N=(v[v.length-1]||"")==="";let L=!1,V=-1;for(let F=0;F<v.length-1;F++)if(v[F]===""){L=!0,V=F;break}if(L&&V>=0){const F=window.getSelection();if(F&&F.rangeCount>0){const H=F.getRangeAt(0),te=H.startContainer,ue=te.nodeType===Node.ELEMENT_NODE?te.closest('[data-type="variable"][data-multi-key]'):te.parentElement?.closest('[data-type="variable"][data-multi-key]');if(ue){const J=ue.dataset.key;if(J){const se=document.createRange();se.setStartBefore(ue),se.setEnd(H.startContainer,H.startOffset);const pe=se.toString().length;X.current={key:J,offset:pe}}}}const ne=[...v];for(let H=V;H<ne.length-1;H++)ne[H]=ne[H+1];ne.pop();const re={};ne.forEach((H,te)=>{H&&(re[`${g.key}_${te}`]=H)});const le=Math.max(N?ne.length:ne.length+1,1);s.current.querySelectorAll('[data-type="variable"]').forEach(H=>{const te=H.dataset.key,ue=H.dataset.multiKey;if(te&&ue!==g.key){const J=H.innerText.replace(/[\u200B\n]/g,"").trim();J&&(re[te]=J)}}),s.current.__tempVariableValues=re,C(H=>({...H,[g.key]:le}));return}if(!N){const F=S-1,ne=`${g.key}_${F}`,re=s.current.querySelector(`[data-type="variable"][data-key="${ne}"][data-multi-key="${g.key}"]`);if(re&&re.innerText.replace(/[\u200B\n]/g,"").trim().length>0&&S<b){const oe=window.getSelection();if(oe&&oe.rangeCount>0){const H=oe.getRangeAt(0),te=H.startContainer,ue=te.nodeType===Node.ELEMENT_NODE?te.closest('[data-type="variable"][data-multi-key]'):te.parentElement?.closest('[data-type="variable"][data-multi-key]');if(ue){const J=ue.dataset.key;if(J){const se=document.createRange();se.setStartBefore(ue),se.setEnd(H.startContainer,H.startOffset);const pe=se.toString().length;X.current={key:J,offset:pe}}}}C(H=>({...H,[g.key]:S+1}))}}})};n.useEffect(()=>{const m=s.current;if(!m)return;const g=b=>{const S=b.target;if(!S||!s.current||!s.current.contains(S))return;const v=b.relatedTarget,k=!v||!s.current.contains(v);if(console.log("[Blur Event] 事件触发:",{target:S,relatedTarget:v,isReallyBlurred:k,activeElement:document.activeElement,targetTagName:S.tagName,targetClassName:S.className}),!k){console.log("[Blur Event] 焦点仍在编辑器内,跳过处理");return}const N=S.closest('[data-type="variable"][data-multi-key]');if(N&&s.current.contains(N)){const L=N.dataset.multiKey,V=N.dataset.key,F=N.dataset.index;if(L&&V&&F!==void 0){const ne=N.innerText.replace(/[\u200B\n]/g,"").trim();console.log("[Blur Event] 失去焦点的 multi-variable 输入框:",{multiKey:L,currentKey:V,index:F,content:ne});const re=/[、,,\s]+/;if(re.test(ne)){const le=ne.split(re).map(te=>te.trim()).filter(te=>te.length>0);console.log("[Blur Event] 拆分前的内容:",ne),console.log("[Blur Event] 拆分后的部分:",le);const H=le.slice(0,9);if(console.log("[Blur Event] 有效的部分(最多9个):",H),H.length>1){const te=t.find(ue=>ue.type==="multi-variable"&&ue.key===L);if(te){const ue=$[L]||1,J=parseInt(F,10),se=te.maxCount||9,pe=[];for(let ye=0;ye<ue;ye++){const xe=`${L}_${ye}`,Te=s.current.querySelector(`[data-type="variable"][data-key="${xe}"][data-multi-key="${L}"]`);if(Te){const Ce=Te.innerText.replace(/[\u200B\n]/g,"").trim();pe.push(Ce)}}console.log("[Blur Event] 拆分前的所有值:",pe),console.log("[Blur Event] 当前索引:",J),console.log("[Blur Event] 要插入的值:",H),pe.splice(J,1,...H);const fe=pe.slice(0,se);console.log("[Blur Event] 拆分后的所有值:",fe),fe.length>0&&fe[fe.length-1]!==""&&fe.length<se&&fe.push("");const bt=Math.max(fe.length,1),je={};fe.forEach((ye,xe)=>{ye&&(je[`${L}_${xe}`]=ye)}),s.current.querySelectorAll('[data-type="variable"]').forEach(ye=>{const xe=ye.dataset.key,Te=ye.dataset.multiKey;if(xe&&Te!==L){const Ce=ye.innerText.replace(/[\u200B\n]/g,"").trim();Ce&&(je[xe]=Ce)}}),s.current.__tempVariableValues=je,C(ye=>({...ye,[L]:bt}))}}}}}};return m.addEventListener("blur",g,!0),()=>{m.removeEventListener("blur",g,!0)}},[t,$]);const be=()=>{if(s.current){if(t.length===0){const m=s.current.textContent?.replace(/[\u200B\n]/g,"").trim()||"";M(m.length>0);return}Ae(s),Ne(s,t,u),Se(s,t,u,M)}},_e=m=>{if(r){m.preventDefault();return}const g=window.getSelection();if(g&&g.rangeCount>0){const b=g.anchorNode;let S=null;if(b&&(b.nodeType===Node.ELEMENT_NODE?S=b.closest('[data-type="text"]'):b.nodeType===Node.TEXT_NODE&&b.parentElement&&(S=b.parentElement.closest('[data-type="text"]'))),S){if(m.preventDefault(),m.stopPropagation(),s.current){const v=s.current.querySelector('[data-type="variable"], [data-type="upload"]');v&&v.focus()}return}}if(y&&g&&g.rangeCount>0){const b=g.anchorNode;let S=null;if(b&&(b.nodeType===Node.ELEMENT_NODE?S=b.closest(".tag-node"):b.nodeType===Node.TEXT_NODE&&b.parentElement&&(S=b.parentElement.closest(".tag-node"))),S){if(m.preventDefault(),m.stopPropagation(),s.current){const v=s.current.querySelector('[data-type="variable"], [data-type="upload"]');v&&v.focus()}return}}if(m.key==="Enter"&&!m.shiftKey&&(m.preventDefault(),Je()),m.key==="Escape"&&s.current){if(y){m.preventDefault();return}s.current.innerHTML="",s.current.focus()}if(m.key==="Backspace"){const b=window.getSelection();if(b&&b.rangeCount>0){const S=b.getRangeAt(0),v=b.anchorNode;if(y){let N=null,L=null;if(v&&(v.nodeType===Node.ELEMENT_NODE?(N=v.closest(".tag-node"),L=v.closest('[data-type="text"]')):v.nodeType===Node.TEXT_NODE&&v.parentElement&&(N=v.parentElement.closest(".tag-node"),L=v.parentElement.closest('[data-type="text"]'))),(N||L)&&S.collapsed&&S.startOffset===0){m.preventDefault();return}}let k=null;if(v&&(v.nodeType===Node.ELEMENT_NODE?k=v.closest('[data-type="variable"]'):v.nodeType===Node.TEXT_NODE&&v.parentElement&&(k=v.parentElement.closest('[data-type="variable"]'))),k){if(!S.collapsed)return;const N=k.innerText;if(N==="​"||N===""){m.preventDefault();return}if(S.startOffset===0){m.preventDefault();return}if(N.startsWith("​")&&S.startOffset===1){m.preventDefault();return}}}}},Je=()=>{if(l||r||e||!G||!s.current)return;if(t.length===0){const k=s.current.textContent?.replace(/[\u200B\n]/g,"").trim()||"";if(!k)return;f(k,k);return}const m=s.current;let g="";const b={},S=k=>{if(!(k.nodeType===Node.ELEMENT_NODE&&k.style.display==="none")){if(k.nodeType===Node.TEXT_NODE)g+=(k.textContent||"").replace(/\u200B/g,"");else if(k.nodeType===Node.ELEMENT_NODE){const N=k,L=N.dataset.type,V=N.dataset.key;if(L==="variable"&&V){let F="";const ne=document.createTreeWalker(N,NodeFilter.SHOW_TEXT,{acceptNode:le=>{const oe=N.querySelector(".variable-info-icon");return oe&&oe.contains(le)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}});for(;ne.nextNode();)F+=ne.currentNode.textContent||"";const re=F.replace(/[\u200B\n]/g,"").trim();if(re){const le=N.dataset.multiKey;if(le){(!b[le]||!Array.isArray(b[le]))&&(b[le]=[]);const oe=b[le];oe.push(re),oe.length>1&&(g+=" "),g+=re}else b[V]=re,g+=re}}else if(L==="upload"&&V)b[V]=u[V]??null,u[V]&&(g+=` [附带文件: ${u[V]?.name}] `);else{if(N.classList.contains("tag-close-btn")||N.classList.contains("file-remove-btn"))return;N.getAttribute("contenteditable")==="false"&&!L&&N.classList.contains("tag-node")?g+=N.innerText:N.childNodes.forEach(S)}}}};if(m.childNodes.forEach(S),g=g.trim(),!g)return;const v=new FormData;v.append("fullPrompt",g),Object.keys(b).forEach(k=>{const N=b[k];N!=null&&(N instanceof File?v.append(k,N):Array.isArray(N)?t.some(V=>V.type==="multi-variable"&&V.key===k)?N.forEach(V=>{V!=null&&V!==""&&v.append(k,String(V))}):N.forEach((V,F)=>{V!=null&&(V instanceof File?v.append(`${k}[${F}]`,V):typeof V=="string"?v.append(`${k}[${F}]`,V):v.append(`${k}[${F}]`,String(V)))}):typeof N=="string"?v.append(k,N):v.append(k,String(N)))}),f(v,g)},ht={...o?{width:typeof o=="number"?`${o}px`:o}:{},...d?{border:d}:{},...R?{background:R}:{}};return a.jsxs("div",{className:"rich-text-editor",style:ht,"data-disabled":r,children:[a.jsx("div",{ref:s,className:`rte-editor ${t.length===0?"rte-editor-default":""} ${U&&E?"rte-editor-empty":""}`,contentEditable:t.length===0,suppressContentEditableWarning:!0,"data-placeholder":E,onMouseDown:me,onMouseMove:ie,onMouseUp:ve,onClick:D,onDoubleClick:W,onInput:ce,onKeyDown:_e,onPaste:O,onBlur:be}),a.jsx("input",{type:"file",ref:A,className:"rte-file-input",accept:".csv,.xlsx,.xls,.txt,.pdf,image/*",onChange:Y}),a.jsxs("div",{className:"rich-text-editor-footer",children:[a.jsx("div",{className:"rich-text-editor-footer-left",children:a.jsxs("div",{className:"rich-text-editor-brand",children:[a.jsxs("div",{className:"rte-brand-badge",children:[a.jsx("img",{src:"https://oospublic.sealseek.cn/file/website/ball.png",alt:""}),a.jsx("span",{className:"rte-brand-text",children:"SealSeek 1.0"})]}),p!=="hideAgent"&&a.jsx(z.Dropdown,{placement:"top",menu:{items:_.map(m=>({key:m.key,label:a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[m.icon&&a.jsx("i",{className:m.icon}),a.jsx("span",{children:m.label})]}),onClick:()=>{h?.(m)}}))},trigger:["click"],disabled:r||l,children:a.jsxs("div",{className:"rte-agent-badge",style:{cursor:_.length>0?"pointer":"default"},children:[a.jsx("i",{className:"iconfont icon-zhinengti"}),a.jsx("span",{className:"rte-agent-text",children:"智能体"})]})})]})}),a.jsx("button",{type:"button",onClick:Je,disabled:l||r||e||!G,className:"rich-text-editor-send-button",children:l||e?a.jsx("span",{className:"rte-send-spinner"}):a.jsx("i",{className:"iconfont icon-fasong"})})]}),x?.anchorEl&&(()=>{if(!document.body.contains(x.anchorEl))return null;let m="";return x.type==="upload"?m=t.find(b=>b.type==="upload"&&b.key===x.key)?.tooltip||"":x.type==="tag"?m=x.anchorEl.dataset.tooltip||"":x.type==="upload-label"?m=x.anchorEl.dataset.fileName||"":x.type==="variable"&&(m=x.anchorEl.dataset.tooltip||""),Qe.createPortal(a.jsx(z.Tooltip,{arrow:!1,title:a.jsx("div",{style:{maxWidth:"200px",fontSize:"12px",color:"#fff"},children:m}),open:!0,placement:"top",getPopupContainer:()=>document.body,overlayInnerStyle:{background:"var(--neutral-800, #262626)"},children:a.jsx("div",{style:{position:"fixed",left:`${x.anchorEl.getBoundingClientRect().left}px`,top:`${x.anchorEl.getBoundingClientRect().top}px`,width:`${x.anchorEl.offsetWidth}px`,height:`${x.anchorEl.offsetHeight}px`,pointerEvents:"none"}})}),document.body)})()]})};We.__docgenInfo={displayName:"RichTextEditor",description:"结构化富文本输入组件,支持标签、变量输入块、文件上传以及互斥显示逻辑。",props:{config:{name:"config",required:!0,description:"结构化输入配置节点数组",type:{name:"InputNode[]",raw:"InputNode[]"}},onSend:{name:"onSend",required:!0,description:"点击发送按钮时的回调,返回数据与拼接后的 Prompt",type:{name:"function",raw:"(data: Record<string, any>, fullPrompt: string) => void"}},isProcessing:{name:"isProcessing",required:!1,description:"是否处于处理状态(禁用输入与发送)",type:{name:"boolean",raw:"boolean"},defaultValue:{value:"false"}}}};const He="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAYAAAByDd+UAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAFSSURBVHgB3ZTtccIwDIaVXv83I2SDZgSP0BHMBG0naEZhA2boBGQDswHdQJUOGRxjO0Z8HPDe6eJzJD2W4gjgEYSIn2xwK6EIFHqBGysJpMP3ZB0oRbEtmal1NtIxl4OWWsoxEsvqofJ0rgTNASOYq+7SXKDsuYvAcgkq/PWwBLQWqIfdjeRStaBUc4qzgLi9/BzJNmS/sh6bpvmrTfSFacU3scWy1mQryWdSnXiFE8QVUJINLTuyhWzzz/1OZmTN9hEckqtfUOwIGlGCpVRjE+94JFqpMtTeVzO8/UmPxpZU8Qa7aln8Tb9pfwla4WHWrjPvvbbnTBsX7PmLs83EDAH0BxSw1G31+/1FoDg/vPcXR+wocQS1apj4+P92FfhOoLyuBfYlmPgYnGoCjWADzAkzUyJ430awLmphPaxWQVU22BuuApPkHaanjcXSN3t6/QNjTMSJWDcs1QAAAABJRU5ErkJggg==",dt=[{label:"5页",value:5},{label:"10页",value:10},{label:"15页",value:15},{label:"30页",value:30}],pt=({autoLoading:t,batchSize:f,loadingProgress:l,loadIcon:r,onBatchSizeChange:o,onLoadNextPage:y,onStartAutoLoad:_,onStopLoad:h})=>t&&l?a.jsxs("div",{className:"auto_load_progress",children:[r||a.jsx("img",{src:He,alt:"自动加载",width:14,height:14}),a.jsxs("span",{children:["正在加载第",l.currentPage,"/",l.totalPages,"页"]}),a.jsx(z.Progress,{percent:l.percentage,type:"line",size:[160,8]}),a.jsx("span",{onClick:h,className:"auto_load_stop_btn",children:"停止加载"})]}):a.jsxs("div",{className:"auto_load_container",children:[a.jsx("div",{onClick:y,className:"auto_load_next_btn",style:{backgroundColor:t?"#f5f5f5":"#2563eb"},children:"加载下一页"}),a.jsxs("div",{className:"right_control_wrap",style:{backgroundColor:t?"#f5f5f5":"#2563eb"},children:[a.jsxs("div",{className:"auto_load_btn",onClick:t?void 0:_,children:[r||a.jsx("img",{src:He,alt:"自动加载",width:14,height:14}),a.jsx("span",{children:"自动加载"})]}),a.jsx(z.Select,{value:f,onChange:o,options:dt,disabled:t,size:"small",className:"auto_load_select",popupMatchSelectWidth:84})]})]}),ft=({current:t,loadIcon:f,pageSize:l,total:r,cachedPages:o,loadedCount:y,autoLoading:_=!1,loadingProgress:h,onChange:c,onLoadNextPage:e,onStartAutoLoad:E,onStopLoading:d})=>{const[R,p]=n.useState(5),s=Math.ceil(r/l),A=n.useMemo(()=>o.length>=s,[o,s]),u=()=>Array.from({length:s},(j,x)=>x+1).filter(j=>!o.includes(j)).slice(0,R),w=(T,j,x)=>{const P=o.includes(T);return j==="prev"||j==="next"||j==="jump-prev"||j==="jump-next"?a.jsx("div",{className:"pageBox",children:x}):a.jsxs("div",{className:"pageBox",style:{backgroundColor:t===T?"#2563EB":"#f5f5f5",color:t===T?"#fff":P?"#171717":"#a3a3a3"},children:[T,!P&&a.jsx("span",{className:"unload_spot"})]})};return a.jsxs("div",{className:"pagination_footer",children:[a.jsxs("div",{className:"pagination_leftWrap",children:[a.jsxs("span",{className:"pagination_total",children:[a.jsx(he.InfoCircleOutlined,{style:{color:"#2563EB",marginRight:"4px"}}),"已加载: ",y,"/",r,"条数据"]}),!A&&a.jsx(pt,{loadIcon:f||void 0,autoLoading:_,batchSize:R,loadingProgress:h,disabled:!e||!E,onBatchSizeChange:p,onLoadNextPage:()=>e?.(),onStartAutoLoad:()=>{const T=u();E?.(T)},onStopLoad:()=>d?.()})]}),a.jsx(z.Pagination,{current:t,pageSize:l,total:r,onChange:T=>c(T),showSizeChanger:!1,showQuickJumper:!1,showTotal:(T,j)=>"",itemRender:w})]})},Ue=t=>{const{loading:f,autoLoading:l,loadingProgress:r,columns:o=[],dataSource:y=[],total:_,current:h,pageSize:c,cachedPages:e,onChangePage:E,onLoadNextPage:d,onStartAutoLoad:R,onStopLoading:p,...s}=t,A=n.useRef(null),u=n.useCallback(w=>{E(w),e.includes(w)&&A.current?.scrollTo({key:`${(w-1)*c+1}`})},[h]);return a.jsxs("div",{className:"flex flex-col",children:[a.jsx(z.Table,{ref:A,...s,columns:o,dataSource:y,pagination:!1,virtual:!0}),a.jsx(ft,{loading:f,autoLoading:l,loadingProgress:r,current:h,pageSize:c,total:_,loadedCount:y.length,cachedPages:e,onChange:u,onLoadNextPage:d,onStartAutoLoad:R,onStopLoading:p})]})};Ue.__docgenInfo={displayName:"VirtualTable",description:"虚拟滚动表格组件,支持分页、数据缓存和自动加载功能。",props:{loading:{description:"加载状态",name:"loading",required:!0,type:{name:"boolean",raw:"boolean"},defaultValue:{value:"false"}},total:{description:"总数据条数",name:"total",required:!0,type:{name:"number",raw:"number"},defaultValue:{value:"0"}},current:{description:"当前页码",name:"current",required:!0,type:{name:"number",raw:"number"},defaultValue:{value:"1"}},pageSize:{description:"每页数据条数",name:"pageSize",required:!0,type:{name:"number",raw:"number"},defaultValue:{value:"10"}},cachedPages:{description:"已缓存的页码数组",name:"cachedPages",required:!0,type:{name:"number[]",raw:"number[]"},defaultValue:{value:"[]"}},dataSource:{description:"数据源",name:"dataSource",required:!0,type:{name:"Array<T>",raw:"Array<T>"},defaultValue:{value:"[]"}},onChangePage:{description:"页码变更回调函数",name:"onChangePage",required:!0,type:{name:"function",raw:"function(page: number): void"},defaultValue:{value:"-"}},autoLoading:{description:"是否正在自动加载",name:"autoLoading",required:!0,type:{name:"boolean",raw:"boolean"},defaultValue:{value:"false"}},loadingProgress:{description:"加载进度信息",name:"loadingProgress",required:!0,type:{name:"object",raw:"{percentage: 0, currentPage: 1, totalPages: 5}"},defaultValue:{value:"-"}},onLoadNextPage:{description:"加载下一页回调函数",name:"onLoadNextPage",required:!1,type:{name:"function",raw:"function(page: number): void"},defaultValue:{value:"-"}},onStartAutoLoad:{description:"开始自动加载回调函数",name:"onStartAutoLoad",required:!1,type:{name:"function",raw:"function(loadNextPages: number[]): void"},defaultValue:{value:"-"}},onStopLoading:{description:"停止加载回调函数",name:"onStopLoading",required:!1,type:{name:"function",raw:"function(): void"},defaultValue:{value:"-"}},columns:{description:"表格列配置",name:"columns",required:!0,type:{name:"Array<object>",raw:"Array<object>"},defaultValue:{value:"[]"}}}};const Xe=({texts:t=[],placeholder:f="请输入内容",animationSpeed:l=100,autoPlay:r=!0,value:o,onChange:y,..._})=>{const[h,c]=n.useState(""),[e,E]=n.useState(0),[d,R]=n.useState(!1),[p,s]=n.useState(!1),[A,u]=n.useState(!1),w=n.useRef(void 0),T=n.useRef(void 0),j=n.useRef(t),x=n.useRef(e),P=n.useRef(p),I=n.useRef(h);n.useEffect(()=>{j.current=t,x.current=e,P.current=p,I.current=h});const q=n.useCallback((C,B)=>{let Z=0;u(!0);const ee=()=>{Z<C.length?(c(C.slice(0,Z+1)),Z++,T.current=window.setTimeout(ee,l)):(u(!1),B?.())};ee()},[l]),G=n.useCallback(C=>{let B=I.current.length;const Z=()=>{B>0?(c(I.current.slice(0,B-1)),B--,T.current=window.setTimeout(Z,l/2)):C?.()};Z()},[l]),M=n.useCallback(()=>{if(j.current.length===0||P.current)return;R(!0);const C=j.current[x.current];I.current?G(()=>{q(C,()=>{w.current=window.setTimeout(()=>{E(B=>(B+1)%j.current.length),R(!1)},2e3)})}):q(C,()=>{w.current=window.setTimeout(()=>{E(B=>(B+1)%j.current.length),R(!1)},2e3)})},[G,q]);n.useEffect(()=>(r&&t.length>0&&!p&&M(),()=>{w.current&&window.clearTimeout(w.current),T.current&&window.clearTimeout(T.current)}),[e,p,r,t.length,M]),n.useEffect(()=>{!d&&r&&t.length>0&&!p&&M()},[e,d,r,t.length,p,M]);const X=C=>{s(!0),w.current&&window.clearTimeout(w.current),T.current&&window.clearTimeout(T.current),R(!1),u(!1),_.onFocus?.(C)},U=C=>{s(!1),!o&&t.length>0&&(c(""),E(0)),_.onBlur?.(C)},K=C=>{y?.(C.target.value),_.onChange?.(C)},$=()=>p||o?f:h||f;return a.jsxs("div",{style:{position:"relative"},children:[a.jsx(z.Input,{..._,value:o,onChange:K,onFocus:X,onBlur:U,placeholder:$(),style:{..._.style,position:"relative",zIndex:1}}),!p&&!o&&h&&a.jsxs("div",{style:{position:"absolute",top:0,left:0,right:0,bottom:0,display:"flex",alignItems:"center",paddingLeft:11,paddingRight:11,color:"#bfbfbf",pointerEvents:"none",zIndex:2,fontSize:14,fontFamily:"inherit"},children:[a.jsx("span",{children:h}),A&&a.jsx("span",{style:{display:"inline-block",width:1,height:"1.2em",backgroundColor:"#1890ff",marginLeft:2,animation:"blink 1s infinite"}})]}),a.jsx("style",{children:`
22
+ <%s key={someKey} {...props} />`,ae,W,ce,W),ye[W+ae]=!0)}if(W=null,J!==void 0&&(l(J),W=""+J),A(O)&&(l(O.key),W=""+O.key),"key"in O){J={};for(var be in O)be!=="key"&&(J[be]=O[be])}else J=O;return W&&b(J,typeof i=="function"?i.displayName||i.name||"Unknown":i),e(i,W,le,pe,s(),J,xe,F)}function d(i){typeof i=="object"&&i!==null&&i.$$typeof===y&&i._store&&(i._store.validated=1)}var R=n,y=Symbol.for("react.transitional.element"),o=Symbol.for("react.portal"),S=Symbol.for("react.fragment"),c=Symbol.for("react.strict_mode"),k=Symbol.for("react.profiler"),T=Symbol.for("react.consumer"),j=Symbol.for("react.context"),v=Symbol.for("react.forward_ref"),P=Symbol.for("react.suspense"),_=Symbol.for("react.suspense_list"),q=Symbol.for("react.memo"),G=Symbol.for("react.lazy"),M=Symbol.for("react.activity"),K=Symbol.for("react.client.reference"),H=R.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,Y=Object.prototype.hasOwnProperty,ee=Array.isArray,C=console.createTask?console.createTask:function(){return null};R={react_stack_bottom_frame:function(i){return i()}};var B,$={},te=R.react_stack_bottom_frame.bind(R,g)(),de=C(r(g)),ye={};Te.Fragment=S,Te.jsx=function(i,O,J,ae,pe){var le=1e4>H.recentlyCreatedOwnerStacks++;return w(i,O,J,!1,ae,pe,le?Error("react-stack-top-frame"):te,le?C(r(i)):de)},Te.jsxs=function(i,O,J,ae,pe){var le=1e4>H.recentlyCreatedOwnerStacks++;return w(i,O,J,!0,ae,pe,le?Error("react-stack-top-frame"):te,le?C(r(i)):de)}}()),Te}var qe;function ot(){return qe||(qe=1,process.env.NODE_ENV==="production"?Ce.exports=at():Ce.exports=rt()),Ce.exports}var a=ot();const Me=({variant:t="primary",loading:f=!1,children:l,...r})=>{const s=g=>{switch(g){case"primary":return"primary";case"ghost":return"default";case"dashed":return"dashed";case"link":return"link";case"text":return"text";default:return"primary"}};return a.jsx(z.Button,{...r,type:s(t),loading:f,ghost:t==="ghost",children:l})};Me.__docgenInfo={displayName:"Button",description:"基础按钮,用于触发操作",props:{variant:{name:"variant",required:!1,description:"视觉风格",type:{name:"ButtonVariant",raw:'"primary" | "ghost" | "dashed" | "link" | "text"'},defaultValue:{value:'"primary"'}},loading:{name:"loading",required:!1,description:"是否加载中",type:{name:"boolean",raw:"boolean"},defaultValue:{value:"false"}},children:{name:"children",required:!1,description:"按钮内容",type:{name:"ReactNode",raw:"React.ReactNode"}},size:{name:"size",required:!1,description:"按钮大小",type:{name:"ButtonSize",raw:'"small" | "middle" | "large"'}},disabled:{name:"disabled",required:!1,description:"是否禁用",type:{name:"boolean",raw:"boolean"}},onClick:{name:"onClick",required:!1,description:"点击事件",type:{name:"function",raw:"(event: MouseEvent) => void"}}}};const De=({title:t,children:f,bordered:l=!0,hoverable:r=!1,size:s="default",...g})=>a.jsx(z.Card,{...g,title:t,bordered:l,hoverable:r,size:s,children:f});De.__docgenInfo={displayName:"Card",description:"卡片容器,用于分组内容",props:{title:{name:"title",required:!1,description:"标题",type:{name:"ReactNode",raw:"React.ReactNode"}},children:{name:"children",required:!1,description:"内容区域",type:{name:"ReactNode",raw:"React.ReactNode"}},bordered:{name:"bordered",required:!1,description:"是否显示边框",type:{name:"boolean",raw:"boolean"},defaultValue:{value:"true"}},hoverable:{name:"hoverable",required:!1,description:"是否可悬停",type:{name:"boolean",raw:"boolean"},defaultValue:{value:"false"}},size:{name:"size",required:!1,description:"卡片大小",type:{name:"CardSize",raw:'"default" | "small"'},defaultValue:{value:'"default"'}},loading:{name:"loading",required:!1,description:"是否加载中",type:{name:"boolean",raw:"boolean"}},actions:{name:"actions",required:!1,description:"卡片操作组",type:{name:"ReactNode[]",raw:"React.ReactNode[]"}}}};const Fe=({showDefaultFooter:t=!0,...f})=>{const l=f.footer!==void 0?f.footer:t?(r,{OkBtn:s,CancelBtn:g})=>a.jsxs(a.Fragment,{children:[a.jsx(s,{}),a.jsx(g,{})]}):null;return a.jsx(z.Modal,{...f,footer:l})};Fe.__docgenInfo={displayName:"AppModal",description:"应用级模态框组件,基于 Ant Design Modal 封装",props:{showDefaultFooter:{name:"showDefaultFooter",required:!1,description:"是否显示默认的确定和取消按钮",type:{name:"boolean",raw:"boolean"},defaultValue:{value:"true"}},title:{name:"title",required:!1,description:"模态框标题",type:{name:"ReactNode",raw:"React.ReactNode"}},open:{name:"open",required:!1,description:"是否显示模态框",type:{name:"boolean",raw:"boolean"}},onCancel:{name:"onCancel",required:!1,description:"取消按钮点击事件",type:{name:"function",raw:"(e: React.MouseEvent<HTMLElement>) => void"}},onOk:{name:"onOk",required:!1,description:"确定按钮点击事件",type:{name:"function",raw:"(e: React.MouseEvent<HTMLElement>) => void"}},children:{name:"children",required:!1,description:"模态框内容",type:{name:"ReactNode",raw:"React.ReactNode"}},width:{name:"width",required:!1,description:"模态框宽度",type:{name:"string | number",raw:"string | number"}},centered:{name:"centered",required:!1,description:"是否居中显示",type:{name:"boolean",raw:"boolean"}},maskClosable:{name:"maskClosable",required:!1,description:"点击蒙层是否允许关闭",type:{name:"boolean",raw:"boolean"}}}};const Ge=({scrollX:t,showPagination:f=!0,defaultPageSize:l=10,...r})=>a.jsx(z.Table,{...r,scroll:{x:t||"max-content",y:"50vh"},pagination:f?{hideOnSinglePage:!0,showSizeChanger:!0,showQuickJumper:!0,defaultPageSize:l,...r.pagination}:!1});Ge.__docgenInfo={displayName:"PageTable",description:"页面级表格组件,高度铺满容器,自动滚动",props:{scrollX:{name:"scrollX",required:!1,description:"水平滚动宽度",type:{name:"number",raw:"number"}},showPagination:{name:"showPagination",required:!1,description:"是否显示分页器",type:{name:"boolean",raw:"boolean"},defaultValue:{value:"true"}},defaultPageSize:{name:"defaultPageSize",required:!1,description:"默认页面大小",type:{name:"number",raw:"number"},defaultValue:{value:"10"}},columns:{name:"columns",required:!1,description:"表格列配置",type:{name:"ColumnType[]",raw:"ColumnType<any>[]"}},dataSource:{name:"dataSource",required:!1,description:"数据源",type:{name:"any[]",raw:"any[]"}},loading:{name:"loading",required:!1,description:"是否加载中",type:{name:"boolean",raw:"boolean"}},rowKey:{name:"rowKey",required:!1,description:"行数据的 Key",type:{name:"string | function",raw:"string | ((record: any) => string)"}}}};const st=he.createFromIconfontCN({scriptUrl:["https://at.alicdn.com/t/c/font_4968458_eh91gfr4j9e.js"]}),ze=({name:t,size:f,color:l,style:r,...s})=>{const g={fontSize:f,color:l,...r};return a.jsx(st,{...s,type:t,style:g})};ze.__docgenInfo={displayName:"XcIcon",description:"自定义图标组件,基于 iconfont",props:{name:{name:"name",required:!0,description:"图标名称",type:{name:"string",raw:"string"}},size:{name:"size",required:!1,description:"图标大小",type:{name:"number | string",raw:"number | string"}},color:{name:"color",required:!1,description:"图标颜色",type:{name:"string",raw:"string"}},className:{name:"className",required:!1,description:"自定义类名",type:{name:"string",raw:"string"}},style:{name:"style",required:!1,description:"自定义样式",type:{name:"CSSProperties",raw:"React.CSSProperties"}}}};const We=({loading:t,description:f="暂无数据",className:l,emptyChildren:r,loadingText:s,emptyImage:g})=>t?a.jsxs(z.Flex,{className:`pt-10 w-full ${l||""}`,align:"center",justify:"center",vertical:!0,children:[a.jsx(z.Spin,{size:"large"}),s&&a.jsx("div",{className:"mt-4 text-gray-500",children:s})]}):a.jsx(z.Flex,{className:`pt-10 w-full ${l||""}`,align:"center",justify:"center",children:a.jsx(z.Empty,{image:g,description:f,imageStyle:{height:180},children:r})});We.__docgenInfo={displayName:"EmptyAndSpin",description:"空状态和加载状态组合组件",props:{loading:{name:"loading",required:!0,description:"是否加载中",type:{name:"boolean",raw:"boolean"}},description:{name:"description",required:!1,description:"空状态描述",type:{name:"ReactNode",raw:"React.ReactNode"},defaultValue:{value:'"暂无数据"'}},className:{name:"className",required:!1,description:"自定义类名",type:{name:"string",raw:"string"}},emptyChildren:{name:"emptyChildren",required:!1,description:"空状态额外内容",type:{name:"ReactNode",raw:"React.ReactNode"}},loadingText:{name:"loadingText",required:!1,description:"加载中提示文字",type:{name:"string",raw:"string"}},emptyImage:{name:"emptyImage",required:!1,description:"空状态图片",type:{name:"string",raw:"string"}}}};const He=({onClick:t,showText:f=!1,className:l,size:r="small",type:s="default"})=>a.jsx(z.Button,{size:r,type:s,icon:a.jsx(he.LeftOutlined,{}),className:`cursor-pointer ${l||""}`,onClick:t,children:f&&"返回"});He.__docgenInfo={displayName:"BackButton",description:"返回按钮组件",props:{onClick:{name:"onClick",required:!1,description:"点击事件",type:{name:"function",raw:"() => void"}},showText:{name:"showText",required:!1,description:"是否显示文字",type:{name:"boolean",raw:"boolean"},defaultValue:{value:"false"}},className:{name:"className",required:!1,description:"自定义类名",type:{name:"string",raw:"string"}},size:{name:"size",required:!1,description:"按钮大小",type:{name:"ButtonSize",raw:'"small" | "middle" | "large"'},defaultValue:{value:'"small"'}},type:{name:"type",required:!1,description:"按钮类型",type:{name:"ButtonType",raw:'"primary" | "default" | "dashed" | "link" | "text"'},defaultValue:{value:'"default"'}}}};const Ue=({removePadding:t=!0,className:f,...l})=>{const r=t?`px-0 h-auto ${f||""}`:f;return a.jsx(z.Button,{type:"link",...l,className:r,children:l.children})};Ue.__docgenInfo={displayName:"LinkButton",description:"链接样式按钮组件,适用于表格操作列",props:{removePadding:{name:"removePadding",required:!1,description:"是否去除默认内边距",type:{name:"boolean",raw:"boolean"},defaultValue:{value:"true"}},children:{name:"children",required:!1,description:"按钮内容",type:{name:"ReactNode",raw:"React.ReactNode"}},onClick:{name:"onClick",required:!1,description:"点击事件",type:{name:"function",raw:"(event: React.MouseEvent<HTMLButtonElement>) => void"}},disabled:{name:"disabled",required:!1,description:"是否禁用",type:{name:"boolean",raw:"boolean"}},className:{name:"className",required:!1,description:"自定义类名",type:{name:"string",raw:"string"}}}};const{Option:lt}=z.Select,Xe=({columns:t,request:f,searchFields:l=[],showSearch:r=!0,showRefresh:s=!0,defaultPageSize:g=10,pageSizeOptions:A=["10","20","50","100"],autoLoad:b=!0,externalParams:u={},...e})=>{const[w,d]=n.useState([]),[R,y]=n.useState(!1),[o,S]=n.useState({current:1,pageSize:g,total:0}),[c,k]=n.useState({}),[T,j]=n.useState({}),[v]=z.Form.useForm(),P=n.useRef(o);P.current=o;const _=n.useRef(u);_.current=u;const q=n.useRef(!1),G=n.useMemo(()=>t.map(C=>{const{sortable:B,render:$,...te}=C;return{...te,sorter:B?!0:void 0,render:$||(de=>de)}}),[t]),M=n.useCallback(async(C={})=>{if(f){y(!0);try{const B={page:P.current.current,pageSize:P.current.pageSize,sortField:T.field,sortOrder:T.order,searchParams:{...c,..._.current},...C},$=await f(B);$.success&&(d($.data),S(te=>({...te,total:$.total,current:B.page||te.current})))}catch(B){console.error("加载数据失败:",B)}finally{y(!1)}}},[f,T,c]),K=n.useCallback(C=>{k(C),S(B=>({...B,current:1}))},[]),H=n.useCallback(()=>{v.resetFields(),k({}),S(C=>({...C,current:1}))},[v]),Y=n.useCallback(()=>{M()},[M]),ee=n.useCallback((C,B,$)=>{const te={current:C.current||1,pageSize:C.pageSize||g,total:C.total||0},de={field:$?.field,order:$?.order};S(te),j(de)},[g]);return n.useEffect(()=>{const C=Object.keys(u).length>0;(b&&!q.current||C)&&(M(),q.current=!0)},[b,u,M]),a.jsxs("div",{children:[r&&l.length>0&&a.jsx(z.Card,{size:"small",style:{marginBottom:16},children:a.jsxs(z.Form,{form:v,layout:"inline",onFinish:K,initialValues:l.reduce((C,B)=>(B.defaultValue!==void 0&&(C[B.key]=B.defaultValue),C),{}),children:[l.map(C=>a.jsx(z.Form.Item,{name:C.key,label:C.label,children:C.type==="input"?a.jsx(z.Input,{placeholder:C.placeholder||`请输入${C.label}`,style:{width:200}}):a.jsx(z.Select,{placeholder:C.placeholder||`请选择${C.label}`,style:{width:200},allowClear:!0,children:C.options?.map(B=>a.jsx(lt,{value:B.value,children:B.label},B.value))})},C.key)),a.jsx(z.Form.Item,{children:a.jsxs(z.Space,{children:[a.jsx(z.Button,{type:"primary",htmlType:"submit",icon:a.jsx(he.SearchOutlined,{}),children:"查询"}),a.jsx(z.Button,{onClick:H,children:"重置"}),s&&a.jsx(z.Button,{icon:a.jsx(he.ReloadOutlined,{}),onClick:Y,children:"刷新"})]})})]})}),a.jsx(z.Table,{...e,columns:G,dataSource:w,loading:R,pagination:{...o,showSizeChanger:!0,showQuickJumper:!0,showTotal:(C,B)=>`第 ${B[0]}-${B[1]} 条/共 ${C} 条`,pageSizeOptions:A},onChange:ee,scroll:{x:"max-content",y:"50vh"}})]})};Xe.__docgenInfo={displayName:"AdvancedTable",description:"高阶表格组件,支持异步请求、搜索、排序等功能",props:{columns:{name:"columns",required:!0,description:"列配置",type:{name:"AdvancedColumnType[]",raw:"AdvancedColumnType<any>[]"}},request:{name:"request",required:!1,description:"异步请求函数",type:{name:"function",raw:"(params: RequestParams) => Promise<RequestResponse>"}},searchFields:{name:"searchFields",required:!1,description:"搜索字段配置",type:{name:"SearchFieldConfig[]",raw:"SearchFieldConfig[]"},defaultValue:{value:"[]"}},showSearch:{name:"showSearch",required:!1,description:"是否显示搜索区域",type:{name:"boolean",raw:"boolean"},defaultValue:{value:"true"}},showRefresh:{name:"showRefresh",required:!1,description:"是否显示刷新按钮",type:{name:"boolean",raw:"boolean"},defaultValue:{value:"true"}},defaultPageSize:{name:"defaultPageSize",required:!1,description:"默认页面大小",type:{name:"number",raw:"number"},defaultValue:{value:"10"}},pageSizeOptions:{name:"pageSizeOptions",required:!1,description:"页面大小选项",type:{name:"string[]",raw:"string[]"},defaultValue:{value:'["10", "20", "50", "100"]'}},autoLoad:{name:"autoLoad",required:!1,description:"是否自动加载",type:{name:"boolean",raw:"boolean"},defaultValue:{value:"true"}},externalParams:{name:"externalParams",required:!1,description:"外部请求参数",type:{name:"Record<string, any>",raw:"Record<string, any>"},defaultValue:{value:"{}"}}}};function _e(t,f,l){if(!t.current)return;const r=new Set,s={};for(const d of f)d.exclusionGroup&&d.exclusionGroup!=="separator"&&(r.add(d.exclusionGroup),s[d.exclusionGroup]||(s[d.exclusionGroup]=[]),s[d.exclusionGroup].push({type:d.type,key:d.key,exclusionGroup:d.exclusionGroup}));const g={};for(const d of r){g[d]=!1;for(const R of s[d])if(R.type==="upload"&&R.key){if(l[R.key]!==null&&l[R.key]!==void 0){g[d]=!0;break}}else if(R.type==="variable"&&R.key){const y=t.current.querySelector(`[data-type="variable"][data-key="${R.key}"]`);if(y&&y.innerText.replace(/[\u200B\n]/g,"").trim().length>0){g[d]=!0;break}}}const A=f.some(d=>d.exclusionGroup==="separator"),u=Object.keys(g).filter(d=>g[d]).length>0;let e=null;if(u&&A){for(const d of f)if(d.exclusionGroup&&d.exclusionGroup!=="separator"&&g[d.exclusionGroup]){e=d.exclusionGroup;break}}for(const d of r){const R=t.current.querySelectorAll(`[data-group="${d}"]`);A&&u&&e?d===e?R.forEach(y=>{y.classList.contains("required-upload-group")?y.style.setProperty("display","inline-flex","important"):(y.classList.contains("exclusion-wrapper"),y.style.setProperty("display","inline-block","important"))}):R.forEach(y=>{y.style.display="none",y.style.setProperty("display","none","important")}):R.forEach(y=>{y.classList.contains("required-upload-group")?y.style.setProperty("display","inline-flex","important"):(y.classList.contains("exclusion-wrapper"),y.style.setProperty("display","inline-block","important"))})}t.current.querySelectorAll('[data-group="separator"]').forEach(d=>{d.style.display=u?"none":"inline"})}function Ie(t,f,l,r){if(!t.current){r(!1);return}const s=[];for(let u=0;u<f.length;u++){const e=f[u];if((e.type==="variable"||e.type==="upload"||e.type==="multi-variable")&&e.required&&e.key){s.push({exclusionGroup:e.exclusionGroup||"",key:e.key,type:e.type==="multi-variable"?"variable":e.type,isMultiVariable:e.type==="multi-variable"});continue}if(e.type==="text"&&e.className?.includes("rte-text-required")&&e.exclusionGroup)for(let w=u+1;w<f.length;w++){const d=f[w];if(d.exclusionGroup===e.exclusionGroup&&(d.type==="variable"||d.type==="upload")&&d.key){s.push({exclusionGroup:e.exclusionGroup,key:d.key,type:d.type});break}}}const g=f.some(u=>u.exclusionGroup==="separator");let A=!1;if(g&&s.length>1){const u=f.findIndex(d=>d.exclusionGroup==="separator"),e=s.filter(d=>f.findIndex(y=>(y.type==="variable"||y.type==="upload")&&y.key===d.key&&y.exclusionGroup===d.exclusionGroup)<u),w=s.filter(d=>f.findIndex(y=>(y.type==="variable"||y.type==="upload")&&y.key===d.key&&y.exclusionGroup===d.exclusionGroup)>u);A=e.length>0&&w.length>0}if(s.length===0){if(f.length===0){if(!t.current){r(!1);return}const u=t.current.textContent?.replace(/[\u200B\n]/g,"").trim()||"";r(u.length>0);return}r(!0);return}const b=s.filter(u=>{if(!t.current)return!1;const e=t.current.querySelectorAll(`[data-group="${u.exclusionGroup}"]`);return e.length===0?!1:e[0].style.display!=="none"});if(b.length===0){r(!0);return}if(A){let u=!1;for(const e of b)if(e.type==="upload"&&e.key){if(l[e.key]!==null&&l[e.key]!==void 0){u=!0;break}}else if(e.type==="variable"&&e.key)if(e.isMultiVariable){const w=t.current.querySelectorAll(`[data-type="variable"][data-multi-key="${e.key}"]`);let d=!1;for(const R of Array.from(w))if(R.innerText.replace(/[\u200B\n]/g,"").trim().length>0){d=!0;break}if(d){u=!0;break}}else{const w=t.current.querySelector(`[data-type="variable"][data-key="${e.key}"]`);if(w&&w.innerText.replace(/[\u200B\n]/g,"").trim().length>0){u=!0;break}}r(u)}else{let u=!0;for(const e of b)if(e.type==="upload"&&e.key){if(l[e.key]===null||l[e.key]===void 0){u=!1;break}}else if(e.type==="variable"&&e.key)if(e.isMultiVariable){const w=t.current.querySelectorAll(`[data-type="variable"][data-multi-key="${e.key}"]`);let d=!1;for(const R of Array.from(w))if(R.innerText.replace(/[\u200B\n]/g,"").trim().length>0){d=!0;break}if(!d){u=!1;break}}else{const w=t.current.querySelector(`[data-type="variable"][data-key="${e.key}"]`);if(!w){u=!1;break}if(w.innerText.replace(/[\u200B\n]/g,"").trim().length===0){u=!1;break}}r(u)}}function Ve(t,f){if(!t.current)return;t.current.querySelectorAll('[data-type="variable"]').forEach(r=>{const s=r.innerText.replace(/\n/g,"");s.replace(/\u200B/g,"")?r.classList.remove("show-placeholder"):(s!=="​"&&(r.innerText="​"),r.classList.add("show-placeholder"))})}function it(t,f,l,r,s,g={},A){if(!t.current)return;let b="",u=0;for(;u<f.length;){const e=f[u],w=u+1<f.length?f[u+1]:null;if(e.type==="text"&&(e.text?.includes("icon-bitian")||e.className==="rte-text-required")&&w){const c=w.type==="upload"&&w.exclusionGroup==="fileInput"&&e.exclusionGroup==="fileInput"&&e.exclusionGroup===w.exclusionGroup,k=w.type==="variable"&&w.exclusionGroup==="textInput"&&e.exclusionGroup==="textInput"&&e.exclusionGroup===w.exclusionGroup;if(c){const j=`<span ${e.exclusionGroup?`data-group="${e.exclusionGroup}"`:""} class="exclusion-wrapper required-upload-group">`,v="</span>";let P="";e.className?P=`<span class="${e.className}">${e.text??""}</span>`:P=e.text??"";const _=w,q=l[_.key]!==null&&l[_.key]!==void 0,G=q?l[_.key]?.name:_.text,M=q?"":"hidden",K=_.tooltip&&!q?"":"hidden",H=q?"has-file":"",Y=q&&G?` data-file-name="${G.replace(/"/g,"&quot;")}"`:"",ee=`<span contenteditable="false" data-type="upload" data-key="${_.key}" class="upload-chip"><span class="upload-inner-wrapper ${H}"><span class="upload-icon">${q?"<i class='iconfont icon-exlwenjian'></i>":"<i class='iconfont icon-shangchuan1'></i>"}</span><span class="upload-label"${Y}>${G||_.text}</span>${_.tooltip?`<i contenteditable="false" class="iconfont icon-tishi upload-info-icon ${K}" data-upload-key="${_.key}" data-tooltip="${_.tooltip}" title="提示"></i>`:""}<span class="file-remove-btn ${M}" title="移除文件">×</span></span></span>`;b+=j+P+ee+v,u+=2;continue}if(k){const j=`<span ${e.exclusionGroup?`data-group="${e.exclusionGroup}"`:""} class="exclusion-wrapper required-upload-group">`,v="</span>";let P="";e.className?P=`<span class="${e.className}">${e.text??""}</span>`:P=e.text??"";const _=w,G=(_.key?s[_.key]:void 0)||_.text||"",M=!G,K=M?"​":G,H=M?"show-placeholder":"",Y=_.exclusionGroup?` data-group="${_.exclusionGroup}"`:"",ee=_.tooltip?` data-tooltip="${_.tooltip.replace(/"/g,"&quot;")}" data-variable-key="${_.key||""}"`:"",C=_.tooltip&&M?"":"hidden",B=`<span contenteditable="true" data-type="variable" data-key="${_.key}" data-placeholder="${_.placeholder||""}"${Y}${ee} class="variable-chip ${H}">${K}${_.tooltip?`<i contenteditable="false" class="iconfont icon-tishi variable-info-icon ${C}" data-variable-key="${_.key}" data-tooltip="${_.tooltip.replace(/"/g,"&quot;")}" title="提示"></i>`:""}</span>`;b+=j+P+B+v,u+=2;continue}}const R=e.exclusionGroup?`data-group="${e.exclusionGroup}"`:"",y=e.exclusionGroup?`<span ${R} class="exclusion-wrapper">`:"",o=e.exclusionGroup?"</span>":"";let S="";if(e.type==="tag"){const k=r||A==="hideTagClose"?"":'<span class="tag-close-btn" title="Clear (ESC)"><svg width="10" height="10" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"><path d="M18 6L6 18M6 6l12 12"/></svg></span>',T=r?' data-locked="true"':"",j=e.tooltip?` data-tooltip="${e.tooltip.replace(/"/g,"&quot;")}" data-tag-key="${e.key||""}"`:"";S=`<span contenteditable="false" class="tag-node group"${T}${j}><span class="tag-label">${e.text}</span>${k}</span>`}else if(e.type==="text"){const c=r?' data-locked="true" contenteditable="false"':' contenteditable="false"';e.className?S=`<span class="${e.className}"${c}>${e.text??""}</span>`:S=r?`<span${c}>${e.text??""}</span>`:`<span contenteditable="false">${e.text??""}</span>`}else if(e.type==="variable"&&e.key){const k=s[e.key]||e.text||"",T=!k,j=T?"​":k,v=T?"show-placeholder":"",P=e.exclusionGroup?` data-group="${e.exclusionGroup}"`:"",_=e.tooltip?` data-tooltip="${e.tooltip.replace(/"/g,"&quot;")}" data-variable-key="${e.key||""}"`:"",q=e.tooltip&&T?"":"hidden",G=`<span contenteditable="true" data-type="variable" data-key="${e.key}" data-placeholder="${e.placeholder||""}"${P}${_} class="variable-chip ${v}">${j}${e.tooltip?`<i contenteditable="false" class="iconfont icon-tishi variable-info-icon ${q}" data-variable-key="${e.key}" data-tooltip="${e.tooltip.replace(/"/g,"&quot;")}" title="提示"></i>`:""}</span>`;e.required?S=`<span ${e.exclusionGroup?`data-group="${e.exclusionGroup}"`:""} class="exclusion-wrapper required-upload-group"><span class="rte-text-required"><i class='iconfont icon-bitian' style='font-size: 10px;'></i></span>${G}</span>`:S=G}else if(e.type==="upload"&&e.key){const c=l[e.key]!==null&&l[e.key]!==void 0,k=c?l[e.key]?.name:e.text,T=c?"":"hidden",j=e.tooltip&&!c?"":"hidden",v=c?"has-file":"",P=c&&k?` data-file-name="${k.replace(/"/g,"&quot;")}"`:"",_=`<span contenteditable="false" data-type="upload" data-key="${e.key}" class="upload-chip"><span class="upload-inner-wrapper ${v}"><span class="upload-icon">${c?"<i class='iconfont icon-exlwenjian'></i>":"<i class='iconfont icon-shangchuan1'></i>"}</span><span class="upload-label"${P}>${k||e.text}</span>${e.tooltip?`<i contenteditable="false" class="iconfont icon-tishi upload-info-icon ${j}" data-upload-key="${e.key}" data-tooltip="${e.tooltip}" title="提示"></i>`:""}<span class="file-remove-btn ${T}" title="移除文件">×</span></span></span>`;e.required?S=`<span ${e.exclusionGroup?`data-group="${e.exclusionGroup}"`:""} class="exclusion-wrapper required-upload-group"><span class="rte-text-required"><i class='iconfont icon-bitian' style='font-size: 10px;'></i></span>${_}</span>`:S=_}else if(e.type==="multi-variable"&&e.key){const c=e.maxCount||9,k=g[e.key]||1,T=Math.min(k,c);let j="";for(let v=0;v<T;v++){const P=`${e.key}_${v}`,_=s[P]||"",q=!_,G=q?"​":_,M=q?"show-placeholder":"",K=e.tooltip?` data-tooltip="${e.tooltip.replace(/"/g,"&quot;")}" data-variable-key="${e.key||""}"`:"",H=e.tooltip&&q?"":"hidden",Y=`<span contenteditable="true" data-type="variable" data-key="${P}" data-multi-key="${e.key}" data-index="${v}" data-placeholder="${e.placeholder||""}"${K} class="variable-chip ${M}">${G}${e.tooltip?`<i contenteditable="false" class="iconfont icon-tishi variable-info-icon ${H}" data-variable-key="${e.key}" data-tooltip="${e.tooltip.replace(/"/g,"&quot;")}" title="提示"></i>`:""}</span>`;j+=Y}e.required?S=`<span ${e.exclusionGroup?`data-group="${e.exclusionGroup}"`:""} class="exclusion-wrapper required-upload-group"><span class="rte-text-required"><i class='iconfont icon-bitian' style='font-size: 10px;'></i></span>${j}</span>`:S=j}b+=y+S+o,u++}t.current&&(t.current.innerHTML=b,setTimeout(()=>{if(!t.current)return;t.current.querySelectorAll('[data-type="variable"]').forEach(w=>{const d=w.innerText.replace(/\n/g,"");d.replace(/\u200B/g,"")?w.classList.remove("show-placeholder"):(d!=="​"&&(w.innerText="​"),w.classList.add("show-placeholder"))})},0))}function ct(t,f,l,r,s={},g,A,b){const u=n.useCallback(()=>{if(!t.current)return;if(f.length===0){t.current.innerHTML="";return}let e={};const d=t.current.__tempVariableValues;if(d?(e=d,setTimeout(()=>{if(t.current){const R=t.current;R.__tempVariableValues===d&&delete R.__tempVariableValues}},100)):t.current.querySelectorAll('[data-type="variable"]').forEach(y=>{const o=y.dataset.key;if(o){const S=y.innerText.replace(/[\u200B\n]/g,"").trim();S&&(e[o]=S)}}),it(t,f,l,r,e,s,b),g?.current){const{key:R,offset:y}=g.current;setTimeout(()=>{if(!t.current)return;const o=t.current.querySelector(`[data-type="variable"][data-key="${R}"]`);if(o){try{const S=document.createRange(),c=document.createTreeWalker(o,NodeFilter.SHOW_TEXT,null);let k=0,T=null,j=0;for(;c.nextNode();){const v=c.currentNode,P=v.textContent?.length||0;if(k+P>=y){T=v,j=y-k;break}k+=P}if(T){S.setStart(T,Math.min(j,T.textContent?.length||0)),S.collapse(!0);const v=window.getSelection();v&&(v.removeAllRanges(),v.addRange(S),o.focus())}else{S.selectNodeContents(o),S.collapse(!1);const v=window.getSelection();v&&(v.removeAllRanges(),v.addRange(S),o.focus())}}catch{const S=document.createRange();S.selectNodeContents(o),S.collapse(!1);const c=window.getSelection();c&&(c.removeAllRanges(),c.addRange(S),o.focus())}g.current=null}},0)}},[f,l,r,t,s,g,A,b]);n.useEffect(()=>{u()},[u])}function ut(t,f,l,r){n.useEffect(()=>{const s=t.current;if(!s)return;const g=b=>{const u=b.target?.closest(".upload-info-icon");if(u&&u.classList.contains("upload-info-icon")){const e=u.dataset.uploadKey;e&&r({key:e,anchorEl:u,type:"upload"})}},A=b=>{const u=b.target?.closest(".upload-info-icon"),e=b.relatedTarget;u&&u.classList.contains("upload-info-icon")&&(!e||!s.contains(e)?r(null):e.closest(".upload-info-icon")||r(null))};return s.addEventListener("mouseover",g,!0),s.addEventListener("mouseout",A,!0),()=>{s.removeEventListener("mouseover",g,!0),s.removeEventListener("mouseout",A,!0)}},[f,l,t,r])}function dt(t,f,l,r){n.useEffect(()=>{if(!t.current)return;const s=u=>{if(r==="hideTagClose")return;const e=u.currentTarget,w=e.dataset.tooltip,d=e.dataset.tagKey||"";w&&l({key:d,anchorEl:e,type:"tag"})},g=()=>{l(null)};let A;const b=()=>{if(!t.current)return;t.current.querySelectorAll(".tag-node[data-tooltip]").forEach(e=>{e.addEventListener("mouseenter",s),e.addEventListener("mouseleave",g)})};return A=requestAnimationFrame(()=>{A=requestAnimationFrame(b)}),()=>{cancelAnimationFrame(A),t.current&&t.current.querySelectorAll(".tag-node[data-tooltip]").forEach(e=>{e.removeEventListener("mouseenter",s),e.removeEventListener("mouseleave",g)})}},[f,t,l,r])}function pt(t,f,l){n.useEffect(()=>{const r=t.current;if(!r)return;const s=A=>{const b=A.target?.closest(".variable-info-icon");if(b&&b.classList.contains("variable-info-icon")){const u=b.dataset.variableKey;u&&l({key:u,anchorEl:b,type:"variable"})}},g=A=>{const b=A.target?.closest(".variable-info-icon"),u=A.relatedTarget;b&&b.classList.contains("variable-info-icon")&&(!u||!r.contains(u)?l(null):u.closest(".variable-info-icon")||l(null))};return r.addEventListener("mouseover",s,!0),r.addEventListener("mouseout",g,!0),()=>{r.removeEventListener("mouseover",s,!0),r.removeEventListener("mouseout",g,!0)}},[f,t,l])}function ft(t,f,l,r){n.useEffect(()=>{if(!t.current)return;const s=u=>{const e=u.currentTarget;e.dataset.fileName&&r({key:"",anchorEl:e,type:"upload-label"})},g=()=>{r(null)};let A;const b=()=>{if(!t.current)return;t.current.querySelectorAll(".upload-label[data-file-name]").forEach(e=>{e.addEventListener("mouseenter",s),e.addEventListener("mouseleave",g)})};return A=requestAnimationFrame(()=>{A=requestAnimationFrame(b)}),()=>{cancelAnimationFrame(A),t.current&&t.current.querySelectorAll(".upload-label[data-file-name]").forEach(e=>{e.removeEventListener("mouseenter",s),e.removeEventListener("mouseleave",g)})}},[f,l,t,r])}function mt(t,f,l,r){n.useEffect(()=>{_e(t,f,l),Ie(t,f,l,r)},[l,f,t,r])}function yt(t,f){n.useEffect(()=>{if(!t.current)return;let l=!1,r=0;const s=()=>{l=!0},g=()=>{l=!1,r=Date.now()};let A=!1,b=0;const u=()=>{A=!0},e=()=>{A=!1,b=Date.now()},w=()=>{b=Date.now()},d=()=>{if(!t.current)return;const y=window.getSelection();if(!y||y.rangeCount===0||f.current||l||A||Date.now()-b<500)return;const o=y.getRangeAt(0);if(!o.collapsed)return t.current.contains(o.commonAncestorContainer),void 0;const S=y.anchorNode;if(!S||!t.current.contains(S))return;let c=null;if(S.nodeType===Node.ELEMENT_NODE?c=S.closest('[data-type="variable"]'):S.nodeType===Node.TEXT_NODE&&S.parentElement&&(c=S.parentElement.closest('[data-type="variable"]')),!c){if(Date.now()-r>500)return;const k=t.current.querySelectorAll('[data-type="variable"]');if(k.length>0){let T=null;for(const j of Array.from(k))if(j.style.display!=="none"){T=j;break}if(!T&&k.length>0&&(T=k[0]),T){const j=document.createRange();j.selectNodeContents(T),j.collapse(!1),y.removeAllRanges(),y.addRange(j),T.focus()}else y.removeAllRanges()}else y.removeAllRanges()}},R=t.current;return R&&(R.addEventListener("compositionstart",u),R.addEventListener("compositionend",e),R.addEventListener("input",w)),document.addEventListener("mousedown",s),document.addEventListener("mouseup",g),document.addEventListener("selectionchange",d),()=>{const y=t.current;y&&(y.removeEventListener("compositionstart",u),y.removeEventListener("compositionend",e),y.removeEventListener("input",w)),document.removeEventListener("mousedown",s),document.removeEventListener("mouseup",g),document.removeEventListener("selectionchange",d)}},[t,f])}const Ke=({config:t,onSend:f,isProcessing:l=!1,disabled:r=!1,width:s,lockStructure:g=!1,agentOptions:A=[],onAgentSelect:b,onAgentExit:u,loading:e=!1,placeholder:w,border:d,background:R="transparent",hideButtons:y})=>{const o=n.useRef(null),S=n.useRef(null),[c,k]=n.useState({}),[T,j]=n.useState(null),[v,P]=n.useState(null),_=n.useRef(!1),q=n.useRef(null),[G,M]=n.useState(!1),K=n.useRef(null),[H,Y]=n.useState(!0),[ee,C]=n.useState(()=>{const p={};return t.forEach(m=>{m.type==="multi-variable"&&m.key&&(p[m.key]=1)}),p}),B=n.useRef({}),$=n.useRef({}),te=n.useRef({});n.useEffect(()=>{$.current=c},[c]),n.useEffect(()=>{te.current=ee},[ee]);const de=n.useCallback(p=>p.find(h=>h.type==="tag")?.text||null,[]),ye=n.useRef(t),i=n.useRef(null);n.useEffect(()=>{const p=de(ye.current),m=de(t);if(p&&p!==m&&o.current){const h={};o.current.querySelectorAll('[data-type="variable"]').forEach(x=>{const E=x.dataset.key;if(E){const N=x.innerText.replace(/[\u200B\n]/g,"").trim();N&&(h[E]=N)}}),B.current[p]={variableValues:h,files:{...$.current},multiVariableCounts:{...te.current}}}if(m&&B.current[m]){const h=B.current[m];i.current=h,k(h.files),C(h.multiVariableCounts)}else if(m){i.current=null;const h={};t.forEach(I=>{I.type==="multi-variable"&&I.key&&(h[I.key]=1)}),C(h),k({})}else i.current=null,C({}),k({});ye.current=t},[t,de]),n.useLayoutEffect(()=>{i.current&&o.current&&(o.current.__tempVariableValues=i.current.variableValues,setTimeout(()=>{i.current&&(i.current=null)},0))}),ct(o,t,c,g,ee,K,void 0,y),ut(o,t,c,P),dt(o,t,P,y),ft(o,t,c,P),pt(o,t,P),mt(o,t,c,M),yt(o,_),n.useEffect(()=>{if(t.length>0){Y(!1);return}const p=()=>{if(!o.current){Y(!0);return}const h=o.current.textContent?.replace(/[\u200B\n]/g,"").trim()||"",I=o.current.querySelectorAll('[data-type="variable"]'),x=o.current.querySelectorAll('[data-type="upload"]');let E=!1;I.forEach(L=>{(L.textContent?.replace(/[\u200B\n]/g,"").trim()||"")&&(E=!0)}),x.forEach(L=>{L.querySelector(".upload-inner-wrapper.has-file")&&(E=!0)});const N=!h&&!E;Y(N),t.length===0&&M(!N)};p();const m=new MutationObserver(p);return o.current&&m.observe(o.current,{childList:!0,subtree:!0,characterData:!0}),()=>{m.disconnect()}},[t]);const O=p=>{if(r){p.preventDefault();return}p.preventDefault();const m=p.clipboardData.getData("text/plain"),h=window.getSelection();if(h&&h.rangeCount>0){const I=h.anchorNode;if(I){let x=null;if(I.nodeType===Node.ELEMENT_NODE?x=I.closest('[data-type="variable"]'):I.nodeType===Node.TEXT_NODE&&I.parentElement&&(x=I.parentElement.closest('[data-type="variable"]')),x){const E=x.dataset.multiKey;if(E){const N=/[、,,\s\n\r\t]+/,L=m.split(N).map(V=>V.trim()).filter(V=>V.length>0);if(console.log("[Paste Event] 粘贴的内容:",m),console.log("[Paste Event] 拆分后的值:",L),L.length>1){const V=parseInt(x.dataset.index||"0",10),D=t.find(re=>re.type==="multi-variable"&&re.key===E)?.maxCount||9,oe=ee[E]||1,U=Math.min(V+L.length,D);U>oe&&C(Q=>({...Q,[E]:U}));const se=[];for(let Q=0;Q<oe;Q++){const re=`${E}_${Q}`,fe=o.current.querySelector(`[data-type="variable"][data-key="${re}"][data-multi-key="${E}"]`);if(fe){const ge=fe.innerText.replace(/[\u200B\n]/g,"").trim();se.push(ge)}}se.splice(V,1,...L.slice(0,D-V));const ne=se.slice(0,D);ne.length>0&&ne[ne.length-1]!==""&&ne.length<D&&ne.push("");const X=Math.max(ne.length,1),ie={};ne.forEach((Q,re)=>{Q&&(ie[`${E}_${re}`]=Q)}),o.current.querySelectorAll('[data-type="variable"]').forEach(Q=>{const re=Q.dataset.key,fe=Q.dataset.multiKey;if(re&&fe!==E){const ge=Q.innerText.replace(/[\u200B\n]/g,"").trim();ge&&(ie[re]=ge)}}),o.current.__tempVariableValues=ie,C(Q=>({...Q,[E]:X})),console.log("[Paste Event] 粘贴完成,已填充到多个输入框,值:",ne);return}else L.length===1&&console.log("[Paste Event] 粘贴单个值,将在失去焦点时检查是否需要拆分")}}}}document.execCommand("insertText",!1,m),ce(),setTimeout(()=>{const I=window.getSelection();if(I&&I.rangeCount>0){const x=I.anchorNode;if(x){let E=null;if(x.nodeType===Node.ELEMENT_NODE?E=x.closest('[data-type="variable"][data-multi-key]'):x.nodeType===Node.TEXT_NODE&&x.parentElement&&(E=x.parentElement.closest('[data-type="variable"][data-multi-key]')),E){const N=E.innerText.replace(/[\u200B\n]/g,"").trim();/[、,,\s]+/.test(N)&&(console.log("[Paste Event] 粘贴后检测到分隔符,内容:",N),console.log("[Paste Event] 提示:失去焦点后将自动拆分"))}}}},0)},J=p=>{if(p.target.files&&p.target.files[0]&&T){const m=p.target.files[0],h=T;k(I=>({...I,[h]:m}))}p.target&&(p.target.value=""),j(null)},ae=p=>{k(m=>{const h={...m};return delete h[p],h})},pe=p=>{const m=p.target;if(m.closest(".tag-close-btn")){if(p.preventDefault(),p.stopPropagation(),g)return;P(null),u?u():o.current&&(o.current.innerHTML="",o.current.focus());return}if(g){const x=m.closest(".tag-node"),E=m.closest('[data-type="text"]');if(x||E){p.preventDefault(),p.stopPropagation();const N=window.getSelection();N&&N.removeAllRanges();return}}m.closest('[data-type="variable"]')||(q.current={x:p.clientX,y:p.clientY},_.current=!1,m.closest(".file-remove-btn")&&(p.preventDefault(),p.stopPropagation()))},le=p=>{if(!p.target.closest('[data-type="variable"]')&&q.current){const I=Math.abs(p.clientX-q.current.x),x=Math.abs(p.clientY-q.current.y);(I>3||x>3)&&(_.current=!0)}},xe=p=>{if(p.target.closest('[data-type="variable"]')){q.current=null,_.current=!1;return}q.current=null,_.current=!1},F=p=>{if(r)return;const m=p.target;if(m.closest(".tag-close-btn")){p.preventDefault(),p.stopPropagation();return}if(t.length===0)return;if(m.closest('[data-type="text"]')){p.preventDefault(),p.stopPropagation();const L=window.getSelection();L&&L.removeAllRanges();return}if(g&&m.closest(".tag-node")){p.preventDefault(),p.stopPropagation();const V=window.getSelection();V&&V.removeAllRanges();return}if(m.closest('[data-type="variable"]')){if(_.current)return;setTimeout(()=>{const L=window.getSelection();L&&!L.isCollapsed||Ve(o)},10);return}const E=m.closest(".file-remove-btn");if(E){p.preventDefault(),p.stopPropagation();const V=E.closest('[data-type="upload"]')?.dataset.key;V&&ae(V);return}const N=m.closest('[data-type="upload"]');if(N){const L=N.dataset.key;L&&(j(L),S.current?.click());return}},W=p=>{const h=p.target.closest('[data-type="variable"]');if(h){const I=window.getSelection();if(I){const x=document.createRange(),E=h.textContent||"";if(E.replace(/\u200B/g,"")){let L=0,V=E.length;E.startsWith("​")&&(L=1),E.endsWith("​")&&E.length>1&&(V=E.length-1);const D=h.firstChild;D&&D.nodeType===Node.TEXT_NODE?(x.setStart(D,L),x.setEnd(D,V)):x.selectNodeContents(h)}else x.selectNodeContents(h),x.collapse(!0);I.removeAllRanges(),I.addRange(x)}}},ce=()=>{if(t.length===0){if(o.current){const h=!(o.current.textContent?.replace(/[\u200B\n]/g,"").trim()||"");Y(h),M(!h)}return}if(Ve(o),o.current&&o.current.querySelectorAll('[data-type="variable"]').forEach(h=>{const I=h.querySelector(".variable-info-icon");if(I){let x=!1;const E=document.createTreeWalker(h,NodeFilter.SHOW_TEXT,{acceptNode:N=>I.contains(N)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT});for(;E.nextNode();)if(E.currentNode.textContent?.replace(/[\u200B\n]/g,"").trim()){x=!0;break}x?I.classList.add("hidden"):I.classList.remove("hidden")}}),_e(o,t,c),Ie(o,t,c,M),!o.current)return;t.filter(m=>m.type==="multi-variable"&&m.key).forEach(m=>{if(!m.key)return;const h=m.maxCount||9,I=ee[m.key]||1,x=[];for(let D=0;D<I;D++){const oe=`${m.key}_${D}`,U=o.current.querySelector(`[data-type="variable"][data-key="${oe}"][data-multi-key="${m.key}"]`);if(U){const se=U.innerText.replace(/[\u200B\n]/g,"").trim();x.push(se)}}const N=(x[x.length-1]||"")==="";let L=!1,V=-1;for(let D=0;D<x.length-1;D++)if(x[D]===""){L=!0,V=D;break}if(L&&V>=0){const D=window.getSelection();if(D&&D.rangeCount>0){const X=D.getRangeAt(0),ie=X.startContainer,ue=ie.nodeType===Node.ELEMENT_NODE?ie.closest('[data-type="variable"][data-multi-key]'):ie.parentElement?.closest('[data-type="variable"][data-multi-key]');if(ue){const Q=ue.dataset.key;if(Q){const re=document.createRange();re.setStartBefore(ue),re.setEnd(X.startContainer,X.startOffset);const fe=re.toString().length;K.current={key:Q,offset:fe}}}}const oe=[...x];for(let X=V;X<oe.length-1;X++)oe[X]=oe[X+1];oe.pop();const U={};oe.forEach((X,ie)=>{X&&(U[`${m.key}_${ie}`]=X)});const se=Math.max(N?oe.length:oe.length+1,1);o.current.querySelectorAll('[data-type="variable"]').forEach(X=>{const ie=X.dataset.key,ue=X.dataset.multiKey;if(ie&&ue!==m.key){const Q=X.innerText.replace(/[\u200B\n]/g,"").trim();Q&&(U[ie]=Q)}}),o.current.__tempVariableValues=U,C(X=>({...X,[m.key]:se}));return}if(!N){const D=I-1,oe=`${m.key}_${D}`,U=o.current.querySelector(`[data-type="variable"][data-key="${oe}"][data-multi-key="${m.key}"]`);if(U&&U.innerText.replace(/[\u200B\n]/g,"").trim().length>0&&I<h){const ne=window.getSelection();if(ne&&ne.rangeCount>0){const X=ne.getRangeAt(0),ie=X.startContainer,ue=ie.nodeType===Node.ELEMENT_NODE?ie.closest('[data-type="variable"][data-multi-key]'):ie.parentElement?.closest('[data-type="variable"][data-multi-key]');if(ue){const Q=ue.dataset.key;if(Q){const re=document.createRange();re.setStartBefore(ue),re.setEnd(X.startContainer,X.startOffset);const fe=re.toString().length;K.current={key:Q,offset:fe}}}}C(X=>({...X,[m.key]:I+1}))}}})};n.useLayoutEffect(()=>{const p=o.current;if(!p)return;const m=new Map,h=E=>{const N=E.target,L=E.relatedTarget;!N||!o.current||!o.current.contains(N)||L&&o.current.contains(L)||setTimeout(()=>{if(o.current){if(t.length===0){const V=o.current.textContent?.replace(/[\u200B\n]/g,"").trim()||"";M(V.length>0);return}Ve(o),_e(o,t,c),Ie(o,t,c,M)}},0)};p.addEventListener("blur",h,!0);const I=()=>{if(!o.current)return;m.forEach((L,V)=>{V.removeEventListener("blur",L,!1)}),m.clear();const E=o.current.querySelectorAll('[data-type="variable"][data-multi-key]'),N=L=>{L.stopPropagation(),L.stopImmediatePropagation();const V=L.target;if(!V||!o.current||!o.current.contains(V))return;const D=V.closest('[data-type="variable"][data-multi-key]');if(!D||!o.current.contains(D))return;let oe=!1;if(m.forEach((re,fe)=>{(fe===D||fe.contains(V))&&(oe=!0)}),!oe)return;const U=D.dataset.multiKey,se=D.dataset.key,ne=D.dataset.index;if(!U||!se||ne===void 0)return;const X=L.relatedTarget;if(!(!X||!o.current.contains(X)))return;const ue=D.innerText.replace(/[\u200B\n]/g,"").trim();console.log("[Blur Event] 失去焦点的 multi-variable 输入框:",{multiKey:U,currentKey:se,index:ne,content:ue});const Q=/[、,,\s]+/;if(Q.test(ue)){const re=ue.split(Q).map(Ee=>Ee.trim()).filter(Ee=>Ee.length>0);console.log("[Blur Event] 拆分前的内容:",ue),console.log("[Blur Event] 拆分后的部分:",re);const ge=re.slice(0,9);if(console.log("[Blur Event] 有效的部分(最多9个):",ge),ge.length>1){const Ee=t.find(Se=>Se.type==="multi-variable"&&Se.key===U);if(Ee){const Se=ee[U]||1,et=parseInt(ne,10),tt=Ee.maxCount||9,Ae=[];for(let me=0;me<Se;me++){const we=`${U}_${me}`,Re=o.current.querySelector(`[data-type="variable"][data-key="${we}"][data-multi-key="${U}"]`);if(Re){const je=Re.innerText.replace(/[\u200B\n]/g,"").trim();Ae.push(je)}}console.log("[Blur Event] 拆分前的所有值:",Ae),console.log("[Blur Event] 当前索引:",et),console.log("[Blur Event] 要插入的值:",ge),Ae.splice(et,1,...ge);const ve=Ae.slice(0,tt);console.log("[Blur Event] 拆分后的所有值:",ve),ve.length>0&&ve[ve.length-1]!==""&&ve.length<tt&&ve.push("");const kt=Math.max(ve.length,1),Be={};ve.forEach((me,we)=>{me&&(Be[`${U}_${we}`]=me)}),o.current.querySelectorAll('[data-type="variable"]').forEach(me=>{const we=me.dataset.key,Re=me.dataset.multiKey;if(we&&Re!==U){const je=me.innerText.replace(/[\u200B\n]/g,"").trim();je&&(Be[we]=je)}}),o.current.__tempVariableValues=Be,C(me=>({...me,[U]:kt}))}}}};E.forEach(L=>{L.addEventListener("blur",N,!1),m.set(L,N)})},x=setTimeout(()=>{I()},0);return()=>{clearTimeout(x),p.removeEventListener("blur",h,!0),m.forEach((E,N)=>{N.removeEventListener("blur",E,!1)}),m.clear()}},[t,ee,c]);const be=p=>{if(r){p.preventDefault();return}const m=window.getSelection();if(m&&m.rangeCount>0){const h=m.anchorNode;let I=null;if(h&&(h.nodeType===Node.ELEMENT_NODE?I=h.closest('[data-type="text"]'):h.nodeType===Node.TEXT_NODE&&h.parentElement&&(I=h.parentElement.closest('[data-type="text"]'))),I){if(p.preventDefault(),p.stopPropagation(),o.current){const x=o.current.querySelector('[data-type="variable"], [data-type="upload"]');x&&x.focus()}return}}if(g&&m&&m.rangeCount>0){const h=m.anchorNode;let I=null;if(h&&(h.nodeType===Node.ELEMENT_NODE?I=h.closest(".tag-node"):h.nodeType===Node.TEXT_NODE&&h.parentElement&&(I=h.parentElement.closest(".tag-node"))),I){if(p.preventDefault(),p.stopPropagation(),o.current){const x=o.current.querySelector('[data-type="variable"], [data-type="upload"]');x&&x.focus()}return}}if(p.key==="Enter"&&!p.shiftKey&&(p.preventDefault(),Ne()),p.key==="Escape"&&o.current){if(g){p.preventDefault();return}o.current.innerHTML="",o.current.focus()}if(p.key==="Backspace"){const h=window.getSelection();if(h&&h.rangeCount>0){const I=h.getRangeAt(0),x=h.anchorNode;if(g){let N=null,L=null;if(x&&(x.nodeType===Node.ELEMENT_NODE?(N=x.closest(".tag-node"),L=x.closest('[data-type="text"]')):x.nodeType===Node.TEXT_NODE&&x.parentElement&&(N=x.parentElement.closest(".tag-node"),L=x.parentElement.closest('[data-type="text"]'))),(N||L)&&I.collapsed&&I.startOffset===0){p.preventDefault();return}}let E=null;if(x&&(x.nodeType===Node.ELEMENT_NODE?E=x.closest('[data-type="variable"]'):x.nodeType===Node.TEXT_NODE&&x.parentElement&&(E=x.parentElement.closest('[data-type="variable"]'))),E){if(!I.collapsed)return;const N=E.innerText;if(N==="​"||N===""){p.preventDefault();return}if(I.startOffset===0){p.preventDefault();return}if(N.startsWith("​")&&I.startOffset===1){p.preventDefault();return}}}}},Ne=()=>{if(l||r||e||!G||!o.current)return;if(t.length===0){const E=o.current.textContent?.replace(/[\u200B\n]/g,"").trim()||"";if(!E)return;f(E,E);return}const p=o.current;let m="";const h={},I=E=>{if(!(E.nodeType===Node.ELEMENT_NODE&&E.style.display==="none")){if(E.nodeType===Node.TEXT_NODE)m+=(E.textContent||"").replace(/\u200B/g,"");else if(E.nodeType===Node.ELEMENT_NODE){const N=E,L=N.dataset.type,V=N.dataset.key;if(L==="variable"&&V){let D="";const oe=document.createTreeWalker(N,NodeFilter.SHOW_TEXT,{acceptNode:se=>{const ne=N.querySelector(".variable-info-icon");return ne&&ne.contains(se)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}});for(;oe.nextNode();)D+=oe.currentNode.textContent||"";const U=D.replace(/[\u200B\n]/g,"").trim();if(U){const se=N.dataset.multiKey;if(se){(!h[se]||!Array.isArray(h[se]))&&(h[se]=[]);const ne=h[se];ne.push(U),ne.length>1&&(m+=" "),m+=U}else h[V]=U,m+=U}}else if(L==="upload"&&V)h[V]=c[V]??null,c[V]&&(m+=` [附带文件: ${c[V]?.name}] `);else{if(N.classList.contains("tag-close-btn")||N.classList.contains("file-remove-btn"))return;N.getAttribute("contenteditable")==="false"&&!L&&N.classList.contains("tag-node")?m+=N.innerText:N.childNodes.forEach(I)}}}};if(p.childNodes.forEach(I),m=m.trim(),!m)return;const x=new FormData;x.append("fullPrompt",m),Object.keys(h).forEach(E=>{const N=h[E];N!=null&&(N instanceof File?x.append(E,N):Array.isArray(N)?t.some(V=>V.type==="multi-variable"&&V.key===E)?N.forEach(V=>{V!=null&&V!==""&&x.append(E,String(V))}):N.forEach((V,D)=>{V!=null&&(V instanceof File?x.append(`${E}[${D}]`,V):typeof V=="string"?x.append(`${E}[${D}]`,V):x.append(`${E}[${D}]`,String(V)))}):typeof N=="string"?x.append(E,N):x.append(E,String(N)))}),f(x,m)},wt={...s?{width:typeof s=="number"?`${s}px`:s}:{},...d?{border:d}:{},...R?{background:R}:{}};return a.jsxs("div",{className:"rich-text-editor",style:wt,"data-disabled":r,children:[a.jsx("div",{ref:o,className:`rte-editor ${t.length===0?"rte-editor-default":""} ${H&&w?"rte-editor-empty":""}`,contentEditable:t.length===0,suppressContentEditableWarning:!0,"data-placeholder":w,onMouseDown:pe,onMouseMove:le,onMouseUp:xe,onClick:F,onDoubleClick:W,onInput:ce,onKeyDown:be,onPaste:O}),a.jsx("input",{type:"file",ref:S,className:"rte-file-input",accept:".csv,.xlsx,.xls,.txt,.pdf,image/*",onChange:J}),a.jsxs("div",{className:"rich-text-editor-footer",children:[a.jsx("div",{className:"rich-text-editor-footer-left",children:a.jsxs("div",{className:"rich-text-editor-brand",children:[a.jsxs("div",{className:"rte-brand-badge",children:[a.jsx("img",{src:"https://oospublic.sealseek.cn/file/website/ball.png",alt:""}),a.jsx("span",{className:"rte-brand-text",children:"SealSeek 1.0"})]}),y!=="hideAgent"&&a.jsx(z.Dropdown,{placement:"top",menu:{items:A.map(p=>({key:p.key,label:a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[p.icon&&a.jsx("i",{className:p.icon}),a.jsx("span",{children:p.label})]}),onClick:()=>{b?.(p)}}))},trigger:["click"],disabled:r||l,children:a.jsxs("div",{className:"rte-agent-badge",style:{cursor:A.length>0?"pointer":"default"},children:[a.jsx("i",{className:"iconfont icon-zhinengti"}),a.jsx("span",{className:"rte-agent-text",children:"智能体"})]})})]})}),a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[(()=>{const p=t.find(h=>h.type==="tag");if(!p||!p.text)return null;const m=A.find(h=>h.label===p.text);return!m||m.points===void 0||m.points===null?null:a.jsxs("div",{className:"rte-points-badge",children:[a.jsx("i",{className:"iconfont icon-jifen",style:{marginRight:"4px"}}),a.jsxs("span",{style:{fontSize:"16px"},children:["-",String(m.points)]})]})})(),a.jsx("button",{type:"button",onClick:Ne,disabled:l||r||e||!G,className:"rich-text-editor-send-button",children:l||e?a.jsx("span",{className:"rte-send-spinner"}):a.jsx("i",{className:"iconfont icon-fasong"})})]})]}),v?.anchorEl&&(()=>{if(!document.body.contains(v.anchorEl))return null;let p="";return v.type==="upload"?p=t.find(h=>h.type==="upload"&&h.key===v.key)?.tooltip||"":v.type==="tag"?p=v.anchorEl.dataset.tooltip||"":v.type==="upload-label"?p=v.anchorEl.dataset.fileName||"":v.type==="variable"&&(p=v.anchorEl.dataset.tooltip||""),nt.createPortal(a.jsx(z.Tooltip,{arrow:!1,title:a.jsx("div",{style:{maxWidth:"200px",fontSize:"12px",color:"#fff"},children:p}),open:!0,placement:"top",getPopupContainer:()=>document.body,overlayInnerStyle:{background:"var(--neutral-800, #262626)"},children:a.jsx("div",{style:{position:"fixed",left:`${v.anchorEl.getBoundingClientRect().left}px`,top:`${v.anchorEl.getBoundingClientRect().top}px`,width:`${v.anchorEl.offsetWidth}px`,height:`${v.anchorEl.offsetHeight}px`,pointerEvents:"none"}})}),document.body)})()]})};Ke.__docgenInfo={displayName:"RichTextEditor",description:"结构化富文本输入组件,支持标签、变量输入块、文件上传以及互斥显示逻辑。",props:{config:{name:"config",required:!0,description:"结构化输入配置节点数组",type:{name:"InputNode[]",raw:"InputNode[]"}},onSend:{name:"onSend",required:!0,description:"点击发送按钮时的回调,返回数据与拼接后的 Prompt",type:{name:"function",raw:"(data: Record<string, any>, fullPrompt: string) => void"}},isProcessing:{name:"isProcessing",required:!1,description:"是否处于处理状态(禁用输入与发送)",type:{name:"boolean",raw:"boolean"},defaultValue:{value:"false"}}}};const Ye="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAYAAAByDd+UAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAFSSURBVHgB3ZTtccIwDIaVXv83I2SDZgSP0BHMBG0naEZhA2boBGQDswHdQJUOGRxjO0Z8HPDe6eJzJD2W4gjgEYSIn2xwK6EIFHqBGysJpMP3ZB0oRbEtmal1NtIxl4OWWsoxEsvqofJ0rgTNASOYq+7SXKDsuYvAcgkq/PWwBLQWqIfdjeRStaBUc4qzgLi9/BzJNmS/sh6bpvmrTfSFacU3scWy1mQryWdSnXiFE8QVUJINLTuyhWzzz/1OZmTN9hEckqtfUOwIGlGCpVRjE+94JFqpMtTeVzO8/UmPxpZU8Qa7aln8Tb9pfwla4WHWrjPvvbbnTBsX7PmLs83EDAH0BxSw1G31+/1FoDg/vPcXR+wocQS1apj4+P92FfhOoLyuBfYlmPgYnGoCjWADzAkzUyJ430awLmphPaxWQVU22BuuApPkHaanjcXSN3t6/QNjTMSJWDcs1QAAAABJRU5ErkJggg==",gt=[{label:"5页",value:5},{label:"10页",value:10},{label:"15页",value:15},{label:"30页",value:30}],ht=({autoLoading:t,batchSize:f,loadingProgress:l,loadIcon:r,onBatchSizeChange:s,onLoadNextPage:g,onStartAutoLoad:A,onStopLoad:b})=>t&&l?a.jsxs("div",{className:"auto_load_progress",children:[r||a.jsx("img",{src:Ye,alt:"自动加载",width:14,height:14}),a.jsxs("span",{children:["正在加载第",l.currentPage,"/",l.totalPages,"页"]}),a.jsx(z.Progress,{percent:l.percentage,type:"line",size:[160,8]}),a.jsx("span",{onClick:b,className:"auto_load_stop_btn",children:"停止加载"})]}):a.jsxs("div",{className:"auto_load_container",children:[a.jsx("div",{onClick:g,className:"auto_load_next_btn",style:{backgroundColor:t?"#f5f5f5":"#2563eb"},children:"加载下一页"}),a.jsxs("div",{className:"right_control_wrap",style:{backgroundColor:t?"#f5f5f5":"#2563eb"},children:[a.jsxs("div",{className:"auto_load_btn",onClick:t?void 0:A,children:[r||a.jsx("img",{src:Ye,alt:"自动加载",width:14,height:14}),a.jsx("span",{children:"自动加载"})]}),a.jsx(z.Select,{value:f,onChange:s,options:gt,disabled:t,size:"small",className:"auto_load_select",popupMatchSelectWidth:84})]})]}),bt=({current:t,loadIcon:f,pageSize:l,total:r,cachedPages:s,loadedCount:g,autoLoading:A=!1,loadingProgress:b,onChange:u,onLoadNextPage:e,onStartAutoLoad:w,onStopLoading:d})=>{const[R,y]=n.useState(5),o=Math.ceil(r/l),S=n.useMemo(()=>s.length>=o,[s,o]),c=()=>Array.from({length:o},(j,v)=>v+1).filter(j=>!s.includes(j)).slice(0,R),k=(T,j,v)=>{const P=s.includes(T);return j==="prev"||j==="next"||j==="jump-prev"||j==="jump-next"?a.jsx("div",{className:"pageBox",children:v}):a.jsxs("div",{className:"pageBox",style:{backgroundColor:t===T?"#2563EB":"#f5f5f5",color:t===T?"#fff":P?"#171717":"#a3a3a3"},children:[T,!P&&a.jsx("span",{className:"unload_spot"})]})};return a.jsxs("div",{className:"pagination_footer",children:[a.jsxs("div",{className:"pagination_leftWrap",children:[a.jsxs("span",{className:"pagination_total",children:[a.jsx(he.InfoCircleOutlined,{style:{color:"#2563EB",marginRight:"4px"}}),"已加载: ",g,"/",r,"条数据"]}),!S&&a.jsx(ht,{loadIcon:f||void 0,autoLoading:A,batchSize:R,loadingProgress:b,disabled:!e||!w,onBatchSizeChange:y,onLoadNextPage:()=>e?.(),onStartAutoLoad:()=>{const T=c();w?.(T)},onStopLoad:()=>d?.()})]}),a.jsx(z.Pagination,{current:t,pageSize:l,total:r,onChange:T=>u(T),showSizeChanger:!1,showQuickJumper:!1,showTotal:(T,j)=>"",itemRender:k})]})},Je=t=>{const{loading:f,autoLoading:l,loadingProgress:r,columns:s=[],dataSource:g=[],total:A,current:b,pageSize:u,cachedPages:e,onChangePage:w,onLoadNextPage:d,onStartAutoLoad:R,onStopLoading:y,...o}=t,S=n.useRef(null),c=n.useCallback(k=>{w(k),e.includes(k)&&S.current?.scrollTo({key:`${(k-1)*u+1}`})},[b]);return a.jsxs("div",{className:"flex flex-col",children:[a.jsx(z.Table,{ref:S,...o,columns:s,dataSource:g,pagination:!1,virtual:!0}),a.jsx(bt,{loading:f,autoLoading:l,loadingProgress:r,current:b,pageSize:u,total:A,loadedCount:g.length,cachedPages:e,onChange:c,onLoadNextPage:d,onStartAutoLoad:R,onStopLoading:y})]})};Je.__docgenInfo={displayName:"VirtualTable",description:"虚拟滚动表格组件,支持分页、数据缓存和自动加载功能。",props:{loading:{description:"加载状态",name:"loading",required:!0,type:{name:"boolean",raw:"boolean"},defaultValue:{value:"false"}},total:{description:"总数据条数",name:"total",required:!0,type:{name:"number",raw:"number"},defaultValue:{value:"0"}},current:{description:"当前页码",name:"current",required:!0,type:{name:"number",raw:"number"},defaultValue:{value:"1"}},pageSize:{description:"每页数据条数",name:"pageSize",required:!0,type:{name:"number",raw:"number"},defaultValue:{value:"10"}},cachedPages:{description:"已缓存的页码数组",name:"cachedPages",required:!0,type:{name:"number[]",raw:"number[]"},defaultValue:{value:"[]"}},dataSource:{description:"数据源",name:"dataSource",required:!0,type:{name:"Array<T>",raw:"Array<T>"},defaultValue:{value:"[]"}},onChangePage:{description:"页码变更回调函数",name:"onChangePage",required:!0,type:{name:"function",raw:"function(page: number): void"},defaultValue:{value:"-"}},autoLoading:{description:"是否正在自动加载",name:"autoLoading",required:!0,type:{name:"boolean",raw:"boolean"},defaultValue:{value:"false"}},loadingProgress:{description:"加载进度信息",name:"loadingProgress",required:!0,type:{name:"object",raw:"{percentage: 0, currentPage: 1, totalPages: 5}"},defaultValue:{value:"-"}},onLoadNextPage:{description:"加载下一页回调函数",name:"onLoadNextPage",required:!1,type:{name:"function",raw:"function(page: number): void"},defaultValue:{value:"-"}},onStartAutoLoad:{description:"开始自动加载回调函数",name:"onStartAutoLoad",required:!1,type:{name:"function",raw:"function(loadNextPages: number[]): void"},defaultValue:{value:"-"}},onStopLoading:{description:"停止加载回调函数",name:"onStopLoading",required:!1,type:{name:"function",raw:"function(): void"},defaultValue:{value:"-"}},columns:{description:"表格列配置",name:"columns",required:!0,type:{name:"Array<object>",raw:"Array<object>"},defaultValue:{value:"[]"}}}};const Qe=({texts:t=[],placeholder:f="请输入内容",animationSpeed:l=100,autoPlay:r=!0,value:s,onChange:g,...A})=>{const[b,u]=n.useState(""),[e,w]=n.useState(0),[d,R]=n.useState(!1),[y,o]=n.useState(!1),[S,c]=n.useState(!1),k=n.useRef(void 0),T=n.useRef(void 0),j=n.useRef(t),v=n.useRef(e),P=n.useRef(y),_=n.useRef(b);n.useEffect(()=>{j.current=t,v.current=e,P.current=y,_.current=b});const q=n.useCallback((C,B)=>{let $=0;c(!0);const te=()=>{$<C.length?(u(C.slice(0,$+1)),$++,T.current=window.setTimeout(te,l)):(c(!1),B?.())};te()},[l]),G=n.useCallback(C=>{let B=_.current.length;const $=()=>{B>0?(u(_.current.slice(0,B-1)),B--,T.current=window.setTimeout($,l/2)):C?.()};$()},[l]),M=n.useCallback(()=>{if(j.current.length===0||P.current)return;R(!0);const C=j.current[v.current];_.current?G(()=>{q(C,()=>{k.current=window.setTimeout(()=>{w(B=>(B+1)%j.current.length),R(!1)},2e3)})}):q(C,()=>{k.current=window.setTimeout(()=>{w(B=>(B+1)%j.current.length),R(!1)},2e3)})},[G,q]);n.useEffect(()=>(r&&t.length>0&&!y&&M(),()=>{k.current&&window.clearTimeout(k.current),T.current&&window.clearTimeout(T.current)}),[e,y,r,t.length,M]),n.useEffect(()=>{!d&&r&&t.length>0&&!y&&M()},[e,d,r,t.length,y,M]);const K=C=>{o(!0),k.current&&window.clearTimeout(k.current),T.current&&window.clearTimeout(T.current),R(!1),c(!1),A.onFocus?.(C)},H=C=>{o(!1),!s&&t.length>0&&(u(""),w(0)),A.onBlur?.(C)},Y=C=>{g?.(C.target.value),A.onChange?.(C)},ee=()=>y||s?f:b||f;return a.jsxs("div",{style:{position:"relative"},children:[a.jsx(z.Input,{...A,value:s,onChange:Y,onFocus:K,onBlur:H,placeholder:ee(),style:{...A.style,position:"relative",zIndex:1}}),!y&&!s&&b&&a.jsxs("div",{style:{position:"absolute",top:0,left:0,right:0,bottom:0,display:"flex",alignItems:"center",paddingLeft:11,paddingRight:11,color:"#bfbfbf",pointerEvents:"none",zIndex:2,fontSize:14,fontFamily:"inherit"},children:[a.jsx("span",{children:b}),S&&a.jsx("span",{style:{display:"inline-block",width:1,height:"1.2em",backgroundColor:"#1890ff",marginLeft:2,animation:"blink 1s infinite"}})]}),a.jsx("style",{children:`
23
23
  @keyframes blink {
24
24
  0%, 50% { opacity: 1; }
25
25
  51%, 100% { opacity: 0; }
26
26
  }
27
- `})]})};Xe.__docgenInfo={displayName:"DynamicInput",description:"动态文案输入框组件,支持流式文字动画效果",props:{texts:{name:"texts",required:!0,description:"动态展示的文案数组",type:{name:"string[]",raw:"string[]"}},placeholder:{name:"placeholder",required:!1,description:"输入框占位符",type:{name:"string",raw:"string"},defaultValue:{value:'"请输入内容"'}},animationSpeed:{name:"animationSpeed",required:!1,description:"动画速度(毫秒)",type:{name:"number",raw:"number"},defaultValue:{value:"100"}},autoPlay:{name:"autoPlay",required:!1,description:"是否自动播放动画",type:{name:"boolean",raw:"boolean"},defaultValue:{value:"true"}},value:{name:"value",required:!1,description:"输入框值",type:{name:"string",raw:"string"}},onChange:{name:"onChange",required:!1,description:"输入框变化回调",type:{name:"function",raw:"(value: string) => void"}}}};const Ke=({texts:t=[],placeholder:f="请输入内容",animationSpeed:l=100,autoPlay:r=!0,value:o="",onChange:y,onSubmit:_,maxLength:h=500,showCount:c=!0,submitText:e="发送",disabled:E=!1,rows:d=4,style:R,...p})=>{const[s,A]=n.useState(""),[u,w]=n.useState(0),[T,j]=n.useState(!1),[x,P]=n.useState(!1),[I,q]=n.useState(!1),[G,M]=n.useState(o||""),X=n.useRef(void 0),U=n.useRef(void 0),K=n.useRef(t),$=n.useRef(u),C=n.useRef(x),B=n.useRef(s),Z=n.useRef(null);n.useEffect(()=>{K.current=t,$.current=u,C.current=x,B.current=s});const ee=n.useCallback((D,W)=>{let ce=0;q(!0);const be=()=>{ce<D.length?(A(D.slice(0,ce+1)),ce++,U.current=window.setTimeout(be,l)):(q(!1),W?.())};be()},[l]),de=n.useCallback(D=>{let W=B.current.length;const ce=()=>{W>0?(A(B.current.slice(0,W-1)),W--,U.current=window.setTimeout(ce,l/2)):D?.()};ce()},[l]),ge=n.useCallback(()=>{if(K.current.length===0||C.current)return;j(!0);const D=K.current[$.current];B.current?de(()=>{ee(D,()=>{X.current=window.setTimeout(()=>{w(W=>(W+1)%K.current.length),j(!1)},2e3)})}):ee(D,()=>{X.current=window.setTimeout(()=>{w(W=>(W+1)%K.current.length),j(!1)},2e3)})},[de,ee]);n.useEffect(()=>(r&&t.length>0&&!x&&ge(),()=>{X.current&&window.clearTimeout(X.current),U.current&&window.clearTimeout(U.current)}),[u,x,r,t.length,ge]),n.useEffect(()=>{!T&&r&&t.length>0&&!x&&ge()},[u,T,r,t.length,x,ge]);const i=D=>{P(!0),X.current&&window.clearTimeout(X.current),U.current&&window.clearTimeout(U.current),j(!1),q(!1),p.onFocus?.(D)},O=D=>{P(!1),!o&&t.length>0&&(A(""),w(0)),p.onBlur?.(D)},Y=D=>{const W=D.target.value;h&&W.length>h||(y?y(W):M(W),p.onChange?.(D))},ae=()=>{const D=y?o:G;D.trim()&&!E&&(_?.(D),y||M(""))},me=D=>{(D.ctrlKey||D.metaKey)&&D.key==="Enter"&&(D.preventDefault(),ae()),p.onKeyDown?.(D)},ie=y?o:G,ve=E||!ie.trim()||(h?ie.length>h:!1);return a.jsxs("div",{style:{position:"relative",...R},children:[a.jsxs("div",{style:{position:"relative"},children:[a.jsx("textarea",{ref:Z,value:y?o:G,onChange:Y,onFocus:D=>{D.target.style.borderColor="#1890ff",D.target.style.boxShadow="0 0 0 2px rgba(24, 144, 255, 0.2)",i(D)},onBlur:D=>{D.target.style.borderColor="#d9d9d9",D.target.style.boxShadow="none",O(D)},onKeyDown:me,placeholder:x||ie?f:"",maxLength:h,rows:d,disabled:E,style:{width:"100%",minHeight:`${d*24+16}px`,padding:"8px 60px 8px 12px",border:"1px solid #d9d9d9",borderRadius:"6px",fontSize:"14px",lineHeight:"1.5",fontFamily:"inherit",resize:"vertical",outline:"none",transition:"border-color 0.3s, box-shadow 0.3s",backgroundColor:"#fff",...p.style},...p}),!x&&!ie&&s&&a.jsxs("div",{style:{position:"absolute",top:0,left:0,right:0,bottom:0,display:"flex",alignItems:"flex-start",paddingTop:8,paddingLeft:12,paddingRight:12,color:"#bfbfbf",pointerEvents:"none",zIndex:2,fontSize:14,fontFamily:"inherit",lineHeight:"1.5"},children:[a.jsx("span",{children:s}),I&&a.jsx("span",{style:{display:"inline-block",width:1,height:"1.2em",backgroundColor:"#1890ff",marginLeft:2,animation:"blink 1s infinite"}})]}),a.jsx("div",{style:{position:"absolute",bottom:8,right:8,zIndex:3},children:a.jsx(z.Button,{type:"primary",size:"small",icon:a.jsx(he.SendOutlined,{}),onClick:ae,disabled:ve,style:{borderRadius:6,minWidth:32,height:32,display:"flex",alignItems:"center",justifyContent:"center"},children:e})})]}),c&&a.jsxs("div",{style:{marginTop:4,textAlign:"right",fontSize:"12px",color:"#999"},children:[ie.length,"/",h]}),a.jsx("style",{children:`
27
+ `})]})};Qe.__docgenInfo={displayName:"DynamicInput",description:"动态文案输入框组件,支持流式文字动画效果",props:{texts:{name:"texts",required:!0,description:"动态展示的文案数组",type:{name:"string[]",raw:"string[]"}},placeholder:{name:"placeholder",required:!1,description:"输入框占位符",type:{name:"string",raw:"string"},defaultValue:{value:'"请输入内容"'}},animationSpeed:{name:"animationSpeed",required:!1,description:"动画速度(毫秒)",type:{name:"number",raw:"number"},defaultValue:{value:"100"}},autoPlay:{name:"autoPlay",required:!1,description:"是否自动播放动画",type:{name:"boolean",raw:"boolean"},defaultValue:{value:"true"}},value:{name:"value",required:!1,description:"输入框值",type:{name:"string",raw:"string"}},onChange:{name:"onChange",required:!1,description:"输入框变化回调",type:{name:"function",raw:"(value: string) => void"}}}};const Ze=({texts:t=[],placeholder:f="请输入内容",animationSpeed:l=100,autoPlay:r=!0,value:s="",onChange:g,onSubmit:A,maxLength:b=500,showCount:u=!0,submitText:e="发送",disabled:w=!1,rows:d=4,style:R,...y})=>{const[o,S]=n.useState(""),[c,k]=n.useState(0),[T,j]=n.useState(!1),[v,P]=n.useState(!1),[_,q]=n.useState(!1),[G,M]=n.useState(s||""),K=n.useRef(void 0),H=n.useRef(void 0),Y=n.useRef(t),ee=n.useRef(c),C=n.useRef(v),B=n.useRef(o),$=n.useRef(null);n.useEffect(()=>{Y.current=t,ee.current=c,C.current=v,B.current=o});const te=n.useCallback((F,W)=>{let ce=0;q(!0);const be=()=>{ce<F.length?(S(F.slice(0,ce+1)),ce++,H.current=window.setTimeout(be,l)):(q(!1),W?.())};be()},[l]),de=n.useCallback(F=>{let W=B.current.length;const ce=()=>{W>0?(S(B.current.slice(0,W-1)),W--,H.current=window.setTimeout(ce,l/2)):F?.()};ce()},[l]),ye=n.useCallback(()=>{if(Y.current.length===0||C.current)return;j(!0);const F=Y.current[ee.current];B.current?de(()=>{te(F,()=>{K.current=window.setTimeout(()=>{k(W=>(W+1)%Y.current.length),j(!1)},2e3)})}):te(F,()=>{K.current=window.setTimeout(()=>{k(W=>(W+1)%Y.current.length),j(!1)},2e3)})},[de,te]);n.useEffect(()=>(r&&t.length>0&&!v&&ye(),()=>{K.current&&window.clearTimeout(K.current),H.current&&window.clearTimeout(H.current)}),[c,v,r,t.length,ye]),n.useEffect(()=>{!T&&r&&t.length>0&&!v&&ye()},[c,T,r,t.length,v,ye]);const i=F=>{P(!0),K.current&&window.clearTimeout(K.current),H.current&&window.clearTimeout(H.current),j(!1),q(!1),y.onFocus?.(F)},O=F=>{P(!1),!s&&t.length>0&&(S(""),k(0)),y.onBlur?.(F)},J=F=>{const W=F.target.value;b&&W.length>b||(g?g(W):M(W),y.onChange?.(F))},ae=()=>{const F=g?s:G;F.trim()&&!w&&(A?.(F),g||M(""))},pe=F=>{(F.ctrlKey||F.metaKey)&&F.key==="Enter"&&(F.preventDefault(),ae()),y.onKeyDown?.(F)},le=g?s:G,xe=w||!le.trim()||(b?le.length>b:!1);return a.jsxs("div",{style:{position:"relative",...R},children:[a.jsxs("div",{style:{position:"relative"},children:[a.jsx("textarea",{ref:$,value:g?s:G,onChange:J,onFocus:F=>{F.target.style.borderColor="#1890ff",F.target.style.boxShadow="0 0 0 2px rgba(24, 144, 255, 0.2)",i(F)},onBlur:F=>{F.target.style.borderColor="#d9d9d9",F.target.style.boxShadow="none",O(F)},onKeyDown:pe,placeholder:v||le?f:"",maxLength:b,rows:d,disabled:w,style:{width:"100%",minHeight:`${d*24+16}px`,padding:"8px 60px 8px 12px",border:"1px solid #d9d9d9",borderRadius:"6px",fontSize:"14px",lineHeight:"1.5",fontFamily:"inherit",resize:"vertical",outline:"none",transition:"border-color 0.3s, box-shadow 0.3s",backgroundColor:"#fff",...y.style},...y}),!v&&!le&&o&&a.jsxs("div",{style:{position:"absolute",top:0,left:0,right:0,bottom:0,display:"flex",alignItems:"flex-start",paddingTop:8,paddingLeft:12,paddingRight:12,color:"#bfbfbf",pointerEvents:"none",zIndex:2,fontSize:14,fontFamily:"inherit",lineHeight:"1.5"},children:[a.jsx("span",{children:o}),_&&a.jsx("span",{style:{display:"inline-block",width:1,height:"1.2em",backgroundColor:"#1890ff",marginLeft:2,animation:"blink 1s infinite"}})]}),a.jsx("div",{style:{position:"absolute",bottom:8,right:8,zIndex:3},children:a.jsx(z.Button,{type:"primary",size:"small",icon:a.jsx(he.SendOutlined,{}),onClick:ae,disabled:xe,style:{borderRadius:6,minWidth:32,height:32,display:"flex",alignItems:"center",justifyContent:"center"},children:e})})]}),u&&a.jsxs("div",{style:{marginTop:4,textAlign:"right",fontSize:"12px",color:"#999"},children:[le.length,"/",b]}),a.jsx("style",{children:`
28
28
  @keyframes blink {
29
29
  0%, 50% { opacity: 1; }
30
30
  51%, 100% { opacity: 0; }
31
31
  }
32
- `})]})};Ke.__docgenInfo={displayName:"DynamicTextArea",description:"动态文案文本域组件,支持流式文字动画效果",props:{texts:{name:"texts",required:!0,description:"动态展示的文案数组",type:{name:"string[]",raw:"string[]"}},placeholder:{name:"placeholder",required:!1,description:"输入框占位符",type:{name:"string",raw:"string"},defaultValue:{value:'"请输入内容"'}},animationSpeed:{name:"animationSpeed",required:!1,description:"动画速度(毫秒)",type:{name:"number",raw:"number"},defaultValue:{value:"100"}},autoPlay:{name:"autoPlay",required:!1,description:"是否自动播放动画",type:{name:"boolean",raw:"boolean"},defaultValue:{value:"true"}},value:{name:"value",required:!1,description:"输入框值",type:{name:"string",raw:"string"}},onChange:{name:"onChange",required:!1,description:"输入框变化回调",type:{name:"function",raw:"(value: string) => void"}},onSubmit:{name:"onSubmit",required:!1,description:"提交回调",type:{name:"function",raw:"(value: string) => void"}},maxLength:{name:"maxLength",required:!1,description:"最大输入字数",type:{name:"number",raw:"number"},defaultValue:{value:"500"}},showCount:{name:"showCount",required:!1,description:"是否显示字数统计",type:{name:"boolean",raw:"boolean"},defaultValue:{value:"true"}},submitText:{name:"submitText",required:!1,description:"提交按钮文本",type:{name:"string",raw:"string"},defaultValue:{value:'"发送"'}},disabled:{name:"disabled",required:!1,description:"是否禁用提交按钮",type:{name:"boolean",raw:"boolean"},defaultValue:{value:"false"}},rows:{name:"rows",required:!1,description:"文本域行数",type:{name:"number",raw:"number"},defaultValue:{value:"4"}}}};const Re=({src:t,poster:f,width:l=300,height:r,videoWidth:o,videoHeight:y,showPlayButton:_=!0,autoPlayOnHover:h=!0,onClick:c,onVideoLoaded:e,onVideoPlay:E,onVideoPause:d,onVideoEnded:R,className:p,style:s,...A})=>{const u=n.useRef(null),[w,T]=n.useState(!1),[j,x]=n.useState(!1),[P,I]=n.useState(!1),q=n.useCallback(()=>{u.current&&(u.current.play(),T(!0),E?.())},[E]),G=n.useCallback(()=>{u.current&&(u.current.pause(),T(!1),d?.())},[d]),M=n.useCallback(ee=>{ee.stopPropagation(),w?G():q()},[w,q,G]),X=n.useCallback(()=>{x(!0),h&&!w&&q()},[h,w,q]),U=n.useCallback(()=>{x(!1),h&&w&&G()},[h,w,G]),K=n.useCallback(()=>{I(!0),e?.()},[e]),$=n.useCallback(()=>{T(!0),E?.()},[E]),C=n.useCallback(()=>{T(!1),d?.()},[d]),B=n.useCallback(()=>{T(!1),R?.()},[R]),Z=n.useCallback(ee=>{c?.(ee)},[c]);return a.jsx(z.Card,{...A,className:`video-card ${p||""}`,style:{width:l,height:r,padding:0,overflow:"hidden",cursor:c?"pointer":"default",border:"none",borderRadius:0,...s},bordered:!1,onMouseEnter:X,onMouseLeave:U,onClick:Z,children:a.jsxs("div",{className:"video-card-container",children:[a.jsx("video",{ref:u,src:t,poster:f,preload:"metadata",onLoadedData:K,onPlay:$,onPause:C,onEnded:B,muted:!0,loop:!0}),_&&a.jsx("div",{className:`video-play-button ${j?"hovered":""}`,onClick:M,children:w?a.jsx(he.PauseCircleOutlined,{className:"play-icon"}):a.jsx(he.PlayCircleOutlined,{className:"play-icon"})}),!P&&a.jsx("div",{className:"video-loading-mask",children:a.jsx("div",{className:"loading-spinner"})})]})})};Re.__docgenInfo={displayName:"VideoCard",description:"视频卡片组件,支持鼠标悬浮播放控制",props:{src:{name:"src",required:!0,description:"视频源地址",type:{name:"string",raw:"string"}},poster:{name:"poster",required:!1,description:"视频海报图片",type:{name:"string",raw:"string"}},width:{name:"width",required:!1,description:"卡片宽度",type:{name:"number | string",raw:"number | string"},defaultValue:{value:"300"}},height:{name:"height",required:!1,description:"卡片高度",type:{name:"number | string",raw:"number | string"}},videoWidth:{name:"videoWidth",required:!1,description:"视频宽度",type:{name:"number | string",raw:"number | string"},defaultValue:{value:'"100%"'}},videoHeight:{name:"videoHeight",required:!1,description:"视频高度",type:{name:"number | string",raw:"number | string"},defaultValue:{value:'"100%"'}},showPlayButton:{name:"showPlayButton",required:!1,description:"是否显示播放按钮",type:{name:"boolean",raw:"boolean"},defaultValue:{value:"true"}},autoPlayOnHover:{name:"autoPlayOnHover",required:!1,description:"是否自动播放(鼠标悬浮时)",type:{name:"boolean",raw:"boolean"},defaultValue:{value:"true"}},onClick:{name:"onClick",required:!1,description:"点击事件",type:{name:"function",raw:"(event: React.MouseEvent<HTMLDivElement>) => void"}},onVideoLoaded:{name:"onVideoLoaded",required:!1,description:"视频加载完成事件",type:{name:"function",raw:"() => void"}},onVideoPlay:{name:"onVideoPlay",required:!1,description:"视频播放事件",type:{name:"function",raw:"() => void"}},onVideoPause:{name:"onVideoPause",required:!1,description:"视频暂停事件",type:{name:"function",raw:"() => void"}},onVideoEnded:{name:"onVideoEnded",required:!1,description:"视频结束事件",type:{name:"function",raw:"() => void"}},className:{name:"className",required:!1,description:"自定义样式类名",type:{name:"string",raw:"string"}},style:{name:"style",required:!1,description:"自定义样式",type:{name:"CSSProperties",raw:"React.CSSProperties"}}}};const mt=t=>[".mp4",".webm",".ogg",".mov",".avi",".wmv",".flv",".mkv"].some(l=>t.toLowerCase().includes(l)),yt=t=>t.type?t.type:mt(t.url)?"video":"image",Ye=({items:t,columns:f,gap:l=0,responsive:r=!0,breakpoints:o={xs:1,sm:2,md:3,lg:4,xl:5,xxl:6},className:y,style:_,onClick:h})=>{const c=n.useRef(null),[e,E]=n.useState(f||o.md||3),d=n.useRef(new Map),R=n.useCallback(()=>{if(!r||f)return f||o.md||3;const u=window.innerWidth;return u<576?o.xs||1:u<768?o.sm||2:u<992?o.md||3:u<1200?o.lg||4:u<1600?o.xl||5:o.xxl||6},[r,f,o]),p=n.useCallback(()=>{if(!c.current)return;const u=e,w=c.current,j=(w.offsetWidth-l*(u-1))/u,x=new Array(u).fill(0);t.forEach((I,q)=>{const G=I.id||q,M=d.current.get(G);if(!M)return;const X=Math.min(...x),U=x.indexOf(X),K=U*(j+l),$=x[U];M.style.position="absolute",M.style.left=`${K}px`,M.style.top=`${$}px`,M.style.width=`${j}px`,x[U]+=M.offsetHeight+l});const P=Math.max(...x);w.style.height=`${P}px`},[t,e,l]);n.useEffect(()=>{const u=()=>{const w=R();w!==e&&E(w)};if(r)return window.addEventListener("resize",u),u(),()=>window.removeEventListener("resize",u)},[r,R,e]),n.useEffect(()=>{const u=setTimeout(()=>{p()},100);return()=>clearTimeout(u)},[t,e,p]);const s=n.useCallback(()=>{p()},[p]),A=n.useCallback(u=>{h&&h(u),u.onClick?.(u)},[h]);return a.jsx("div",{ref:c,className:`waterfall-container ${y||""}`,style:{position:"relative",width:"100%",..._},children:t.map((u,w)=>{const T=u.id||w,j=yt(u);return a.jsx("div",{ref:x=>{x?d.current.set(T,x):d.current.delete(T)},className:"waterfall-item",children:j==="video"?a.jsx("div",{style:{width:"100%",position:"relative",paddingBottom:"56.25%",cursor:h||u.onClick?"pointer":"default"},children:a.jsx("div",{style:{position:"absolute",top:0,left:0,width:"100%",height:"100%"},children:a.jsx(Re,{src:u.url,poster:u.poster,width:"100%",height:"100%",onClick:()=>A(u),onVideoLoaded:s,autoPlayOnHover:!0,showPlayButton:!1})})}):a.jsx("div",{className:"waterfall-image-wrapper",onClick:()=>A(u),style:{cursor:h||u.onClick?"pointer":"default"},children:a.jsx("img",{src:u.url,alt:`瀑布流图片 ${w+1}`,className:"waterfall-image",onLoad:s,onError:s,style:{display:"block",width:"100%",height:"auto"}})})},T)})})};Ye.__docgenInfo={displayName:"Waterfall",description:"瀑布流布局组件,支持图片和视频混合展示",props:{items:{name:"items",required:!0,description:"媒体资源数组",type:{name:"WaterfallItem[]",raw:"WaterfallItem[]"}},columns:{name:"columns",required:!1,description:"列数(默认会根据屏幕宽度自动响应)",type:{name:"number",raw:"number"}},gap:{name:"gap",required:!1,description:"间隔大小",type:{name:"number",raw:"number"},defaultValue:{value:"0"}},responsive:{name:"responsive",required:!1,description:"是否启用响应式布局",type:{name:"boolean",raw:"boolean"},defaultValue:{value:"true"}},breakpoints:{name:"breakpoints",required:!1,description:"响应式断点配置",type:{name:"object",raw:"{ xs?: number; sm?: number; md?: number; lg?: number; xl?: number; xxl?: number; }"}},className:{name:"className",required:!1,description:"自定义类名",type:{name:"string",raw:"string"}},style:{name:"style",required:!1,description:"自定义样式",type:{name:"CSSProperties",raw:"React.CSSProperties"}},onClick:{name:"onClick",required:!1,description:"点击回调",type:{name:"function",raw:"(item: any) => void"}}}};const gt={algorithm:z.theme.defaultAlgorithm,token:{colorPrimary:"#3b82f6",colorSuccess:"#10b981",colorWarning:"#f59e0b",colorError:"#ef4444",colorInfo:"#3b82f6",colorBgBase:"#ffffff",colorBgContainer:"#ffffff",colorBgElevated:"#ffffff",colorBgLayout:"#f8fafc",colorTextBase:"#1e293b",colorText:"#1e293b",colorTextSecondary:"#64748b",colorTextTertiary:"#94a3b8",colorTextQuaternary:"#cbd5e1",colorBorder:"#e2e8f0",colorBorderSecondary:"#f1f5f9",boxShadow:"0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06)",boxShadowSecondary:"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)",borderRadius:8,borderRadiusLG:12,borderRadiusSM:6,fontFamily:"Inter, system-ui, Arial, sans-serif",fontSize:14,fontSizeLG:16,fontSizeSM:12,padding:16,paddingLG:24,paddingSM:12,paddingXS:8,controlHeight:32,controlHeightLG:40,controlHeightSM:24},components:{Button:{borderRadius:8,controlHeight:32,fontWeight:500},Card:{borderRadiusLG:12,boxShadow:"0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06)"},Input:{borderRadius:8,controlHeight:32},Table:{borderRadiusLG:8,headerBg:"#f8fafc",headerColor:"#374151"}}};Q.AdvancedTable=ze,Q.AppModal=Oe,Q.BackButton=Fe,Q.Button=Be,Q.Card=Pe,Q.DynamicInput=Xe,Q.DynamicTextArea=Ke,Q.EmptyAndSpin=De,Q.LinkButton=Ge,Q.PageTable=qe,Q.RichTextEditor=We,Q.VideoCard=Re,Q.VirtualTable=Ue,Q.Waterfall=Ye,Q.XcIcon=Me,Q.lightTheme=gt,Object.defineProperty(Q,Symbol.toStringTag,{value:"Module"})});
32
+ `})]})};Ze.__docgenInfo={displayName:"DynamicTextArea",description:"动态文案文本域组件,支持流式文字动画效果",props:{texts:{name:"texts",required:!0,description:"动态展示的文案数组",type:{name:"string[]",raw:"string[]"}},placeholder:{name:"placeholder",required:!1,description:"输入框占位符",type:{name:"string",raw:"string"},defaultValue:{value:'"请输入内容"'}},animationSpeed:{name:"animationSpeed",required:!1,description:"动画速度(毫秒)",type:{name:"number",raw:"number"},defaultValue:{value:"100"}},autoPlay:{name:"autoPlay",required:!1,description:"是否自动播放动画",type:{name:"boolean",raw:"boolean"},defaultValue:{value:"true"}},value:{name:"value",required:!1,description:"输入框值",type:{name:"string",raw:"string"}},onChange:{name:"onChange",required:!1,description:"输入框变化回调",type:{name:"function",raw:"(value: string) => void"}},onSubmit:{name:"onSubmit",required:!1,description:"提交回调",type:{name:"function",raw:"(value: string) => void"}},maxLength:{name:"maxLength",required:!1,description:"最大输入字数",type:{name:"number",raw:"number"},defaultValue:{value:"500"}},showCount:{name:"showCount",required:!1,description:"是否显示字数统计",type:{name:"boolean",raw:"boolean"},defaultValue:{value:"true"}},submitText:{name:"submitText",required:!1,description:"提交按钮文本",type:{name:"string",raw:"string"},defaultValue:{value:'"发送"'}},disabled:{name:"disabled",required:!1,description:"是否禁用提交按钮",type:{name:"boolean",raw:"boolean"},defaultValue:{value:"false"}},rows:{name:"rows",required:!1,description:"文本域行数",type:{name:"number",raw:"number"},defaultValue:{value:"4"}}}};const Le=({src:t,poster:f,width:l=300,height:r,videoWidth:s,videoHeight:g,showPlayButton:A=!0,autoPlayOnHover:b=!0,onClick:u,onVideoLoaded:e,onVideoPlay:w,onVideoPause:d,onVideoEnded:R,className:y,style:o,...S})=>{const c=n.useRef(null),[k,T]=n.useState(!1),[j,v]=n.useState(!1),[P,_]=n.useState(!1),q=n.useCallback(()=>{c.current&&(c.current.play(),T(!0),w?.())},[w]),G=n.useCallback(()=>{c.current&&(c.current.pause(),T(!1),d?.())},[d]),M=n.useCallback(te=>{te.stopPropagation(),k?G():q()},[k,q,G]),K=n.useCallback(()=>{v(!0),b&&!k&&q()},[b,k,q]),H=n.useCallback(()=>{v(!1),b&&k&&G()},[b,k,G]),Y=n.useCallback(()=>{_(!0),e?.()},[e]),ee=n.useCallback(()=>{T(!0),w?.()},[w]),C=n.useCallback(()=>{T(!1),d?.()},[d]),B=n.useCallback(()=>{T(!1),R?.()},[R]),$=n.useCallback(te=>{u?.(te)},[u]);return a.jsx(z.Card,{...S,className:`video-card ${y||""}`,style:{width:l,height:r,padding:0,overflow:"hidden",cursor:u?"pointer":"default",border:"none",borderRadius:0,...o},bordered:!1,onMouseEnter:K,onMouseLeave:H,onClick:$,children:a.jsxs("div",{className:"video-card-container",children:[a.jsx("video",{ref:c,src:t,poster:f,preload:"metadata",onLoadedData:Y,onPlay:ee,onPause:C,onEnded:B,muted:!0,loop:!0}),A&&a.jsx("div",{className:`video-play-button ${j?"hovered":""}`,onClick:M,children:k?a.jsx(he.PauseCircleOutlined,{className:"play-icon"}):a.jsx(he.PlayCircleOutlined,{className:"play-icon"})}),!P&&a.jsx("div",{className:"video-loading-mask",children:a.jsx("div",{className:"loading-spinner"})})]})})};Le.__docgenInfo={displayName:"VideoCard",description:"视频卡片组件,支持鼠标悬浮播放控制",props:{src:{name:"src",required:!0,description:"视频源地址",type:{name:"string",raw:"string"}},poster:{name:"poster",required:!1,description:"视频海报图片",type:{name:"string",raw:"string"}},width:{name:"width",required:!1,description:"卡片宽度",type:{name:"number | string",raw:"number | string"},defaultValue:{value:"300"}},height:{name:"height",required:!1,description:"卡片高度",type:{name:"number | string",raw:"number | string"}},videoWidth:{name:"videoWidth",required:!1,description:"视频宽度",type:{name:"number | string",raw:"number | string"},defaultValue:{value:'"100%"'}},videoHeight:{name:"videoHeight",required:!1,description:"视频高度",type:{name:"number | string",raw:"number | string"},defaultValue:{value:'"100%"'}},showPlayButton:{name:"showPlayButton",required:!1,description:"是否显示播放按钮",type:{name:"boolean",raw:"boolean"},defaultValue:{value:"true"}},autoPlayOnHover:{name:"autoPlayOnHover",required:!1,description:"是否自动播放(鼠标悬浮时)",type:{name:"boolean",raw:"boolean"},defaultValue:{value:"true"}},onClick:{name:"onClick",required:!1,description:"点击事件",type:{name:"function",raw:"(event: React.MouseEvent<HTMLDivElement>) => void"}},onVideoLoaded:{name:"onVideoLoaded",required:!1,description:"视频加载完成事件",type:{name:"function",raw:"() => void"}},onVideoPlay:{name:"onVideoPlay",required:!1,description:"视频播放事件",type:{name:"function",raw:"() => void"}},onVideoPause:{name:"onVideoPause",required:!1,description:"视频暂停事件",type:{name:"function",raw:"() => void"}},onVideoEnded:{name:"onVideoEnded",required:!1,description:"视频结束事件",type:{name:"function",raw:"() => void"}},className:{name:"className",required:!1,description:"自定义样式类名",type:{name:"string",raw:"string"}},style:{name:"style",required:!1,description:"自定义样式",type:{name:"CSSProperties",raw:"React.CSSProperties"}}}};const vt=t=>[".mp4",".webm",".ogg",".mov",".avi",".wmv",".flv",".mkv"].some(l=>t.toLowerCase().includes(l)),xt=t=>t.type?t.type:vt(t.url)?"video":"image",$e=({items:t,columns:f,gap:l=0,responsive:r=!0,breakpoints:s={xs:1,sm:2,md:3,lg:4,xl:5,xxl:6},className:g,style:A,onClick:b})=>{const u=n.useRef(null),[e,w]=n.useState(f||s.md||3),d=n.useRef(new Map),R=n.useCallback(()=>{if(!r||f)return f||s.md||3;const c=window.innerWidth;return c<576?s.xs||1:c<768?s.sm||2:c<992?s.md||3:c<1200?s.lg||4:c<1600?s.xl||5:s.xxl||6},[r,f,s]),y=n.useCallback(()=>{if(!u.current)return;const c=e,k=u.current,j=(k.offsetWidth-l*(c-1))/c,v=new Array(c).fill(0);t.forEach((_,q)=>{const G=_.id||q,M=d.current.get(G);if(!M)return;const K=Math.min(...v),H=v.indexOf(K),Y=H*(j+l),ee=v[H];M.style.position="absolute",M.style.left=`${Y}px`,M.style.top=`${ee}px`,M.style.width=`${j}px`,v[H]+=M.offsetHeight+l});const P=Math.max(...v);k.style.height=`${P}px`},[t,e,l]);n.useEffect(()=>{const c=()=>{const k=R();k!==e&&w(k)};if(r)return window.addEventListener("resize",c),c(),()=>window.removeEventListener("resize",c)},[r,R,e]),n.useEffect(()=>{const c=setTimeout(()=>{y()},100);return()=>clearTimeout(c)},[t,e,y]);const o=n.useCallback(()=>{y()},[y]),S=n.useCallback(c=>{b&&b(c),c.onClick?.(c)},[b]);return a.jsx("div",{ref:u,className:`waterfall-container ${g||""}`,style:{position:"relative",width:"100%",...A},children:t.map((c,k)=>{const T=c.id||k,j=xt(c);return a.jsx("div",{ref:v=>{v?d.current.set(T,v):d.current.delete(T)},className:"waterfall-item",children:j==="video"?a.jsx("div",{style:{width:"100%",position:"relative",paddingBottom:"56.25%",cursor:b||c.onClick?"pointer":"default"},children:a.jsx("div",{style:{position:"absolute",top:0,left:0,width:"100%",height:"100%"},children:a.jsx(Le,{src:c.url,poster:c.poster,width:"100%",height:"100%",onClick:()=>S(c),onVideoLoaded:o,autoPlayOnHover:!0,showPlayButton:!1})})}):a.jsx("div",{className:"waterfall-image-wrapper",onClick:()=>S(c),style:{cursor:b||c.onClick?"pointer":"default"},children:a.jsx("img",{src:c.url,alt:`瀑布流图片 ${k+1}`,className:"waterfall-image",onLoad:o,onError:o,style:{display:"block",width:"100%",height:"auto"}})})},T)})})};$e.__docgenInfo={displayName:"Waterfall",description:"瀑布流布局组件,支持图片和视频混合展示",props:{items:{name:"items",required:!0,description:"媒体资源数组",type:{name:"WaterfallItem[]",raw:"WaterfallItem[]"}},columns:{name:"columns",required:!1,description:"列数(默认会根据屏幕宽度自动响应)",type:{name:"number",raw:"number"}},gap:{name:"gap",required:!1,description:"间隔大小",type:{name:"number",raw:"number"},defaultValue:{value:"0"}},responsive:{name:"responsive",required:!1,description:"是否启用响应式布局",type:{name:"boolean",raw:"boolean"},defaultValue:{value:"true"}},breakpoints:{name:"breakpoints",required:!1,description:"响应式断点配置",type:{name:"object",raw:"{ xs?: number; sm?: number; md?: number; lg?: number; xl?: number; xxl?: number; }"}},className:{name:"className",required:!1,description:"自定义类名",type:{name:"string",raw:"string"}},style:{name:"style",required:!1,description:"自定义样式",type:{name:"CSSProperties",raw:"React.CSSProperties"}},onClick:{name:"onClick",required:!1,description:"点击回调",type:{name:"function",raw:"(item: any) => void"}}}};const Et={algorithm:z.theme.defaultAlgorithm,token:{colorPrimary:"#3b82f6",colorSuccess:"#10b981",colorWarning:"#f59e0b",colorError:"#ef4444",colorInfo:"#3b82f6",colorBgBase:"#ffffff",colorBgContainer:"#ffffff",colorBgElevated:"#ffffff",colorBgLayout:"#f8fafc",colorTextBase:"#1e293b",colorText:"#1e293b",colorTextSecondary:"#64748b",colorTextTertiary:"#94a3b8",colorTextQuaternary:"#cbd5e1",colorBorder:"#e2e8f0",colorBorderSecondary:"#f1f5f9",boxShadow:"0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06)",boxShadowSecondary:"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)",borderRadius:8,borderRadiusLG:12,borderRadiusSM:6,fontFamily:"Inter, system-ui, Arial, sans-serif",fontSize:14,fontSizeLG:16,fontSizeSM:12,padding:16,paddingLG:24,paddingSM:12,paddingXS:8,controlHeight:32,controlHeightLG:40,controlHeightSM:24},components:{Button:{borderRadius:8,controlHeight:32,fontWeight:500},Card:{borderRadiusLG:12,boxShadow:"0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06)"},Input:{borderRadius:8,controlHeight:32},Table:{borderRadiusLG:8,headerBg:"#f8fafc",headerColor:"#374151"}}};Z.AdvancedTable=Xe,Z.AppModal=Fe,Z.BackButton=He,Z.Button=Me,Z.Card=De,Z.DynamicInput=Qe,Z.DynamicTextArea=Ze,Z.EmptyAndSpin=We,Z.LinkButton=Ue,Z.PageTable=Ge,Z.RichTextEditor=Ke,Z.VideoCard=Le,Z.VirtualTable=Je,Z.Waterfall=$e,Z.XcIcon=ze,Z.lightTheme=Et,Object.defineProperty(Z,Symbol.toStringTag,{value:"Module"})});
33
33
  //# sourceMappingURL=index.umd.js.map