@nocobase/client 2.0.0-alpha.5 → 2.0.0-alpha.6
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/lib/index.js
CHANGED
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
width: 100%;
|
|
63
63
|
}
|
|
64
64
|
}
|
|
65
|
-
`,items:a},n))})},SchemaInitializerSubMenu=e=>{var t;const o=e,{children:r,items:i,title:n,name:l,onOpenChange:a,icon:c}=o,u=W(o,["children","items","title","name","onOpenChange","icon"]),d=useCompile(),m=useSchemaInitializerItem(),p=(0,import_react2.useMemo)(()=>l||(m==null?void 0:m.name)||(0,import_shared.uid)(),[l,m]),h=(t=i||r)==null?void 0:t.filter(_=>_.useVisible?_.useVisible():!0),g=useSchemaInitializerMenuItems(h,l),x=(0,import_react2.useMemo)(()=>[I(f({},u),{key:p,label:d(n),icon:typeof c=="string"?(0,import_jsx_runtime.jsx)(import_icons.default,{type:c}):c,children:g})],[g,d,c,p,u,n]);return(0,import_jsx_runtime.jsx)(SchemaInitializerMenu,{onOpenChange:a,items:x})},SchemaInitializerSubMenuInternal=()=>{const e=useSchemaInitializerItem();return(0,import_jsx_runtime.jsx)(SchemaInitializerSubMenu,f({},e))},useAriaAttributeOfMenuItem=()=>{const{isInMenu:e}=useSchemaInitializerSubMenuContext();return{attribute:(0,import_react2.useMemo)(()=>e?{}:{role:"menuitem"},[e])}},{Paragraph:Paragraph$1,Text:Text$2}=import_antd.Typography,ErrorFallbackModal=e=>{const[t,o]=import_react2.default.useState(!1),r=(0,import_jsx_runtime.jsx)(Paragraph$1,{style:{display:"flex",marginBottom:0},copyable:{text:e.error.message},children:(0,import_jsx_runtime.jsxs)(Text$2,{type:"danger",style:{whiteSpace:"nowrap",textOverflow:"ellipsis",overflow:"hidden",display:"inline-block",maxWidth:"200px"},children:["Error: ",e.error.message]})});return(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsx)("div",{onMouseOver:()=>o(!0),children:e.children||r}),(0,import_jsx_runtime.jsx)(import_antd.Modal,{zIndex:1e4,open:t,footer:null,onCancel:()=>o(!1),width:"60%",children:(0,import_jsx_runtime.jsx)(ErrorFallback,f({},e))})]})},{Paragraph,Text:Text$1,Link}=import_antd.Typography,useDownloadLogs=(e,t={})=>{const o=useLocationNoUpdate(),[r,i]=import_react2.default.useState(!1),n=useAPIClient();return{loading:r,download:()=>E(void 0,null,function*(){i(!0);try{const l=yield n.request({url:"logger:collect",method:"post",responseType:"blob",data:f({error:{message:e.message,stack:e.stack},location:o},t)}),a=window.URL.createObjectURL(new Blob([l.data],{type:"application/gzip"})),c=document.createElement("a");c.setAttribute("href",a),c.setAttribute("download","logs.tar.gz"),c.click(),c.remove()}catch(l){console.log(l)}i(!1)})}},ErrorFallback=({error:e})=>{const t=(0,import_react.useFieldSchema)(),{t:o}=(0,import_react_i18next.useTranslation)(),{loading:r,download:i}=useDownloadLogs(e,{schema:t}),n=(0,import_jsx_runtime.jsxs)(import_react_i18next.Trans,{children:["This is likely a NocoBase internals bug. Please open an issue at ",(0,import_jsx_runtime.jsx)(Link,{href:"https://github.com/nocobase/nocobase/issues",target:"_blank",children:"here"})]});return(0,import_jsx_runtime.jsx)("div",{style:{backgroundColor:"white"},children:(0,import_jsx_runtime.jsx)(import_antd.Result,{style:{maxWidth:"60vw",margin:"auto"},status:"error",title:o("Render Failed"),subTitle:n,extra:[(0,import_jsx_runtime.jsx)(import_antd.Button,{type:"primary",href:"https://github.com/nocobase/nocobase/issues",target:"_blank",children:o("Feedback")},"feedback"),(0,import_jsx_runtime.jsx)(import_antd.Button,{loading:r,onClick:i,children:o("Download logs")},"log")],children:(0,import_jsx_runtime.jsx)(Paragraph,{copyable:{text:e.stack},children:(0,import_jsx_runtime.jsx)(Text$1,{type:"danger",style:{whiteSpace:"pre-line",textAlign:"center"},children:e.stack})})})})};ErrorFallback.Modal=ErrorFallbackModal;const AppNotFound=()=>{const e=(0,import_react_router_dom.useNavigate)(),{t}=(0,import_react_i18next.useTranslation)();return(0,import_jsx_runtime.jsx)(import_antd.Result,{status:"404",title:"404",subTitle:t("Sorry, the page you visited does not exist."),extra:(0,import_jsx_runtime.jsx)(import_antd.Button,{onClick:()=>e("/",{replace:!0}),type:"primary",children:"Back Home"})})};class Plugin{constructor(t,o){this.options=t,this.app=o,this.options=t,this.app=o}get pluginManager(){return this.app.pluginManager}get context(){return this.app.context}get flowEngine(){return this.app.flowEngine}get engine(){return this.app.flowEngine}get pm(){return this.app.pm}get router(){return this.app.router}get pluginSettingsManager(){return this.app.pluginSettingsManager}get pluginSettingsRouter(){return this.app.pluginSettingsManager}get schemaInitializerManager(){return this.app.schemaInitializerManager}get schemaSettingsManager(){return this.app.schemaSettingsManager}get dataSourceManager(){return this.app.dataSourceManager}afterAdd(){return E(this,null,function*(){})}beforeLoad(){return E(this,null,function*(){})}load(){return E(this,null,function*(){})}t(t,o={}){var r;return this.app.i18n.t(t,f({ns:(r=this.options)==null?void 0:r.packageName},o))}}const titleWrapperStyle={display:"flex",alignItems:"center",gap:4},withTooltipComponent=e=>t=>{const{tooltip:o}=t;return o?(0,import_jsx_runtime.jsxs)("div",{style:titleWrapperStyle,children:[(0,import_jsx_runtime.jsx)(e,f({},t)),(0,import_jsx_runtime.jsx)(import_antd.Tooltip,{title:o,children:(0,import_jsx_runtime.jsx)(import_icons.QuestionCircleOutlined,{style:{zIndex:1}})})]}):(0,import_jsx_runtime.jsx)(e,f({},t))},{evaluate}=import_client4.evaluators.get("formula.js"),useEvaluatedExpression=e=>{const t=useVariables$1(),o=useLocalVariables$1(),[r,i]=(0,import_react2.useState)();return(0,import_react2.useEffect)(()=>{E(void 0,null,function*(){if(e==null||e===""){i(void 0);return}const{exp:n,scope:l}=yield replaceVariables(e,{variables:t,localVariables:o});try{const a=evaluate(n,f({now:()=>new Date().toString()},l));i(a)}catch(a){console.error(a)}})},[t.parseVariable,e,o]),r};class SchemaInitializer{constructor(t){k(this,"options"),k(this,"name"),this.options=Object.assign({items:[]},t),this.name=t.name}get items(){return this.options.items}add(t,o){const r=t.split("."),i=r[r.length-1],n=I(f({},o),{name:i}),l=(u,d)=>{const m=this.items.findIndex(p=>p.name===u);m===-1?this.items.push(d):this.items[m]=d};if(r.length===1){l(i,n);return}const a=r.slice(0,-1).join("."),c=this.get(a);if(c){c.children||(c.children=[]);const u=t.replace(`${c.name}.`,""),d=c.children.findIndex(m=>m.name===u);d===-1?c.children.push(n):c.children[d]=n}else l(i,n)}get(t){var o;if(!t)return;const r=t.split(".");let i={children:this.items};for(let n=0;n<r.length;n++){const l=r[n],a=(o=i.children)==null?void 0:o.find(c=>c.name===l);if(a&&(i=a),n===r.length-1)return a}}remove(t){const o=t.split(".");if(o.length===1){const i=this.items.findIndex(n=>n.name===o[0]);i!==-1&&this.items.splice(i,1);return}const r=this.get(o.slice(0,-1).join("."));if(r&&r.children){const i=o[o.length-1],n=r.children.findIndex(l=>l.name===i);n!==-1&&r.children.splice(n,1)}}}var NocoBaseDesktopRouteType=(e=>(e.group="group",e.page="page",e.flowRoute="flowRoute",e.link="link",e.tabs="tabs",e.flowPage="flowPage",e))(NocoBaseDesktopRouteType||{});const useStyles$h=genStyleHook("nb-menu-item",e=>{const{componentCls:t}=e;return{[t]:{paddingLeft:`${e.padding}px !important`,paddingRight:`${e.padding}px !important`}}}),useInsertFlowPageSchema=()=>{const e=useAPIClient();return(0,import_react2.useCallback)(t=>E(void 0,null,function*(){yield e.request({method:"POST",url:"/uiSchemas:insert",data:t})}),[e])},FlowPageMenuItem=()=>{const{t:e}=(0,import_react_i18next.useTranslation)(),t=(0,import_react2.useContext)(import_react.SchemaOptionsContext),{theme:o}=useGlobalTheme(),{componentCls:r,hashId:i}=useStyles$h(),n=useParentRoute(),{createRoute:l}=useNocoBaseRoutes(),a=useInsertFlowPageSchema(),c=(0,import_react2.useCallback)(()=>E(void 0,null,function*(){const u=yield FormDialog(e("Add page"),()=>(0,import_jsx_runtime.jsx)(SchemaComponentOptions,{scope:t.scope,components:f({},t.components),children:(0,import_jsx_runtime.jsx)(import_antd_v5.FormLayout,{layout:"vertical",children:(0,import_jsx_runtime.jsx)(zIndexContext.Provider,{value:ICON_POPUP_Z_INDEX,children:(0,import_jsx_runtime.jsx)(SchemaComponent,{schema:{properties:{title:{title:e("Menu item title"),required:!0,"x-component":"Input","x-decorator":"FormItem"},icon:{title:e("Icon"),"x-component":"IconPicker","x-decorator":"FormItem"}}}})})})}),o).open({initialValues:{}}),d=(0,import_shared.uid)(),m=(0,import_shared.uid)(),p=(0,import_shared.uid)(),h=(0,import_shared.uid)();yield l({type:NocoBaseDesktopRouteType.page,title:u.title,icon:u.icon,parentId:n==null?void 0:n.id,schemaUid:m,menuSchemaUid:d,enableTabs:!1,children:[{type:NocoBaseDesktopRouteType.tabs,schemaUid:p,tabSchemaName:h,hidden:!0}]}),a(getFlowPageMenuSchema({pageSchemaUid:m,tabSchemaUid:p,tabSchemaName:h}))}),[l,a,t==null?void 0:t.components,t==null?void 0:t.scope,n==null?void 0:n.id,e,o]);return(0,import_jsx_runtime.jsx)(SchemaInitializerItem,{title:e("Modern page (v2)"),onClick:c,className:`${r} ${i}`})};function getFlowPageMenuSchema({pageSchemaUid:e,tabSchemaUid:t,tabSchemaName:o}){return{type:"void","x-component":"FlowRoute","x-uid":e}}const GroupItem$1=()=>{const{t:e}=(0,import_react_i18next.useTranslation)(),t=(0,import_react2.useContext)(import_react.SchemaOptionsContext),{theme:o}=useGlobalTheme(),{componentCls:r,hashId:i}=useStyles$h(),n=useParentRoute(),{createRoute:l}=useNocoBaseRoutes(),a=(0,import_react2.useCallback)(()=>E(void 0,null,function*(){const c=yield FormDialog(e("Add group"),()=>(0,import_jsx_runtime.jsx)(SchemaComponentOptions,{scope:t.scope,components:f({},t.components),children:(0,import_jsx_runtime.jsx)(import_antd_v5.FormLayout,{layout:"vertical",children:(0,import_jsx_runtime.jsx)(zIndexContext.Provider,{value:ICON_POPUP_Z_INDEX,children:(0,import_jsx_runtime.jsx)(SchemaComponent,{schema:{properties:{title:{title:e("Menu item title"),"x-component":"Input","x-decorator":"FormItem",required:!0},icon:{title:e("Icon"),"x-component":"IconPicker","x-decorator":"FormItem"}}}})})})}),o).open({initialValues:{}}),{title:u,icon:d}=c,m=(0,import_shared.uid)();yield l({type:NocoBaseDesktopRouteType.group,title:u,icon:d,parentId:n==null?void 0:n.id,schemaUid:m})}),[t.components,t.scope,e,o]);return(0,import_jsx_runtime.jsx)(SchemaInitializerItem,{title:e("Group"),onClick:a,className:`${r} ${i}`})},useAttach=e=>{const t=(0,import_react2.useRef)(null);return(0,import_react2.useEffect)(()=>(t.current&&e!==t.current&&t.current.onUnmount(),t.current=e,e.onMount(),()=>{e.onUnmount()}),[e]),e},compileCache={},hasVariable=e=>/{{.*?}}/g.test(e),useCompile=({noCache:e}={noCache:!1})=>{const t=(0,import_react2.useContext)(import_react.SchemaOptionsContext),o=(0,import_react2.useContext)(import_react.SchemaExpressionScopeContext);return(r,i)=>{let n=!1,l;if(typeof r=="string"&&r.startsWith("{{")&&(n=!0,l=r),r&&typeof r=="object"&&!(0,import_react2.isValidElement)(r)){try{l=JSON.stringify(r)}catch(a){return console.warn("Failed to stringify:",a),r}if(compileCache[l])return compileCache[l];n=hasVariable(l)}if(Array.isArray(r)){try{l=JSON.stringify(r)}catch(a){return console.warn("Failed to stringify:",a),r}if(compileCache[l])return compileCache[l];n=hasVariable(l)}if(n){const a=f(f(f({},t==null?void 0:t.scope),o),i);if(!l)return import_react.Schema.compile(r,a);try{return e?import_react.Schema.compile(r,a):(compileCache[l]=compileCache[l]||import_react.Schema.compile(r,a),compileCache[l])}catch(c){return console.log("useCompile error",r,c),import_react.Schema.compile(r,a)}}return r}},useComponent=(e,t)=>{const{components:o}=(0,import_react2.useContext)(import_react.SchemaOptionsContext);return e?typeof e!="string"?e:(0,import_lodash.get)(o,e)||t:t},LAZY_COMPONENT_KEY=Symbol("LAZY_COMPONENT_KEY");function lazy(e,...t){if(t.length===0){const o=(0,import_react2.lazy)(()=>e().then(i=>{const n=i.default;return r[LAZY_COMPONENT_KEY]=n,{default:n}})),r=i=>(0,import_jsx_runtime.jsx)(import_react2.default.Suspense,{fallback:(0,import_jsx_runtime.jsx)(import_antd.Spin,{}),children:(0,import_jsx_runtime.jsx)(o,f({},i))});return r}return t.reduce((o,r)=>{const i=(0,import_react2.lazy)(()=>e().then(n=>{const l=(0,import_lodash.get)(n,r);return o[r][LAZY_COMPONENT_KEY]=l,{default:l}}));return o[r]=n=>(0,import_jsx_runtime.jsx)(import_react2.default.Suspense,{fallback:(0,import_jsx_runtime.jsx)(import_antd.Spin,{}),children:(0,import_jsx_runtime.jsx)(i,f({},n))}),o},{})}function useLazy(e,t){const o=typeof t=="function"?t:i=>i[t],r=(0,import_react_imported_component.loadableResource)(e);if(!r.payload)throw new Promise((i,n)=>{r.loadIfNeeded(),r.resolution.then(i).catch(n)});return o(r.payload)}function addAppVersion(e,t){if(e)return e["x-app-version"]||(e["x-app-version"]=t),Object.keys(e.properties||{}).forEach(o=>{var r;addAppVersion((r=e.properties)==null?void 0:r[o],t)}),e}const name="@nocobase/client",version="2.0.0-alpha.5",license="AGPL-3.0",main="lib/index.js",module$1="es/index.mjs",types="es/index.d.ts",dependencies={"@ahooksjs/use-url-state":"3.5.1","@ant-design/cssinjs":"^1.11.1","@ant-design/icons":"^5.6.1","@ant-design/pro-layout":"^7.22.1","@antv/g2plot":"^2.4.18","@budibase/handlebars-helpers":"0.14.0","@codemirror/lang-html":"^6.4.10","@codemirror/theme-one-dark":"^6.1.3","@ctrl/tinycolor":"^3.6.0","@dnd-kit/core":"^6.0.0","@dnd-kit/sortable":"^7.0.0","@emotion/css":"^11.7.1","@formily/antd-v5":"1.2.3","@formily/core":"^2.2.27","@formily/grid":"^2.2.27","@formily/json-schema":"^2.2.27","@formily/path":"^2.2.27","@formily/react":"^2.2.27","@formily/reactive":"^2.2.27","@formily/reactive-react":"^2.2.27","@formily/shared":"^2.2.27","@formily/validator":"^2.2.27","@nocobase/evaluators":"2.0.0-alpha.5","@nocobase/flow-engine":"2.0.0-alpha.5","@nocobase/sdk":"2.0.0-alpha.5","@nocobase/utils":"2.0.0-alpha.5","@tanstack/react-table":"^8.21.3","@types/tabulator-tables":"^6.2.6",ahooks:"^3.7.2",antd:"5.24.2","antd-mobile":"^5.41.1","antd-mobile-icons":"^0.3.0","antd-style":"3.7.1",axios:"^1.7.0","bignumber.js":"^9.1.2",classnames:"^2.3.1",codemirror:"^6.0.2",cronstrue:"^2.11.0","file-saver":"^2.0.5",filesize:"9.0.11",flat:"^5.0.2","html5-qrcode":"^2.3.8",i18next:"^22.4.9","i18next-http-backend":"^2.1.1",ignore:"^5.2.0",json5:"^2.2.3",lodash:"4.17.21","lru-cache":"6.0.0","markdown-it":"14.1.0","markdown-it-highlightjs":"3.3.1",mathjs:"^10.6.0",mermaid:"9.4.3",mime:"^4.0.4","mime-match":"^1.0.2","react-beautiful-dnd":"^13.1.0","react-device-detect":"2.2.3","react-drag-listview":"^0.1.9","react-error-boundary":"^4.0.10","react-helmet":"^6.1.0","react-hotkeys-hook":"^3.4.7","react-i18next":"^11.15.1","react-iframe":"~1.8.5","react-image-lightbox":"^5.1.4","react-intersection-observer":"9.14.0","react-js-cron":"^3.1.0","react-quill":"^2.0.0","react-router-dom":"^6.30.1","react-to-print":"^2.14.7","sanitize-html":"2.13.0","tabulator-tables":"^6.3.1","use-deep-compare-effect":"^1.8.1"},peerDependencies={react:">=18.0.0","react-dom":">=18.0.0","react-is":">=18.0.0"},devDependencies={"@testing-library/react":"^14.0.0","@types/markdown-it":"14.1.1","@types/markdown-it-highlightjs":"3.3.1","@types/react-big-calendar":"^1.6.4","axios-mock-adapter":"^1.20.0",dumi:"2.2.14","dumi-theme-nocobase":"^0.2.32"},clientPkg={name,version,license,main,module:module$1,types,dependencies,peerDependencies,devDependencies};function createDesignable(e){return new Designable(e)}const generateUid=e=>{e&&(e["x-uid"]||(e["x-uid"]=(0,import_shared.uid)()),Object.keys(e.properties||{}).forEach(t=>{generateUid(e.properties[t])}))},defaultWrap=e=>e,matchSchema=(e,t)=>{if(!(!e||!t)){for(const o in t)if(Object.prototype.hasOwnProperty.call(t,o)&&t[o]!==(e==null?void 0:e[o]))return!1;return!0}},splitWrapSchema=(e,t)=>{if(e["x-uid"]&&e["x-uid"]===t["x-uid"])return[null,e.toJSON()];const o=e.toJSON(),r=I(f({},o),{properties:{}});let i=null;const n=(l,a)=>{Object.keys(l||{}).forEach(c=>{const u=l[c];if(u["x-uid"]===t["x-uid"]){i=l[c];return}else a.properties[c]=I(f({},u),{properties:{}}),n(u==null?void 0:u.properties,a.properties[c])})};return n(o.properties,r),[r,i]},translate=e=>e;class Designable{constructor(t){k(this,"current"),k(this,"options"),k(this,"appVersion"),k(this,"events",{}),this.options=t,this.current=t.current,this.appVersion=t.appVersion}get model(){return this.options.model}get query(){return this.options.query}loadAPIClientEvents(){const{api:t,t:o=translate}=this.options;if(!t)return;const r=i=>{if(!i)return[];const n=Object.values(i.properties).length,l=[];return i.mapProperties(a=>{a["x-component-props"]=a["x-component-props"]||{},a["x-component-props"].width=100/n,a["x-uid"]&&l.push({"x-uid":a["x-uid"],"x-component-props":a["x-component-props"]})}),i["x-uid"]&&l.length?l:[]};this.on("insertAdjacent",i=>E(this,[i],function*({onSuccess:n,current:l,position:a,schema:c,wrap:u,wrapped:d,removed:m}){var p;let h=[];if((d==null?void 0:d["x-component"])==="Grid.Col"&&(h=h.concat(r(d.parent))),(m==null?void 0:m["x-component"])==="Grid.Col"&&(h=h.concat(r(m.parent))),this.refresh(),!l["x-uid"])return;const g=yield t.request({url:`/uiSchemas:insertAdjacent/${l["x-uid"]}?position=${a}`,method:"post",data:{schema:addAppVersion(c,this.appVersion),wrap:u}});h.length&&(yield t.request({url:"/uiSchemas:batchPatch",method:"post",data:h})),m!=null&&m["x-uid"]&&(yield t.request({url:`/uiSchemas:remove/${m["x-uid"]}`,method:"post"})),n==null||n((p=g==null?void 0:g.data)==null?void 0:p.data),import_antd.message.success(o("Saved successfully"),.2)})),this.on("patch",i=>E(this,[i],function*({schema:n}){this.refresh(),n!=null&&n["x-uid"]&&(yield t.request({url:"/uiSchemas:patch",method:"post",data:f({},n)}),import_antd.message.success(o("Saved successfully"),.2))})),this.on("initializeActionContext",i=>E(this,[i],function*({schema:n}){n!=null&&n["x-uid"]&&(yield t.request({url:"/uiSchemas:initializeActionContext",method:"post",data:f({},n)}))})),this.on("batchPatch",i=>E(this,[i],function*({schemas:n}){this.refresh(),yield t.request({url:"/uiSchemas:batchPatch",method:"post",data:n}),import_antd.message.success(o("Saved successfully"),.2)})),this.on("remove",i=>E(this,[i],function*({removed:n}){let l=[];(n==null?void 0:n["x-component"])==="Grid.Col"&&(l=r(n.parent)),this.refresh(),n!=null&&n["x-uid"]&&(yield t.request({url:`/uiSchemas:remove/${n["x-uid"]}`,method:"post"}),l.length&&(yield t.request({url:"/uiSchemas:batchPatch",method:"post",data:l})),import_antd.message.success(o("Saved successfully"),.2))}))}prepareProperty(t){t.type||(t.type="void"),t.name||(t.name=(0,import_shared.uid)()),this.current["x-uid"]&&generateUid(t)}on(t,o){this.events[t]||(this.events[t]=[]),this.events[t].push(o)}emit(t,...o){return E(this,null,function*(){if(!this.events[t])return;const[r,...i]=o;return Promise.all(this.events[t].map(n=>n.bind(this)(f({current:this.current},r),...i)))})}parentsIn(t){if(!t||!import_react.Schema.isSchemaInstance(t))return!1;let o=this.current;for(;o!=null&&o.parent;){if(o.parent===t)return!0;o=o.parent}return!1}refresh(t){const{refresh:o}=this.options;return o==null?void 0:o(t)}deepMerge(t){const o={title:"title",description:"description",default:"initialValue",readOnly:"readOnly",writeOnly:"editable",enum:"dataSource","x-pattern":"pattern","x-display":"display","x-validator":"validator","x-decorator":"decorator","x-component":"component","x-reactions":"reactions","x-content":"content","x-visible":"visible","x-hidden":"hidden","x-disabled":"disabled","x-editable":"editable","x-read-only":"readOnly"},r={"x-decorator-props":"decoratorProps","x-component-props":"componentProps","x-data":"data"};Object.keys(t).forEach(i=>{o[i]?(this.current[i]=t[i],this.updateModel(o[i],t[i])):r[i]?Object.keys(t[i]).forEach(n=>{(0,import_set.default)(this.current,[i,n],t[i][n]),this.updateModel([r[i],n],t[i][n])}):this.current[i]=t[i]}),this.emit("patch",{schema:t})}getSchemaAttribute(t,o){return(0,import_get.default)(this.current,t,o)}shallowMerge(t){const o={title:"title",description:"description",default:"initialValue",readOnly:"readOnly",writeOnly:"editable",enum:"dataSource","x-pattern":"pattern","x-display":"display","x-validator":"validator","x-decorator":"decorator","x-component":"component","x-reactions":"reactions","x-content":"content","x-visible":"visible","x-hidden":"hidden","x-disabled":"disabled","x-editable":"editable","x-read-only":"readOnly","x-decorator-props":"decoratorProps","x-component-props":"componentProps","x-data":"data"};Object.keys(t).forEach(r=>{this.current[r]=t[r],o[r]&&this.updateModel(o[r],t[r])}),this.emit("patch",{schema:t})}updateModel(t,o){const r=i=>{(0,import_set.default)(i,t,o)};this.model&&r(this.model),this.query&&this.query.take(r)}insertAdjacent(t,o,r={}){switch(t){case"beforeBegin":return this.insertBeforeBegin(o,r);case"afterBegin":return this.insertAfterBegin(o,r);case"beforeEnd":return this.insertBeforeEnd(o,r);case"afterEnd":return this.insertAfterEnd(o,r)}}recursiveRemoveIfNoChildren(t,o){if(!t)return;let r=t,i;const n=o==null?void 0:o.breakRemoveOn;for(;r;){if(typeof n=="function"){if(n(r))break}else if(matchSchema(r,n))break;if(Object.keys(r.properties||{}).length>0)break;r.parent&&(i=r.parent.removeProperty(r.name)),r=r.parent}return i}remove(t,o={}){const{breakRemoveOn:r,removeParentsIfNoChildren:i}=o,n=t||this.current;let l=n.parent.removeProperty(n.name);if(i){const a=this.recursiveRemoveIfNoChildren(n.parent,{breakRemoveOn:r});a&&(l=a)}return this.emit("remove",{removed:l})}removeWithoutEmit(t,o={}){const{breakRemoveOn:r,removeParentsIfNoChildren:i}=o,n=t||this.current;let l=n.parent.removeProperty(n.name);if(i){const a=this.recursiveRemoveIfNoChildren(n.parent,{breakRemoveOn:r});a&&(l=a)}return l}insertBeforeBeginOrAfterEnd(t,o={}){if(!import_react.Schema.isSchemaInstance(this.current)||!import_react.Schema.isSchemaInstance(t)||this.current.parent!==t.parent)return;let r=0,i=0;return this.current.parent.mapProperties((n,l,a)=>{this.current.name===l&&(i=a),t.name===l&&(r=a)}),r>i?this.insertBeforeBegin(t,o):this.insertAfterEnd(t,o)}insertBeforeBegin(t,o={}){if(!import_react.Schema.isSchemaInstance(this.current))return;const r={onSuccess:o.onSuccess},{wrap:i=defaultWrap,breakRemoveOn:n,removeParentsIfNoChildren:l}=o;if(import_react.Schema.isSchemaInstance(t)){if(this.parentsIn(t)){this.emit("error",{code:"parent_is_not_allowed",schema:t});return}t.parent.removeProperty(t.name),l&&(r.removed=this.recursiveRemoveIfNoChildren(t.parent,{breakRemoveOn:n}))}else t&&(t=(0,import_cloneDeep.default)(t));const a={};let c=!1,u=0,d=0;this.current.parent.mapProperties((x,_)=>{_===this.current.name&&(d=u,c=!0,++u),x["x-index"]=u,++u,c&&(a[_]=x,this.current.parent.removeProperty(_))}),this.prepareProperty(t);const m=i(t),p=this.current.parent.addProperty(m.name||(0,import_shared.uid)(),m);p["x-index"]=d,p.parent=this.current.parent,this.current.parent.setProperties(a);const[h,g]=splitWrapSchema(p,t);this.emit("insertAdjacent",f({position:"beforeBegin",schema:g,wrapped:m,wrap:h},r))}insertAfterBegin(t,o={}){if(!import_react.Schema.isSchemaInstance(this.current))return;const r={onSuccess:o.onSuccess},{wrap:i=defaultWrap,breakRemoveOn:n,removeParentsIfNoChildren:l}=o;if(import_react.Schema.isSchemaInstance(t)){if(this.parentsIn(t)){this.emit("error",{code:"parent_is_not_allowed",schema:t});return}t.parent.removeProperty(t.name),l&&(r.removed=this.recursiveRemoveIfNoChildren(t.parent,{breakRemoveOn:n}))}else t&&(t=(0,import_cloneDeep.default)(t));const a={};let c=1;this.current.mapProperties((h,g)=>{h["x-index"]=c,++c,a[g]=h}),this.current.properties={},this.prepareProperty(t);const u=i(t),d=this.current.addProperty(u.name||(0,import_shared.uid)(),u);d["x-index"]=0,d.parent=this.current,this.current.setProperties(a);const[m,p]=splitWrapSchema(d,t);this.emit("insertAdjacent",f({position:"afterBegin",schema:p,wrap:m,wrapped:u},r))}insertBeforeEnd(t,o={}){if(!import_react.Schema.isSchemaInstance(this.current))return;delete t["x-index"];const r={onSuccess:o.onSuccess},{wrap:i=defaultWrap,breakRemoveOn:n,removeParentsIfNoChildren:l}=o;if(import_react.Schema.isSchemaInstance(t)){if(this.parentsIn(t)){this.emit("error",{code:"parent_is_not_allowed",schema:t});return}t.parent.removeProperty(t.name),l&&(r.removed=this.recursiveRemoveIfNoChildren(t.parent,{breakRemoveOn:n}))}else t&&(t=(0,import_cloneDeep.default)(t));this.prepareProperty(t);const a=i(t),c=this.current.addProperty(a.name||(0,import_shared.uid)(),a);c.parent=this.current;const[u,d]=splitWrapSchema(c,t);return this.emit("insertAdjacent",f({position:"beforeEnd",schema:d,wrap:u,wrapped:a},r))}insertAfterEnd(t,o={}){if(!import_react.Schema.isSchemaInstance(this.current))return;const r={onSuccess:o==null?void 0:o.onSuccess},{wrap:i=defaultWrap,breakRemoveOn:n,removeParentsIfNoChildren:l}=o;let a=0,c=0,u=!1;const d={};if(this.current.parent.mapProperties((x,_)=>{x["x-index"]=a,_===this.current.name&&(++a,c=a,u=!0),++a,u&&_!==this.current.name&&(d[_]=x,this.current.parent.removeProperty(_))}),import_react.Schema.isSchemaInstance(t)){if(this.parentsIn(t)){this.emit("error",{code:"parent_is_not_allowed",schema:t});return}t.parent.removeProperty(t.name),l&&(r.removed=this.recursiveRemoveIfNoChildren(t.parent,{breakRemoveOn:n})),t.parent=null}else t&&(t=(0,import_cloneDeep.default)(t));this.prepareProperty(t);const m=i(t),p=this.current.parent.addProperty(m.name||(0,import_shared.uid)(),m);p.parent=this.current.parent,p["x-index"]=c,this.current.parent.setProperties(d);const[h,g]=splitWrapSchema(p,t);this.emit("insertAdjacent",f({position:"afterEnd",schema:g,wrap:h,wrapped:m},r))}}function useFindComponent(){const e=(0,import_react2.useContext)(import_react.SchemaOptionsContext),t=(0,import_react2.useMemo)(()=>(e==null?void 0:e.components)||{},[e]);return o=>{if(!o)return null;if(typeof o!="string")return o;const r=(0,import_get.default)(t,o);return r||console.error(`[nocobase]: Component "${o}" not found`),r}}function useDesignable(){const{designable:e,setDesignable:t,refresh:o,reset:r}=(0,import_react2.useContext)(SchemaComponentContext),i=(0,import_react2.useContext)(import_react.SchemaOptionsContext),n=(0,import_react2.useMemo)(()=>(i==null?void 0:i.components)||{},[i]),l=(0,import_react2.useMemo)(()=>()=>(0,import_jsx_runtime.jsx)(import_jsx_runtime.Fragment,{}),[]),a=(0,import_ahooks.useUpdate)(),c=useRefreshFieldSchema(),u=useRefreshComponent(),d=(0,import_react2.useCallback)(v=>{o==null||o(),a(),c==null||c(v),u==null||u()},[o,a,c,u]),m=(0,import_react.useField)(),p=(0,import_react.useFieldSchema)(),h=useAPIClient(),{t:g}=(0,import_react_i18next.useTranslation)(),x=(0,import_react2.useMemo)(()=>createDesignable({t:g,api:h,refresh:d,current:p,model:m,appVersion:clientPkg.version}),[g,h,d,p,m]);(0,import_react2.useEffect)(()=>{x.loadAPIClientEvents()},[x]);const{isMobileLayout:_}=useMobileLayout();return{dn:x,designable:_?!1:e,reset:r,refresh:d,setDesignable:t,DesignableBar:l,findComponent:(0,import_react2.useCallback)(v=>{var C;if(!v)return null;if(typeof v!="string")return v;const y=(0,import_get.default)(n,v);return(C=y==null?void 0:y[LAZY_COMPONENT_KEY])!=null?C:y},[import_get.default]),on:x.on.bind(x),patch:(0,import_react2.useCallback)((v,C)=>{const y=b=>{Object.keys(b).forEach(S=>{const F=b[S];S==="title"&&(m.title=F,p.title=F),S==="x-decorator-props"&&(m.decoratorProps||(m.decoratorProps={}),p["x-decorator-props"]||(p["x-decorator-props"]={}),Object.keys(F).forEach(j=>{m.decoratorProps[j]=F[j],p["x-decorator-props"][j]=F[j]})),S==="x-component-props"&&(m.componentProps||(m.componentProps={}),p["x-component-props"]||(p["x-component-props"]={}),Object.keys(F).forEach(j=>{m.componentProps[j]=F[j],p["x-component-props"][j]=F[j]}))})};if(typeof v=="string"){const b={};return(0,import_set.default)(b,v,C),y(b)}y(v),d()},[x]),shallowMerge:(0,import_react2.useCallback)(v=>{x.shallowMerge(v)},[x]),deepMerge:(0,import_react2.useCallback)(v=>{x.deepMerge(v)},[x]),remove:(0,import_react2.useCallback)((v,C)=>{x.remove(v,C)},[x]),insertAdjacent:(0,import_react2.useCallback)((v,C,y)=>{x.insertAdjacent(v,C,y)},[x]),insertBeforeBegin:(0,import_react2.useCallback)(v=>{x.insertBeforeBegin(v)},[x]),insertAfterBegin:(0,import_react2.useCallback)(v=>{x.insertAfterBegin(v)},[x]),insertBeforeEnd:(0,import_react2.useCallback)(v=>{x.insertBeforeEnd(v)},[x]),insertAfterEnd:(0,import_react2.useCallback)(v=>{x.insertAfterEnd(v)},[x])}}const DefaultSchemaToolbar=()=>null;DefaultSchemaToolbar.isNullComponent=!0;const useDesigner=()=>{const{designable:e}=useDesignable(),t=(0,import_react.useFieldSchema)(),o=(0,import_react2.useMemo)(()=>t["x-designer"]||t["x-toolbar"]?t["x-designer"]||t["x-toolbar"]:t["x-settings"]?SchemaToolbar:DefaultSchemaToolbar,[t]),r=useComponent(o);return e&&r||DefaultSchemaToolbar},useFieldProps$1=e=>{const t=(0,import_react2.useContext)(import_react.SchemaOptionsContext),o=(0,import_react2.useContext)(import_react.SchemaExpressionScopeContext),r=(0,import_react2.useRef)();return r.current=o,e.toFieldProps(I(f({},t),{get scope(){return f(f({},t.scope),r.current)}}))};function useSchemaComponentContext(){return(0,import_react2.useContext)(SchemaComponentContext)}const useFieldComponentOptions=()=>{var e;const{getCollectionJoinField:t,getCollection:o}=useCollectionManager_deprecated(),r=(0,import_react.useFieldSchema)(),{getField:i}=useCollection_deprecated(),n=i(r.name)||t(r["x-collection-field"]),{t:l}=(0,import_react_i18next.useTranslation)(),{label:a}=((e=r["x-component-props"])==null?void 0:e.fieldNames)||{};return(0,import_react2.useMemo)(()=>{if(!n||!(n!=null&&n.interface)||!["o2o","oho","obo","o2m","linkTo","m2o","m2m"].includes(n.interface))return;const c=o(n.target);if((c==null?void 0:c.template)==="file")return[{label:l("Record picker"),value:"CollectionField"},{label:l("Select"),value:"AssociationSelect"}];switch(n.interface){case"o2m":return[{label:l("Record picker"),value:"CollectionField"},{label:l("Subtable"),value:"TableField"},{label:l("Select"),value:"AssociationSelect"}];case"m2o":case"m2m":case"linkTo":return[{label:l("Record picker"),value:"CollectionField"},{label:l("Select"),value:"AssociationSelect"}];default:return[{label:l("Record picker"),value:"CollectionField"},{label:l("Subform"),value:"FormField"},{label:l("Select"),value:"AssociationSelect"}]}},[l,n==null?void 0:n.interface,a])},useFieldTitle=()=>{var e;const t=(0,import_react.useField)(),o=(0,import_react.useFieldSchema)(),r=useCollection(),i=useCollectionManager(),n=(r==null?void 0:r.getField(o.name))||(i==null?void 0:i.getCollectionField(o["x-collection-field"])),l=useCompile();(0,import_react2.useEffect)(()=>{var a;t!=null&&t.title||(t.title=l((a=n==null?void 0:n.uiSchema)==null?void 0:a.title))},[(e=n==null?void 0:n.uiSchema)==null?void 0:e.title])},useDef$4=()=>({}),useProps=(e={})=>{const t=e,{useProps:o=useDef$4}=t,r=W(t,["useProps"]);let i=o;typeof o!="function"&&(i=useDef$4);const n=i();return f(f({},r),n)};function useParsedFilter({filterOption:e,onFilterChange:t}){const{parseFilter:o,findVariable:r}=useParseDataScopeFilter(),[i,n]=(0,import_react2.useState)({}),[l,a]=(0,import_react2.useState)(!!e);return(0,import_react2.useEffect)(()=>{if(!e)return;const c=()=>E(this,null,function*(){a(!0);const d=yield o(e);a(!1),n(d),t==null||t(d)});c();const u=import_lodash.default.debounce(c,DEBOUNCE_WAIT);(0,import_reactive.reaction)(()=>(0,import_client.flatten)(e,{breakOn({key:d}){return d.startsWith("$")&&d!=="$and"&&d!=="$or"},transformValue(d){if(!isVariable$1(d))return d;const m=getVariableName(d),p=r(m);let h=null;const g=getPath(d).split(".");return g.forEach((x,_)=>{const v=g.slice(0,_+1).join("."),C=(0,import_client.getValuesByPath)({[m]:(p==null?void 0:p.ctx)||{}},v);import_lodash.default.isEmpty(C)||(h=C)}),h}}),u,{equals:import_lodash.default.isEqual})},[JSON.stringify(e),o,r]),{filter:i,parseVariableLoading:l}}const useParentRecordCommon=e=>{const t=useCollectionRecordData();if(e)return t},useTableBlockDecoratorProps=e=>{var t;const{params:o,parseVariableLoading:r}=useTableBlockParams(e),i=useParentRecordCommon(e.association),n=(t=useDataSourceManager().getDataSource(e.dataSource))==null?void 0:t.collectionManager.getCollection(e.collection);return{params:o,parentRecord:i,parseVariableLoading:r,rowKey:(n==null?void 0:n.filterTargetKey)||"id"}};function useTableBlockParams(e){var t;const o=(0,import_react.useFieldSchema)(),{filter:r,parseVariableLoading:i}=useParsedFilter({filterOption:(t=e.params)==null?void 0:t.filter});return{params:(0,import_react2.useMemo)(()=>{const n=e.params||{},{dragSortBy:l}=(o==null?void 0:o["x-decorator-props"])||{};return e.dragSort&&l&&(n.sort=l),I(f({},n),{filter:r})},[o,r,e.dragSort,e.params]),parseVariableLoading:i}}const key="__isNewRecord__",isNewRecord=e=>(0,import_reactive.untracked)(()=>!!(e!=null&&e[key])),markRecordAsNew=e=>{if(!(0,import_lodash.isObject)(e))throw new Error("markRecordAsNew: record must be an object");return e[key]=!0,e},useDefaultLoading=()=>{var e;return!!((e=useDataBlockRequest())!=null&&e.loading)},withSkeletonComponent=(e,t)=>{const{useLoading:o=useDefaultLoading,displayName:r,SkeletonComponent:i=import_antd.Skeleton}=t||{},n=import_react2.default.memo(l=>{const a=o(),c=(0,import_react2.useRef)(!1),u=(0,import_react2.useDeferredValue)(a);return!c.current&&u?(0,import_jsx_runtime.jsx)(i,{}):(c.current=!0,(0,import_jsx_runtime.jsx)(e,f({},l)))});return n.displayName=r||`${e.displayName}(withSkeletonComponent)`||`${e.name}(withSkeletonComponent)`,n},getActionValue=(e,t)=>{const o=r=>(r==null?void 0:r.mode)==="constant"?r.value:null;switch(!0){case[ActionType.Color,ActionType.BackgroundColor,ActionType.TextAlign,ActionType.FontSize,ActionType.FontWeight,ActionType.FontStyle].includes(e):return o(t);default:return null}},getSatisfiedActions=(e,t)=>E(void 0,[e,t],function*({rules:o,variables:r,localVariables:i},n){return(yield Promise.all(o.filter(l=>!l.disabled).map(l=>E(void 0,null,function*(){return(yield conditionAnalyses({ruleGroup:l.condition,variables:r,localVariables:i,conditionType:l.conditionType},n))?l:null})))).filter(Boolean).map(l=>l.actions).flat()}),getSatisfiedValues=(e,t)=>E(void 0,[e,t],function*({rules:o,variables:r,localVariables:i},n){return(yield getSatisfiedActions({rules:o,variables:r,localVariables:i},n)).map(l=>I(f({},l),{value:getActionValue(l.operator,l.value)}))}),getSatisfiedValueMap=(e,t)=>E(void 0,[e,t],function*({rules:o,variables:r,localVariables:i},n){return(yield getSatisfiedValues({rules:o,variables:r,localVariables:i},n)).reduce((l,a)=>I(f({},l),{[a.operator]:a.value}),{})});function useSatisfiedActionValues({formValues:e,category:t="default",rules:o,schema:r,form:i}){const[n,l]=(0,import_react2.useState)({}),a=(0,import_react.useFieldSchema)(),c=useVariables$1(),u=useLocalVariables$1({currentForm:{values:e}}),d=r??a,m=o??(d[LinkageRuleDataKeyMap[t]]||(d==null?void 0:d.parent[LinkageRuleDataKeyMap[t]])),p=useApp(),h=(0,import_react2.useCallback)(()=>{m&&e&&getSatisfiedValueMap({rules:m,variables:c,localVariables:u},p.jsonLogic).then(g=>{(0,import_lodash.isEmpty)(g)?l({}):l(g)}).catch(g=>{throw new Error(g.message)})},[c,u,m,e]);return(0,import_react2.useEffect)(()=>{if(h(),i){const g=(0,import_shared.uid)();return i.addEffects(g,()=>{(0,import_core.onFormValuesChange)(()=>{h()})}),()=>{i.removeEffects(g)}}},[i,h,e]),{valueMap:n}}const GetStyleRules=import_react2.default.memo(({record:e,schema:t,onStyleChange:o})=>{const{valueMap:r}=useSatisfiedActionValues({formValues:e,category:"style",schema:t});return(0,import_react2.useEffect)(()=>{o(r)},[o,r]),null});GetStyleRules.displayName="GetStyleRules";const opacityStyle={opacity:.5},containerStyle={position:"relative"},spinStyle={display:"flex",alignItems:"center",justifyContent:"center",position:"absolute",left:0,right:0,height:"100%",maxHeight:400,zIndex:1e3},displayNone$3={display:"none"},HighPerformanceSpin=import_react2.default.memo(e=>(0,import_jsx_runtime.jsxs)("div",{style:containerStyle,children:[(0,import_jsx_runtime.jsx)(import_antd.Spin,I(f({},import_lodash.default.omit(e,"children")),{style:e.spinning?spinStyle:displayNone$3})),(0,import_jsx_runtime.jsx)("div",{style:e.spinning?opacityStyle:null,children:e.children})]}));var FilterBlockType=(e=>(e[e.FORM=0]="FORM",e[e.TABLE=1]="TABLE",e[e.TREE=2]="TREE",e[e.COLLAPSE=3]="COLLAPSE",e))(FilterBlockType||{});const mergeFilter=(e,t="$and")=>{const o=e.filter(r=>{if(r&&typeof r=="object"&&!Array.isArray(r))return Object.values(r).filter(i=>i!==void 0).length});return o.length===0?{}:o.length===1?o[0]:{[t]:o}},getSupportFieldsByAssociation=(e,t)=>{var o;return(o=t.associatedFields)==null?void 0:o.filter(r=>e==null?void 0:e.some(i=>i===r.target))},getSupportFieldsByForeignKey=(e,t)=>{var o;return(o=t.foreignKeyFields)==null?void 0:o.filter(r=>e.fields.some(i=>i.type!=="belongsTo"&&i.foreignKey===r.name&&i.target===r.collectionName))},useSupportedBlocks=e=>{const{getDataBlocks:t}=useFilterBlock(),o=(0,import_react.useFieldSchema)(),r=useCollection(),{getAllCollectionsInheritChain:i}=useAllCollectionsInheritChainGetter();if(e===0||e===3)return t().filter(n=>isSameCollection(n.collection,r));if(e===1||e===2)return t().filter(n=>{var l,a;return o["x-uid"]!==n.uid&&(isSameCollection(n.collection,r)||((l=getSupportFieldsByAssociation(i(r.name,r.dataSource),n))==null?void 0:l.length)||((a=getSupportFieldsByForeignKey(r,n))==null?void 0:a.length))})},transformToFilter=(e,t,o,r)=>(e=(0,import_client.flatten)(e,{breakOn({value:i,path:n}){if(["$match","$notMatch","$anyOf","$noneOf","$childIn","$childNotIn","$dateBetween","$in","$notIn"].includes(t[n]))return!0;const l=o(`${r}.${n}`);if(["datetime","datetimeNoTz","date","unixTimestamp","createdAt","updatedAt"].includes(l==null?void 0:l.interface))return!0;if(l!=null&&l.target){if(Array.isArray(i))return!0;const a=l.targetKey||"id";if(i&&i[a]!=null)return!0}return!1}}),{$and:Object.keys(e).map(i=>{let n=import_lodash.default.get(e,i);const l=o(`${r}.${i}`);return l!=null&&l.target&&["hasOne","hasMany","belongsTo","belongsToMany","belongsToArray"].includes(l.type)&&(n=(0,import_client.getValuesByPath)(n,l.targetKey||"id"),i=`${i}.${l.targetKey||"id"}`,(l==null?void 0:l.interface)==="chinaRegion"&&(n=import_lodash.default.last(n))),!n&&n!==0&&n!==!1?null:{[i]:{[t[i]||"$eq"]:n}}}).filter(Boolean)}),useAssociatedFields=()=>{var e;return((e=useCollection())==null?void 0:e.fields.filter(t=>isAssocField(t)))||[]},isAssocField=e=>["o2o","oho","obo","m2o","createdBy","updatedBy","o2m","m2m","linkTo","chinaRegion","mbm"].includes(e==null?void 0:e.interface),isSameCollection=(e,t)=>e.name===t.name&&e.dataSource===t.dataSource,useFilterAPI=()=>{const e=(0,import_react.useFieldSchema)(),{getDataBlocks:t}=useFilterBlock(),{targets:o,uid:r}=findFilterTargets(e),i=t(),[n,l]=(0,import_react2.useState)(()=>o&&o.some(u=>i.some(d=>d.uid===u.uid))),a=Object.keys(o||{});(0,import_react2.useEffect)(()=>{l(o&&o.some(u=>i.some(d=>d.uid===u.uid)))},[a.length,o,i]);const c=(0,import_react2.useCallback)((u,d="id",m="$eq")=>{const p=i.find(h=>h.uid===e.parent["x-uid"]);i.forEach(h=>{var g,x,_,v;let C=d;const y=o.find(j=>j.uid===h.uid);if(!y)return;import_lodash.default.isFunction(u)&&(u=u(y,h,getSourceKey$1(p,y.field))),import_lodash.default.isFunction(d)&&(C=d(y,h)),import_lodash.default.isFunction(m)&&(m=m(y));const b=((g=h.service.params)==null?void 0:g[0])||{},S=((_=(x=h.service.params)==null?void 0:x[1])==null?void 0:_.filters)||{};if(u!=null)S[r]={$and:[{[C]:{[m]:u}}]};else if((v=h.clearSelection)==null||v.call(h),delete S[r],h.dataLoadingMode==="manual")return h.clearData();const F=mergeFilter([...Object.values(S).map(j=>removeNullCondition(j)),h.defaultFilter]);h.doFilter(I(f({},b),{page:1,filter:F}),{filters:S})})},[i,o,r,e]);return{isConnected:n,doFilter:c}},isInFilterFormBlock=e=>{for(;e;){if(e["x-filter-targets"])return e["x-decorator"]==="FilterFormBlockProvider";e=e.parent}return!1};function getSourceKey$1(e,t){var o,r,i;const n=(o=e==null?void 0:e.associatedFields)==null?void 0:o.find(l=>l.foreignKey===t);return(n==null?void 0:n.sourceKey)||((i=(r=t==null?void 0:t.split)==null?void 0:r.call(t,"."))==null?void 0:i[1])}const AssociationFieldContext=(0,import_react2.createContext)({});AssociationFieldContext.displayName="AssociationFieldContext";const useInsertSchema$1=e=>{const t=(0,import_react.useFieldSchema)(),{insertAfterBegin:o}=useDesignable(),{isMobileLayout:r}=useMobileLayout();return(0,import_react2.useCallback)(i=>{r||t.reduceProperties((n,l)=>l["x-component"]==="AssociationField."+e?l:n,null)||o((0,import_cloneDeep.default)(i))},[e,t,o,r])};function useAssociationFieldContext(){return(0,import_react2.useContext)(AssociationFieldContext)}function useServiceOptions$1(e){var t,o,r,i,n,l,a,c,u,d;const{action:m="list",service:p,useOriginalFilter:h}=e,g=(0,import_react.useFieldSchema)(),x=(0,import_react.useField)(),{getField:_}=useCollection_deprecated(),{getCollectionJoinField:v}=useCollectionManager_deprecated(),C=useRecord(),{isNew:y}=useCollectionRecord()||{},b=((0,import_lodash.isString)((r=(o=(t=g==null?void 0:g["x-component-props"])==null?void 0:t.service)==null?void 0:o.params)==null?void 0:r.filter)?(l=(n=(i=x.componentProps)==null?void 0:i.service)==null?void 0:n.params)==null?void 0:l.filter:(u=(c=(a=g==null?void 0:g["x-component-props"])==null?void 0:a.service)==null?void 0:c.params)==null?void 0:u.filter)||((d=p==null?void 0:p.params)==null?void 0:d.filter),{filter:S}=useParsedFilter({filterOption:b,onFilterChange:()=>{y&&x.reset()}}),F=(0,import_react2.useMemo)(()=>_(g.name)||v(g==null?void 0:g["x-collection-field"]),[g]),j=C==null?void 0:C[F==null?void 0:F.sourceKey],P=(0,import_react2.useMemo)(()=>{const T=["oho","o2m"].includes(F==null?void 0:F.interface);return mergeFilter([mergeFilter([T&&!isInFilterFormBlock(g)&&F!=null&&F.foreignKey&&!h?{[F.foreignKey]:{$is:null}}:null,S]),T&&j!==void 0&&j!==null&&!isInFilterFormBlock(g)&&F!=null&&F.foreignKey&&!h?{[F.foreignKey]:{$eq:j}}:null],"$or")},[F==null?void 0:F.interface,F==null?void 0:F.foreignKey,g,S,j,h]);return(0,import_react2.useMemo)(()=>I(f({resource:F==null?void 0:F.target,action:m},p),{params:I(f({},p==null?void 0:p.params),{filter:P})}),[F==null?void 0:F.target,m,P,p])}const useFieldNames$1=(e={})=>{var t,o,r,i,n;const l=(0,import_react.useFieldSchema)(),a=((i=(r=(o=(t=l["x-component-props"])==null?void 0:t.field)==null?void 0:o.uiSchema)==null?void 0:r["x-component-props"])==null?void 0:i.fieldNames)||((n=l["x-component-props"])==null?void 0:n.fieldNames)||e.fieldNames;return f({label:"label",value:"value"},a)},SubFormContext=(0,import_react2.createContext)(null);SubFormContext.displayName="SubFormContext";const SubFormProvider=e=>{const t=(0,import_react2.useContext)(SubFormContext),{value:o,collection:r,fieldSchema:i,parent:n,skip:l}=e.value,a=(0,import_react2.useMemo)(()=>import_lodash.default.omitBy({value:o,collection:r,fieldSchema:i,skip:l,parent:n||(t!=null&&t.skip?t.parent:t)},import_lodash.default.isUndefined),[o,r,i,l,n,t]);return(0,import_jsx_runtime.jsx)(SubFormContext.Provider,{value:a,children:e.children})},useSubFormValue=()=>{const{value:e,collection:t,fieldSchema:o,parent:r}=(0,import_react2.useContext)(SubFormContext)||{};return{formValue:e,collection:t,fieldSchema:o,parent:r}},useColumnSettings=e=>{const{t}=(0,import_react_i18next.useTranslation)(),o=`nocobase_table_column_settings_${e}`,r=(0,import_react2.useCallback)(()=>{try{const l=localStorage.getItem(o);return l?JSON.parse(l):null}catch(l){return console.warn("Failed to parse table column settings from localStorage:",l),null}},[o]),i=(0,import_react2.useCallback)(l=>{try{const a=JSON.stringify(l);localStorage.setItem(o,a);const c=new CustomEvent("nocobase-table-settings-changed",{detail:{key:o,tableId:e,settings:l}});window.dispatchEvent(c)}catch(a){console.warn("Failed to save table column settings to localStorage:",a),import_antd.message.error(t("Failed to save table settings"))}},[o,e,t]),n=(0,import_react2.useCallback)(()=>{try{localStorage.removeItem(o);const l=new CustomEvent("nocobase-table-settings-changed",{detail:{key:o,tableId:e,settings:null}});window.dispatchEvent(l)}catch(l){console.warn("Failed to clear table column settings from localStorage:",l),import_antd.message.error(t("Failed to clear table settings"))}},[o,e,t]);return{getSettings:r,saveSettings:i,clearSettings:n}},useTableColumnIntegration=(e,t=!0)=>{const o=(0,import_react.useFieldSchema)(),r=(o==null?void 0:o["x-uid"])||"default",{getSettings:i}=useColumnSettings(r),[n,l]=(0,import_react2.useState)(0);(0,import_react2.useEffect)(()=>{const c=u=>{const{key:d,tableId:m}=u.detail;(d.includes(r)||m===r)&&l(p=>p+1)};return window.addEventListener("nocobase-table-settings-changed",c),()=>{window.removeEventListener("nocobase-table-settings-changed",c)}},[r]);const a=(0,import_react2.useMemo)(()=>i(),[i,n]);return{columns:(0,import_react2.useMemo)(()=>{if(!t||!a||a.length===0)return e;const c=new Map;a.forEach(h=>{c.set(h.key,h)});const u=e.map(h=>{const g=c.get(h.key);if(g){const x=h.columnHidden||!g.visible,_=g.width||h.width,v=g.fixed||h.fixed;return I(f({},h),{columnHidden:x,fixed:v,width:_,_orderIndex:g.order})}return h}),d=[],m=[];u.forEach(h=>{h._orderIndex!==void 0?d.push(h):m.push(h)}),d.sort((h,g)=>(h._orderIndex||0)-(g._orderIndex||0));const p=[...d,...m];return p.forEach(h=>{delete h._orderIndex}),p},[e,a])}},TableSkeleton=({rows:e=5,columns:t=6})=>{const{token:o}=useToken$1(),r=o.controlHeight*2.06,i=o.controlHeight*1.75,n=(0,import_react2.useMemo)(()=>import_css.css`
|
|
65
|
+
`,items:a},n))})},SchemaInitializerSubMenu=e=>{var t;const o=e,{children:r,items:i,title:n,name:l,onOpenChange:a,icon:c}=o,u=W(o,["children","items","title","name","onOpenChange","icon"]),d=useCompile(),m=useSchemaInitializerItem(),p=(0,import_react2.useMemo)(()=>l||(m==null?void 0:m.name)||(0,import_shared.uid)(),[l,m]),h=(t=i||r)==null?void 0:t.filter(_=>_.useVisible?_.useVisible():!0),g=useSchemaInitializerMenuItems(h,l),x=(0,import_react2.useMemo)(()=>[I(f({},u),{key:p,label:d(n),icon:typeof c=="string"?(0,import_jsx_runtime.jsx)(import_icons.default,{type:c}):c,children:g})],[g,d,c,p,u,n]);return(0,import_jsx_runtime.jsx)(SchemaInitializerMenu,{onOpenChange:a,items:x})},SchemaInitializerSubMenuInternal=()=>{const e=useSchemaInitializerItem();return(0,import_jsx_runtime.jsx)(SchemaInitializerSubMenu,f({},e))},useAriaAttributeOfMenuItem=()=>{const{isInMenu:e}=useSchemaInitializerSubMenuContext();return{attribute:(0,import_react2.useMemo)(()=>e?{}:{role:"menuitem"},[e])}},{Paragraph:Paragraph$1,Text:Text$2}=import_antd.Typography,ErrorFallbackModal=e=>{const[t,o]=import_react2.default.useState(!1),r=(0,import_jsx_runtime.jsx)(Paragraph$1,{style:{display:"flex",marginBottom:0},copyable:{text:e.error.message},children:(0,import_jsx_runtime.jsxs)(Text$2,{type:"danger",style:{whiteSpace:"nowrap",textOverflow:"ellipsis",overflow:"hidden",display:"inline-block",maxWidth:"200px"},children:["Error: ",e.error.message]})});return(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsx)("div",{onMouseOver:()=>o(!0),children:e.children||r}),(0,import_jsx_runtime.jsx)(import_antd.Modal,{zIndex:1e4,open:t,footer:null,onCancel:()=>o(!1),width:"60%",children:(0,import_jsx_runtime.jsx)(ErrorFallback,f({},e))})]})},{Paragraph,Text:Text$1,Link}=import_antd.Typography,useDownloadLogs=(e,t={})=>{const o=useLocationNoUpdate(),[r,i]=import_react2.default.useState(!1),n=useAPIClient();return{loading:r,download:()=>E(void 0,null,function*(){i(!0);try{const l=yield n.request({url:"logger:collect",method:"post",responseType:"blob",data:f({error:{message:e.message,stack:e.stack},location:o},t)}),a=window.URL.createObjectURL(new Blob([l.data],{type:"application/gzip"})),c=document.createElement("a");c.setAttribute("href",a),c.setAttribute("download","logs.tar.gz"),c.click(),c.remove()}catch(l){console.log(l)}i(!1)})}},ErrorFallback=({error:e})=>{const t=(0,import_react.useFieldSchema)(),{t:o}=(0,import_react_i18next.useTranslation)(),{loading:r,download:i}=useDownloadLogs(e,{schema:t}),n=(0,import_jsx_runtime.jsxs)(import_react_i18next.Trans,{children:["This is likely a NocoBase internals bug. Please open an issue at ",(0,import_jsx_runtime.jsx)(Link,{href:"https://github.com/nocobase/nocobase/issues",target:"_blank",children:"here"})]});return(0,import_jsx_runtime.jsx)("div",{style:{backgroundColor:"white"},children:(0,import_jsx_runtime.jsx)(import_antd.Result,{style:{maxWidth:"60vw",margin:"auto"},status:"error",title:o("Render Failed"),subTitle:n,extra:[(0,import_jsx_runtime.jsx)(import_antd.Button,{type:"primary",href:"https://github.com/nocobase/nocobase/issues",target:"_blank",children:o("Feedback")},"feedback"),(0,import_jsx_runtime.jsx)(import_antd.Button,{loading:r,onClick:i,children:o("Download logs")},"log")],children:(0,import_jsx_runtime.jsx)(Paragraph,{copyable:{text:e.stack},children:(0,import_jsx_runtime.jsx)(Text$1,{type:"danger",style:{whiteSpace:"pre-line",textAlign:"center"},children:e.stack})})})})};ErrorFallback.Modal=ErrorFallbackModal;const AppNotFound=()=>{const e=(0,import_react_router_dom.useNavigate)(),{t}=(0,import_react_i18next.useTranslation)();return(0,import_jsx_runtime.jsx)(import_antd.Result,{status:"404",title:"404",subTitle:t("Sorry, the page you visited does not exist."),extra:(0,import_jsx_runtime.jsx)(import_antd.Button,{onClick:()=>e("/",{replace:!0}),type:"primary",children:"Back Home"})})};class Plugin{constructor(t,o){this.options=t,this.app=o,this.options=t,this.app=o}get pluginManager(){return this.app.pluginManager}get context(){return this.app.context}get flowEngine(){return this.app.flowEngine}get engine(){return this.app.flowEngine}get pm(){return this.app.pm}get router(){return this.app.router}get pluginSettingsManager(){return this.app.pluginSettingsManager}get pluginSettingsRouter(){return this.app.pluginSettingsManager}get schemaInitializerManager(){return this.app.schemaInitializerManager}get schemaSettingsManager(){return this.app.schemaSettingsManager}get dataSourceManager(){return this.app.dataSourceManager}afterAdd(){return E(this,null,function*(){})}beforeLoad(){return E(this,null,function*(){})}load(){return E(this,null,function*(){})}t(t,o={}){var r;return this.app.i18n.t(t,f({ns:(r=this.options)==null?void 0:r.packageName},o))}}const titleWrapperStyle={display:"flex",alignItems:"center",gap:4},withTooltipComponent=e=>t=>{const{tooltip:o}=t;return o?(0,import_jsx_runtime.jsxs)("div",{style:titleWrapperStyle,children:[(0,import_jsx_runtime.jsx)(e,f({},t)),(0,import_jsx_runtime.jsx)(import_antd.Tooltip,{title:o,children:(0,import_jsx_runtime.jsx)(import_icons.QuestionCircleOutlined,{style:{zIndex:1}})})]}):(0,import_jsx_runtime.jsx)(e,f({},t))},{evaluate}=import_client4.evaluators.get("formula.js"),useEvaluatedExpression=e=>{const t=useVariables$1(),o=useLocalVariables$1(),[r,i]=(0,import_react2.useState)();return(0,import_react2.useEffect)(()=>{E(void 0,null,function*(){if(e==null||e===""){i(void 0);return}const{exp:n,scope:l}=yield replaceVariables(e,{variables:t,localVariables:o});try{const a=evaluate(n,f({now:()=>new Date().toString()},l));i(a)}catch(a){console.error(a)}})},[t.parseVariable,e,o]),r};class SchemaInitializer{constructor(t){k(this,"options"),k(this,"name"),this.options=Object.assign({items:[]},t),this.name=t.name}get items(){return this.options.items}add(t,o){const r=t.split("."),i=r[r.length-1],n=I(f({},o),{name:i}),l=(u,d)=>{const m=this.items.findIndex(p=>p.name===u);m===-1?this.items.push(d):this.items[m]=d};if(r.length===1){l(i,n);return}const a=r.slice(0,-1).join("."),c=this.get(a);if(c){c.children||(c.children=[]);const u=t.replace(`${c.name}.`,""),d=c.children.findIndex(m=>m.name===u);d===-1?c.children.push(n):c.children[d]=n}else l(i,n)}get(t){var o;if(!t)return;const r=t.split(".");let i={children:this.items};for(let n=0;n<r.length;n++){const l=r[n],a=(o=i.children)==null?void 0:o.find(c=>c.name===l);if(a&&(i=a),n===r.length-1)return a}}remove(t){const o=t.split(".");if(o.length===1){const i=this.items.findIndex(n=>n.name===o[0]);i!==-1&&this.items.splice(i,1);return}const r=this.get(o.slice(0,-1).join("."));if(r&&r.children){const i=o[o.length-1],n=r.children.findIndex(l=>l.name===i);n!==-1&&r.children.splice(n,1)}}}var NocoBaseDesktopRouteType=(e=>(e.group="group",e.page="page",e.flowRoute="flowRoute",e.link="link",e.tabs="tabs",e.flowPage="flowPage",e))(NocoBaseDesktopRouteType||{});const useStyles$h=genStyleHook("nb-menu-item",e=>{const{componentCls:t}=e;return{[t]:{paddingLeft:`${e.padding}px !important`,paddingRight:`${e.padding}px !important`}}}),useInsertFlowPageSchema=()=>{const e=useAPIClient();return(0,import_react2.useCallback)(t=>E(void 0,null,function*(){yield e.request({method:"POST",url:"/uiSchemas:insert",data:t})}),[e])},FlowPageMenuItem=()=>{const{t:e}=(0,import_react_i18next.useTranslation)(),t=(0,import_react2.useContext)(import_react.SchemaOptionsContext),{theme:o}=useGlobalTheme(),{componentCls:r,hashId:i}=useStyles$h(),n=useParentRoute(),{createRoute:l}=useNocoBaseRoutes(),a=useInsertFlowPageSchema(),c=(0,import_react2.useCallback)(()=>E(void 0,null,function*(){const u=yield FormDialog(e("Add page"),()=>(0,import_jsx_runtime.jsx)(SchemaComponentOptions,{scope:t.scope,components:f({},t.components),children:(0,import_jsx_runtime.jsx)(import_antd_v5.FormLayout,{layout:"vertical",children:(0,import_jsx_runtime.jsx)(zIndexContext.Provider,{value:ICON_POPUP_Z_INDEX,children:(0,import_jsx_runtime.jsx)(SchemaComponent,{schema:{properties:{title:{title:e("Menu item title"),required:!0,"x-component":"Input","x-decorator":"FormItem"},icon:{title:e("Icon"),"x-component":"IconPicker","x-decorator":"FormItem"}}}})})})}),o).open({initialValues:{}}),d=(0,import_shared.uid)(),m=(0,import_shared.uid)(),p=(0,import_shared.uid)(),h=(0,import_shared.uid)();yield l({type:NocoBaseDesktopRouteType.page,title:u.title,icon:u.icon,parentId:n==null?void 0:n.id,schemaUid:m,menuSchemaUid:d,enableTabs:!1,children:[{type:NocoBaseDesktopRouteType.tabs,schemaUid:p,tabSchemaName:h,hidden:!0}]}),a(getFlowPageMenuSchema({pageSchemaUid:m,tabSchemaUid:p,tabSchemaName:h}))}),[l,a,t==null?void 0:t.components,t==null?void 0:t.scope,n==null?void 0:n.id,e,o]);return(0,import_jsx_runtime.jsx)(SchemaInitializerItem,{title:e("Modern page (v2)"),onClick:c,className:`${r} ${i}`})};function getFlowPageMenuSchema({pageSchemaUid:e,tabSchemaUid:t,tabSchemaName:o}){return{type:"void","x-component":"FlowRoute","x-uid":e}}const GroupItem$1=()=>{const{t:e}=(0,import_react_i18next.useTranslation)(),t=(0,import_react2.useContext)(import_react.SchemaOptionsContext),{theme:o}=useGlobalTheme(),{componentCls:r,hashId:i}=useStyles$h(),n=useParentRoute(),{createRoute:l}=useNocoBaseRoutes(),a=(0,import_react2.useCallback)(()=>E(void 0,null,function*(){const c=yield FormDialog(e("Add group"),()=>(0,import_jsx_runtime.jsx)(SchemaComponentOptions,{scope:t.scope,components:f({},t.components),children:(0,import_jsx_runtime.jsx)(import_antd_v5.FormLayout,{layout:"vertical",children:(0,import_jsx_runtime.jsx)(zIndexContext.Provider,{value:ICON_POPUP_Z_INDEX,children:(0,import_jsx_runtime.jsx)(SchemaComponent,{schema:{properties:{title:{title:e("Menu item title"),"x-component":"Input","x-decorator":"FormItem",required:!0},icon:{title:e("Icon"),"x-component":"IconPicker","x-decorator":"FormItem"}}}})})})}),o).open({initialValues:{}}),{title:u,icon:d}=c,m=(0,import_shared.uid)();yield l({type:NocoBaseDesktopRouteType.group,title:u,icon:d,parentId:n==null?void 0:n.id,schemaUid:m})}),[t.components,t.scope,e,o]);return(0,import_jsx_runtime.jsx)(SchemaInitializerItem,{title:e("Group"),onClick:a,className:`${r} ${i}`})},useAttach=e=>{const t=(0,import_react2.useRef)(null);return(0,import_react2.useEffect)(()=>(t.current&&e!==t.current&&t.current.onUnmount(),t.current=e,e.onMount(),()=>{e.onUnmount()}),[e]),e},compileCache={},hasVariable=e=>/{{.*?}}/g.test(e),useCompile=({noCache:e}={noCache:!1})=>{const t=(0,import_react2.useContext)(import_react.SchemaOptionsContext),o=(0,import_react2.useContext)(import_react.SchemaExpressionScopeContext);return(r,i)=>{let n=!1,l;if(typeof r=="string"&&r.startsWith("{{")&&(n=!0,l=r),r&&typeof r=="object"&&!(0,import_react2.isValidElement)(r)){try{l=JSON.stringify(r)}catch(a){return console.warn("Failed to stringify:",a),r}if(compileCache[l])return compileCache[l];n=hasVariable(l)}if(Array.isArray(r)){try{l=JSON.stringify(r)}catch(a){return console.warn("Failed to stringify:",a),r}if(compileCache[l])return compileCache[l];n=hasVariable(l)}if(n){const a=f(f(f({},t==null?void 0:t.scope),o),i);if(!l)return import_react.Schema.compile(r,a);try{return e?import_react.Schema.compile(r,a):(compileCache[l]=compileCache[l]||import_react.Schema.compile(r,a),compileCache[l])}catch(c){return console.log("useCompile error",r,c),import_react.Schema.compile(r,a)}}return r}},useComponent=(e,t)=>{const{components:o}=(0,import_react2.useContext)(import_react.SchemaOptionsContext);return e?typeof e!="string"?e:(0,import_lodash.get)(o,e)||t:t},LAZY_COMPONENT_KEY=Symbol("LAZY_COMPONENT_KEY");function lazy(e,...t){if(t.length===0){const o=(0,import_react2.lazy)(()=>e().then(i=>{const n=i.default;return r[LAZY_COMPONENT_KEY]=n,{default:n}})),r=i=>(0,import_jsx_runtime.jsx)(import_react2.default.Suspense,{fallback:(0,import_jsx_runtime.jsx)(import_antd.Spin,{}),children:(0,import_jsx_runtime.jsx)(o,f({},i))});return r}return t.reduce((o,r)=>{const i=(0,import_react2.lazy)(()=>e().then(n=>{const l=(0,import_lodash.get)(n,r);return o[r][LAZY_COMPONENT_KEY]=l,{default:l}}));return o[r]=n=>(0,import_jsx_runtime.jsx)(import_react2.default.Suspense,{fallback:(0,import_jsx_runtime.jsx)(import_antd.Spin,{}),children:(0,import_jsx_runtime.jsx)(i,f({},n))}),o},{})}function useLazy(e,t){const o=typeof t=="function"?t:i=>i[t],r=(0,import_react_imported_component.loadableResource)(e);if(!r.payload)throw new Promise((i,n)=>{r.loadIfNeeded(),r.resolution.then(i).catch(n)});return o(r.payload)}function addAppVersion(e,t){if(e)return e["x-app-version"]||(e["x-app-version"]=t),Object.keys(e.properties||{}).forEach(o=>{var r;addAppVersion((r=e.properties)==null?void 0:r[o],t)}),e}const name="@nocobase/client",version="2.0.0-alpha.6",license="AGPL-3.0",main="lib/index.js",module$1="es/index.mjs",types="es/index.d.ts",dependencies={"@ahooksjs/use-url-state":"3.5.1","@ant-design/cssinjs":"^1.11.1","@ant-design/icons":"^5.6.1","@ant-design/pro-layout":"^7.22.1","@antv/g2plot":"^2.4.18","@budibase/handlebars-helpers":"0.14.0","@codemirror/lang-html":"^6.4.10","@codemirror/theme-one-dark":"^6.1.3","@ctrl/tinycolor":"^3.6.0","@dnd-kit/core":"^6.0.0","@dnd-kit/sortable":"^7.0.0","@emotion/css":"^11.7.1","@formily/antd-v5":"1.2.3","@formily/core":"^2.2.27","@formily/grid":"^2.2.27","@formily/json-schema":"^2.2.27","@formily/path":"^2.2.27","@formily/react":"^2.2.27","@formily/reactive":"^2.2.27","@formily/reactive-react":"^2.2.27","@formily/shared":"^2.2.27","@formily/validator":"^2.2.27","@nocobase/evaluators":"2.0.0-alpha.6","@nocobase/flow-engine":"2.0.0-alpha.6","@nocobase/sdk":"2.0.0-alpha.6","@nocobase/utils":"2.0.0-alpha.6","@tanstack/react-table":"^8.21.3","@types/tabulator-tables":"^6.2.6",ahooks:"^3.7.2",antd:"5.24.2","antd-mobile":"^5.41.1","antd-mobile-icons":"^0.3.0","antd-style":"3.7.1",axios:"^1.7.0","bignumber.js":"^9.1.2",classnames:"^2.3.1",codemirror:"^6.0.2",cronstrue:"^2.11.0","file-saver":"^2.0.5",filesize:"9.0.11",flat:"^5.0.2","html5-qrcode":"^2.3.8",i18next:"^22.4.9","i18next-http-backend":"^2.1.1",ignore:"^5.2.0",json5:"^2.2.3",lodash:"4.17.21","lru-cache":"6.0.0","markdown-it":"14.1.0","markdown-it-highlightjs":"3.3.1",mathjs:"^10.6.0",mermaid:"9.4.3",mime:"^4.0.4","mime-match":"^1.0.2","react-beautiful-dnd":"^13.1.0","react-device-detect":"2.2.3","react-drag-listview":"^0.1.9","react-error-boundary":"^4.0.10","react-helmet":"^6.1.0","react-hotkeys-hook":"^3.4.7","react-i18next":"^11.15.1","react-iframe":"~1.8.5","react-image-lightbox":"^5.1.4","react-intersection-observer":"9.14.0","react-js-cron":"^3.1.0","react-quill":"^2.0.0","react-router-dom":"^6.30.1","react-to-print":"^2.14.7","sanitize-html":"2.13.0","tabulator-tables":"^6.3.1","use-deep-compare-effect":"^1.8.1"},peerDependencies={react:">=18.0.0","react-dom":">=18.0.0","react-is":">=18.0.0"},devDependencies={"@testing-library/react":"^14.0.0","@types/markdown-it":"14.1.1","@types/markdown-it-highlightjs":"3.3.1","@types/react-big-calendar":"^1.6.4","axios-mock-adapter":"^1.20.0",dumi:"2.2.14","dumi-theme-nocobase":"^0.2.32"},clientPkg={name,version,license,main,module:module$1,types,dependencies,peerDependencies,devDependencies};function createDesignable(e){return new Designable(e)}const generateUid=e=>{e&&(e["x-uid"]||(e["x-uid"]=(0,import_shared.uid)()),Object.keys(e.properties||{}).forEach(t=>{generateUid(e.properties[t])}))},defaultWrap=e=>e,matchSchema=(e,t)=>{if(!(!e||!t)){for(const o in t)if(Object.prototype.hasOwnProperty.call(t,o)&&t[o]!==(e==null?void 0:e[o]))return!1;return!0}},splitWrapSchema=(e,t)=>{if(e["x-uid"]&&e["x-uid"]===t["x-uid"])return[null,e.toJSON()];const o=e.toJSON(),r=I(f({},o),{properties:{}});let i=null;const n=(l,a)=>{Object.keys(l||{}).forEach(c=>{const u=l[c];if(u["x-uid"]===t["x-uid"]){i=l[c];return}else a.properties[c]=I(f({},u),{properties:{}}),n(u==null?void 0:u.properties,a.properties[c])})};return n(o.properties,r),[r,i]},translate=e=>e;class Designable{constructor(t){k(this,"current"),k(this,"options"),k(this,"appVersion"),k(this,"events",{}),this.options=t,this.current=t.current,this.appVersion=t.appVersion}get model(){return this.options.model}get query(){return this.options.query}loadAPIClientEvents(){const{api:t,t:o=translate}=this.options;if(!t)return;const r=i=>{if(!i)return[];const n=Object.values(i.properties).length,l=[];return i.mapProperties(a=>{a["x-component-props"]=a["x-component-props"]||{},a["x-component-props"].width=100/n,a["x-uid"]&&l.push({"x-uid":a["x-uid"],"x-component-props":a["x-component-props"]})}),i["x-uid"]&&l.length?l:[]};this.on("insertAdjacent",i=>E(this,[i],function*({onSuccess:n,current:l,position:a,schema:c,wrap:u,wrapped:d,removed:m}){var p;let h=[];if((d==null?void 0:d["x-component"])==="Grid.Col"&&(h=h.concat(r(d.parent))),(m==null?void 0:m["x-component"])==="Grid.Col"&&(h=h.concat(r(m.parent))),this.refresh(),!l["x-uid"])return;const g=yield t.request({url:`/uiSchemas:insertAdjacent/${l["x-uid"]}?position=${a}`,method:"post",data:{schema:addAppVersion(c,this.appVersion),wrap:u}});h.length&&(yield t.request({url:"/uiSchemas:batchPatch",method:"post",data:h})),m!=null&&m["x-uid"]&&(yield t.request({url:`/uiSchemas:remove/${m["x-uid"]}`,method:"post"})),n==null||n((p=g==null?void 0:g.data)==null?void 0:p.data),import_antd.message.success(o("Saved successfully"),.2)})),this.on("patch",i=>E(this,[i],function*({schema:n}){this.refresh(),n!=null&&n["x-uid"]&&(yield t.request({url:"/uiSchemas:patch",method:"post",data:f({},n)}),import_antd.message.success(o("Saved successfully"),.2))})),this.on("initializeActionContext",i=>E(this,[i],function*({schema:n}){n!=null&&n["x-uid"]&&(yield t.request({url:"/uiSchemas:initializeActionContext",method:"post",data:f({},n)}))})),this.on("batchPatch",i=>E(this,[i],function*({schemas:n}){this.refresh(),yield t.request({url:"/uiSchemas:batchPatch",method:"post",data:n}),import_antd.message.success(o("Saved successfully"),.2)})),this.on("remove",i=>E(this,[i],function*({removed:n}){let l=[];(n==null?void 0:n["x-component"])==="Grid.Col"&&(l=r(n.parent)),this.refresh(),n!=null&&n["x-uid"]&&(yield t.request({url:`/uiSchemas:remove/${n["x-uid"]}`,method:"post"}),l.length&&(yield t.request({url:"/uiSchemas:batchPatch",method:"post",data:l})),import_antd.message.success(o("Saved successfully"),.2))}))}prepareProperty(t){t.type||(t.type="void"),t.name||(t.name=(0,import_shared.uid)()),this.current["x-uid"]&&generateUid(t)}on(t,o){this.events[t]||(this.events[t]=[]),this.events[t].push(o)}emit(t,...o){return E(this,null,function*(){if(!this.events[t])return;const[r,...i]=o;return Promise.all(this.events[t].map(n=>n.bind(this)(f({current:this.current},r),...i)))})}parentsIn(t){if(!t||!import_react.Schema.isSchemaInstance(t))return!1;let o=this.current;for(;o!=null&&o.parent;){if(o.parent===t)return!0;o=o.parent}return!1}refresh(t){const{refresh:o}=this.options;return o==null?void 0:o(t)}deepMerge(t){const o={title:"title",description:"description",default:"initialValue",readOnly:"readOnly",writeOnly:"editable",enum:"dataSource","x-pattern":"pattern","x-display":"display","x-validator":"validator","x-decorator":"decorator","x-component":"component","x-reactions":"reactions","x-content":"content","x-visible":"visible","x-hidden":"hidden","x-disabled":"disabled","x-editable":"editable","x-read-only":"readOnly"},r={"x-decorator-props":"decoratorProps","x-component-props":"componentProps","x-data":"data"};Object.keys(t).forEach(i=>{o[i]?(this.current[i]=t[i],this.updateModel(o[i],t[i])):r[i]?Object.keys(t[i]).forEach(n=>{(0,import_set.default)(this.current,[i,n],t[i][n]),this.updateModel([r[i],n],t[i][n])}):this.current[i]=t[i]}),this.emit("patch",{schema:t})}getSchemaAttribute(t,o){return(0,import_get.default)(this.current,t,o)}shallowMerge(t){const o={title:"title",description:"description",default:"initialValue",readOnly:"readOnly",writeOnly:"editable",enum:"dataSource","x-pattern":"pattern","x-display":"display","x-validator":"validator","x-decorator":"decorator","x-component":"component","x-reactions":"reactions","x-content":"content","x-visible":"visible","x-hidden":"hidden","x-disabled":"disabled","x-editable":"editable","x-read-only":"readOnly","x-decorator-props":"decoratorProps","x-component-props":"componentProps","x-data":"data"};Object.keys(t).forEach(r=>{this.current[r]=t[r],o[r]&&this.updateModel(o[r],t[r])}),this.emit("patch",{schema:t})}updateModel(t,o){const r=i=>{(0,import_set.default)(i,t,o)};this.model&&r(this.model),this.query&&this.query.take(r)}insertAdjacent(t,o,r={}){switch(t){case"beforeBegin":return this.insertBeforeBegin(o,r);case"afterBegin":return this.insertAfterBegin(o,r);case"beforeEnd":return this.insertBeforeEnd(o,r);case"afterEnd":return this.insertAfterEnd(o,r)}}recursiveRemoveIfNoChildren(t,o){if(!t)return;let r=t,i;const n=o==null?void 0:o.breakRemoveOn;for(;r;){if(typeof n=="function"){if(n(r))break}else if(matchSchema(r,n))break;if(Object.keys(r.properties||{}).length>0)break;r.parent&&(i=r.parent.removeProperty(r.name)),r=r.parent}return i}remove(t,o={}){const{breakRemoveOn:r,removeParentsIfNoChildren:i}=o,n=t||this.current;let l=n.parent.removeProperty(n.name);if(i){const a=this.recursiveRemoveIfNoChildren(n.parent,{breakRemoveOn:r});a&&(l=a)}return this.emit("remove",{removed:l})}removeWithoutEmit(t,o={}){const{breakRemoveOn:r,removeParentsIfNoChildren:i}=o,n=t||this.current;let l=n.parent.removeProperty(n.name);if(i){const a=this.recursiveRemoveIfNoChildren(n.parent,{breakRemoveOn:r});a&&(l=a)}return l}insertBeforeBeginOrAfterEnd(t,o={}){if(!import_react.Schema.isSchemaInstance(this.current)||!import_react.Schema.isSchemaInstance(t)||this.current.parent!==t.parent)return;let r=0,i=0;return this.current.parent.mapProperties((n,l,a)=>{this.current.name===l&&(i=a),t.name===l&&(r=a)}),r>i?this.insertBeforeBegin(t,o):this.insertAfterEnd(t,o)}insertBeforeBegin(t,o={}){if(!import_react.Schema.isSchemaInstance(this.current))return;const r={onSuccess:o.onSuccess},{wrap:i=defaultWrap,breakRemoveOn:n,removeParentsIfNoChildren:l}=o;if(import_react.Schema.isSchemaInstance(t)){if(this.parentsIn(t)){this.emit("error",{code:"parent_is_not_allowed",schema:t});return}t.parent.removeProperty(t.name),l&&(r.removed=this.recursiveRemoveIfNoChildren(t.parent,{breakRemoveOn:n}))}else t&&(t=(0,import_cloneDeep.default)(t));const a={};let c=!1,u=0,d=0;this.current.parent.mapProperties((x,_)=>{_===this.current.name&&(d=u,c=!0,++u),x["x-index"]=u,++u,c&&(a[_]=x,this.current.parent.removeProperty(_))}),this.prepareProperty(t);const m=i(t),p=this.current.parent.addProperty(m.name||(0,import_shared.uid)(),m);p["x-index"]=d,p.parent=this.current.parent,this.current.parent.setProperties(a);const[h,g]=splitWrapSchema(p,t);this.emit("insertAdjacent",f({position:"beforeBegin",schema:g,wrapped:m,wrap:h},r))}insertAfterBegin(t,o={}){if(!import_react.Schema.isSchemaInstance(this.current))return;const r={onSuccess:o.onSuccess},{wrap:i=defaultWrap,breakRemoveOn:n,removeParentsIfNoChildren:l}=o;if(import_react.Schema.isSchemaInstance(t)){if(this.parentsIn(t)){this.emit("error",{code:"parent_is_not_allowed",schema:t});return}t.parent.removeProperty(t.name),l&&(r.removed=this.recursiveRemoveIfNoChildren(t.parent,{breakRemoveOn:n}))}else t&&(t=(0,import_cloneDeep.default)(t));const a={};let c=1;this.current.mapProperties((h,g)=>{h["x-index"]=c,++c,a[g]=h}),this.current.properties={},this.prepareProperty(t);const u=i(t),d=this.current.addProperty(u.name||(0,import_shared.uid)(),u);d["x-index"]=0,d.parent=this.current,this.current.setProperties(a);const[m,p]=splitWrapSchema(d,t);this.emit("insertAdjacent",f({position:"afterBegin",schema:p,wrap:m,wrapped:u},r))}insertBeforeEnd(t,o={}){if(!import_react.Schema.isSchemaInstance(this.current))return;delete t["x-index"];const r={onSuccess:o.onSuccess},{wrap:i=defaultWrap,breakRemoveOn:n,removeParentsIfNoChildren:l}=o;if(import_react.Schema.isSchemaInstance(t)){if(this.parentsIn(t)){this.emit("error",{code:"parent_is_not_allowed",schema:t});return}t.parent.removeProperty(t.name),l&&(r.removed=this.recursiveRemoveIfNoChildren(t.parent,{breakRemoveOn:n}))}else t&&(t=(0,import_cloneDeep.default)(t));this.prepareProperty(t);const a=i(t),c=this.current.addProperty(a.name||(0,import_shared.uid)(),a);c.parent=this.current;const[u,d]=splitWrapSchema(c,t);return this.emit("insertAdjacent",f({position:"beforeEnd",schema:d,wrap:u,wrapped:a},r))}insertAfterEnd(t,o={}){if(!import_react.Schema.isSchemaInstance(this.current))return;const r={onSuccess:o==null?void 0:o.onSuccess},{wrap:i=defaultWrap,breakRemoveOn:n,removeParentsIfNoChildren:l}=o;let a=0,c=0,u=!1;const d={};if(this.current.parent.mapProperties((x,_)=>{x["x-index"]=a,_===this.current.name&&(++a,c=a,u=!0),++a,u&&_!==this.current.name&&(d[_]=x,this.current.parent.removeProperty(_))}),import_react.Schema.isSchemaInstance(t)){if(this.parentsIn(t)){this.emit("error",{code:"parent_is_not_allowed",schema:t});return}t.parent.removeProperty(t.name),l&&(r.removed=this.recursiveRemoveIfNoChildren(t.parent,{breakRemoveOn:n})),t.parent=null}else t&&(t=(0,import_cloneDeep.default)(t));this.prepareProperty(t);const m=i(t),p=this.current.parent.addProperty(m.name||(0,import_shared.uid)(),m);p.parent=this.current.parent,p["x-index"]=c,this.current.parent.setProperties(d);const[h,g]=splitWrapSchema(p,t);this.emit("insertAdjacent",f({position:"afterEnd",schema:g,wrap:h,wrapped:m},r))}}function useFindComponent(){const e=(0,import_react2.useContext)(import_react.SchemaOptionsContext),t=(0,import_react2.useMemo)(()=>(e==null?void 0:e.components)||{},[e]);return o=>{if(!o)return null;if(typeof o!="string")return o;const r=(0,import_get.default)(t,o);return r||console.error(`[nocobase]: Component "${o}" not found`),r}}function useDesignable(){const{designable:e,setDesignable:t,refresh:o,reset:r}=(0,import_react2.useContext)(SchemaComponentContext),i=(0,import_react2.useContext)(import_react.SchemaOptionsContext),n=(0,import_react2.useMemo)(()=>(i==null?void 0:i.components)||{},[i]),l=(0,import_react2.useMemo)(()=>()=>(0,import_jsx_runtime.jsx)(import_jsx_runtime.Fragment,{}),[]),a=(0,import_ahooks.useUpdate)(),c=useRefreshFieldSchema(),u=useRefreshComponent(),d=(0,import_react2.useCallback)(v=>{o==null||o(),a(),c==null||c(v),u==null||u()},[o,a,c,u]),m=(0,import_react.useField)(),p=(0,import_react.useFieldSchema)(),h=useAPIClient(),{t:g}=(0,import_react_i18next.useTranslation)(),x=(0,import_react2.useMemo)(()=>createDesignable({t:g,api:h,refresh:d,current:p,model:m,appVersion:clientPkg.version}),[g,h,d,p,m]);(0,import_react2.useEffect)(()=>{x.loadAPIClientEvents()},[x]);const{isMobileLayout:_}=useMobileLayout();return{dn:x,designable:_?!1:e,reset:r,refresh:d,setDesignable:t,DesignableBar:l,findComponent:(0,import_react2.useCallback)(v=>{var C;if(!v)return null;if(typeof v!="string")return v;const y=(0,import_get.default)(n,v);return(C=y==null?void 0:y[LAZY_COMPONENT_KEY])!=null?C:y},[import_get.default]),on:x.on.bind(x),patch:(0,import_react2.useCallback)((v,C)=>{const y=b=>{Object.keys(b).forEach(S=>{const F=b[S];S==="title"&&(m.title=F,p.title=F),S==="x-decorator-props"&&(m.decoratorProps||(m.decoratorProps={}),p["x-decorator-props"]||(p["x-decorator-props"]={}),Object.keys(F).forEach(j=>{m.decoratorProps[j]=F[j],p["x-decorator-props"][j]=F[j]})),S==="x-component-props"&&(m.componentProps||(m.componentProps={}),p["x-component-props"]||(p["x-component-props"]={}),Object.keys(F).forEach(j=>{m.componentProps[j]=F[j],p["x-component-props"][j]=F[j]}))})};if(typeof v=="string"){const b={};return(0,import_set.default)(b,v,C),y(b)}y(v),d()},[x]),shallowMerge:(0,import_react2.useCallback)(v=>{x.shallowMerge(v)},[x]),deepMerge:(0,import_react2.useCallback)(v=>{x.deepMerge(v)},[x]),remove:(0,import_react2.useCallback)((v,C)=>{x.remove(v,C)},[x]),insertAdjacent:(0,import_react2.useCallback)((v,C,y)=>{x.insertAdjacent(v,C,y)},[x]),insertBeforeBegin:(0,import_react2.useCallback)(v=>{x.insertBeforeBegin(v)},[x]),insertAfterBegin:(0,import_react2.useCallback)(v=>{x.insertAfterBegin(v)},[x]),insertBeforeEnd:(0,import_react2.useCallback)(v=>{x.insertBeforeEnd(v)},[x]),insertAfterEnd:(0,import_react2.useCallback)(v=>{x.insertAfterEnd(v)},[x])}}const DefaultSchemaToolbar=()=>null;DefaultSchemaToolbar.isNullComponent=!0;const useDesigner=()=>{const{designable:e}=useDesignable(),t=(0,import_react.useFieldSchema)(),o=(0,import_react2.useMemo)(()=>t["x-designer"]||t["x-toolbar"]?t["x-designer"]||t["x-toolbar"]:t["x-settings"]?SchemaToolbar:DefaultSchemaToolbar,[t]),r=useComponent(o);return e&&r||DefaultSchemaToolbar},useFieldProps$1=e=>{const t=(0,import_react2.useContext)(import_react.SchemaOptionsContext),o=(0,import_react2.useContext)(import_react.SchemaExpressionScopeContext),r=(0,import_react2.useRef)();return r.current=o,e.toFieldProps(I(f({},t),{get scope(){return f(f({},t.scope),r.current)}}))};function useSchemaComponentContext(){return(0,import_react2.useContext)(SchemaComponentContext)}const useFieldComponentOptions=()=>{var e;const{getCollectionJoinField:t,getCollection:o}=useCollectionManager_deprecated(),r=(0,import_react.useFieldSchema)(),{getField:i}=useCollection_deprecated(),n=i(r.name)||t(r["x-collection-field"]),{t:l}=(0,import_react_i18next.useTranslation)(),{label:a}=((e=r["x-component-props"])==null?void 0:e.fieldNames)||{};return(0,import_react2.useMemo)(()=>{if(!n||!(n!=null&&n.interface)||!["o2o","oho","obo","o2m","linkTo","m2o","m2m"].includes(n.interface))return;const c=o(n.target);if((c==null?void 0:c.template)==="file")return[{label:l("Record picker"),value:"CollectionField"},{label:l("Select"),value:"AssociationSelect"}];switch(n.interface){case"o2m":return[{label:l("Record picker"),value:"CollectionField"},{label:l("Subtable"),value:"TableField"},{label:l("Select"),value:"AssociationSelect"}];case"m2o":case"m2m":case"linkTo":return[{label:l("Record picker"),value:"CollectionField"},{label:l("Select"),value:"AssociationSelect"}];default:return[{label:l("Record picker"),value:"CollectionField"},{label:l("Subform"),value:"FormField"},{label:l("Select"),value:"AssociationSelect"}]}},[l,n==null?void 0:n.interface,a])},useFieldTitle=()=>{var e;const t=(0,import_react.useField)(),o=(0,import_react.useFieldSchema)(),r=useCollection(),i=useCollectionManager(),n=(r==null?void 0:r.getField(o.name))||(i==null?void 0:i.getCollectionField(o["x-collection-field"])),l=useCompile();(0,import_react2.useEffect)(()=>{var a;t!=null&&t.title||(t.title=l((a=n==null?void 0:n.uiSchema)==null?void 0:a.title))},[(e=n==null?void 0:n.uiSchema)==null?void 0:e.title])},useDef$4=()=>({}),useProps=(e={})=>{const t=e,{useProps:o=useDef$4}=t,r=W(t,["useProps"]);let i=o;typeof o!="function"&&(i=useDef$4);const n=i();return f(f({},r),n)};function useParsedFilter({filterOption:e,onFilterChange:t}){const{parseFilter:o,findVariable:r}=useParseDataScopeFilter(),[i,n]=(0,import_react2.useState)({}),[l,a]=(0,import_react2.useState)(!!e);return(0,import_react2.useEffect)(()=>{if(!e)return;const c=()=>E(this,null,function*(){a(!0);const d=yield o(e);a(!1),n(d),t==null||t(d)});c();const u=import_lodash.default.debounce(c,DEBOUNCE_WAIT);(0,import_reactive.reaction)(()=>(0,import_client.flatten)(e,{breakOn({key:d}){return d.startsWith("$")&&d!=="$and"&&d!=="$or"},transformValue(d){if(!isVariable$1(d))return d;const m=getVariableName(d),p=r(m);let h=null;const g=getPath(d).split(".");return g.forEach((x,_)=>{const v=g.slice(0,_+1).join("."),C=(0,import_client.getValuesByPath)({[m]:(p==null?void 0:p.ctx)||{}},v);import_lodash.default.isEmpty(C)||(h=C)}),h}}),u,{equals:import_lodash.default.isEqual})},[JSON.stringify(e),o,r]),{filter:i,parseVariableLoading:l}}const useParentRecordCommon=e=>{const t=useCollectionRecordData();if(e)return t},useTableBlockDecoratorProps=e=>{var t;const{params:o,parseVariableLoading:r}=useTableBlockParams(e),i=useParentRecordCommon(e.association),n=(t=useDataSourceManager().getDataSource(e.dataSource))==null?void 0:t.collectionManager.getCollection(e.collection);return{params:o,parentRecord:i,parseVariableLoading:r,rowKey:(n==null?void 0:n.filterTargetKey)||"id"}};function useTableBlockParams(e){var t;const o=(0,import_react.useFieldSchema)(),{filter:r,parseVariableLoading:i}=useParsedFilter({filterOption:(t=e.params)==null?void 0:t.filter});return{params:(0,import_react2.useMemo)(()=>{const n=e.params||{},{dragSortBy:l}=(o==null?void 0:o["x-decorator-props"])||{};return e.dragSort&&l&&(n.sort=l),I(f({},n),{filter:r})},[o,r,e.dragSort,e.params]),parseVariableLoading:i}}const key="__isNewRecord__",isNewRecord=e=>(0,import_reactive.untracked)(()=>!!(e!=null&&e[key])),markRecordAsNew=e=>{if(!(0,import_lodash.isObject)(e))throw new Error("markRecordAsNew: record must be an object");return e[key]=!0,e},useDefaultLoading=()=>{var e;return!!((e=useDataBlockRequest())!=null&&e.loading)},withSkeletonComponent=(e,t)=>{const{useLoading:o=useDefaultLoading,displayName:r,SkeletonComponent:i=import_antd.Skeleton}=t||{},n=import_react2.default.memo(l=>{const a=o(),c=(0,import_react2.useRef)(!1),u=(0,import_react2.useDeferredValue)(a);return!c.current&&u?(0,import_jsx_runtime.jsx)(i,{}):(c.current=!0,(0,import_jsx_runtime.jsx)(e,f({},l)))});return n.displayName=r||`${e.displayName}(withSkeletonComponent)`||`${e.name}(withSkeletonComponent)`,n},getActionValue=(e,t)=>{const o=r=>(r==null?void 0:r.mode)==="constant"?r.value:null;switch(!0){case[ActionType.Color,ActionType.BackgroundColor,ActionType.TextAlign,ActionType.FontSize,ActionType.FontWeight,ActionType.FontStyle].includes(e):return o(t);default:return null}},getSatisfiedActions=(e,t)=>E(void 0,[e,t],function*({rules:o,variables:r,localVariables:i},n){return(yield Promise.all(o.filter(l=>!l.disabled).map(l=>E(void 0,null,function*(){return(yield conditionAnalyses({ruleGroup:l.condition,variables:r,localVariables:i,conditionType:l.conditionType},n))?l:null})))).filter(Boolean).map(l=>l.actions).flat()}),getSatisfiedValues=(e,t)=>E(void 0,[e,t],function*({rules:o,variables:r,localVariables:i},n){return(yield getSatisfiedActions({rules:o,variables:r,localVariables:i},n)).map(l=>I(f({},l),{value:getActionValue(l.operator,l.value)}))}),getSatisfiedValueMap=(e,t)=>E(void 0,[e,t],function*({rules:o,variables:r,localVariables:i},n){return(yield getSatisfiedValues({rules:o,variables:r,localVariables:i},n)).reduce((l,a)=>I(f({},l),{[a.operator]:a.value}),{})});function useSatisfiedActionValues({formValues:e,category:t="default",rules:o,schema:r,form:i}){const[n,l]=(0,import_react2.useState)({}),a=(0,import_react.useFieldSchema)(),c=useVariables$1(),u=useLocalVariables$1({currentForm:{values:e}}),d=r??a,m=o??(d[LinkageRuleDataKeyMap[t]]||(d==null?void 0:d.parent[LinkageRuleDataKeyMap[t]])),p=useApp(),h=(0,import_react2.useCallback)(()=>{m&&e&&getSatisfiedValueMap({rules:m,variables:c,localVariables:u},p.jsonLogic).then(g=>{(0,import_lodash.isEmpty)(g)?l({}):l(g)}).catch(g=>{throw new Error(g.message)})},[c,u,m,e]);return(0,import_react2.useEffect)(()=>{if(h(),i){const g=(0,import_shared.uid)();return i.addEffects(g,()=>{(0,import_core.onFormValuesChange)(()=>{h()})}),()=>{i.removeEffects(g)}}},[i,h,e]),{valueMap:n}}const GetStyleRules=import_react2.default.memo(({record:e,schema:t,onStyleChange:o})=>{const{valueMap:r}=useSatisfiedActionValues({formValues:e,category:"style",schema:t});return(0,import_react2.useEffect)(()=>{o(r)},[o,r]),null});GetStyleRules.displayName="GetStyleRules";const opacityStyle={opacity:.5},containerStyle={position:"relative"},spinStyle={display:"flex",alignItems:"center",justifyContent:"center",position:"absolute",left:0,right:0,height:"100%",maxHeight:400,zIndex:1e3},displayNone$3={display:"none"},HighPerformanceSpin=import_react2.default.memo(e=>(0,import_jsx_runtime.jsxs)("div",{style:containerStyle,children:[(0,import_jsx_runtime.jsx)(import_antd.Spin,I(f({},import_lodash.default.omit(e,"children")),{style:e.spinning?spinStyle:displayNone$3})),(0,import_jsx_runtime.jsx)("div",{style:e.spinning?opacityStyle:null,children:e.children})]}));var FilterBlockType=(e=>(e[e.FORM=0]="FORM",e[e.TABLE=1]="TABLE",e[e.TREE=2]="TREE",e[e.COLLAPSE=3]="COLLAPSE",e))(FilterBlockType||{});const mergeFilter=(e,t="$and")=>{const o=e.filter(r=>{if(r&&typeof r=="object"&&!Array.isArray(r))return Object.values(r).filter(i=>i!==void 0).length});return o.length===0?{}:o.length===1?o[0]:{[t]:o}},getSupportFieldsByAssociation=(e,t)=>{var o;return(o=t.associatedFields)==null?void 0:o.filter(r=>e==null?void 0:e.some(i=>i===r.target))},getSupportFieldsByForeignKey=(e,t)=>{var o;return(o=t.foreignKeyFields)==null?void 0:o.filter(r=>e.fields.some(i=>i.type!=="belongsTo"&&i.foreignKey===r.name&&i.target===r.collectionName))},useSupportedBlocks=e=>{const{getDataBlocks:t}=useFilterBlock(),o=(0,import_react.useFieldSchema)(),r=useCollection(),{getAllCollectionsInheritChain:i}=useAllCollectionsInheritChainGetter();if(e===0||e===3)return t().filter(n=>isSameCollection(n.collection,r));if(e===1||e===2)return t().filter(n=>{var l,a;return o["x-uid"]!==n.uid&&(isSameCollection(n.collection,r)||((l=getSupportFieldsByAssociation(i(r.name,r.dataSource),n))==null?void 0:l.length)||((a=getSupportFieldsByForeignKey(r,n))==null?void 0:a.length))})},transformToFilter=(e,t,o,r)=>(e=(0,import_client.flatten)(e,{breakOn({value:i,path:n}){if(["$match","$notMatch","$anyOf","$noneOf","$childIn","$childNotIn","$dateBetween","$in","$notIn"].includes(t[n]))return!0;const l=o(`${r}.${n}`);if(["datetime","datetimeNoTz","date","unixTimestamp","createdAt","updatedAt"].includes(l==null?void 0:l.interface))return!0;if(l!=null&&l.target){if(Array.isArray(i))return!0;const a=l.targetKey||"id";if(i&&i[a]!=null)return!0}return!1}}),{$and:Object.keys(e).map(i=>{let n=import_lodash.default.get(e,i);const l=o(`${r}.${i}`);return l!=null&&l.target&&["hasOne","hasMany","belongsTo","belongsToMany","belongsToArray"].includes(l.type)&&(n=(0,import_client.getValuesByPath)(n,l.targetKey||"id"),i=`${i}.${l.targetKey||"id"}`,(l==null?void 0:l.interface)==="chinaRegion"&&(n=import_lodash.default.last(n))),!n&&n!==0&&n!==!1?null:{[i]:{[t[i]||"$eq"]:n}}}).filter(Boolean)}),useAssociatedFields=()=>{var e;return((e=useCollection())==null?void 0:e.fields.filter(t=>isAssocField(t)))||[]},isAssocField=e=>["o2o","oho","obo","m2o","createdBy","updatedBy","o2m","m2m","linkTo","chinaRegion","mbm"].includes(e==null?void 0:e.interface),isSameCollection=(e,t)=>e.name===t.name&&e.dataSource===t.dataSource,useFilterAPI=()=>{const e=(0,import_react.useFieldSchema)(),{getDataBlocks:t}=useFilterBlock(),{targets:o,uid:r}=findFilterTargets(e),i=t(),[n,l]=(0,import_react2.useState)(()=>o&&o.some(u=>i.some(d=>d.uid===u.uid))),a=Object.keys(o||{});(0,import_react2.useEffect)(()=>{l(o&&o.some(u=>i.some(d=>d.uid===u.uid)))},[a.length,o,i]);const c=(0,import_react2.useCallback)((u,d="id",m="$eq")=>{const p=i.find(h=>h.uid===e.parent["x-uid"]);i.forEach(h=>{var g,x,_,v;let C=d;const y=o.find(j=>j.uid===h.uid);if(!y)return;import_lodash.default.isFunction(u)&&(u=u(y,h,getSourceKey$1(p,y.field))),import_lodash.default.isFunction(d)&&(C=d(y,h)),import_lodash.default.isFunction(m)&&(m=m(y));const b=((g=h.service.params)==null?void 0:g[0])||{},S=((_=(x=h.service.params)==null?void 0:x[1])==null?void 0:_.filters)||{};if(u!=null)S[r]={$and:[{[C]:{[m]:u}}]};else if((v=h.clearSelection)==null||v.call(h),delete S[r],h.dataLoadingMode==="manual")return h.clearData();const F=mergeFilter([...Object.values(S).map(j=>removeNullCondition(j)),h.defaultFilter]);h.doFilter(I(f({},b),{page:1,filter:F}),{filters:S})})},[i,o,r,e]);return{isConnected:n,doFilter:c}},isInFilterFormBlock=e=>{for(;e;){if(e["x-filter-targets"])return e["x-decorator"]==="FilterFormBlockProvider";e=e.parent}return!1};function getSourceKey$1(e,t){var o,r,i;const n=(o=e==null?void 0:e.associatedFields)==null?void 0:o.find(l=>l.foreignKey===t);return(n==null?void 0:n.sourceKey)||((i=(r=t==null?void 0:t.split)==null?void 0:r.call(t,"."))==null?void 0:i[1])}const AssociationFieldContext=(0,import_react2.createContext)({});AssociationFieldContext.displayName="AssociationFieldContext";const useInsertSchema$1=e=>{const t=(0,import_react.useFieldSchema)(),{insertAfterBegin:o}=useDesignable(),{isMobileLayout:r}=useMobileLayout();return(0,import_react2.useCallback)(i=>{r||t.reduceProperties((n,l)=>l["x-component"]==="AssociationField."+e?l:n,null)||o((0,import_cloneDeep.default)(i))},[e,t,o,r])};function useAssociationFieldContext(){return(0,import_react2.useContext)(AssociationFieldContext)}function useServiceOptions$1(e){var t,o,r,i,n,l,a,c,u,d;const{action:m="list",service:p,useOriginalFilter:h}=e,g=(0,import_react.useFieldSchema)(),x=(0,import_react.useField)(),{getField:_}=useCollection_deprecated(),{getCollectionJoinField:v}=useCollectionManager_deprecated(),C=useRecord(),{isNew:y}=useCollectionRecord()||{},b=((0,import_lodash.isString)((r=(o=(t=g==null?void 0:g["x-component-props"])==null?void 0:t.service)==null?void 0:o.params)==null?void 0:r.filter)?(l=(n=(i=x.componentProps)==null?void 0:i.service)==null?void 0:n.params)==null?void 0:l.filter:(u=(c=(a=g==null?void 0:g["x-component-props"])==null?void 0:a.service)==null?void 0:c.params)==null?void 0:u.filter)||((d=p==null?void 0:p.params)==null?void 0:d.filter),{filter:S}=useParsedFilter({filterOption:b,onFilterChange:()=>{y&&x.reset()}}),F=(0,import_react2.useMemo)(()=>_(g.name)||v(g==null?void 0:g["x-collection-field"]),[g]),j=C==null?void 0:C[F==null?void 0:F.sourceKey],P=(0,import_react2.useMemo)(()=>{const T=["oho","o2m"].includes(F==null?void 0:F.interface);return mergeFilter([mergeFilter([T&&!isInFilterFormBlock(g)&&F!=null&&F.foreignKey&&!h?{[F.foreignKey]:{$is:null}}:null,S]),T&&j!==void 0&&j!==null&&!isInFilterFormBlock(g)&&F!=null&&F.foreignKey&&!h?{[F.foreignKey]:{$eq:j}}:null],"$or")},[F==null?void 0:F.interface,F==null?void 0:F.foreignKey,g,S,j,h]);return(0,import_react2.useMemo)(()=>I(f({resource:F==null?void 0:F.target,action:m},p),{params:I(f({},p==null?void 0:p.params),{filter:P})}),[F==null?void 0:F.target,m,P,p])}const useFieldNames$1=(e={})=>{var t,o,r,i,n;const l=(0,import_react.useFieldSchema)(),a=((i=(r=(o=(t=l["x-component-props"])==null?void 0:t.field)==null?void 0:o.uiSchema)==null?void 0:r["x-component-props"])==null?void 0:i.fieldNames)||((n=l["x-component-props"])==null?void 0:n.fieldNames)||e.fieldNames;return f({label:"label",value:"value"},a)},SubFormContext=(0,import_react2.createContext)(null);SubFormContext.displayName="SubFormContext";const SubFormProvider=e=>{const t=(0,import_react2.useContext)(SubFormContext),{value:o,collection:r,fieldSchema:i,parent:n,skip:l}=e.value,a=(0,import_react2.useMemo)(()=>import_lodash.default.omitBy({value:o,collection:r,fieldSchema:i,skip:l,parent:n||(t!=null&&t.skip?t.parent:t)},import_lodash.default.isUndefined),[o,r,i,l,n,t]);return(0,import_jsx_runtime.jsx)(SubFormContext.Provider,{value:a,children:e.children})},useSubFormValue=()=>{const{value:e,collection:t,fieldSchema:o,parent:r}=(0,import_react2.useContext)(SubFormContext)||{};return{formValue:e,collection:t,fieldSchema:o,parent:r}},useColumnSettings=e=>{const{t}=(0,import_react_i18next.useTranslation)(),o=`nocobase_table_column_settings_${e}`,r=(0,import_react2.useCallback)(()=>{try{const l=localStorage.getItem(o);return l?JSON.parse(l):null}catch(l){return console.warn("Failed to parse table column settings from localStorage:",l),null}},[o]),i=(0,import_react2.useCallback)(l=>{try{const a=JSON.stringify(l);localStorage.setItem(o,a);const c=new CustomEvent("nocobase-table-settings-changed",{detail:{key:o,tableId:e,settings:l}});window.dispatchEvent(c)}catch(a){console.warn("Failed to save table column settings to localStorage:",a),import_antd.message.error(t("Failed to save table settings"))}},[o,e,t]),n=(0,import_react2.useCallback)(()=>{try{localStorage.removeItem(o);const l=new CustomEvent("nocobase-table-settings-changed",{detail:{key:o,tableId:e,settings:null}});window.dispatchEvent(l)}catch(l){console.warn("Failed to clear table column settings from localStorage:",l),import_antd.message.error(t("Failed to clear table settings"))}},[o,e,t]);return{getSettings:r,saveSettings:i,clearSettings:n}},useTableColumnIntegration=(e,t=!0)=>{const o=(0,import_react.useFieldSchema)(),r=(o==null?void 0:o["x-uid"])||"default",{getSettings:i}=useColumnSettings(r),[n,l]=(0,import_react2.useState)(0);(0,import_react2.useEffect)(()=>{const c=u=>{const{key:d,tableId:m}=u.detail;(d.includes(r)||m===r)&&l(p=>p+1)};return window.addEventListener("nocobase-table-settings-changed",c),()=>{window.removeEventListener("nocobase-table-settings-changed",c)}},[r]);const a=(0,import_react2.useMemo)(()=>i(),[i,n]);return{columns:(0,import_react2.useMemo)(()=>{if(!t||!a||a.length===0)return e;const c=new Map;a.forEach(h=>{c.set(h.key,h)});const u=e.map(h=>{const g=c.get(h.key);if(g){const x=h.columnHidden||!g.visible,_=g.width||h.width,v=g.fixed||h.fixed;return I(f({},h),{columnHidden:x,fixed:v,width:_,_orderIndex:g.order})}return h}),d=[],m=[];u.forEach(h=>{h._orderIndex!==void 0?d.push(h):m.push(h)}),d.sort((h,g)=>(h._orderIndex||0)-(g._orderIndex||0));const p=[...d,...m];return p.forEach(h=>{delete h._orderIndex}),p},[e,a])}},TableSkeleton=({rows:e=5,columns:t=6})=>{const{token:o}=useToken$1(),r=o.controlHeight*2.06,i=o.controlHeight*1.75,n=(0,import_react2.useMemo)(()=>import_css.css`
|
|
66
66
|
&.skeleton-wrapper {
|
|
67
67
|
width: 100%;
|
|
68
68
|
background: ${o.colorBgContainer};
|
|
@@ -1690,7 +1690,7 @@ https://requirejs.org/docs/errors.html#`+e);return i.requireType=e,i.requireModu
|
|
|
1690
1690
|
border-top-color: transparent;
|
|
1691
1691
|
background-color: transparent;
|
|
1692
1692
|
}
|
|
1693
|
-
`,children:"x"})})})]})},confirm$1=(0,import_flow_engine.defineAction)({name:"confirm",title:(0,import_flow_engine.escapeT)("Confirmation"),uiSchema:{enable:{type:"boolean",title:(0,import_flow_engine.escapeT)("Enable secondary confirmation"),"x-decorator":"FormItem","x-component":"Switch"},title:{type:"string",title:(0,import_flow_engine.escapeT)("Title"),"x-decorator":"FormItem","x-component":TextAreaWithContextSelector,"x-component-props":{rows:2}},content:{type:"string",title:(0,import_flow_engine.escapeT)("Content"),"x-decorator":"FormItem","x-component":TextAreaWithContextSelector,"x-component-props":{rows:3}}},defaultParams:{enable:!0,title:"Please Confirm",content:"Are you sure you want to proceed with this action?"},handler(e,t){return E(this,null,function*(){t.enable&&((yield e.modal.confirm({title:e.t(t.title),content:e.t(t.content),okText:e.t("Confirm"),cancelText:e.t("Cancel")}))||e.exit())})}}),FilterGroup=(0,import_reactive_react.observer)(e=>{const{value:t={logic:"$and",items:[]},FilterItem:o,showBorder:r=!1,onRemove:i,onChange:n}=e,{token:l}=import_antd.theme.useToken(),{t:a}=(0,import_react_i18next.useTranslation)();t.logic||(t.logic="$and"),Array.isArray(t.items)||(t.items=[]);const{logic:c,items:u}=t,d=r?{position:"relative",border:`1px dashed ${l.colorBorder}`,padding:l.paddingSM,marginBottom:l.marginXS,borderRadius:l.borderRadius}:{position:"relative",marginBottom:l.marginXS},m=v=>{t.logic=v},p=()=>{u.push({path:"",operator:"",value:""}),n==null||n(t)},h=()=>{u.push({logic:"$and",items:[]}),n==null||n(t)},g=v=>{u.splice(v,1),n==null||n(t)},x=v=>"path"in v||"operator"in v||"value"in v,_=v=>"logic"in v&&"items"in v;return(0,import_jsx_runtime.jsxs)("div",{style:d,children:[r&&i&&(0,import_jsx_runtime.jsx)("a",{role:"button","aria-label":"icon-close",children:(0,import_jsx_runtime.jsx)(import_icons.CloseCircleOutlined,{style:{position:"absolute",right:10,top:10,color:"#bfbfbf"},onClick:i})}),(0,import_jsx_runtime.jsx)("div",{style:{marginBottom:8,color:l.colorText},children:(0,import_jsx_runtime.jsxs)("span",{children:[a("Meet")," ",(0,import_jsx_runtime.jsxs)(import_antd.Select,{role:"button","data-testid":"filter-select-all-or-any",style:{width:"auto"},value:c,onChange:m,children:[(0,import_jsx_runtime.jsx)(import_antd.Select.Option,{value:"$and",children:a("All")}),(0,import_jsx_runtime.jsx)(import_antd.Select.Option,{value:"$or",children:a("Any")})]})," ",a("conditions in the group")]})}),(0,import_jsx_runtime.jsx)("div",{children:u.map((v,C)=>_(v)?(0,import_jsx_runtime.jsx)(FilterGroup,{value:v,FilterItem:o,showBorder:!0,onRemove:()=>g(C),onChange:n},C):x(v)?o?(0,import_jsx_runtime.jsx)("div",{style:{marginBottom:8,display:"flex",alignItems:"flex-end"},children:(0,import_jsx_runtime.jsxs)(import_antd.Space,{style:{flex:1,minWidth:0},children:[(0,import_jsx_runtime.jsx)(o,{value:v}),(0,import_jsx_runtime.jsx)("a",{role:"button","aria-label":"icon-close",style:{marginLeft:8,flex:"0 0 auto"},children:(0,import_jsx_runtime.jsx)(import_icons.CloseCircleOutlined,{onClick:()=>g(C),style:{color:"#bfbfbf"}})})]})},C):(0,import_jsx_runtime.jsx)("div",{style:{marginBottom:8,display:"flex",alignItems:"flex-end"},children:(0,import_jsx_runtime.jsxs)(import_antd.Space,{style:{flex:1,minWidth:0},children:[(0,import_jsx_runtime.jsxs)("span",{children:[v.path," ",v.operator," ",String(v.value)]}),(0,import_jsx_runtime.jsx)("a",{role:"button","aria-label":"icon-close",style:{marginLeft:8,flex:"0 0 auto"},children:(0,import_jsx_runtime.jsx)(import_icons.CloseCircleOutlined,{onClick:()=>g(C),style:{color:"#bfbfbf"}})})]})},C):(0,import_jsx_runtime.jsx)("div",{style:{marginBottom:8,display:"flex",alignItems:"flex-end"},children:(0,import_jsx_runtime.jsxs)(import_antd.Space,{style:{flex:1,minWidth:0},children:[(0,import_jsx_runtime.jsx)("span",{style:{color:l.colorTextTertiary},children:"Invalid filter item"}),(0,import_jsx_runtime.jsx)("a",{role:"button","aria-label":"icon-close",style:{marginLeft:8,flex:"0 0 auto"},children:(0,import_jsx_runtime.jsx)(import_icons.CloseCircleOutlined,{onClick:()=>g(C),style:{color:"#bfbfbf"}})})]})},C))}),(0,import_jsx_runtime.jsxs)(import_antd.Space,{size:16,style:{marginTop:8,marginBottom:8},children:[(0,import_jsx_runtime.jsx)(import_antd.Button,{style:{padding:0},type:"link",size:"small",icon:(0,import_jsx_runtime.jsx)(import_icons.PlusOutlined,{}),onClick:p,children:a("Add condition")}),(0,import_jsx_runtime.jsx)(import_antd.Button,{style:{padding:0},type:"link",size:"small",icon:(0,import_jsx_runtime.jsx)(import_icons.PlusOutlined,{}),onClick:h,children:a("Add condition group")})]})]})},{displayName:"FilterGroup"}),FilterContainer$1=(0,import_reactive_react.observer)(e=>{var t;const{value:o,FilterItem:r,ctx:i}=e;o.logic||(o.logic="and"),Array.isArray(o.items)||(o.items=[]);const n=()=>{var c;(c=i==null?void 0:i.model)!=null&&c.dispatchEvent&&i.model.dispatchEvent("reset")},l=()=>{var c;(c=i==null?void 0:i.model)!=null&&c.dispatchEvent&&i.model.dispatchEvent("submit")},a=((t=i==null?void 0:i.model)==null?void 0:t.translate)||(c=>c);return(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsx)(FilterGroup,{value:o,FilterItem:r}),(0,import_jsx_runtime.jsxs)(import_antd.Space,{style:{width:"100%",display:"flex",justifyContent:"flex-end"},children:[(0,import_jsx_runtime.jsx)(import_antd.Button,{onClick:n,children:a("Reset")}),(0,import_jsx_runtime.jsx)(import_antd.Button,{type:"primary",onClick:l,children:a("Submit")})]})]})},{displayName:"FilterContent"}),fieldsToOptions=(e,t,o,r)=>e.map(i=>field2option(i,t,o,r)).filter(Boolean),field2option=(e,t,o,r)=>{var i;if(o.length&&t===1&&o.includes(e.name)||!e.interface||e.filterable===!1)return;const n=e.getInterfaceOptions();if(!(n!=null&&n.filterable))return;const{nested:l,children:a,operators:c}=n.filterable,u={name:e.name,type:e.type,target:e.target,title:r(e.title),schema:e==null?void 0:e.uiSchema,operators:(((i=c==null?void 0:c.filter)==null?void 0:i.call(c,d=>!(d!=null&&d.visible)||d.visible(e)))||[]).map(d=>I(f({},d),{label:r(d.label)}))};if(!(e.target&&t>2)){if(t>2)return u;if(a!=null&&a.length&&(u.children=a),l){const d=e.getFields().filter(p=>p.target!=="attachments"&&p.interface!=="formula"),m=fieldsToOptions(d,t+1,o,r).filter(Boolean);u.children=u.children||[],u.children.push(...m)}return u}},FilterItem=(0,import_reactive_react.observer)(e=>{var t;const{path:o,operator:r,value:i}=e.value,n=e.model,l=((t=n.context.blockModel.collection)==null?void 0:t.getFields().filter(g=>g.target!=="attachments"))||[],a=getIgnoreFieldsNames(n.props.filterableFieldsNames||[],l.map(g=>g.name)),c=n.translate,u=fieldsToOptions(l.filter(g=>g.target!=="attachments"&&g.interface!=="formula"&&!["belongsTo","belongsToMany","hasOne","hasMany","oho","obo","m2o","o2m","m2m"].includes(g.type)),1,e.noIgnore?[]:a,c).filter(Boolean),d=(0,import_react2.useMemo)(()=>{const g=u.find(x=>x.name===o);return(g==null?void 0:g.operators)||[]},[u,o]),m=g=>{var x;e.value.path=g;const _=u.find(v=>v.name===g);((x=_==null?void 0:_.operators)==null?void 0:x.length)>0?e.value.operator=_.operators[0].value:e.value.operator="",e.value.value=""},p=g=>{e.value.operator=g},h=g=>{e.value.value=g.target.value};return(0,import_jsx_runtime.jsxs)(import_antd.Space,{children:[(0,import_jsx_runtime.jsx)(import_antd.Select,{style:{width:200},placeholder:c("Select field"),value:o||void 0,onChange:m,children:u.map(g=>(0,import_jsx_runtime.jsx)(import_antd.Select.Option,{value:g.name,children:g.title},g.name))}),(0,import_jsx_runtime.jsx)(import_antd.Select,{style:{width:120},placeholder:c("Select operator"),value:r||void 0,onChange:p,disabled:!o||d.length===0,children:d.map(g=>(0,import_jsx_runtime.jsx)(import_antd.Select.Option,{value:g.value,children:g.label},g.value))}),(0,import_jsx_runtime.jsx)(import_antd.Input,{style:{width:200},placeholder:c("Enter value"),value:i,onChange:h})]})},{displayName:"FilterItem"});function getIgnoreFieldsNames(e,t){return t==null?void 0:t.filter(o=>!e.includes(o))}const{DateFilterDynamicComponent:DateFilterDynamicComponentLazy$1}=lazy(()=>Promise.resolve().then(()=>require("./index-C3fHjsMw-BpCRZOKn.js")),"DateFilterDynamicComponent");function createStaticInputRenderer$1(e,t,o){var r;const i=e==null?void 0:e["x-component"],n=((r=t==null?void 0:t.uiSchema)==null?void 0:r["x-component-props"])||{},l=(e==null?void 0:e["x-component-props"])||{},a=(0,import_merge.default)({},n,l),c=f({style:f({width:200},(a==null?void 0:a.style)||{}),placeholder:(a==null?void 0:a.placeholder)||o("Enter value")},a);return u=>{const d=u||{},{value:m,onChange:p}=d,h=W(d,["value","onChange"]);return i==="InputNumber"?(0,import_jsx_runtime.jsx)(import_antd.InputNumber,I(f(f({},c),h),{value:m,onChange:p})):i==="NumberPicker"?(0,import_jsx_runtime.jsx)(import_antd_v5.NumberPicker,I(f(f({},c),h),{value:m,onChange:p})):i==="Switch"?(0,import_jsx_runtime.jsx)(import_antd.Switch,I(f(f({},c),h),{checked:!!m,onChange:p})):i==="Select"?(0,import_jsx_runtime.jsx)(import_antd.Select,I(f(f({},c),h),{value:m,onChange:p})):i==="DateFilterDynamicComponent"?(0,import_jsx_runtime.jsx)(DateFilterDynamicComponentLazy$1,I(f(f({},c),h),{value:m,onChange:p})):(0,import_jsx_runtime.jsx)(import_antd.Input,I(f(f({},c),h),{value:m,onChange:g=>{var x;return p==null?void 0:p((x=g==null?void 0:g.target)==null?void 0:x.value)}}))}}const VariableFilterItem=(0,import_reactive_react.observer)(({value:e,model:t,rightAsVariable:o,rightMetaTree:r})=>{const i=(0,import_flow_engine.useFlowViewContext)(),n=t.translate,{path:l,operator:a,value:c}=e,[u,d]=(0,import_react2.useState)(null),m=(0,import_react2.useMemo)(()=>{var T,M,R;if(!(u!=null&&u.interface))return[];const B=(T=t.context.app)==null?void 0:T.dataSourceManager,D=(M=B==null?void 0:B.collectionFieldInterfaceManager)==null?void 0:M.getFieldInterface(u.interface);return(((R=D==null?void 0:D.filterable)==null?void 0:R.operators)||[]).filter(w=>!w.visible||w.visible(u))},[u,t]);(0,import_react2.useEffect)(()=>{m.length>0&&!import_lodash.default.find(m,T=>T.value===e.operator)&&(e.operator="",e.value="")},[m,e]);const p=(0,import_react2.useMemo)(()=>m.map(T=>{var M,R;return{value:T.value,label:typeof T.label=="string"?n(T.label):((R=(M=T.label)==null?void 0:M.toString)==null?void 0:R.call(M))||String(T.label)}}),[m,n]),h=(0,import_react2.useCallback)((T,M)=>{e.path=T||"",M&&d(M)},[e]),g=(0,import_react2.useMemo)(()=>({resolveValueFromPath:T=>(d(T),(T==null?void 0:T.paths.slice(1).join("."))||null),resolvePathFromValue(T){return T&&["collection",...String(T).split(".")]}}),[]),x=(0,import_react2.useCallback)(T=>{e.operator=T;const M=m.find(R=>R.value===T);M!=null&&M.noValue&&(e.value="")},[m,e]),_=(0,import_react2.useMemo)(()=>m.find(T=>T.value===a),[m,a]),v=(0,import_react2.useMemo)(()=>{const T=(u==null?void 0:u.uiSchema)||{},M=(_==null?void 0:_.schema)||{};return(0,import_merge.default)({},T,M)},[u,_]),C=import_react2.default.useRef(n);import_react2.default.useEffect(()=>{C.current=n},[n]);const y=import_react2.default.useCallback(T=>{var M,R;return(R=(M=C.current)==null?void 0:M.call(C,T))!=null?R:T},[]),b=(0,import_react2.useMemo)(()=>createStaticInputRenderer$1(v,u,y),[v,u,y]),S=(0,import_react2.useCallback)(()=>(0,import_jsx_runtime.jsx)("div",{style:{flex:"1 1 40%",minWidth:160,maxWidth:"100%"},children:(0,import_jsx_runtime.jsx)(b,{value:c,onChange:T=>e.value=T})}),[b,c,e]),F=(0,import_react2.useMemo)(()=>function(){return(0,import_jsx_runtime.jsx)(import_antd.Input,{placeholder:`<${n("Null")}>`,readOnly:!0})},[n]),j=(0,import_react2.useMemo)(()=>()=>E(void 0,null,function*(){const T=typeof r=="function"?yield r():r||i.getPropertyMetaTree();return[{title:n("Constant"),name:"constant",type:"string",paths:["constant"],render:b},{title:n("Null"),name:"null",type:"object",paths:["null"],render:F},...Array.isArray(T)?T:[]]}),[r,i,b,F,n]),P=(0,import_react2.useMemo)(()=>({renderInputComponent:T=>{var M;const R=(M=T==null?void 0:T.paths)==null?void 0:M[0];return R==="constant"?b:R==="null"?F:null},resolveValueFromPath:T=>{var M;const R=(M=T==null?void 0:T.paths)==null?void 0:M[0];if(R==="constant")return"";if(R==="null")return null},resolvePathFromValue:T=>T===null?["null"]:(0,import_flow_engine.parseValueToPath)(T)||["constant"]}),[F,b]);return(0,import_jsx_runtime.jsxs)(import_antd.Space,{wrap:!0,style:{width:"100%"},children:[(0,import_jsx_runtime.jsx)(import_flow_engine.VariableInput,{value:l,metaTree:()=>t.context.getPropertyMetaTree("{{ ctx.collection }}"),onChange:h,converters:g,showValueComponent:!1,style:{flex:"1 1 40%",minWidth:160,maxWidth:"100%"},onlyLeafSelectable:!0,placeholder:n("Select field")}),(0,import_jsx_runtime.jsx)(import_antd.Select,{style:{flex:"0 0 140px",minWidth:120,maxWidth:"100%"},placeholder:n("Comparison"),value:a||void 0,onChange:x,children:p.map(T=>(0,import_jsx_runtime.jsx)(import_antd.Select.Option,{value:T.value,children:T.label},T.value))}),!(_!=null&&_.noValue)&&(o?(0,import_jsx_runtime.jsx)(import_flow_engine.VariableInput,{value:c,onChange:T=>e.value=T,metaTree:j,converters:P,showValueComponent:!0,style:{flex:"1 1 40%",minWidth:160,maxWidth:"100%"},placeholder:n("Enter value")}):S())]})});function normalizeUiSchemaEnumToOptions(e=[]){return Array.isArray(e)?e.map(t=>{var o;if(t&&typeof t=="object"&&!Array.isArray(t)){const r=t,i=typeof r.label<"u",n=typeof r.value<"u",l=i?r.label:String((o=r.value)!=null?o:""),a=n?r.value:l,c={label:l,value:a};return r.color&&(c.color=r.color),r.icon&&(c.icon=r.icon),c}return{label:String(t),value:t}}):[]}function ensureOptionsFromUiSchemaEnumIfAbsent(e,t){var o,r,i,n;const l=t==null?void 0:t.interface;if(!["radioGroup","checkboxGroup","select","multipleSelect"].includes(l)||Array.isArray((o=e.props)==null?void 0:o.options)&&((i=(r=e.props)==null?void 0:r.options)==null?void 0:i.length)>0)return!1;const a=(n=t.uiSchema)==null?void 0:n.enum;if(!Array.isArray(a)||a.length===0)return!1;const c=normalizeUiSchemaEnumToOptions(a);return c.length?(e.setProps({options:c}),!0):!1}const{DateFilterDynamicComponent:DateFilterDynamicComponentLazy}=lazy(()=>Promise.resolve().then(()=>DateFilterDynamicComponent$1),"DateFilterDynamicComponent");function createStaticInputRenderer(e,t,o){var r,i,n;const l=e==null?void 0:e["x-component"],a=((r=t==null?void 0:t.uiSchema)==null?void 0:r["x-component-props"])||{},c=(e==null?void 0:e["x-component-props"])||{},u=(0,import_merge.default)({},a,c),d=Array.isArray((i=t==null?void 0:t.uiSchema)==null?void 0:i.enum)?(n=t==null?void 0:t.uiSchema)==null?void 0:n.enum:void 0,m=d?normalizeUiSchemaEnumToOptions(d):void 0,p=f({style:f({width:200},(u==null?void 0:u.style)||{}),placeholder:(u==null?void 0:u.placeholder)||o("Enter value")},u);return h=>{const g=h||{},{value:x,onChange:_}=g,v=W(g,["value","onChange"]);if(l==="InputNumber")return(0,import_jsx_runtime.jsx)(import_antd.InputNumber,I(f(f({},p),v),{value:x,onChange:_}));if(l==="NumberPicker")return(0,import_jsx_runtime.jsx)(import_antd_v5.NumberPicker,I(f(f({},p),v),{value:x,onChange:_}));if(l==="Switch")return(0,import_jsx_runtime.jsx)(import_antd.Switch,I(f(f({},p),v),{checked:!!x,onChange:_}));if(l==="Select"){const C=Array.isArray(p==null?void 0:p.options)&&p.options.length>0||!m?p:I(f({},p),{options:m});return(0,import_jsx_runtime.jsx)(import_antd.Select,I(f(f({},C),v),{value:x,onChange:_}))}return l==="DateFilterDynamicComponent"?(0,import_jsx_runtime.jsx)(DateFilterDynamicComponentLazy,I(f(f({},p),v),{value:x,onChange:_})):(0,import_jsx_runtime.jsx)(import_antd.Input,I(f(f({},p),v),{value:x,onChange:C=>{var y;return _==null?void 0:_((y=C==null?void 0:C.target)==null?void 0:y.value)}}))}}const fallbackStringOperators=[{value:"$includes",label:"contains",selected:!0},{value:"$notIncludes",label:"does not contain"},{value:"$eq",label:"is"},{value:"$ne",label:"is not"},{value:"$empty",label:"is empty",noValue:!0},{value:"$notEmpty",label:"is not empty",noValue:!0}],LinkageFilterItem=(0,import_reactive_react.observer)(e=>{var t;const{value:o,model:r}=e,i=(0,import_flow_engine.useFlowViewContext)(),n=r.translate,{path:l,operator:a,value:c}=o||{},[u,d]=(0,import_react2.useState)(null),m=(0,import_react2.useRef)(!1),p=(0,import_react2.useMemo)(()=>{if(!u)return"";const M=u.interface||"",R=Array.isArray(u.paths)?u.paths.join("."):"";return`${M}|${R}`},[u]),h=(0,import_react2.useMemo)(()=>u!=null&&u.interface?(r.context.app.dataSourceManager.collectionFieldInterfaceManager.getFieldInterface(u.interface).filterable.operators||[]).filter(M=>!M.visible||M.visible(u)).map(M=>({value:M.value,label:typeof M.label=="string"?M.label:String(M.label),noValue:!!M.noValue,schema:M.schema,selected:!!M.selected})):u?fallbackStringOperators:[],[p,r]),g=(0,import_react2.useMemo)(()=>h.map(M=>({value:M.value,label:n(M.label)})),[h,n]);(0,import_react2.useEffect)(()=>{if(h.length!==0){if(!a){if(m.current){const M=h.find(R=>R.selected)||h[0];o.operator=(M==null?void 0:M.value)||"",M!=null&&M.noValue&&(o.value=""),m.current=!1}return}if(!h.some(M=>M.value===a)){const M=h.find(R=>R.selected)||h[0];o.operator=(M==null?void 0:M.value)||"",M!=null&&M.noValue&&(o.value="")}}},[h,a,o]);const x=(0,import_react2.useMemo)(()=>h.find(M=>M.value===a),[h,a]),_=(0,import_react2.useMemo)(()=>{const M=(u==null?void 0:u.uiSchema)||{},R=(x==null?void 0:x.schema)||{};return(0,import_merge.default)({},M,R)},[u,x]),v=(0,import_react2.useRef)(n);(0,import_react2.useEffect)(()=>{v.current=n},[n]);const C=(0,import_react2.useCallback)(M=>{var R,B;return(B=(R=v.current)==null?void 0:R.call(v,M))!=null?B:M},[]),y=(0,import_react2.useMemo)(()=>createStaticInputRenderer(_,u,C),[_,u,C]),b=(0,import_react2.useMemo)(()=>function(){return(0,import_jsx_runtime.jsx)(import_antd.Input,{placeholder:`<${n("Null")}>`,readOnly:!0})},[n]),S=(0,import_react2.useRef)(null);if(!S.current){const M=i.getPropertyMetaTree();S.current=[{title:n("Constant"),name:"constant",type:"string",paths:["constant"]},{title:n("Null"),name:"null",type:"object",paths:["null"]},...Array.isArray(M)?M:[]]}const F=(0,import_react2.useCallback)(()=>i.getPropertyMetaTree(),[i]),j=(0,import_react2.useMemo)(()=>({renderInputComponent:M=>{var R;const B=(R=M==null?void 0:M.paths)==null?void 0:R[0];return B==="constant"?y:B==="null"?b:null},resolveValueFromPath:M=>{var R;const B=(R=M==null?void 0:M.paths)==null?void 0:R[0];if(B==="constant")return"";if(B==="null")return null},resolvePathFromValue:M=>M===null?["null"]:(0,import_flow_engine.parseValueToPath)(M)||["constant"]}),[b,y]),P=(0,import_react2.useCallback)((M,R)=>{const B=o.path||"",D=M||"",w=D!==B;o.path=D,w&&B&&(o.operator="",o.value="",m.current=!0),!B&&D&&!o.operator&&(m.current=!0),R&&d(R)},[o]),T=(0,import_react2.useCallback)(M=>{o.operator=M;const R=h.find(B=>B.value===M);R!=null&&R.noValue&&(o.value="")},[o,h]);return(0,import_jsx_runtime.jsxs)(import_antd.Space,{wrap:!0,style:{width:"100%"},children:[(0,import_jsx_runtime.jsx)(import_flow_engine.VariableInput,{value:l,onChange:P,metaTree:F,showValueComponent:!0,style:{flex:"1 1 40%",minWidth:160,maxWidth:"100%"},placeholder:n("Select variable"),onlyLeafSelectable:!0}),(0,import_jsx_runtime.jsx)(import_antd.Select,{style:{flex:"0 0 140px",minWidth:120,maxWidth:"100%"},placeholder:n("Comparison"),value:a||void 0,onChange:T,children:g.map(M=>(0,import_jsx_runtime.jsx)(import_antd.Select.Option,{value:M.value,children:M.label},M.value))}),!((t=h.find(M=>M.value===a))!=null&&t.noValue)&&(0,import_jsx_runtime.jsx)(import_flow_engine.VariableInput,{value:c,onChange:M=>o.value=M,metaTree:S.current,converters:j,showValueComponent:!0,style:{flex:"1 1 40%",minWidth:160,maxWidth:"100%"},placeholder:n("Enter value"),clearValue:""})]})}),dataScope=(0,import_flow_engine.defineAction)({name:"dataScope",title:(0,import_client.tval)("Data scope"),uiMode:{type:"dialog",props:{width:800}},uiSchema:{filter:{type:"object","x-decorator":"FormItem","x-component":function e(t){const o=(0,import_flow_engine.useFlowSettingsContext)();return(0,import_jsx_runtime.jsx)(FilterGroup,{value:t.value,FilterItem:r=>(0,import_jsx_runtime.jsx)(VariableFilterItem,I(f({},r),{model:o.model,rightAsVariable:!0}))})}}},defaultParams(e){return{filter:{logic:"$and",items:[]}}},handler(e,t){return E(this,null,function*(){var o;const r=(o=e.model)==null?void 0:o.resource;if(!r)return;const i=(0,import_client.removeNullCondition)((0,import_client.transformFilter)(t.filter));(0,import_client.isEmptyFilter)(i)?r.removeFilterGroup(e.model.uid):r.addFilterGroup(e.model.uid,i)})}});function SkeletonFallback(e){return(0,import_jsx_runtime.jsx)(import_antd.Card,I(f({},e),{children:(0,import_jsx_runtime.jsx)(import_antd.Skeleton,{paragraph:{rows:3}})}))}class RouteModel extends import_flow_engine.FlowModel{}RouteModel.registerFlow({key:"popupSettings",on:"click",steps:{openView:{use:"openView",defaultParams(e){return{mode:"embed",preventClose:!0,pageModelClass:"RootPageModel"}}}}});function resolveViewParamsToViewList(e,t,o){return E(this,null,function*(){const r=t.map((l,a)=>E(this,null,function*(){let c;if(a===0?c=o:c=e.getModel(l.viewUid,!0)||(yield e.loadModel({uid:l.viewUid})),!c)throw new Error(`Model with uid ${l.viewUid} not found`);return{params:l,model:c,hidden:import_flow_engine.observable.ref(!1),index:a}})),i=yield Promise.all(r);let n=!1;for(let l=i.length-1;l>=0;l--){const a=i[l];getViewType(a)==="embed"&&!n?(n=!0,a.hidden.value=!1):a.hidden.value=n}return i})}function getViewType(e){if(e.model instanceof RouteModel)return"embed";const t=e.model.getStepParams("popupSettings","openView");return(t==null?void 0:t.mode)||"drawer"}function getViewDiffAndUpdateHidden(e,t){const o=new Map,r=new Map;e.forEach(l=>{o.set(`${l.params.viewUid}_${l.index}`,l)}),t.forEach(l=>{r.set(`${l.params.viewUid}_${l.index}`,l)});const i=[];o.forEach((l,a)=>{r.has(a)?l.hidden.value=r.get(a).hidden.value:i.push(l)});const n=[];return r.forEach((l,a)=>{o.has(a)||n.push(l)}),{viewsToClose:i,viewsToOpen:n}}const openViewFlow=(0,import_flow_engine.defineFlow)({key:"popupSettings",title:(0,import_flow_engine.escapeT)("Popup settings"),on:"click",steps:{openView:{use:"openView"}},defaultParams:e=>{var t,o,r,i,n,l;let a,c,u;const d=e.collectionField,m=e.blockModel;if((t=d==null?void 0:d.isAssociationField)!=null&&t.call(d)){const p=d.targetCollection,h=m==null?void 0:m.collection;a=p==null?void 0:p.name,c=p==null?void 0:p.dataSourceKey,u=h!=null&&h.name&&d!=null&&d.name?`${h.name}.${d.name}`:void 0}else d?(a=(o=e.collection)==null?void 0:o.name,c=(r=e.collection)==null?void 0:r.dataSourceKey,u=d==null?void 0:d.target):(a=(i=e.collection)==null?void 0:i.name,c=(n=e.collection)==null?void 0:n.dataSourceKey,u=(l=e.association)==null?void 0:l.resourceName);return{openView:{collectionName:a,associationName:u,dataSourceKey:c}}}}),getOpenViewStepParams=e=>e.getStepParams("popupSettings","openView");function InternalFlowPage(e){var t=e,{uid:o}=t,r=W(t,["uid"]);const i=(0,import_flow_engine.useFlowModelById)(o);return(0,import_jsx_runtime.jsx)(import_flow_engine.FlowModelRenderer,f({model:i,fallback:(0,import_jsx_runtime.jsx)(SkeletonFallback,{style:{margin:16}}),hideRemoveInSettings:!0,showFlowSettings:{showBackground:!1,showBorder:!1}},r))}const getKey=e=>`${e.params.viewUid}_${e.index}`,FlowRoute=()=>{const e=(0,import_react2.useRef)(null),t=(0,import_flow_engine.useFlowEngine)(),o=useCurrentRoute(),{refresh:r}=useAllAccessDesktopRoutes(),{isMobileLayout:i}=useMobileLayout(),n=(0,import_react2.useRef)(t.context.route.params.name),l=(0,import_react2.useRef)({}),a=(0,import_react2.useRef)([]),c=(0,import_react2.useRef)(!1),{designable:u}=useDesignable(),d=(0,import_react2.useMemo)(()=>t.createModel({uid:n.current,use:"RouteModel"}),[t]);return(0,import_react2.useEffect)(()=>{t.context.defineProperty("isMobileLayout",{get:()=>i})},[i,t]),(0,import_react2.useEffect)(()=>{i?t.flowSettings.disable():u&&t.flowSettings.enable()},[u,t,i]),(0,import_react2.useEffect)(()=>{e.current&&(d.context.defineProperty("layoutContentElement",{get:()=>e.current}),d.context.defineProperty("currentRoute",{get:()=>o}),t.context.defineProperty("currentRoute",{get:()=>o}),d.context.defineProperty("refreshDesktopRoutes",{get:()=>r}))},[d,o,r,t]),(0,import_react2.useEffect)(()=>{const m=(0,import_flow_engine.reaction)(()=>t.context.route,p=>E(void 0,null,function*(){if(p.params.name!==n.current)return;const h=(0,import_flow_engine.parsePathnameToViewParams)(p.pathname),g=yield resolveViewParamsToViewList(t,h,d);if(a.current.length===0&&g.length>1&&!c.current){const v=C=>{g[C]&&(C===0?new import_flow_engine.ViewNavigation(t.context,[]).navigateTo(g[C].params,{replace:!0}):new import_flow_engine.ViewNavigation(t.context,g.slice(0,C).map(y=>y.params)).navigateTo(g[C].params),v(C+1))};v(0),c.current=!0;return}const{viewsToClose:x,viewsToOpen:_}=getViewDiffAndUpdateHidden(a.current,g);if(_.length){const v=C=>{if(!_[C])return;const y=_[C],b=import_react2.default.createRef(),S=import_react2.default.createRef(),F=getOpenViewStepParams(y.model);a.current.push(y);const j=a.current.slice(0,-1).map(P=>P.params.viewUid);y.model.dispatchEvent("click",I(f({target:e.current,collectionName:F==null?void 0:F.collectionName,associationName:F==null?void 0:F.associationName,dataSourceKey:F==null?void 0:F.dataSourceKey,closeRef:b,updateRef:S,openerUids:j},y.params),{navigation:new import_flow_engine.ViewNavigation(t.context,a.current.map(P=>P.params)),onOpen(){v(C+1)},hidden:y.hidden,isMobileLayout:i})),l.current[getKey(y)]={close:P=>{var T;return(T=b.current)==null?void 0:T.call(b,void 0,P)},update:P=>{var T;return(T=S.current)==null?void 0:T.call(S,P)}}};v(0)}x.forEach(v=>{var C,y;(y=(C=l.current[getKey(v)])==null?void 0:C.close)==null||y.call(C,!0),delete l.current[getKey(v)],a.current=a.current.filter(b=>getKey(b)!==getKey(v))})}),{fireImmediately:!0});return()=>{m==null||m(),a.current.forEach(p=>{var h,g;(g=(h=l.current[getKey(p)])==null?void 0:h.close)==null||g.call(h,!0),t.removeModel(p.params.viewUid),delete l.current[getKey(p)]}),a.current=[]}},[t,i,d]),(0,import_jsx_runtime.jsx)("div",{ref:e})},FlowPage=e=>{const t=e,{pageModelClass:o="ChildPageModel",parentId:r,onModelLoaded:i}=t,n=W(t,["pageModelClass","parentId","onModelLoaded"]),l=(0,import_flow_engine.useFlowEngine)(),a=(0,import_flow_engine.useFlowViewContext)(),{loading:c,data:u}=(0,import_ahooks.useRequest)(()=>E(void 0,null,function*(){const d={async:!0,parentId:r,subKey:"page",subType:"object",use:o};o==="ChildPageModel"&&(d.subModels={tabs:[{use:"ChildPageTabModel",stepParams:{pageTabSettings:{tab:{title:"Details"}}}}]},d.stepParams={pageSettings:{general:{displayTitle:!1,enableTabs:!0}}});const m=yield l.loadOrCreateModel(d);return m!=null&&m.uid&&i&&(m.context.addDelegate(a),m.removeParentDelegate(),i(m.uid,m)),m}),{refreshDeps:[r]});return c||!(u!=null&&u.uid)?(0,import_jsx_runtime.jsx)(SkeletonFallback,{style:{margin:16}}):(0,import_jsx_runtime.jsx)(InternalFlowPage,f({uid:u.uid},n))},RemoteFlowModelRenderer=e=>{const t=e,{uid:o,parentId:r,subKey:i}=t,n=W(t,["uid","parentId","subKey"]),l=(0,import_flow_engine.useFlowEngine)(),{loading:a,data:c}=(0,import_ahooks.useRequest)(()=>E(void 0,null,function*(){return yield l.loadModel({uid:o,parentId:r,subKey:i})}),{refreshDeps:[o,r,i]});return a||!(c!=null&&c.uid)?(0,import_jsx_runtime.jsx)(SkeletonFallback,{style:{margin:16}}):(0,import_jsx_runtime.jsx)(InternalFlowPage,f({uid:c.uid},n))},openView=(0,import_flow_engine.defineAction)({name:"openView",title:(0,import_flow_engine.escapeT)("Edit popup"),uiSchema:{mode:{type:"string",title:(0,import_flow_engine.escapeT)("Open mode"),enum:[{label:(0,import_flow_engine.escapeT)("Drawer"),value:"drawer"},{label:(0,import_flow_engine.escapeT)("Dialog"),value:"dialog"},{label:(0,import_flow_engine.escapeT)("Page"),value:"embed"}],"x-decorator":"FormItem","x-component":"Radio.Group"},size:{type:"string",title:(0,import_flow_engine.escapeT)("Popup size"),enum:[{label:(0,import_flow_engine.escapeT)("Small"),value:"small"},{label:(0,import_flow_engine.escapeT)("Medium"),value:"medium"},{label:(0,import_flow_engine.escapeT)("Large"),value:"large"}],"x-decorator":"FormItem","x-component":"Radio.Group","x-reactions":{dependencies:["mode"],fulfill:{state:{hidden:'{{$deps[0] === "embed"}}'}}}},uid:{type:"string",title:(0,import_flow_engine.escapeT)("Popup uid"),required:!0,"x-decorator":"FormItem","x-component":function e(t){const{value:o,onChange:r}=t,i=(0,import_flow_engine.useFlowSettingsContext)(),n=(0,import_react.useField)(),l=(0,import_react.useForm)(),a=(0,import_react2.useCallback)((u,d)=>{l.setFieldState(u,m=>{m.disabled=d})},[l]),c=(0,import_react2.useCallback)((u,d)=>{const m=["dataSourceKey","collectionName","associationName","sourceId","filterByTk"];if(!u){m.forEach(g=>a(g,!1)),a("tabUid",!1);return}const p=g=>u[g];m.forEach(g=>{const x=p(g);x!==void 0?(l.setValuesIn(g,x),g==="dataSourceKey"||g==="collectionName"?a(g,!0):a(g,!!d)):a(g,!1)});const h=p("tabUid");h!==void 0?(l.setValuesIn("tabUid",h),a("tabUid",!!d)):a("tabUid",!1)},[l,a]);return(0,import_react2.useEffect)(()=>{let u=!0;return E(this,null,function*(){var d,m;l.setFieldState((d=n.props)==null?void 0:d.name,p=>{p.loading=!0});try{const p=i.engine;let h=p.getModel(o);if(h||(h=yield p.loadModel({uid:o})),!u)return;if(!h){n.setFeedback({type:"error",code:"NotFound",messages:[i.t("Popup UID not exists")]}),c(null,!1);return}n.setFeedback({});const g=h.getStepParams("popupSettings","openView")||{},x=h.uid===i.model.uid;c(g||null,!x)}catch{if(!u)return;n.setFeedback({type:"error",code:"LoadFailed",messages:[i.t("Failed to load popup by UID")]}),c(null,!1)}finally{u&&l.setFieldState((m=n.props)==null?void 0:m.name,p=>{p.loading=!1})}}),()=>{u=!1}},[o,i,n,l,c]),(0,import_jsx_runtime.jsx)(import_antd.Input,{value:o,onChange:u=>{var d;return r==null?void 0:r((d=u==null?void 0:u.target)==null?void 0:d.value)},suffix:(0,import_jsx_runtime.jsx)("span",{children:n!=null&&n.loading||n.validating?(0,import_jsx_runtime.jsx)(import_icons.LoadingOutlined,{}):null})})}},dsAndCollection:{type:"array",title:(0,import_flow_engine.escapeT)("Data source / Collection"),"x-decorator":"FormItem","x-component":function e(t){const{disabled:o,placeholder:r}=t,i=(0,import_flow_engine.useFlowSettingsContext)(),n=(0,import_react.useForm)(),[l,a]=(0,import_react2.useState)(()=>{var g;return(g=n==null?void 0:n.values)==null?void 0:g.dataSourceKey}),[c,u]=(0,import_react2.useState)(()=>{var g;return(g=n==null?void 0:n.values)==null?void 0:g.collectionName});(0,import_react.useFormEffects)(()=>{(0,import_core.onFieldValueChange)("dataSourceKey",g=>a(g.value)),(0,import_core.onFieldValueChange)("collectionName",g=>u(g.value))}),(0,import_react2.useEffect)(()=>{var g,x;a((g=n==null?void 0:n.values)==null?void 0:g.dataSourceKey),u((x=n==null?void 0:n.values)==null?void 0:x.collectionName)},[n]);const d=(0,import_react2.useMemo)(()=>l&&c?[l,c]:void 0,[l,c]),m=(0,import_react2.useMemo)(()=>{var g,x;return(((x=(g=i==null?void 0:i.dataSourceManager)==null?void 0:g.getDataSources)==null?void 0:x.call(g))||[]).map(_=>{var v;return{label:_.displayName,value:_.key,children:(((v=_.getCollections)==null?void 0:v.call(_))||[]).map(C=>({label:C.title,value:C.name}))}})},[i]),p=!0,h=(0,import_react2.useCallback)(g=>{if(!g||g.length<2){n.setValuesIn("dataSourceKey",void 0),n.setValuesIn("collectionName",void 0);return}const[x,_]=g;n.setValuesIn("dataSourceKey",x),n.setValuesIn("collectionName",_),n.setValuesIn("associationName",void 0)},[n]);return(0,import_jsx_runtime.jsx)(import_antd.Cascader,{options:m,value:d,onChange:h,disabled:p,placeholder:r,allowClear:!0,showSearch:!0,style:{width:"100%"}})}},dataSourceKey:{type:"string",title:(0,import_flow_engine.escapeT)("Data source key"),"x-decorator":"FormItem","x-component":function e(t){const{value:o,onChange:r,disabled:i,placeholder:n}=t,l=(0,import_flow_engine.useFlowSettingsContext)(),a=(0,import_react.useForm)(),c=(0,import_react2.useMemo)(()=>{var d,m;return(((m=(d=l==null?void 0:l.dataSourceManager)==null?void 0:d.getDataSources)==null?void 0:m.call(d))||[]).map(p=>({label:p.displayName,value:p.key}))},[l]),u=(0,import_react2.useCallback)(d=>{d!==o&&(a.setValuesIn("collectionName",void 0),a.setValuesIn("associationName",void 0)),r==null||r(d)},[r,a,o]);return(0,import_jsx_runtime.jsx)(import_antd.Select,{showSearch:!0,allowClear:!0,options:c,value:o,onChange:u,disabled:i,placeholder:n,optionFilterProp:"label",style:{width:"100%"}})},"x-reactions":{fulfill:{state:{hidden:!0}}}},collectionName:{type:"string",title:(0,import_flow_engine.escapeT)("Collection name"),"x-decorator":"FormItem","x-component":function e(t){const{value:o,onChange:r,disabled:i,placeholder:n}=t,l=(0,import_flow_engine.useFlowSettingsContext)(),a=(0,import_react.useForm)(),[c,u]=(0,import_react2.useState)(()=>{var m;return(m=a==null?void 0:a.values)==null?void 0:m.dataSourceKey});(0,import_react.useFormEffects)(()=>{(0,import_core.onFieldValueChange)("dataSourceKey",m=>u(m.value))}),(0,import_react2.useEffect)(()=>{var m;u((m=a==null?void 0:a.values)==null?void 0:m.dataSourceKey)},[a]);const d=(0,import_react2.useMemo)(()=>{var m,p,h;if(!c)return[];const g=(p=(m=l==null?void 0:l.dataSourceManager)==null?void 0:m.getDataSource)==null?void 0:p.call(m,c);return(((h=g==null?void 0:g.getCollections)==null?void 0:h.call(g))||[]).map(x=>({label:x.title,value:x.name}))},[l,c]);return(0,import_jsx_runtime.jsx)(import_antd.Select,{showSearch:!0,allowClear:!0,options:d,value:o,onChange:m=>{m!==o&&a.setValuesIn("associationName",void 0),r==null||r(m)},disabled:i||!c,placeholder:n||(c?void 0:l.t("Please select data source first")),optionFilterProp:"label",style:{width:"100%"}})},"x-reactions":{fulfill:{state:{hidden:!0}}}},associationName:{type:"string",title:(0,import_flow_engine.escapeT)("Association name"),"x-decorator":"FormItem","x-component":function e(t){const{value:o,onChange:r,disabled:i,placeholder:n}=t,l=(0,import_flow_engine.useFlowSettingsContext)(),a=(0,import_react.useForm)(),[c,u]=(0,import_react2.useState)(()=>{var h;return(h=a==null?void 0:a.values)==null?void 0:h.dataSourceKey}),[d,m]=(0,import_react2.useState)(()=>{var h;return(h=a==null?void 0:a.values)==null?void 0:h.collectionName});(0,import_react.useFormEffects)(()=>{(0,import_core.onFieldValueChange)("dataSourceKey",h=>u(h.value)),(0,import_core.onFieldValueChange)("collectionName",h=>m(h.value))}),(0,import_react2.useEffect)(()=>{var h,g;u((h=a==null?void 0:a.values)==null?void 0:h.dataSourceKey),m((g=a==null?void 0:a.values)==null?void 0:g.collectionName)},[a]);const p=(0,import_react2.useMemo)(()=>{var h,g,x,_;if(!c||!d)return[];const v=(g=(h=l==null?void 0:l.dataSourceManager)==null?void 0:h.getDataSource)==null?void 0:g.call(h,c),C=(x=v==null?void 0:v.getCollection)==null?void 0:x.call(v,d);if(!C)return[];const y=((_=C.getAssociationFields)==null?void 0:_.call(C,["many","one"]))||[];return[{label:C.title,value:C.name},...y.map(b=>({label:`${C.title}.${b.title||b.name}`,value:`${C.name}.${b.name}`}))]},[l,c,d]);return(0,import_jsx_runtime.jsx)(import_antd.Select,{showSearch:!0,allowClear:!0,options:p,value:o,onChange:r,disabled:i||!c||!d,placeholder:n||(c?d?void 0:l.t("Please select collection first"):l.t("Please select data source first")),optionFilterProp:"label",style:{width:"100%"}})},"x-reactions":{fulfill:{state:{hidden:"{{!$self.value}}",disabled:'{{ $self.initialValue != null && $self.initialValue !== "" }}'}}}},tabUid:{type:"string",title:(0,import_flow_engine.escapeT)("Tab uid"),"x-decorator":"FormItem","x-component":"Input","x-reactions":{fulfill:{state:{hidden:!0}}}},sourceId:{type:"string",title:(0,import_flow_engine.escapeT)("Source ID"),"x-decorator":"FormItem","x-component":function e(t){const o=(0,import_flow_engine.useFlowSettingsContext)(),r=(0,import_react2.useMemo)(()=>{var i,n;try{const l=(o.getPropertyMetaTree()||[]).filter(u=>["record","resource"].includes(String(u==null?void 0:u.name))),a=l.some(u=>String(u==null?void 0:u.name)==="resource");let c=!1;try{const u=(n=(i=o==null?void 0:o.resource)==null?void 0:i.getSourceId)==null?void 0:n.call(i);c=u!=null&&String(u)!==""}catch{}return!a&&c&&l.push({name:"resource",title:o.t("Resource"),type:"object",paths:["resource"],children:[{name:"sourceId",title:o.t("Source ID"),type:"string",paths:["resource","sourceId"]}]}),l.filter(u=>String(u==null?void 0:u.name)==="record"||String(u==null?void 0:u.name)==="resource")}catch{return o.getPropertyMetaTree()}},[o]);return(0,import_jsx_runtime.jsx)(import_flow_engine.VariableInput,{value:t.value,onChange:t.onChange,disabled:t.disabled,placeholder:t.placeholder,metaTree:()=>r})},"x-reactions":{dependencies:["associationName"],fulfill:{state:{hidden:"{{!$deps[0]}}"}}}},filterByTk:{type:"string",title:(0,import_flow_engine.escapeT)("Filter by TK"),"x-decorator":"FormItem","x-component":function e(t){const o=(0,import_flow_engine.useFlowSettingsContext)(),r=(0,import_react2.useMemo)(()=>{try{return(o.getPropertyMetaTree()||[]).filter(i=>String(i==null?void 0:i.name)==="record")}catch{return o.getPropertyMetaTree()}},[o]);return(0,import_jsx_runtime.jsx)(import_flow_engine.VariableInput,{value:t.value,onChange:t.onChange,disabled:t.disabled,placeholder:t.placeholder,metaTree:()=>r})}}},defaultParams:e=>E(void 0,null,function*(){var t,o,r;const i=e.getPropertyMetaTree()||[],n=Array.isArray(i)&&i.some(p=>String(p==null?void 0:p.name)==="record"),l=e==null?void 0:e.collection,a=n&&l&&typeof l.filterTargetKey=="string"&&l.filterTargetKey?l.filterTargetKey:"id",c=n?`{{ ctx.record.${a} }}`:void 0;let u;try{const p=(o=(t=e==null?void 0:e.resource)==null?void 0:t.getSourceId)==null?void 0:o.call(t);p!=null&&String(p)!==""&&(u="{{ ctx.resource.sourceId }}")}catch{}const d=l==null?void 0:l.dataSourceKey,m=l==null?void 0:l.name;return f(f(f(f({mode:"drawer",size:"medium",pageModelClass:"ChildPageModel",uid:(r=e.model)==null?void 0:r.uid},c?{filterByTk:c}:{}),u?{sourceId:u}:{}),d?{dataSourceKey:d}:{}),m?{collectionName:m}:{})}),beforeParamsSave(e,t){return E(this,null,function*(){if(t!=null&&t.uid){const o=e.engine;if(!(o.getModel(t.uid)||(yield o.loadModel({uid:t.uid}))))throw new Error(e.t("Popup UID not exists"))}})},handler(e,t){return E(this,null,function*(){var o,r,i,n,l,a,c,u,d,m,p,h,g,x,_,v,C,y,b,S,F,j,P,T,M,R,B,D,w,$,N,A,O,q,V;if(t!=null&&t.uid&&t.uid!==e.model.uid){const ie=((r=(o=e.model)==null?void 0:o.getInputArgs)==null?void 0:r.call(o))||{};yield e.openView(t.uid,I(f({},t),{target:e.inputArgs.target||e.layoutContentElement,dataSourceKey:(i=t.dataSourceKey)!=null?i:ie.dataSourceKey,collectionName:(n=t.collectionName)!=null?n:ie.collectionName,associationName:(l=t.associationName)!=null?l:ie.associationName,filterByTk:(a=t.filterByTk)!=null?a:ie.filterByTk,sourceId:(c=t.sourceId)!=null?c:ie.sourceId,tabUid:t.tabUid}));return}const L=e.inputArgs||{},U=(u=e.view)==null?void 0:u.inputArgs;L.filterByTk=L.filterByTk||t.filterByTk||(U==null?void 0:U.filterByTk),L.sourceId=L.sourceId||t.sourceId||(U==null?void 0:U.sourceId),L.tabUid=L.tabuid||t.tabUid||(U==null?void 0:U.tabUid);const z=(d=L.navigation)!=null?d:t.navigation;if(z!==!1&&!e.inputArgs.navigation&&(m=e.view)!=null&&m.navigation){const ie=(p=e.inputArgs)!=null&&p.isMobileLayout?"embed":((h=e.inputArgs)==null?void 0:h.mode)||(t==null?void 0:t.mode)||"drawer",de=I(f({},e.inputArgs),{dataSourceKey:(g=t.dataSourceKey)!=null?g:e.inputArgs.dataSourceKey,collectionName:(x=t.collectionName)!=null?x:e.inputArgs.collectionName,associationName:(_=t.associationName)!=null?_:e.inputArgs.associationName,filterByTk:(v=L.filterByTk)!=null?v:t.filterByTk,sourceId:(C=L.sourceId)!=null?C:t.sourceId,tabUid:(y=L.tabUid)!=null?y:t.tabUid,viewUid:((S=(b=e.model.context)==null?void 0:b.inputArgs)==null?void 0:S.viewUid)||e.model.uid}),se={type:ie,inputArgs:de,navigation:(F=e.view)==null?void 0:F.navigation,preventClose:!!(t!=null&&t.preventClose),engineCtx:e.engine.context};e.model.context.defineProperty("view",{value:se});const ce={viewUid:((P=(j=e.model.context)==null?void 0:j.inputArgs)==null?void 0:P.viewUid)||e.model.uid,filterByTk:(T=L.filterByTk)!=null?T:t.filterByTk,sourceId:(M=L.sourceId)!=null?M:t.sourceId,tabUid:(R=L.tabUid)!=null?R:t.tabUid};e.view.navigation.navigateTo(ce);return}const G={drawer:{small:"30%",medium:"50%",large:"70%"},dialog:{small:"40%",medium:"50%",large:"80%"},embed:{}},Y=e.inputArgs.pageModelClass||t.pageModelClass||"ChildPageModel",K=e.inputArgs.mode||t.mode||"drawer",J=e.inputArgs.size||t.size||"medium";let H=null,Q=null,X=e.model.uid;if(t.subModelKey){const ie=yield e.engine.loadOrCreateModel({async:!0,parentId:e.model.uid,subKey:t.subModelKey,subType:"object",use:"FlowModel"});ie!=null&&ie.uid&&(X=ie.uid)}const te=!!((B=e.inputArgs)!=null&&B.navigation),Z=((w=(D=e.view)==null?void 0:D.inputArgs)==null?void 0:w.openerUids)||L.openerUids||[],oe=te?L.openerUids||Z:[...Z,((N=($=e.model.context)==null?void 0:$.inputArgs)==null?void 0:N.viewUid)||e.model.uid],le=I(f(f({},e.inputArgs),L),{dataSourceKey:t.dataSourceKey,collectionName:t.collectionName,associationName:t.associationName,tabUid:(A=L.tabUid)!=null?A:t.tabUid,openerUids:oe});le.filterByTk=(O=L.filterByTk)!=null?O:t.filterByTk,le.sourceId=(q=L.sourceId)!=null?q:t.sourceId,yield e.viewer.open({type:e.inputArgs.isMobileLayout?"embed":K,inputArgs:le,preventClose:!!t.preventClose,destroyOnClose:!0,inheritContext:!1,target:e.inputArgs.target||e.layoutContentElement,width:G[K][J],content:ie=>(e.inputArgs.closeRef&&(e.inputArgs.closeRef.current=ie.close),e.inputArgs.updateRef&&(e.inputArgs.updateRef.current=ie.update),(0,import_jsx_runtime.jsx)(FlowPage,{parentId:X,pageModelClass:Y,onModelLoaded:(de,se)=>{var ce,fe,pe,xe,he,ge,ve,ne;H=de;const ee=se||e.engine.getModel(H);Q=ee||null;const re=(xe=(pe=L.defineProperties)!=null?pe:(fe=(ce=e.model.context)==null?void 0:ce.inputArgs)==null?void 0:fe.defineProperties)!=null?xe:{},ae=(ne=(ve=L.defineMethods)!=null?ve:(ge=(he=e.model.context)==null?void 0:he.inputArgs)==null?void 0:ge.defineMethods)!=null?ne:{};ee.context.defineProperty("currentView",{get:()=>ie}),ee.context.defineProperty("view",{get:()=>ie}),ee.context.defineProperty("closable",{get:()=>K!=="embed"}),Object.entries(re).forEach(([ue,me])=>{ee.context.defineProperty(ue,me)}),Object.entries(ae).forEach(([ue,me])=>{ee.context.defineMethod(ue,me)}),ee.invalidateAutoFlowCache(!0),ee._rerunLastAutoRun()}})),styles:{content:f({padding:0,backgroundColor:e.model.flowEngine.context.themeToken.colorBgLayout},K==="embed"?{position:"absolute",top:0,left:0,right:0,bottom:0}:{}),body:{padding:0}},onClose:()=>{var ie,de;const se=((ie=e.inputArgs)==null?void 0:ie.navigation)||((de=e.view)==null?void 0:de.navigation);if(H){const ce=Q||e.model.flowEngine.getModel(H);ce==null||ce.invalidateAutoFlowCache(!0)}z!==!1&&se!=null&&se.back&&se.back()},onOpen:e.inputArgs.onOpen}),yield(V=e.resource)==null?void 0:V.refresh()})}}),InjectableRendingEventTrigger=e=>{var t=e,{children:o,mode:r}=t,i=W(t,["children","mode"]);if(import_react2.default.Children.count(o)!==1||!import_react2.default.isValidElement(o))throw new Error("InjectableRendingEventTrigger expects exactly one child element.");return r==="runtime"?(0,import_jsx_runtime.jsx)(RuntimeTrigger,I(f({},i),{children:o})):(0,import_jsx_runtime.jsx)(SettingsTrigger,I(f({},i),{children:o}))},SettingsTrigger=({children:e,name:t,language:o,scene:r})=>{const i=(0,import_flow_engine.useFlowSettingsContext)(),n=useInjectableProps(i,t,o,r,e);return import_react2.default.cloneElement(e,n)},RuntimeTrigger=({children:e,name:t,language:o,scene:r})=>{const i=(0,import_flow_engine.useFlowContext)(),n=useInjectableProps(i,t,o,r,e);return import_react2.default.cloneElement(e,n)},useInjectableProps=(e,t,o,r,i)=>{const[n,l]=import_react2.default.useState({});return(0,import_react2.useEffect)(()=>{e&&e.model.dispatchEvent("InjectableRending",{ctx:e,name:t,language:o,scene:r,children:i,setProps:l})},[e,t,o,r,i]),n};function buildLocalModuleMap(){var e,t;try{const o=import_meta;if(o&&typeof o.glob=="function")return o.glob("./**/*.snippet.{ts,js}",{eager:!1})}catch(o){try{(e=console.debug)==null||e.call(console,"[snippets/loader] import.meta.glob not available",o)}catch{}}try{const o=require==null?void 0:require.context("./",!0,/\.snippet\.(ts|js)$/);if(o){const r={};return o.keys().forEach(i=>{r[i]=()=>E(this,null,function*(){return o(i)})}),r}}catch(o){try{(t=console.debug)==null||t.call(console,"[snippets/loader] require.context not available",o)}catch{}}return{}}function normalizeKey(e){return e.replace(/^\.\//,"").replace(/\.(snippet\.)?(t|j)s$/,"")}function buildUnifiedMap(){const e={},t=buildLocalModuleMap();return Object.keys(t).forEach(o=>{e[normalizeKey(o)]=t[o]}),Object.assign(e,import_flow_engine.engineSnippets),e}const modules=buildUnifiedMap();function loadOne(e){return E(this,null,function*(){var t,o;const r=modules[e];if(!r)throw new Error(`Snippet not found: ${e}`);const i=yield r(),n=i==null?void 0:i.default;if(n&&typeof n=="object"&&typeof n.content=="string")return n.content;const l=(o=(t=n??(i==null?void 0:i.body))!=null?t:i==null?void 0:i.content)!=null?o:"";return typeof l=="string"?l:String(l??"")})}function loadSnippets(e){return E(this,null,function*(){var t;const o={};for(const[r,i]of Object.entries(e||{}))if(i&&typeof i=="object"&&typeof i.$ref=="string")try{o[r]=I(f({},i),{body:yield loadOne(i.$ref)})}catch(n){try{(t=console.debug)==null||t.call(console,"[snippets/loader] missing snippet ref",i.$ref,n)}catch{}o[r]=i}else o[r]=i;return o})}function deriveNameFromKey(e){const t=e.split("/");return t[t.length-1]||e}function groupFromKey(e){const t=e.split("/");if(!t.length)return;const o=t[0];return o==="global"||o==="libs"?o:o==="scene"&&t.length>=2?`${o}/${t[1]}`:t.length>=2?`${t[0]}/${t[1]}`:t[0]}function loadSnippetsForContext(e,t="v1"){return E(this,null,function*(){const o=[];return yield Promise.all(Object.entries(modules).map(r=>E(this,[r],function*([i,n]){var l;try{const a=yield n(),c=a==null?void 0:a.default;let u,d;if(c&&typeof c=="object"&&typeof c.content=="string"?(u=c,d=c.content):typeof c=="string"?(d=c,u=(a==null?void 0:a.meta)||(a==null?void 0:a.info)||{}):typeof(a==null?void 0:a.body)=="string"&&(d=a.body,u=(a==null?void 0:a.meta)||(a==null?void 0:a.info)||{}),typeof d!="string")return;let m=!0;if(u&&Array.isArray(u.contexts)&&u.contexts.length&&(m=u.contexts.includes("*")||u.contexts.includes(e)),m&&u&&Array.isArray(u.versions)&&u.versions.length&&(m=u.versions.includes("*")||u.versions.includes(t)),!m)return;const p=(u==null?void 0:u.label)||deriveNameFromKey(i),h=(u==null?void 0:u.prefix)||p;o.push({name:p,prefix:h,description:u==null?void 0:u.description,body:d,ref:i,group:groupFromKey(i)})}catch(a){try{(l=console.debug)==null||l.call(console,"[snippets/loader] load module failed",i,a)}catch{}}}))),o})}function buildRunJSCompletions(e,t="v1"){return E(this,null,function*(){var o,r;const i=e?(0,import_flow_engine.getRunJSDocFor)(e,{version:t}):import_flow_engine.FlowRunJSContext.getDoc(),n=yield loadSnippets((i==null?void 0:i.snipastes)||{}),l=[],a=m=>typeof m=="string"?m:JSON.stringify(m),c=(i==null?void 0:i.properties)||{};for(const m of Object.keys(c))l.push({label:`ctx.${m}`,type:"property",info:a(c[m]),detail:"ctx property"});const u=(i==null?void 0:i.methods)||{};for(const m of Object.keys(u))l.push({label:`ctx.${m}()`,type:"function",info:a(u[m]),detail:"ctx method",apply:(p,h,g,x)=>{p.dispatch({changes:{from:g,to:x,insert:`ctx.${m}()`}})}});const d=[];for(const[m,p]of Object.entries(n||{})){const h=typeof p=="string"?p:p.body,g=p&&p.prefix||m;if(!h)continue;const x=Array.isArray(h)?h.join(`
|
|
1693
|
+
`,children:"x"})})})]})},confirm$1=(0,import_flow_engine.defineAction)({name:"confirm",title:(0,import_flow_engine.escapeT)("Confirmation"),uiSchema:{enable:{type:"boolean",title:(0,import_flow_engine.escapeT)("Enable secondary confirmation"),"x-decorator":"FormItem","x-component":"Switch"},title:{type:"string",title:(0,import_flow_engine.escapeT)("Title"),"x-decorator":"FormItem","x-component":TextAreaWithContextSelector,"x-component-props":{rows:2}},content:{type:"string",title:(0,import_flow_engine.escapeT)("Content"),"x-decorator":"FormItem","x-component":TextAreaWithContextSelector,"x-component-props":{rows:3}}},defaultParams:{enable:!0,title:"Please Confirm",content:"Are you sure you want to proceed with this action?"},handler(e,t){return E(this,null,function*(){t.enable&&((yield e.modal.confirm({title:e.t(t.title),content:e.t(t.content),okText:e.t("Confirm"),cancelText:e.t("Cancel")}))||e.exit())})}}),FilterGroup=(0,import_reactive_react.observer)(e=>{const{value:t={logic:"$and",items:[]},FilterItem:o,showBorder:r=!1,onRemove:i,onChange:n}=e,{token:l}=import_antd.theme.useToken(),{t:a}=(0,import_react_i18next.useTranslation)();t.logic||(t.logic="$and"),Array.isArray(t.items)||(t.items=[]);const{logic:c,items:u}=t,d=r?{position:"relative",border:`1px dashed ${l.colorBorder}`,padding:l.paddingSM,marginBottom:l.marginXS,borderRadius:l.borderRadius}:{position:"relative",marginBottom:l.marginXS},m=v=>{t.logic=v},p=()=>{u.push({path:"",operator:"",value:""}),n==null||n(t)},h=()=>{u.push({logic:"$and",items:[]}),n==null||n(t)},g=v=>{u.splice(v,1),n==null||n(t)},x=v=>"path"in v||"operator"in v||"value"in v,_=v=>"logic"in v&&"items"in v;return(0,import_jsx_runtime.jsxs)("div",{style:d,children:[r&&i&&(0,import_jsx_runtime.jsx)("a",{role:"button","aria-label":"icon-close",children:(0,import_jsx_runtime.jsx)(import_icons.CloseCircleOutlined,{style:{position:"absolute",right:10,top:10,color:"#bfbfbf"},onClick:i})}),(0,import_jsx_runtime.jsx)("div",{style:{marginBottom:8,color:l.colorText},children:(0,import_jsx_runtime.jsxs)("span",{children:[a("Meet")," ",(0,import_jsx_runtime.jsxs)(import_antd.Select,{role:"button","data-testid":"filter-select-all-or-any",style:{width:"auto"},value:c,onChange:m,children:[(0,import_jsx_runtime.jsx)(import_antd.Select.Option,{value:"$and",children:a("All")}),(0,import_jsx_runtime.jsx)(import_antd.Select.Option,{value:"$or",children:a("Any")})]})," ",a("conditions in the group")]})}),(0,import_jsx_runtime.jsx)("div",{children:u.map((v,C)=>_(v)?(0,import_jsx_runtime.jsx)(FilterGroup,{value:v,FilterItem:o,showBorder:!0,onRemove:()=>g(C),onChange:n},C):x(v)?o?(0,import_jsx_runtime.jsx)("div",{style:{marginBottom:8,display:"flex",alignItems:"flex-end"},children:(0,import_jsx_runtime.jsxs)(import_antd.Space,{style:{flex:1,minWidth:0},children:[(0,import_jsx_runtime.jsx)(o,{value:v}),(0,import_jsx_runtime.jsx)("a",{role:"button","aria-label":"icon-close",style:{marginLeft:8,flex:"0 0 auto"},children:(0,import_jsx_runtime.jsx)(import_icons.CloseCircleOutlined,{onClick:()=>g(C),style:{color:"#bfbfbf"}})})]})},C):(0,import_jsx_runtime.jsx)("div",{style:{marginBottom:8,display:"flex",alignItems:"flex-end"},children:(0,import_jsx_runtime.jsxs)(import_antd.Space,{style:{flex:1,minWidth:0},children:[(0,import_jsx_runtime.jsxs)("span",{children:[v.path," ",v.operator," ",String(v.value)]}),(0,import_jsx_runtime.jsx)("a",{role:"button","aria-label":"icon-close",style:{marginLeft:8,flex:"0 0 auto"},children:(0,import_jsx_runtime.jsx)(import_icons.CloseCircleOutlined,{onClick:()=>g(C),style:{color:"#bfbfbf"}})})]})},C):(0,import_jsx_runtime.jsx)("div",{style:{marginBottom:8,display:"flex",alignItems:"flex-end"},children:(0,import_jsx_runtime.jsxs)(import_antd.Space,{style:{flex:1,minWidth:0},children:[(0,import_jsx_runtime.jsx)("span",{style:{color:l.colorTextTertiary},children:"Invalid filter item"}),(0,import_jsx_runtime.jsx)("a",{role:"button","aria-label":"icon-close",style:{marginLeft:8,flex:"0 0 auto"},children:(0,import_jsx_runtime.jsx)(import_icons.CloseCircleOutlined,{onClick:()=>g(C),style:{color:"#bfbfbf"}})})]})},C))}),(0,import_jsx_runtime.jsxs)(import_antd.Space,{size:16,style:{marginTop:8,marginBottom:8},children:[(0,import_jsx_runtime.jsx)(import_antd.Button,{style:{padding:0},type:"link",size:"small",icon:(0,import_jsx_runtime.jsx)(import_icons.PlusOutlined,{}),onClick:p,children:a("Add condition")}),(0,import_jsx_runtime.jsx)(import_antd.Button,{style:{padding:0},type:"link",size:"small",icon:(0,import_jsx_runtime.jsx)(import_icons.PlusOutlined,{}),onClick:h,children:a("Add condition group")})]})]})},{displayName:"FilterGroup"}),FilterContainer$1=(0,import_reactive_react.observer)(e=>{var t;const{value:o,FilterItem:r,ctx:i}=e;o.logic||(o.logic="and"),Array.isArray(o.items)||(o.items=[]);const n=()=>{var c;(c=i==null?void 0:i.model)!=null&&c.dispatchEvent&&i.model.dispatchEvent("reset")},l=()=>{var c;(c=i==null?void 0:i.model)!=null&&c.dispatchEvent&&i.model.dispatchEvent("submit")},a=((t=i==null?void 0:i.model)==null?void 0:t.translate)||(c=>c);return(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsx)(FilterGroup,{value:o,FilterItem:r}),(0,import_jsx_runtime.jsxs)(import_antd.Space,{style:{width:"100%",display:"flex",justifyContent:"flex-end"},children:[(0,import_jsx_runtime.jsx)(import_antd.Button,{onClick:n,children:a("Reset")}),(0,import_jsx_runtime.jsx)(import_antd.Button,{type:"primary",onClick:l,children:a("Submit")})]})]})},{displayName:"FilterContent"}),fieldsToOptions=(e,t,o,r)=>e.map(i=>field2option(i,t,o,r)).filter(Boolean),field2option=(e,t,o,r)=>{var i;if(o.length&&t===1&&o.includes(e.name)||!e.interface||e.filterable===!1)return;const n=e.getInterfaceOptions();if(!(n!=null&&n.filterable))return;const{nested:l,children:a,operators:c}=n.filterable,u={name:e.name,type:e.type,target:e.target,title:r(e.title),schema:e==null?void 0:e.uiSchema,operators:(((i=c==null?void 0:c.filter)==null?void 0:i.call(c,d=>!(d!=null&&d.visible)||d.visible(e)))||[]).map(d=>I(f({},d),{label:r(d.label)}))};if(!(e.target&&t>2)){if(t>2)return u;if(a!=null&&a.length&&(u.children=a),l){const d=e.getFields().filter(p=>p.target!=="attachments"&&p.interface!=="formula"),m=fieldsToOptions(d,t+1,o,r).filter(Boolean);u.children=u.children||[],u.children.push(...m)}return u}},FilterItem=(0,import_reactive_react.observer)(e=>{var t;const{path:o,operator:r,value:i}=e.value,n=e.model,l=((t=n.context.blockModel.collection)==null?void 0:t.getFields().filter(g=>g.target!=="attachments"))||[],a=getIgnoreFieldsNames(n.props.filterableFieldsNames||[],l.map(g=>g.name)),c=n.translate,u=fieldsToOptions(l.filter(g=>g.target!=="attachments"&&g.interface!=="formula"&&!["belongsTo","belongsToMany","hasOne","hasMany","oho","obo","m2o","o2m","m2m"].includes(g.type)),1,e.noIgnore?[]:a,c).filter(Boolean),d=(0,import_react2.useMemo)(()=>{const g=u.find(x=>x.name===o);return(g==null?void 0:g.operators)||[]},[u,o]),m=g=>{var x;e.value.path=g;const _=u.find(v=>v.name===g);((x=_==null?void 0:_.operators)==null?void 0:x.length)>0?e.value.operator=_.operators[0].value:e.value.operator="",e.value.value=""},p=g=>{e.value.operator=g},h=g=>{e.value.value=g.target.value};return(0,import_jsx_runtime.jsxs)(import_antd.Space,{children:[(0,import_jsx_runtime.jsx)(import_antd.Select,{style:{width:200},placeholder:c("Select field"),value:o||void 0,onChange:m,children:u.map(g=>(0,import_jsx_runtime.jsx)(import_antd.Select.Option,{value:g.name,children:g.title},g.name))}),(0,import_jsx_runtime.jsx)(import_antd.Select,{style:{width:120},placeholder:c("Select operator"),value:r||void 0,onChange:p,disabled:!o||d.length===0,children:d.map(g=>(0,import_jsx_runtime.jsx)(import_antd.Select.Option,{value:g.value,children:g.label},g.value))}),(0,import_jsx_runtime.jsx)(import_antd.Input,{style:{width:200},placeholder:c("Enter value"),value:i,onChange:h})]})},{displayName:"FilterItem"});function getIgnoreFieldsNames(e,t){return t==null?void 0:t.filter(o=>!e.includes(o))}const{DateFilterDynamicComponent:DateFilterDynamicComponentLazy$1}=lazy(()=>Promise.resolve().then(()=>require("./index-C3fHjsMw-BwUYFnGr.js")),"DateFilterDynamicComponent");function createStaticInputRenderer$1(e,t,o){var r;const i=e==null?void 0:e["x-component"],n=((r=t==null?void 0:t.uiSchema)==null?void 0:r["x-component-props"])||{},l=(e==null?void 0:e["x-component-props"])||{},a=(0,import_merge.default)({},n,l),c=f({style:f({width:200},(a==null?void 0:a.style)||{}),placeholder:(a==null?void 0:a.placeholder)||o("Enter value")},a);return u=>{const d=u||{},{value:m,onChange:p}=d,h=W(d,["value","onChange"]);return i==="InputNumber"?(0,import_jsx_runtime.jsx)(import_antd.InputNumber,I(f(f({},c),h),{value:m,onChange:p})):i==="NumberPicker"?(0,import_jsx_runtime.jsx)(import_antd_v5.NumberPicker,I(f(f({},c),h),{value:m,onChange:p})):i==="Switch"?(0,import_jsx_runtime.jsx)(import_antd.Switch,I(f(f({},c),h),{checked:!!m,onChange:p})):i==="Select"?(0,import_jsx_runtime.jsx)(import_antd.Select,I(f(f({},c),h),{value:m,onChange:p})):i==="DateFilterDynamicComponent"?(0,import_jsx_runtime.jsx)(DateFilterDynamicComponentLazy$1,I(f(f({},c),h),{value:m,onChange:p})):(0,import_jsx_runtime.jsx)(import_antd.Input,I(f(f({},c),h),{value:m,onChange:g=>{var x;return p==null?void 0:p((x=g==null?void 0:g.target)==null?void 0:x.value)}}))}}const VariableFilterItem=(0,import_reactive_react.observer)(({value:e,model:t,rightAsVariable:o,rightMetaTree:r})=>{const i=(0,import_flow_engine.useFlowViewContext)(),n=t.translate,{path:l,operator:a,value:c}=e,[u,d]=(0,import_react2.useState)(null),m=(0,import_react2.useMemo)(()=>{var T,M,R;if(!(u!=null&&u.interface))return[];const B=(T=t.context.app)==null?void 0:T.dataSourceManager,D=(M=B==null?void 0:B.collectionFieldInterfaceManager)==null?void 0:M.getFieldInterface(u.interface);return(((R=D==null?void 0:D.filterable)==null?void 0:R.operators)||[]).filter(w=>!w.visible||w.visible(u))},[u,t]);(0,import_react2.useEffect)(()=>{m.length>0&&!import_lodash.default.find(m,T=>T.value===e.operator)&&(e.operator="",e.value="")},[m,e]);const p=(0,import_react2.useMemo)(()=>m.map(T=>{var M,R;return{value:T.value,label:typeof T.label=="string"?n(T.label):((R=(M=T.label)==null?void 0:M.toString)==null?void 0:R.call(M))||String(T.label)}}),[m,n]),h=(0,import_react2.useCallback)((T,M)=>{e.path=T||"",M&&d(M)},[e]),g=(0,import_react2.useMemo)(()=>({resolveValueFromPath:T=>(d(T),(T==null?void 0:T.paths.slice(1).join("."))||null),resolvePathFromValue(T){return T&&["collection",...String(T).split(".")]}}),[]),x=(0,import_react2.useCallback)(T=>{e.operator=T;const M=m.find(R=>R.value===T);M!=null&&M.noValue&&(e.value="")},[m,e]),_=(0,import_react2.useMemo)(()=>m.find(T=>T.value===a),[m,a]),v=(0,import_react2.useMemo)(()=>{const T=(u==null?void 0:u.uiSchema)||{},M=(_==null?void 0:_.schema)||{};return(0,import_merge.default)({},T,M)},[u,_]),C=import_react2.default.useRef(n);import_react2.default.useEffect(()=>{C.current=n},[n]);const y=import_react2.default.useCallback(T=>{var M,R;return(R=(M=C.current)==null?void 0:M.call(C,T))!=null?R:T},[]),b=(0,import_react2.useMemo)(()=>createStaticInputRenderer$1(v,u,y),[v,u,y]),S=(0,import_react2.useCallback)(()=>(0,import_jsx_runtime.jsx)("div",{style:{flex:"1 1 40%",minWidth:160,maxWidth:"100%"},children:(0,import_jsx_runtime.jsx)(b,{value:c,onChange:T=>e.value=T})}),[b,c,e]),F=(0,import_react2.useMemo)(()=>function(){return(0,import_jsx_runtime.jsx)(import_antd.Input,{placeholder:`<${n("Null")}>`,readOnly:!0})},[n]),j=(0,import_react2.useMemo)(()=>()=>E(void 0,null,function*(){const T=typeof r=="function"?yield r():r||i.getPropertyMetaTree();return[{title:n("Constant"),name:"constant",type:"string",paths:["constant"],render:b},{title:n("Null"),name:"null",type:"object",paths:["null"],render:F},...Array.isArray(T)?T:[]]}),[r,i,b,F,n]),P=(0,import_react2.useMemo)(()=>({renderInputComponent:T=>{var M;const R=(M=T==null?void 0:T.paths)==null?void 0:M[0];return R==="constant"?b:R==="null"?F:null},resolveValueFromPath:T=>{var M;const R=(M=T==null?void 0:T.paths)==null?void 0:M[0];if(R==="constant")return"";if(R==="null")return null},resolvePathFromValue:T=>T===null?["null"]:(0,import_flow_engine.parseValueToPath)(T)||["constant"]}),[F,b]);return(0,import_jsx_runtime.jsxs)(import_antd.Space,{wrap:!0,style:{width:"100%"},children:[(0,import_jsx_runtime.jsx)(import_flow_engine.VariableInput,{value:l,metaTree:()=>t.context.getPropertyMetaTree("{{ ctx.collection }}"),onChange:h,converters:g,showValueComponent:!1,style:{flex:"1 1 40%",minWidth:160,maxWidth:"100%"},onlyLeafSelectable:!0,placeholder:n("Select field")}),(0,import_jsx_runtime.jsx)(import_antd.Select,{style:{flex:"0 0 140px",minWidth:120,maxWidth:"100%"},placeholder:n("Comparison"),value:a||void 0,onChange:x,children:p.map(T=>(0,import_jsx_runtime.jsx)(import_antd.Select.Option,{value:T.value,children:T.label},T.value))}),!(_!=null&&_.noValue)&&(o?(0,import_jsx_runtime.jsx)(import_flow_engine.VariableInput,{value:c,onChange:T=>e.value=T,metaTree:j,converters:P,showValueComponent:!0,style:{flex:"1 1 40%",minWidth:160,maxWidth:"100%"},placeholder:n("Enter value")}):S())]})});function normalizeUiSchemaEnumToOptions(e=[]){return Array.isArray(e)?e.map(t=>{var o;if(t&&typeof t=="object"&&!Array.isArray(t)){const r=t,i=typeof r.label<"u",n=typeof r.value<"u",l=i?r.label:String((o=r.value)!=null?o:""),a=n?r.value:l,c={label:l,value:a};return r.color&&(c.color=r.color),r.icon&&(c.icon=r.icon),c}return{label:String(t),value:t}}):[]}function ensureOptionsFromUiSchemaEnumIfAbsent(e,t){var o,r,i,n;const l=t==null?void 0:t.interface;if(!["radioGroup","checkboxGroup","select","multipleSelect"].includes(l)||Array.isArray((o=e.props)==null?void 0:o.options)&&((i=(r=e.props)==null?void 0:r.options)==null?void 0:i.length)>0)return!1;const a=(n=t.uiSchema)==null?void 0:n.enum;if(!Array.isArray(a)||a.length===0)return!1;const c=normalizeUiSchemaEnumToOptions(a);return c.length?(e.setProps({options:c}),!0):!1}const{DateFilterDynamicComponent:DateFilterDynamicComponentLazy}=lazy(()=>Promise.resolve().then(()=>DateFilterDynamicComponent$1),"DateFilterDynamicComponent");function createStaticInputRenderer(e,t,o){var r,i,n;const l=e==null?void 0:e["x-component"],a=((r=t==null?void 0:t.uiSchema)==null?void 0:r["x-component-props"])||{},c=(e==null?void 0:e["x-component-props"])||{},u=(0,import_merge.default)({},a,c),d=Array.isArray((i=t==null?void 0:t.uiSchema)==null?void 0:i.enum)?(n=t==null?void 0:t.uiSchema)==null?void 0:n.enum:void 0,m=d?normalizeUiSchemaEnumToOptions(d):void 0,p=f({style:f({width:200},(u==null?void 0:u.style)||{}),placeholder:(u==null?void 0:u.placeholder)||o("Enter value")},u);return h=>{const g=h||{},{value:x,onChange:_}=g,v=W(g,["value","onChange"]);if(l==="InputNumber")return(0,import_jsx_runtime.jsx)(import_antd.InputNumber,I(f(f({},p),v),{value:x,onChange:_}));if(l==="NumberPicker")return(0,import_jsx_runtime.jsx)(import_antd_v5.NumberPicker,I(f(f({},p),v),{value:x,onChange:_}));if(l==="Switch")return(0,import_jsx_runtime.jsx)(import_antd.Switch,I(f(f({},p),v),{checked:!!x,onChange:_}));if(l==="Select"){const C=Array.isArray(p==null?void 0:p.options)&&p.options.length>0||!m?p:I(f({},p),{options:m});return(0,import_jsx_runtime.jsx)(import_antd.Select,I(f(f({},C),v),{value:x,onChange:_}))}return l==="DateFilterDynamicComponent"?(0,import_jsx_runtime.jsx)(DateFilterDynamicComponentLazy,I(f(f({},p),v),{value:x,onChange:_})):(0,import_jsx_runtime.jsx)(import_antd.Input,I(f(f({},p),v),{value:x,onChange:C=>{var y;return _==null?void 0:_((y=C==null?void 0:C.target)==null?void 0:y.value)}}))}}const fallbackStringOperators=[{value:"$includes",label:"contains",selected:!0},{value:"$notIncludes",label:"does not contain"},{value:"$eq",label:"is"},{value:"$ne",label:"is not"},{value:"$empty",label:"is empty",noValue:!0},{value:"$notEmpty",label:"is not empty",noValue:!0}],LinkageFilterItem=(0,import_reactive_react.observer)(e=>{var t;const{value:o,model:r}=e,i=(0,import_flow_engine.useFlowViewContext)(),n=r.translate,{path:l,operator:a,value:c}=o||{},[u,d]=(0,import_react2.useState)(null),m=(0,import_react2.useRef)(!1),p=(0,import_react2.useMemo)(()=>{if(!u)return"";const M=u.interface||"",R=Array.isArray(u.paths)?u.paths.join("."):"";return`${M}|${R}`},[u]),h=(0,import_react2.useMemo)(()=>u!=null&&u.interface?(r.context.app.dataSourceManager.collectionFieldInterfaceManager.getFieldInterface(u.interface).filterable.operators||[]).filter(M=>!M.visible||M.visible(u)).map(M=>({value:M.value,label:typeof M.label=="string"?M.label:String(M.label),noValue:!!M.noValue,schema:M.schema,selected:!!M.selected})):u?fallbackStringOperators:[],[p,r]),g=(0,import_react2.useMemo)(()=>h.map(M=>({value:M.value,label:n(M.label)})),[h,n]);(0,import_react2.useEffect)(()=>{if(h.length!==0){if(!a){if(m.current){const M=h.find(R=>R.selected)||h[0];o.operator=(M==null?void 0:M.value)||"",M!=null&&M.noValue&&(o.value=""),m.current=!1}return}if(!h.some(M=>M.value===a)){const M=h.find(R=>R.selected)||h[0];o.operator=(M==null?void 0:M.value)||"",M!=null&&M.noValue&&(o.value="")}}},[h,a,o]);const x=(0,import_react2.useMemo)(()=>h.find(M=>M.value===a),[h,a]),_=(0,import_react2.useMemo)(()=>{const M=(u==null?void 0:u.uiSchema)||{},R=(x==null?void 0:x.schema)||{};return(0,import_merge.default)({},M,R)},[u,x]),v=(0,import_react2.useRef)(n);(0,import_react2.useEffect)(()=>{v.current=n},[n]);const C=(0,import_react2.useCallback)(M=>{var R,B;return(B=(R=v.current)==null?void 0:R.call(v,M))!=null?B:M},[]),y=(0,import_react2.useMemo)(()=>createStaticInputRenderer(_,u,C),[_,u,C]),b=(0,import_react2.useMemo)(()=>function(){return(0,import_jsx_runtime.jsx)(import_antd.Input,{placeholder:`<${n("Null")}>`,readOnly:!0})},[n]),S=(0,import_react2.useRef)(null);if(!S.current){const M=i.getPropertyMetaTree();S.current=[{title:n("Constant"),name:"constant",type:"string",paths:["constant"]},{title:n("Null"),name:"null",type:"object",paths:["null"]},...Array.isArray(M)?M:[]]}const F=(0,import_react2.useCallback)(()=>i.getPropertyMetaTree(),[i]),j=(0,import_react2.useMemo)(()=>({renderInputComponent:M=>{var R;const B=(R=M==null?void 0:M.paths)==null?void 0:R[0];return B==="constant"?y:B==="null"?b:null},resolveValueFromPath:M=>{var R;const B=(R=M==null?void 0:M.paths)==null?void 0:R[0];if(B==="constant")return"";if(B==="null")return null},resolvePathFromValue:M=>M===null?["null"]:(0,import_flow_engine.parseValueToPath)(M)||["constant"]}),[b,y]),P=(0,import_react2.useCallback)((M,R)=>{const B=o.path||"",D=M||"",w=D!==B;o.path=D,w&&B&&(o.operator="",o.value="",m.current=!0),!B&&D&&!o.operator&&(m.current=!0),R&&d(R)},[o]),T=(0,import_react2.useCallback)(M=>{o.operator=M;const R=h.find(B=>B.value===M);R!=null&&R.noValue&&(o.value="")},[o,h]);return(0,import_jsx_runtime.jsxs)(import_antd.Space,{wrap:!0,style:{width:"100%"},children:[(0,import_jsx_runtime.jsx)(import_flow_engine.VariableInput,{value:l,onChange:P,metaTree:F,showValueComponent:!0,style:{flex:"1 1 40%",minWidth:160,maxWidth:"100%"},placeholder:n("Select variable"),onlyLeafSelectable:!0}),(0,import_jsx_runtime.jsx)(import_antd.Select,{style:{flex:"0 0 140px",minWidth:120,maxWidth:"100%"},placeholder:n("Comparison"),value:a||void 0,onChange:T,children:g.map(M=>(0,import_jsx_runtime.jsx)(import_antd.Select.Option,{value:M.value,children:M.label},M.value))}),!((t=h.find(M=>M.value===a))!=null&&t.noValue)&&(0,import_jsx_runtime.jsx)(import_flow_engine.VariableInput,{value:c,onChange:M=>o.value=M,metaTree:S.current,converters:j,showValueComponent:!0,style:{flex:"1 1 40%",minWidth:160,maxWidth:"100%"},placeholder:n("Enter value"),clearValue:""})]})}),dataScope=(0,import_flow_engine.defineAction)({name:"dataScope",title:(0,import_client.tval)("Data scope"),uiMode:{type:"dialog",props:{width:800}},uiSchema:{filter:{type:"object","x-decorator":"FormItem","x-component":function e(t){const o=(0,import_flow_engine.useFlowSettingsContext)();return(0,import_jsx_runtime.jsx)(FilterGroup,{value:t.value,FilterItem:r=>(0,import_jsx_runtime.jsx)(VariableFilterItem,I(f({},r),{model:o.model,rightAsVariable:!0}))})}}},defaultParams(e){return{filter:{logic:"$and",items:[]}}},handler(e,t){return E(this,null,function*(){var o;const r=(o=e.model)==null?void 0:o.resource;if(!r)return;const i=(0,import_client.removeNullCondition)((0,import_client.transformFilter)(t.filter));(0,import_client.isEmptyFilter)(i)?r.removeFilterGroup(e.model.uid):r.addFilterGroup(e.model.uid,i)})}});function SkeletonFallback(e){return(0,import_jsx_runtime.jsx)(import_antd.Card,I(f({},e),{children:(0,import_jsx_runtime.jsx)(import_antd.Skeleton,{paragraph:{rows:3}})}))}class RouteModel extends import_flow_engine.FlowModel{}RouteModel.registerFlow({key:"popupSettings",on:"click",steps:{openView:{use:"openView",defaultParams(e){return{mode:"embed",preventClose:!0,pageModelClass:"RootPageModel"}}}}});function resolveViewParamsToViewList(e,t,o){return E(this,null,function*(){const r=t.map((l,a)=>E(this,null,function*(){let c;if(a===0?c=o:c=e.getModel(l.viewUid,!0)||(yield e.loadModel({uid:l.viewUid})),!c)throw new Error(`Model with uid ${l.viewUid} not found`);return{params:l,model:c,hidden:import_flow_engine.observable.ref(!1),index:a}})),i=yield Promise.all(r);let n=!1;for(let l=i.length-1;l>=0;l--){const a=i[l];getViewType(a)==="embed"&&!n?(n=!0,a.hidden.value=!1):a.hidden.value=n}return i})}function getViewType(e){if(e.model instanceof RouteModel)return"embed";const t=e.model.getStepParams("popupSettings","openView");return(t==null?void 0:t.mode)||"drawer"}function getViewDiffAndUpdateHidden(e,t){const o=new Map,r=new Map;e.forEach(l=>{o.set(`${l.params.viewUid}_${l.index}`,l)}),t.forEach(l=>{r.set(`${l.params.viewUid}_${l.index}`,l)});const i=[];o.forEach((l,a)=>{r.has(a)?l.hidden.value=r.get(a).hidden.value:i.push(l)});const n=[];return r.forEach((l,a)=>{o.has(a)||n.push(l)}),{viewsToClose:i,viewsToOpen:n}}const openViewFlow=(0,import_flow_engine.defineFlow)({key:"popupSettings",title:(0,import_flow_engine.escapeT)("Popup settings"),on:"click",steps:{openView:{use:"openView"}},defaultParams:e=>{var t,o,r,i,n,l;let a,c,u;const d=e.collectionField,m=e.blockModel;if((t=d==null?void 0:d.isAssociationField)!=null&&t.call(d)){const p=d.targetCollection,h=m==null?void 0:m.collection;a=p==null?void 0:p.name,c=p==null?void 0:p.dataSourceKey,u=h!=null&&h.name&&d!=null&&d.name?`${h.name}.${d.name}`:void 0}else d?(a=(o=e.collection)==null?void 0:o.name,c=(r=e.collection)==null?void 0:r.dataSourceKey,u=d==null?void 0:d.target):(a=(i=e.collection)==null?void 0:i.name,c=(n=e.collection)==null?void 0:n.dataSourceKey,u=(l=e.association)==null?void 0:l.resourceName);return{openView:{collectionName:a,associationName:u,dataSourceKey:c}}}}),getOpenViewStepParams=e=>e.getStepParams("popupSettings","openView");function InternalFlowPage(e){var t=e,{uid:o}=t,r=W(t,["uid"]);const i=(0,import_flow_engine.useFlowModelById)(o);return(0,import_jsx_runtime.jsx)(import_flow_engine.FlowModelRenderer,f({model:i,fallback:(0,import_jsx_runtime.jsx)(SkeletonFallback,{style:{margin:16}}),hideRemoveInSettings:!0,showFlowSettings:{showBackground:!1,showBorder:!1}},r))}const getKey=e=>`${e.params.viewUid}_${e.index}`,FlowRoute=()=>{const e=(0,import_react2.useRef)(null),t=(0,import_flow_engine.useFlowEngine)(),o=useCurrentRoute(),{refresh:r}=useAllAccessDesktopRoutes(),{isMobileLayout:i}=useMobileLayout(),n=(0,import_react2.useRef)(t.context.route.params.name),l=(0,import_react2.useRef)({}),a=(0,import_react2.useRef)([]),c=(0,import_react2.useRef)(!1),{designable:u}=useDesignable(),d=(0,import_react2.useMemo)(()=>t.createModel({uid:n.current,use:"RouteModel"}),[t]);return(0,import_react2.useEffect)(()=>{t.context.defineProperty("isMobileLayout",{get:()=>i})},[i,t]),(0,import_react2.useEffect)(()=>{i?t.flowSettings.disable():u&&t.flowSettings.enable()},[u,t,i]),(0,import_react2.useEffect)(()=>{e.current&&(d.context.defineProperty("layoutContentElement",{get:()=>e.current}),d.context.defineProperty("currentRoute",{get:()=>o}),t.context.defineProperty("currentRoute",{get:()=>o}),d.context.defineProperty("refreshDesktopRoutes",{get:()=>r}))},[d,o,r,t]),(0,import_react2.useEffect)(()=>{const m=(0,import_flow_engine.reaction)(()=>t.context.route,p=>E(void 0,null,function*(){if(p.params.name!==n.current)return;const h=(0,import_flow_engine.parsePathnameToViewParams)(p.pathname),g=yield resolveViewParamsToViewList(t,h,d);if(a.current.length===0&&g.length>1&&!c.current){const v=C=>{g[C]&&(C===0?new import_flow_engine.ViewNavigation(t.context,[]).navigateTo(g[C].params,{replace:!0}):new import_flow_engine.ViewNavigation(t.context,g.slice(0,C).map(y=>y.params)).navigateTo(g[C].params),v(C+1))};v(0),c.current=!0;return}const{viewsToClose:x,viewsToOpen:_}=getViewDiffAndUpdateHidden(a.current,g);if(_.length){const v=C=>{if(!_[C])return;const y=_[C],b=import_react2.default.createRef(),S=import_react2.default.createRef(),F=getOpenViewStepParams(y.model);a.current.push(y);const j=a.current.slice(0,-1).map(P=>P.params.viewUid);y.model.dispatchEvent("click",I(f({target:e.current,collectionName:F==null?void 0:F.collectionName,associationName:F==null?void 0:F.associationName,dataSourceKey:F==null?void 0:F.dataSourceKey,closeRef:b,updateRef:S,openerUids:j},y.params),{navigation:new import_flow_engine.ViewNavigation(t.context,a.current.map(P=>P.params)),onOpen(){v(C+1)},hidden:y.hidden,isMobileLayout:i})),l.current[getKey(y)]={close:P=>{var T;return(T=b.current)==null?void 0:T.call(b,void 0,P)},update:P=>{var T;return(T=S.current)==null?void 0:T.call(S,P)}}};v(0)}x.forEach(v=>{var C,y;(y=(C=l.current[getKey(v)])==null?void 0:C.close)==null||y.call(C,!0),delete l.current[getKey(v)],a.current=a.current.filter(b=>getKey(b)!==getKey(v))})}),{fireImmediately:!0});return()=>{m==null||m(),a.current.forEach(p=>{var h,g;(g=(h=l.current[getKey(p)])==null?void 0:h.close)==null||g.call(h,!0),t.removeModel(p.params.viewUid),delete l.current[getKey(p)]}),a.current=[]}},[t,i,d]),(0,import_jsx_runtime.jsx)("div",{ref:e})},FlowPage=e=>{const t=e,{pageModelClass:o="ChildPageModel",parentId:r,onModelLoaded:i}=t,n=W(t,["pageModelClass","parentId","onModelLoaded"]),l=(0,import_flow_engine.useFlowEngine)(),a=(0,import_flow_engine.useFlowViewContext)(),{loading:c,data:u}=(0,import_ahooks.useRequest)(()=>E(void 0,null,function*(){const d={async:!0,parentId:r,subKey:"page",subType:"object",use:o};o==="ChildPageModel"&&(d.subModels={tabs:[{use:"ChildPageTabModel",stepParams:{pageTabSettings:{tab:{title:"Details"}}}}]},d.stepParams={pageSettings:{general:{displayTitle:!1,enableTabs:!0}}});const m=yield l.loadOrCreateModel(d);return m!=null&&m.uid&&i&&(m.context.addDelegate(a),m.removeParentDelegate(),i(m.uid,m)),m}),{refreshDeps:[r]});return c||!(u!=null&&u.uid)?(0,import_jsx_runtime.jsx)(SkeletonFallback,{style:{margin:16}}):(0,import_jsx_runtime.jsx)(InternalFlowPage,f({uid:u.uid},n))},RemoteFlowModelRenderer=e=>{const t=e,{uid:o,parentId:r,subKey:i}=t,n=W(t,["uid","parentId","subKey"]),l=(0,import_flow_engine.useFlowEngine)(),{loading:a,data:c}=(0,import_ahooks.useRequest)(()=>E(void 0,null,function*(){return yield l.loadModel({uid:o,parentId:r,subKey:i})}),{refreshDeps:[o,r,i]});return a||!(c!=null&&c.uid)?(0,import_jsx_runtime.jsx)(SkeletonFallback,{style:{margin:16}}):(0,import_jsx_runtime.jsx)(InternalFlowPage,f({uid:c.uid},n))},openView=(0,import_flow_engine.defineAction)({name:"openView",title:(0,import_flow_engine.escapeT)("Edit popup"),uiSchema:{mode:{type:"string",title:(0,import_flow_engine.escapeT)("Open mode"),enum:[{label:(0,import_flow_engine.escapeT)("Drawer"),value:"drawer"},{label:(0,import_flow_engine.escapeT)("Dialog"),value:"dialog"},{label:(0,import_flow_engine.escapeT)("Page"),value:"embed"}],"x-decorator":"FormItem","x-component":"Radio.Group"},size:{type:"string",title:(0,import_flow_engine.escapeT)("Popup size"),enum:[{label:(0,import_flow_engine.escapeT)("Small"),value:"small"},{label:(0,import_flow_engine.escapeT)("Medium"),value:"medium"},{label:(0,import_flow_engine.escapeT)("Large"),value:"large"}],"x-decorator":"FormItem","x-component":"Radio.Group","x-reactions":{dependencies:["mode"],fulfill:{state:{hidden:'{{$deps[0] === "embed"}}'}}}},uid:{type:"string",title:(0,import_flow_engine.escapeT)("Popup uid"),required:!0,"x-decorator":"FormItem","x-component":function e(t){const{value:o,onChange:r}=t,i=(0,import_flow_engine.useFlowSettingsContext)(),n=(0,import_react.useField)(),l=(0,import_react.useForm)(),a=(0,import_react2.useCallback)((u,d)=>{l.setFieldState(u,m=>{m.disabled=d})},[l]),c=(0,import_react2.useCallback)((u,d)=>{const m=["dataSourceKey","collectionName","associationName","sourceId","filterByTk"];if(!u){m.forEach(g=>a(g,!1)),a("tabUid",!1);return}const p=g=>u[g];m.forEach(g=>{const x=p(g);x!==void 0?(l.setValuesIn(g,x),g==="dataSourceKey"||g==="collectionName"?a(g,!0):a(g,!!d)):a(g,!1)});const h=p("tabUid");h!==void 0?(l.setValuesIn("tabUid",h),a("tabUid",!!d)):a("tabUid",!1)},[l,a]);return(0,import_react2.useEffect)(()=>{let u=!0;return E(this,null,function*(){var d,m;l.setFieldState((d=n.props)==null?void 0:d.name,p=>{p.loading=!0});try{const p=i.engine;let h=p.getModel(o);if(h||(h=yield p.loadModel({uid:o})),!u)return;if(!h){n.setFeedback({type:"error",code:"NotFound",messages:[i.t("Popup UID not exists")]}),c(null,!1);return}n.setFeedback({});const g=h.getStepParams("popupSettings","openView")||{},x=h.uid===i.model.uid;c(g||null,!x)}catch{if(!u)return;n.setFeedback({type:"error",code:"LoadFailed",messages:[i.t("Failed to load popup by UID")]}),c(null,!1)}finally{u&&l.setFieldState((m=n.props)==null?void 0:m.name,p=>{p.loading=!1})}}),()=>{u=!1}},[o,i,n,l,c]),(0,import_jsx_runtime.jsx)(import_antd.Input,{value:o,onChange:u=>{var d;return r==null?void 0:r((d=u==null?void 0:u.target)==null?void 0:d.value)},suffix:(0,import_jsx_runtime.jsx)("span",{children:n!=null&&n.loading||n.validating?(0,import_jsx_runtime.jsx)(import_icons.LoadingOutlined,{}):null})})}},dsAndCollection:{type:"array",title:(0,import_flow_engine.escapeT)("Data source / Collection"),"x-decorator":"FormItem","x-component":function e(t){const{disabled:o,placeholder:r}=t,i=(0,import_flow_engine.useFlowSettingsContext)(),n=(0,import_react.useForm)(),[l,a]=(0,import_react2.useState)(()=>{var g;return(g=n==null?void 0:n.values)==null?void 0:g.dataSourceKey}),[c,u]=(0,import_react2.useState)(()=>{var g;return(g=n==null?void 0:n.values)==null?void 0:g.collectionName});(0,import_react.useFormEffects)(()=>{(0,import_core.onFieldValueChange)("dataSourceKey",g=>a(g.value)),(0,import_core.onFieldValueChange)("collectionName",g=>u(g.value))}),(0,import_react2.useEffect)(()=>{var g,x;a((g=n==null?void 0:n.values)==null?void 0:g.dataSourceKey),u((x=n==null?void 0:n.values)==null?void 0:x.collectionName)},[n]);const d=(0,import_react2.useMemo)(()=>l&&c?[l,c]:void 0,[l,c]),m=(0,import_react2.useMemo)(()=>{var g,x;return(((x=(g=i==null?void 0:i.dataSourceManager)==null?void 0:g.getDataSources)==null?void 0:x.call(g))||[]).map(_=>{var v;return{label:_.displayName,value:_.key,children:(((v=_.getCollections)==null?void 0:v.call(_))||[]).map(C=>({label:C.title,value:C.name}))}})},[i]),p=!0,h=(0,import_react2.useCallback)(g=>{if(!g||g.length<2){n.setValuesIn("dataSourceKey",void 0),n.setValuesIn("collectionName",void 0);return}const[x,_]=g;n.setValuesIn("dataSourceKey",x),n.setValuesIn("collectionName",_),n.setValuesIn("associationName",void 0)},[n]);return(0,import_jsx_runtime.jsx)(import_antd.Cascader,{options:m,value:d,onChange:h,disabled:p,placeholder:r,allowClear:!0,showSearch:!0,style:{width:"100%"}})}},dataSourceKey:{type:"string",title:(0,import_flow_engine.escapeT)("Data source key"),"x-decorator":"FormItem","x-component":function e(t){const{value:o,onChange:r,disabled:i,placeholder:n}=t,l=(0,import_flow_engine.useFlowSettingsContext)(),a=(0,import_react.useForm)(),c=(0,import_react2.useMemo)(()=>{var d,m;return(((m=(d=l==null?void 0:l.dataSourceManager)==null?void 0:d.getDataSources)==null?void 0:m.call(d))||[]).map(p=>({label:p.displayName,value:p.key}))},[l]),u=(0,import_react2.useCallback)(d=>{d!==o&&(a.setValuesIn("collectionName",void 0),a.setValuesIn("associationName",void 0)),r==null||r(d)},[r,a,o]);return(0,import_jsx_runtime.jsx)(import_antd.Select,{showSearch:!0,allowClear:!0,options:c,value:o,onChange:u,disabled:i,placeholder:n,optionFilterProp:"label",style:{width:"100%"}})},"x-reactions":{fulfill:{state:{hidden:!0}}}},collectionName:{type:"string",title:(0,import_flow_engine.escapeT)("Collection name"),"x-decorator":"FormItem","x-component":function e(t){const{value:o,onChange:r,disabled:i,placeholder:n}=t,l=(0,import_flow_engine.useFlowSettingsContext)(),a=(0,import_react.useForm)(),[c,u]=(0,import_react2.useState)(()=>{var m;return(m=a==null?void 0:a.values)==null?void 0:m.dataSourceKey});(0,import_react.useFormEffects)(()=>{(0,import_core.onFieldValueChange)("dataSourceKey",m=>u(m.value))}),(0,import_react2.useEffect)(()=>{var m;u((m=a==null?void 0:a.values)==null?void 0:m.dataSourceKey)},[a]);const d=(0,import_react2.useMemo)(()=>{var m,p,h;if(!c)return[];const g=(p=(m=l==null?void 0:l.dataSourceManager)==null?void 0:m.getDataSource)==null?void 0:p.call(m,c);return(((h=g==null?void 0:g.getCollections)==null?void 0:h.call(g))||[]).map(x=>({label:x.title,value:x.name}))},[l,c]);return(0,import_jsx_runtime.jsx)(import_antd.Select,{showSearch:!0,allowClear:!0,options:d,value:o,onChange:m=>{m!==o&&a.setValuesIn("associationName",void 0),r==null||r(m)},disabled:i||!c,placeholder:n||(c?void 0:l.t("Please select data source first")),optionFilterProp:"label",style:{width:"100%"}})},"x-reactions":{fulfill:{state:{hidden:!0}}}},associationName:{type:"string",title:(0,import_flow_engine.escapeT)("Association name"),"x-decorator":"FormItem","x-component":function e(t){const{value:o,onChange:r,disabled:i,placeholder:n}=t,l=(0,import_flow_engine.useFlowSettingsContext)(),a=(0,import_react.useForm)(),[c,u]=(0,import_react2.useState)(()=>{var h;return(h=a==null?void 0:a.values)==null?void 0:h.dataSourceKey}),[d,m]=(0,import_react2.useState)(()=>{var h;return(h=a==null?void 0:a.values)==null?void 0:h.collectionName});(0,import_react.useFormEffects)(()=>{(0,import_core.onFieldValueChange)("dataSourceKey",h=>u(h.value)),(0,import_core.onFieldValueChange)("collectionName",h=>m(h.value))}),(0,import_react2.useEffect)(()=>{var h,g;u((h=a==null?void 0:a.values)==null?void 0:h.dataSourceKey),m((g=a==null?void 0:a.values)==null?void 0:g.collectionName)},[a]);const p=(0,import_react2.useMemo)(()=>{var h,g,x,_;if(!c||!d)return[];const v=(g=(h=l==null?void 0:l.dataSourceManager)==null?void 0:h.getDataSource)==null?void 0:g.call(h,c),C=(x=v==null?void 0:v.getCollection)==null?void 0:x.call(v,d);if(!C)return[];const y=((_=C.getAssociationFields)==null?void 0:_.call(C,["many","one"]))||[];return[{label:C.title,value:C.name},...y.map(b=>({label:`${C.title}.${b.title||b.name}`,value:`${C.name}.${b.name}`}))]},[l,c,d]);return(0,import_jsx_runtime.jsx)(import_antd.Select,{showSearch:!0,allowClear:!0,options:p,value:o,onChange:r,disabled:i||!c||!d,placeholder:n||(c?d?void 0:l.t("Please select collection first"):l.t("Please select data source first")),optionFilterProp:"label",style:{width:"100%"}})},"x-reactions":{fulfill:{state:{hidden:"{{!$self.value}}",disabled:'{{ $self.initialValue != null && $self.initialValue !== "" }}'}}}},tabUid:{type:"string",title:(0,import_flow_engine.escapeT)("Tab uid"),"x-decorator":"FormItem","x-component":"Input","x-reactions":{fulfill:{state:{hidden:!0}}}},sourceId:{type:"string",title:(0,import_flow_engine.escapeT)("Source ID"),"x-decorator":"FormItem","x-component":function e(t){const o=(0,import_flow_engine.useFlowSettingsContext)(),r=(0,import_react2.useMemo)(()=>{var i,n;try{const l=(o.getPropertyMetaTree()||[]).filter(u=>["record","resource"].includes(String(u==null?void 0:u.name))),a=l.some(u=>String(u==null?void 0:u.name)==="resource");let c=!1;try{const u=(n=(i=o==null?void 0:o.resource)==null?void 0:i.getSourceId)==null?void 0:n.call(i);c=u!=null&&String(u)!==""}catch{}return!a&&c&&l.push({name:"resource",title:o.t("Resource"),type:"object",paths:["resource"],children:[{name:"sourceId",title:o.t("Source ID"),type:"string",paths:["resource","sourceId"]}]}),l.filter(u=>String(u==null?void 0:u.name)==="record"||String(u==null?void 0:u.name)==="resource")}catch{return o.getPropertyMetaTree()}},[o]);return(0,import_jsx_runtime.jsx)(import_flow_engine.VariableInput,{value:t.value,onChange:t.onChange,disabled:t.disabled,placeholder:t.placeholder,metaTree:()=>r})},"x-reactions":{dependencies:["associationName"],fulfill:{state:{hidden:"{{!$deps[0]}}"}}}},filterByTk:{type:"string",title:(0,import_flow_engine.escapeT)("Filter by TK"),"x-decorator":"FormItem","x-component":function e(t){const o=(0,import_flow_engine.useFlowSettingsContext)(),r=(0,import_react2.useMemo)(()=>{try{return(o.getPropertyMetaTree()||[]).filter(i=>String(i==null?void 0:i.name)==="record")}catch{return o.getPropertyMetaTree()}},[o]);return(0,import_jsx_runtime.jsx)(import_flow_engine.VariableInput,{value:t.value,onChange:t.onChange,disabled:t.disabled,placeholder:t.placeholder,metaTree:()=>r})}}},defaultParams:e=>E(void 0,null,function*(){var t,o,r;const i=e.getPropertyMetaTree()||[],n=Array.isArray(i)&&i.some(p=>String(p==null?void 0:p.name)==="record"),l=e==null?void 0:e.collection,a=n&&l&&typeof l.filterTargetKey=="string"&&l.filterTargetKey?l.filterTargetKey:"id",c=n?`{{ ctx.record.${a} }}`:void 0;let u;try{const p=(o=(t=e==null?void 0:e.resource)==null?void 0:t.getSourceId)==null?void 0:o.call(t);p!=null&&String(p)!==""&&(u="{{ ctx.resource.sourceId }}")}catch{}const d=l==null?void 0:l.dataSourceKey,m=l==null?void 0:l.name;return f(f(f(f({mode:"drawer",size:"medium",pageModelClass:"ChildPageModel",uid:(r=e.model)==null?void 0:r.uid},c?{filterByTk:c}:{}),u?{sourceId:u}:{}),d?{dataSourceKey:d}:{}),m?{collectionName:m}:{})}),beforeParamsSave(e,t){return E(this,null,function*(){if(t!=null&&t.uid){const o=e.engine;if(!(o.getModel(t.uid)||(yield o.loadModel({uid:t.uid}))))throw new Error(e.t("Popup UID not exists"))}})},handler(e,t){return E(this,null,function*(){var o,r,i,n,l,a,c,u,d,m,p,h,g,x,_,v,C,y,b,S,F,j,P,T,M,R,B,D,w,$,N,A,O,q,V;if(t!=null&&t.uid&&t.uid!==e.model.uid){const ie=((r=(o=e.model)==null?void 0:o.getInputArgs)==null?void 0:r.call(o))||{};yield e.openView(t.uid,I(f({},t),{target:e.inputArgs.target||e.layoutContentElement,dataSourceKey:(i=t.dataSourceKey)!=null?i:ie.dataSourceKey,collectionName:(n=t.collectionName)!=null?n:ie.collectionName,associationName:(l=t.associationName)!=null?l:ie.associationName,filterByTk:(a=t.filterByTk)!=null?a:ie.filterByTk,sourceId:(c=t.sourceId)!=null?c:ie.sourceId,tabUid:t.tabUid}));return}const L=e.inputArgs||{},U=(u=e.view)==null?void 0:u.inputArgs;L.filterByTk=L.filterByTk||t.filterByTk||(U==null?void 0:U.filterByTk),L.sourceId=L.sourceId||t.sourceId||(U==null?void 0:U.sourceId),L.tabUid=L.tabuid||t.tabUid||(U==null?void 0:U.tabUid);const z=(d=L.navigation)!=null?d:t.navigation;if(z!==!1&&!e.inputArgs.navigation&&(m=e.view)!=null&&m.navigation){const ie=(p=e.inputArgs)!=null&&p.isMobileLayout?"embed":((h=e.inputArgs)==null?void 0:h.mode)||(t==null?void 0:t.mode)||"drawer",de=I(f({},e.inputArgs),{dataSourceKey:(g=t.dataSourceKey)!=null?g:e.inputArgs.dataSourceKey,collectionName:(x=t.collectionName)!=null?x:e.inputArgs.collectionName,associationName:(_=t.associationName)!=null?_:e.inputArgs.associationName,filterByTk:(v=L.filterByTk)!=null?v:t.filterByTk,sourceId:(C=L.sourceId)!=null?C:t.sourceId,tabUid:(y=L.tabUid)!=null?y:t.tabUid,viewUid:((S=(b=e.model.context)==null?void 0:b.inputArgs)==null?void 0:S.viewUid)||e.model.uid}),se={type:ie,inputArgs:de,navigation:(F=e.view)==null?void 0:F.navigation,preventClose:!!(t!=null&&t.preventClose),engineCtx:e.engine.context};e.model.context.defineProperty("view",{value:se});const ce={viewUid:((P=(j=e.model.context)==null?void 0:j.inputArgs)==null?void 0:P.viewUid)||e.model.uid,filterByTk:(T=L.filterByTk)!=null?T:t.filterByTk,sourceId:(M=L.sourceId)!=null?M:t.sourceId,tabUid:(R=L.tabUid)!=null?R:t.tabUid};e.view.navigation.navigateTo(ce);return}const G={drawer:{small:"30%",medium:"50%",large:"70%"},dialog:{small:"40%",medium:"50%",large:"80%"},embed:{}},Y=e.inputArgs.pageModelClass||t.pageModelClass||"ChildPageModel",K=e.inputArgs.mode||t.mode||"drawer",J=e.inputArgs.size||t.size||"medium";let H=null,Q=null,X=e.model.uid;if(t.subModelKey){const ie=yield e.engine.loadOrCreateModel({async:!0,parentId:e.model.uid,subKey:t.subModelKey,subType:"object",use:"FlowModel"});ie!=null&&ie.uid&&(X=ie.uid)}const te=!!((B=e.inputArgs)!=null&&B.navigation),Z=((w=(D=e.view)==null?void 0:D.inputArgs)==null?void 0:w.openerUids)||L.openerUids||[],oe=te?L.openerUids||Z:[...Z,((N=($=e.model.context)==null?void 0:$.inputArgs)==null?void 0:N.viewUid)||e.model.uid],le=I(f(f({},e.inputArgs),L),{dataSourceKey:t.dataSourceKey,collectionName:t.collectionName,associationName:t.associationName,tabUid:(A=L.tabUid)!=null?A:t.tabUid,openerUids:oe});le.filterByTk=(O=L.filterByTk)!=null?O:t.filterByTk,le.sourceId=(q=L.sourceId)!=null?q:t.sourceId,yield e.viewer.open({type:e.inputArgs.isMobileLayout?"embed":K,inputArgs:le,preventClose:!!t.preventClose,destroyOnClose:!0,inheritContext:!1,target:e.inputArgs.target||e.layoutContentElement,width:G[K][J],content:ie=>(e.inputArgs.closeRef&&(e.inputArgs.closeRef.current=ie.close),e.inputArgs.updateRef&&(e.inputArgs.updateRef.current=ie.update),(0,import_jsx_runtime.jsx)(FlowPage,{parentId:X,pageModelClass:Y,onModelLoaded:(de,se)=>{var ce,fe,pe,xe,he,ge,ve,ne;H=de;const ee=se||e.engine.getModel(H);Q=ee||null;const re=(xe=(pe=L.defineProperties)!=null?pe:(fe=(ce=e.model.context)==null?void 0:ce.inputArgs)==null?void 0:fe.defineProperties)!=null?xe:{},ae=(ne=(ve=L.defineMethods)!=null?ve:(ge=(he=e.model.context)==null?void 0:he.inputArgs)==null?void 0:ge.defineMethods)!=null?ne:{};ee.context.defineProperty("currentView",{get:()=>ie}),ee.context.defineProperty("view",{get:()=>ie}),ee.context.defineProperty("closable",{get:()=>K!=="embed"}),Object.entries(re).forEach(([ue,me])=>{ee.context.defineProperty(ue,me)}),Object.entries(ae).forEach(([ue,me])=>{ee.context.defineMethod(ue,me)}),ee.invalidateAutoFlowCache(!0),ee._rerunLastAutoRun()}})),styles:{content:f({padding:0,backgroundColor:e.model.flowEngine.context.themeToken.colorBgLayout},K==="embed"?{position:"absolute",top:0,left:0,right:0,bottom:0}:{}),body:{padding:0}},onClose:()=>{var ie,de;const se=((ie=e.inputArgs)==null?void 0:ie.navigation)||((de=e.view)==null?void 0:de.navigation);if(H){const ce=Q||e.model.flowEngine.getModel(H);ce==null||ce.invalidateAutoFlowCache(!0)}z!==!1&&se!=null&&se.back&&se.back()},onOpen:e.inputArgs.onOpen}),yield(V=e.resource)==null?void 0:V.refresh()})}}),InjectableRendingEventTrigger=e=>{var t=e,{children:o,mode:r}=t,i=W(t,["children","mode"]);if(import_react2.default.Children.count(o)!==1||!import_react2.default.isValidElement(o))throw new Error("InjectableRendingEventTrigger expects exactly one child element.");return r==="runtime"?(0,import_jsx_runtime.jsx)(RuntimeTrigger,I(f({},i),{children:o})):(0,import_jsx_runtime.jsx)(SettingsTrigger,I(f({},i),{children:o}))},SettingsTrigger=({children:e,name:t,language:o,scene:r})=>{const i=(0,import_flow_engine.useFlowSettingsContext)(),n=useInjectableProps(i,t,o,r,e);return import_react2.default.cloneElement(e,n)},RuntimeTrigger=({children:e,name:t,language:o,scene:r})=>{const i=(0,import_flow_engine.useFlowContext)(),n=useInjectableProps(i,t,o,r,e);return import_react2.default.cloneElement(e,n)},useInjectableProps=(e,t,o,r,i)=>{const[n,l]=import_react2.default.useState({});return(0,import_react2.useEffect)(()=>{e&&e.model.dispatchEvent("InjectableRending",{ctx:e,name:t,language:o,scene:r,children:i,setProps:l})},[e,t,o,r,i]),n};function buildLocalModuleMap(){var e,t;try{const o=import_meta;if(o&&typeof o.glob=="function")return o.glob("./**/*.snippet.{ts,js}",{eager:!1})}catch(o){try{(e=console.debug)==null||e.call(console,"[snippets/loader] import.meta.glob not available",o)}catch{}}try{const o=require==null?void 0:require.context("./",!0,/\.snippet\.(ts|js)$/);if(o){const r={};return o.keys().forEach(i=>{r[i]=()=>E(this,null,function*(){return o(i)})}),r}}catch(o){try{(t=console.debug)==null||t.call(console,"[snippets/loader] require.context not available",o)}catch{}}return{}}function normalizeKey(e){return e.replace(/^\.\//,"").replace(/\.(snippet\.)?(t|j)s$/,"")}function buildUnifiedMap(){const e={},t=buildLocalModuleMap();return Object.keys(t).forEach(o=>{e[normalizeKey(o)]=t[o]}),Object.assign(e,import_flow_engine.engineSnippets),e}const modules=buildUnifiedMap();function loadOne(e){return E(this,null,function*(){var t,o;const r=modules[e];if(!r)throw new Error(`Snippet not found: ${e}`);const i=yield r(),n=i==null?void 0:i.default;if(n&&typeof n=="object"&&typeof n.content=="string")return n.content;const l=(o=(t=n??(i==null?void 0:i.body))!=null?t:i==null?void 0:i.content)!=null?o:"";return typeof l=="string"?l:String(l??"")})}function loadSnippets(e){return E(this,null,function*(){var t;const o={};for(const[r,i]of Object.entries(e||{}))if(i&&typeof i=="object"&&typeof i.$ref=="string")try{o[r]=I(f({},i),{body:yield loadOne(i.$ref)})}catch(n){try{(t=console.debug)==null||t.call(console,"[snippets/loader] missing snippet ref",i.$ref,n)}catch{}o[r]=i}else o[r]=i;return o})}function deriveNameFromKey(e){const t=e.split("/");return t[t.length-1]||e}function groupFromKey(e){const t=e.split("/");if(!t.length)return;const o=t[0];return o==="global"||o==="libs"?o:o==="scene"&&t.length>=2?`${o}/${t[1]}`:t.length>=2?`${t[0]}/${t[1]}`:t[0]}function loadSnippetsForContext(e,t="v1"){return E(this,null,function*(){const o=[];return yield Promise.all(Object.entries(modules).map(r=>E(this,[r],function*([i,n]){var l;try{const a=yield n(),c=a==null?void 0:a.default;let u,d;if(c&&typeof c=="object"&&typeof c.content=="string"?(u=c,d=c.content):typeof c=="string"?(d=c,u=(a==null?void 0:a.meta)||(a==null?void 0:a.info)||{}):typeof(a==null?void 0:a.body)=="string"&&(d=a.body,u=(a==null?void 0:a.meta)||(a==null?void 0:a.info)||{}),typeof d!="string")return;let m=!0;if(u&&Array.isArray(u.contexts)&&u.contexts.length&&(m=u.contexts.includes("*")||u.contexts.includes(e)),m&&u&&Array.isArray(u.versions)&&u.versions.length&&(m=u.versions.includes("*")||u.versions.includes(t)),!m)return;const p=(u==null?void 0:u.label)||deriveNameFromKey(i),h=(u==null?void 0:u.prefix)||p;o.push({name:p,prefix:h,description:u==null?void 0:u.description,body:d,ref:i,group:groupFromKey(i)})}catch(a){try{(l=console.debug)==null||l.call(console,"[snippets/loader] load module failed",i,a)}catch{}}}))),o})}function buildRunJSCompletions(e,t="v1"){return E(this,null,function*(){var o,r;const i=e?(0,import_flow_engine.getRunJSDocFor)(e,{version:t}):import_flow_engine.FlowRunJSContext.getDoc(),n=yield loadSnippets((i==null?void 0:i.snipastes)||{}),l=[],a=m=>typeof m=="string"?m:JSON.stringify(m),c=(i==null?void 0:i.properties)||{};for(const m of Object.keys(c))l.push({label:`ctx.${m}`,type:"property",info:a(c[m]),detail:"ctx property"});const u=(i==null?void 0:i.methods)||{};for(const m of Object.keys(u))l.push({label:`ctx.${m}()`,type:"function",info:a(u[m]),detail:"ctx method",apply:(p,h,g,x)=>{p.dispatch({changes:{from:g,to:x,insert:`ctx.${m}()`}})}});const d=[];for(const[m,p]of Object.entries(n||{})){const h=typeof p=="string"?p:p.body,g=p&&p.prefix||m;if(!h)continue;const x=Array.isArray(h)?h.join(`
|
|
1694
1694
|
`):String(h);l.push((0,import_autocomplete.snippetCompletion)(x,{label:g,detail:m,info:p&&p.description||m}));const _=p&&p.$ref||"",v=typeof _=="string"?_.replace(/^\.\/?/,"").split("/").slice(0,2).join("/"):void 0;d.push({name:m,prefix:p==null?void 0:p.prefix,description:p==null?void 0:p.description,body:x,ref:_,group:v})}try{const m=((r=(o=e==null?void 0:e.model)==null?void 0:o.constructor)==null?void 0:r.name)||"*",p=yield loadSnippetsForContext(m,t);for(const h of p)l.push((0,import_autocomplete.snippetCompletion)(h.body,{label:h.prefix||h.name,detail:h.name,info:h.description||h.ref})),d.push({name:h.name,prefix:h.prefix,description:h.description,body:h.body,ref:h.ref,group:h.group})}catch{}return{completions:l,entries:d}})}function useRunJSDocCompletions(e,t="v1"){const[o,r]=(0,import_react2.useState)(null),[i,n]=(0,import_react2.useState)([]),[l,a]=(0,import_react2.useState)(null);return(0,import_react2.useEffect)(()=>{let c=!1;return E(this,null,function*(){try{const{completions:u,entries:d}=yield buildRunJSCompletions(e,t);c||(r(u),n(d),a(null))}catch(u){c||(r(null),n([]),a(u))}}),()=>{c=!0}},[e,t]),{completions:o,entries:i,error:l}}const WRAPPER_PRELUDE_LINES=2;function clearDiagnostics(e){var t;try{e&&(0,import_lint.setDiagnostics)(e.state,[])}catch(o){try{(t=console.debug)==null||t.call(console,"[errorHelpers] clearDiagnostics failed",o)}catch{}}}function parseErrorLineColumn(e){const t=String((e==null?void 0:e.stack)||(e==null?void 0:e.message)||e||""),o=t.split(`
|
|
1695
1695
|
`);for(const i of o){let n=i.match(/<anonymous>:(\d+):(\d+)/);if(n)return{line:parseInt(n[1],10),column:parseInt(n[2],10)};if(n=i.match(/:(\d+):(\d+)/),n){const l=parseInt(n[1],10),a=parseInt(n[2],10);if(!Number.isNaN(l)&&!Number.isNaN(a))return{line:l,column:a}}}const r=t.match(/line\s*(\d+)\D+column\s*(\d+)/i);return r?{line:parseInt(r[1],10),column:parseInt(r[2],10)}:null}function markErrorAt(e,t,o,r,i=WRAPPER_PRELUDE_LINES){var n;try{if(!e)return;const l=Math.max(1,t-i),a=e.state.doc.line(Math.min(l,e.state.doc.lines)),c=Math.min(a.from+Math.max(0,o-1),a.to),u=[{from:c,to:c,severity:"error",message:r}];(0,import_lint.setDiagnostics)(e.state,u),e.dispatch({selection:{anchor:c},scrollIntoView:!0})}catch(l){try{(n=console.debug)==null||n.call(console,"[errorHelpers] markErrorAt failed",l)}catch{}}}function jumpTo(e,t,o,r=WRAPPER_PRELUDE_LINES){var i;try{if(!e)return;const n=Math.max(1,t-r),l=e.state.doc.line(Math.min(n,e.state.doc.lines)),a=Math.min(l.from+Math.max(0,o-1),l.to);e.dispatch({selection:{anchor:a},scrollIntoView:!0})}catch(n){try{(i=console.debug)==null||i.call(console,"[errorHelpers] jumpTo failed",n)}catch{}}}function getTemplateHtmlRanges(e){const t=[],o=e.from+1,r=e.to-1;let i=o;for(let n=e.firstChild;n;n=n.nextSibling)n.type.name==="Interpolation"&&(n.from>i&&t.push({from:i,to:n.from}),i=Math.max(i,n.to));return i<r&&t.push({from:i,to:r}),t.filter(n=>n.to>n.from)}function javascriptWithHtmlTemplates(){const e=(0,import_lang_javascript.javascript)(),t=(0,import_lang_html.html)(),o=import_lang_javascript.javascriptLanguage.configure({wrap:(0,import_common.parseMixed)(r=>{if(r.type.name!=="TemplateString")return null;const i=getTemplateHtmlRanges(r.node);return i.length?{parser:import_lang_html.htmlLanguage.parser,overlay:i}:null})});return new import_language.LanguageSupport(o,[e.support,t.support])}const buildSegments=(e,t,o)=>{const r=o.state.doc,i=[];let n="",l=0;for(const u of t){const d=r.sliceString(u.from,u.to),m=l,p=m+d.length;i.push({htmlFrom:m,htmlTo:p,docFrom:u.from}),n+=d,l=p}if(!i.length)return null;const a=i.find(({docFrom:u,htmlFrom:d,htmlTo:m})=>o.pos>=u&&o.pos<=u+(m-d));if(!a)return null;const c=a.htmlFrom+(o.pos-a.docFrom);return{htmlDoc:n,htmlPos:c,segments:i}},mapHtmlToDoc=(e,t)=>{for(let o=e.length-1;o>=0;o-=1){const r=e[o];if(t>=r.htmlFrom&&t<=r.htmlTo)return r.docFrom+(t-r.htmlFrom)}return null},findTemplateStringNode=e=>{for(let t=e;t;t=t.parent)if(t.type.name==="TemplateString")return t;return null},resolveHtmlTemplateContext=e=>{const t=(0,import_language.syntaxTree)(e.state).resolveInner(e.pos,-1),o=findTemplateStringNode(t);if(!o||t.type.name==="Interpolation")return null;const r=getTemplateHtmlRanges(o.node);return r.length?buildSegments(o.node,r,e):null},createHtmlCompletionResult=(e,t)=>{const o=mapHtmlToDoc(t,e.from),r=mapHtmlToDoc(t,e.to);return o==null||r==null?null:I(f({},e),{from:o,to:r})},isHtmlTemplateContext=e=>resolveHtmlTemplateContext(e)!=null,createHtmlCompletion=()=>{const e=import_lang_html.htmlCompletionSource;return t=>{const o=resolveHtmlTemplateContext(t);if(!o)return null;const r=import_state.EditorState.create({doc:o.htmlDoc,extensions:[import_lang_html.htmlLanguage]}),i=new import_autocomplete.CompletionContext(r,o.htmlPos,t.explicit),n=e(i);return n?createHtmlCompletionResult(n,o.segments):null}},completions=[{label:"ctx",type:"class",info:"Running context with all available APIs and utilities",detail:"FlowRuntimeContext",boost:110},{label:"ctx.api",type:"class",info:"APIClient instance for making HTTP requests.",detail:"APIClient",boost:100,apply:(e,t,o,r)=>{e.dispatch({changes:{from:o,to:r,insert:t.label}})}},{label:"ctx.api.request(options)",type:"method",info:"Make an HTTP request using the APIClient instance.",detail:"Promise<any>",boost:95,apply:(e,t,o,r)=>{e.dispatch({changes:{from:o,to:r,insert:`await ctx.api.request({
|
|
1696
1696
|
url: "",
|
|
@@ -1753,7 +1753,7 @@ ctx.element.innerHTML = \`
|
|
|
1753
1753
|
`).slice(0,i.loc.line-1).join(`
|
|
1754
1754
|
`).length+(i.loc.line>1?1:0)+i.loc.column,l=n+1):i.pos!==void 0&&(n=i.pos,l=n+1),t.push({from:n,to:l,severity:"error",message:`Syntax error: ${i.message}`,actions:[]})}return t}),EditorCore=({value:e="",onChange:t,placeholder:o="",height:r="100%",minHeight:i,theme:n="light",readonly:l=!1,enableLinter:a=!1,extraCompletions:c,viewRef:u})=>{const d=(0,import_react2.useRef)(null),m=(0,import_react2.useRef)();return(0,import_react2.useEffect)(()=>{m.current=t},[t]),(0,import_react2.useEffect)(()=>{var p,h,g;if(!d.current)return;const x=S=>F=>{const j=F.matchBefore(/[a-zA-Z_][\w.]*/);return!j||j.from===j.to&&!F.explicit?null:{from:j.from,to:j.to,options:S}},_=typeof i>"u"?void 0:typeof i=="string"?i:`${i}px`,v=typeof _=="string"?{".cm-gutter,.cm-content":{minHeight:_}}:{},C=[import_codemirror.basicSetup,javascriptWithHtmlTemplates(),(0,import_autocomplete.autocompletion)({override:[createHtmlCompletion(),createJavascriptCompletion(),...Array.isArray(c)&&c.length?[x(c)]:[]],closeOnBlur:!1,activateOnTyping:!0}),...a?[(0,import_lint.lintGutter)(),createJavaScriptLinter()]:[],(0,import_view.tooltips)({parent:document.getElementById("nocobase-embed-container")||((p=d.current)==null?void 0:p.closest("#nocobase-embed-container"))||document.body}),import_view.EditorView.updateListener.of(S=>{var F;if(S.docChanged&&!l){const j=S.state.doc.toString();try{(F=m.current)==null||F.call(m,j)}catch{}}}),import_view.EditorView.theme(I(f({"&":{height:typeof r=="string"?r||"100%":`${r}px`}},v),{".cm-scroller":{fontFamily:'"Fira Code", "Monaco", "Menlo", "Ubuntu Mono", monospace',overflow:"auto"},".cm-diagnostic":{padding:"4px 8px",borderRadius:"4px",border:"1px solid #d9d9d9",backgroundColor:"#fff",boxShadow:"0 2px 8px rgba(0,0,0,0.1)",fontSize:"12px",maxWidth:"300px"},".cm-diagnostic-error":{borderLeftColor:"#ff4d4f",borderLeftWidth:"3px"},".cm-diagnostic-warning":{borderLeftColor:"#faad14",borderLeftWidth:"3px"},".cm-diagnostic-info":{borderLeftColor:"#1890ff",borderLeftWidth:"3px"},".cm-lintRange-error":{backgroundImage:`url("data:image/svg+xml;charset=utf8,<svg xmlns='http://www.w3.org/2000/svg' width='6' height='3'><path d='m0 3 l2 -2 l1 0 l2 2 l1 0' stroke='%23ff4d4f' fill='none' stroke-width='.7'/></svg>")`,backgroundRepeat:"repeat-x",backgroundPosition:"left bottom"},".cm-lintRange-warning":{backgroundImage:`url("data:image/svg+xml;charset=utf8,<svg xmlns='http://www.w3.org/2000/svg' width='6' height='3'><path d='m0 3 l2 -2 l1 0 l2 2 l1 0' stroke='%23faad14' fill='none' stroke-width='.7'/></svg>")`,backgroundRepeat:"repeat-x",backgroundPosition:"left bottom"},".cm-lintRange-info":{backgroundImage:`url("data:image/svg+xml;charset=utf8,<svg xmlns='http://www.w3.org/2000/svg' width='6' height='3'><path d='m0 3 l2 -2 l1 0 l2 2 l1 0' stroke='%231890ff' fill='none' stroke-width='.7'/></svg>")`,backgroundRepeat:"repeat-x",backgroundPosition:"left bottom"}}))];n==="dark"&&C.push(import_theme_one_dark.oneDark);const y=u.current&&typeof((g=(h=u.current.state)==null?void 0:h.doc)==null?void 0:g.toString)=="function"?u.current.state.doc.toString():e||"",b=new import_view.EditorView({doc:y,extensions:C,parent:d.current});return u.current=b,()=>{try{b.destroy()}catch{}u.current=null}},[c,a,r,i,n,l]),(0,import_react2.useEffect)(()=>{const p=u.current;p&&p.state.doc.toString()!==(e||"")&&p.dispatch({changes:{from:0,to:p.state.doc.length,insert:e||""}})},[e]),(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsx)("div",{style:{flex:1,minHeight:120},ref:d}),o&&!e&&(0,import_jsx_runtime.jsx)("div",{style:{position:"absolute",top:"12px",left:"12px",color:"#999",pointerEvents:"none",fontSize:"14px"},children:o})]})},RightExtra=({rightExtra:e,extraEditorRef:t,onActionCountChange:o,extraContent:r})=>{const[i,n]=(0,import_react2.useState)({}),l=(u,d)=>{n(m=>{const p=I(f({},m),{[u]:d}),h=Object.values(p).filter(Boolean).length;return o==null||o(h),p})},a={padding:"8px",borderBottom:"1px solid #d9d9d9"},{visible:c}=(0,import_react2.useMemo)(()=>{const u=Object.values(i).some(Boolean),d=Array.isArray(e)&&e.length>0;return{visible:u||d||!!r}},[i,e,r]);return(0,import_react2.useEffect)(()=>{t.buttonGroupHeight=c?50:0},[c,t]),c?(0,import_jsx_runtime.jsx)(import_antd.Flex,{gap:"middle",justify:"flex-end",align:"center",style:a,children:(0,import_jsx_runtime.jsxs)("div",{style:{display:"flex",gap:8,alignItems:"center"},children:[r,e==null?void 0:e.map(u=>u(t,l))]})}):null},LogsPanel=({logs:e,onJumpTo:t,tr:o})=>(0,import_jsx_runtime.jsxs)("div",{style:{borderTop:"1px solid #d9d9d9",maxHeight:180,overflow:"auto",padding:"8px 12px",background:"#fff"},children:[(0,import_jsx_runtime.jsx)("div",{style:{fontWeight:600,marginBottom:6},children:o("Logs")}),e.length===0?(0,import_jsx_runtime.jsx)("div",{style:{color:"#999"},children:o("No logs yet. Click Run to execute.")}):e.map((r,i)=>{const n=r.level==="error"?"#ff4d4f":r.level==="warn"?"#faad14":"#333",l=r.level==="error"&&typeof r.line=="number"&&typeof r.column=="number";return(0,import_jsx_runtime.jsxs)("pre",{onClick:l?()=>{typeof r.line=="number"&&typeof r.column=="number"&&(t==null||t(r.line,r.column))}:void 0,style:{margin:0,whiteSpace:"pre-wrap",color:n,cursor:l?"pointer":"default",textDecoration:l?"underline dotted":"none"},children:["[",r.level,"] ",r.msg,l?` (${o("at")} ${r.line}:${r.column})`:""]},i)})]}),SnippetsDrawer=({open:e,onClose:t,getContainer:o,entries:r,onInsert:i,tr:n})=>{const[l,a]=(0,import_react2.useState)(""),c=(0,import_react2.useMemo)(()=>{if(!l)return r;const d=l.toLowerCase();return r.filter(m=>m.name.toLowerCase().includes(d)||(m.prefix||"").toLowerCase().includes(d)||(m.description||"").toLowerCase().includes(d)||(m.group||"").toLowerCase().includes(d)||m.body.toLowerCase().includes(d))},[r,l]),u=(0,import_react2.useMemo)(()=>{const d={global:n("Common"),libs:n("Libs"),"scene/jsblock":n("Block"),"scene/jsfield":n("Field"),"scene/jsitem":n("Form Item"),"scene/actions":n("Actions"),"scene/linkage":n("Linkage")};return m=>m?d[m]||m:""},[n]);return(0,import_jsx_runtime.jsxs)(import_antd.Drawer,{title:n("Snippets"),open:e,onClose:t,getContainer:o,width:"100%",destroyOnClose:!0,children:[(0,import_jsx_runtime.jsx)(import_antd.Input,{placeholder:n("Search snippets (name / prefix / body / group)"),allowClear:!0,value:l,onChange:d=>a(d.target.value),style:{marginBottom:12}}),(0,import_jsx_runtime.jsx)(import_antd.List,{dataSource:c,renderItem:d=>(0,import_jsx_runtime.jsx)(import_antd.List.Item,{actions:[(0,import_jsx_runtime.jsx)(import_antd.Button,{size:"small",type:"primary",onClick:()=>{const m=d.body.endsWith(`
|
|
1755
1755
|
`)?d.body:d.body+`
|
|
1756
|
-
`;i(m)},children:n("Insert")},"insert")],children:(0,import_jsx_runtime.jsx)(import_antd.List.Item.Meta,{title:(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsx)("span",{children:d.name}),d.prefix?(0,import_jsx_runtime.jsx)(import_antd.Tag,{style:{marginLeft:8},children:d.prefix}):null,d.group?(0,import_jsx_runtime.jsx)(import_antd.Tag,{color:"blue",style:{marginLeft:8},children:u(d.group)}):null]}),description:d.description||u(d.group)||d.ref||""})})})]})};function safeToString(e){try{return typeof e=="string"?e:JSON.stringify(e)}catch{try{return String(e)}catch{return"[Unstringifiable]"}}}function createConsoleCapture(e){return{log:(...t)=>e("log",t),info:(...t)=>e("info",t),warn:(...t)=>e("warn",t),error:(...t)=>e("error",t)}}function useCodeRunner(e,t="v1"){const[o,r]=(0,import_react2.useState)([]),[i,n]=(0,import_react2.useState)(!1),l=(0,import_react2.useCallback)(()=>r([]),[]);return{run:(0,import_react2.useCallback)(a=>E(this,null,function*(){var c;n(!0),r([]);try{const u=e==null?void 0:e.model;if(!u)throw new Error("No model in FlowContext");const d=e.engine.getModel(u.uid,!0)||u,m={log:(...S)=>console.log(...S),info:(...S)=>console.info(...S),warn:(...S)=>console.warn(...S),error:(...S)=>console.error(...S)},p=(S,F)=>{var j;const P=F.map(T=>safeToString(T)).join(" ");r(T=>[...T,{level:S,msg:P}]),(j=m[S])==null||j.call(m,...F)},h=createConsoleCapture(p);(c=d.setStepParams)==null||c.call(d,"jsSettings","runJs",{code:a,version:t});const g=import_flow_engine.JSRunner.prototype,x=g.run;let _=!1,v=()=>{};const C=new Promise(S=>v=S);g.run=function(S){return E(this,null,function*(){var F;const j=(F=this==null?void 0:this.globals)==null?void 0:F.console;try{this.globals||(this.globals={}),this.globals.console=h}catch(P){console.warn("[useCodeRunner] inject console failed:",P)}try{const P=yield x.call(this,S);if(!_){_=!0;try{v(P)}catch(T){console.warn("[useCodeRunner] resolve deferred failed:",T)}}return P}finally{try{typeof j>"u"?delete this.globals.console:this.globals.console=j}catch(P){console.warn("[useCodeRunner] restore console failed:",P)}}})},yield(S=>E(this,null,function*(){var F;const j=(F=S==null?void 0:S.getFlow)==null?void 0:F.call(S,"jsSettings");(j==null?void 0:j.manual)===!0?yield S.applyFlow("jsSettings",{preview:{code:a,version:t}}):yield S.applyAutoFlows({preview:{code:a,version:t}},!1)}))(d);const y=12e3,b=yield Promise.race([C,new Promise(S=>setTimeout(()=>S({success:!1,timeout:!0,error:new Error("Preview timed out")}),y))]);if(import_flow_engine.JSRunner.prototype.run=x,b!=null&&b.success)p("info",["Execution succeeded"]);else{const S=b!=null&&b.timeout?"Execution timed out":String((b==null?void 0:b.error)||"Unknown error"),F=parseErrorLineColumn(b==null?void 0:b.error);F&&typeof F.line=="number"&&typeof F.column=="number"?r(j=>[...j,{level:"error",msg:S,line:F.line,column:F.column}]):p("error",[S])}return b}catch(u){const d=(u==null?void 0:u.message)||String(u)||"Run preview failed";return r(m=>[...m,{level:"error",msg:d}]),{success:!1,error:u}}finally{n(!1)}}),[e,t]),logs:o,clearLogs:l,running:i}}const CodeEditor=e=>{const t=e,{mode:o,name:r,language:i,scene:n}=t,l=W(t,["mode","name","language","scene"]);return(0,import_jsx_runtime.jsx)(InjectableRendingEventTrigger,I(f({},{mode:o,name:r,language:i,scene:n}),{children:(0,import_jsx_runtime.jsx)(InnerCodeEditor,f({},l))}))},InnerCodeEditor=({value:e="",onChange:t,placeholder:o="",height:r="100%",minHeight:i,theme:n="light",readonly:l=!1,enableLinter:a=!1,rightExtra:c,wrapperStyle:u,extraCompletions:d,version:m="v1"})=>{const p=(0,import_react2.useRef)(null),h=(0,import_react2.useRef)(null),g=(0,import_flow_engine.useFlowContext)(),{completions:x,entries:_}=useRunJSDocCompletions(g,m),{run:v,logs:C,running:y}=useCodeRunner(g,m),[b,S]=(0,import_react2.useState)(!1),F=(0,import_react2.useCallback)(()=>{const M=p.current;return M&&(M.closest(".ant-drawer-content-wrapper")||M.closest(".ant-drawer-content")||M.closest(".ant-modal-content")||M.parentElement)||document.body},[]),j=(0,import_react2.useCallback)((M,R)=>{try{return g!=null&&g.t?g.t(M,R):M}catch{return M}},[g]),P=(0,import_react2.useMemo)(()=>{const M=[];return Array.isArray(d)&&M.push(...d),Array.isArray(x)&&M.push(...x),M},[d,x]),T=(0,import_react2.useRef)({write(M){const R=h.current;R&&R.state.doc.toString()!==M&&R.dispatch({changes:{from:0,to:R.state.doc.length,insert:M}})},read(){const M=h.current;return M?M.state.doc.toString():""},buttonGroupHeight:0});return(0,import_jsx_runtime.jsxs)("div",{style:f({border:"1px solid #d9d9d9",borderRadius:"6px",overflow:"visible",position:"relative",display:"flex",flexDirection:"column"},u),ref:p,children:[(0,import_jsx_runtime.jsx)(RightExtra,{rightExtra:c,extraEditorRef:T.current,extraContent:(0,import_jsx_runtime.jsxs)("div",{style:{display:"flex",gap:8,alignItems:"center"},children:[(0,import_jsx_runtime.jsx)(import_antd.Button,{size:"small",onClick:()=>S(!0),children:j("Snippets")}),(0,import_jsx_runtime.jsx)(import_jsx_runtime.Fragment,{children:(0,import_jsx_runtime.jsx)(import_antd.Button,{size:"small",loading:y,onClick:()=>E(void 0,null,function*(){var M;const R=((M=h.current)==null?void 0:M.state.doc.toString())||"";clearDiagnostics(h.current);const B=yield v(R);if(!(B!=null&&B.success)){const D=B==null?void 0:B.error,w=B!=null&&B.timeout?j("Execution timed out"):String(D||j("Unknown error")),$=parseErrorLineColumn(D);$&&h.current&&markErrorAt(h.current,$.line,$.column,w)}}),children:j("Run")})})]})}),(0,import_jsx_runtime.jsx)(EditorCore,{value:e,onChange:t,placeholder:o,height:r,minHeight:i,theme:n,readonly:l,enableLinter:a,extraCompletions:P,viewRef:h}),(0,import_jsx_runtime.jsx)(LogsPanel,{logs:C,onJumpTo:(M,R)=>{const B=h.current;B&&jumpTo(B,M,R)},tr:j}),(0,import_jsx_runtime.jsx)(SnippetsDrawer,{open:b,onClose:()=>S(!1),getContainer:F,entries:_,tr:j,onInsert:M=>{const R=h.current;if(!R)return;const{from:B,to:D}=R.state.selection.main,w=B+M.length;R.dispatch({changes:{from:B,to:D,insert:M},selection:{anchor:w},scrollIntoView:!0}),R.focus(),S(!1)}})]})},runjs=(0,import_flow_engine.defineAction)({name:"runjs",title:(0,import_flow_engine.escapeT)("Execute JavaScript"),scene:[import_flow_engine.ActionScene.DYNAMIC_EVENT_FLOW],uiSchema:{code:{type:"string","x-component":CodeEditor,"x-component-props":{enableLinter:!0,height:"200px",mode:"runtime",scene:"eventFlow"}}},handler(e,t){return E(this,null,function*(){var o;(o=e.inputArgs)!=null&&o.navigation||e.runjs(t.code)})}}),SelectOptions$1=e=>{var t,o;const r=(0,import_flow_engine.useFlowSettingsContext)(),i=useCompile(),n=r.model.context.collectionField,l=r.app.dataSourceManager;if(!(n!=null&&n.target))return;const a=n.targetCollection,c=((o=(t=a==null?void 0:a.getFields)==null?void 0:t.call(a))!=null?o:[]).filter(u=>isTitleField(l,u.options)).map(u=>{var d;return{value:u.name,label:i((d=u.options.uiSchema)==null?void 0:d.title)||u.name}});return(0,import_jsx_runtime.jsx)(import_antd.Select,I(f({},e),{options:c}))},titleField=(0,import_flow_engine.defineAction)({name:"titleField",title:(0,import_client.tval)("Label field"),uiSchema:e=>e.collectionField.isAssociationField()?{label:{"x-component":SelectOptions$1,"x-decorator":"FormItem"}}:null,defaultParams:e=>{var t;const o=e.model.context.collectionField.targetCollectionTitleFieldName;return{label:((t=e.model.props)==null?void 0:t.titleField)||o}},beforeParamsSave:(e,t,o)=>E(void 0,null,function*(){const r=e.model.collectionField.target,i=e.model.collectionField.targetCollection;if(t.label!==o.label){const n=e.model.subModels.field.uid;yield e.engine.destroyModel(n);const l=i.getField(t.label),a=import_flow_engine.DisplayItemModel.getDefaultBindingByField(e,l).modelName,c=e.model.setSubModel("field",{use:a,stepParams:{fieldSettings:{init:{dataSourceKey:e.model.collectionField.dataSourceKey,collectionName:r,fieldPath:t.label}}}});yield c.save(),yield c.applyAutoFlows(),yield e.model.save()}}),handler(e,t){return E(this,null,function*(){const o=e.model.collectionField.target,r=e.model.collectionField.targetCollection,i=r.filterTargetKey,n=t.label,l={value:i,label:n};e.model.setProps({fieldNames:l});const a=r.getField(n),c=import_flow_engine.DisplayItemModel.getDefaultBindingByField(e,a).modelName;e.model.subModels.field||(yield e.model.setSubModel("field",{use:c,stepParams:{fieldSettings:{init:{dataSourceKey:e.model.collectionField.dataSourceKey,collectionName:o,fieldPath:l.label}}}}).applyAutoFlows())})}}),parseMarkdown=import_lodash.default.memoize(e=>E(void 0,null,function*(){return e&&(yield Promise.resolve().then(()=>require("./md-oH2RssNY-IQIU5F3r.js"))).default.render(e)}));function useParseMarkdown(e){const[t,o]=(0,import_react2.useState)(""),[r,i]=(0,import_react2.useState)(!0);return(0,import_react2.useEffect)(()=>{i(!0),parseMarkdown(e).then(n=>{o(n),i(!1)}).catch(n=>console.log(n))},[e]),{html:t,loading:r}}function convertToText(e){const t=e;let o=document.createElement("div");o.innerHTML=t;const r=o.innerText;return o=null,(r==null?void 0:r.replace(/[\n\r]/g,""))||""}const useMarkdownStyles=()=>{const{token:e}=import_antd.theme.useToken(),{isDarkTheme:t}=useGlobalTheme(),o=new import_tinycolor.TinyColor(e.colorFillAlter).onBackground(e.colorBgContainer).toHexShortString(),r={lineHeight:"inherit","&.nb-markdown-default":{"pre code.hljs":{display:"block",overflowX:"auto",padding:"1em"},"code.hljs":{padding:"3px 5px"},":not(pre) code":{padding:"2px 5px",color:"#d56161",background:e.colorFillQuaternary,border:`1px solid ${e.colorBorder}`,borderRadius:e.borderRadiusSM},blockquote:{borderLeft:"4px solid #ccc",paddingLeft:"20px",marginLeft:"0",color:"#666",fontStyle:"italic"},img:{maxWidth:"100%"},".hljs":{background:"#f8f8f8",color:"#444"},".hljs-comment":{color:"#697070"},".hljs-punctuation,.hljs-tag":{color:"#444a"},".hljs-tag .hljs-attr,.hljs-tag .hljs-name":{color:"#444"},".hljs-attribute,.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-name,.hljs-selector-tag":{fontWeight:700},".hljs-deletion,.hljs-number,.hljs-quote,.hljs-selector-class,.hljs-selector-id,.hljs-string,.hljs-template-tag,.hljs-type":{color:"#800"},".hljs-section,.hljs-title":{color:"#800",fontWeight:700},".hljs-link,.hljs-operator,.hljs-regexp,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-symbol,.hljs-template-variable,.hljs-variable":{color:"#ab5656"},".hljs-literal":{color:"#695"},".hljs-addition,.hljs-built_in,.hljs-bullet,.hljs-code":{color:"#397300"},".hljs-meta":{color:"#1f7199"},".hljs-meta .hljs-string":{color:"#38a"},".hljs-emphasis":{fontStyle:"italic"},".hljs-strong":{fontWeight:700}},"&.nb-markdown-table":{table:{borderCollapse:"collapse",width:"100%",fontFamily:"Arial, sans-serif",marginBottom:"1.5rem"},"th, td":{borderBottom:`1px solid ${e.colorBorderSecondary}`,padding:`${e.paddingContentVertical}px ${e.paddingContentHorizontal}px`,textAlign:"left"},th:{backgroundColor:o,fontWeight:"bold",color:e.colorText},"tr:hover":{backgroundColor:e.colorFillTertiary},"tr:last-child td":{borderBottom:"none"},"tr:first-child th":{borderTop:"none"}}},i={"&.nb-markdown-default":{"pre code.hljs":{display:"block",overflowX:"auto",padding:"1em"},"code.hljs":{padding:"3px 5px"},":not(pre) code":{padding:"2px 5px",color:"#d56161",background:e.colorFillQuaternary,border:`1px solid ${e.colorBorder}`,borderRadius:e.borderRadiusSM},".hljs":{color:"#adbac7",background:"#22272e"},".hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_":{color:"#f47067"},".hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_":{color:"#dcbdfb"},".hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-variable":{color:"#6cb6ff"},".hljs-meta .hljs-string,.hljs-regexp,.hljs-string":{color:"#96d0ff"},".hljs-built_in,.hljs-symbol":{color:"#f69d50"},".hljs-code,.hljs-comment,.hljs-formula":{color:"#768390"},".hljs-name,.hljs-quote,.hljs-selector-pseudo,.hljs-selector-tag":{color:"#8ddb8c"},".hljs-subst":{color:"#adbac7"},".hljs-section":{color:"#316dca",fontWeight:700},".hljs-bullet":{color:"#eac55f"},".hljs-emphasis":{color:"#adbac7",fontStyle:"italic"},".hljs-strong":{color:"#adbac7",fontWeight:700},".hljs-addition":{color:"#b4f1b4",backgroundColor:"#1b4721"},".hljs-deletion":{color:"#ffd8d3",backgroundColor:"#78191b"}},"&.nb-markdown-table":{table:{borderCollapse:"collapse",width:"100%",fontFamily:"Arial, sans-serif",marginBottom:"1.5rem"},"th, td":{borderBottom:`1px solid ${e.colorBorderSecondary}`,padding:`${e.paddingContentVertical}px ${e.paddingContentHorizontal}px`,textAlign:"left"},th:{backgroundColor:o,fontWeight:"bold",color:e.colorText},"tr:hover":{backgroundColor:e.colorFillTertiary},"tr:last-child td":{borderBottom:"none"},"tr:first-child th":{borderTop:"none"}}};return(0,import_css.css)(f({lineHeight:e.lineHeight,"& > *:last-child":{marginBottom:"0"},".ant-description-textarea, .ant-description-input":{lineHeight:e.lineHeight},".field-interface-datetime":{minWidth:"100px"}},t?i:r))},DisplayMarkdown=e=>{const{textOnly:t}=e,o=useMarkdownStyles(),{html:r=""}=useParseMarkdown(e.value),i=convertToText(r),n=(0,import_jsx_runtime.jsx)("div",{className:` ${o} nb-markdown nb-markdown-default nb-markdown-table`,dangerouslySetInnerHTML:{__html:r},style:e.style});return(0,import_jsx_runtime.jsx)(import_jsx_runtime.Fragment,{children:t?i:n})},useBlockHeight=({height:e,heightMode:t})=>t!=="specifyValue"?null:e,BlockItemCard=import_react2.default.forwardRef((e,t)=>{const{t:o}=(0,import_react_i18next.useTranslation)(),{token:r}=import_antd.theme.useToken(),i=e,{title:n,description:l,children:a,className:c}=i,u=W(i,["title","description","children","className"]),d=useBlockHeight(e),m=(n||l)&&(0,import_jsx_runtime.jsxs)("div",{style:{padding:"8px 0px 8px"},children:[(0,import_jsx_runtime.jsxs)("span",{children:[" ",o(n,{ns:NAMESPACE_UI_SCHEMA})]}),l&&(0,import_jsx_runtime.jsx)(DisplayMarkdown,{value:o(l,{ns:NAMESPACE_UI_SCHEMA}),style:{overflowWrap:"break-word",whiteSpace:"normal",fontWeight:400,color:r.colorTextDescription,borderRadius:"4px"}})]});return(0,import_jsx_runtime.jsx)(import_antd.Card,I(f({ref:t,title:m,style:{display:"flex",flexDirection:"column",height:d},styles:{body:{flex:1,display:"flex",flexDirection:"column",overflow:"auto"}},className:c},u),{children:a}))}),getContentWidth=e=>{if(e){const t=document.createRange();return t.selectNodeContents(e),t.getBoundingClientRect().width}},ellipsisDefaultStyle={overflow:"hidden",overflowWrap:"break-word",textOverflow:"ellipsis",whiteSpace:"nowrap",wordBreak:"break-all"},isOverflowTooltip=e=>{if(!e)return!1;const t=getContentWidth(e),o=e.offsetWidth;return t>o},popoverStyle={width:300,overflow:"auto",maxHeight:400},EllipsisWithTooltip=(0,import_react2.forwardRef)((e,t)=>{const[o,r]=(0,import_react2.useState)(!1),[i,n]=(0,import_react2.useState)(!1),l=(0,import_react2.useRef)();(0,import_react2.useImperativeHandle)(t,()=>({setPopoverVisible:n}),[]);const a=(0,import_react2.useCallback)(u=>{const d=u.target;isOverflowTooltip(l.current)&&r(d.scrollWidth>=d.clientWidth)},[]),c=(0,import_react2.useMemo)(()=>e.ellipsis?(0,import_jsx_runtime.jsx)("div",{ref:l,role:e.role,style:ellipsisDefaultStyle,onMouseEnter:a,children:e.children}):e.children,[a,e.children,e.ellipsis,e.role]);return!e.ellipsis||!o?c:(0,import_jsx_runtime.jsx)(import_antd.Popover,{open:o&&i,onOpenChange:u=>{n(o&&u)},content:(0,import_jsx_runtime.jsx)("div",{style:popoverStyle,children:e.popoverContent||e.children}),children:c})});EllipsisWithTooltip.displayName="EllipsisWithTooltip";const date=(0,import_dayjs.default)(),spaceCSS=import_css.css`
|
|
1756
|
+
`;i(m)},children:n("Insert")},"insert")],children:(0,import_jsx_runtime.jsx)(import_antd.List.Item.Meta,{title:(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsx)("span",{children:d.name}),d.prefix?(0,import_jsx_runtime.jsx)(import_antd.Tag,{style:{marginLeft:8},children:d.prefix}):null,d.group?(0,import_jsx_runtime.jsx)(import_antd.Tag,{color:"blue",style:{marginLeft:8},children:u(d.group)}):null]}),description:d.description||u(d.group)||d.ref||""})})})]})};function safeToString(e){try{return typeof e=="string"?e:JSON.stringify(e)}catch{try{return String(e)}catch{return"[Unstringifiable]"}}}function createConsoleCapture(e){return{log:(...t)=>e("log",t),info:(...t)=>e("info",t),warn:(...t)=>e("warn",t),error:(...t)=>e("error",t)}}function useCodeRunner(e,t="v1"){const[o,r]=(0,import_react2.useState)([]),[i,n]=(0,import_react2.useState)(!1),l=(0,import_react2.useCallback)(()=>r([]),[]);return{run:(0,import_react2.useCallback)(a=>E(this,null,function*(){var c;n(!0),r([]);try{const u=e==null?void 0:e.model;if(!u)throw new Error("No model in FlowContext");const d=e.engine.getModel(u.uid,!0)||u,m={log:(...S)=>console.log(...S),info:(...S)=>console.info(...S),warn:(...S)=>console.warn(...S),error:(...S)=>console.error(...S)},p=(S,F)=>{var j;const P=F.map(T=>safeToString(T)).join(" ");r(T=>[...T,{level:S,msg:P}]),(j=m[S])==null||j.call(m,...F)},h=createConsoleCapture(p);(c=d.setStepParams)==null||c.call(d,"jsSettings","runJs",{code:a,version:t});const g=import_flow_engine.JSRunner.prototype,x=g.run;let _=!1,v=()=>{};const C=new Promise(S=>v=S);g.run=function(S){return E(this,null,function*(){var F;const j=(F=this==null?void 0:this.globals)==null?void 0:F.console;try{this.globals||(this.globals={}),this.globals.console=h}catch(P){console.warn("[useCodeRunner] inject console failed:",P)}try{const P=yield x.call(this,S);if(!_){_=!0;try{v(P)}catch(T){console.warn("[useCodeRunner] resolve deferred failed:",T)}}return P}finally{try{typeof j>"u"?delete this.globals.console:this.globals.console=j}catch(P){console.warn("[useCodeRunner] restore console failed:",P)}}})},yield(S=>E(this,null,function*(){var F;const j=(F=S==null?void 0:S.getFlow)==null?void 0:F.call(S,"jsSettings");(j==null?void 0:j.manual)===!0?yield S.applyFlow("jsSettings",{preview:{code:a,version:t}}):yield S.applyAutoFlows({preview:{code:a,version:t}},!1)}))(d);const y=12e3,b=yield Promise.race([C,new Promise(S=>setTimeout(()=>S({success:!1,timeout:!0,error:new Error("Preview timed out")}),y))]);if(import_flow_engine.JSRunner.prototype.run=x,b!=null&&b.success)p("info",["Execution succeeded"]);else{const S=b!=null&&b.timeout?"Execution timed out":String((b==null?void 0:b.error)||"Unknown error"),F=parseErrorLineColumn(b==null?void 0:b.error);F&&typeof F.line=="number"&&typeof F.column=="number"?r(j=>[...j,{level:"error",msg:S,line:F.line,column:F.column}]):p("error",[S])}return b}catch(u){const d=(u==null?void 0:u.message)||String(u)||"Run preview failed";return r(m=>[...m,{level:"error",msg:d}]),{success:!1,error:u}}finally{n(!1)}}),[e,t]),logs:o,clearLogs:l,running:i}}const CodeEditor=e=>{const t=e,{mode:o,name:r,language:i,scene:n}=t,l=W(t,["mode","name","language","scene"]);return(0,import_jsx_runtime.jsx)(InjectableRendingEventTrigger,I(f({},{mode:o,name:r,language:i,scene:n}),{children:(0,import_jsx_runtime.jsx)(InnerCodeEditor,f({},l))}))},InnerCodeEditor=({value:e="",onChange:t,placeholder:o="",height:r="100%",minHeight:i,theme:n="light",readonly:l=!1,enableLinter:a=!1,rightExtra:c,wrapperStyle:u,extraCompletions:d,version:m="v1"})=>{const p=(0,import_react2.useRef)(null),h=(0,import_react2.useRef)(null),g=(0,import_flow_engine.useFlowContext)(),{completions:x,entries:_}=useRunJSDocCompletions(g,m),{run:v,logs:C,running:y}=useCodeRunner(g,m),[b,S]=(0,import_react2.useState)(!1),F=(0,import_react2.useCallback)(()=>{const M=p.current;return M&&(M.closest(".ant-drawer-content-wrapper")||M.closest(".ant-drawer-content")||M.closest(".ant-modal-content")||M.parentElement)||document.body},[]),j=(0,import_react2.useCallback)((M,R)=>{try{return g!=null&&g.t?g.t(M,R):M}catch{return M}},[g]),P=(0,import_react2.useMemo)(()=>{const M=[];return Array.isArray(d)&&M.push(...d),Array.isArray(x)&&M.push(...x),M},[d,x]),T=(0,import_react2.useRef)({write(M){const R=h.current;R&&R.state.doc.toString()!==M&&R.dispatch({changes:{from:0,to:R.state.doc.length,insert:M}})},read(){const M=h.current;return M?M.state.doc.toString():""},buttonGroupHeight:0});return(0,import_jsx_runtime.jsxs)("div",{style:f({border:"1px solid #d9d9d9",borderRadius:"6px",overflow:"visible",position:"relative",display:"flex",flexDirection:"column"},u),ref:p,children:[(0,import_jsx_runtime.jsx)(RightExtra,{rightExtra:c,extraEditorRef:T.current,extraContent:(0,import_jsx_runtime.jsxs)("div",{style:{display:"flex",gap:8,alignItems:"center"},children:[(0,import_jsx_runtime.jsx)(import_antd.Button,{size:"small",onClick:()=>S(!0),children:j("Snippets")}),(0,import_jsx_runtime.jsx)(import_jsx_runtime.Fragment,{children:(0,import_jsx_runtime.jsx)(import_antd.Button,{size:"small",loading:y,onClick:()=>E(void 0,null,function*(){var M;const R=((M=h.current)==null?void 0:M.state.doc.toString())||"";clearDiagnostics(h.current);const B=yield v(R);if(!(B!=null&&B.success)){const D=B==null?void 0:B.error,w=B!=null&&B.timeout?j("Execution timed out"):String(D||j("Unknown error")),$=parseErrorLineColumn(D);$&&h.current&&markErrorAt(h.current,$.line,$.column,w)}}),children:j("Run")})})]})}),(0,import_jsx_runtime.jsx)(EditorCore,{value:e,onChange:t,placeholder:o,height:r,minHeight:i,theme:n,readonly:l,enableLinter:a,extraCompletions:P,viewRef:h}),(0,import_jsx_runtime.jsx)(LogsPanel,{logs:C,onJumpTo:(M,R)=>{const B=h.current;B&&jumpTo(B,M,R)},tr:j}),(0,import_jsx_runtime.jsx)(SnippetsDrawer,{open:b,onClose:()=>S(!1),getContainer:F,entries:_,tr:j,onInsert:M=>{const R=h.current;if(!R)return;const{from:B,to:D}=R.state.selection.main,w=B+M.length;R.dispatch({changes:{from:B,to:D,insert:M},selection:{anchor:w},scrollIntoView:!0}),R.focus(),S(!1)}})]})},runjs=(0,import_flow_engine.defineAction)({name:"runjs",title:(0,import_flow_engine.escapeT)("Execute JavaScript"),scene:[import_flow_engine.ActionScene.DYNAMIC_EVENT_FLOW],uiSchema:{code:{type:"string","x-component":CodeEditor,"x-component-props":{enableLinter:!0,height:"200px",mode:"runtime",scene:"eventFlow"}}},handler(e,t){return E(this,null,function*(){var o;(o=e.inputArgs)!=null&&o.navigation||e.runjs(t.code)})}}),SelectOptions$1=e=>{var t,o;const r=(0,import_flow_engine.useFlowSettingsContext)(),i=useCompile(),n=r.model.context.collectionField,l=r.app.dataSourceManager;if(!(n!=null&&n.target))return;const a=n.targetCollection,c=((o=(t=a==null?void 0:a.getFields)==null?void 0:t.call(a))!=null?o:[]).filter(u=>isTitleField(l,u.options)).map(u=>{var d;return{value:u.name,label:i((d=u.options.uiSchema)==null?void 0:d.title)||u.name}});return(0,import_jsx_runtime.jsx)(import_antd.Select,I(f({},e),{options:c}))},titleField=(0,import_flow_engine.defineAction)({name:"titleField",title:(0,import_client.tval)("Label field"),uiSchema:e=>!e.collectionField||!e.collectionField.isAssociationField()?null:{label:{"x-component":SelectOptions$1,"x-decorator":"FormItem"}},defaultParams:e=>{var t;const o=e.model.context.collectionField.targetCollectionTitleFieldName;return{label:((t=e.model.props)==null?void 0:t.titleField)||o}},beforeParamsSave:(e,t,o)=>E(void 0,null,function*(){const r=e.model.collectionField.target,i=e.model.collectionField.targetCollection;if(t.label!==o.label){const n=e.model.subModels.field.uid;yield e.engine.destroyModel(n);const l=i.getField(t.label),a=import_flow_engine.DisplayItemModel.getDefaultBindingByField(e,l).modelName,c=e.model.setSubModel("field",{use:a,stepParams:{fieldSettings:{init:{dataSourceKey:e.model.collectionField.dataSourceKey,collectionName:r,fieldPath:t.label}}}});yield c.save(),yield c.applyAutoFlows(),yield e.model.save()}}),handler(e,t){return E(this,null,function*(){const o=e.model.collectionField.target,r=e.model.collectionField.targetCollection,i=r.filterTargetKey,n=t.label,l={value:i,label:n};e.model.setProps({fieldNames:l});const a=r.getField(n),c=import_flow_engine.DisplayItemModel.getDefaultBindingByField(e,a).modelName;e.model.subModels.field||(yield e.model.setSubModel("field",{use:c,stepParams:{fieldSettings:{init:{dataSourceKey:e.model.collectionField.dataSourceKey,collectionName:o,fieldPath:l.label}}}}).applyAutoFlows())})}}),parseMarkdown=import_lodash.default.memoize(e=>E(void 0,null,function*(){return e&&(yield Promise.resolve().then(()=>require("./md-oH2RssNY-IQIU5F3r.js"))).default.render(e)}));function useParseMarkdown(e){const[t,o]=(0,import_react2.useState)(""),[r,i]=(0,import_react2.useState)(!0);return(0,import_react2.useEffect)(()=>{i(!0),parseMarkdown(e).then(n=>{o(n),i(!1)}).catch(n=>console.log(n))},[e]),{html:t,loading:r}}function convertToText(e){const t=e;let o=document.createElement("div");o.innerHTML=t;const r=o.innerText;return o=null,(r==null?void 0:r.replace(/[\n\r]/g,""))||""}const useMarkdownStyles=()=>{const{token:e}=import_antd.theme.useToken(),{isDarkTheme:t}=useGlobalTheme(),o=new import_tinycolor.TinyColor(e.colorFillAlter).onBackground(e.colorBgContainer).toHexShortString(),r={lineHeight:"inherit","&.nb-markdown-default":{"pre code.hljs":{display:"block",overflowX:"auto",padding:"1em"},"code.hljs":{padding:"3px 5px"},":not(pre) code":{padding:"2px 5px",color:"#d56161",background:e.colorFillQuaternary,border:`1px solid ${e.colorBorder}`,borderRadius:e.borderRadiusSM},blockquote:{borderLeft:"4px solid #ccc",paddingLeft:"20px",marginLeft:"0",color:"#666",fontStyle:"italic"},img:{maxWidth:"100%"},".hljs":{background:"#f8f8f8",color:"#444"},".hljs-comment":{color:"#697070"},".hljs-punctuation,.hljs-tag":{color:"#444a"},".hljs-tag .hljs-attr,.hljs-tag .hljs-name":{color:"#444"},".hljs-attribute,.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-name,.hljs-selector-tag":{fontWeight:700},".hljs-deletion,.hljs-number,.hljs-quote,.hljs-selector-class,.hljs-selector-id,.hljs-string,.hljs-template-tag,.hljs-type":{color:"#800"},".hljs-section,.hljs-title":{color:"#800",fontWeight:700},".hljs-link,.hljs-operator,.hljs-regexp,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-symbol,.hljs-template-variable,.hljs-variable":{color:"#ab5656"},".hljs-literal":{color:"#695"},".hljs-addition,.hljs-built_in,.hljs-bullet,.hljs-code":{color:"#397300"},".hljs-meta":{color:"#1f7199"},".hljs-meta .hljs-string":{color:"#38a"},".hljs-emphasis":{fontStyle:"italic"},".hljs-strong":{fontWeight:700}},"&.nb-markdown-table":{table:{borderCollapse:"collapse",width:"100%",fontFamily:"Arial, sans-serif",marginBottom:"1.5rem"},"th, td":{borderBottom:`1px solid ${e.colorBorderSecondary}`,padding:`${e.paddingContentVertical}px ${e.paddingContentHorizontal}px`,textAlign:"left"},th:{backgroundColor:o,fontWeight:"bold",color:e.colorText},"tr:hover":{backgroundColor:e.colorFillTertiary},"tr:last-child td":{borderBottom:"none"},"tr:first-child th":{borderTop:"none"}}},i={"&.nb-markdown-default":{"pre code.hljs":{display:"block",overflowX:"auto",padding:"1em"},"code.hljs":{padding:"3px 5px"},":not(pre) code":{padding:"2px 5px",color:"#d56161",background:e.colorFillQuaternary,border:`1px solid ${e.colorBorder}`,borderRadius:e.borderRadiusSM},".hljs":{color:"#adbac7",background:"#22272e"},".hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_":{color:"#f47067"},".hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_":{color:"#dcbdfb"},".hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-variable":{color:"#6cb6ff"},".hljs-meta .hljs-string,.hljs-regexp,.hljs-string":{color:"#96d0ff"},".hljs-built_in,.hljs-symbol":{color:"#f69d50"},".hljs-code,.hljs-comment,.hljs-formula":{color:"#768390"},".hljs-name,.hljs-quote,.hljs-selector-pseudo,.hljs-selector-tag":{color:"#8ddb8c"},".hljs-subst":{color:"#adbac7"},".hljs-section":{color:"#316dca",fontWeight:700},".hljs-bullet":{color:"#eac55f"},".hljs-emphasis":{color:"#adbac7",fontStyle:"italic"},".hljs-strong":{color:"#adbac7",fontWeight:700},".hljs-addition":{color:"#b4f1b4",backgroundColor:"#1b4721"},".hljs-deletion":{color:"#ffd8d3",backgroundColor:"#78191b"}},"&.nb-markdown-table":{table:{borderCollapse:"collapse",width:"100%",fontFamily:"Arial, sans-serif",marginBottom:"1.5rem"},"th, td":{borderBottom:`1px solid ${e.colorBorderSecondary}`,padding:`${e.paddingContentVertical}px ${e.paddingContentHorizontal}px`,textAlign:"left"},th:{backgroundColor:o,fontWeight:"bold",color:e.colorText},"tr:hover":{backgroundColor:e.colorFillTertiary},"tr:last-child td":{borderBottom:"none"},"tr:first-child th":{borderTop:"none"}}};return(0,import_css.css)(f({lineHeight:e.lineHeight,"& > *:last-child":{marginBottom:"0"},".ant-description-textarea, .ant-description-input":{lineHeight:e.lineHeight},".field-interface-datetime":{minWidth:"100px"}},t?i:r))},DisplayMarkdown=e=>{const{textOnly:t}=e,o=useMarkdownStyles(),{html:r=""}=useParseMarkdown(e.value),i=convertToText(r),n=(0,import_jsx_runtime.jsx)("div",{className:` ${o} nb-markdown nb-markdown-default nb-markdown-table`,dangerouslySetInnerHTML:{__html:r},style:e.style});return(0,import_jsx_runtime.jsx)(import_jsx_runtime.Fragment,{children:t?i:n})},useBlockHeight=({height:e,heightMode:t})=>t!=="specifyValue"?null:e,BlockItemCard=import_react2.default.forwardRef((e,t)=>{const{t:o}=(0,import_react_i18next.useTranslation)(),{token:r}=import_antd.theme.useToken(),i=e,{title:n,description:l,children:a,className:c}=i,u=W(i,["title","description","children","className"]),d=useBlockHeight(e),m=(n||l)&&(0,import_jsx_runtime.jsxs)("div",{style:{padding:"8px 0px 8px"},children:[(0,import_jsx_runtime.jsxs)("span",{children:[" ",o(n,{ns:NAMESPACE_UI_SCHEMA})]}),l&&(0,import_jsx_runtime.jsx)(DisplayMarkdown,{value:o(l,{ns:NAMESPACE_UI_SCHEMA}),style:{overflowWrap:"break-word",whiteSpace:"normal",fontWeight:400,color:r.colorTextDescription,borderRadius:"4px"}})]});return(0,import_jsx_runtime.jsx)(import_antd.Card,I(f({ref:t,title:m,style:{display:"flex",flexDirection:"column",height:d},styles:{body:{flex:1,display:"flex",flexDirection:"column",overflow:"auto"}},className:c},u),{children:a}))}),getContentWidth=e=>{if(e){const t=document.createRange();return t.selectNodeContents(e),t.getBoundingClientRect().width}},ellipsisDefaultStyle={overflow:"hidden",overflowWrap:"break-word",textOverflow:"ellipsis",whiteSpace:"nowrap",wordBreak:"break-all"},isOverflowTooltip=e=>{if(!e)return!1;const t=getContentWidth(e),o=e.offsetWidth;return t>o},popoverStyle={width:300,overflow:"auto",maxHeight:400},EllipsisWithTooltip=(0,import_react2.forwardRef)((e,t)=>{const[o,r]=(0,import_react2.useState)(!1),[i,n]=(0,import_react2.useState)(!1),l=(0,import_react2.useRef)();(0,import_react2.useImperativeHandle)(t,()=>({setPopoverVisible:n}),[]);const a=(0,import_react2.useCallback)(u=>{const d=u.target;isOverflowTooltip(l.current)&&r(d.scrollWidth>=d.clientWidth)},[]),c=(0,import_react2.useMemo)(()=>e.ellipsis?(0,import_jsx_runtime.jsx)("div",{ref:l,role:e.role,style:ellipsisDefaultStyle,onMouseEnter:a,children:e.children}):e.children,[a,e.children,e.ellipsis,e.role]);return!e.ellipsis||!o?c:(0,import_jsx_runtime.jsx)(import_antd.Popover,{open:o&&i,onOpenChange:u=>{n(o&&u)},content:(0,import_jsx_runtime.jsx)("div",{style:popoverStyle,children:e.popoverContent||e.children}),children:c})});EllipsisWithTooltip.displayName="EllipsisWithTooltip";const date=(0,import_dayjs.default)(),spaceCSS=import_css.css`
|
|
1757
1757
|
width: 100%;
|
|
1758
1758
|
& > .ant-space-item {
|
|
1759
1759
|
flex: 1;
|
|
@@ -1771,9 +1771,9 @@ ctx.element.innerHTML = \`
|
|
|
1771
1771
|
display: flex;
|
|
1772
1772
|
margin: 5px 0px;
|
|
1773
1773
|
}
|
|
1774
|
-
`,defaultValue:"dddd",formats:["MMMM Do YYYY","YYYY-MM-DD","MM/DD/YY","YYYY/MM/DD","DD/MM/YYYY"]},enum:[{label:DateFormatCom({format:"MMMM Do YYYY"}),value:"MMMM Do YYYY"},{label:DateFormatCom({format:"YYYY-MM-DD"}),value:"YYYY-MM-DD"},{label:DateFormatCom({format:"MM/DD/YY"}),value:"MM/DD/YY"},{label:DateFormatCom({format:"YYYY/MM/DD"}),value:"YYYY/MM/DD"},{label:DateFormatCom({format:"DD/MM/YYYY"}),value:"DD/MM/YYYY"},{label:(0,import_client.tval)("Custom"),value:"custom"}],"x-reactions":[i=>{const{picker:n}=i.form.values;i.value=(0,import_client.getPickerFormat)(n),i.setComponentProps({picker:n})}]},showTime:{type:"boolean","x-decorator":"FormItem","x-component":"Checkbox","x-content":'{{t("Show time")}}',"x-reactions":[{dependencies:["picker"],fulfill:{state:{hidden:"{{ $form.values.picker !== 'date' }}"}}},i=>{const{collectionField:n}=e.model.context,{picker:l}=i.form.values||{};i.hidden=n.type==="dateOnly"||l!=="date",l!=="date"&&(i.value=!1)}]},timeFormat:r}},defaultParams:e=>{const{showTime:t,dateFormat:o,timeFormat:r,picker:i}=f(f({},e.model.context.collectionField.getComponentProps()),e.model.props);return{picker:i||"date",dateFormat:o||"YYYY-MM-DD",timeFormat:r||"HH:mm:ss",showTime:t}},handler(e,t){const{collectionField:o}=e.model.context;o.type==="time"?e.model.setProps(I(f({},t),{format:t==null?void 0:t.timeFormat})):e.model.setProps(I(f({},t),{format:t!=null&&t.showTime?`${t.dateFormat} ${t.timeFormat}`:t.dateFormat}))}}),SelectOptions=e=>{const t=(0,import_flow_engine.useFlowSettingsContext)(),o=t.model.resource,r=t.model.collectionField,i=useCompile(),n=(o==null?void 0:o.getResourceName())||r.target,l=useSortFields(n);return(0,import_jsx_runtime.jsx)(import_antd.Select,I(f({},e),{options:i(l)}))},sortingRule=(0,import_flow_engine.defineAction)({name:"sortingRule",title:(0,import_flow_engine.escapeT)("Default sorting"),uiSchema:{sort:{type:"array","x-component":"ArrayItems","x-decorator":"FormItem",items:{type:"object",properties:{space:{type:"void","x-component":"Space",properties:{sort:{type:"void","x-decorator":"FormItem","x-component":"ArrayItems.SortHandle"},field:{type:"string",required:!0,"x-decorator":"FormItem","x-component":SelectOptions,"x-component-props":{style:{width:260}}},direction:{type:"string","x-decorator":"FormItem","x-component":"Radio.Group","x-component-props":{optionType:"button"},enum:[{label:(0,import_flow_engine.escapeT)("ASC"),value:"asc"},{label:(0,import_flow_engine.escapeT)("DESC"),value:"desc"}]},remove:{type:"void","x-decorator":"FormItem","x-component":"ArrayItems.Remove"}}}}},properties:{add:{type:"void",title:(0,import_flow_engine.escapeT)("Add sort field"),"x-component":"ArrayItems.Addition"}}}},defaultParams(e){return{sort:[]}},handler(e,t){return E(this,null,function*(){var o;const r=t.sort.map(n=>n.direction==="desc"?`-${n.field}`:n.field),i=(o=e.model)==null?void 0:o.resource;i&&i.setSort(r)})}}),dataLoadingMode=(0,import_flow_engine.defineAction)({name:"dataLoadingMode",title:(0,import_client.tval)("Data loading mode"),uiSchema:{dataLoadingMode:{"x-decorator":"FormItem","x-component":"Radio.Group",enum:[{value:"auto",label:(0,import_client.tval)("Load all data when filter is empty")},{value:"manual",label:(0,import_client.tval)("Do not load data when filter is empty")}]}},defaultParams(e){return{dataLoadingMode:"auto"}},handler(e,t){return E(this,null,function*(){e.model.setProps("dataLoadingMode",t.dataLoadingMode)})}}),renderMode=(0,import_flow_engine.defineAction)({title:(0,import_client.tval)("Render mode"),name:"renderMode",uiSchema:{textOnly:{type:"string",enum:[{label:(0,import_client.tval)("Text only"),value:!0},{label:(0,import_client.tval)("Html"),value:!1}],"x-decorator":"FormItem","x-component":"Radio.Group"}},defaultParams:{textOnly:!0},handler(e,t){e.model.setProps({textOnly:t.textOnly})}}),layout=(0,import_flow_engine.defineAction)({title:(0,import_client.tval)("Set block layout"),name:"layout",uiSchema:{layout:{type:"string",enum:[{label:(0,import_client.tval)("Vertical"),value:"vertical"},{label:(0,import_client.tval)("Horizontal"),value:"horizontal"}],required:!0,"x-decorator":"FormItem","x-component":"Radio.Group"},labelAlign:{title:(0,import_client.tval)("Label align"),type:"string","x-decorator":"FormItem","x-component":"Select",enum:[{label:"{{t('Right')}}",value:"right"},{label:"{{t('Left')}}",value:"left"}],"x-reactions":[e=>{const{layout:t}=e.form.values;e.hidden=t==="vertical"}]},labelWidth:{title:(0,import_client.tval)("Label width"),type:"string",required:!0,"x-decorator":"FormItem","x-component":"NumberPicker","x-component-props":{addonAfter:"px"},"x-validator":[{minimum:50}],"x-reactions":[e=>{const{layout:t}=e.form.values;e.hidden=t==="vertical"}]},labelWrap:{type:"string",title:(0,import_client.tval)("When the Label exceeds the width"),enum:[{label:(0,import_client.tval)("Line break"),value:!0},{label:(0,import_client.tval)("Ellipsis"),value:!1}],"x-decorator":"FormItem","x-component":"Radio.Group","x-reactions":[e=>{const{layout:t}=e.form.values;e.hidden=t==="vertical"}]},colon:{type:"boolean","x-content":(0,import_client.tval)("Colon"),required:!0,"x-decorator":"FormItem","x-component":"Checkbox"}},defaultParams:e=>({layout:"vertical",labelAlign:"left",labelWidth:120,labelWrap:!0,colon:!0}),handler(e,t){e.model.setProps(I(f({},t),{labelWidth:t.layout==="vertical"?null:t.labelWidth})),e.model.subModels.grid.findSubModel("items",o=>{o.setProps(I(f({},t),{labelWidth:t.layout==="vertical"?"100%":t.labelWidth,labelWrap:t.layout==="vertical"?!0:t.labelWrap}))})}}),required=(0,import_flow_engine.defineAction)({title:(0,import_flow_engine.escapeT)("Required"),name:"required",uiSchema:e=>E(void 0,null,function*(){var t,o,r;const i=((o=(t=e.model.collectionField)==null?void 0:t.validation)==null?void 0:o.rules)||[],n=((r=e.model.props.validation)==null?void 0:r.rules)||[],l=i.concat(n).some(a=>a.name==="required");return{required:{"x-component":"Switch","x-decorator":"FormItem","x-component-props":{checkedChildren:(0,import_flow_engine.escapeT)("Yes"),unCheckedChildren:(0,import_flow_engine.escapeT)("No")},"x-disabled":l}}}),defaultParams:e=>({required:e.model.getProps().required}),handler(e,t){var o,r;let i=e.model.getProps().rules||[];const n=(((r=(o=e.model.collectionField)==null?void 0:o.validation)==null?void 0:r.rules)||[]).some(l=>l.name==="required");i=i.filter(l=>!l.required),t.required&&!n&&i.push({required:!0,message:e.t("The field value is required")}),e.model.setProps({rules:i,required:t.required||n})}});function getValueWithIndex(e,t,o){const r=t.split(".");if(o!=null&&o.length){const i=[];let n=0,l=0;for(;n<r.length;){const a=r[n];if(i.push(a),l<o.length){const[c,u]=o[l].split(":");c===a&&(i.push(Number(u)),l++)}n++}return(0,import_lodash.get)(e,i)}return(0,import_lodash.get)(e,r)}class DetailsItemModel extends import_flow_engine.DisplayItemModel{static defineChildren(t){const o=t.collection;return o.getFields().map(r=>{const i=this.getDefaultBindingByField(t,r,{fallbackToTargetTitleField:!0});if(!i)return null;const n=i.modelName,l=t.prefixFieldPath?`${t.prefixFieldPath}.${r.name}`:r.name;return{key:l,label:r.title,refreshTargets:["DetailsCustomItemModel/DetailsJSFieldItemModel"],toggleable:a=>{var c;return((c=a.getStepParams("fieldSettings","init"))==null?void 0:c.fieldPath)===l},useModel:"DetailsItemModel",createModelOptions:()=>({use:"DetailsItemModel",stepParams:{fieldSettings:{init:{dataSourceKey:o.dataSourceKey,collectionName:t.model.context.blockModel.collection.name,fieldPath:l}}},subModels:{field:{use:n,props:typeof i.defaultProps=="function"?i.defaultProps(t,r):i.defaultProps}}})}}).filter(Boolean)}onInit(t){super.onInit(t)}render(){const t=this.subModels.field,o=this.context.fieldIndex,r=o!=null?(()=>{const n=t.createFork({},`${o}`);return n.context.defineProperty("fieldIndex",{get:()=>o}),n})():t,i=getValueWithIndex(this.context.record,this.fieldPath,o);return(0,import_jsx_runtime.jsx)(import_flow_engine.FormItem,I(f({},this.props),{value:i,children:(0,import_jsx_runtime.jsx)(import_flow_engine.FieldModelRenderer,{model:r})}))}}DetailsItemModel.define({label:(0,import_flow_engine.escapeT)("Display collection fields"),sort:100});DetailsItemModel.registerFlow({key:"detailItemSettings",sort:300,title:(0,import_flow_engine.escapeT)("Detail item settings"),steps:{label:{title:(0,import_flow_engine.escapeT)("Label"),uiSchema:e=>({title:{"x-component":"Input","x-decorator":"FormItem","x-reactions":t=>{var o,r;const i=e.model,n=(o=i.collectionField)==null?void 0:o.title;t.decoratorProps=I(f({},t.decoratorProps),{extra:i.context.t("Original field title: ")+((r=i.context.t(n))!=null?r:"")})}}}),defaultParams:e=>({title:e.collectionField.title}),handler(e,t){e.model.setProps({label:t.title})}},aclCheck:{use:"aclCheck"},init:{handler(e){return E(this,null,function*(){const{collectionField:t}=e.model;t&&e.model.setProps(t.getComponentProps())})}},showLabel:{title:(0,import_flow_engine.escapeT)("Show label"),uiSchema:{showLabel:{"x-component":"Switch","x-decorator":"FormItem","x-component-props":{checkedChildren:(0,import_flow_engine.escapeT)("Yes"),unCheckedChildren:(0,import_flow_engine.escapeT)("No")}}},defaultParams:{showLabel:!0},handler(e,t){e.model.setProps({showLabel:t.showLabel})}},tooltip:{title:(0,import_flow_engine.escapeT)("Tooltip"),uiSchema:{tooltip:{"x-component":"Input.TextArea","x-decorator":"FormItem"}},handler(e,t){e.model.setProps({tooltip:t.tooltip})}},description:{title:(0,import_flow_engine.escapeT)("Description"),uiSchema:{description:{"x-component":"Input.TextArea","x-decorator":"FormItem"}},handler(e,t){e.model.setProps({extra:t.description})}},model:{title:(0,import_flow_engine.escapeT)("Field component"),use:"displayFieldComponent"},fieldNames:{use:"titleField",title:(0,import_flow_engine.escapeT)("Label field"),beforeParamsSave:(e,t,o)=>E(void 0,null,function*(){if(!e.collectionField.isAssociationField())return null;if(t.label!==o.label){const r=e.collectionField.targetCollection,i=r.getField(t.label),n=e.model.constructor.getDefaultBindingByField(e,i);if(n.modelName!==e.model.subModels.field.use){const l=e.model.subModels.field.uid;yield e.engine.destroyModel(l),yield e.model.setSubModel("field",{use:n.modelName,stepParams:{fieldSettings:{init:{dataSourceKey:e.model.collectionField.dataSourceKey,collectionName:r.name,fieldPath:t.label}}}}).save()}e.model.setProps(e.collectionField.targetCollection.getField(t.label).getComponentProps())}}),handler(e,t){var o,r;e.model.setProps(f({titleField:t.label},(r=(o=e.collectionField.targetCollection)==null?void 0:o.getField(t.label))==null?void 0:r.getComponentProps()))}}}});function buildAssociationOptions(e,t,o){const{collectionField:r}=e,i=t.getBindingsByField(e,r),n=l=>l.map(a=>{var c;return{label:((c=e.engine.getModelClass(a.modelName).meta)==null?void 0:c.label)||a.modelName,value:a.modelName}});if(o){const l=t.getBindingsByField(e,r.targetCollection.getField(o));return[i.length&&{label:(0,import_flow_engine.escapeT)("AssociationField component"),options:n(i)},{label:(0,import_flow_engine.escapeT)("Title field component"),options:n(l)}].filter(Boolean)}return n(i)}const displayFieldComponent=(0,import_flow_engine.defineAction)({name:"displayFieldComponent",title:(0,import_flow_engine.escapeT)("Field component"),uiSchema:e=>{const{titleField:t}=e.model.props;return e.model.constructor.getBindingsByField(e,e.collectionField).length===1&&!t?null:{use:{type:"string","x-component":"Select","x-decorator":"FormItem",enum:buildAssociationOptions(e,e.model.constructor,t)}}},beforeParamsSave:(e,t,o)=>E(void 0,null,function*(){const r=e.model.constructor.getBindingsByField(e,e.collectionField),{titleField:i}=e.model.props;let n=[];i&&(n=e.model.constructor.getBindingsByField(e,e.collectionField.targetCollection.getField(i)));const l=r.concat(n).find(a=>a.modelName===t.use);if(t.use!==o.use){const a=e.model.subModels.field.uid;yield e.engine.destroyModel(a),e.model.setSubModel("field",{use:t.use,props:l==null?void 0:l.defaultProps,stepParams:{fieldSettings:{init:e.model.getFieldSettingsInitParams()}}}),yield e.model.save()}}),defaultParams:e=>{var t;const o=e.model.constructor.getDefaultBindingByField(e,e.collectionField);return{use:((t=e.model.subModels.field)==null?void 0:t.use)||o.modelName}},handler(e,t){return E(this,null,function*(){t.use!==e.model.subModels.field.use&&e.model.setStepParams(e.flowKey,"model",{use:e.model.subModels.field.use})})}}),fieldComponent=(0,import_flow_engine.defineAction)({title:(0,import_client.tval)("Field component"),name:"fieldComponent",uiSchema:e=>{if(e.model.getProps().pattern==="readPretty"){const{titleField:t}=e.model.props;return e.model.constructor.getBindingsByField(e,e.collectionField).length===1&&!t?null:{use:{type:"string","x-component":"Select","x-decorator":"FormItem",enum:buildAssociationOptions(e,DetailsItemModel,t)}}}else{const t=e.model.constructor.getBindingsByField(e,e.collectionField);return t.length===1?null:{use:{type:"string","x-component":"Select","x-decorator":"FormItem",enum:t.map(o=>{var r;return{label:((r=e.engine.getModelClass(o.modelName).meta)==null?void 0:r.label)||o.modelName,value:o.modelName}})}}}},beforeParamsSave:(e,t,o)=>E(void 0,null,function*(){let r=e.model.constructor.getBindingsByField(e,e.collectionField),i=[];if(e.model.getProps().pattern==="readPretty"){const{titleField:l}=e.model.props;r=DetailsItemModel.getBindingsByField(e,e.collectionField),l&&(i=DetailsItemModel.getBindingsByField(e,e.collectionField.targetCollection.getField(l)))}const n=r.concat(i).find(l=>l.modelName===t.use);if(t.use!==o.use){const l=e.model.subModels.field.uid;yield e.engine.destroyModel(l),e.model.setSubModel("field",{use:t.use,props:typeof n.defaultProps=="function"?n.defaultProps(e,e.collectionField):n.defaultProps,stepParams:{fieldSettings:{init:e.model.getFieldSettingsInitParams()}}}),yield e.model.save()}}),defaultParams:e=>{const t=e.model.getProps().pattern==="readPretty"?DetailsItemModel.getDefaultBindingByField(e,e.collectionField):e.model.constructor.getDefaultBindingByField(e,e.collectionField);return{use:e.model.subModels.field.use||t.modelName}},handler(e,t){return E(this,null,function*(){})}}),aclCheck=(0,import_flow_engine.defineAction)({name:"aclCheck",handler(e,t){return E(this,null,function*(){var o,r;(yield e.aclCheck({dataSourceKey:(o=e.model.context.dataSource)==null?void 0:o.key,resourceName:e.model.context.resourceName,actionName:e.model.context.actionName,fields:((r=e.model.context)==null?void 0:r.collectionField)&&[e.model.context.collectionField.name]}))||(e.model.hidden=!0,e.exitAll())})}}),pattern=(0,import_flow_engine.defineAction)({name:"pattern",title:(0,import_flow_engine.escapeT)("Display mode"),uiSchema:e=>({pattern:{"x-component":"Select","x-decorator":"FormItem",enum:[{value:"editable",label:(0,import_flow_engine.escapeT)("Editable")},{value:"disabled",label:(0,import_flow_engine.escapeT)("Disabled")},{value:"readPretty",label:(0,import_flow_engine.escapeT)("Display only")}],"x-disabled":e.model.collectionField.inputable===!1}}),defaultParams:e=>({pattern:e.model.collectionField.inputable===!1||e.model.context.parentDisabled||e.model.props.disabled||e.model.collectionField.readonly?"disabled":"editable"}),afterParamsSave:(e,t,o)=>E(void 0,null,function*(){const{model:r}=e;if(t.pattern==="readPretty"){const i=DetailsItemModel.getDefaultBindingByField(e,e.collectionField,{fallbackToTargetTitleField:!0});yield rebuildFieldSubModel(e,r,i)}else{const i=e.model.constructor.getDefaultBindingByField(e,e.collectionField);o.pattern==="readPretty"&&(yield rebuildFieldSubModel(e,r,i))}}),handler(e,t){t.pattern==="readPretty"?e.model.setProps({pattern:"readPretty"}):e.model.setProps({disabled:t.pattern==="disabled"})}});function rebuildFieldSubModel(e,t,o){return E(this,null,function*(){var r;if(!o)return;const i=(r=t.subModels.field)==null?void 0:r.uid;i&&(yield e.engine.destroyModel(i));const n=typeof o.defaultProps=="function"?o.defaultProps(e,{}):o.defaultProps;yield t.setSubModel("field",{use:o.modelName,props:n||{},stepParams:{fieldSettings:{init:t.getFieldSettingsInitParams()}}}).applyAutoFlows(),yield t.save()})}const validation=(0,import_flow_engine.defineAction)({title:(0,import_flow_engine.escapeT)("Validation"),name:"validation",uiSchema:e=>{const t=e.app.dataSourceManager.collectionFieldInterfaceManager.getFieldInterface(e.model.collectionField.interface);return t.validationType?{validation:{"x-decorator":"FormItem","x-component":FieldValidation,"x-component-props":{type:t.validationType,availableValidationOptions:[...new Set(t.availableValidationOptions)],excludeValidationOptions:[...new Set(t.excludeValidationOptions)],isAssociation:t.isAssociation}}}:null},handler(e,t){if(t.validation){const o=e.model.getProps().rules||[],r=(0,import_flow_engine.jioToJoiSchema)(t.validation),i=e.model.props.label;o.push({validator:(l,a)=>{const{error:c}=r.validate(a,{context:{label:i},abortEarly:!1});if(c){const u=c.details.map(d=>d.message.replace(/"value"/g,`"${i}"`)).join(", ");return Promise.reject(u)}return Promise.resolve()}});const n=t.validation.rules.some(l=>l.name==="required");e.model.setProps({rules:o,required:n,validation:t.validation})}}}),FieldAssignValueInput=({fieldUid:e,value:t,onChange:o})=>{var r,i,n;const l=(0,import_flow_engine.useFlowContext)(),a=import_react2.default.useMemo(()=>{var C,y,b,S;try{return(((S=(b=(y=(C=l.model)==null?void 0:C.subModels)==null?void 0:y.grid)==null?void 0:b.subModels)==null?void 0:S.items)||[]).find(F=>(F==null?void 0:F.uid)===e)}catch{return}},[l,e]),{collection:c,dataSource:u,blockModel:d}=(a==null?void 0:a.context)||{},m=((r=a==null?void 0:a.getStepParams)==null?void 0:r.call(a,"fieldSettings","init"))||{},p=m==null?void 0:m.fieldPath,[h,g]=import_react2.default.useState(null);import_react2.default.useEffect(()=>{var C,y,b,S,F,j,P,T,M,R,B,D,w,$,N,A,O,q;if(!a||!c||!p)return;const V=((C=a==null?void 0:a.context)==null?void 0:C.engine)||((b=(y=l.model)==null?void 0:y.context)==null?void 0:b.engine),L=(typeof(c==null?void 0:c.getFields)=="function"?c.getFields()||[]:[]).find(X=>(X==null?void 0:X.name)===p);typeof(c==null?void 0:c.getField)=="function"&&c.getField(p);const U=import_flow_engine.EditableItemModel.getDefaultBindingByField(a==null?void 0:a.context,L);if(!U)return;const z=U.modelName,G=(S=V==null?void 0:V.createModel)==null?void 0:S.call(V,{use:"VariableFieldFormModel",subModels:{fields:[{use:z,stepParams:{fieldSettings:{init:{dataSourceKey:c==null?void 0:c.dataSourceKey,collectionName:c==null?void 0:c.name,fieldPath:p}}}}]}});if(!G)return;(j=(F=G.context)==null?void 0:F.defineProperty)==null||j.call(F,"collection",{value:c}),u&&((T=(P=G.context)==null?void 0:P.defineProperty)==null||T.call(P,"dataSource",{value:u}));const Y=typeof(c==null?void 0:c.getField)=="function"?c.getField(p):void 0;Y&&((R=(M=G.context)==null?void 0:M.defineProperty)==null||R.call(M,"collectionField",{value:Y})),d&&((D=(B=G.context)==null?void 0:B.defineProperty)==null||D.call(B,"blockModel",{value:d})),G.context&&Object.defineProperty(G.context,"resource",{configurable:!0,enumerable:!0,get:()=>d==null?void 0:d.resource});const K=($=(w=G==null?void 0:G.subModels)==null?void 0:w.fields)==null?void 0:$[0],J=Y==null?void 0:Y.type,H=Y==null?void 0:Y.interface,Q=J==="belongsToMany"||J==="hasMany"||J==="belongsToArray"||H==="m2m"||H==="o2m"||H==="mbm";if((N=K==null?void 0:K.setProps)==null||N.call(K,{disabled:!1,readPretty:!1,pattern:"editable",updateAssociation:!1,multiple:Q}),(A=K==null?void 0:K.applyAutoFlows)==null||A.call(K),ensureOptionsFromUiSchemaEnumIfAbsent(K,Y),!((O=K==null?void 0:K.props)!=null&&O.fieldNames)&&Y!=null&&Y.targetCollection){const X=Y.targetCollection,te=(Y==null?void 0:Y.targetKey)||(X==null?void 0:X.filterTargetKey)||"id";(q=K==null?void 0:K.setProps)==null||q.call(K,{fieldNames:{label:X==null?void 0:X.titleField,value:te}})}return g(G),()=>{var X,te;(te=(X=G.subModels.fields).forEach)==null||te.call(X,Z=>Z.remove()),G.remove()}},[a,c,u,d,p,l]),import_react2.default.useEffect(()=>{var C,y,b,S;if(!h)return;const F=P=>{var T;return P&&typeof P=="object"&&"target"in P?(T=P.target)==null?void 0:T.value:P};(C=h.setProps)==null||C.call(h,{value:t,onChange:P=>o==null?void 0:o(F(P))});const j=(b=(y=h==null?void 0:h.subModels)==null?void 0:y.fields)==null?void 0:b[0];(S=j==null?void 0:j.setProps)==null||S.call(j,{value:t,onChange:P=>o==null?void 0:o(F(P))})},[h,t,o]);const x=import_react2.default.useMemo(()=>C=>(import_react2.default.useEffect(()=>{var y,b,S,F;const j=T=>{var M;return T&&typeof T=="object"&&"target"in T?(M=T.target)==null?void 0:M.value:T};(y=h==null?void 0:h.setProps)==null||y.call(h,I(f({},C),{onChange:T=>{var M;return(M=C==null?void 0:C.onChange)==null?void 0:M.call(C,j(T))}}));const P=(S=(b=h==null?void 0:h.subModels)==null?void 0:b.fields)==null?void 0:S[0];(F=P==null?void 0:P.setProps)==null||F.call(P,{value:C==null?void 0:C.value,onChange:T=>{var M;return(M=C==null?void 0:C.onChange)==null?void 0:M.call(C,j(T))}})},[C]),h?(0,import_jsx_runtime.jsx)("div",{style:{flex:1,minWidth:0},children:(0,import_jsx_runtime.jsx)(import_flow_engine.FlowModelRenderer,{model:h,showFlowSettings:!1})}):null),[h]),_=import_react2.default.useMemo(()=>()=>{var C,y;return(0,import_jsx_runtime.jsx)(import_antd.Input,{placeholder:`<${(y=(C=l.t)==null?void 0:C.call(l,"Null"))!=null?y:"Null"}>`,readOnly:!0,style:{width:"100%"}})},[l]),v=import_react2.default.useMemo(()=>()=>E(void 0,null,function*(){var C;const y=(yield(C=l.getPropertyMetaTree)==null?void 0:C.call(l))||[];return[{title:(0,import_flow_engine.escapeT)("Constant"),name:"constant",type:"string",paths:["constant"],render:x},{title:(0,import_flow_engine.escapeT)("Null"),name:"null",type:"object",paths:["null"],render:_},...y]}),[l,x,_]);return!a||!p?(0,import_jsx_runtime.jsx)(import_antd.Input,{disabled:!0,placeholder:(n=(i=l.t)==null?void 0:i.call(l,"Please select a field"))!=null?n:"Please select a field"}):(0,import_jsx_runtime.jsx)(import_flow_engine.VariableInput,{value:t,onChange:o,metaTree:v,style:{width:"100%"},clearValue:"",converters:{renderInputComponent:C=>{var y;const b=(y=C==null?void 0:C.paths)==null?void 0:y[0];if(b==="constant")return x;if(b==="null")return _},resolveValueFromPath:C=>{var y;const b=(y=C==null?void 0:C.paths)==null?void 0:y[0];if(b==="constant")return"";if(b==="null")return null},resolvePathFromValue:C=>C===null?["null"]:(0,import_flow_engine.isVariableExpression)(C)?(0,import_flow_engine.parseValueToPath)(C):["constant"]}})},getFormFields=e=>{var t,o,r,i;try{return(((i=(r=(o=(t=e.model)==null?void 0:t.subModels)==null?void 0:o.grid)==null?void 0:r.subModels)==null?void 0:i.items)||[]).map(n=>({label:n.props.label||n.props.name,value:n.uid,model:n}))}catch(n){return console.warn("Failed to get form fields:",n),[]}},linkageSetBlockProps=(0,import_flow_engine.defineAction)({name:"linkageSetBlockProps",title:(0,import_flow_engine.escapeT)("Set block state"),scene:import_flow_engine.ActionScene.BLOCK_LINKAGE_RULES,sort:100,uiSchema:{value:{type:"string","x-component":e=>{const{value:t,onChange:o}=e,r=(0,import_flow_engine.useFlowContext)(),i=r.model.translate.bind(r.model);return(0,import_jsx_runtime.jsx)(import_antd.Select,{value:t,onChange:o,placeholder:i("Please select state"),style:{width:"100%"},options:[{label:i("Visible"),value:"visible"},{label:i("Hidden"),value:"hidden"}],allowClear:!0})}}},handler(e,{value:t,setProps:o}){o(e.model,{hiddenModel:t==="hidden"})}}),linkageSetActionProps=(0,import_flow_engine.defineAction)({name:"linkageSetActionProps",title:(0,import_flow_engine.escapeT)("Set button state"),scene:import_flow_engine.ActionScene.ACTION_LINKAGE_RULES,sort:100,uiSchema:{value:{type:"string","x-component":e=>{const{value:t,onChange:o}=e,r=(0,import_flow_engine.useFlowContext)(),i=r.model.translate.bind(r.model);return(0,import_jsx_runtime.jsx)(import_antd.Select,{value:t,onChange:o,placeholder:i("Please select state"),style:{width:"100%"},options:[{label:i("Visible"),value:"visible"},{label:i("Hidden"),value:"hidden"},{label:i("Enabled"),value:"enabled"},{label:i("Disabled"),value:"disabled"}],allowClear:!0})}}},handler(e,{value:t,setProps:o}){o(e.model,{hiddenModel:t==="hidden",disabled:t==="disabled"})}}),linkageSetFieldProps=(0,import_flow_engine.defineAction)({name:"linkageSetFieldProps",title:(0,import_flow_engine.escapeT)("Set field state"),scene:import_flow_engine.ActionScene.FIELD_LINKAGE_RULES,sort:100,uiSchema:{value:{type:"object","x-component":e=>{const{value:t={fields:[]},onChange:o}=e,r=(0,import_flow_engine.useFlowContext)(),i=r.model.translate.bind(r.model),n=getFormFields(r),l=[{label:i("Visible"),value:"visible"},{label:i("Hidden"),value:"hidden"},{label:i("Hidden (reserved value)"),value:"hiddenReservedValue"},{label:i("Required"),value:"required"},{label:i("Not required"),value:"notRequired"},{label:i("Disabled"),value:"disabled"},{label:i("Enabled"),value:"enabled"}],a=u=>{o(I(f({},t),{fields:u}))},c=u=>{o(I(f({},t),{state:u}))};return(0,import_jsx_runtime.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"12px"},children:[(0,import_jsx_runtime.jsxs)("div",{children:[(0,import_jsx_runtime.jsx)("div",{style:{marginBottom:"4px",fontSize:"14px"},children:i("Fields")}),(0,import_jsx_runtime.jsx)(import_antd.Select,{mode:"multiple",value:t.fields,onChange:a,placeholder:i("Please select fields"),style:{width:"100%"},options:n,showSearch:!0,filterOption:(u,d)=>{var m;return((m=d==null?void 0:d.label)!=null?m:"").toLowerCase().includes(u.toLowerCase())},allowClear:!0})]}),(0,import_jsx_runtime.jsxs)("div",{children:[(0,import_jsx_runtime.jsx)("div",{style:{marginBottom:"4px",fontSize:"14px"},children:i("State")}),(0,import_jsx_runtime.jsx)(import_antd.Select,{value:t.state,onChange:c,placeholder:i("Please select state"),style:{width:"100%"},options:l,allowClear:!0})]})]})}}},handler:(e,{value:t,setProps:o})=>{const{fields:r,state:i}=t||{};!r||!Array.isArray(r)||!i||r.forEach(n=>{var l,a,c,u;try{const d=(((u=(c=(a=(l=e.model)==null?void 0:l.subModels)==null?void 0:a.grid)==null?void 0:c.subModels)==null?void 0:u.items)||[]).find(m=>m.uid===n);if(d){let m={};switch(i){case"visible":m={hiddenModel:!1};break;case"hidden":m={hiddenModel:!0};break;case"hiddenReservedValue":m={hidden:!0};break;case"required":m={required:!0};break;case"notRequired":m={required:!1};break;case"disabled":m={disabled:!0};break;case"enabled":m={disabled:!1};break;default:console.warn(`Unknown state: ${i}`);return}o(d,m)}}catch(d){console.warn(`Failed to set props for field ${n}:`,d)}})}}),linkageSetDetailsFieldProps=(0,import_flow_engine.defineAction)({name:"linkageSetDetailsFieldProps",title:(0,import_flow_engine.escapeT)("Set field state"),scene:import_flow_engine.ActionScene.DETAILS_FIELD_LINKAGE_RULES,sort:100,uiSchema:{value:{type:"object","x-component":e=>{const{value:t={fields:[]},onChange:o}=e,r=(0,import_flow_engine.useFlowContext)(),i=r.model.translate.bind(r.model),n=getFormFields(r),l=[{label:i("Visible"),value:"visible"},{label:i("Hidden"),value:"hidden"},{label:i("Hidden (reserved value)"),value:"hiddenReservedValue"}],a=u=>{o(I(f({},t),{fields:u}))},c=u=>{o(I(f({},t),{state:u}))};return(0,import_jsx_runtime.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"12px"},children:[(0,import_jsx_runtime.jsxs)("div",{children:[(0,import_jsx_runtime.jsx)("div",{style:{marginBottom:"4px",fontSize:"14px"},children:i("Fields")}),(0,import_jsx_runtime.jsx)(import_antd.Select,{mode:"multiple",value:t.fields,onChange:a,placeholder:i("Please select fields"),style:{width:"100%"},options:n,showSearch:!0,filterOption:(u,d)=>{var m;return((m=d==null?void 0:d.label)!=null?m:"").toLowerCase().includes(u.toLowerCase())},allowClear:!0})]}),(0,import_jsx_runtime.jsxs)("div",{children:[(0,import_jsx_runtime.jsx)("div",{style:{marginBottom:"4px",fontSize:"14px"},children:i("State")}),(0,import_jsx_runtime.jsx)(import_antd.Select,{value:t.state,onChange:c,placeholder:i("Please select state"),style:{width:"100%"},options:l,allowClear:!0})]})]})}}},handler:(e,{value:t,setProps:o})=>{const{fields:r,state:i}=t||{};!r||!Array.isArray(r)||!i||r.forEach(n=>{var l,a,c,u;try{const d=(((u=(c=(a=(l=e.model)==null?void 0:l.subModels)==null?void 0:a.grid)==null?void 0:c.subModels)==null?void 0:u.items)||[]).find(m=>m.uid===n);if(d){let m={};switch(i){case"visible":m={hiddenModel:!1};break;case"hidden":m={hiddenModel:!0};break;case"hiddenReservedValue":m={hidden:!0};break;default:console.warn(`Unknown state: ${i}`);return}o(d,m)}}catch(d){console.warn(`Failed to set props for field ${n}:`,d)}})}}),linkageAssignField=(0,import_flow_engine.defineAction)({name:"linkageAssignField",title:(0,import_flow_engine.escapeT)("Field assignment"),scene:import_flow_engine.ActionScene.FIELD_LINKAGE_RULES,sort:200,uiSchema:{value:{type:"object","x-component":e=>{const{value:t={field:void 0,assignValue:void 0},onChange:o}=e,r=(0,import_flow_engine.useFlowContext)(),i=r.model.translate.bind(r.model),n=getFormFields(r),l=t.field,a=c=>{const u=c,d=u!==l;o(I(f({},t),{field:u,assignValue:d?void 0:t.assignValue}))};return(0,import_jsx_runtime.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"12px"},children:[(0,import_jsx_runtime.jsxs)("div",{children:[(0,import_jsx_runtime.jsx)("div",{style:{marginBottom:"4px",fontSize:"14px"},children:i("Field")}),(0,import_jsx_runtime.jsx)(import_antd.Select,{value:l,onChange:a,placeholder:i("Please select field"),style:{width:"100%"},options:n,showSearch:!0,filterOption:(c,u)=>{var d;return((d=u==null?void 0:u.label)!=null?d:"").toLowerCase().includes(c.toLowerCase())},allowClear:!0})]}),l&&(0,import_jsx_runtime.jsxs)("div",{children:[(0,import_jsx_runtime.jsx)("div",{style:{marginBottom:"4px",fontSize:"14px"},children:i("Assign value")}),(0,import_jsx_runtime.jsx)(FieldAssignValueInput,{fieldUid:l,value:t.assignValue,onChange:c=>o(I(f({},t),{assignValue:c}))},l)]})]})}}},handler:(e,{value:t,setProps:o})=>{var r,i,n,l;const{assignValue:a,field:c}=t||{};if(c)try{const u=(((l=(n=(i=(r=e.model)==null?void 0:r.subModels)==null?void 0:i.grid)==null?void 0:n.subModels)==null?void 0:l.items)||[]).find(d=>d.uid===c);if(!u)return;if(typeof a>"u"){o(u,{});return}o(u,{value:a})}catch(u){console.warn(`Failed to assign value to field ${c}:`,u)}}}),linkageRunjs=(0,import_flow_engine.defineAction)({name:"linkageRunjs",title:(0,import_flow_engine.escapeT)("Execute JavaScript"),scene:[import_flow_engine.ActionScene.BLOCK_LINKAGE_RULES,import_flow_engine.ActionScene.FIELD_LINKAGE_RULES,import_flow_engine.ActionScene.ACTION_LINKAGE_RULES,import_flow_engine.ActionScene.DETAILS_FIELD_LINKAGE_RULES],sort:300,uiSchema:{value:{type:"object","x-component":e=>{const{value:t={script:""},onChange:o}=e,r=i=>{o(I(f({},t),{script:i}))};return(0,import_jsx_runtime.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:"12px"},children:(0,import_jsx_runtime.jsx)("div",{children:(0,import_jsx_runtime.jsx)(CodeEditor,{value:t.script,onChange:r,height:"200px",enableLinter:!0,scene:"linkage"})})})}}},handler:(e,{value:t})=>{var o;const{script:r}=t||{};if(!(!r||typeof r!="string"))try{e.runjs(r)}catch(i){console.error("Script execution error:",i),(o=e.app)!=null&&o.message&&e.app.message.error(`Script execution error: ${i.message}`)}}}),LinkageRulesUI=(0,import_react.observer)(e=>{const{value:t,supportedActions:o}=e,r=(0,import_flow_engine.useFlowContext)(),i=(0,import_flow_engine.useFlowEngine)(),n=r.model.translate.bind(r.model),l=()=>({key:(0,import_shared.uid)(),title:n("Linkage rule"),enable:!0,condition:{logic:"$and",items:[]},actions:[]}),a=()=>{t.push(l())},c=b=>{t.splice(b,1)},u=b=>{if(b>0){const S=t[b];t.splice(b,1),t.splice(b-1,0,S)}},d=b=>{if(b<t.length-1){const S=t[b];t.splice(b,1),t.splice(b+1,0,S)}},m=b=>{const S=t[b],F=I(f({},S),{key:(0,import_shared.uid)(),title:`${S.title} (Copy)`});t.splice(b+1,0,F)},p=(b,S)=>{t[b].title=S},h=(b,S)=>{t[b].enable=S},g=()=>o.map(b=>r.getAction(b)),x=(b,S)=>{const F={key:(0,import_shared.uid)(),name:S,params:void 0};t[b].actions.push(F)},_=(b,S)=>{t[b].actions.splice(S,1)},v=(b,S,F)=>{t[b].actions[S].params=F},C=(b,S)=>(0,import_jsx_runtime.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",width:"100%"},children:[(0,import_jsx_runtime.jsx)("div",{style:{flex:1,marginRight:16},children:(0,import_jsx_runtime.jsx)(import_antd.Input,{value:b.title,onChange:F=>p(S,F.target.value),onClick:F=>F.stopPropagation(),placeholder:"Enter rule title"})}),(0,import_jsx_runtime.jsxs)(import_antd.Space,{onClick:F=>F.stopPropagation(),children:[(0,import_jsx_runtime.jsx)(import_antd.Tooltip,{title:"Delete",children:(0,import_jsx_runtime.jsx)(import_antd.Button,{type:"text",size:"small",icon:(0,import_jsx_runtime.jsx)(import_icons.DeleteOutlined,{}),onClick:()=>c(S)})}),(0,import_jsx_runtime.jsx)(import_antd.Tooltip,{title:"Move up",children:(0,import_jsx_runtime.jsx)(import_antd.Button,{type:"text",size:"small",icon:(0,import_jsx_runtime.jsx)(import_icons.ArrowUpOutlined,{}),onClick:()=>u(S),disabled:S===0})}),(0,import_jsx_runtime.jsx)(import_antd.Tooltip,{title:"Move down",children:(0,import_jsx_runtime.jsx)(import_antd.Button,{type:"text",size:"small",icon:(0,import_jsx_runtime.jsx)(import_icons.ArrowDownOutlined,{}),onClick:()=>d(S),disabled:S===t.length-1})}),(0,import_jsx_runtime.jsx)(import_antd.Tooltip,{title:"Copy",children:(0,import_jsx_runtime.jsx)(import_antd.Button,{type:"text",size:"small",icon:(0,import_jsx_runtime.jsx)(import_icons.CopyOutlined,{}),onClick:()=>m(S)})}),(0,import_jsx_runtime.jsx)(import_antd.Switch,{size:"small",checked:b.enable,onChange:F=>h(S,F),checkedChildren:n("Enable"),unCheckedChildren:n("Disable")})]})]}),y=t.map((b,S)=>({key:b.key,label:C(b,S),styles:{header:{display:"flex",alignItems:"center"}},children:(0,import_jsx_runtime.jsxs)("div",{children:[(0,import_jsx_runtime.jsxs)("div",{style:{marginBottom:32},children:[(0,import_jsx_runtime.jsxs)("div",{style:{display:"flex",alignItems:"center",marginBottom:16,paddingBottom:8,borderBottom:"1px solid #f0f0f0"},children:[(0,import_jsx_runtime.jsx)("div",{style:{width:"4px",height:"16px",backgroundColor:"#1890ff",borderRadius:"2px",marginRight:8}}),(0,import_jsx_runtime.jsx)("h4",{style:{margin:0,fontSize:14,fontWeight:500,color:"#262626"},children:n("Condition")})]}),(0,import_jsx_runtime.jsx)("div",{style:{paddingLeft:12},children:(0,import_jsx_runtime.jsx)(FilterGroup,{value:b.condition,FilterItem:F=>(0,import_jsx_runtime.jsx)(LinkageFilterItem,{model:r.model,value:F.value})})})]}),(0,import_jsx_runtime.jsxs)("div",{children:[(0,import_jsx_runtime.jsxs)("div",{style:{display:"flex",alignItems:"center",marginBottom:16,paddingBottom:8,borderBottom:"1px solid #f0f0f0"},children:[(0,import_jsx_runtime.jsx)("div",{style:{width:"4px",height:"16px",backgroundColor:"#52c41a",borderRadius:"2px",marginRight:8}}),(0,import_jsx_runtime.jsx)("h4",{style:{margin:0,fontSize:14,fontWeight:500,color:"#262626"},children:n("Actions")})]}),(0,import_jsx_runtime.jsxs)("div",{style:{paddingLeft:12},children:[b.actions.length>0?(0,import_jsx_runtime.jsx)("div",{style:{marginBottom:16},children:b.actions.map((F,j)=>{const P=r.getAction(F.name);return P?(0,import_jsx_runtime.jsxs)("div",{style:{border:"1px solid #f0f0f0",borderRadius:"6px",padding:"12px",marginBottom:"8px"},children:[(0,import_jsx_runtime.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"8px"},children:[(0,import_jsx_runtime.jsxs)("span",{style:{fontWeight:500,color:"#262626"},children:[n(P.title),(0,import_jsx_runtime.jsx)("span",{style:{marginInlineStart:2,marginInlineEnd:8},children:":"})]}),(0,import_jsx_runtime.jsx)(import_antd.Tooltip,{title:"Delete action",children:(0,import_jsx_runtime.jsx)(import_antd.Button,{type:"text",size:"small",icon:(0,import_jsx_runtime.jsx)(import_icons.DeleteOutlined,{}),onClick:()=>_(S,j)})})]}),(0,import_jsx_runtime.jsx)("div",{children:i.flowSettings.renderStepForm({uiSchema:P.uiSchema,initialValues:F.params,flowEngine:i,onFormValuesChange:T=>v(S,j,T.values)})})]},F.key):null})}):null,(0,import_jsx_runtime.jsx)(import_antd.Dropdown,{menu:{items:g().map(F=>({key:F.name,label:n(F.title||F.name),onClick:()=>x(S,F.name)}))},trigger:["hover"],children:(0,import_jsx_runtime.jsx)(import_antd.Button,{type:"link",icon:(0,import_jsx_runtime.jsx)(import_icons.PlusOutlined,{}),style:{padding:0,height:"auto",textAlign:"left"},children:n("Add action")})})]})]})]})}));return(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[t.length>0?(0,import_jsx_runtime.jsx)(import_antd.Collapse,{items:y,size:"small",style:{marginBottom:8},defaultActiveKey:t.length>0?[t[0].key]:[],accordion:!0}):(0,import_jsx_runtime.jsx)("div",{style:{border:"1px dashed #d9d9d9",borderRadius:"6px",backgroundColor:"#fafafa",marginBottom:"8px"},children:(0,import_jsx_runtime.jsx)(import_antd.Empty,{description:n("No linkage rules"),style:{margin:"20px 0"}})}),(0,import_jsx_runtime.jsx)(import_antd.Button,{type:"dashed",icon:(0,import_jsx_runtime.jsx)(import_icons.PlusOutlined,{}),onClick:a,style:{width:"100%"},children:n("Add linkage rule")})]})}),commonLinkageRulesHandler=(e,t)=>E(void 0,null,function*(){const o=(n,l,a)=>l?e.app.jsonLogic.apply({[l]:[n,a]}):!0,r=t.value,i=e.model.__allModels||(e.model.__allModels=[]);i.forEach(n=>{n.__props={}}),r.filter(n=>n.enable).forEach(n=>{const{condition:l,actions:a}=n;(0,import_client.evaluateConditions)(l,o)&&a.forEach(c=>{var u;const d=(m,p)=>{m.__originalProps||(m.__originalProps=f({hiddenModel:m.hidden,disabled:void 0,required:void 0,hidden:void 0},m.props)),m.__props||(m.__props={}),m.__props=f(f({},m.__props),p),i.indexOf(m)===-1&&i.push(m)};(u=e.getAction(c.name))==null||u.handler(e,I(f({},c.params),{setProps:d}))})}),i.forEach(n=>{const l=f(f({},n.__originalProps),n.__props);n.setProps(import_lodash.default.omit(l,["hiddenModel","value"])),n.hidden=!!l.hiddenModel,"value"in l&&n.context.form&&n.context.form.setFieldValue(n.props.name,l.value),n.__props=null})}),blockLinkageRules=(0,import_flow_engine.defineAction)({name:"blockLinkageRules",title:(0,import_flow_engine.escapeT)("Block linkage rules"),uiMode:"embed",uiSchema(e){return{value:{type:"array","x-component":LinkageRulesUI,"x-component-props":{supportedActions:getSupportedActions(e,import_flow_engine.ActionScene.BLOCK_LINKAGE_RULES),title:(0,import_flow_engine.escapeT)("Block linkage rules")}}}},defaultParams:{value:[]},handler:commonLinkageRulesHandler}),actionLinkageRules=(0,import_flow_engine.defineAction)({name:"actionLinkageRules",title:(0,import_flow_engine.escapeT)("Linkage rules"),uiMode:"embed",uiSchema(e){return{value:{type:"array","x-component":LinkageRulesUI,"x-component-props":{supportedActions:getSupportedActions(e,import_flow_engine.ActionScene.ACTION_LINKAGE_RULES),title:(0,import_flow_engine.escapeT)("Linkage rules")}}}},defaultParams:{value:[]},handler:commonLinkageRulesHandler}),fieldLinkageRules=(0,import_flow_engine.defineAction)({name:"fieldLinkageRules",title:(0,import_flow_engine.escapeT)("Field linkage rules"),uiMode:"embed",uiSchema(e){return{value:{type:"array","x-component":LinkageRulesUI,"x-component-props":{supportedActions:getSupportedActions(e,import_flow_engine.ActionScene.FIELD_LINKAGE_RULES),title:(0,import_flow_engine.escapeT)("Field linkage rules")}}}},defaultParams:{value:[]},handler:(e,t)=>{e.model.hidden||commonLinkageRulesHandler(e,t)}}),detailsFieldLinkageRules=(0,import_flow_engine.defineAction)({name:"detailsFieldLinkageRules",title:(0,import_flow_engine.escapeT)("Field linkage rules"),uiMode:"embed",uiSchema(e){return{value:{type:"array","x-component":LinkageRulesUI,"x-component-props":{supportedActions:getSupportedActions(e,import_flow_engine.ActionScene.DETAILS_FIELD_LINKAGE_RULES),title:(0,import_flow_engine.escapeT)("Field linkage rules")}}}},defaultParams:{value:[]},handler:(e,t)=>{e.model.hidden||commonLinkageRulesHandler(e,t)}});function getSupportedActions(e,t){return[...e.getActions().values()].filter(o=>{let r=o.scene;return r?(Array.isArray(r)||(r=[r]),r.includes(t)):!1}).sort((o,r)=>(o.sort||0)-(r.sort||0)).map(o=>o.name)}const overflowMode=(0,import_flow_engine.defineAction)({name:"overflowMode",title:(0,import_flow_engine.escapeT)("Content overflow display mode"),uiSchema(e){return{overflowMode:{"x-component":"Select","x-decorator":"FormItem",enum:[{label:(0,import_flow_engine.escapeT)("Ellipsis"),value:"ellipsis"},{label:(0,import_flow_engine.escapeT)("Wrap"),value:"wrap"}]}}},defaultParams:{overflowMode:"ellipsis"},handler(e,t){e.model.setProps({overflowMode:t.overflowMode})}}),actions=Object.freeze(Object.defineProperty({__proto__:null,aclCheck,actionLinkageRules,blockLinkageRules,confirm:confirm$1,dataLoadingMode,dataScope,dateTimeFormat,detailsFieldLinkageRules,displayFieldComponent,fieldComponent,fieldLinkageRules,layout,linkageAssignField,linkageRunjs,linkageSetActionProps,linkageSetBlockProps,linkageSetDetailsFieldProps,linkageSetFieldProps,openView,overflowMode,pattern,renderMode,required,runjs,sortingRule,titleField,validation},Symbol.toStringTag,{value:"Module"}));class FieldModel extends import_flow_engine.FlowModel{}class AssociationFieldModel extends FieldModel{}AssociationFieldModel.registerFlow({key:"AssociationFieldInit",sort:800,steps:{init:{handler(e,t){return E(this,null,function*(){e.model.updateAssociation&&e.model.context.blockModel.context.resource.addUpdateAssociationValues(e.model.parent.fieldPath)})}}}});function toValue$2(e,t,o=!1){if(!e)return o?[]:void 0;const{value:r}=t,i=n=>{if(!(typeof n!="object"||n===null||n==null))return{label:(0,import_jsx_runtime.jsx)(LabelByField,{option:n,fieldNames:t}),value:n[r]}};return o?Array.isArray(e)?e.map(i).filter(Boolean):[]:i(e)}function LabelByField(e){const{option:t,fieldNames:o}=e,r=(0,import_flow_engine.useFlowModel)(),i=r.subModels.field,n=t[o.value],l=i.createFork({},n);l.context.defineProperty("record",{get:()=>t,meta:(0,import_flow_engine.createCurrentRecordMetaFactory)(l.context,()=>l.context.collection)});const a=(t==null?void 0:t[o.label])||t.label,c=r.context.collectionField.targetCollection.getField(o.label);return l.setProps(f({value:a,clickToOpen:!1},c.getComponentProps())),(0,import_jsx_runtime.jsx)("span",{style:{pointerEvents:"none"},children:a?l.render():"N/A"},n)}function LazySelect(e){const t=e,{fieldNames:o,value:r,multiple:i,allowMultiple:n,options:l=[]}=t,a=W(t,["fieldNames","value","multiple","allowMultiple","options"]),c=i&&n,u=l&&l.length?l:c?Array.isArray(r)?r.filter(Boolean):[]:r?[r]:[];return(0,import_jsx_runtime.jsx)(import_antd.Select,I(f({},a),{allowClear:!0,showSearch:!0,maxTagCount:"responsive",filterOption:!1,labelInValue:!0,fieldNames:o,options:u,value:toValue$2(r,o,c),mode:c?"multiple":void 0,onChange:(d,m)=>{e.onChange(m)},optionRender:({data:d})=>(0,import_jsx_runtime.jsx)(LabelByField,{option:d,fieldNames:o})}))}class RecordSelectFieldModel extends AssociationFieldModel{get collectionField(){return this.context.collectionField}onInit(t){super.onInit(t),this.context.defineProperty("collection",{get:()=>{var o;return(o=this.context.collectionField)==null?void 0:o.targetCollection},meta:(0,import_flow_engine.createCollectionContextMeta)(()=>{var o;return(o=this.context.collectionField)==null?void 0:o.targetCollection},this.context.t("Current collection"))})}set onPopupScroll(t){this.setProps({onPopupScroll:t})}set onDropdownVisibleChange(t){this.setProps({onDropdownVisibleChange:t})}set onSearch(t){this.setProps({onSearch:t})}setDataSource(t){this.setProps({options:t})}getDataSource(){return this.props.options}getFilterValue(){var t;const o=this.props.fieldNames||{label:"label",value:"value"};return Array.isArray(this.props.value)?this.props.value.map(r=>r[o.value]):(t=this.props.value)==null?void 0:t[o.value]}render(){return(0,import_jsx_runtime.jsx)(LazySelect,f({},this.props))}}const paginationState={page:1,pageSize:40,loading:!1,hasMore:!0};RecordSelectFieldModel.registerFlow({key:"eventSettings",sort:900,steps:{bindEvent:{handler(e,t){const o=e.model.props.fieldNames.label;e.model.onDropdownVisibleChange=r=>{r?e.model.dispatchEvent("dropdownOpen",{apiClient:e.app.apiClient,form:e.model.context.form}):(e.model.resource.removeFilterGroup(o),paginationState.page=1)},e.model.onPopupScroll=r=>{e.model.dispatchEvent("popupScroll",{event:r,apiClient:e.app.apiClient})},e.model.onSearch=r=>{e.model.dispatchEvent("search",{searchText:r,apiClient:e.app.apiClient})}}}}});RecordSelectFieldModel.registerFlow({key:"dropdownOpenSettings",on:"dropdownOpen",steps:{setScope:{handler(e,t){return E(this,null,function*(){const o=e.model.props.fieldNames.value,r=e.model.resource,i=e.model.getDataSource();r.setPage(1),yield r.refresh();const{count:n}=r.getMeta(),l=r.getData();i&&n===i.length&&l[0][o]===i[0][o]||(e.model.setDataSource(l),l.length<paginationState.pageSize?paginationState.hasMore=!1:(paginationState.hasMore=!0,paginationState.page++))})}}}});RecordSelectFieldModel.registerFlow({key:"popupScrollSettings",on:"popupScroll",steps:{step1:{handler(e,t){return E(this,null,function*(){var o;const r=(o=e.inputArgs)==null?void 0:o.event,{scrollTop:i,scrollHeight:n,clientHeight:l}=r.target;if(!(i+l<n-20)&&!(paginationState.loading||!paginationState.hasMore)){paginationState.loading=!0;try{const a=e.model.resource;a.setPage(paginationState.page),yield a.refresh();const c=a.getData(),u=e.model.getDataSource()||[];e.model.setDataSource([...u,...c]),c.length<paginationState.pageSize?(paginationState.hasMore=!1,paginationState.page=1):paginationState.page++}catch(a){console.error("Scroll pagination request failed:",a)}finally{paginationState.loading=!1}}})}}}});RecordSelectFieldModel.registerFlow({key:"searchSettings",on:"search",steps:{step1:{handler(e,t){return E(this,null,function*(){var o,r,i,n;try{const l=e.model.collectionField.targetCollection,a=e.model.props.fieldNames.label,c=l.getField(a),u=e.app.dataSourceManager.collectionFieldInterfaceManager.getFieldInterface(c.options.interface),d=((i=(r=(o=u==null?void 0:u.filterable)==null?void 0:o.operators)==null?void 0:r[0])==null?void 0:i.value)||"$includes",m=(n=e.inputArgs.searchText)==null?void 0:n.trim(),p=e.model.resource,h=`${a}.${d}`;m===""?p.removeFilterGroup(a):(p.setPage(1),p.addFilterGroup(a,{[h]:m})),yield p.refresh();const g=p.getData();e.model.setDataSource(g),g.length<paginationState.pageSize?paginationState.hasMore=!1:(paginationState.hasMore=!0,paginationState.page++)}catch(l){console.error("AssociationSelectField search flow error:",l),e.model.setDataSource([])}})}}}});RecordSelectFieldModel.registerFlow({key:"recordSelectSettings",sort:200,steps:{init:{handler(e){const t=e.createResource(import_flow_engine.MultiRecordResource),o=e.model.context.collectionField,{target:r,dataSourceKey:i}=o;if(t.setDataSourceKey(i),t.setResourceName(r),t.setPageSize(paginationState.pageSize),["oho","o2m"].includes(o.interface)){const n=`${o.foreignKey}.$is`;t.addFilterGroup(o.name,{[n]:null})}e.model.resource=t}}}});RecordSelectFieldModel.registerFlow({key:"selectSettings",title:(0,import_flow_engine.escapeT)("Association select settings"),sort:800,steps:{fieldNames:{use:"titleField"},dataScope:{use:"dataScope"},sortingRule:{use:"sortingRule"},allowMultiple:{title:(0,import_flow_engine.escapeT)("Allow multiple"),uiSchema(e){return["belongsToMany","hasMany","belongsToArray"].includes(e.model.context.collectionField.type)?{allowMultiple:{"x-component":"Switch",type:"boolean","x-decorator":"FormItem"}}:null},defaultParams(e){return{allowMultiple:["belongsToMany","hasMany","belongsToArray"].includes(e.model.context.collectionField.type)}},handler(e,t){e.model.setProps({allowMultiple:t==null?void 0:t.allowMultiple})}}}});RecordSelectFieldModel.define({label:(0,import_flow_engine.escapeT)("Select")});import_flow_engine.EditableItemModel.bindModelToInterface("RecordSelectFieldModel",["m2m","m2o","o2o","o2m","oho","obo","updatedBy","createdBy","mbm"],{isDefault:!0});import_flow_engine.FilterableItemModel.bindModelToInterface("RecordSelectFieldModel",["m2m","m2o","o2o","o2m","oho","obo","updatedBy","createdBy","mbm"],{isDefault:!0});const ConditionBuilder=(0,import_flow_engine.observer)(e=>{const t=(0,import_flow_engine.useFlowContext)();return(0,import_jsx_runtime.jsx)(FilterGroup,{value:e.value||{logic:"$and",items:[]},FilterItem:o=>(0,import_jsx_runtime.jsx)(LinkageFilterItem,{model:t.model,value:o.value}),onChange:e.onChange})}),commonConditionHandler=(e,t)=>{const{condition:o={logic:"$and",items:[]}}=t;(0,import_client.evaluateConditions)(o,(r,i,n)=>e.app.jsonLogic.apply({[i]:[r,n]}))||e.exit()},ActionSceneEnum={collection:"collection",record:"record",all:["collection","record"],both:["collection","record"]};class ActionModel extends import_flow_engine.FlowModel{constructor(){super(...arguments),k(this,"defaultProps",{type:"default",title:(0,import_flow_engine.escapeT)("Action")}),k(this,"enableEditTitle",!0),k(this,"enableEditIcon",!0),k(this,"enableEditType",!0),k(this,"enableEditDanger",!0)}static _getScene(){return import_lodash.default.castArray(this.scene||[])}static _isScene(t){return this._getScene().includes(t)}getAclActionName(){return"view"}onInit(t){super.onInit(t),this.context.defineProperty("actionName",{get:()=>this.getAclActionName(),cache:!1})}getInputArgs(){const t={};if(this.context.resource){const o=this.context.resource.getSourceId();o&&(t.sourceId=o)}if(this.context.collection&&this.context.record){const o=this.context.collection.getFilterByTK(this.context.record);o&&(t.filterByTk=o)}return t}onClick(t){this.dispatchEvent("click",f({event:t},this.getInputArgs()))}render(){const t=this.props,o=t.icon?(0,import_jsx_runtime.jsx)(Icon,{type:t.icon}):void 0;return(0,import_jsx_runtime.jsx)(import_antd.Button,I(f({},t),{onClick:this.onClick.bind(this),icon:o,children:t.children||t.title}))}renderHiddenInConfig(){return(0,import_jsx_runtime.jsx)(import_antd.Tooltip,{title:this.context.t("当前按钮已被隐藏,你无法点击(该内容仅在激活 UI Editor 时显示)。"),children:(0,import_jsx_runtime.jsx)(import_antd.Button,{type:this.props.type,disabled:!0,icon:(0,import_jsx_runtime.jsx)(import_icons.LockOutlined,{})})})}}ActionModel.registerFlow({key:"buttonSettings",title:(0,import_flow_engine.escapeT)("Button settings"),sort:-999,steps:{general:{title:(0,import_flow_engine.escapeT)("Edit button"),uiSchema(e){return{title:e.model.enableEditTitle?{"x-decorator":"FormItem","x-component":"Input",title:(0,import_flow_engine.escapeT)("Button title")}:void 0,icon:e.model.enableEditIcon?{"x-decorator":"FormItem","x-component":"IconPicker",title:(0,import_flow_engine.escapeT)("Button icon")}:void 0,type:e.model.enableEditType?{"x-decorator":"FormItem","x-component":"Radio.Group",title:(0,import_flow_engine.escapeT)("Button type"),enum:[{value:"default",label:'{{t("Default")}}'},{value:"primary",label:'{{t("Primary")}}'},{value:"dashed",label:'{{t("Dashed")}}'},{value:"link",label:'{{t("Link")}}'},{value:"text",label:'{{t("Text")}}'}]}:void 0,danger:e.model.enableEditDanger?{"x-decorator":"FormItem","x-component":"Switch",title:(0,import_flow_engine.escapeT)("Danger action")}:void 0}},defaultParams(e){return e.model.defaultProps},handler(e,t){const o=t,{title:r}=o,i=W(o,["title"]);e.model.setProps(f({title:e.t(r)},i))}},aclCheck:{use:"aclCheck"},linkageRules:{use:"actionLinkageRules"}}});ActionModel.registerEvents({click:{title:(0,import_flow_engine.escapeT)("Click"),name:"click",uiSchema:{condition:{type:"object",title:(0,import_flow_engine.escapeT)("Trigger condition"),"x-decorator":"FormItem","x-component":ConditionBuilder}},handler:commonConditionHandler}});class ActionGroupModel extends import_flow_engine.FlowModel{static getAllParentClasses(){const t=[];let o=this;for(;o&&o!==Object;)o=Object.getPrototypeOf(o),o!=null&&o.currentModels&&t.push(o);return t}static get currentModels(){return(!Object.prototype.hasOwnProperty.call(this,"_models")||!this._models)&&(this._models=new Map),this._models}static get models(){const t=new Map,o=this.getAllParentClasses();for(const r of o)for(const[i,n]of r.currentModels)t.set(i,n);for(const[r,i]of this.currentModels)t.set(r,i);return t}static registerActionModels(t){for(const[o,r]of Object.entries(t))Object.defineProperty(r,"name",{value:o}),this.currentModels.set(o,r)}static defineChildren(t){return E(this,null,function*(){const o=this.baseClass?yield(0,import_flow_engine.buildSubModelItems)(this.baseClass)(t):[],r=[],i=o.filter(n=>this.scene?t.engine.getModelClass(n.useModel)._isScene(this.scene):!0);for(const[n,l]of this.models){if(i.find(c=>c.useModel===l.name))continue;const a=(0,import_flow_engine.buildSubModelItem)(l,t);a&&r.push(a)}return import_lodash.default.sortBy([...i,...r],"sort")})}}k(ActionGroupModel,"baseClass"),k(ActionGroupModel,"scene"),k(ActionGroupModel,"_models");class CollectionActionGroupModel extends ActionGroupModel{}k(CollectionActionGroupModel,"baseClass",ActionModel),k(CollectionActionGroupModel,"scene",ActionSceneEnum.collection);class RecordActionGroupModel extends ActionGroupModel{}k(RecordActionGroupModel,"baseClass",ActionModel),k(RecordActionGroupModel,"scene",ActionSceneEnum.record);class AssociationFieldGroupModel extends import_flow_engine.FlowModel{static defineChildren(t){const o=this.itemModelName,r=(i,n="")=>i.getToOneAssociationFields().map(l=>{const a=n?`${n}.${l.name}`:l.name;return{key:`${a}-assocationField`,label:l.title,children:()=>[{key:`${a}-children-collectionField`,label:"Display collection fields",type:"group",children:l.targetCollection.getFields().map(c=>{const u=`${a}.${c.name}`,d=import_flow_engine.DisplayItemModel.getDefaultBindingByField(t,c,{fallbackToTargetTitleField:!0});if(!d)return;const m=d.modelName;return{key:`c-${a}.${c.name}`,label:c.title,useModel:o,toggleable:p=>{var h;return((h=p.getStepParams("fieldSettings","init"))==null?void 0:h.fieldPath)===u},createModelOptions:{stepParams:{fieldSettings:{init:{dataSourceKey:t.collection.dataSourceKey,collectionName:t.collection.name,fieldPath:u,associationPathName:a}}},subModels:{field:{use:m}}}}}).filter(Boolean)},{key:`${a}-children-associationField`,label:"Display association fields",type:"group",children:r(l.targetCollection,a)}]}});return r(t.collection)}}k(AssociationFieldGroupModel,"itemModelName","DetailsItemModel");AssociationFieldGroupModel.define({label:'{{t("Display association fields")}}'});function getDefaultOperator(e){var t;return e.operator||((t=e.getStepParams("filterFormItemSettings","defaultOperator"))==null?void 0:t.value)||"$eq"}function isFilterValueEmpty(e){return!!(e==null||typeof e=="string"&&e.trim()===""||Array.isArray(e)&&e.length===0||typeof e=="object"&&e.constructor===Object&&Object.keys(e).length===0)}function getAllDataModels(e){return e.filterSubModels("items",t=>{var o;return!!((o=t.resource)!=null&&o.supportsFilter)})}class FilterManager{constructor(t,o){k(this,"filterConfigs"),k(this,"gridModel"),this.gridModel=t,this.filterConfigs=o||[]}saveFilterConfigs(){return E(this,null,function*(){yield this.gridModel.saveStepParams()})}getFilterConfigs(){return this.filterConfigs}getConnectFieldsConfig(t){const o=this.filterConfigs.filter(r=>r.filterId===t);if(o.length!==0)return{targets:o.map(r=>({targetId:r.targetId,filterPaths:r.filterPaths}))}}saveConnectFieldsConfig(t,o){return E(this,null,function*(){const r=o.targets.map(n=>({filterId:t,targetId:n.targetId,filterPaths:n.filterPaths})),i=this.filterConfigs.filter(n=>n.filterId!==t);this.filterConfigs=[],this.filterConfigs.push(...i,...r),yield this.saveFilterConfigs()})}addFilterConfig(t){return E(this,null,function*(){if(!t.filterId||!t.targetId){console.error("FilterConfig must have filterId, targetId, and operator");return}if(!Array.isArray(t.filterPaths)||t.filterPaths.length===0){console.error("FilterConfig must have non-empty filterPaths array");return}const o=this.filterConfigs.findIndex(r=>r.filterId===t.filterId&&r.targetId===t.targetId);o>=0?this.filterConfigs[o]=f({},t):this.filterConfigs.push(f({},t)),yield this.saveFilterConfigs()})}removeFilterConfig(t){return E(this,arguments,function*({filterId:o,targetId:r,persist:i=!0}){if(!o&&!r)return console.error("At least one of filterId or targetId must be provided"),0;const n=this.filterConfigs.length;this.filterConfigs=this.filterConfigs.filter(a=>o&&r?!(a.filterId===o&&a.targetId===r):o?a.filterId!==o:r?a.targetId!==r:!0);const l=n-this.filterConfigs.length;return l>0&&i&&(yield this.saveFilterConfigs()),l})}bindToTarget(t){if(!t||typeof t!="string"){console.error("targetId must be a non-empty string");return}const o=this.gridModel.flowEngine.getModel(t);if(!o){console.error(`Target model with uid "${t}" not found`);return}if(!o.resource||typeof o.resource.addFilterGroup!="function"){console.error(`Target model with uid "${t}" does not have a valid resource with addFilterGroup method`);return}if(typeof o.resource.removeFilterGroup!="function"){console.error(`Target model with uid "${t}" does not have a valid resource with removeFilterGroup method`);return}const r=this.filterConfigs.filter(i=>i.targetId===t);r.length!==0&&r.forEach(i=>{const n=this.gridModel.flowEngine.getModel(i.filterId);if(!n){console.error(`Filter model with uid "${i.filterId}" not found`);return}if(!n.getFilterValue){console.error(`Filter model with uid "${i.filterId}" does not have getFilterValue method`);return}const l=n.getFilterValue();if(isFilterValueEmpty(l)){try{o.resource.removeFilterGroup(i.filterId)}catch(c){console.error(`Failed to remove filter configuration from target model: ${c.message}`);return}return}const a=i.filterPaths.map(c=>({path:c,operator:i.operator||getDefaultOperator(n),value:l}));try{if(a.length===1)o.resource.addFilterGroup(i.filterId,new import_flow_engine.FilterItem({path:a[0].path,operator:a[0].operator,value:a[0].value}));else if(a.length>1){const c={logic:"$or",items:a};o.resource.addFilterGroup(i.filterId,new import_flow_engine.FilterGroup(c))}}catch(c){console.error(`Failed to bind filter configuration to target model: ${c.message}`);return}})}unbindFromTarget(t){if(!t||typeof t!="string"){console.error("targetId must be a non-empty string");return}const o=this.gridModel.flowEngine.getModel(t);if(!o){console.error(`Target model with uid "${t}" not found`);return}if(!o.resource||typeof o.resource.removeFilterGroup!="function"){console.error(`Target model with uid "${t}" does not have a valid resource with removeFilterGroup method`);return}const r=this.filterConfigs.filter(i=>i.targetId===t);r.length!==0&&r.forEach(i=>{try{o.resource.removeFilterGroup(i.filterId)}catch(n){console.error(`Failed to unbind filter configuration from target model: ${n.message}`);return}})}refreshTargetsByFilter(t){return E(this,null,function*(){if(!t){console.error("filterId must be provided");return}const o=Array.isArray(t)?t:[t];if(o.length===0||o.some(n=>!n||typeof n!="string")){console.error("filterId must be non-empty string(s)");return}const r=this.filterConfigs.filter(n=>o.includes(n.filterId));if(r.length===0)return;const i=[...new Set(r.map(n=>n.targetId))].map(n=>E(this,null,function*(){try{this.bindToTarget(n);const l=this.gridModel.flowEngine.getModel(n);if(!l){console.error(`Target model with uid "${n}" not found`);return}if(!l.resource||typeof l.resource.refresh!="function"){console.error(`Target model with uid "${n}" does not have a valid resource with refresh method`);return}yield l.resource.refresh()}catch(l){console.error(`Failed to refresh target model "${n}": ${l.message}`);return}}));yield Promise.all(i)})}}function Grid({rows:e,sizes:t={},renderItem:o,rowGap:r=16,colGap:i=16,dragOverlayRect:n}){return Object.keys(e||{}).length===0?(0,import_jsx_runtime.jsx)("div",{style:{position:"relative"},"data-grid-empty-container":!0,children:n&&(0,import_jsx_runtime.jsx)(GridDragOverlay,{rect:n})}):(0,import_jsx_runtime.jsxs)("div",{style:{position:"relative",display:"flex",flexDirection:"column",gap:r},children:[n&&(0,import_jsx_runtime.jsx)(GridDragOverlay,{rect:n}),Object.entries(e).map(([l,a])=>{const c=a.length,u=t[l]||[],d=u.some(p=>p!=null&&p!==void 0),m=a.map((p,h)=>{var g;if(d){const x=u.reduce((C,y)=>C+(y||0),0),_=c-u.filter(Boolean).length,v=_>0?(24-x)/_:0;return(g=u[h])!=null?g:v}else return 24/c});return(0,import_jsx_runtime.jsx)(import_antd.Row,{gutter:i,"data-grid-row-id":l,children:a.map((p,h)=>(0,import_jsx_runtime.jsx)(GridColumn,{rowKey:l,columnIndex:h,span:m[h],rowGap:r,cell:p,renderItem:o},`${l}:${p.join("|")||"empty"}`))},l)})]})}const GridColumn=import_react2.default.memo(function e({rowKey:t,columnIndex:o,span:r,rowGap:i,cell:n,renderItem:l}){return(0,import_jsx_runtime.jsx)(import_antd.Col,{span:r,"data-grid-column-row-id":t,"data-grid-column-index":o,children:(0,import_jsx_runtime.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:i},children:n.map((a,c)=>a===import_flow_engine.EMPTY_COLUMN_UID?null:(0,import_jsx_runtime.jsx)("div",{"data-grid-item-row-id":t,"data-grid-column-index":o,"data-grid-item-index":c,"data-grid-item-uid":a,children:l(a)},a))})})});GridColumn.displayName="GridColumn";function GridDragOverlay({rect:e}){const t={position:"absolute",top:e.top,left:e.left,width:e.width,height:e.height,borderRadius:6,pointerEvents:"none",transition:"all 60ms ease-out",zIndex:100},o={column:{border:"2px dashed var(--colorPrimary)",backgroundColor:"rgba(22, 119, 255, 0.08)"},"column-edge":{border:"2px solid var(--colorPrimary)",backgroundColor:"rgba(22, 119, 255, 0.12)"},"row-gap":{border:"2px dashed var(--colorPrimary)",backgroundColor:"rgba(22, 119, 255, 0.05)"},"empty-row":{border:"2px dashed var(--colorPrimary)",backgroundColor:"rgba(22, 119, 255, 0.04)"},"empty-column":{border:"2px dashed var(--colorPrimary)",backgroundColor:"rgba(22, 119, 255, 0.04)"}};return(0,import_jsx_runtime.jsx)("div",{style:f(f({},t),o[e.type])})}const InnerJsonEditor=e=>{var t=e,{value:o,onChange:r,rows:i=10}=t,n=W(t,["value","onChange","rows"]);const[l,a]=(0,import_react2.useState)(()=>o?JSON.stringify(o,null,2):""),[c,u]=(0,import_react2.useState)(null);(0,import_react2.useEffect)(()=>{a(o?JSON.stringify(o,null,2):"")},[o]);const d=m=>{const p=m.target.value;a(p);try{const h=p.trim()?JSON.parse(p):void 0;u(null),r==null||r(h)}catch(h){u(h.message)}};return(0,import_jsx_runtime.jsxs)("div",{children:[(0,import_jsx_runtime.jsx)(import_antd.Input.TextArea,f({value:l,autoSize:{minRows:i,maxRows:i+10},onChange:d},n)),c&&(0,import_jsx_runtime.jsx)(import_antd.Alert,{type:"error",message:c,showIcon:!0,style:{marginTop:8}})]})},JsonEditor=(0,import_react.connect)(InnerJsonEditor),GRID_FLOW_KEY="gridSettings",GRID_STEP="grid",getClientPoint=e=>{if(!e)return null;if(typeof e.clientX=="number"&&typeof e.clientY=="number")return{x:e.clientX,y:e.clientY};if(e.touches&&e.touches.length>0){const t=e.touches[0];return{x:t.clientX,y:t.clientY}}if(e.changedTouches&&e.changedTouches.length>0){const t=e.changedTouches[0];return{x:t.clientX,y:t.clientY}}return null};class GridModel extends import_flow_engine.FlowModel{constructor(){super(...arguments),k(this,"subModelBaseClass","BlockModel"),k(this,"gridContainerRef",import_react2.default.createRef()),k(this,"prevMoveDistance",0),k(this,"itemSettingsMenuLevel",1),k(this,"itemFlowSettings",{}),k(this,"dragOverlayConfig"),k(this,"itemFallback",(0,import_jsx_runtime.jsx)(SkeletonFallback,{})),k(this,"itemExtraToolbarItems",[{key:"drag-handler",component:import_flow_engine.DragHandler,sort:1}]),k(this,"dragState"),k(this,"_memoItemFlowSettings")}getItemFlowSettings(){return this._memoItemFlowSettings||(this._memoItemFlowSettings=f({showBackground:!1,showDragHandle:!0},this.itemFlowSettings)),this._memoItemFlowSettings}onInit(t){super.onInit(t),this.emitter.on("onSubModelAdded",o=>{if(!o.isNew)return;this.resetRows(!0);const r=(0,import_flow_engine.findModelUidPosition)(o.uid,this.props.rows||{});if(r){const i=import_lodash.default.cloneDeep(this.props.sizes||{});i[r.rowId]=[24],this.setStepParams(GRID_FLOW_KEY,GRID_STEP,{rows:this.props.rows||{},sizes:i}),this.setProps("sizes",i)}}),this.emitter.on("onSubModelRemoved",o=>{var r,i,n,l;const a=o.uid,c=(0,import_flow_engine.findModelUidPosition)(a,this.props.rows||{});if(this.resetRows(!0),c){const u=this.props.rows||{},d=import_lodash.default.cloneDeep(this.props.sizes||{});((r=u[c.rowId])==null?void 0:r[c.columnIndex])===void 0&&((i=d[c.rowId])==null||i.splice(c.columnIndex,1)),u[c.rowId]===void 0&&delete d[c.rowId],this.setStepParams(GRID_FLOW_KEY,GRID_STEP,{rows:u,sizes:d}),this.setProps("sizes",d)}(n=this.context.filterManager)==null||n.removeFilterConfig({targetId:a}),(l=this.context.filterManager)==null||l.removeFilterConfig({filterId:a}),this.saveStepParams()}),this.emitter.on("onSubModelMoved",()=>{this.resetRows(!0)}),this.emitter.on("onResizeLeft",({resizeDistance:o,model:r})=>{var i;const n=(0,import_flow_engine.findModelUidPosition)(r.uid,this.props.rows||{}),l=((i=this.gridContainerRef.current)==null?void 0:i.clientWidth)||0,{newRows:a,newSizes:c,moveDistance:u}=recalculateGridSizes({position:n,direction:"left",resizeDistance:o,prevMoveDistance:this.prevMoveDistance,oldRows:this.props.rows||{},oldSizes:this.props.sizes||{},gutter:this.context.themeToken.marginBlock,gridContainerWidth:l});this.prevMoveDistance=u,this.setProps("rows",a),this.setProps("sizes",c)}),this.emitter.on("onResizeRight",({resizeDistance:o,model:r})=>{var i;const n=(0,import_flow_engine.findModelUidPosition)(r.uid,this.props.rows||{}),l=((i=this.gridContainerRef.current)==null?void 0:i.clientWidth)||0,{newRows:a,newSizes:c,moveDistance:u}=recalculateGridSizes({position:n,direction:"right",resizeDistance:o,prevMoveDistance:this.prevMoveDistance,oldRows:this.props.rows||{},oldSizes:this.props.sizes||{},gutter:this.context.themeToken.marginBlock,gridContainerWidth:l});this.prevMoveDistance=u,this.setProps("rows",a),this.setProps("sizes",c)}),this.emitter.on("onResizeBottom",({resizeDistance:o,model:r})=>{}),this.emitter.on("onResizeEnd",()=>{this.prevMoveDistance=0,this.saveGridLayout()})}saveGridLayout(t){var o,r,i,n;const l=(r=(o=t==null?void 0:t.rows)!=null?o:this.props.rows)!=null?r:{},a=(n=(i=t==null?void 0:t.sizes)!=null?i:this.props.sizes)!=null?n:{};this.setStepParams(GRID_FLOW_KEY,GRID_STEP,{rows:l,sizes:a}),this.saveStepParams()}mergeRowsWithItems(t){const o=this.subModels.items||[];if(!o||o.length===0)return{};const r=new Set(o.map(a=>a.uid));r.add(import_flow_engine.EMPTY_COLUMN_UID);const i=new Set,n={};for(const[a,c]of Object.entries(t)){const u=c.map(d=>import_lodash.default.castArray(d).filter(m=>r.has(m))).filter(d=>d.length>0);u.length>0&&(n[a]=u,u.forEach(d=>d.forEach(m=>i.add(m))))}const l=new Set;Object.values(n).forEach(a=>a.forEach(c=>c.forEach(u=>l.add(u))));for(const a of o)l.has(a.uid)||(n[(0,import_shared.uid)()]=[[a.uid]]);return n}resetRows(t=!1){const o=this.getStepParams(GRID_FLOW_KEY,GRID_STEP)||{},r=this.mergeRowsWithItems(o.rows||{});this.setStepParams(GRID_FLOW_KEY,GRID_STEP,{rows:r,sizes:o.sizes||{}}),t&&this.setProps("rows",r)}computePointerPosition(t){var o;if(!this.dragState)return null;const r=this.dragState.pointerOrigin;if(r)return{x:r.x+t.delta.x,y:r.y+t.delta.y};const i=getClientPoint(t.activatorEvent);if(i)return this.dragState.pointerOrigin=i,{x:i.x+t.delta.x,y:i.y+t.delta.y};const n=(o=t.over)==null?void 0:o.rect;return n?{x:n.left+n.width/2,y:n.top+n.height/2}:null}updateLayoutSnapshot(){if(!this.dragState)return;const t=(0,import_flow_engine.buildLayoutSnapshot)({container:this.gridContainerRef.current});this.dragState.slots=t.slots,this.dragState.containerRect=t.containerRect}scheduleSnapshotRefresh(){this.dragState&&(this.dragState.refreshTimer&&clearTimeout(this.dragState.refreshTimer),this.dragState.refreshTimer=setTimeout(()=>{this.dragState&&(this.dragState.refreshTimer=null,this.updateLayoutSnapshot())},16))}computeOverlayRect(t){var o,r,i,n,l,a,c,u,d;const m=this.dragOverlayConfig,p=t.rect;switch(t.type){case"column":{const h=(o=m==null?void 0:m.columnInsert)==null?void 0:o[t.position],g=(r=h==null?void 0:h.height)!=null?r:p.height,x=(i=h==null?void 0:h.offsetTop)!=null?i:0;return{top:p.top+x,left:p.left,width:p.width,height:g}}case"column-edge":{const h=(n=m==null?void 0:m.columnEdge)==null?void 0:n[t.direction],g=(l=h==null?void 0:h.width)!=null?l:p.width,x=(a=h==null?void 0:h.offsetLeft)!=null?a:0;return{top:p.top,left:p.left+x,width:g,height:p.height}}case"row-gap":{const h=(c=m==null?void 0:m.rowGap)==null?void 0:c[t.position],g=(u=h==null?void 0:h.height)!=null?u:p.height,x=(d=h==null?void 0:h.offsetTop)!=null?d:0;return{top:p.top+x,left:p.left,width:p.width,height:g}}case"empty-column":case"empty-row":return{top:p.top,left:p.left,width:p.width,height:p.height};default:return{top:p.top,left:p.left,width:p.width,height:p.height}}}applyPreview(t){var o,r;if(!this.dragState)return;if(!t){this.dragState.activeSlotKey!==null&&(this.dragState.activeSlotKey=null,this.dragState.previewLayout=void 0,this.setProps("dragOverlayRect",null));return}const i=(0,import_flow_engine.getSlotKey)(t);if(this.dragState.activeSlotKey===i&&this.dragState.previewLayout)return;const n=(0,import_flow_engine.simulateLayoutForSlot)({slot:t,sourceUid:this.dragState.sourceUid,layout:this.dragState.snapshot,generateRowId:import_shared.uid});this.dragState.previewLayout={rows:import_lodash.default.cloneDeep(n.rows),sizes:import_lodash.default.cloneDeep(n.sizes)};const l=this.gridContainerRef.current,a=(o=l==null?void 0:l.scrollTop)!=null?o:0,c=(r=l==null?void 0:l.scrollLeft)!=null?r:0,u=this.computeOverlayRect(t),d={top:u.top-this.dragState.containerRect.top+a,left:u.left-this.dragState.containerRect.left+c,width:u.width,height:u.height,type:t.type};this.setProps("dragOverlayRect",d),this.dragState.activeSlotKey=i}handleDragStart(t){var o;const r=t.active.id;this.dragState={sourceUid:r,snapshot:{rows:import_lodash.default.cloneDeep(this.props.rows||{}),sizes:import_lodash.default.cloneDeep(this.props.sizes||{})},slots:[],containerRect:{top:0,left:0,width:0,height:0},pointerOrigin:(o=getClientPoint(t.activatorEvent))!=null?o:void 0,activeSlotKey:null,previewLayout:void 0,refreshTimer:null},this.setProps("dragOverlayRect",null),this.updateLayoutSnapshot(),this.scheduleSnapshotRefresh()}handleDragMove(t){if(!this.dragState)return;this.dragState.slots.length||this.updateLayoutSnapshot();const o=this.computePointerPosition(t);if(!o){this.applyPreview(null);return}const r=(0,import_flow_engine.resolveDropIntent)(o,this.dragState.slots);this.applyPreview(r)}finishDrag(){this.dragState&&(this.dragState.refreshTimer&&clearTimeout(this.dragState.refreshTimer),this.dragState=void 0,this.setProps("dragOverlayRect",null))}handleDragEnd(t){if(!this.dragState)return;const o=this.dragState.previewLayout;o&&(this.setProps("rows",import_lodash.default.cloneDeep(o.rows)),this.setProps("sizes",import_lodash.default.cloneDeep(o.sizes)),this.saveGridLayout(o)),this.finishDrag()}handleDragCancel(t){this.finishDrag()}renderAddSubModelButton(){throw new Error("renderAddSubModelButton method must be implemented in subclasses of GridModel")}getRows(){return this.context.isMobileLayout?transformRowsToSingleColumn(this.props.rows||{}):this.props.rows||{}}getSizes(){return this.context.isMobileLayout?{}:this.props.sizes||{}}render(){var t;return(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[((t=this.subModels.items)==null?void 0:t.length)>0&&(0,import_jsx_runtime.jsx)(import_antd.Space,{ref:this.gridContainerRef,direction:"vertical",style:{width:"100%",marginBottom:this.props.rowGap},size:this.props.rowGap,children:(0,import_jsx_runtime.jsx)(import_flow_engine.DndProvider,{onDragStart:this.handleDragStart.bind(this),onDragMove:this.handleDragMove.bind(this),onDragEnd:this.handleDragEnd.bind(this),onDragCancel:this.handleDragCancel.bind(this),children:(0,import_jsx_runtime.jsx)(Grid,{rowGap:this.props.rowGap,colGap:this.props.colGap,rows:this.getRows(),sizes:this.getSizes(),dragOverlayRect:this.props.dragOverlayRect,renderItem:o=>{const r=this.flowEngine.getModel(o),i=this.context.fieldIndex,n=i==null?r:(()=>{const l=r.createFork({},`${i}:${o}`);return l.context.defineProperty("fieldIndex",{get:()=>i}),l.setProps({disabled:this.props.disabled}),l})();return(0,import_jsx_runtime.jsx)(import_flow_engine.Droppable,{model:n,children:(0,import_jsx_runtime.jsx)(import_flow_engine.MemoFlowModelRenderer,{model:n,fallback:this.itemFallback,showFlowSettings:this.flowEngine.flowSettings.enabled?this.getItemFlowSettings():!1,showErrorFallback:!0,settingsMenuLevel:this.itemSettingsMenuLevel,showTitle:!0,extraToolbarItems:this.itemExtraToolbarItems},`${n.uid}:${i}`)})}})})}),this.flowEngine.flowSettings.enabled&&(0,import_jsx_runtime.jsx)("div",{style:{marginBottom:16},children:this.renderAddSubModelButton()})]})}}GridModel.registerFlow({key:GRID_FLOW_KEY,steps:{resetRows:{handler(e){e.model.resetRows()}},grid:{uiSchema:{rows:{title:(0,import_flow_engine.escapeT)("Rows"),"x-decorator":"FormItem","x-component":JsonEditor,"x-component-props":{autoSize:{minRows:10,maxRows:20},description:(0,import_flow_engine.escapeT)("Configure the rows and columns of the grid.")}},sizes:{title:(0,import_flow_engine.escapeT)("Sizes"),"x-decorator":"FormItem","x-component":JsonEditor,"x-component-props":{rows:5},description:(0,import_flow_engine.escapeT)("Configure the sizes of each row. The value is an array of numbers representing the width of each column in the row.")}},handler(e,t){return E(this,null,function*(){const o=e.model.mergeRowsWithItems(t.rows||{});e.model.setProps("rows",o),e.model.setProps("sizes",t.sizes||{})})}}}});function transformRowsToSingleColumn(e,t){var o;const r=(o=t==null?void 0:t.emptyColumnUid)!=null?o:import_flow_engine.EMPTY_COLUMN_UID,i={};return Object.keys(e).forEach(n=>{e[n].forEach(l=>{const a=l.filter(c=>c!==r);a.length>0&&(i[(0,import_shared.uid)()]=[a])})}),i}function recalculateGridSizes({position:e,direction:t,resizeDistance:o,prevMoveDistance:r,oldSizes:i,oldRows:n,gridContainerWidth:l,gutter:a=16,columnCount:c=24}){var u;const d=import_lodash.default.cloneDeep(n),m=import_lodash.default.cloneDeep(i),p=m[e.rowId]||[],h=a*(p.length-1),g=Math.floor(o/(l-h)*c);if(g===r)return{newRows:d,newSizes:m,moveDistance:g};if(m[u=e.rowId]!=null||(m[u]=[c]),m[e.rowId][e.columnIndex]+=g-r,t==="left"&&e.columnIndex>0&&(m[e.rowId][e.columnIndex-1]-=g-r,m[e.rowId][e.columnIndex-1]===0&&removeEmptyColumnFromRow({rows:d,sizes:m,position:e,direction:"left"})),t==="left"&&e.columnIndex===0){const x=m[e.rowId].slice(1).reduce((_,v)=>_+v,0);m[e.rowId][0]<c-x&&addEmptyColumnToRow({rows:d,sizes:m,position:e,direction:"left"})}if(t==="right"&&e.columnIndex<m[e.rowId].length-1&&(m[e.rowId][e.columnIndex+1]-=g-r,m[e.rowId][e.columnIndex+1]===0&&removeEmptyColumnFromRow({rows:d,sizes:m,position:e,direction:"right"})),t==="right"&&e.columnIndex===m[e.rowId].length-1){const x=m[e.rowId].slice(0,-1).reduce((_,v)=>_+v,0);m[e.rowId][e.columnIndex]<c-x&&addEmptyColumnToRow({rows:d,sizes:m,position:e,direction:"right"})}return{newRows:d,newSizes:m,moveDistance:g}}function addEmptyColumnToRow({rows:e,sizes:t,position:o,direction:r}){const i=e[o.rowId]||[],n=t[o.rowId]||[];if(r==="left"){const l=i[o.columnIndex-1];if(l!=null&&l.includes(import_flow_engine.EMPTY_COLUMN_UID))return;i.splice(o.columnIndex,0,[import_flow_engine.EMPTY_COLUMN_UID]),n.splice(o.columnIndex,0,1)}if(r==="right"){const l=i[o.columnIndex+1];if(l!=null&&l.includes(import_flow_engine.EMPTY_COLUMN_UID))return;i.splice(o.columnIndex+1,0,[import_flow_engine.EMPTY_COLUMN_UID]),n.splice(o.columnIndex+1,0,1)}}function removeEmptyColumnFromRow({rows:e,sizes:t,position:o,direction:r}){const i=e[o.rowId]||[],n=t[o.rowId]||[];if(r==="left"){const l=i[o.columnIndex-1];if(!(l!=null&&l.includes(import_flow_engine.EMPTY_COLUMN_UID)))return;i.splice(o.columnIndex-1,1),n.splice(o.columnIndex-1,1)}if(r==="right"){const l=i[o.columnIndex+1];if(!(l!=null&&l.includes(import_flow_engine.EMPTY_COLUMN_UID)))return;i.splice(o.columnIndex+1,1),n.splice(o.columnIndex+1,1)}}class BlockGridModel extends GridModel{constructor(){super(...arguments),k(this,"dragOverlayConfig",{columnInsert:{before:{offsetTop:-24},after:{offsetTop:24}},columnEdge:{left:{offsetLeft:-5},right:{offsetLeft:6}}})}onInit(t){super.onInit(t),this.context.defineProperty("blockGridModel",{value:this}),this.context.defineProperty("filterManager",{once:!0,get:()=>new FilterManager(this,t.filterManager)})}get subModelBaseClasses(){var t,o;const r=(o=(t=this.context.view)==null?void 0:t.inputArgs)!=null?o:{};return r.collectionName&&!r.filterByTk?["DataBlockModel","BlockModel"]:["DataBlockModel","FilterBlockModel","BlockModel"]}get filterManager(){return this.context.filterManager}serialize(){const t=super.serialize();return t.filterManager=this.filterManager.getFilterConfigs(),t}renderAddSubModelButton(){return(0,import_jsx_runtime.jsx)(import_flow_engine.AddSubModelButton,{model:this,subModelKey:"items",subModelBaseClasses:this.subModelBaseClasses,children:(0,import_jsx_runtime.jsx)(import_flow_engine.FlowSettingsButton,{icon:(0,import_jsx_runtime.jsx)(import_icons.PlusOutlined,{}),children:this.context.t("Add block")})})}render(){return(0,import_jsx_runtime.jsx)("div",{style:{padding:this.context.themeToken.marginBlock},children:super.render()})}}BlockGridModel.registerFlow({key:"blockGridSettings",steps:{grid:{handler(e,t){e.model.setProps("rowGap",e.themeToken.marginBlock),e.model.setProps("colGap",e.themeToken.marginBlock)}}}});const BlockPlaceholder=()=>{const{t:e}=(0,import_react_i18next.useTranslation)();return(0,import_jsx_runtime.jsx)(BlockItemCard,{children:(0,import_jsx_runtime.jsx)(import_antd.Result,{status:"403",subTitle:e("当前区块已被隐藏,你无法查看(该内容仅在激活 UI Editor 时显示)。")})})},BlockSceneEnum={new:"new",one:"one",many:"many",select:"select",oam:["one","many"]};class BlockModel extends import_flow_engine.FlowModel{constructor(){super(...arguments),k(this,"decoratorProps",(0,import_reactive.observable)({})),k(this,"_defaultCustomModelClasses",{}),k(this,"customModelClasses",{})}static _getScene(){return import_lodash.default.castArray(this.scene||[])}static _isScene(t){return this._getScene().includes(t)}getModelClassName(t){return Object.keys(this.customModelClasses).includes(t)?this.customModelClasses[t]:this._defaultCustomModelClasses[t]||t}renderHiddenInConfig(){return(0,import_jsx_runtime.jsx)(BlockPlaceholder,{})}onInit(t){super.onInit(t),this.context.defineMethod("getModelClassName",o=>this.getModelClassName(o))}setDecoratorProps(t){Object.assign(this.decoratorProps,t)}get title(){return this._title||(this._title=this.defaultBlockTitle()),this._title}defaultBlockTitle(){var t;return`${this.translate(((t=this.constructor.meta)==null?void 0:t.label)||this.constructor.name)}`}renderComponent(){throw new Error("renderComponent method must be implemented in subclasses of BlockModel")}render(){return(0,import_jsx_runtime.jsx)(BlockItemCard,I(f({ref:this.context.ref},this.decoratorProps),{children:(0,import_jsx_runtime.jsx)(import_reactive_react.Observer,{children:()=>this.renderComponent()})}))}}k(BlockModel,"scene");BlockModel.registerFlow({key:"cardSettings",title:(0,import_flow_engine.escapeT)("Card settings"),steps:{titleDescription:{title:(0,import_flow_engine.escapeT)("Title & description"),uiSchema:{title:{"x-component":"Input","x-decorator":"FormItem",title:(0,import_flow_engine.escapeT)("Title")},description:{"x-component":"Input.TextArea","x-decorator":"FormItem",title:(0,import_flow_engine.escapeT)("Description")}},handler(e,t){const o=e.t(t.title),r=e.t(t.description);e.model.setDecoratorProps({title:o,description:r})}},linkageRules:{use:"blockLinkageRules"}}});BlockModel.define({hide:!0,label:(0,import_flow_engine.escapeT)("Other blocks")});class CollectionActionModel extends ActionModel{}CollectionActionModel.define({children:e=>E(void 0,null,function*(){return(yield(0,import_flow_engine.buildSubModelItems)(ActionModel)(e)).filter(t=>e.engine.getModelClass(t.useModel)._isScene(ActionSceneEnum.collection))})});function createDefaultCollectionBlockTitle(e){const{blockLabel:t,dsName:o,dsCount:r,collectionTitle:i,sourceCollectionTitle:n,associationTitle:l}=e,a=r>1&&!!o;let c=i;if(n&&l){const u=`${n} > ${l} (${i})`;c=`${a?`${o} > `:""}${u}`}else c=`${a?`${o} > `:""}${i}`;return`
|
|
1774
|
+
`,defaultValue:"dddd",formats:["MMMM Do YYYY","YYYY-MM-DD","MM/DD/YY","YYYY/MM/DD","DD/MM/YYYY"]},enum:[{label:DateFormatCom({format:"MMMM Do YYYY"}),value:"MMMM Do YYYY"},{label:DateFormatCom({format:"YYYY-MM-DD"}),value:"YYYY-MM-DD"},{label:DateFormatCom({format:"MM/DD/YY"}),value:"MM/DD/YY"},{label:DateFormatCom({format:"YYYY/MM/DD"}),value:"YYYY/MM/DD"},{label:DateFormatCom({format:"DD/MM/YYYY"}),value:"DD/MM/YYYY"},{label:(0,import_client.tval)("Custom"),value:"custom"}],"x-reactions":[i=>{const{picker:n}=i.form.values;i.value=(0,import_client.getPickerFormat)(n),i.setComponentProps({picker:n})}]},showTime:{type:"boolean","x-decorator":"FormItem","x-component":"Checkbox","x-content":'{{t("Show time")}}',"x-reactions":[{dependencies:["picker"],fulfill:{state:{hidden:"{{ $form.values.picker !== 'date' }}"}}},i=>{const{collectionField:n}=e.model.context,{picker:l}=i.form.values||{};i.hidden=n.type==="dateOnly"||l!=="date",l!=="date"&&(i.value=!1)}]},timeFormat:r}},defaultParams:e=>{const{showTime:t,dateFormat:o,timeFormat:r,picker:i}=f(f({},e.model.context.collectionField.getComponentProps()),e.model.props);return{picker:i||"date",dateFormat:o||"YYYY-MM-DD",timeFormat:r||"HH:mm:ss",showTime:t}},handler(e,t){const{collectionField:o}=e.model.context;o.type==="time"?e.model.setProps(I(f({},t),{format:t==null?void 0:t.timeFormat})):e.model.setProps(I(f({},t),{format:t!=null&&t.showTime?`${t.dateFormat} ${t.timeFormat}`:t.dateFormat}))}}),SelectOptions=e=>{const t=(0,import_flow_engine.useFlowSettingsContext)(),o=t.model.resource,r=t.model.collectionField,i=useCompile(),n=(o==null?void 0:o.getResourceName())||r.target,l=useSortFields(n);return(0,import_jsx_runtime.jsx)(import_antd.Select,I(f({},e),{options:i(l)}))},sortingRule=(0,import_flow_engine.defineAction)({name:"sortingRule",title:(0,import_flow_engine.escapeT)("Default sorting"),uiSchema:{sort:{type:"array","x-component":"ArrayItems","x-decorator":"FormItem",items:{type:"object",properties:{space:{type:"void","x-component":"Space",properties:{sort:{type:"void","x-decorator":"FormItem","x-component":"ArrayItems.SortHandle"},field:{type:"string",required:!0,"x-decorator":"FormItem","x-component":SelectOptions,"x-component-props":{style:{width:260}}},direction:{type:"string","x-decorator":"FormItem","x-component":"Radio.Group","x-component-props":{optionType:"button"},enum:[{label:(0,import_flow_engine.escapeT)("ASC"),value:"asc"},{label:(0,import_flow_engine.escapeT)("DESC"),value:"desc"}]},remove:{type:"void","x-decorator":"FormItem","x-component":"ArrayItems.Remove"}}}}},properties:{add:{type:"void",title:(0,import_flow_engine.escapeT)("Add sort field"),"x-component":"ArrayItems.Addition"}}}},defaultParams(e){return{sort:[]}},handler(e,t){return E(this,null,function*(){var o;const r=t.sort.map(n=>n.direction==="desc"?`-${n.field}`:n.field),i=(o=e.model)==null?void 0:o.resource;i&&i.setSort(r)})}}),dataLoadingMode=(0,import_flow_engine.defineAction)({name:"dataLoadingMode",title:(0,import_client.tval)("Data loading mode"),uiSchema:{dataLoadingMode:{"x-decorator":"FormItem","x-component":"Radio.Group",enum:[{value:"auto",label:(0,import_client.tval)("Load all data when filter is empty")},{value:"manual",label:(0,import_client.tval)("Do not load data when filter is empty")}]}},defaultParams(e){return{dataLoadingMode:"auto"}},handler(e,t){return E(this,null,function*(){e.model.setProps("dataLoadingMode",t.dataLoadingMode)})}}),renderMode=(0,import_flow_engine.defineAction)({title:(0,import_client.tval)("Render mode"),name:"renderMode",uiSchema:{textOnly:{type:"string",enum:[{label:(0,import_client.tval)("Text only"),value:!0},{label:(0,import_client.tval)("Html"),value:!1}],"x-decorator":"FormItem","x-component":"Radio.Group"}},defaultParams:{textOnly:!0},handler(e,t){e.model.setProps({textOnly:t.textOnly})}}),layout=(0,import_flow_engine.defineAction)({title:(0,import_client.tval)("Set block layout"),name:"layout",uiSchema:{layout:{type:"string",enum:[{label:(0,import_client.tval)("Vertical"),value:"vertical"},{label:(0,import_client.tval)("Horizontal"),value:"horizontal"}],required:!0,"x-decorator":"FormItem","x-component":"Radio.Group"},labelAlign:{title:(0,import_client.tval)("Label align"),type:"string","x-decorator":"FormItem","x-component":"Select",enum:[{label:"{{t('Right')}}",value:"right"},{label:"{{t('Left')}}",value:"left"}],"x-reactions":[e=>{const{layout:t}=e.form.values;e.hidden=t==="vertical"}]},labelWidth:{title:(0,import_client.tval)("Label width"),type:"string",required:!0,"x-decorator":"FormItem","x-component":"NumberPicker","x-component-props":{addonAfter:"px"},"x-validator":[{minimum:50}],"x-reactions":[e=>{const{layout:t}=e.form.values;e.hidden=t==="vertical"}]},labelWrap:{type:"string",title:(0,import_client.tval)("When the Label exceeds the width"),enum:[{label:(0,import_client.tval)("Line break"),value:!0},{label:(0,import_client.tval)("Ellipsis"),value:!1}],"x-decorator":"FormItem","x-component":"Radio.Group","x-reactions":[e=>{const{layout:t}=e.form.values;e.hidden=t==="vertical"}]},colon:{type:"boolean","x-content":(0,import_client.tval)("Colon"),required:!0,"x-decorator":"FormItem","x-component":"Checkbox"}},defaultParams:e=>({layout:"vertical",labelAlign:"left",labelWidth:120,labelWrap:!0,colon:!0}),handler(e,t){e.model.setProps(I(f({},t),{labelWidth:t.layout==="vertical"?null:t.labelWidth})),e.model.subModels.grid.findSubModel("items",o=>{o.setProps(I(f({},t),{labelWidth:t.layout==="vertical"?"100%":t.labelWidth,labelWrap:t.layout==="vertical"?!0:t.labelWrap}))})}}),required=(0,import_flow_engine.defineAction)({title:(0,import_flow_engine.escapeT)("Required"),name:"required",uiSchema:e=>E(void 0,null,function*(){var t,o,r;const i=((o=(t=e.model.collectionField)==null?void 0:t.validation)==null?void 0:o.rules)||[],n=((r=e.model.props.validation)==null?void 0:r.rules)||[],l=i.concat(n).some(a=>a.name==="required");return{required:{"x-component":"Switch","x-decorator":"FormItem","x-component-props":{checkedChildren:(0,import_flow_engine.escapeT)("Yes"),unCheckedChildren:(0,import_flow_engine.escapeT)("No")},"x-disabled":l}}}),defaultParams:e=>({required:e.model.getProps().required}),handler(e,t){var o,r;let i=e.model.getProps().rules||[];const n=(((r=(o=e.model.collectionField)==null?void 0:o.validation)==null?void 0:r.rules)||[]).some(l=>l.name==="required");i=i.filter(l=>!l.required),t.required&&!n&&i.push({required:!0,message:e.t("The field value is required")}),e.model.setProps({rules:i,required:t.required||n})}});function getValueWithIndex(e,t,o){const r=t.split(".");if(o!=null&&o.length){const i=[];let n=0,l=0;for(;n<r.length;){const a=r[n];if(i.push(a),l<o.length){const[c,u]=o[l].split(":");c===a&&(i.push(Number(u)),l++)}n++}return(0,import_lodash.get)(e,i)}return(0,import_lodash.get)(e,r)}class DetailsItemModel extends import_flow_engine.DisplayItemModel{static defineChildren(t){const o=t.collection;return o.getFields().map(r=>{const i=this.getDefaultBindingByField(t,r,{fallbackToTargetTitleField:!0});if(!i)return null;const n=i.modelName,l=t.prefixFieldPath?`${t.prefixFieldPath}.${r.name}`:r.name;return{key:l,label:r.title,refreshTargets:["DetailsCustomItemModel/DetailsJSFieldItemModel"],toggleable:a=>{var c;return((c=a.getStepParams("fieldSettings","init"))==null?void 0:c.fieldPath)===l},useModel:"DetailsItemModel",createModelOptions:()=>({use:"DetailsItemModel",stepParams:{fieldSettings:{init:{dataSourceKey:o.dataSourceKey,collectionName:t.model.context.blockModel.collection.name,fieldPath:l}}},subModels:{field:{use:n,props:typeof i.defaultProps=="function"?i.defaultProps(t,r):i.defaultProps}}})}}).filter(Boolean)}onInit(t){super.onInit(t)}render(){const t=this.subModels.field,o=this.context.fieldIndex,r=o!=null?(()=>{const n=t.createFork({},`${o}`);return n.context.defineProperty("fieldIndex",{get:()=>o}),n})():t,i=getValueWithIndex(this.context.record,this.fieldPath,o);return(0,import_jsx_runtime.jsx)(import_flow_engine.FormItem,I(f({},this.props),{value:i,children:(0,import_jsx_runtime.jsx)(import_flow_engine.FieldModelRenderer,{model:r})}))}}DetailsItemModel.define({label:(0,import_flow_engine.escapeT)("Display collection fields"),sort:100});DetailsItemModel.registerFlow({key:"detailItemSettings",sort:300,title:(0,import_flow_engine.escapeT)("Detail item settings"),steps:{label:{title:(0,import_flow_engine.escapeT)("Label"),uiSchema:e=>({title:{"x-component":"Input","x-decorator":"FormItem","x-reactions":t=>{var o,r;const i=e.model,n=(o=i.collectionField)==null?void 0:o.title;t.decoratorProps=I(f({},t.decoratorProps),{extra:i.context.t("Original field title: ")+((r=i.context.t(n))!=null?r:"")})}}}),defaultParams:e=>{var t;return{title:(t=e.collectionField)==null?void 0:t.title}},handler(e,t){e.model.setProps({label:t.title})}},aclCheck:{use:"aclCheck"},init:{handler(e){return E(this,null,function*(){const{collectionField:t}=e.model;t&&e.model.setProps(t.getComponentProps())})}},showLabel:{title:(0,import_flow_engine.escapeT)("Show label"),uiSchema:{showLabel:{"x-component":"Switch","x-decorator":"FormItem","x-component-props":{checkedChildren:(0,import_flow_engine.escapeT)("Yes"),unCheckedChildren:(0,import_flow_engine.escapeT)("No")}}},defaultParams:{showLabel:!0},handler(e,t){e.model.setProps({showLabel:t.showLabel})}},tooltip:{title:(0,import_flow_engine.escapeT)("Tooltip"),uiSchema:{tooltip:{"x-component":"Input.TextArea","x-decorator":"FormItem"}},handler(e,t){e.model.setProps({tooltip:t.tooltip})}},description:{title:(0,import_flow_engine.escapeT)("Description"),uiSchema:{description:{"x-component":"Input.TextArea","x-decorator":"FormItem"}},handler(e,t){e.model.setProps({extra:t.description})}},model:{title:(0,import_flow_engine.escapeT)("Field component"),use:"displayFieldComponent"},fieldNames:{use:"titleField",title:(0,import_flow_engine.escapeT)("Label field"),beforeParamsSave:(e,t,o)=>E(void 0,null,function*(){if(!e.collectionField.isAssociationField())return null;if(t.label!==o.label){const r=e.collectionField.targetCollection,i=r.getField(t.label),n=e.model.constructor.getDefaultBindingByField(e,i);if(n.modelName!==e.model.subModels.field.use){const l=e.model.subModels.field.uid;yield e.engine.destroyModel(l),yield e.model.setSubModel("field",{use:n.modelName,stepParams:{fieldSettings:{init:{dataSourceKey:e.model.collectionField.dataSourceKey,collectionName:r.name,fieldPath:t.label}}}}).save()}e.model.setProps(e.collectionField.targetCollection.getField(t.label).getComponentProps())}}),handler(e,t){var o,r;e.model.setProps(f({titleField:t.label},(r=(o=e.collectionField.targetCollection)==null?void 0:o.getField(t.label))==null?void 0:r.getComponentProps()))}}}});function buildAssociationOptions(e,t,o){const{collectionField:r}=e,i=t.getBindingsByField(e,r),n=l=>l.map(a=>{var c;return{label:((c=e.engine.getModelClass(a.modelName).meta)==null?void 0:c.label)||a.modelName,value:a.modelName}});if(o){const l=t.getBindingsByField(e,r.targetCollection.getField(o));return[i.length&&{label:(0,import_flow_engine.escapeT)("AssociationField component"),options:n(i)},{label:(0,import_flow_engine.escapeT)("Title field component"),options:n(l)}].filter(Boolean)}return n(i)}const displayFieldComponent=(0,import_flow_engine.defineAction)({name:"displayFieldComponent",title:(0,import_flow_engine.escapeT)("Field component"),uiSchema:e=>{const{titleField:t}=e.model.props;return e.collectionField?e.model.constructor.getBindingsByField(e,e.collectionField).length===1&&!t?null:{use:{type:"string","x-component":"Select","x-decorator":"FormItem",enum:buildAssociationOptions(e,e.model.constructor,t)}}:void 0},beforeParamsSave:(e,t,o)=>E(void 0,null,function*(){if(!e.collectionField)return;const r=e.model.constructor.getBindingsByField(e,e.collectionField),{titleField:i}=e.model.props;let n=[];i&&(n=e.model.constructor.getBindingsByField(e,e.collectionField.targetCollection.getField(i)));const l=r.concat(n).find(a=>a.modelName===t.use);if(t.use!==o.use){const a=e.model.subModels.field.uid;yield e.engine.destroyModel(a),e.model.setSubModel("field",{use:t.use,props:l==null?void 0:l.defaultProps,stepParams:{fieldSettings:{init:e.model.getFieldSettingsInitParams()}}}),yield e.model.save()}}),defaultParams:e=>{var t;const o=e.model.constructor.getDefaultBindingByField(e,e.collectionField);return{use:((t=e.model.subModels.field)==null?void 0:t.use)||o.modelName}},handler(e,t){return E(this,null,function*(){t.use!==e.model.subModels.field.use&&e.model.setStepParams(e.flowKey,"model",{use:e.model.subModels.field.use})})}}),fieldComponent=(0,import_flow_engine.defineAction)({title:(0,import_client.tval)("Field component"),name:"fieldComponent",uiSchema:e=>{if(e.model.getProps().pattern==="readPretty"){const{titleField:t}=e.model.props,o=e.model.constructor.getBindingsByField(e,e.collectionField);return!o||o.length===1&&!t?null:{use:{type:"string","x-component":"Select","x-decorator":"FormItem",enum:buildAssociationOptions(e,DetailsItemModel,t)}}}else{const t=e.model.constructor.getBindingsByField(e,e.collectionField);return!t||t.length===1?null:{use:{type:"string","x-component":"Select","x-decorator":"FormItem",enum:t.map(o=>{var r;return{label:((r=e.engine.getModelClass(o.modelName).meta)==null?void 0:r.label)||o.modelName,value:o.modelName}})}}}},beforeParamsSave:(e,t,o)=>E(void 0,null,function*(){let r=e.model.constructor.getBindingsByField(e,e.collectionField),i=[];if(e.model.getProps().pattern==="readPretty"){const{titleField:l}=e.model.props;r=DetailsItemModel.getBindingsByField(e,e.collectionField),l&&(i=DetailsItemModel.getBindingsByField(e,e.collectionField.targetCollection.getField(l)))}const n=r.concat(i).find(l=>l.modelName===t.use);if(t.use!==o.use){const l=e.model.subModels.field.uid;yield e.engine.destroyModel(l),e.model.setSubModel("field",{use:t.use,props:typeof n.defaultProps=="function"?n.defaultProps(e,e.collectionField):n.defaultProps,stepParams:{fieldSettings:{init:e.model.getFieldSettingsInitParams()}}}),yield e.model.save()}}),defaultParams:e=>{const t=e.model.getProps().pattern==="readPretty"?DetailsItemModel.getDefaultBindingByField(e,e.collectionField):e.model.constructor.getDefaultBindingByField(e,e.collectionField);return{use:e.model.subModels.field.use||t.modelName}},handler(e,t){return E(this,null,function*(){})}}),aclCheck=(0,import_flow_engine.defineAction)({name:"aclCheck",handler(e,t){return E(this,null,function*(){var o,r;const i=yield e.aclCheck({dataSourceKey:(o=e.model.context.dataSource)==null?void 0:o.key,resourceName:e.model.context.resourceName,actionName:e.model.context.actionName,fields:((r=e.model.context)==null?void 0:r.collectionField)&&[e.model.context.collectionField.name]});e.fieldPath&&!e.collectionField&&(e.model.fieldDeleted=!0,e.model.hidden=!0,e.exitAll()),i||(e.model.hidden=!0,e.exitAll())})}}),pattern=(0,import_flow_engine.defineAction)({name:"pattern",title:(0,import_flow_engine.escapeT)("Display mode"),uiSchema:e=>{if(e.model.collectionField)return{pattern:{"x-component":"Select","x-decorator":"FormItem",enum:[{value:"editable",label:(0,import_flow_engine.escapeT)("Editable")},{value:"disabled",label:(0,import_flow_engine.escapeT)("Disabled")},{value:"readPretty",label:(0,import_flow_engine.escapeT)("Display only")}],"x-disabled":e.model.collectionField.inputable===!1}}},defaultParams:e=>({pattern:e.model.collectionField.inputable===!1||e.model.context.parentDisabled||e.model.props.disabled||e.model.collectionField.readonly?"disabled":"editable"}),afterParamsSave:(e,t,o)=>E(void 0,null,function*(){const{model:r}=e;if(t.pattern==="readPretty"){const i=DetailsItemModel.getDefaultBindingByField(e,e.collectionField,{fallbackToTargetTitleField:!0});yield rebuildFieldSubModel(e,r,i)}else{const i=e.model.constructor.getDefaultBindingByField(e,e.collectionField);o.pattern==="readPretty"&&(yield rebuildFieldSubModel(e,r,i))}}),handler(e,t){t.pattern==="readPretty"?e.model.setProps({pattern:"readPretty"}):e.model.setProps({disabled:t.pattern==="disabled"})}});function rebuildFieldSubModel(e,t,o){return E(this,null,function*(){var r;if(!o)return;const i=(r=t.subModels.field)==null?void 0:r.uid;i&&(yield e.engine.destroyModel(i));const n=typeof o.defaultProps=="function"?o.defaultProps(e,{}):o.defaultProps;yield t.setSubModel("field",{use:o.modelName,props:n||{},stepParams:{fieldSettings:{init:t.getFieldSettingsInitParams()}}}).applyAutoFlows(),yield t.save()})}const validation=(0,import_flow_engine.defineAction)({title:(0,import_flow_engine.escapeT)("Validation"),name:"validation",uiSchema:e=>{if(!e.model.collectionField)return;const t=e.app.dataSourceManager.collectionFieldInterfaceManager.getFieldInterface(e.model.collectionField.interface);return t.validationType?{validation:{"x-decorator":"FormItem","x-component":FieldValidation,"x-component-props":{type:t.validationType,availableValidationOptions:[...new Set(t.availableValidationOptions)],excludeValidationOptions:[...new Set(t.excludeValidationOptions)],isAssociation:t.isAssociation}}}:null},handler(e,t){if(t.validation){const o=e.model.getProps().rules||[],r=(0,import_flow_engine.jioToJoiSchema)(t.validation),i=e.model.props.label;o.push({validator:(l,a)=>{const{error:c}=r.validate(a,{context:{label:i},abortEarly:!1});if(c){const u=c.details.map(d=>d.message.replace(/"value"/g,`"${i}"`)).join(", ");return Promise.reject(u)}return Promise.resolve()}});const n=t.validation.rules.some(l=>l.name==="required");e.model.setProps({rules:o,required:n,validation:t.validation})}}}),FieldAssignValueInput=({fieldUid:e,value:t,onChange:o})=>{var r,i,n;const l=(0,import_flow_engine.useFlowContext)(),a=import_react2.default.useMemo(()=>{var C,y,b,S;try{return(((S=(b=(y=(C=l.model)==null?void 0:C.subModels)==null?void 0:y.grid)==null?void 0:b.subModels)==null?void 0:S.items)||[]).find(F=>(F==null?void 0:F.uid)===e)}catch{return}},[l,e]),{collection:c,dataSource:u,blockModel:d}=(a==null?void 0:a.context)||{},m=((r=a==null?void 0:a.getStepParams)==null?void 0:r.call(a,"fieldSettings","init"))||{},p=m==null?void 0:m.fieldPath,[h,g]=import_react2.default.useState(null);import_react2.default.useEffect(()=>{var C,y,b,S,F,j,P,T,M,R,B,D,w,$,N,A,O,q;if(!a||!c||!p)return;const V=((C=a==null?void 0:a.context)==null?void 0:C.engine)||((b=(y=l.model)==null?void 0:y.context)==null?void 0:b.engine),L=(typeof(c==null?void 0:c.getFields)=="function"?c.getFields()||[]:[]).find(X=>(X==null?void 0:X.name)===p);typeof(c==null?void 0:c.getField)=="function"&&c.getField(p);const U=import_flow_engine.EditableItemModel.getDefaultBindingByField(a==null?void 0:a.context,L);if(!U)return;const z=U.modelName,G=(S=V==null?void 0:V.createModel)==null?void 0:S.call(V,{use:"VariableFieldFormModel",subModels:{fields:[{use:z,stepParams:{fieldSettings:{init:{dataSourceKey:c==null?void 0:c.dataSourceKey,collectionName:c==null?void 0:c.name,fieldPath:p}}}}]}});if(!G)return;(j=(F=G.context)==null?void 0:F.defineProperty)==null||j.call(F,"collection",{value:c}),u&&((T=(P=G.context)==null?void 0:P.defineProperty)==null||T.call(P,"dataSource",{value:u}));const Y=typeof(c==null?void 0:c.getField)=="function"?c.getField(p):void 0;Y&&((R=(M=G.context)==null?void 0:M.defineProperty)==null||R.call(M,"collectionField",{value:Y})),d&&((D=(B=G.context)==null?void 0:B.defineProperty)==null||D.call(B,"blockModel",{value:d})),G.context&&Object.defineProperty(G.context,"resource",{configurable:!0,enumerable:!0,get:()=>d==null?void 0:d.resource});const K=($=(w=G==null?void 0:G.subModels)==null?void 0:w.fields)==null?void 0:$[0],J=Y==null?void 0:Y.type,H=Y==null?void 0:Y.interface,Q=J==="belongsToMany"||J==="hasMany"||J==="belongsToArray"||H==="m2m"||H==="o2m"||H==="mbm";if((N=K==null?void 0:K.setProps)==null||N.call(K,{disabled:!1,readPretty:!1,pattern:"editable",updateAssociation:!1,multiple:Q}),(A=K==null?void 0:K.applyAutoFlows)==null||A.call(K),ensureOptionsFromUiSchemaEnumIfAbsent(K,Y),!((O=K==null?void 0:K.props)!=null&&O.fieldNames)&&Y!=null&&Y.targetCollection){const X=Y.targetCollection,te=(Y==null?void 0:Y.targetKey)||(X==null?void 0:X.filterTargetKey)||"id";(q=K==null?void 0:K.setProps)==null||q.call(K,{fieldNames:{label:X==null?void 0:X.titleField,value:te}})}return g(G),()=>{var X,te;(te=(X=G.subModels.fields).forEach)==null||te.call(X,Z=>Z.remove()),G.remove()}},[a,c,u,d,p,l]),import_react2.default.useEffect(()=>{var C,y,b,S;if(!h)return;const F=P=>{var T;return P&&typeof P=="object"&&"target"in P?(T=P.target)==null?void 0:T.value:P};(C=h.setProps)==null||C.call(h,{value:t,onChange:P=>o==null?void 0:o(F(P))});const j=(b=(y=h==null?void 0:h.subModels)==null?void 0:y.fields)==null?void 0:b[0];(S=j==null?void 0:j.setProps)==null||S.call(j,{value:t,onChange:P=>o==null?void 0:o(F(P))})},[h,t,o]);const x=import_react2.default.useMemo(()=>C=>(import_react2.default.useEffect(()=>{var y,b,S,F;const j=T=>{var M;return T&&typeof T=="object"&&"target"in T?(M=T.target)==null?void 0:M.value:T};(y=h==null?void 0:h.setProps)==null||y.call(h,I(f({},C),{onChange:T=>{var M;return(M=C==null?void 0:C.onChange)==null?void 0:M.call(C,j(T))}}));const P=(S=(b=h==null?void 0:h.subModels)==null?void 0:b.fields)==null?void 0:S[0];(F=P==null?void 0:P.setProps)==null||F.call(P,{value:C==null?void 0:C.value,onChange:T=>{var M;return(M=C==null?void 0:C.onChange)==null?void 0:M.call(C,j(T))}})},[C]),h?(0,import_jsx_runtime.jsx)("div",{style:{flex:1,minWidth:0},children:(0,import_jsx_runtime.jsx)(import_flow_engine.FlowModelRenderer,{model:h,showFlowSettings:!1})}):null),[h]),_=import_react2.default.useMemo(()=>()=>{var C,y;return(0,import_jsx_runtime.jsx)(import_antd.Input,{placeholder:`<${(y=(C=l.t)==null?void 0:C.call(l,"Null"))!=null?y:"Null"}>`,readOnly:!0,style:{width:"100%"}})},[l]),v=import_react2.default.useMemo(()=>()=>E(void 0,null,function*(){var C;const y=(yield(C=l.getPropertyMetaTree)==null?void 0:C.call(l))||[];return[{title:(0,import_flow_engine.escapeT)("Constant"),name:"constant",type:"string",paths:["constant"],render:x},{title:(0,import_flow_engine.escapeT)("Null"),name:"null",type:"object",paths:["null"],render:_},...y]}),[l,x,_]);return!a||!p?(0,import_jsx_runtime.jsx)(import_antd.Input,{disabled:!0,placeholder:(n=(i=l.t)==null?void 0:i.call(l,"Please select a field"))!=null?n:"Please select a field"}):(0,import_jsx_runtime.jsx)(import_flow_engine.VariableInput,{value:t,onChange:o,metaTree:v,style:{width:"100%"},clearValue:"",converters:{renderInputComponent:C=>{var y;const b=(y=C==null?void 0:C.paths)==null?void 0:y[0];if(b==="constant")return x;if(b==="null")return _},resolveValueFromPath:C=>{var y;const b=(y=C==null?void 0:C.paths)==null?void 0:y[0];if(b==="constant")return"";if(b==="null")return null},resolvePathFromValue:C=>C===null?["null"]:(0,import_flow_engine.isVariableExpression)(C)?(0,import_flow_engine.parseValueToPath)(C):["constant"]}})},getFormFields=e=>{var t,o,r,i;try{return(((i=(r=(o=(t=e.model)==null?void 0:t.subModels)==null?void 0:o.grid)==null?void 0:r.subModels)==null?void 0:i.items)||[]).map(n=>({label:n.props.label||n.props.name,value:n.uid,model:n}))}catch(n){return console.warn("Failed to get form fields:",n),[]}},linkageSetBlockProps=(0,import_flow_engine.defineAction)({name:"linkageSetBlockProps",title:(0,import_flow_engine.escapeT)("Set block state"),scene:import_flow_engine.ActionScene.BLOCK_LINKAGE_RULES,sort:100,uiSchema:{value:{type:"string","x-component":e=>{const{value:t,onChange:o}=e,r=(0,import_flow_engine.useFlowContext)(),i=r.model.translate.bind(r.model);return(0,import_jsx_runtime.jsx)(import_antd.Select,{value:t,onChange:o,placeholder:i("Please select state"),style:{width:"100%"},options:[{label:i("Visible"),value:"visible"},{label:i("Hidden"),value:"hidden"}],allowClear:!0})}}},handler(e,{value:t,setProps:o}){o(e.model,{hiddenModel:t==="hidden"})}}),linkageSetActionProps=(0,import_flow_engine.defineAction)({name:"linkageSetActionProps",title:(0,import_flow_engine.escapeT)("Set button state"),scene:import_flow_engine.ActionScene.ACTION_LINKAGE_RULES,sort:100,uiSchema:{value:{type:"string","x-component":e=>{const{value:t,onChange:o}=e,r=(0,import_flow_engine.useFlowContext)(),i=r.model.translate.bind(r.model);return(0,import_jsx_runtime.jsx)(import_antd.Select,{value:t,onChange:o,placeholder:i("Please select state"),style:{width:"100%"},options:[{label:i("Visible"),value:"visible"},{label:i("Hidden"),value:"hidden"},{label:i("Enabled"),value:"enabled"},{label:i("Disabled"),value:"disabled"}],allowClear:!0})}}},handler(e,{value:t,setProps:o}){o(e.model,{hiddenModel:t==="hidden",disabled:t==="disabled"})}}),linkageSetFieldProps=(0,import_flow_engine.defineAction)({name:"linkageSetFieldProps",title:(0,import_flow_engine.escapeT)("Set field state"),scene:import_flow_engine.ActionScene.FIELD_LINKAGE_RULES,sort:100,uiSchema:{value:{type:"object","x-component":e=>{const{value:t={fields:[]},onChange:o}=e,r=(0,import_flow_engine.useFlowContext)(),i=r.model.translate.bind(r.model),n=getFormFields(r),l=[{label:i("Visible"),value:"visible"},{label:i("Hidden"),value:"hidden"},{label:i("Hidden (reserved value)"),value:"hiddenReservedValue"},{label:i("Required"),value:"required"},{label:i("Not required"),value:"notRequired"},{label:i("Disabled"),value:"disabled"},{label:i("Enabled"),value:"enabled"}],a=u=>{o(I(f({},t),{fields:u}))},c=u=>{o(I(f({},t),{state:u}))};return(0,import_jsx_runtime.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"12px"},children:[(0,import_jsx_runtime.jsxs)("div",{children:[(0,import_jsx_runtime.jsx)("div",{style:{marginBottom:"4px",fontSize:"14px"},children:i("Fields")}),(0,import_jsx_runtime.jsx)(import_antd.Select,{mode:"multiple",value:t.fields,onChange:a,placeholder:i("Please select fields"),style:{width:"100%"},options:n,showSearch:!0,filterOption:(u,d)=>{var m;return((m=d==null?void 0:d.label)!=null?m:"").toLowerCase().includes(u.toLowerCase())},allowClear:!0})]}),(0,import_jsx_runtime.jsxs)("div",{children:[(0,import_jsx_runtime.jsx)("div",{style:{marginBottom:"4px",fontSize:"14px"},children:i("State")}),(0,import_jsx_runtime.jsx)(import_antd.Select,{value:t.state,onChange:c,placeholder:i("Please select state"),style:{width:"100%"},options:l,allowClear:!0})]})]})}}},handler:(e,{value:t,setProps:o})=>{const{fields:r,state:i}=t||{};!r||!Array.isArray(r)||!i||r.forEach(n=>{var l,a,c,u;try{const d=(((u=(c=(a=(l=e.model)==null?void 0:l.subModels)==null?void 0:a.grid)==null?void 0:c.subModels)==null?void 0:u.items)||[]).find(m=>m.uid===n);if(d){let m={};switch(i){case"visible":m={hiddenModel:!1};break;case"hidden":m={hiddenModel:!0};break;case"hiddenReservedValue":m={hidden:!0};break;case"required":m={required:!0};break;case"notRequired":m={required:!1};break;case"disabled":m={disabled:!0};break;case"enabled":m={disabled:!1};break;default:console.warn(`Unknown state: ${i}`);return}o(d,m)}}catch(d){console.warn(`Failed to set props for field ${n}:`,d)}})}}),linkageSetDetailsFieldProps=(0,import_flow_engine.defineAction)({name:"linkageSetDetailsFieldProps",title:(0,import_flow_engine.escapeT)("Set field state"),scene:import_flow_engine.ActionScene.DETAILS_FIELD_LINKAGE_RULES,sort:100,uiSchema:{value:{type:"object","x-component":e=>{const{value:t={fields:[]},onChange:o}=e,r=(0,import_flow_engine.useFlowContext)(),i=r.model.translate.bind(r.model),n=getFormFields(r),l=[{label:i("Visible"),value:"visible"},{label:i("Hidden"),value:"hidden"},{label:i("Hidden (reserved value)"),value:"hiddenReservedValue"}],a=u=>{o(I(f({},t),{fields:u}))},c=u=>{o(I(f({},t),{state:u}))};return(0,import_jsx_runtime.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"12px"},children:[(0,import_jsx_runtime.jsxs)("div",{children:[(0,import_jsx_runtime.jsx)("div",{style:{marginBottom:"4px",fontSize:"14px"},children:i("Fields")}),(0,import_jsx_runtime.jsx)(import_antd.Select,{mode:"multiple",value:t.fields,onChange:a,placeholder:i("Please select fields"),style:{width:"100%"},options:n,showSearch:!0,filterOption:(u,d)=>{var m;return((m=d==null?void 0:d.label)!=null?m:"").toLowerCase().includes(u.toLowerCase())},allowClear:!0})]}),(0,import_jsx_runtime.jsxs)("div",{children:[(0,import_jsx_runtime.jsx)("div",{style:{marginBottom:"4px",fontSize:"14px"},children:i("State")}),(0,import_jsx_runtime.jsx)(import_antd.Select,{value:t.state,onChange:c,placeholder:i("Please select state"),style:{width:"100%"},options:l,allowClear:!0})]})]})}}},handler:(e,{value:t,setProps:o})=>{const{fields:r,state:i}=t||{};!r||!Array.isArray(r)||!i||r.forEach(n=>{var l,a,c,u;try{const d=(((u=(c=(a=(l=e.model)==null?void 0:l.subModels)==null?void 0:a.grid)==null?void 0:c.subModels)==null?void 0:u.items)||[]).find(m=>m.uid===n);if(d){let m={};switch(i){case"visible":m={hiddenModel:!1};break;case"hidden":m={hiddenModel:!0};break;case"hiddenReservedValue":m={hidden:!0};break;default:console.warn(`Unknown state: ${i}`);return}o(d,m)}}catch(d){console.warn(`Failed to set props for field ${n}:`,d)}})}}),linkageAssignField=(0,import_flow_engine.defineAction)({name:"linkageAssignField",title:(0,import_flow_engine.escapeT)("Field assignment"),scene:import_flow_engine.ActionScene.FIELD_LINKAGE_RULES,sort:200,uiSchema:{value:{type:"object","x-component":e=>{const{value:t={field:void 0,assignValue:void 0},onChange:o}=e,r=(0,import_flow_engine.useFlowContext)(),i=r.model.translate.bind(r.model),n=getFormFields(r),l=t.field,a=c=>{const u=c,d=u!==l;o(I(f({},t),{field:u,assignValue:d?void 0:t.assignValue}))};return(0,import_jsx_runtime.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"12px"},children:[(0,import_jsx_runtime.jsxs)("div",{children:[(0,import_jsx_runtime.jsx)("div",{style:{marginBottom:"4px",fontSize:"14px"},children:i("Field")}),(0,import_jsx_runtime.jsx)(import_antd.Select,{value:l,onChange:a,placeholder:i("Please select field"),style:{width:"100%"},options:n,showSearch:!0,filterOption:(c,u)=>{var d;return((d=u==null?void 0:u.label)!=null?d:"").toLowerCase().includes(c.toLowerCase())},allowClear:!0})]}),l&&(0,import_jsx_runtime.jsxs)("div",{children:[(0,import_jsx_runtime.jsx)("div",{style:{marginBottom:"4px",fontSize:"14px"},children:i("Assign value")}),(0,import_jsx_runtime.jsx)(FieldAssignValueInput,{fieldUid:l,value:t.assignValue,onChange:c=>o(I(f({},t),{assignValue:c}))},l)]})]})}}},handler:(e,{value:t,setProps:o})=>{var r,i,n,l;const{assignValue:a,field:c}=t||{};if(c)try{const u=(((l=(n=(i=(r=e.model)==null?void 0:r.subModels)==null?void 0:i.grid)==null?void 0:n.subModels)==null?void 0:l.items)||[]).find(d=>d.uid===c);if(!u)return;if(typeof a>"u"){o(u,{});return}o(u,{value:a})}catch(u){console.warn(`Failed to assign value to field ${c}:`,u)}}}),linkageRunjs=(0,import_flow_engine.defineAction)({name:"linkageRunjs",title:(0,import_flow_engine.escapeT)("Execute JavaScript"),scene:[import_flow_engine.ActionScene.BLOCK_LINKAGE_RULES,import_flow_engine.ActionScene.FIELD_LINKAGE_RULES,import_flow_engine.ActionScene.ACTION_LINKAGE_RULES,import_flow_engine.ActionScene.DETAILS_FIELD_LINKAGE_RULES],sort:300,uiSchema:{value:{type:"object","x-component":e=>{const{value:t={script:""},onChange:o}=e,r=i=>{o(I(f({},t),{script:i}))};return(0,import_jsx_runtime.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:"12px"},children:(0,import_jsx_runtime.jsx)("div",{children:(0,import_jsx_runtime.jsx)(CodeEditor,{value:t.script,onChange:r,height:"200px",enableLinter:!0,scene:"linkage"})})})}}},handler:(e,{value:t})=>{var o;const{script:r}=t||{};if(!(!r||typeof r!="string"))try{e.runjs(r)}catch(i){console.error("Script execution error:",i),(o=e.app)!=null&&o.message&&e.app.message.error(`Script execution error: ${i.message}`)}}}),LinkageRulesUI=(0,import_react.observer)(e=>{const{value:t,supportedActions:o}=e,r=(0,import_flow_engine.useFlowContext)(),i=(0,import_flow_engine.useFlowEngine)(),n=r.model.translate.bind(r.model),l=()=>({key:(0,import_shared.uid)(),title:n("Linkage rule"),enable:!0,condition:{logic:"$and",items:[]},actions:[]}),a=()=>{t.push(l())},c=b=>{t.splice(b,1)},u=b=>{if(b>0){const S=t[b];t.splice(b,1),t.splice(b-1,0,S)}},d=b=>{if(b<t.length-1){const S=t[b];t.splice(b,1),t.splice(b+1,0,S)}},m=b=>{const S=t[b],F=I(f({},S),{key:(0,import_shared.uid)(),title:`${S.title} (Copy)`});t.splice(b+1,0,F)},p=(b,S)=>{t[b].title=S},h=(b,S)=>{t[b].enable=S},g=()=>o.map(b=>r.getAction(b)),x=(b,S)=>{const F={key:(0,import_shared.uid)(),name:S,params:void 0};t[b].actions.push(F)},_=(b,S)=>{t[b].actions.splice(S,1)},v=(b,S,F)=>{t[b].actions[S].params=F},C=(b,S)=>(0,import_jsx_runtime.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",width:"100%"},children:[(0,import_jsx_runtime.jsx)("div",{style:{flex:1,marginRight:16},children:(0,import_jsx_runtime.jsx)(import_antd.Input,{value:b.title,onChange:F=>p(S,F.target.value),onClick:F=>F.stopPropagation(),placeholder:"Enter rule title"})}),(0,import_jsx_runtime.jsxs)(import_antd.Space,{onClick:F=>F.stopPropagation(),children:[(0,import_jsx_runtime.jsx)(import_antd.Tooltip,{title:"Delete",children:(0,import_jsx_runtime.jsx)(import_antd.Button,{type:"text",size:"small",icon:(0,import_jsx_runtime.jsx)(import_icons.DeleteOutlined,{}),onClick:()=>c(S)})}),(0,import_jsx_runtime.jsx)(import_antd.Tooltip,{title:"Move up",children:(0,import_jsx_runtime.jsx)(import_antd.Button,{type:"text",size:"small",icon:(0,import_jsx_runtime.jsx)(import_icons.ArrowUpOutlined,{}),onClick:()=>u(S),disabled:S===0})}),(0,import_jsx_runtime.jsx)(import_antd.Tooltip,{title:"Move down",children:(0,import_jsx_runtime.jsx)(import_antd.Button,{type:"text",size:"small",icon:(0,import_jsx_runtime.jsx)(import_icons.ArrowDownOutlined,{}),onClick:()=>d(S),disabled:S===t.length-1})}),(0,import_jsx_runtime.jsx)(import_antd.Tooltip,{title:"Copy",children:(0,import_jsx_runtime.jsx)(import_antd.Button,{type:"text",size:"small",icon:(0,import_jsx_runtime.jsx)(import_icons.CopyOutlined,{}),onClick:()=>m(S)})}),(0,import_jsx_runtime.jsx)(import_antd.Switch,{size:"small",checked:b.enable,onChange:F=>h(S,F),checkedChildren:n("Enable"),unCheckedChildren:n("Disable")})]})]}),y=t.map((b,S)=>({key:b.key,label:C(b,S),styles:{header:{display:"flex",alignItems:"center"}},children:(0,import_jsx_runtime.jsxs)("div",{children:[(0,import_jsx_runtime.jsxs)("div",{style:{marginBottom:32},children:[(0,import_jsx_runtime.jsxs)("div",{style:{display:"flex",alignItems:"center",marginBottom:16,paddingBottom:8,borderBottom:"1px solid #f0f0f0"},children:[(0,import_jsx_runtime.jsx)("div",{style:{width:"4px",height:"16px",backgroundColor:"#1890ff",borderRadius:"2px",marginRight:8}}),(0,import_jsx_runtime.jsx)("h4",{style:{margin:0,fontSize:14,fontWeight:500,color:"#262626"},children:n("Condition")})]}),(0,import_jsx_runtime.jsx)("div",{style:{paddingLeft:12},children:(0,import_jsx_runtime.jsx)(FilterGroup,{value:b.condition,FilterItem:F=>(0,import_jsx_runtime.jsx)(LinkageFilterItem,{model:r.model,value:F.value})})})]}),(0,import_jsx_runtime.jsxs)("div",{children:[(0,import_jsx_runtime.jsxs)("div",{style:{display:"flex",alignItems:"center",marginBottom:16,paddingBottom:8,borderBottom:"1px solid #f0f0f0"},children:[(0,import_jsx_runtime.jsx)("div",{style:{width:"4px",height:"16px",backgroundColor:"#52c41a",borderRadius:"2px",marginRight:8}}),(0,import_jsx_runtime.jsx)("h4",{style:{margin:0,fontSize:14,fontWeight:500,color:"#262626"},children:n("Actions")})]}),(0,import_jsx_runtime.jsxs)("div",{style:{paddingLeft:12},children:[b.actions.length>0?(0,import_jsx_runtime.jsx)("div",{style:{marginBottom:16},children:b.actions.map((F,j)=>{const P=r.getAction(F.name);return P?(0,import_jsx_runtime.jsxs)("div",{style:{border:"1px solid #f0f0f0",borderRadius:"6px",padding:"12px",marginBottom:"8px"},children:[(0,import_jsx_runtime.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"8px"},children:[(0,import_jsx_runtime.jsxs)("span",{style:{fontWeight:500,color:"#262626"},children:[n(P.title),(0,import_jsx_runtime.jsx)("span",{style:{marginInlineStart:2,marginInlineEnd:8},children:":"})]}),(0,import_jsx_runtime.jsx)(import_antd.Tooltip,{title:"Delete action",children:(0,import_jsx_runtime.jsx)(import_antd.Button,{type:"text",size:"small",icon:(0,import_jsx_runtime.jsx)(import_icons.DeleteOutlined,{}),onClick:()=>_(S,j)})})]}),(0,import_jsx_runtime.jsx)("div",{children:i.flowSettings.renderStepForm({uiSchema:P.uiSchema,initialValues:F.params,flowEngine:i,onFormValuesChange:T=>v(S,j,T.values)})})]},F.key):null})}):null,(0,import_jsx_runtime.jsx)(import_antd.Dropdown,{menu:{items:g().map(F=>({key:F.name,label:n(F.title||F.name),onClick:()=>x(S,F.name)}))},trigger:["hover"],children:(0,import_jsx_runtime.jsx)(import_antd.Button,{type:"link",icon:(0,import_jsx_runtime.jsx)(import_icons.PlusOutlined,{}),style:{padding:0,height:"auto",textAlign:"left"},children:n("Add action")})})]})]})]})}));return(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[t.length>0?(0,import_jsx_runtime.jsx)(import_antd.Collapse,{items:y,size:"small",style:{marginBottom:8},defaultActiveKey:t.length>0?[t[0].key]:[],accordion:!0}):(0,import_jsx_runtime.jsx)("div",{style:{border:"1px dashed #d9d9d9",borderRadius:"6px",backgroundColor:"#fafafa",marginBottom:"8px"},children:(0,import_jsx_runtime.jsx)(import_antd.Empty,{description:n("No linkage rules"),style:{margin:"20px 0"}})}),(0,import_jsx_runtime.jsx)(import_antd.Button,{type:"dashed",icon:(0,import_jsx_runtime.jsx)(import_icons.PlusOutlined,{}),onClick:a,style:{width:"100%"},children:n("Add linkage rule")})]})}),commonLinkageRulesHandler=(e,t)=>E(void 0,null,function*(){const o=(n,l,a)=>l?e.app.jsonLogic.apply({[l]:[n,a]}):!0,r=t.value,i=e.model.__allModels||(e.model.__allModels=[]);i.forEach(n=>{n.__props={}}),r.filter(n=>n.enable).forEach(n=>{const{condition:l,actions:a}=n;(0,import_client.evaluateConditions)(l,o)&&a.forEach(c=>{var u;const d=(m,p)=>{m.__originalProps||(m.__originalProps=f({hiddenModel:m.hidden,disabled:void 0,required:void 0,hidden:void 0},m.props)),m.__props||(m.__props={}),m.__props=f(f({},m.__props),p),i.indexOf(m)===-1&&i.push(m)};(u=e.getAction(c.name))==null||u.handler(e,I(f({},c.params),{setProps:d}))})}),i.forEach(n=>{const l=f(f({},n.__originalProps),n.__props);n.setProps(import_lodash.default.omit(l,["hiddenModel","value"])),n.hidden=!!l.hiddenModel,"value"in l&&n.context.form&&n.context.form.setFieldValue(n.props.name,l.value),n.__props=null})}),blockLinkageRules=(0,import_flow_engine.defineAction)({name:"blockLinkageRules",title:(0,import_flow_engine.escapeT)("Block linkage rules"),uiMode:"embed",uiSchema(e){return{value:{type:"array","x-component":LinkageRulesUI,"x-component-props":{supportedActions:getSupportedActions(e,import_flow_engine.ActionScene.BLOCK_LINKAGE_RULES),title:(0,import_flow_engine.escapeT)("Block linkage rules")}}}},defaultParams:{value:[]},handler:commonLinkageRulesHandler}),actionLinkageRules=(0,import_flow_engine.defineAction)({name:"actionLinkageRules",title:(0,import_flow_engine.escapeT)("Linkage rules"),uiMode:"embed",uiSchema(e){return{value:{type:"array","x-component":LinkageRulesUI,"x-component-props":{supportedActions:getSupportedActions(e,import_flow_engine.ActionScene.ACTION_LINKAGE_RULES),title:(0,import_flow_engine.escapeT)("Linkage rules")}}}},defaultParams:{value:[]},handler:commonLinkageRulesHandler}),fieldLinkageRules=(0,import_flow_engine.defineAction)({name:"fieldLinkageRules",title:(0,import_flow_engine.escapeT)("Field linkage rules"),uiMode:"embed",uiSchema(e){return{value:{type:"array","x-component":LinkageRulesUI,"x-component-props":{supportedActions:getSupportedActions(e,import_flow_engine.ActionScene.FIELD_LINKAGE_RULES),title:(0,import_flow_engine.escapeT)("Field linkage rules")}}}},defaultParams:{value:[]},handler:(e,t)=>{e.model.hidden||commonLinkageRulesHandler(e,t)}}),detailsFieldLinkageRules=(0,import_flow_engine.defineAction)({name:"detailsFieldLinkageRules",title:(0,import_flow_engine.escapeT)("Field linkage rules"),uiMode:"embed",uiSchema(e){return{value:{type:"array","x-component":LinkageRulesUI,"x-component-props":{supportedActions:getSupportedActions(e,import_flow_engine.ActionScene.DETAILS_FIELD_LINKAGE_RULES),title:(0,import_flow_engine.escapeT)("Field linkage rules")}}}},defaultParams:{value:[]},handler:(e,t)=>{e.model.hidden||commonLinkageRulesHandler(e,t)}});function getSupportedActions(e,t){return[...e.getActions().values()].filter(o=>{let r=o.scene;return r?(Array.isArray(r)||(r=[r]),r.includes(t)):!1}).sort((o,r)=>(o.sort||0)-(r.sort||0)).map(o=>o.name)}const overflowMode=(0,import_flow_engine.defineAction)({name:"overflowMode",title:(0,import_flow_engine.escapeT)("Content overflow display mode"),uiSchema(e){return{overflowMode:{"x-component":"Select","x-decorator":"FormItem",enum:[{label:(0,import_flow_engine.escapeT)("Ellipsis"),value:"ellipsis"},{label:(0,import_flow_engine.escapeT)("Wrap"),value:"wrap"}]}}},defaultParams:{overflowMode:"ellipsis"},handler(e,t){e.model.setProps({overflowMode:t.overflowMode})}}),actions=Object.freeze(Object.defineProperty({__proto__:null,aclCheck,actionLinkageRules,blockLinkageRules,confirm:confirm$1,dataLoadingMode,dataScope,dateTimeFormat,detailsFieldLinkageRules,displayFieldComponent,fieldComponent,fieldLinkageRules,layout,linkageAssignField,linkageRunjs,linkageSetActionProps,linkageSetBlockProps,linkageSetDetailsFieldProps,linkageSetFieldProps,openView,overflowMode,pattern,renderMode,required,runjs,sortingRule,titleField,validation},Symbol.toStringTag,{value:"Module"}));class FieldModel extends import_flow_engine.FlowModel{}class AssociationFieldModel extends FieldModel{}AssociationFieldModel.registerFlow({key:"AssociationFieldInit",sort:800,steps:{init:{handler(e,t){return E(this,null,function*(){e.model.updateAssociation&&e.model.context.blockModel.context.resource.addUpdateAssociationValues(e.model.parent.fieldPath)})}}}});function toValue$2(e,t,o=!1){if(!e)return o?[]:void 0;const{value:r}=t,i=n=>{if(!(typeof n!="object"||n===null||n==null))return{label:(0,import_jsx_runtime.jsx)(LabelByField,{option:n,fieldNames:t}),value:n[r]}};return o?Array.isArray(e)?e.map(i).filter(Boolean):[]:i(e)}function LabelByField(e){const{option:t,fieldNames:o}=e,r=(0,import_flow_engine.useFlowModel)(),i=r.subModels.field,n=t[o.value],l=i.createFork({},n);l.context.defineProperty("record",{get:()=>t,meta:(0,import_flow_engine.createCurrentRecordMetaFactory)(l.context,()=>l.context.collection)});const a=(t==null?void 0:t[o.label])||t.label,c=r.context.collectionField.targetCollection.getField(o.label);return l.setProps(f({value:a,clickToOpen:!1},c.getComponentProps())),(0,import_jsx_runtime.jsx)("span",{style:{pointerEvents:"none"},children:a?l.render():"N/A"},n)}function LazySelect(e){const t=e,{fieldNames:o,value:r,multiple:i,allowMultiple:n,options:l=[]}=t,a=W(t,["fieldNames","value","multiple","allowMultiple","options"]),c=i&&n,u=l&&l.length?l:c?Array.isArray(r)?r.filter(Boolean):[]:r?[r]:[];return(0,import_jsx_runtime.jsx)(import_antd.Select,I(f({},a),{allowClear:!0,showSearch:!0,maxTagCount:"responsive",filterOption:!1,labelInValue:!0,fieldNames:o,options:u,value:toValue$2(r,o,c),mode:c?"multiple":void 0,onChange:(d,m)=>{e.onChange(m)},optionRender:({data:d})=>(0,import_jsx_runtime.jsx)(LabelByField,{option:d,fieldNames:o})}))}class RecordSelectFieldModel extends AssociationFieldModel{get collectionField(){return this.context.collectionField}onInit(t){super.onInit(t),this.context.defineProperty("collection",{get:()=>{var o;return(o=this.context.collectionField)==null?void 0:o.targetCollection},meta:(0,import_flow_engine.createCollectionContextMeta)(()=>{var o;return(o=this.context.collectionField)==null?void 0:o.targetCollection},this.context.t("Current collection"))})}set onPopupScroll(t){this.setProps({onPopupScroll:t})}set onDropdownVisibleChange(t){this.setProps({onDropdownVisibleChange:t})}set onSearch(t){this.setProps({onSearch:t})}setDataSource(t){this.setProps({options:t})}getDataSource(){return this.props.options}getFilterValue(){var t;const o=this.props.fieldNames||{label:"label",value:"value"};return Array.isArray(this.props.value)?this.props.value.map(r=>r[o.value]):(t=this.props.value)==null?void 0:t[o.value]}render(){return(0,import_jsx_runtime.jsx)(LazySelect,f({},this.props))}}const paginationState={page:1,pageSize:40,loading:!1,hasMore:!0};RecordSelectFieldModel.registerFlow({key:"eventSettings",sort:900,steps:{bindEvent:{handler(e,t){const o=e.model.props.fieldNames.label;e.model.onDropdownVisibleChange=r=>{r?e.model.dispatchEvent("dropdownOpen",{apiClient:e.app.apiClient,form:e.model.context.form}):(e.model.resource.removeFilterGroup(o),paginationState.page=1)},e.model.onPopupScroll=r=>{e.model.dispatchEvent("popupScroll",{event:r,apiClient:e.app.apiClient})},e.model.onSearch=r=>{e.model.dispatchEvent("search",{searchText:r,apiClient:e.app.apiClient})}}}}});RecordSelectFieldModel.registerFlow({key:"dropdownOpenSettings",on:"dropdownOpen",steps:{setScope:{handler(e,t){return E(this,null,function*(){const o=e.model.props.fieldNames.value,r=e.model.resource,i=e.model.getDataSource();r.setPage(1),yield r.refresh();const{count:n}=r.getMeta(),l=r.getData();i&&n===i.length&&l[0][o]===i[0][o]||(e.model.setDataSource(l),l.length<paginationState.pageSize?paginationState.hasMore=!1:(paginationState.hasMore=!0,paginationState.page++))})}}}});RecordSelectFieldModel.registerFlow({key:"popupScrollSettings",on:"popupScroll",steps:{step1:{handler(e,t){return E(this,null,function*(){var o;const r=(o=e.inputArgs)==null?void 0:o.event,{scrollTop:i,scrollHeight:n,clientHeight:l}=r.target;if(!(i+l<n-20)&&!(paginationState.loading||!paginationState.hasMore)){paginationState.loading=!0;try{const a=e.model.resource;a.setPage(paginationState.page),yield a.refresh();const c=a.getData(),u=e.model.getDataSource()||[];e.model.setDataSource([...u,...c]),c.length<paginationState.pageSize?(paginationState.hasMore=!1,paginationState.page=1):paginationState.page++}catch(a){console.error("Scroll pagination request failed:",a)}finally{paginationState.loading=!1}}})}}}});RecordSelectFieldModel.registerFlow({key:"searchSettings",on:"search",steps:{step1:{handler(e,t){return E(this,null,function*(){var o,r,i,n;try{const l=e.model.collectionField.targetCollection,a=e.model.props.fieldNames.label,c=l.getField(a),u=e.app.dataSourceManager.collectionFieldInterfaceManager.getFieldInterface(c.options.interface),d=((i=(r=(o=u==null?void 0:u.filterable)==null?void 0:o.operators)==null?void 0:r[0])==null?void 0:i.value)||"$includes",m=(n=e.inputArgs.searchText)==null?void 0:n.trim(),p=e.model.resource,h=`${a}.${d}`;m===""?p.removeFilterGroup(a):(p.setPage(1),p.addFilterGroup(a,{[h]:m})),yield p.refresh();const g=p.getData();e.model.setDataSource(g),g.length<paginationState.pageSize?paginationState.hasMore=!1:(paginationState.hasMore=!0,paginationState.page++)}catch(l){console.error("AssociationSelectField search flow error:",l),e.model.setDataSource([])}})}}}});RecordSelectFieldModel.registerFlow({key:"recordSelectSettings",sort:200,steps:{init:{handler(e){const t=e.createResource(import_flow_engine.MultiRecordResource),o=e.model.context.collectionField,{target:r,dataSourceKey:i}=o;if(t.setDataSourceKey(i),t.setResourceName(r),t.setPageSize(paginationState.pageSize),["oho","o2m"].includes(o.interface)){const n=`${o.foreignKey}.$is`;t.addFilterGroup(o.name,{[n]:null})}e.model.resource=t}}}});RecordSelectFieldModel.registerFlow({key:"selectSettings",title:(0,import_flow_engine.escapeT)("Association select settings"),sort:800,steps:{fieldNames:{use:"titleField"},dataScope:{use:"dataScope"},sortingRule:{use:"sortingRule"},allowMultiple:{title:(0,import_flow_engine.escapeT)("Allow multiple"),uiSchema(e){return e.collectionField&&["belongsToMany","hasMany","belongsToArray"].includes(e.collectionField.type)?{allowMultiple:{"x-component":"Switch",type:"boolean","x-decorator":"FormItem"}}:null},defaultParams(e){return{allowMultiple:e.collectionField&&["belongsToMany","hasMany","belongsToArray"].includes(e.model.context.collectionField.type)}},handler(e,t){e.model.setProps({allowMultiple:t==null?void 0:t.allowMultiple})}}}});RecordSelectFieldModel.define({label:(0,import_flow_engine.escapeT)("Select")});import_flow_engine.EditableItemModel.bindModelToInterface("RecordSelectFieldModel",["m2m","m2o","o2o","o2m","oho","obo","updatedBy","createdBy","mbm"],{isDefault:!0});import_flow_engine.FilterableItemModel.bindModelToInterface("RecordSelectFieldModel",["m2m","m2o","o2o","o2m","oho","obo","updatedBy","createdBy","mbm"],{isDefault:!0});const ConditionBuilder=(0,import_flow_engine.observer)(e=>{const t=(0,import_flow_engine.useFlowContext)();return(0,import_jsx_runtime.jsx)(FilterGroup,{value:e.value||{logic:"$and",items:[]},FilterItem:o=>(0,import_jsx_runtime.jsx)(LinkageFilterItem,{model:t.model,value:o.value}),onChange:e.onChange})}),commonConditionHandler=(e,t)=>{const{condition:o={logic:"$and",items:[]}}=t;(0,import_client.evaluateConditions)(o,(r,i,n)=>e.app.jsonLogic.apply({[i]:[r,n]}))||e.exit()},ActionSceneEnum={collection:"collection",record:"record",all:["collection","record"],both:["collection","record"]};class ActionModel extends import_flow_engine.FlowModel{constructor(){super(...arguments),k(this,"defaultProps",{type:"default",title:(0,import_flow_engine.escapeT)("Action")}),k(this,"enableEditTitle",!0),k(this,"enableEditIcon",!0),k(this,"enableEditType",!0),k(this,"enableEditDanger",!0)}static _getScene(){return import_lodash.default.castArray(this.scene||[])}static _isScene(t){return this._getScene().includes(t)}getAclActionName(){return"view"}onInit(t){super.onInit(t),this.context.defineProperty("actionName",{get:()=>this.getAclActionName(),cache:!1})}getInputArgs(){const t={};if(this.context.resource){const o=this.context.resource.getSourceId();o&&(t.sourceId=o)}if(this.context.collection&&this.context.record){const o=this.context.collection.getFilterByTK(this.context.record);o&&(t.filterByTk=o)}return t}onClick(t){this.dispatchEvent("click",f({event:t},this.getInputArgs()))}render(){const t=this.props,o=t.icon?(0,import_jsx_runtime.jsx)(Icon,{type:t.icon}):void 0;return(0,import_jsx_runtime.jsx)(import_antd.Button,I(f({},t),{onClick:this.onClick.bind(this),icon:o,children:t.children||t.title}))}renderHiddenInConfig(){return(0,import_jsx_runtime.jsx)(import_antd.Tooltip,{title:this.context.t("当前按钮已被隐藏,你无法点击(该内容仅在激活 UI Editor 时显示)。"),children:(0,import_jsx_runtime.jsx)(import_antd.Button,{type:this.props.type,disabled:!0,icon:(0,import_jsx_runtime.jsx)(import_icons.LockOutlined,{})})})}}ActionModel.registerFlow({key:"buttonSettings",title:(0,import_flow_engine.escapeT)("Button settings"),sort:-999,steps:{general:{title:(0,import_flow_engine.escapeT)("Edit button"),uiSchema(e){return{title:e.model.enableEditTitle?{"x-decorator":"FormItem","x-component":"Input",title:(0,import_flow_engine.escapeT)("Button title")}:void 0,icon:e.model.enableEditIcon?{"x-decorator":"FormItem","x-component":"IconPicker",title:(0,import_flow_engine.escapeT)("Button icon")}:void 0,type:e.model.enableEditType?{"x-decorator":"FormItem","x-component":"Radio.Group",title:(0,import_flow_engine.escapeT)("Button type"),enum:[{value:"default",label:'{{t("Default")}}'},{value:"primary",label:'{{t("Primary")}}'},{value:"dashed",label:'{{t("Dashed")}}'},{value:"link",label:'{{t("Link")}}'},{value:"text",label:'{{t("Text")}}'}]}:void 0,danger:e.model.enableEditDanger?{"x-decorator":"FormItem","x-component":"Switch",title:(0,import_flow_engine.escapeT)("Danger action")}:void 0}},defaultParams(e){return e.model.defaultProps},handler(e,t){const o=t,{title:r}=o,i=W(o,["title"]);e.model.setProps(f({title:e.t(r)},i))}},aclCheck:{use:"aclCheck"},linkageRules:{use:"actionLinkageRules"}}});ActionModel.registerEvents({click:{title:(0,import_flow_engine.escapeT)("Click"),name:"click",uiSchema:{condition:{type:"object",title:(0,import_flow_engine.escapeT)("Trigger condition"),"x-decorator":"FormItem","x-component":ConditionBuilder}},handler:commonConditionHandler}});class ActionGroupModel extends import_flow_engine.FlowModel{static getAllParentClasses(){const t=[];let o=this;for(;o&&o!==Object;)o=Object.getPrototypeOf(o),o!=null&&o.currentModels&&t.push(o);return t}static get currentModels(){return(!Object.prototype.hasOwnProperty.call(this,"_models")||!this._models)&&(this._models=new Map),this._models}static get models(){const t=new Map,o=this.getAllParentClasses();for(const r of o)for(const[i,n]of r.currentModels)t.set(i,n);for(const[r,i]of this.currentModels)t.set(r,i);return t}static registerActionModels(t){for(const[o,r]of Object.entries(t))Object.defineProperty(r,"name",{value:o}),this.currentModels.set(o,r)}static defineChildren(t){return E(this,null,function*(){const o=this.baseClass?yield(0,import_flow_engine.buildSubModelItems)(this.baseClass)(t):[],r=[],i=o.filter(n=>this.scene?t.engine.getModelClass(n.useModel)._isScene(this.scene):!0);for(const[n,l]of this.models){if(i.find(c=>c.useModel===l.name))continue;const a=(0,import_flow_engine.buildSubModelItem)(l,t);a&&r.push(a)}return import_lodash.default.sortBy([...i,...r],"sort")})}}k(ActionGroupModel,"baseClass"),k(ActionGroupModel,"scene"),k(ActionGroupModel,"_models");class CollectionActionGroupModel extends ActionGroupModel{}k(CollectionActionGroupModel,"baseClass",ActionModel),k(CollectionActionGroupModel,"scene",ActionSceneEnum.collection);class RecordActionGroupModel extends ActionGroupModel{}k(RecordActionGroupModel,"baseClass",ActionModel),k(RecordActionGroupModel,"scene",ActionSceneEnum.record);class AssociationFieldGroupModel extends import_flow_engine.FlowModel{static defineChildren(t){const o=this.itemModelName,r=(i,n="")=>i.getToOneAssociationFields().map(l=>{const a=n?`${n}.${l.name}`:l.name;return{key:`${a}-assocationField`,label:l.title,children:()=>[{key:`${a}-children-collectionField`,label:"Display collection fields",type:"group",children:l.targetCollection.getFields().map(c=>{const u=`${a}.${c.name}`,d=import_flow_engine.DisplayItemModel.getDefaultBindingByField(t,c,{fallbackToTargetTitleField:!0});if(!d)return;const m=d.modelName;return{key:`c-${a}.${c.name}`,label:c.title,useModel:o,toggleable:p=>{var h;return((h=p.getStepParams("fieldSettings","init"))==null?void 0:h.fieldPath)===u},createModelOptions:{stepParams:{fieldSettings:{init:{dataSourceKey:t.collection.dataSourceKey,collectionName:t.collection.name,fieldPath:u,associationPathName:a}}},subModels:{field:{use:m}}}}}).filter(Boolean)},{key:`${a}-children-associationField`,label:"Display association fields",type:"group",children:r(l.targetCollection,a)}]}});return r(t.collection)}}k(AssociationFieldGroupModel,"itemModelName","DetailsItemModel");AssociationFieldGroupModel.define({label:'{{t("Display association fields")}}'});function getDefaultOperator(e){var t;return e.operator||((t=e.getStepParams("filterFormItemSettings","defaultOperator"))==null?void 0:t.value)||"$eq"}function isFilterValueEmpty(e){return!!(e==null||typeof e=="string"&&e.trim()===""||Array.isArray(e)&&e.length===0||typeof e=="object"&&e.constructor===Object&&Object.keys(e).length===0)}function getAllDataModels(e){return e.filterSubModels("items",t=>{var o;return!!((o=t.resource)!=null&&o.supportsFilter)})}class FilterManager{constructor(t,o){k(this,"filterConfigs"),k(this,"gridModel"),this.gridModel=t,this.filterConfigs=o||[]}saveFilterConfigs(){return E(this,null,function*(){yield this.gridModel.saveStepParams()})}getFilterConfigs(){return this.filterConfigs}getConnectFieldsConfig(t){const o=this.filterConfigs.filter(r=>r.filterId===t);if(o.length!==0)return{targets:o.map(r=>({targetId:r.targetId,filterPaths:r.filterPaths}))}}saveConnectFieldsConfig(t,o){return E(this,null,function*(){const r=o.targets.map(n=>({filterId:t,targetId:n.targetId,filterPaths:n.filterPaths})),i=this.filterConfigs.filter(n=>n.filterId!==t);this.filterConfigs=[],this.filterConfigs.push(...i,...r),yield this.saveFilterConfigs()})}addFilterConfig(t){return E(this,null,function*(){if(!t.filterId||!t.targetId){console.error("FilterConfig must have filterId, targetId, and operator");return}if(!Array.isArray(t.filterPaths)||t.filterPaths.length===0){console.error("FilterConfig must have non-empty filterPaths array");return}const o=this.filterConfigs.findIndex(r=>r.filterId===t.filterId&&r.targetId===t.targetId);o>=0?this.filterConfigs[o]=f({},t):this.filterConfigs.push(f({},t)),yield this.saveFilterConfigs()})}removeFilterConfig(t){return E(this,arguments,function*({filterId:o,targetId:r,persist:i=!0}){if(!o&&!r)return console.error("At least one of filterId or targetId must be provided"),0;const n=this.filterConfigs.length;this.filterConfigs=this.filterConfigs.filter(a=>o&&r?!(a.filterId===o&&a.targetId===r):o?a.filterId!==o:r?a.targetId!==r:!0);const l=n-this.filterConfigs.length;return l>0&&i&&(yield this.saveFilterConfigs()),l})}bindToTarget(t){if(!t||typeof t!="string"){console.error("targetId must be a non-empty string");return}const o=this.gridModel.flowEngine.getModel(t);if(!o){console.error(`Target model with uid "${t}" not found`);return}if(!o.resource||typeof o.resource.addFilterGroup!="function"){console.error(`Target model with uid "${t}" does not have a valid resource with addFilterGroup method`);return}if(typeof o.resource.removeFilterGroup!="function"){console.error(`Target model with uid "${t}" does not have a valid resource with removeFilterGroup method`);return}const r=this.filterConfigs.filter(i=>i.targetId===t);r.length!==0&&r.forEach(i=>{const n=this.gridModel.flowEngine.getModel(i.filterId);if(!n){console.error(`Filter model with uid "${i.filterId}" not found`);return}if(!n.getFilterValue){console.error(`Filter model with uid "${i.filterId}" does not have getFilterValue method`);return}const l=n.getFilterValue();if(isFilterValueEmpty(l)){try{o.resource.removeFilterGroup(i.filterId)}catch(c){console.error(`Failed to remove filter configuration from target model: ${c.message}`);return}return}const a=i.filterPaths.map(c=>({path:c,operator:i.operator||getDefaultOperator(n),value:l}));try{if(a.length===1)o.resource.addFilterGroup(i.filterId,new import_flow_engine.FilterItem({path:a[0].path,operator:a[0].operator,value:a[0].value}));else if(a.length>1){const c={logic:"$or",items:a};o.resource.addFilterGroup(i.filterId,new import_flow_engine.FilterGroup(c))}}catch(c){console.error(`Failed to bind filter configuration to target model: ${c.message}`);return}})}unbindFromTarget(t){if(!t||typeof t!="string"){console.error("targetId must be a non-empty string");return}const o=this.gridModel.flowEngine.getModel(t);if(!o){console.error(`Target model with uid "${t}" not found`);return}if(!o.resource||typeof o.resource.removeFilterGroup!="function"){console.error(`Target model with uid "${t}" does not have a valid resource with removeFilterGroup method`);return}const r=this.filterConfigs.filter(i=>i.targetId===t);r.length!==0&&r.forEach(i=>{try{o.resource.removeFilterGroup(i.filterId)}catch(n){console.error(`Failed to unbind filter configuration from target model: ${n.message}`);return}})}refreshTargetsByFilter(t){return E(this,null,function*(){if(!t){console.error("filterId must be provided");return}const o=Array.isArray(t)?t:[t];if(o.length===0||o.some(n=>!n||typeof n!="string")){console.error("filterId must be non-empty string(s)");return}const r=this.filterConfigs.filter(n=>o.includes(n.filterId));if(r.length===0)return;const i=[...new Set(r.map(n=>n.targetId))].map(n=>E(this,null,function*(){try{this.bindToTarget(n);const l=this.gridModel.flowEngine.getModel(n);if(!l){console.error(`Target model with uid "${n}" not found`);return}if(!l.resource||typeof l.resource.refresh!="function"){console.error(`Target model with uid "${n}" does not have a valid resource with refresh method`);return}yield l.resource.refresh()}catch(l){console.error(`Failed to refresh target model "${n}": ${l.message}`);return}}));yield Promise.all(i)})}}function Grid({rows:e,sizes:t={},renderItem:o,rowGap:r=16,colGap:i=16,dragOverlayRect:n}){return Object.keys(e||{}).length===0?(0,import_jsx_runtime.jsx)("div",{style:{position:"relative"},"data-grid-empty-container":!0,children:n&&(0,import_jsx_runtime.jsx)(GridDragOverlay,{rect:n})}):(0,import_jsx_runtime.jsxs)("div",{style:{position:"relative",display:"flex",flexDirection:"column",gap:r},children:[n&&(0,import_jsx_runtime.jsx)(GridDragOverlay,{rect:n}),Object.entries(e).map(([l,a])=>{const c=a.length,u=t[l]||[],d=u.some(p=>p!=null&&p!==void 0),m=a.map((p,h)=>{var g;if(d){const x=u.reduce((C,y)=>C+(y||0),0),_=c-u.filter(Boolean).length,v=_>0?(24-x)/_:0;return(g=u[h])!=null?g:v}else return 24/c});return(0,import_jsx_runtime.jsx)(import_antd.Row,{gutter:i,"data-grid-row-id":l,children:a.map((p,h)=>(0,import_jsx_runtime.jsx)(GridColumn,{rowKey:l,columnIndex:h,span:m[h],rowGap:r,cell:p,renderItem:o},`${l}:${p.join("|")||"empty"}`))},l)})]})}const GridColumn=import_react2.default.memo(function e({rowKey:t,columnIndex:o,span:r,rowGap:i,cell:n,renderItem:l}){return(0,import_jsx_runtime.jsx)(import_antd.Col,{span:r,"data-grid-column-row-id":t,"data-grid-column-index":o,children:(0,import_jsx_runtime.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:i},children:n.map((a,c)=>a===import_flow_engine.EMPTY_COLUMN_UID?null:(0,import_jsx_runtime.jsx)("div",{"data-grid-item-row-id":t,"data-grid-column-index":o,"data-grid-item-index":c,"data-grid-item-uid":a,children:l(a)},a))})})});GridColumn.displayName="GridColumn";function GridDragOverlay({rect:e}){const t={position:"absolute",top:e.top,left:e.left,width:e.width,height:e.height,borderRadius:6,pointerEvents:"none",transition:"all 60ms ease-out",zIndex:100},o={column:{border:"2px dashed var(--colorPrimary)",backgroundColor:"rgba(22, 119, 255, 0.08)"},"column-edge":{border:"2px solid var(--colorPrimary)",backgroundColor:"rgba(22, 119, 255, 0.12)"},"row-gap":{border:"2px dashed var(--colorPrimary)",backgroundColor:"rgba(22, 119, 255, 0.05)"},"empty-row":{border:"2px dashed var(--colorPrimary)",backgroundColor:"rgba(22, 119, 255, 0.04)"},"empty-column":{border:"2px dashed var(--colorPrimary)",backgroundColor:"rgba(22, 119, 255, 0.04)"}};return(0,import_jsx_runtime.jsx)("div",{style:f(f({},t),o[e.type])})}const InnerJsonEditor=e=>{var t=e,{value:o,onChange:r,rows:i=10}=t,n=W(t,["value","onChange","rows"]);const[l,a]=(0,import_react2.useState)(()=>o?JSON.stringify(o,null,2):""),[c,u]=(0,import_react2.useState)(null);(0,import_react2.useEffect)(()=>{a(o?JSON.stringify(o,null,2):"")},[o]);const d=m=>{const p=m.target.value;a(p);try{const h=p.trim()?JSON.parse(p):void 0;u(null),r==null||r(h)}catch(h){u(h.message)}};return(0,import_jsx_runtime.jsxs)("div",{children:[(0,import_jsx_runtime.jsx)(import_antd.Input.TextArea,f({value:l,autoSize:{minRows:i,maxRows:i+10},onChange:d},n)),c&&(0,import_jsx_runtime.jsx)(import_antd.Alert,{type:"error",message:c,showIcon:!0,style:{marginTop:8}})]})},JsonEditor=(0,import_react.connect)(InnerJsonEditor),GRID_FLOW_KEY="gridSettings",GRID_STEP="grid",getClientPoint=e=>{if(!e)return null;if(typeof e.clientX=="number"&&typeof e.clientY=="number")return{x:e.clientX,y:e.clientY};if(e.touches&&e.touches.length>0){const t=e.touches[0];return{x:t.clientX,y:t.clientY}}if(e.changedTouches&&e.changedTouches.length>0){const t=e.changedTouches[0];return{x:t.clientX,y:t.clientY}}return null};class GridModel extends import_flow_engine.FlowModel{constructor(){super(...arguments),k(this,"subModelBaseClass","BlockModel"),k(this,"gridContainerRef",import_react2.default.createRef()),k(this,"prevMoveDistance",0),k(this,"itemSettingsMenuLevel",1),k(this,"itemFlowSettings",{}),k(this,"dragOverlayConfig"),k(this,"itemFallback",(0,import_jsx_runtime.jsx)(SkeletonFallback,{})),k(this,"itemExtraToolbarItems",[{key:"drag-handler",component:import_flow_engine.DragHandler,sort:1}]),k(this,"dragState"),k(this,"_memoItemFlowSettings")}getItemFlowSettings(){return this._memoItemFlowSettings||(this._memoItemFlowSettings=f({showBackground:!1,showDragHandle:!0},this.itemFlowSettings)),this._memoItemFlowSettings}onInit(t){super.onInit(t),this.emitter.on("onSubModelAdded",o=>{if(!o.isNew)return;this.resetRows(!0);const r=(0,import_flow_engine.findModelUidPosition)(o.uid,this.props.rows||{});if(r){const i=import_lodash.default.cloneDeep(this.props.sizes||{});i[r.rowId]=[24],this.setStepParams(GRID_FLOW_KEY,GRID_STEP,{rows:this.props.rows||{},sizes:i}),this.setProps("sizes",i)}}),this.emitter.on("onSubModelRemoved",o=>{var r,i,n,l;const a=o.uid,c=(0,import_flow_engine.findModelUidPosition)(a,this.props.rows||{});if(this.resetRows(!0),c){const u=this.props.rows||{},d=import_lodash.default.cloneDeep(this.props.sizes||{});((r=u[c.rowId])==null?void 0:r[c.columnIndex])===void 0&&((i=d[c.rowId])==null||i.splice(c.columnIndex,1)),u[c.rowId]===void 0&&delete d[c.rowId],this.setStepParams(GRID_FLOW_KEY,GRID_STEP,{rows:u,sizes:d}),this.setProps("sizes",d)}(n=this.context.filterManager)==null||n.removeFilterConfig({targetId:a}),(l=this.context.filterManager)==null||l.removeFilterConfig({filterId:a}),this.saveStepParams()}),this.emitter.on("onSubModelMoved",()=>{this.resetRows(!0)}),this.emitter.on("onResizeLeft",({resizeDistance:o,model:r})=>{var i;const n=(0,import_flow_engine.findModelUidPosition)(r.uid,this.props.rows||{}),l=((i=this.gridContainerRef.current)==null?void 0:i.clientWidth)||0,{newRows:a,newSizes:c,moveDistance:u}=recalculateGridSizes({position:n,direction:"left",resizeDistance:o,prevMoveDistance:this.prevMoveDistance,oldRows:this.props.rows||{},oldSizes:this.props.sizes||{},gutter:this.context.themeToken.marginBlock,gridContainerWidth:l});this.prevMoveDistance=u,this.setProps("rows",a),this.setProps("sizes",c)}),this.emitter.on("onResizeRight",({resizeDistance:o,model:r})=>{var i;const n=(0,import_flow_engine.findModelUidPosition)(r.uid,this.props.rows||{}),l=((i=this.gridContainerRef.current)==null?void 0:i.clientWidth)||0,{newRows:a,newSizes:c,moveDistance:u}=recalculateGridSizes({position:n,direction:"right",resizeDistance:o,prevMoveDistance:this.prevMoveDistance,oldRows:this.props.rows||{},oldSizes:this.props.sizes||{},gutter:this.context.themeToken.marginBlock,gridContainerWidth:l});this.prevMoveDistance=u,this.setProps("rows",a),this.setProps("sizes",c)}),this.emitter.on("onResizeBottom",({resizeDistance:o,model:r})=>{}),this.emitter.on("onResizeEnd",()=>{this.prevMoveDistance=0,this.saveGridLayout()})}saveGridLayout(t){var o,r,i,n;const l=(r=(o=t==null?void 0:t.rows)!=null?o:this.props.rows)!=null?r:{},a=(n=(i=t==null?void 0:t.sizes)!=null?i:this.props.sizes)!=null?n:{};this.setStepParams(GRID_FLOW_KEY,GRID_STEP,{rows:l,sizes:a}),this.saveStepParams()}mergeRowsWithItems(t){const o=this.subModels.items||[];if(!o||o.length===0)return{};const r=new Set(o.map(a=>a.uid));r.add(import_flow_engine.EMPTY_COLUMN_UID);const i=new Set,n={};for(const[a,c]of Object.entries(t)){const u=c.map(d=>import_lodash.default.castArray(d).filter(m=>r.has(m))).filter(d=>d.length>0);u.length>0&&(n[a]=u,u.forEach(d=>d.forEach(m=>i.add(m))))}const l=new Set;Object.values(n).forEach(a=>a.forEach(c=>c.forEach(u=>l.add(u))));for(const a of o)l.has(a.uid)||(n[(0,import_shared.uid)()]=[[a.uid]]);return n}resetRows(t=!1){const o=this.getStepParams(GRID_FLOW_KEY,GRID_STEP)||{},r=this.mergeRowsWithItems(o.rows||{});this.setStepParams(GRID_FLOW_KEY,GRID_STEP,{rows:r,sizes:o.sizes||{}}),t&&this.setProps("rows",r)}computePointerPosition(t){var o;if(!this.dragState)return null;const r=this.dragState.pointerOrigin;if(r)return{x:r.x+t.delta.x,y:r.y+t.delta.y};const i=getClientPoint(t.activatorEvent);if(i)return this.dragState.pointerOrigin=i,{x:i.x+t.delta.x,y:i.y+t.delta.y};const n=(o=t.over)==null?void 0:o.rect;return n?{x:n.left+n.width/2,y:n.top+n.height/2}:null}updateLayoutSnapshot(){if(!this.dragState)return;const t=(0,import_flow_engine.buildLayoutSnapshot)({container:this.gridContainerRef.current});this.dragState.slots=t.slots,this.dragState.containerRect=t.containerRect}scheduleSnapshotRefresh(){this.dragState&&(this.dragState.refreshTimer&&clearTimeout(this.dragState.refreshTimer),this.dragState.refreshTimer=setTimeout(()=>{this.dragState&&(this.dragState.refreshTimer=null,this.updateLayoutSnapshot())},16))}computeOverlayRect(t){var o,r,i,n,l,a,c,u,d;const m=this.dragOverlayConfig,p=t.rect;switch(t.type){case"column":{const h=(o=m==null?void 0:m.columnInsert)==null?void 0:o[t.position],g=(r=h==null?void 0:h.height)!=null?r:p.height,x=(i=h==null?void 0:h.offsetTop)!=null?i:0;return{top:p.top+x,left:p.left,width:p.width,height:g}}case"column-edge":{const h=(n=m==null?void 0:m.columnEdge)==null?void 0:n[t.direction],g=(l=h==null?void 0:h.width)!=null?l:p.width,x=(a=h==null?void 0:h.offsetLeft)!=null?a:0;return{top:p.top,left:p.left+x,width:g,height:p.height}}case"row-gap":{const h=(c=m==null?void 0:m.rowGap)==null?void 0:c[t.position],g=(u=h==null?void 0:h.height)!=null?u:p.height,x=(d=h==null?void 0:h.offsetTop)!=null?d:0;return{top:p.top+x,left:p.left,width:p.width,height:g}}case"empty-column":case"empty-row":return{top:p.top,left:p.left,width:p.width,height:p.height};default:return{top:p.top,left:p.left,width:p.width,height:p.height}}}applyPreview(t){var o,r;if(!this.dragState)return;if(!t){this.dragState.activeSlotKey!==null&&(this.dragState.activeSlotKey=null,this.dragState.previewLayout=void 0,this.setProps("dragOverlayRect",null));return}const i=(0,import_flow_engine.getSlotKey)(t);if(this.dragState.activeSlotKey===i&&this.dragState.previewLayout)return;const n=(0,import_flow_engine.simulateLayoutForSlot)({slot:t,sourceUid:this.dragState.sourceUid,layout:this.dragState.snapshot,generateRowId:import_shared.uid});this.dragState.previewLayout={rows:import_lodash.default.cloneDeep(n.rows),sizes:import_lodash.default.cloneDeep(n.sizes)};const l=this.gridContainerRef.current,a=(o=l==null?void 0:l.scrollTop)!=null?o:0,c=(r=l==null?void 0:l.scrollLeft)!=null?r:0,u=this.computeOverlayRect(t),d={top:u.top-this.dragState.containerRect.top+a,left:u.left-this.dragState.containerRect.left+c,width:u.width,height:u.height,type:t.type};this.setProps("dragOverlayRect",d),this.dragState.activeSlotKey=i}handleDragStart(t){var o;const r=t.active.id;this.dragState={sourceUid:r,snapshot:{rows:import_lodash.default.cloneDeep(this.props.rows||{}),sizes:import_lodash.default.cloneDeep(this.props.sizes||{})},slots:[],containerRect:{top:0,left:0,width:0,height:0},pointerOrigin:(o=getClientPoint(t.activatorEvent))!=null?o:void 0,activeSlotKey:null,previewLayout:void 0,refreshTimer:null},this.setProps("dragOverlayRect",null),this.updateLayoutSnapshot(),this.scheduleSnapshotRefresh()}handleDragMove(t){if(!this.dragState)return;this.dragState.slots.length||this.updateLayoutSnapshot();const o=this.computePointerPosition(t);if(!o){this.applyPreview(null);return}const r=(0,import_flow_engine.resolveDropIntent)(o,this.dragState.slots);this.applyPreview(r)}finishDrag(){this.dragState&&(this.dragState.refreshTimer&&clearTimeout(this.dragState.refreshTimer),this.dragState=void 0,this.setProps("dragOverlayRect",null))}handleDragEnd(t){if(!this.dragState)return;const o=this.dragState.previewLayout;o&&(this.setProps("rows",import_lodash.default.cloneDeep(o.rows)),this.setProps("sizes",import_lodash.default.cloneDeep(o.sizes)),this.saveGridLayout(o)),this.finishDrag()}handleDragCancel(t){this.finishDrag()}renderAddSubModelButton(){throw new Error("renderAddSubModelButton method must be implemented in subclasses of GridModel")}getRows(){return this.context.isMobileLayout?transformRowsToSingleColumn(this.props.rows||{}):this.props.rows||{}}getSizes(){return this.context.isMobileLayout?{}:this.props.sizes||{}}render(){var t;return(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[((t=this.subModels.items)==null?void 0:t.length)>0&&(0,import_jsx_runtime.jsx)(import_antd.Space,{ref:this.gridContainerRef,direction:"vertical",style:{width:"100%",marginBottom:this.props.rowGap},size:this.props.rowGap,children:(0,import_jsx_runtime.jsx)(import_flow_engine.DndProvider,{onDragStart:this.handleDragStart.bind(this),onDragMove:this.handleDragMove.bind(this),onDragEnd:this.handleDragEnd.bind(this),onDragCancel:this.handleDragCancel.bind(this),children:(0,import_jsx_runtime.jsx)(Grid,{rowGap:this.props.rowGap,colGap:this.props.colGap,rows:this.getRows(),sizes:this.getSizes(),dragOverlayRect:this.props.dragOverlayRect,renderItem:o=>{const r=this.flowEngine.getModel(o),i=this.context.fieldIndex,n=i==null?r:(()=>{const l=r.createFork({},`${i}:${o}`);return l.context.defineProperty("fieldIndex",{get:()=>i}),l.setProps({disabled:this.props.disabled}),l})();return(0,import_jsx_runtime.jsx)(import_flow_engine.Droppable,{model:n,children:(0,import_jsx_runtime.jsx)(import_flow_engine.MemoFlowModelRenderer,{model:n,fallback:this.itemFallback,showFlowSettings:this.flowEngine.flowSettings.enabled?this.getItemFlowSettings():!1,showErrorFallback:!0,settingsMenuLevel:this.itemSettingsMenuLevel,showTitle:!0,extraToolbarItems:this.itemExtraToolbarItems},`${n.uid}:${i}`)})}})})}),this.flowEngine.flowSettings.enabled&&(0,import_jsx_runtime.jsx)("div",{style:{marginBottom:16},children:this.renderAddSubModelButton()})]})}}GridModel.registerFlow({key:GRID_FLOW_KEY,steps:{resetRows:{handler(e){e.model.resetRows()}},grid:{uiSchema:{rows:{title:(0,import_flow_engine.escapeT)("Rows"),"x-decorator":"FormItem","x-component":JsonEditor,"x-component-props":{autoSize:{minRows:10,maxRows:20},description:(0,import_flow_engine.escapeT)("Configure the rows and columns of the grid.")}},sizes:{title:(0,import_flow_engine.escapeT)("Sizes"),"x-decorator":"FormItem","x-component":JsonEditor,"x-component-props":{rows:5},description:(0,import_flow_engine.escapeT)("Configure the sizes of each row. The value is an array of numbers representing the width of each column in the row.")}},handler(e,t){return E(this,null,function*(){const o=e.model.mergeRowsWithItems(t.rows||{});e.model.setProps("rows",o),e.model.setProps("sizes",t.sizes||{})})}}}});function transformRowsToSingleColumn(e,t){var o;const r=(o=t==null?void 0:t.emptyColumnUid)!=null?o:import_flow_engine.EMPTY_COLUMN_UID,i={};return Object.keys(e).forEach(n=>{e[n].forEach(l=>{const a=l.filter(c=>c!==r);a.length>0&&(i[(0,import_shared.uid)()]=[a])})}),i}function recalculateGridSizes({position:e,direction:t,resizeDistance:o,prevMoveDistance:r,oldSizes:i,oldRows:n,gridContainerWidth:l,gutter:a=16,columnCount:c=24}){var u;const d=import_lodash.default.cloneDeep(n),m=import_lodash.default.cloneDeep(i),p=m[e.rowId]||[],h=a*(p.length-1),g=Math.floor(o/(l-h)*c);if(g===r)return{newRows:d,newSizes:m,moveDistance:g};if(m[u=e.rowId]!=null||(m[u]=[c]),m[e.rowId][e.columnIndex]+=g-r,t==="left"&&e.columnIndex>0&&(m[e.rowId][e.columnIndex-1]-=g-r,m[e.rowId][e.columnIndex-1]===0&&removeEmptyColumnFromRow({rows:d,sizes:m,position:e,direction:"left"})),t==="left"&&e.columnIndex===0){const x=m[e.rowId].slice(1).reduce((_,v)=>_+v,0);m[e.rowId][0]<c-x&&addEmptyColumnToRow({rows:d,sizes:m,position:e,direction:"left"})}if(t==="right"&&e.columnIndex<m[e.rowId].length-1&&(m[e.rowId][e.columnIndex+1]-=g-r,m[e.rowId][e.columnIndex+1]===0&&removeEmptyColumnFromRow({rows:d,sizes:m,position:e,direction:"right"})),t==="right"&&e.columnIndex===m[e.rowId].length-1){const x=m[e.rowId].slice(0,-1).reduce((_,v)=>_+v,0);m[e.rowId][e.columnIndex]<c-x&&addEmptyColumnToRow({rows:d,sizes:m,position:e,direction:"right"})}return{newRows:d,newSizes:m,moveDistance:g}}function addEmptyColumnToRow({rows:e,sizes:t,position:o,direction:r}){const i=e[o.rowId]||[],n=t[o.rowId]||[];if(r==="left"){const l=i[o.columnIndex-1];if(l!=null&&l.includes(import_flow_engine.EMPTY_COLUMN_UID))return;i.splice(o.columnIndex,0,[import_flow_engine.EMPTY_COLUMN_UID]),n.splice(o.columnIndex,0,1)}if(r==="right"){const l=i[o.columnIndex+1];if(l!=null&&l.includes(import_flow_engine.EMPTY_COLUMN_UID))return;i.splice(o.columnIndex+1,0,[import_flow_engine.EMPTY_COLUMN_UID]),n.splice(o.columnIndex+1,0,1)}}function removeEmptyColumnFromRow({rows:e,sizes:t,position:o,direction:r}){const i=e[o.rowId]||[],n=t[o.rowId]||[];if(r==="left"){const l=i[o.columnIndex-1];if(!(l!=null&&l.includes(import_flow_engine.EMPTY_COLUMN_UID)))return;i.splice(o.columnIndex-1,1),n.splice(o.columnIndex-1,1)}if(r==="right"){const l=i[o.columnIndex+1];if(!(l!=null&&l.includes(import_flow_engine.EMPTY_COLUMN_UID)))return;i.splice(o.columnIndex+1,1),n.splice(o.columnIndex+1,1)}}class BlockGridModel extends GridModel{constructor(){super(...arguments),k(this,"dragOverlayConfig",{columnInsert:{before:{offsetTop:-24},after:{offsetTop:24}},columnEdge:{left:{offsetLeft:-5},right:{offsetLeft:6}}})}onInit(t){super.onInit(t),this.context.defineProperty("blockGridModel",{value:this}),this.context.defineProperty("filterManager",{once:!0,get:()=>new FilterManager(this,t.filterManager)})}get subModelBaseClasses(){var t,o;const r=(o=(t=this.context.view)==null?void 0:t.inputArgs)!=null?o:{};return r.collectionName&&!r.filterByTk?["DataBlockModel","BlockModel"]:["DataBlockModel","FilterBlockModel","BlockModel"]}get filterManager(){return this.context.filterManager}serialize(){const t=super.serialize();return t.filterManager=this.filterManager.getFilterConfigs(),t}renderAddSubModelButton(){return(0,import_jsx_runtime.jsx)(import_flow_engine.AddSubModelButton,{model:this,subModelKey:"items",subModelBaseClasses:this.subModelBaseClasses,children:(0,import_jsx_runtime.jsx)(import_flow_engine.FlowSettingsButton,{icon:(0,import_jsx_runtime.jsx)(import_icons.PlusOutlined,{}),children:this.context.t("Add block")})})}render(){return(0,import_jsx_runtime.jsx)("div",{style:{padding:this.context.themeToken.marginBlock},children:super.render()})}}BlockGridModel.registerFlow({key:"blockGridSettings",steps:{grid:{handler(e,t){e.model.setProps("rowGap",e.themeToken.marginBlock),e.model.setProps("colGap",e.themeToken.marginBlock)}}}});const BlockPlaceholder=()=>{const{t:e}=(0,import_react_i18next.useTranslation)();return(0,import_jsx_runtime.jsx)(BlockItemCard,{children:(0,import_jsx_runtime.jsx)(import_antd.Result,{status:"403",subTitle:e("当前区块已被隐藏,你无法查看(该内容仅在激活 UI Editor 时显示)。")})})},BlockSceneEnum={new:"new",one:"one",many:"many",select:"select",oam:["one","many"]};class BlockModel extends import_flow_engine.FlowModel{constructor(){super(...arguments),k(this,"decoratorProps",(0,import_reactive.observable)({})),k(this,"_defaultCustomModelClasses",{}),k(this,"customModelClasses",{})}static _getScene(){return import_lodash.default.castArray(this.scene||[])}static _isScene(t){return this._getScene().includes(t)}getModelClassName(t){return Object.keys(this.customModelClasses).includes(t)?this.customModelClasses[t]:this._defaultCustomModelClasses[t]||t}renderHiddenInConfig(){return(0,import_jsx_runtime.jsx)(BlockPlaceholder,{})}onInit(t){super.onInit(t),this.context.defineMethod("getModelClassName",o=>this.getModelClassName(o))}setDecoratorProps(t){Object.assign(this.decoratorProps,t)}get title(){return this._title||(this._title=this.defaultBlockTitle()),this._title}defaultBlockTitle(){var t;return`${this.translate(((t=this.constructor.meta)==null?void 0:t.label)||this.constructor.name)}`}renderComponent(){throw new Error("renderComponent method must be implemented in subclasses of BlockModel")}render(){return(0,import_jsx_runtime.jsx)(BlockItemCard,I(f({ref:this.context.ref},this.decoratorProps),{children:(0,import_jsx_runtime.jsx)(import_reactive_react.Observer,{children:()=>this.renderComponent()})}))}}k(BlockModel,"scene");BlockModel.registerFlow({key:"cardSettings",title:(0,import_flow_engine.escapeT)("Card settings"),steps:{titleDescription:{title:(0,import_flow_engine.escapeT)("Title & description"),uiSchema:{title:{"x-component":"Input","x-decorator":"FormItem",title:(0,import_flow_engine.escapeT)("Title")},description:{"x-component":"Input.TextArea","x-decorator":"FormItem",title:(0,import_flow_engine.escapeT)("Description")}},handler(e,t){const o=e.t(t.title),r=e.t(t.description);e.model.setDecoratorProps({title:o,description:r})}},linkageRules:{use:"blockLinkageRules"}}});BlockModel.define({hide:!0,label:(0,import_flow_engine.escapeT)("Other blocks")});class CollectionActionModel extends ActionModel{}CollectionActionModel.define({children:e=>E(void 0,null,function*(){return(yield(0,import_flow_engine.buildSubModelItems)(ActionModel)(e)).filter(t=>e.engine.getModelClass(t.useModel)._isScene(ActionSceneEnum.collection))})});function createDefaultCollectionBlockTitle(e){const{blockLabel:t,dsName:o,dsCount:r,collectionTitle:i,sourceCollectionTitle:n,associationTitle:l}=e,a=r>1&&!!o;let c=i;if(n&&l){const u=`${n} > ${l} (${i})`;c=`${a?`${o} > `:""}${u}`}else c=`${a?`${o} > `:""}${i}`;return`
|
|
1775
1775
|
${t}:
|
|
1776
|
-
${c}`}class DataBlockModel extends BlockModel{}DataBlockModel.define({hide:!0,label:(0,import_flow_engine.escapeT)("Data blocks"),children(e){return E(this,null,function*(){const t=yield(0,import_flow_engine.buildSubModelItems)(DataBlockModel)(e),{collectionName:o,filterByTk:r,scene:i}=e.view.inputArgs;return t.filter(n=>{var l,a,c;const u=e.engine.getModelClass(n.useModel);return i==="select"?(l=u._isScene)==null?void 0:l.call(u,"select"):i==="new"||o&&!r?(a=u._isScene)==null?void 0:a.call(u,"new"):!u._isScene||!((c=u._isScene)!=null&&c.call(u,"select"))})})}});class CollectionBlockModel extends DataBlockModel{constructor(){super(...arguments),k(this,"isManualRefresh",!1)}static filterCollection(t){return!!t.filterTargetKey}static defineChildren(t){return E(this,null,function*(){const o=d=>{var m;if(!((m=this.meta)!=null&&m.createModelOptions))return d||{};if(typeof this.meta.createModelOptions=="function"){const p=this.meta.createModelOptions(t);return import_lodash.default.merge({},p,d)}return import_lodash.default.merge({},this.meta.createModelOptions,d)},r=d=>this.name+d,{dataSourceKey:i,collectionName:n,associationName:l}=t.view.inputArgs,a=t.dataSourceManager.getDataSources().map(d=>d.getCollections().length===0?null:{key:r(`ds-${d.key}`),label:d.displayName,searchable:!0,searchPlaceholder:(0,import_flow_engine.escapeT)("Search"),children:m=>d.getCollections().map(p=>{if(!this.filterCollection(p))return null;const h={dataSourceKey:p.dataSourceKey,collectionName:p.name};return{key:r(`ds-${d.key}.${p.name}`),label:p.title,useModel:this.name,createModelOptions:o({stepParams:{resourceSettings:{init:h}}})}}).filter(Boolean)}).filter(Boolean),c=d=>a.length===1?a[0].children(d):a;if(!n)return c(t);if(this._isScene("new")||this._isScene("select")){const d={dataSourceKey:i,collectionName:n};return l&&(d.associationName=l,d.sourceId="{{ctx.view.inputArgs.sourceId}}"),[{key:r("current-collection"),label:"Current collection",useModel:this.name,createModelOptions:o({stepParams:{resourceSettings:{init:d}}})},{key:r("others-collections"),label:"Other collections",children:c(t)}]}const u=[{key:r("associated"),label:"Associated records",children:()=>t.dataSourceManager.getCollection(i,n).getAssociationFields(this._getScene()).map(d=>{if(!d.targetCollection||!this.filterCollection(d.targetCollection))return null;const m={dataSourceKey:i,collectionName:d.target,associationName:d.resourceName,sourceId:"{{ctx.view.inputArgs.filterByTk}}"};return{key:r(`associated-${d.name}`),label:d.title,useModel:this.name,createModelOptions:o({stepParams:{resourceSettings:{init:m}}})}}).filter(Boolean)},{key:r("others-records"),label:"Other records",children:c(t)}];if(this._isScene("one")){const d={dataSourceKey:i,collectionName:n,filterByTk:"{{ctx.view.inputArgs.filterByTk}}"};l&&(d.associationName=l,d.sourceId="{{ctx.view.inputArgs.sourceId}}"),u.unshift({key:r("current-record"),label:"Current record",useModel:this.name,createModelOptions:o({stepParams:{resourceSettings:{init:d}}})})}return u})}get dataSource(){return this.context.dataSource}get collection(){return this.context.collection}get resource(){return this.context.resource}get association(){return this.context.association}get associationField(){return this.context.association}getAclActionName(){return"view"}getFilterFields(){return E(this,null,function*(){return this.collection.getFields().filter(t=>t.filterable)})}getResourceSettingsInitParams(){return this.getStepParams("resourceSettings","init")}onInit(t){super.onInit(t),this.context.defineProperty("blockModel",{value:this}),this.context.defineProperty("actionName",{get:()=>this.getAclActionName(),cache:!1}),this.context.defineProperty("resourceName",{get:()=>this.resource.getResourceName(),cache:!1}),this.context.defineProperty("dataSource",{get:()=>{const o=this.getResourceSettingsInitParams();return this.context.dataSourceManager.getDataSource(o.dataSourceKey)}}),this.context.defineProperty("collection",{get:()=>{const o=this.getResourceSettingsInitParams();return this.context.dataSourceManager.getCollection(o.dataSourceKey,o.collectionName)},meta:(0,import_flow_engine.createCollectionContextMeta)(()=>{const o=this.getResourceSettingsInitParams();return this.context.dataSourceManager.getCollection(o.dataSourceKey,o.collectionName)},this.context.t("Current collection"))}),this.context.defineProperty("resource",{get:()=>{const o=this.getResourceSettingsInitParams(),r=this.createResource(this.context,o);return r.setDataSourceKey(o.dataSourceKey),r.setResourceName(o.associationName||o.collectionName),r.on("refresh",()=>{this.invalidateAutoFlowCache()}),r}}),this.context.defineProperty("association",{get:()=>{const o=this.getResourceSettingsInitParams();if(o.associationName)return this.dataSource.getAssociation(o.associationName)}})}createResource(t,o){throw new Error("createResource method must be implemented in subclasses of CollectionBlockModel")}defaultBlockTitle(){var t,o,r,i,n,l,a;const c=this.translate(((t=this.constructor.meta)==null?void 0:t.label)||this.constructor.name),u=((o=this.dataSource)==null?void 0:o.displayName)||((r=this.dataSource)==null?void 0:r.key),d=((l=(n=(i=this.context)==null?void 0:i.dataSourceManager)==null?void 0:n.getDataSources)==null?void 0:l.call(n).length)||0,m=(a=this.collection)==null?void 0:a.title;if(this.association){const p=this.resource.getResourceName(),h=this.dataSource.getCollection(p.split(".")[0]);return createDefaultCollectionBlockTitle({blockLabel:c,dsName:u,dsCount:d,collectionTitle:m,sourceCollectionTitle:h.title,associationTitle:this.association.title})}return createDefaultCollectionBlockTitle({blockLabel:c,dsName:u,dsCount:d,collectionTitle:m})}addAppends(t,o=!1){if(t)if(t.includes(".")){const[r,i]=t.split("."),n=this.context.dataSourceManager.getCollectionField(`${this.collection.dataSourceKey}.${this.collection.name}.${r}`).target,l=this.context.dataSourceManager.getCollectionField(`${this.collection.dataSourceKey}.${n}.${i}`);l&&l.isAssociationField()&&(this.resource.addAppends(t),o&&this.resource.refresh())}else{const r=this.context.dataSourceManager.getCollectionField(`${this.collection.dataSourceKey}.${this.collection.name}.${t}`);if(!r)return;r.isAssociationField()&&(this.resource.addAppends(r.name),o&&this.resource.refresh())}}}CollectionBlockModel.registerFlow({key:"resourceSettings",sort:-999,steps:{aclCheck:{use:"aclCheck"},init:{handler(e,t){if(!t.dataSourceKey)throw new Error("dataSourceKey is required");if(!t.collectionName)throw new Error("collectionName is required");Object.keys(t).includes("sourceId")&&e.resource.setSourceId(t.sourceId),Object.keys(t).includes("filterByTk")&&e.resource.setFilterByTk(t.filterByTk)}}}});CollectionBlockModel.registerFlow({key:"refreshSettings",sort:1e4,steps:{refresh:{handler(e){return E(this,null,function*(){e.model.context.filterManager.bindToTarget(e.model.uid),e.model.isManualRefresh?e.model.resource.loading=!1:yield e.model.resource.refresh()})}}}});CollectionBlockModel.define({hide:!0});class CommonItemModel extends import_flow_engine.FlowModel{}class FilterBlockModel extends BlockModel{}FilterBlockModel.define({hide:!0,label:"Filter blocks"});class PageModel extends import_flow_engine.FlowModel{constructor(){super(...arguments),k(this,"tabBarExtraContent",{}),k(this,"createPageTabModelOptions",()=>{const t=(0,import_shared.uid)();return{uid:t,use:"RootPageTabModel",props:{route:{parentId:this.props.routeId,type:"tabs",schemaUid:t,tabSchemaName:(0,import_shared.uid)(),params:[],hideInMenu:!1,enableTabs:!1}}}})}mapTabs(){return this.mapSubModels("tabs",t=>({key:t.uid,label:(0,import_jsx_runtime.jsx)(import_flow_engine.Droppable,{model:t,children:(0,import_jsx_runtime.jsx)(import_flow_engine.FlowModelRenderer,{model:t,showFlowSettings:{showBackground:!0,showBorder:!1},extraToolbarItems:[{key:"drag-handler",component:import_flow_engine.DragHandler,sort:1}]})}),children:t.renderChildren()}))}renderFirstTab(){var t,o;const r=(t=this.subModels.tabs)==null?void 0:t[0];return(o=r==null?void 0:r.renderChildren)==null?void 0:o.call(r)}handleDragEnd(t){return E(this,null,function*(){throw new Error("Method not implemented.")})}renderTabs(){var t;return(0,import_jsx_runtime.jsx)(import_flow_engine.DndProvider,{onDragEnd:this.handleDragEnd.bind(this),children:(0,import_jsx_runtime.jsx)(import_antd.Tabs,{defaultActiveKey:(t=this.context.view.inputArgs)==null?void 0:t.tabUid,tabBarStyle:this.props.tabBarStyle,items:this.mapTabs(),onChange:o=>{var r,i;(i=(r=this.context.view.navigation)==null?void 0:r.changeTo)==null||i.call(r,{tabUid:o})},tabBarExtraContent:f({right:(0,import_jsx_runtime.jsx)(import_flow_engine.AddSubModelButton,{model:this,subModelKey:"tabs",items:[{key:"blank",label:this.context.t("Blank tab"),createModelOptions:this.createPageTabModelOptions}],children:(0,import_jsx_runtime.jsx)(import_flow_engine.FlowSettingsButton,{icon:(0,import_jsx_runtime.jsx)(import_icons.PlusOutlined,{}),children:this.context.t("Add tab")})})},this.tabBarExtraContent)})})}render(){return(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[this.props.displayTitle&&(0,import_jsx_runtime.jsx)(import_pro_layout.PageHeader,{title:this.props.title,style:this.props.headerStyle}),this.props.enableTabs?this.renderTabs():this.renderFirstTab()]})}}PageModel.registerFlow({key:"pageSettings",title:(0,import_flow_engine.escapeT)("Page settings"),steps:{general:{title:(0,import_flow_engine.escapeT)("Edit page"),uiSchema:{title:{type:"string",title:(0,import_flow_engine.escapeT)("Page title"),"x-decorator":"FormItem","x-component":"Input","x-reactions":{dependencies:["displayTitle"],fulfill:{state:{visible:"{{$deps[0]}}"}}}},displayTitle:{type:"boolean",title:(0,import_flow_engine.escapeT)("Display page title"),"x-decorator":"FormItem","x-component":"Switch"},enableTabs:{type:"boolean",title:(0,import_flow_engine.escapeT)("Enable tabs"),"x-decorator":"FormItem","x-component":"Switch"}},defaultParams(e){return{displayTitle:!0,enableTabs:!1}},handler(e,t){return E(this,null,function*(){var o,r;if(e.model.setProps("displayTitle",t.displayTitle),e.model.context.closable)e.model.setProps("title",t.title?e.t(t.title):null);else{const i=(r=(o=e.model.context)==null?void 0:o.currentRoute)==null?void 0:r.title;e.model.setProps("title",e.t(t.title||i))}e.model.setProps("enableTabs",t.enableTabs),e.view.type!=="embed"?(e.model.setProps("headerStyle",{backgroundColor:"var(--colorBgLayout)"}),e.model.setProps("tabBarStyle",{backgroundColor:"var(--colorBgLayout)",paddingInline:16,marginBottom:0})):(e.model.setProps("headerStyle",{backgroundColor:"var(--colorBgContainer)"}),e.model.setProps("tabBarStyle",{backgroundColor:"var(--colorBgContainer)",paddingInline:16,marginBottom:0}))})}}}});class ChildPageModel extends PageModel{constructor(){super(...arguments),k(this,"tabBarExtraContent",{left:(0,import_jsx_runtime.jsx)(BackButtonUsedInSubPage,{})}),k(this,"createPageTabModelOptions",()=>({use:"ChildPageTabModel"}))}handleDragEnd(t){return E(this,null,function*(){var o,r;if(!((o=t.active)!=null&&o.id)||!((r=t.over)!=null&&r.id))throw new Error("Invalid drag event");this.flowEngine.moveModel(t.active.id,t.over.id)})}}const BackButtonUsedInSubPage=()=>{const e=(0,import_flow_engine.useFlowContext)(),t=e.themeToken,o=32,r=(0,import_react2.useMemo)(()=>({width:"auto",height:"auto",lineHeight:1,padding:t.paddingXS,marginRight:o-t.paddingXS}),[t.paddingXS]);return e.view.type!=="embed"?null:(0,import_jsx_runtime.jsx)(import_antd.Button,{"aria-label":"back-button",type:"text",icon:(0,import_jsx_runtime.jsx)(import_icons.ArrowLeftOutlined,{}),style:r,onClick:e.view.destroy})};class OldPageModel extends import_flow_engine.FlowModel{}OldPageModel.registerFlow({key:"pageSettings",title:(0,import_flow_engine.escapeT)("Page settings"),steps:{general:{title:(0,import_flow_engine.escapeT)("General"),uiSchema:{title:{type:"string",title:(0,import_flow_engine.escapeT)("Page title"),"x-decorator":"FormItem","x-component":"Input","x-reactions":{dependencies:["displayTitle"],fulfill:{state:{visible:"{{$deps[0]}}"}}}},displayTitle:{type:"boolean",title:(0,import_flow_engine.escapeT)("Display page title"),"x-decorator":"FormItem","x-component":"Switch"}},defaultParams(e){return{displayTitle:!0,enableTabs:!1}},handler(e,t){return E(this,null,function*(){var o,r;if(e.model.setProps("displayTitle",t.displayTitle),e.model.context.closable)e.model.setProps("title",t.title?e.t(t.title):null);else{const i=(r=(o=e.model.context)==null?void 0:o.currentRoute)==null?void 0:r.title;e.model.setProps("title",e.t(t.title||i))}e.model.setProps("enableTabs",t.enableTabs),e.model.context.closable?(e.model.setProps("headerStyle",{backgroundColor:e.themeToken.colorBgContainer}),e.model.setProps("tabBarStyle",{backgroundColor:e.themeToken.colorBgLayout,paddingInline:16,marginBottom:0})):(e.model.setProps("headerStyle",{backgroundColor:e.themeToken.colorBgContainer}),e.model.setProps("tabBarStyle",{backgroundColor:e.themeToken.colorBgContainer,paddingInline:16,marginBottom:0}))})}}}});class MainPageModel extends OldPageModel{renderFirstTab(){var t;return(0,import_jsx_runtime.jsx)(import_flow_engine.FlowModelRenderer,{model:(t=this.subModels.tabs)==null?void 0:t[0]})}render(){return(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[this.props.displayTitle&&(0,import_jsx_runtime.jsx)(import_pro_layout.PageHeader,{title:this.props.title,style:this.props.headerStyle}),this.renderFirstTab()]})}}function PageTabChildrenRenderer({ctx:e,options:t}){const{data:o,loading:r}=(0,import_ahooks.useRequest)(()=>E(this,null,function*(){const i=yield e.engine.loadOrCreateModel(t);return i.context.addDelegate(e),i}),{refreshDeps:[e.model.uid]});return r||!(o!=null&&o.uid)?(0,import_jsx_runtime.jsx)(SkeletonFallback,{style:{margin:16}}):(0,import_jsx_runtime.jsx)(import_flow_engine.FlowModelRenderer,{model:o,fallback:(0,import_jsx_runtime.jsx)(SkeletonFallback,{style:{margin:16}})})}class BasePageTabModel extends import_flow_engine.FlowModel{getTabTitle(t="Untitled"){var o,r;return this.context.t(((r=(o=this.stepParams.pageTabSettings)==null?void 0:o.tab)==null?void 0:r.title)||t)}getTabIcon(){var t,o;return(o=(t=this.stepParams.pageTabSettings)==null?void 0:t.tab)==null?void 0:o.icon}renderChildren(){return null}render(){return(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsx)(Icon,{style:{marginRight:8},type:this.getTabIcon()}),this.getTabTitle()]})}}BasePageTabModel.registerFlow({key:"pageTabSettings",title:(0,import_flow_engine.escapeT)("Tab settings"),steps:{tab:{title:(0,import_flow_engine.escapeT)("Edit tab"),preset:!0,uiSchema:{title:{title:(0,import_flow_engine.escapeT)("Tab name"),"x-component":"Input","x-decorator":"FormItem",required:!0},icon:{title:(0,import_flow_engine.escapeT)("Icon"),"x-decorator":"FormItem","x-component":"IconPicker"}},handler(e,t){return E(this,null,function*(){e.model.setProps("title",t.title),e.model.setProps("icon",t.icon)})}}}});class RootPageTabModel extends BasePageTabModel{renderChildren(){return(0,import_jsx_runtime.jsx)(PageTabChildrenRenderer,{ctx:this.context,options:{parentId:this.uid,subKey:"grid",async:!0,subType:"object",use:"BlockGridModel"}})}saveStepParams(){return E(this,null,function*(){return this.save()})}save(){return E(this,null,function*(){yield this.context.api.request({method:"post",url:"desktopRoutes:updateOrCreate",params:{filterKeys:["schemaUid"]},data:I(f({},this.props.route),{title:this.getTabTitle(""),icon:this.getTabIcon()})})})}destroy(){return E(this,null,function*(){return this.observerDispose(),this.invalidateAutoFlowCache(!0),this.flowEngine.removeModel(this.uid),yield this.context.api.request({method:"post",url:"desktopRoutes:destroy",params:{filter:{schemaUid:this.uid}},data:this.props.route}),!0})}}class ChildPageTabModel extends BasePageTabModel{renderChildren(){return(0,import_jsx_runtime.jsx)(PageTabChildrenRenderer,{ctx:this.context,options:{parentId:this.uid,subKey:"grid",async:!0,subType:"object",use:"BlockGridModel"}})}}class PageTabModel extends import_flow_engine.FlowModel{render(){return(0,import_jsx_runtime.jsx)("div",{children:(0,import_jsx_runtime.jsx)(RemoteFlowModelRenderer,{parentId:this.uid,subKey:"grid",showFlowSettings:!1})})}}class RootPageModel extends PageModel{saveStepParams(){return E(this,null,function*(){yield Se(RootPageModel.prototype,this,"saveStepParams").call(this),this.context.api.request({url:`desktopRoutes:update?filter[id]=${this.props.routeId}`,method:"post",data:{enableTabs:!!this.stepParams.pageSettings.general.enableTabs}})})}handleDragEnd(t){return E(this,null,function*(){var o,r;const i=this.flowEngine.getModel((o=t.active)==null?void 0:o.id),n=this.flowEngine.getModel((r=t.over)==null?void 0:r.id);!i||!n||(yield this.context.api.request({url:"desktopRoutes:move",method:"post",params:{sourceId:i.props.route.id,targetId:n.props.route.id,sortField:"sort"}}),this.flowEngine.moveModel(i.uid,n.uid,{persist:!1}))})}}RootPageModel.registerFlow({key:"rootPageSettings",steps:{init:{handler(e,t){return E(this,null,function*(){var o,r;if(e.model.hasSubModel("tabs"))return;const{data:i}=yield e.api.request({url:"desktopRoutes:getAccessible",params:{sort:"sort",filter:{schemaUid:e.model.parentId},appends:["children"]}});e.model.setProps("routeId",(o=i==null?void 0:i.data)==null?void 0:o.id);const n=import_lodash.default.castArray((r=i==null?void 0:i.data)==null?void 0:r.children);for(const l of n){if(l.hideInMenu)continue;const a=e.engine.createModel({parentId:e.model.uid,uid:l.schemaUid,subKey:"tabs",subType:"array",use:"RootPageTabModel",props:{route:l},stepParams:{pageTabSettings:{tab:{title:l.title,icon:l.icon}}}});e.model.addSubModel("tabs",a)}})}}}});class SubPageModel extends OldPageModel{renderFirstTab(){var t;return(0,import_jsx_runtime.jsx)(import_flow_engine.FlowModelRenderer,{model:(t=this.subModels.tabs)==null?void 0:t[0]})}render(){return(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[this.props.displayTitle&&(0,import_jsx_runtime.jsx)(import_pro_layout.PageHeader,{title:this.props.title,style:this.props.headerStyle}),this.renderFirstTab()]})}}class PopupActionModel extends ActionModel{constructor(){super(...arguments),k(this,"defaultProps",{title:(0,import_flow_engine.escapeT)("Popup")})}}PopupActionModel.define({label:(0,import_flow_engine.escapeT)("Popup")});PopupActionModel.registerFlow(openViewFlow);class RecordActionModel extends ActionModel{}RecordActionModel.define({children:e=>E(void 0,null,function*(){return(yield(0,import_flow_engine.buildSubModelItems)(ActionModel)(e)).filter(t=>e.engine.getModelClass(t.useModel)._isScene(ActionSceneEnum.record))})});class FormBlockModel extends CollectionBlockModel{constructor(){super(...arguments),k(this,"_defaultCustomModelClasses",{FormActionGroupModel:"FormActionGroupModel",FormItemModel:"FormItemModel",FormCustomItemModel:"FormCustomItemModel"}),k(this,"customModelClasses",{})}get form(){return this.context.form}renderConfigureActions(){return(0,import_jsx_runtime.jsx)(import_flow_engine.AddSubModelButton,{model:this,subModelKey:"actions",subModelBaseClass:this.getModelClassName("FormActionGroupModel"),children:(0,import_jsx_runtime.jsx)(import_flow_engine.FlowSettingsButton,{icon:(0,import_jsx_runtime.jsx)(import_icons.SettingOutlined,{}),children:this.translate("Actions")})})}setFieldsValue(t){this.form.setFieldsValue(t)}setFieldValue(t,o){this.form.setFieldValue(t,o)}useHooksBeforeRender(){const[t]=import_antd.Form.useForm();this.context.defineProperty("form",{get:()=>t});const o=(0,import_flow_engine.createRecordMetaFactory)(()=>this.collection,"Current form");this.context.defineProperty("formValues",{get:()=>this.context.form.getFieldsValue(),cache:!1,meta:o})}onInit(t){super.onInit(t),(0,import_flow_engine.createCurrentRecordMetaFactory)(this.context,()=>this.collection),this.context.defineProperty("record",{get:()=>this.getCurrentRecord(),cache:!1})}onMount(){super.onMount(),setTimeout(()=>{this.applyFlow("eventSettings")},100)}getCurrentRecord(){return{}}renderComponent(){throw new Error("renderComponent method must be implemented in subclasses of FormModel")}}function FormComponent(e){var t=e,{model:o,children:r,layoutProps:i={},initialValues:n}=t,l=W(t,["model","children","layoutProps","initialValues"]);return(0,import_jsx_runtime.jsx)(import_antd.Form,I(f(I(f({form:o.form,initialValues:o.context.record||n},(0,import_lodash.omit)(i,"labelWidth")),{labelCol:{style:{width:i==null?void 0:i.labelWidth}},onValuesChange:(a,c)=>{o.dispatchEvent("formValuesChange",{changedValues:a,allValues:c},{debounce:!0})}}),l),{children:r}))}FormBlockModel.define({hide:!0});FormBlockModel.registerFlow({key:"formModelSettings",title:(0,import_flow_engine.escapeT)("Form settings"),steps:{layout:{use:"layout",title:(0,import_flow_engine.escapeT)("Layout")}}});FormBlockModel.registerFlow({key:"eventSettings",title:(0,import_flow_engine.escapeT)("Event settings"),on:"formValuesChange",steps:{linkageRules:{use:"fieldLinkageRules",afterParamsSave(e){e.model.applyFlow("eventSettings")}}}});FormBlockModel.registerEvents({formValuesChange:{title:(0,import_flow_engine.escapeT)("Form values change"),name:"formValuesChange",uiSchema:{condition:{type:"object",title:(0,import_flow_engine.escapeT)("Trigger condition"),"x-decorator":"FormItem","x-component":ConditionBuilder}},handler:commonConditionHandler}});class FormModel extends FormBlockModel{}FormModel.define({hide:!0});class CreateFormModel extends FormBlockModel{constructor(){super(...arguments),k(this,"actionFlowSettings",{showBackground:!1,showBorder:!1,toolbarPosition:"above"}),k(this,"actionExtraToolbarItems",[{key:"drag-handler",component:import_flow_engine.DragHandler,sort:1}])}createResource(t,o){const r=this.context.createResource(import_flow_engine.SingleRecordResource);return r.isNewRecord=!0,r}getAclActionName(){return"create"}renderComponent(){const{colon:t,labelAlign:o,labelWidth:r,labelWrap:i,layout:n}=this.props;return(0,import_jsx_runtime.jsxs)(FormComponent,{model:this,layoutProps:{colon:t,labelAlign:o,labelWidth:r,labelWrap:i,layout:n},children:[(0,import_jsx_runtime.jsx)(import_flow_engine.FlowModelRenderer,{model:this.subModels.grid,showFlowSettings:!1}),(0,import_jsx_runtime.jsx)(import_flow_engine.DndProvider,{children:(0,import_jsx_runtime.jsxs)(import_antd.Space,{children:[this.mapSubModels("actions",l=>(0,import_jsx_runtime.jsx)(import_flow_engine.Droppable,{model:l,children:(0,import_jsx_runtime.jsx)(import_flow_engine.MemoFlowModelRenderer,{model:l,showFlowSettings:this.flowEngine.flowSettings.enabled?this.actionFlowSettings:!1,extraToolbarItems:this.actionExtraToolbarItems},l.uid)},l.uid)),this.renderConfigureActions()]})})]})}}k(CreateFormModel,"scene",BlockSceneEnum.new);CreateFormModel.registerFlow({key:"formSettings",title:(0,import_flow_engine.escapeT)("Form settings"),steps:{init:{handler(e){return E(this,null,function*(){if(!e.resource)throw new Error("Resource is not initialized");e.model.form})}},refresh:{}}});CreateFormModel.define({label:(0,import_flow_engine.escapeT)("Form (Add new)"),searchable:!0,searchPlaceholder:(0,import_flow_engine.escapeT)("Search"),createModelOptions:{use:"CreateFormModel",subModels:{grid:{use:"FormGridModel"}}},sort:350});class EditFormModel extends FormBlockModel{constructor(){super(...arguments),k(this,"actionFlowSettings",{showBackground:!1,showBorder:!1,toolbarPosition:"above"}),k(this,"actionExtraToolbarItems",[{key:"drag-handler",component:import_flow_engine.DragHandler,sort:1}]),k(this,"handlePageChange",t=>E(this,null,function*(){if(this.resource instanceof import_flow_engine.MultiRecordResource){const o=this.resource;o.setPage(t),o.loading=!0,yield o.refresh()}}))}createResource(t,o){var r,i;if(((r=this.association)==null?void 0:r.type)==="hasOne"||((i=this.association)==null?void 0:i.type)==="belongsTo"){const l=this.context.createResource(import_flow_engine.SingleRecordResource);return l.isNewRecord=!1,l}if(Object.keys(o).includes("filterByTk")){const l=this.context.createResource(import_flow_engine.SingleRecordResource);return l.isNewRecord=!1,l}const n=this.context.createResource(import_flow_engine.MultiRecordResource);return n.setPageSize(1),n}isMultiRecordResource(){return this.resource instanceof import_flow_engine.MultiRecordResource}getCurrentRecord(){const t=this.resource.getData();return Array.isArray(t)?t[0]:t}getAclActionName(){return"update"}renderComponent(){const{colon:t,labelAlign:o,labelWidth:r,labelWrap:i,layout:n}=this.props;return(0,import_jsx_runtime.jsxs)(FormComponent,{model:this,layoutProps:{colon:t,labelAlign:o,labelWidth:r,labelWrap:i,layout:n},children:[(0,import_jsx_runtime.jsx)(import_flow_engine.FlowModelRenderer,{model:this.subModels.grid,showFlowSettings:!1}),(0,import_jsx_runtime.jsx)(import_flow_engine.DndProvider,{children:(0,import_jsx_runtime.jsxs)(import_antd.Space,{children:[this.mapSubModels("actions",l=>(0,import_jsx_runtime.jsx)(import_flow_engine.Droppable,{model:l,children:(0,import_jsx_runtime.jsx)(import_flow_engine.MemoFlowModelRenderer,{model:l,showFlowSettings:this.flowEngine.flowSettings.enabled?this.actionFlowSettings:!1,extraToolbarItems:this.actionExtraToolbarItems},l.uid)},l.uid)),this.renderConfigureActions()]})}),this.isMultiRecordResource()&&this.resource.getMeta("count")>1&&(0,import_jsx_runtime.jsx)("div",{style:{textAlign:"center",marginTop:16},children:(0,import_jsx_runtime.jsx)(import_antd.Pagination,{simple:!0,pageSize:1,showSizeChanger:!1,defaultCurrent:this.resource.getPage(),total:this.resource.getTotalPage(),onChange:this.handlePageChange,style:{display:"inline-block"}})})]})}}k(EditFormModel,"scene",BlockSceneEnum.oam);EditFormModel.registerFlow({key:"formSettings",title:(0,import_flow_engine.escapeT)("Edit form settings"),steps:{init:{handler(e){return E(this,null,function*(){if(!e.resource)throw new Error("Resource is not initialized");e.resource.on("refresh",()=>E(this,null,function*(){var t;const o=f({},e.model.getCurrentRecord());if(!o)return;const r=(t=e.association)==null?void 0:t.targetKey;r?e.resource.setMeta({currentFilterByTk:o==null?void 0:o[r]}):e.resource.setMeta({currentFilterByTk:e.collection.getFilterByTK(o)}),e.form&&e.form.setFieldsValue(o)}))})}},refresh:{handler(e){return E(this,null,function*(){if(!e.resource)throw new Error("Resource is not initialized")})}}}});EditFormModel.define({label:(0,import_flow_engine.escapeT)("Form (Edit)"),searchable:!0,searchPlaceholder:(0,import_flow_engine.escapeT)("Search"),createModelOptions:{use:"EditFormModel",subModels:{grid:{use:"FormGridModel"}}},sort:340});class FormActionModel extends ActionModel{}class FormSubmitActionModel extends FormActionModel{constructor(){super(...arguments),k(this,"defaultProps",{title:(0,import_flow_engine.escapeT)("Submit"),type:"primary",htmlType:"submit"})}setSaveRequestConfig(t){this.setStepParams("submitSettings","saveResource",{requestConfig:t})}}FormSubmitActionModel.define({label:(0,import_flow_engine.escapeT)("Submit")});FormSubmitActionModel.registerFlow({key:"submitSettings",on:"click",steps:{saveResource:{handler(e,t){return E(this,null,function*(){if(!(e!=null&&e.resource))throw new Error("Resource is not initialized");if(!e.blockModel)throw new Error("Block model is not initialized");const o=e.resource,r=e.blockModel;try{yield r.form.validateFields();const i=r.form.getFieldsValue();if(o instanceof import_flow_engine.SingleRecordResource){if(r instanceof EditFormModel){const n=o.getMeta("currentFilterByTk");n?o.setFilterByTk(n):o.isNewRecord=!0}yield o.save(i,t.requestConfig),r instanceof EditFormModel?(o.isNewRecord=!1,yield o.refresh()):(r.form.resetFields(),r.emitter.emit("onFieldReset"))}else if(o instanceof import_flow_engine.MultiRecordResource){const n=o.getMeta("currentFilterByTk");if(!n){e.message.error(e.t("No filterByTk found for multi-record resource."));return}yield o.update(n,i,t.requestConfig)}}catch(i){e.message.error(e.t("Save failed")),console.error("Form submission error:",i);return}e.message.success(e.t("Saved successfully")),e.view&&e.view.close()})}}}});class FormActionGroupModel extends ActionGroupModel{}k(FormActionGroupModel,"baseClass",FormActionModel);class FormCustomItemModel extends import_flow_engine.FlowModel{static defineChildren(t){const o=t.engine.filterModelClassByParent("CommonItemModel"),r=t.engine.filterModelClassByParent("FormCustomItemModel"),i=n=>Array.from(n.entries()).map(([l,a])=>{var c,u,d,m;const p=typeof a.defineChildren=="function"||!!((c=a.meta)!=null&&c.children),h={key:l,label:t.t(a.meta.label),sort:(u=a.meta.sort)!=null?u:999,searchable:!!((d=a.meta)!=null&&d.searchable),searchPlaceholder:(m=a.meta)==null?void 0:m.searchPlaceholder};return p?h.children=g=>{var x;return typeof a.defineChildren=="function"?a.defineChildren(g):((x=a.meta)==null?void 0:x.children)||[]}:h.createModelOptions={use:l},h});return import_lodash.default.sortBy([...i(o),...i(r)],"sort")}}k(FormCustomItemModel,"renderMode",import_flow_engine.ModelRenderMode.RenderFunction);FormCustomItemModel.define({hide:!0,label:(0,import_flow_engine.escapeT)("Others")});class FormGridModel extends GridModel{constructor(){super(...arguments),k(this,"itemSettingsMenuLevel",2),k(this,"itemFlowSettings",{showBackground:!0,style:{top:-6,left:-6,right:-6,bottom:-6}}),k(this,"dragOverlayConfig",{columnInsert:{before:{offsetTop:-12,height:24},after:{offsetTop:7,height:24}},columnEdge:{left:{offsetLeft:-5,width:24},right:{offsetLeft:8,width:24}},rowGap:{above:{offsetTop:0,height:24},below:{offsetTop:-14,height:24}}})}renderAddSubModelButton(){return(0,import_jsx_runtime.jsx)(import_flow_engine.AddSubModelButton,{subModelKey:"items",subModelBaseClasses:[this.context.getModelClassName("FormItemModel"),this.context.getModelClassName("FormCustomItemModel"),this.context.getModelClassName("FormJSFieldItemModel")].filter(Boolean),model:this,keepDropdownOpen:!0,children:(0,import_jsx_runtime.jsx)(import_flow_engine.FlowSettingsButton,{icon:(0,import_jsx_runtime.jsx)(import_icons.SettingOutlined,{}),children:this.translate("Fields")})})}}FormGridModel.registerFlow({key:"formFieldGridSettings",steps:{grid:{handler(e,t){e.model.setProps("rowGap",0),e.model.setProps("colGap",16)}}}});const interfacesOfUnsupportedDefaultValue=["o2o","oho","obo","o2m","attachment","expression","point","lineString","circle","polygon","sequence","formula"];function buildDynamicName(e,t){if(!(t!=null&&t.length))return e;const[o,r]=t[t.length-1].split(":"),i=Number(r),n=e.indexOf(o);return n===-1?e:[i,...e.slice(n+1)]}class FormItemModel extends import_flow_engine.EditableItemModel{static defineChildren(t){const o=t.collection;return o.getFields().map(r=>{const i=this.getDefaultBindingByField(t,r);if(!i)return;const n=i.modelName,l=t.prefixFieldPath?`${t.prefixFieldPath}.${r.name}`:r.name;return{key:l,label:r.title,refreshTargets:["FormItemModel/FormJSFieldItemModel"],toggleable:a=>{var c;return((c=a.getStepParams("fieldSettings","init"))==null?void 0:c.fieldPath)===l},useModel:"FormItemModel",createModelOptions:()=>({use:"FormItemModel",stepParams:{fieldSettings:{init:{dataSourceKey:o.dataSourceKey,collectionName:t.model.context.blockModel.collection.name,fieldPath:l}}},subModels:{field:{use:n,props:typeof i.defaultProps=="function"?i.defaultProps(t,r):i.defaultProps}}})}}).filter(Boolean)}onInit(t){super.onInit(t),this.emitter.on("onSubModelAdded",o=>{this.collectionField&&o.setProps(this.collectionField.getComponentProps())})}render(){const t=this.subModels.field,o=this.context.fieldIndex,r=o!=null?(()=>{const n=t.createFork({},`${o}`);return n.context.defineProperty("fieldIndex",{get:()=>o}),n})():t,i=buildDynamicName(this.props.name,o);return(0,import_jsx_runtime.jsx)(import_flow_engine.FormItem,I(f({},this.props),{name:i,children:(0,import_jsx_runtime.jsx)(import_flow_engine.FieldModelRenderer,{model:r,name:i})}))}}FormItemModel.define({label:(0,import_flow_engine.escapeT)("Display collection fields"),sort:100});FormItemModel.registerFlow({key:"editItemSettings",sort:300,title:(0,import_flow_engine.escapeT)("Form item settings"),steps:{label:{title:(0,import_flow_engine.escapeT)("Label"),uiSchema:e=>({label:{"x-component":"Input","x-decorator":"FormItem","x-reactions":t=>{var o,r;const i=e.model,n=(o=i.collectionField)==null?void 0:o.title;t.decoratorProps=I(f({},t.decoratorProps),{extra:i.context.t("Original field title: ")+((r=i.context.t(n))!=null?r:"")})}}}),defaultParams:e=>({label:e.collectionField.title}),handler(e,t){e.model.setProps({label:t.label||e.collectionField.title})}},aclCheck:{use:"aclCheck"},init:{handler(e){return E(this,null,function*(){const t=e.model.fieldPath,o=t.includes(".")?t.split("."):t;e.model.setProps({name:o})})}},showLabel:{title:(0,import_flow_engine.escapeT)("Show label"),uiSchema:{showLabel:{"x-component":"Switch","x-decorator":"FormItem","x-component-props":{checkedChildren:(0,import_flow_engine.escapeT)("Yes"),unCheckedChildren:(0,import_flow_engine.escapeT)("No")}}},defaultParams:{showLabel:!0},handler(e,t){e.model.setProps({showLabel:t.showLabel})}},tooltip:{title:(0,import_flow_engine.escapeT)("Tooltip"),uiSchema:{tooltip:{"x-component":"Input.TextArea","x-decorator":"FormItem"}},handler(e,t){e.model.setProps({tooltip:t.tooltip})}},description:{title:(0,import_flow_engine.escapeT)("Description"),uiSchema:{description:{"x-component":"Input.TextArea","x-decorator":"FormItem","x-component-props":{autoSize:!0}}},handler(e,t){e.model.setProps({extra:t.description})}},initialValue:{title:(0,import_flow_engine.escapeT)("Default value"),uiSchema:e=>{var t,o,r,i,n,l;if(e.model.parent.parent instanceof EditFormModel||(o=(t=e.model.parent)==null?void 0:t.parent)!=null&&o.updateAssociation||(i=(r=e.model.subModels)==null?void 0:r.field)!=null&&i.updateAssociation)return;const a=(n=e.model.collectionField)==null?void 0:n.interface;if(!((l=interfacesOfUnsupportedDefaultValue==null?void 0:interfacesOfUnsupportedDefaultValue.includes)!=null&&l.call(interfacesOfUnsupportedDefaultValue,a)))return{defaultValue:{"x-component":"DefaultValue","x-decorator":"FormItem"}}},defaultParams:e=>{const t=e.model.collectionField;if(t.interface==="nanoid"){const{size:o,customAlphabet:r}=t.options||{size:21};return{defaultValue:(0,import_nanoid.customAlphabet)(r,o)()}}return{defaultValue:t.defaultValue}},handler(e,t){var o,r;const i=(o=e.model.collectionField)==null?void 0:o.interface;(r=interfacesOfUnsupportedDefaultValue==null?void 0:interfacesOfUnsupportedDefaultValue.includes)!=null&&r.call(interfacesOfUnsupportedDefaultValue,i)||e.model.setProps({initialValue:t.defaultValue})}},required:{title:(0,import_flow_engine.escapeT)("Required"),use:"required"},model:{use:"fieldComponent",title:(0,import_flow_engine.escapeT)("Field component")},pattern:{title:(0,import_flow_engine.escapeT)("Display mode"),use:"pattern"},validation:{title:(0,import_flow_engine.escapeT)("Validation"),use:"validation"},fieldNames:{use:"titleField",uiSchema:e=>E(void 0,null,function*(){return e.collectionField.isAssociationField()&&e.model.getProps().titleField?{label:{"x-component":SelectOptions$1,"x-decorator":"FormItem"}}:null}),beforeParamsSave:(e,t,o)=>E(void 0,null,function*(){if(!(e.collectionField.isAssociationField()&&e.model.props.titleField))return null;if(t.label!==o.label){const r=e.collectionField.targetCollection,i=r.getField(t.label),n=DetailsItemModel.getDefaultBindingByField(e,i);if(n.modelName!==e.model.subModels.field.use){const l=e.model.subModels.field.uid;yield e.engine.destroyModel(l),yield e.model.setSubModel("field",{use:n.modelName,stepParams:{fieldSettings:{init:{dataSourceKey:e.model.collectionField.dataSourceKey,collectionName:r.name,fieldPath:t.label}}}}).save()}e.model.setProps(e.collectionField.targetCollection.getField(t.label).getComponentProps())}}),handler(e,t){return E(this,null,function*(){e.model.props.pattern==="readPretty"&&e.model.setProps({titleField:t==null?void 0:t.label})})}}}});class FormJSFieldItemModel extends import_flow_engine.FlowModel{static defineChildren(t){var o;const r=(0,import_flow_engine.buildWrapperFieldChildren)(t,{useModel:"FormItemModel",fieldUseModel:"JSEditableFieldModel",associationPathName:t.prefixFieldPath,refreshTargets:["FormItemModel","FilterFormItemModel"]});return((o=r==null?void 0:r[0])==null?void 0:o.children)||[]}}FormJSFieldItemModel.define({label:(0,import_flow_engine.escapeT)("JS field"),searchable:!0,searchPlaceholder:(0,import_flow_engine.escapeT)("Search fields"),menuType:"submenu",sort:110});function resolveRunJsParams(e,t){var o,r,i,n;const l=((o=e.inputArgs)==null?void 0:o.preview)||{},a=(i=(r=l==null?void 0:l.version)!=null?r:t==null?void 0:t.version)!=null?i:"v1",c=typeof(l==null?void 0:l.code)=="string"?l.code:void 0;return{code:(n=c??(t==null?void 0:t.code))!=null?n:"",version:a}}class JSFormActionModel extends FormActionModel{}JSFormActionModel.define({label:(0,import_flow_engine.escapeT)("JS action"),sort:9999});JSFormActionModel.registerFlow({key:"clickSettings",on:"click",title:(0,import_flow_engine.escapeT)("Click settings"),steps:{runJs:{title:(0,import_flow_engine.escapeT)("Write JavaScript"),uiSchema:{code:{type:"string","x-component":CodeEditor,"x-component-props":{minHeight:"320px",theme:"light",enableLinter:!0,wrapperStyle:{position:"fixed",inset:8}}}},uiMode:{type:"embed",props:{styles:{body:{transform:"translateX(0)"}}}},defaultParams(e){return{version:"v1",code:`
|
|
1776
|
+
${c}`}class DataBlockModel extends BlockModel{}DataBlockModel.define({hide:!0,label:(0,import_flow_engine.escapeT)("Data blocks"),children(e){return E(this,null,function*(){const t=yield(0,import_flow_engine.buildSubModelItems)(DataBlockModel)(e),{collectionName:o,filterByTk:r,scene:i}=e.view.inputArgs;return t.filter(n=>{var l,a,c;const u=e.engine.getModelClass(n.useModel);return i==="select"?(l=u._isScene)==null?void 0:l.call(u,"select"):i==="new"||o&&!r?(a=u._isScene)==null?void 0:a.call(u,"new"):!u._isScene||!((c=u._isScene)!=null&&c.call(u,"select"))})})}});class CollectionBlockModel extends DataBlockModel{constructor(){super(...arguments),k(this,"isManualRefresh",!1)}static filterCollection(t){return!!t.filterTargetKey}static defineChildren(t){return E(this,null,function*(){const o=d=>{var m;if(!((m=this.meta)!=null&&m.createModelOptions))return d||{};if(typeof this.meta.createModelOptions=="function"){const p=this.meta.createModelOptions(t);return import_lodash.default.merge({},p,d)}return import_lodash.default.merge({},this.meta.createModelOptions,d)},r=d=>this.name+d,{dataSourceKey:i,collectionName:n,associationName:l}=t.view.inputArgs,a=t.dataSourceManager.getDataSources().map(d=>d.getCollections().length===0?null:{key:r(`ds-${d.key}`),label:d.displayName,searchable:!0,searchPlaceholder:(0,import_flow_engine.escapeT)("Search"),children:m=>d.getCollections().map(p=>{if(!this.filterCollection(p))return null;const h={dataSourceKey:p.dataSourceKey,collectionName:p.name};return{key:r(`ds-${d.key}.${p.name}`),label:p.title,useModel:this.name,createModelOptions:o({stepParams:{resourceSettings:{init:h}}})}}).filter(Boolean)}).filter(Boolean),c=d=>a.length===1?a[0].children(d):a;if(!n)return c(t);if(this._isScene("new")||this._isScene("select")){const d={dataSourceKey:i,collectionName:n};return l&&(d.associationName=l,d.sourceId="{{ctx.view.inputArgs.sourceId}}"),[{key:r("current-collection"),label:"Current collection",useModel:this.name,createModelOptions:o({stepParams:{resourceSettings:{init:d}}})},{key:r("others-collections"),label:"Other collections",children:c(t)}]}const u=[{key:r("associated"),label:"Associated records",children:()=>t.dataSourceManager.getCollection(i,n).getAssociationFields(this._getScene()).map(d=>{if(!d.targetCollection||!this.filterCollection(d.targetCollection))return null;const m={dataSourceKey:i,collectionName:d.target,associationName:d.resourceName,sourceId:"{{ctx.view.inputArgs.filterByTk}}"};return{key:r(`associated-${d.name}`),label:d.title,useModel:this.name,createModelOptions:o({stepParams:{resourceSettings:{init:m}}})}}).filter(Boolean)},{key:r("others-records"),label:"Other records",children:c(t)}];if(this._isScene("one")){const d={dataSourceKey:i,collectionName:n,filterByTk:"{{ctx.view.inputArgs.filterByTk}}"};l&&(d.associationName=l,d.sourceId="{{ctx.view.inputArgs.sourceId}}"),u.unshift({key:r("current-record"),label:"Current record",useModel:this.name,createModelOptions:o({stepParams:{resourceSettings:{init:d}}})})}return u})}get dataSource(){return this.context.dataSource}get collection(){return this.context.collection}get resource(){return this.context.resource}get association(){return this.context.association}get associationField(){return this.context.association}getAclActionName(){return"view"}getFilterFields(){return E(this,null,function*(){return this.collection.getFields().filter(t=>t.filterable)})}getResourceSettingsInitParams(){return this.getStepParams("resourceSettings","init")}onInit(t){super.onInit(t),this.context.defineProperty("blockModel",{value:this}),this.context.defineProperty("actionName",{get:()=>this.getAclActionName(),cache:!1}),this.context.defineProperty("resourceName",{get:()=>this.resource.getResourceName(),cache:!1}),this.context.defineProperty("dataSource",{get:()=>{const o=this.getResourceSettingsInitParams();return this.context.dataSourceManager.getDataSource(o.dataSourceKey)}}),this.context.defineProperty("collection",{get:()=>{const o=this.getResourceSettingsInitParams();return this.context.dataSourceManager.getCollection(o.dataSourceKey,o.collectionName)},meta:(0,import_flow_engine.createCollectionContextMeta)(()=>{const o=this.getResourceSettingsInitParams();return this.context.dataSourceManager.getCollection(o.dataSourceKey,o.collectionName)},this.context.t("Current collection"))}),this.context.defineProperty("resource",{get:()=>{const o=this.getResourceSettingsInitParams(),r=this.createResource(this.context,o);return r.setDataSourceKey(o.dataSourceKey),r.setResourceName(o.associationName||o.collectionName),r.on("refresh",()=>{this.invalidateAutoFlowCache()}),r}}),this.context.defineProperty("association",{get:()=>{const o=this.getResourceSettingsInitParams();if(o.associationName)return this.dataSource.getAssociation(o.associationName)}})}createResource(t,o){throw new Error("createResource method must be implemented in subclasses of CollectionBlockModel")}defaultBlockTitle(){var t,o,r,i,n,l,a;const c=this.translate(((t=this.constructor.meta)==null?void 0:t.label)||this.constructor.name),u=((o=this.dataSource)==null?void 0:o.displayName)||((r=this.dataSource)==null?void 0:r.key),d=((l=(n=(i=this.context)==null?void 0:i.dataSourceManager)==null?void 0:n.getDataSources)==null?void 0:l.call(n).length)||0,m=(a=this.collection)==null?void 0:a.title;if(this.association){const p=this.resource.getResourceName(),h=this.dataSource.getCollection(p.split(".")[0]);return createDefaultCollectionBlockTitle({blockLabel:c,dsName:u,dsCount:d,collectionTitle:m,sourceCollectionTitle:h.title,associationTitle:this.association.title})}return createDefaultCollectionBlockTitle({blockLabel:c,dsName:u,dsCount:d,collectionTitle:m})}addAppends(t,o=!1){if(console.log(t),!!t)if(t.includes(".")){const[r,i]=t.split("."),n=this.context.dataSourceManager.getCollectionField(`${this.collection.dataSourceKey}.${this.collection.name}.${r}`).target,l=this.context.dataSourceManager.getCollectionField(`${this.collection.dataSourceKey}.${n}.${i}`);l&&l.isAssociationField()&&(this.resource.addAppends(t),o&&this.resource.refresh())}else{const r=this.context.dataSourceManager.getCollectionField(`${this.collection.dataSourceKey}.${this.collection.name}.${t}`);if(!r)return;r.isAssociationField()&&(console.log(r.name),this.resource.addAppends(r.name),o&&this.resource.refresh())}}}CollectionBlockModel.registerFlow({key:"resourceSettings",sort:-999,steps:{aclCheck:{use:"aclCheck"},init:{handler(e,t){if(!t.dataSourceKey)throw new Error("dataSourceKey is required");if(!t.collectionName)throw new Error("collectionName is required");Object.keys(t).includes("sourceId")&&e.resource.setSourceId(t.sourceId),Object.keys(t).includes("filterByTk")&&e.resource.setFilterByTk(t.filterByTk)}}}});CollectionBlockModel.registerFlow({key:"refreshSettings",sort:1e4,steps:{refresh:{handler(e){return E(this,null,function*(){e.model.context.filterManager.bindToTarget(e.model.uid),e.model.isManualRefresh?e.model.resource.loading=!1:yield e.model.resource.refresh()})}}}});CollectionBlockModel.define({hide:!0});class CommonItemModel extends import_flow_engine.FlowModel{}class FilterBlockModel extends BlockModel{}FilterBlockModel.define({hide:!0,label:"Filter blocks"});class PageModel extends import_flow_engine.FlowModel{constructor(){super(...arguments),k(this,"tabBarExtraContent",{}),k(this,"createPageTabModelOptions",()=>{const t=(0,import_shared.uid)();return{uid:t,use:"RootPageTabModel",props:{route:{parentId:this.props.routeId,type:"tabs",schemaUid:t,tabSchemaName:(0,import_shared.uid)(),params:[],hideInMenu:!1,enableTabs:!1}}}})}mapTabs(){return this.mapSubModels("tabs",t=>({key:t.uid,label:(0,import_jsx_runtime.jsx)(import_flow_engine.Droppable,{model:t,children:(0,import_jsx_runtime.jsx)(import_flow_engine.FlowModelRenderer,{model:t,showFlowSettings:{showBackground:!0,showBorder:!1},extraToolbarItems:[{key:"drag-handler",component:import_flow_engine.DragHandler,sort:1}]})}),children:t.renderChildren()}))}renderFirstTab(){var t,o;const r=(t=this.subModels.tabs)==null?void 0:t[0];return(o=r==null?void 0:r.renderChildren)==null?void 0:o.call(r)}handleDragEnd(t){return E(this,null,function*(){throw new Error("Method not implemented.")})}renderTabs(){var t;return(0,import_jsx_runtime.jsx)(import_flow_engine.DndProvider,{onDragEnd:this.handleDragEnd.bind(this),children:(0,import_jsx_runtime.jsx)(import_antd.Tabs,{defaultActiveKey:(t=this.context.view.inputArgs)==null?void 0:t.tabUid,tabBarStyle:this.props.tabBarStyle,items:this.mapTabs(),onChange:o=>{var r,i;(i=(r=this.context.view.navigation)==null?void 0:r.changeTo)==null||i.call(r,{tabUid:o})},tabBarExtraContent:f({right:(0,import_jsx_runtime.jsx)(import_flow_engine.AddSubModelButton,{model:this,subModelKey:"tabs",items:[{key:"blank",label:this.context.t("Blank tab"),createModelOptions:this.createPageTabModelOptions}],children:(0,import_jsx_runtime.jsx)(import_flow_engine.FlowSettingsButton,{icon:(0,import_jsx_runtime.jsx)(import_icons.PlusOutlined,{}),children:this.context.t("Add tab")})})},this.tabBarExtraContent)})})}render(){return(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[this.props.displayTitle&&(0,import_jsx_runtime.jsx)(import_pro_layout.PageHeader,{title:this.props.title,style:this.props.headerStyle}),this.props.enableTabs?this.renderTabs():this.renderFirstTab()]})}}PageModel.registerFlow({key:"pageSettings",title:(0,import_flow_engine.escapeT)("Page settings"),steps:{general:{title:(0,import_flow_engine.escapeT)("Edit page"),uiSchema:{title:{type:"string",title:(0,import_flow_engine.escapeT)("Page title"),"x-decorator":"FormItem","x-component":"Input","x-reactions":{dependencies:["displayTitle"],fulfill:{state:{visible:"{{$deps[0]}}"}}}},displayTitle:{type:"boolean",title:(0,import_flow_engine.escapeT)("Display page title"),"x-decorator":"FormItem","x-component":"Switch"},enableTabs:{type:"boolean",title:(0,import_flow_engine.escapeT)("Enable tabs"),"x-decorator":"FormItem","x-component":"Switch"}},defaultParams(e){return{displayTitle:!0,enableTabs:!1}},handler(e,t){return E(this,null,function*(){var o,r;if(e.model.setProps("displayTitle",t.displayTitle),e.model.context.closable)e.model.setProps("title",t.title?e.t(t.title):null);else{const i=(r=(o=e.model.context)==null?void 0:o.currentRoute)==null?void 0:r.title;e.model.setProps("title",e.t(t.title||i))}e.model.setProps("enableTabs",t.enableTabs),e.view.type!=="embed"?(e.model.setProps("headerStyle",{backgroundColor:"var(--colorBgLayout)"}),e.model.setProps("tabBarStyle",{backgroundColor:"var(--colorBgLayout)",paddingInline:16,marginBottom:0})):(e.model.setProps("headerStyle",{backgroundColor:"var(--colorBgContainer)"}),e.model.setProps("tabBarStyle",{backgroundColor:"var(--colorBgContainer)",paddingInline:16,marginBottom:0}))})}}}});class ChildPageModel extends PageModel{constructor(){super(...arguments),k(this,"tabBarExtraContent",{left:(0,import_jsx_runtime.jsx)(BackButtonUsedInSubPage,{})}),k(this,"createPageTabModelOptions",()=>({use:"ChildPageTabModel"}))}handleDragEnd(t){return E(this,null,function*(){var o,r;if(!((o=t.active)!=null&&o.id)||!((r=t.over)!=null&&r.id))throw new Error("Invalid drag event");this.flowEngine.moveModel(t.active.id,t.over.id)})}}const BackButtonUsedInSubPage=()=>{const e=(0,import_flow_engine.useFlowContext)(),t=e.themeToken,o=32,r=(0,import_react2.useMemo)(()=>({width:"auto",height:"auto",lineHeight:1,padding:t.paddingXS,marginRight:o-t.paddingXS}),[t.paddingXS]);return e.view.type!=="embed"?null:(0,import_jsx_runtime.jsx)(import_antd.Button,{"aria-label":"back-button",type:"text",icon:(0,import_jsx_runtime.jsx)(import_icons.ArrowLeftOutlined,{}),style:r,onClick:e.view.destroy})};class OldPageModel extends import_flow_engine.FlowModel{}OldPageModel.registerFlow({key:"pageSettings",title:(0,import_flow_engine.escapeT)("Page settings"),steps:{general:{title:(0,import_flow_engine.escapeT)("General"),uiSchema:{title:{type:"string",title:(0,import_flow_engine.escapeT)("Page title"),"x-decorator":"FormItem","x-component":"Input","x-reactions":{dependencies:["displayTitle"],fulfill:{state:{visible:"{{$deps[0]}}"}}}},displayTitle:{type:"boolean",title:(0,import_flow_engine.escapeT)("Display page title"),"x-decorator":"FormItem","x-component":"Switch"}},defaultParams(e){return{displayTitle:!0,enableTabs:!1}},handler(e,t){return E(this,null,function*(){var o,r;if(e.model.setProps("displayTitle",t.displayTitle),e.model.context.closable)e.model.setProps("title",t.title?e.t(t.title):null);else{const i=(r=(o=e.model.context)==null?void 0:o.currentRoute)==null?void 0:r.title;e.model.setProps("title",e.t(t.title||i))}e.model.setProps("enableTabs",t.enableTabs),e.model.context.closable?(e.model.setProps("headerStyle",{backgroundColor:e.themeToken.colorBgContainer}),e.model.setProps("tabBarStyle",{backgroundColor:e.themeToken.colorBgLayout,paddingInline:16,marginBottom:0})):(e.model.setProps("headerStyle",{backgroundColor:e.themeToken.colorBgContainer}),e.model.setProps("tabBarStyle",{backgroundColor:e.themeToken.colorBgContainer,paddingInline:16,marginBottom:0}))})}}}});class MainPageModel extends OldPageModel{renderFirstTab(){var t;return(0,import_jsx_runtime.jsx)(import_flow_engine.FlowModelRenderer,{model:(t=this.subModels.tabs)==null?void 0:t[0]})}render(){return(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[this.props.displayTitle&&(0,import_jsx_runtime.jsx)(import_pro_layout.PageHeader,{title:this.props.title,style:this.props.headerStyle}),this.renderFirstTab()]})}}function PageTabChildrenRenderer({ctx:e,options:t}){const{data:o,loading:r}=(0,import_ahooks.useRequest)(()=>E(this,null,function*(){const i=yield e.engine.loadOrCreateModel(t);return i.context.addDelegate(e),i}),{refreshDeps:[e.model.uid]});return r||!(o!=null&&o.uid)?(0,import_jsx_runtime.jsx)(SkeletonFallback,{style:{margin:16}}):(0,import_jsx_runtime.jsx)(import_flow_engine.FlowModelRenderer,{model:o,fallback:(0,import_jsx_runtime.jsx)(SkeletonFallback,{style:{margin:16}})})}class BasePageTabModel extends import_flow_engine.FlowModel{getTabTitle(t="Untitled"){var o,r;return this.context.t(((r=(o=this.stepParams.pageTabSettings)==null?void 0:o.tab)==null?void 0:r.title)||t)}getTabIcon(){var t,o;return(o=(t=this.stepParams.pageTabSettings)==null?void 0:t.tab)==null?void 0:o.icon}renderChildren(){return null}render(){return(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsx)(Icon,{style:{marginRight:8},type:this.getTabIcon()}),this.getTabTitle()]})}}BasePageTabModel.registerFlow({key:"pageTabSettings",title:(0,import_flow_engine.escapeT)("Tab settings"),steps:{tab:{title:(0,import_flow_engine.escapeT)("Edit tab"),preset:!0,uiSchema:{title:{title:(0,import_flow_engine.escapeT)("Tab name"),"x-component":"Input","x-decorator":"FormItem",required:!0},icon:{title:(0,import_flow_engine.escapeT)("Icon"),"x-decorator":"FormItem","x-component":"IconPicker"}},handler(e,t){return E(this,null,function*(){e.model.setProps("title",t.title),e.model.setProps("icon",t.icon)})}}}});class RootPageTabModel extends BasePageTabModel{renderChildren(){return(0,import_jsx_runtime.jsx)(PageTabChildrenRenderer,{ctx:this.context,options:{parentId:this.uid,subKey:"grid",async:!0,subType:"object",use:"BlockGridModel"}})}saveStepParams(){return E(this,null,function*(){return this.save()})}save(){return E(this,null,function*(){yield this.context.api.request({method:"post",url:"desktopRoutes:updateOrCreate",params:{filterKeys:["schemaUid"]},data:I(f({},this.props.route),{title:this.getTabTitle(""),icon:this.getTabIcon()})})})}destroy(){return E(this,null,function*(){return this.observerDispose(),this.invalidateAutoFlowCache(!0),this.flowEngine.removeModel(this.uid),yield this.context.api.request({method:"post",url:"desktopRoutes:destroy",params:{filter:{schemaUid:this.uid}},data:this.props.route}),!0})}}class ChildPageTabModel extends BasePageTabModel{renderChildren(){return(0,import_jsx_runtime.jsx)(PageTabChildrenRenderer,{ctx:this.context,options:{parentId:this.uid,subKey:"grid",async:!0,subType:"object",use:"BlockGridModel"}})}}class PageTabModel extends import_flow_engine.FlowModel{render(){return(0,import_jsx_runtime.jsx)("div",{children:(0,import_jsx_runtime.jsx)(RemoteFlowModelRenderer,{parentId:this.uid,subKey:"grid",showFlowSettings:!1})})}}class RootPageModel extends PageModel{saveStepParams(){return E(this,null,function*(){yield Se(RootPageModel.prototype,this,"saveStepParams").call(this),this.context.api.request({url:`desktopRoutes:update?filter[id]=${this.props.routeId}`,method:"post",data:{enableTabs:!!this.stepParams.pageSettings.general.enableTabs}})})}handleDragEnd(t){return E(this,null,function*(){var o,r;const i=this.flowEngine.getModel((o=t.active)==null?void 0:o.id),n=this.flowEngine.getModel((r=t.over)==null?void 0:r.id);!i||!n||(yield this.context.api.request({url:"desktopRoutes:move",method:"post",params:{sourceId:i.props.route.id,targetId:n.props.route.id,sortField:"sort"}}),this.flowEngine.moveModel(i.uid,n.uid,{persist:!1}))})}}RootPageModel.registerFlow({key:"rootPageSettings",steps:{init:{handler(e,t){return E(this,null,function*(){var o,r;if(e.model.hasSubModel("tabs"))return;const{data:i}=yield e.api.request({url:"desktopRoutes:getAccessible",params:{sort:"sort",filter:{schemaUid:e.model.parentId},appends:["children"]}});e.model.setProps("routeId",(o=i==null?void 0:i.data)==null?void 0:o.id);const n=import_lodash.default.castArray((r=i==null?void 0:i.data)==null?void 0:r.children);for(const l of n){if(l.hideInMenu)continue;const a=e.engine.createModel({parentId:e.model.uid,uid:l.schemaUid,subKey:"tabs",subType:"array",use:"RootPageTabModel",props:{route:l},stepParams:{pageTabSettings:{tab:{title:l.title,icon:l.icon}}}});e.model.addSubModel("tabs",a)}})}}}});class SubPageModel extends OldPageModel{renderFirstTab(){var t;return(0,import_jsx_runtime.jsx)(import_flow_engine.FlowModelRenderer,{model:(t=this.subModels.tabs)==null?void 0:t[0]})}render(){return(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[this.props.displayTitle&&(0,import_jsx_runtime.jsx)(import_pro_layout.PageHeader,{title:this.props.title,style:this.props.headerStyle}),this.renderFirstTab()]})}}class PopupActionModel extends ActionModel{constructor(){super(...arguments),k(this,"defaultProps",{title:(0,import_flow_engine.escapeT)("Popup")})}}PopupActionModel.define({label:(0,import_flow_engine.escapeT)("Popup")});PopupActionModel.registerFlow(openViewFlow);class RecordActionModel extends ActionModel{}RecordActionModel.define({children:e=>E(void 0,null,function*(){return(yield(0,import_flow_engine.buildSubModelItems)(ActionModel)(e)).filter(t=>e.engine.getModelClass(t.useModel)._isScene(ActionSceneEnum.record))})});class FormBlockModel extends CollectionBlockModel{constructor(){super(...arguments),k(this,"_defaultCustomModelClasses",{FormActionGroupModel:"FormActionGroupModel",FormItemModel:"FormItemModel",FormCustomItemModel:"FormCustomItemModel"}),k(this,"customModelClasses",{})}get form(){return this.context.form}renderConfigureActions(){return(0,import_jsx_runtime.jsx)(import_flow_engine.AddSubModelButton,{model:this,subModelKey:"actions",subModelBaseClass:this.getModelClassName("FormActionGroupModel"),children:(0,import_jsx_runtime.jsx)(import_flow_engine.FlowSettingsButton,{icon:(0,import_jsx_runtime.jsx)(import_icons.SettingOutlined,{}),children:this.translate("Actions")})})}setFieldsValue(t){this.form.setFieldsValue(t)}setFieldValue(t,o){this.form.setFieldValue(t,o)}useHooksBeforeRender(){const[t]=import_antd.Form.useForm();this.context.defineProperty("form",{get:()=>t});const o=(0,import_flow_engine.createRecordMetaFactory)(()=>this.collection,"Current form");this.context.defineProperty("formValues",{get:()=>this.context.form.getFieldsValue(),cache:!1,meta:o})}onInit(t){super.onInit(t),(0,import_flow_engine.createCurrentRecordMetaFactory)(this.context,()=>this.collection),this.context.defineProperty("record",{get:()=>this.getCurrentRecord(),cache:!1})}onMount(){super.onMount(),setTimeout(()=>{this.applyFlow("eventSettings")},100)}getCurrentRecord(){return{}}renderComponent(){throw new Error("renderComponent method must be implemented in subclasses of FormModel")}}function FormComponent(e){var t=e,{model:o,children:r,layoutProps:i={},initialValues:n}=t,l=W(t,["model","children","layoutProps","initialValues"]);return(0,import_jsx_runtime.jsx)(import_antd.Form,I(f(I(f({form:o.form,initialValues:o.context.record||n},(0,import_lodash.omit)(i,"labelWidth")),{labelCol:{style:{width:i==null?void 0:i.labelWidth}},onValuesChange:(a,c)=>{o.dispatchEvent("formValuesChange",{changedValues:a,allValues:c},{debounce:!0})}}),l),{children:r}))}FormBlockModel.define({hide:!0});FormBlockModel.registerFlow({key:"formModelSettings",title:(0,import_flow_engine.escapeT)("Form settings"),steps:{layout:{use:"layout",title:(0,import_flow_engine.escapeT)("Layout")}}});FormBlockModel.registerFlow({key:"eventSettings",title:(0,import_flow_engine.escapeT)("Event settings"),on:"formValuesChange",steps:{linkageRules:{use:"fieldLinkageRules",afterParamsSave(e){e.model.applyFlow("eventSettings")}}}});FormBlockModel.registerEvents({formValuesChange:{title:(0,import_flow_engine.escapeT)("Form values change"),name:"formValuesChange",uiSchema:{condition:{type:"object",title:(0,import_flow_engine.escapeT)("Trigger condition"),"x-decorator":"FormItem","x-component":ConditionBuilder}},handler:commonConditionHandler}});class FormModel extends FormBlockModel{}FormModel.define({hide:!0});class CreateFormModel extends FormBlockModel{constructor(){super(...arguments),k(this,"actionFlowSettings",{showBackground:!1,showBorder:!1,toolbarPosition:"above"}),k(this,"actionExtraToolbarItems",[{key:"drag-handler",component:import_flow_engine.DragHandler,sort:1}])}createResource(t,o){const r=this.context.createResource(import_flow_engine.SingleRecordResource);return r.isNewRecord=!0,r}getAclActionName(){return"create"}renderComponent(){const{colon:t,labelAlign:o,labelWidth:r,labelWrap:i,layout:n}=this.props;return(0,import_jsx_runtime.jsxs)(FormComponent,{model:this,layoutProps:{colon:t,labelAlign:o,labelWidth:r,labelWrap:i,layout:n},children:[(0,import_jsx_runtime.jsx)(import_flow_engine.FlowModelRenderer,{model:this.subModels.grid,showFlowSettings:!1}),(0,import_jsx_runtime.jsx)(import_flow_engine.DndProvider,{children:(0,import_jsx_runtime.jsxs)(import_antd.Space,{children:[this.mapSubModels("actions",l=>(0,import_jsx_runtime.jsx)(import_flow_engine.Droppable,{model:l,children:(0,import_jsx_runtime.jsx)(import_flow_engine.MemoFlowModelRenderer,{model:l,showFlowSettings:this.flowEngine.flowSettings.enabled?this.actionFlowSettings:!1,extraToolbarItems:this.actionExtraToolbarItems},l.uid)},l.uid)),this.renderConfigureActions()]})})]})}}k(CreateFormModel,"scene",BlockSceneEnum.new);CreateFormModel.registerFlow({key:"formSettings",title:(0,import_flow_engine.escapeT)("Form settings"),steps:{init:{handler(e){return E(this,null,function*(){if(!e.resource)throw new Error("Resource is not initialized");e.model.form})}},refresh:{}}});CreateFormModel.define({label:(0,import_flow_engine.escapeT)("Form (Add new)"),searchable:!0,searchPlaceholder:(0,import_flow_engine.escapeT)("Search"),createModelOptions:{use:"CreateFormModel",subModels:{grid:{use:"FormGridModel"}}},sort:350});class EditFormModel extends FormBlockModel{constructor(){super(...arguments),k(this,"actionFlowSettings",{showBackground:!1,showBorder:!1,toolbarPosition:"above"}),k(this,"actionExtraToolbarItems",[{key:"drag-handler",component:import_flow_engine.DragHandler,sort:1}]),k(this,"handlePageChange",t=>E(this,null,function*(){if(this.resource instanceof import_flow_engine.MultiRecordResource){const o=this.resource;o.setPage(t),o.loading=!0,yield o.refresh()}}))}createResource(t,o){var r,i;if(((r=this.association)==null?void 0:r.type)==="hasOne"||((i=this.association)==null?void 0:i.type)==="belongsTo"){const l=this.context.createResource(import_flow_engine.SingleRecordResource);return l.isNewRecord=!1,l}if(Object.keys(o).includes("filterByTk")){const l=this.context.createResource(import_flow_engine.SingleRecordResource);return l.isNewRecord=!1,l}const n=this.context.createResource(import_flow_engine.MultiRecordResource);return n.setPageSize(1),n}isMultiRecordResource(){return this.resource instanceof import_flow_engine.MultiRecordResource}getCurrentRecord(){const t=this.resource.getData();return Array.isArray(t)?t[0]:t}getAclActionName(){return"update"}renderComponent(){const{colon:t,labelAlign:o,labelWidth:r,labelWrap:i,layout:n}=this.props;return(0,import_jsx_runtime.jsxs)(FormComponent,{model:this,layoutProps:{colon:t,labelAlign:o,labelWidth:r,labelWrap:i,layout:n},children:[(0,import_jsx_runtime.jsx)(import_flow_engine.FlowModelRenderer,{model:this.subModels.grid,showFlowSettings:!1}),(0,import_jsx_runtime.jsx)(import_flow_engine.DndProvider,{children:(0,import_jsx_runtime.jsxs)(import_antd.Space,{children:[this.mapSubModels("actions",l=>(0,import_jsx_runtime.jsx)(import_flow_engine.Droppable,{model:l,children:(0,import_jsx_runtime.jsx)(import_flow_engine.MemoFlowModelRenderer,{model:l,showFlowSettings:this.flowEngine.flowSettings.enabled?this.actionFlowSettings:!1,extraToolbarItems:this.actionExtraToolbarItems},l.uid)},l.uid)),this.renderConfigureActions()]})}),this.isMultiRecordResource()&&this.resource.getMeta("count")>1&&(0,import_jsx_runtime.jsx)("div",{style:{textAlign:"center",marginTop:16},children:(0,import_jsx_runtime.jsx)(import_antd.Pagination,{simple:!0,pageSize:1,showSizeChanger:!1,defaultCurrent:this.resource.getPage(),total:this.resource.getTotalPage(),onChange:this.handlePageChange,style:{display:"inline-block"}})})]})}}k(EditFormModel,"scene",BlockSceneEnum.oam);EditFormModel.registerFlow({key:"formSettings",title:(0,import_flow_engine.escapeT)("Edit form settings"),steps:{init:{handler(e){return E(this,null,function*(){if(!e.resource)throw new Error("Resource is not initialized");e.resource.on("refresh",()=>E(this,null,function*(){var t;const o=f({},e.model.getCurrentRecord());if(!o)return;const r=(t=e.association)==null?void 0:t.targetKey;r?e.resource.setMeta({currentFilterByTk:o==null?void 0:o[r]}):e.resource.setMeta({currentFilterByTk:e.collection.getFilterByTK(o)}),e.form&&e.form.setFieldsValue(o)}))})}},refresh:{handler(e){return E(this,null,function*(){if(!e.resource)throw new Error("Resource is not initialized")})}}}});EditFormModel.define({label:(0,import_flow_engine.escapeT)("Form (Edit)"),searchable:!0,searchPlaceholder:(0,import_flow_engine.escapeT)("Search"),createModelOptions:{use:"EditFormModel",subModels:{grid:{use:"FormGridModel"}}},sort:340});class FormActionModel extends ActionModel{}class FormSubmitActionModel extends FormActionModel{constructor(){super(...arguments),k(this,"defaultProps",{title:(0,import_flow_engine.escapeT)("Submit"),type:"primary",htmlType:"submit"})}setSaveRequestConfig(t){this.setStepParams("submitSettings","saveResource",{requestConfig:t})}}FormSubmitActionModel.define({label:(0,import_flow_engine.escapeT)("Submit")});FormSubmitActionModel.registerFlow({key:"submitSettings",on:"click",steps:{saveResource:{handler(e,t){return E(this,null,function*(){if(!(e!=null&&e.resource))throw new Error("Resource is not initialized");if(!e.blockModel)throw new Error("Block model is not initialized");const o=e.resource,r=e.blockModel;try{yield r.form.validateFields();const i=r.form.getFieldsValue();if(o instanceof import_flow_engine.SingleRecordResource){if(r instanceof EditFormModel){const n=o.getMeta("currentFilterByTk");n?o.setFilterByTk(n):o.isNewRecord=!0}yield o.save(i,t.requestConfig),r instanceof EditFormModel?(o.isNewRecord=!1,yield o.refresh()):(r.form.resetFields(),r.emitter.emit("onFieldReset"))}else if(o instanceof import_flow_engine.MultiRecordResource){const n=o.getMeta("currentFilterByTk");if(!n){e.message.error(e.t("No filterByTk found for multi-record resource."));return}yield o.update(n,i,t.requestConfig)}}catch(i){e.message.error(e.t("Save failed")),console.error("Form submission error:",i);return}e.message.success(e.t("Saved successfully")),e.view&&e.view.close()})}}}});class FormActionGroupModel extends ActionGroupModel{}k(FormActionGroupModel,"baseClass",FormActionModel);class FormCustomItemModel extends import_flow_engine.FlowModel{static defineChildren(t){const o=t.engine.filterModelClassByParent("CommonItemModel"),r=t.engine.filterModelClassByParent("FormCustomItemModel"),i=n=>Array.from(n.entries()).map(([l,a])=>{var c,u,d,m;const p=typeof a.defineChildren=="function"||!!((c=a.meta)!=null&&c.children),h={key:l,label:t.t(a.meta.label),sort:(u=a.meta.sort)!=null?u:999,searchable:!!((d=a.meta)!=null&&d.searchable),searchPlaceholder:(m=a.meta)==null?void 0:m.searchPlaceholder};return p?h.children=g=>{var x;return typeof a.defineChildren=="function"?a.defineChildren(g):((x=a.meta)==null?void 0:x.children)||[]}:h.createModelOptions={use:l},h});return import_lodash.default.sortBy([...i(o),...i(r)],"sort")}}k(FormCustomItemModel,"renderMode",import_flow_engine.ModelRenderMode.RenderFunction);FormCustomItemModel.define({hide:!0,label:(0,import_flow_engine.escapeT)("Others")});class FormGridModel extends GridModel{constructor(){super(...arguments),k(this,"itemSettingsMenuLevel",2),k(this,"itemFlowSettings",{showBackground:!0,style:{top:-6,left:-6,right:-6,bottom:-6}}),k(this,"dragOverlayConfig",{columnInsert:{before:{offsetTop:-12,height:24},after:{offsetTop:7,height:24}},columnEdge:{left:{offsetLeft:-5,width:24},right:{offsetLeft:8,width:24}},rowGap:{above:{offsetTop:0,height:24},below:{offsetTop:-14,height:24}}})}renderAddSubModelButton(){return(0,import_jsx_runtime.jsx)(import_flow_engine.AddSubModelButton,{subModelKey:"items",subModelBaseClasses:[this.context.getModelClassName("FormItemModel"),this.context.getModelClassName("FormCustomItemModel"),this.context.getModelClassName("FormJSFieldItemModel")].filter(Boolean),model:this,keepDropdownOpen:!0,children:(0,import_jsx_runtime.jsx)(import_flow_engine.FlowSettingsButton,{icon:(0,import_jsx_runtime.jsx)(import_icons.SettingOutlined,{}),children:this.translate("Fields")})})}}FormGridModel.registerFlow({key:"formFieldGridSettings",steps:{grid:{handler(e,t){e.model.setProps("rowGap",0),e.model.setProps("colGap",16)}}}});const interfacesOfUnsupportedDefaultValue=["o2o","oho","obo","o2m","attachment","expression","point","lineString","circle","polygon","sequence","formula"];function buildDynamicName(e,t){if(!(t!=null&&t.length))return e;const[o,r]=t[t.length-1].split(":"),i=Number(r),n=e.indexOf(o);return n===-1?e:[i,...e.slice(n+1)]}class FormItemModel extends import_flow_engine.EditableItemModel{static defineChildren(t){const o=t.collection;return o.getFields().map(r=>{const i=this.getDefaultBindingByField(t,r);if(!i)return;const n=i.modelName,l=t.prefixFieldPath?`${t.prefixFieldPath}.${r.name}`:r.name;return{key:l,label:r.title,refreshTargets:["FormItemModel/FormJSFieldItemModel"],toggleable:a=>{var c;return((c=a.getStepParams("fieldSettings","init"))==null?void 0:c.fieldPath)===l},useModel:"FormItemModel",createModelOptions:()=>({use:"FormItemModel",stepParams:{fieldSettings:{init:{dataSourceKey:o.dataSourceKey,collectionName:t.model.context.blockModel.collection.name,fieldPath:l}}},subModels:{field:{use:n,props:typeof i.defaultProps=="function"?i.defaultProps(t,r):i.defaultProps}}})}}).filter(Boolean)}onInit(t){super.onInit(t),this.emitter.on("onSubModelAdded",o=>{this.collectionField&&o.setProps(this.collectionField.getComponentProps())})}render(){const t=this.subModels.field,o=this.context.fieldIndex,r=o!=null?(()=>{const n=t.createFork({},`${o}`);return n.context.defineProperty("fieldIndex",{get:()=>o}),n})():t,i=buildDynamicName(this.props.name,o);return(0,import_jsx_runtime.jsx)(import_flow_engine.FormItem,I(f({},this.props),{name:i,children:(0,import_jsx_runtime.jsx)(import_flow_engine.FieldModelRenderer,{model:r,name:i})}))}}FormItemModel.define({label:(0,import_flow_engine.escapeT)("Display collection fields"),sort:100});FormItemModel.registerFlow({key:"editItemSettings",sort:300,title:(0,import_flow_engine.escapeT)("Form item settings"),steps:{label:{title:(0,import_flow_engine.escapeT)("Label"),uiSchema:e=>({label:{"x-component":"Input","x-decorator":"FormItem","x-reactions":t=>{var o,r;const i=e.model,n=(o=i.collectionField)==null?void 0:o.title;t.decoratorProps=I(f({},t.decoratorProps),{extra:i.context.t("Original field title: ")+((r=i.context.t(n))!=null?r:"")})}}}),defaultParams:e=>{var t;return{label:(t=e.collectionField)==null?void 0:t.title}},handler(e,t){var o;e.model.setProps({label:t.label||((o=e.collectionField)==null?void 0:o.title)})}},aclCheck:{use:"aclCheck"},init:{handler(e){return E(this,null,function*(){const t=e.model.fieldPath,o=t.includes(".")?t.split("."):t;e.model.setProps({name:o})})}},showLabel:{title:(0,import_flow_engine.escapeT)("Show label"),uiSchema:{showLabel:{"x-component":"Switch","x-decorator":"FormItem","x-component-props":{checkedChildren:(0,import_flow_engine.escapeT)("Yes"),unCheckedChildren:(0,import_flow_engine.escapeT)("No")}}},defaultParams:{showLabel:!0},handler(e,t){e.model.setProps({showLabel:t.showLabel})}},tooltip:{title:(0,import_flow_engine.escapeT)("Tooltip"),uiSchema:{tooltip:{"x-component":"Input.TextArea","x-decorator":"FormItem"}},handler(e,t){e.model.setProps({tooltip:t.tooltip})}},description:{title:(0,import_flow_engine.escapeT)("Description"),uiSchema:{description:{"x-component":"Input.TextArea","x-decorator":"FormItem","x-component-props":{autoSize:!0}}},handler(e,t){e.model.setProps({extra:t.description})}},initialValue:{title:(0,import_flow_engine.escapeT)("Default value"),uiSchema:e=>{var t,o,r,i,n,l;if(e.model.parent.parent instanceof EditFormModel||(o=(t=e.model.parent)==null?void 0:t.parent)!=null&&o.updateAssociation||(i=(r=e.model.subModels)==null?void 0:r.field)!=null&&i.updateAssociation)return;const a=(n=e.model.collectionField)==null?void 0:n.interface;if(!((l=interfacesOfUnsupportedDefaultValue==null?void 0:interfacesOfUnsupportedDefaultValue.includes)!=null&&l.call(interfacesOfUnsupportedDefaultValue,a)))return{defaultValue:{"x-component":"DefaultValue","x-decorator":"FormItem"}}},defaultParams:e=>{const t=e.model.collectionField;if(t.interface==="nanoid"){const{size:o,customAlphabet:r}=t.options||{size:21};return{defaultValue:(0,import_nanoid.customAlphabet)(r,o)()}}return{defaultValue:t.defaultValue}},handler(e,t){var o,r;const i=(o=e.model.collectionField)==null?void 0:o.interface;(r=interfacesOfUnsupportedDefaultValue==null?void 0:interfacesOfUnsupportedDefaultValue.includes)!=null&&r.call(interfacesOfUnsupportedDefaultValue,i)||e.model.setProps({initialValue:t.defaultValue})}},required:{title:(0,import_flow_engine.escapeT)("Required"),use:"required"},model:{use:"fieldComponent",title:(0,import_flow_engine.escapeT)("Field component")},pattern:{title:(0,import_flow_engine.escapeT)("Display mode"),use:"pattern"},validation:{title:(0,import_flow_engine.escapeT)("Validation"),use:"validation"},fieldNames:{use:"titleField",uiSchema:e=>E(void 0,null,function*(){return e.collectionField?e.collectionField.isAssociationField()&&e.model.getProps().titleField?{label:{"x-component":SelectOptions$1,"x-decorator":"FormItem"}}:null:void 0}),beforeParamsSave:(e,t,o)=>E(void 0,null,function*(){if(!(e.collectionField.isAssociationField()&&e.model.props.titleField))return null;if(t.label!==o.label){const r=e.collectionField.targetCollection,i=r.getField(t.label),n=DetailsItemModel.getDefaultBindingByField(e,i);if(n.modelName!==e.model.subModels.field.use){const l=e.model.subModels.field.uid;yield e.engine.destroyModel(l),yield e.model.setSubModel("field",{use:n.modelName,stepParams:{fieldSettings:{init:{dataSourceKey:e.model.collectionField.dataSourceKey,collectionName:r.name,fieldPath:t.label}}}}).save()}e.model.setProps(e.collectionField.targetCollection.getField(t.label).getComponentProps())}}),handler(e,t){return E(this,null,function*(){e.model.props.pattern==="readPretty"&&e.model.setProps({titleField:t==null?void 0:t.label})})}}}});class FormJSFieldItemModel extends import_flow_engine.FlowModel{static defineChildren(t){var o;const r=(0,import_flow_engine.buildWrapperFieldChildren)(t,{useModel:"FormItemModel",fieldUseModel:"JSEditableFieldModel",associationPathName:t.prefixFieldPath,refreshTargets:["FormItemModel","FilterFormItemModel"]});return((o=r==null?void 0:r[0])==null?void 0:o.children)||[]}}FormJSFieldItemModel.define({label:(0,import_flow_engine.escapeT)("JS field"),searchable:!0,searchPlaceholder:(0,import_flow_engine.escapeT)("Search fields"),menuType:"submenu",sort:110});function resolveRunJsParams(e,t){var o,r,i,n;const l=((o=e.inputArgs)==null?void 0:o.preview)||{},a=(i=(r=l==null?void 0:l.version)!=null?r:t==null?void 0:t.version)!=null?i:"v1",c=typeof(l==null?void 0:l.code)=="string"?l.code:void 0;return{code:(n=c??(t==null?void 0:t.code))!=null?n:"",version:a}}class JSFormActionModel extends FormActionModel{}JSFormActionModel.define({label:(0,import_flow_engine.escapeT)("JS action"),sort:9999});JSFormActionModel.registerFlow({key:"clickSettings",on:"click",title:(0,import_flow_engine.escapeT)("Click settings"),steps:{runJs:{title:(0,import_flow_engine.escapeT)("Write JavaScript"),uiSchema:{code:{type:"string","x-component":CodeEditor,"x-component-props":{minHeight:"320px",theme:"light",enableLinter:!0,wrapperStyle:{position:"fixed",inset:8}}}},uiMode:{type:"embed",props:{styles:{body:{transform:"translateX(0)"}}}},defaultParams(e){return{version:"v1",code:`
|
|
1777
1777
|
const values = ctx.form?.getFieldsValue?.() || {};
|
|
1778
1778
|
ctx.message.success('Current form values: ' + JSON.stringify(values));
|
|
1779
1779
|
`}},handler(e,t){return E(this,null,function*(){const{code:o,version:r}=resolveRunJsParams(e,t);e.defineMethod("refresh",()=>E(this,null,function*(){var i,n,l;(n=(i=e.blockModel)==null?void 0:i.resource)!=null&&n.refresh?yield e.blockModel.resource.refresh():(l=e.resource)!=null&&l.refresh&&(yield e.resource.refresh())})),yield e.runjs(o,{window:(0,import_flow_engine.createSafeWindow)(),document:(0,import_flow_engine.createSafeDocument)()},{version:r})})}}}});class QuickEditFormModel extends import_flow_engine.FlowModel{constructor(){super(...arguments),k(this,"fieldPath"),k(this,"now",Date.now()),k(this,"viewContainer"),k(this,"__onSubmitSuccess"),k(this,"_fieldProps")}get form(){return this.context.form}useHooksBeforeRender(){const[t]=import_antd.Form.useForm();this.context.defineProperty("form",{get:()=>t})}static open(t){return E(this,null,function*(){const{flowEngine:o,target:r,dataSourceKey:i,collectionName:n,fieldPath:l,filterByTk:a,record:c,onSuccess:u,fieldProps:d}=t,m=o.createModel({use:"QuickEditFormModel",stepParams:{quickEditFormSettings:{init:{dataSourceKey:i,collectionName:n,fieldPath:l}}}});console.log("QuickEditFormModel.open2",Date.now()-m.now),m.now=Date.now(),yield o.context.viewer.open({type:"popover",target:r,placement:"rightTop",styles:{body:{width:400}},content:p=>(m.viewContainer=p,m.__onSubmitSuccess=u,m._fieldProps=d,console.log("QuickEditFormModel.open3",Date.now()-m.now),(0,import_jsx_runtime.jsx)(import_flow_engine.FlowModelRenderer,{fallback:(0,import_jsx_runtime.jsx)(import_antd.Skeleton.Input,{size:"small"}),model:m,inputArgs:{filterByTk:a,record:c}}))})})}onInit(t){super.onInit(t),this.context.defineProperty("blockModel",{value:this});const o=(0,import_flow_engine.createCurrentRecordMetaFactory)(this.context,()=>this.collection);this.context.defineProperty("record",{get:()=>this.resource.getData(),resolveOnServer:!0,meta:o})}addAppends(t,o=!1){const r=this.context.dataSourceManager.getCollectionField(`${this.collection.dataSourceKey}.${this.collection.name}.${t}`);r&&r.isAssociationField()&&(this.resource.addAppends(t),o&&this.resource.refresh())}render(){return console.log("QuickEditFormModel.open4",Date.now()-this.now),(0,import_jsx_runtime.jsxs)(FormComponent,{model:this,children:[this.mapSubModels("fields",t=>(0,import_jsx_runtime.jsx)(import_flow_engine.FormItem,I(f({showLabel:!1,name:this.fieldPath,initialValue:this.context.record[this.fieldPath]},this.props),{children:(0,import_jsx_runtime.jsx)(import_flow_engine.FieldModelRenderer,{model:t,fallback:(0,import_jsx_runtime.jsx)(import_antd.Skeleton.Input,{size:"small"})})}),t.uid)),(0,import_jsx_runtime.jsxs)(import_antd.Space,{style:{display:"flex",justifyContent:"flex-end"},children:[(0,import_jsx_runtime.jsx)(import_antd.Button,{onClick:()=>{this.viewContainer.close()},children:this.context.t("Cancel")}),(0,import_jsx_runtime.jsx)(import_antd.Button,{type:"primary",htmlType:"submit",onClick:()=>E(this,null,function*(){var t,o,r;const i=this.form.getFieldsValue();yield this.form.submit();const n=f({},i),l={[this.fieldPath]:(t=this.resource.getData())==null?void 0:t[this.fieldPath]};try{this.resource.save(n,{refresh:!1}).catch(a=>{}),(o=this.__onSubmitSuccess)==null||o.call(this,n),this.viewContainer.close(),this.context.message.success(this.context.t("Saved successfully"))}catch(a){console.error("Failed to save form data:",a),this.context.message.error(this.context.t("Failed to save form data")),(r=this.__onSubmitSuccess)==null||r.call(this,l)}}),children:this.context.t("Submit")})]})]})}}QuickEditFormModel.registerFlow({key:"quickEditFormSettings",sort:100,steps:{init:{handler(e,t){return E(this,null,function*(){var o;const{dataSourceKey:r,collectionName:i,fieldPath:n}=t;if(!r||!i||!n)throw new Error("dataSourceKey, collectionName and fieldPath are required parameters");e.model.fieldPath=n,e.model.collection=e.dataSourceManager.getCollection(r,i);const l=e.createResource(import_flow_engine.SingleRecordResource);l.setDataSourceKey(r),l.setResourceName(i),e.model.resource=l;const a=e.model.collection.getField(n);if(a){const c=FormItemModel.getDefaultBindingByField(e,a);if(!c)return;const u=c.modelName,d=e.model.addSubModel("fields",{use:u,props:typeof c.defaultProps=="function"?c.defaultProps(e,a):c.defaultProps,stepParams:{fieldSettings:{init:{dataSourceKey:r,collectionName:i,fieldPath:n}}}});d.setProps(f(f({},a.getComponentProps()),e.model._fieldProps)),e.model.context.defineProperty("collectionField",{get:()=>a}),e.model.addAppends(n),yield d.applyAutoFlows()}(e.inputArgs.filterByTk||e.inputArgs.record)&&(l.setFilterByTk(e.inputArgs.filterByTk),l.setData(e.inputArgs.record),(o=e.model.form)==null||o.setFieldsValue(l.getData()))})}}}});QuickEditFormModel.define({hide:!0});function RemoteModelRenderer({options:e}){const t=(0,import_flow_engine.useFlowViewContext)(),{data:o,loading:r}=(0,import_ahooks.useRequest)(()=>E(this,null,function*(){return yield t.engine.loadOrCreateModel(e,{delegateToParent:!1,delegate:t})}),{refreshDeps:[t,e]});return r||!(o!=null&&o.uid)?(0,import_jsx_runtime.jsx)(SkeletonFallback,{style:{margin:16}}):(0,import_jsx_runtime.jsx)(import_flow_engine.FlowModelRenderer,{model:o,fallback:(0,import_jsx_runtime.jsx)(SkeletonFallback,{style:{margin:16}})})}function RecordPickerContent({model:e,toOne:t=!1}){const o=(0,import_flow_engine.useFlowContext)(),{Header:r,Footer:i}=o.view;return e._closeView=o.view.close,(0,import_jsx_runtime.jsxs)("div",{children:[(0,import_jsx_runtime.jsx)(r,{title:o.t("Select record")}),(0,import_jsx_runtime.jsx)(RemoteModelRenderer,{options:{parentId:o.view.inputArgs.parentId,subKey:"grid",async:!0,delegateToParent:!1,subType:"object",use:"BlockGridModel"}}),!t&&(0,import_jsx_runtime.jsx)(i,{children:(0,import_jsx_runtime.jsx)(import_antd.Button,{type:"primary",onClick:()=>{e.change(),o.view.close()},children:o.t("Submit")})})]})}function RecordPickerField(e){const{fieldNames:t}=e,o=(0,import_flow_engine.useFlowContext)(),r=["belongsTo","hasOne"].includes(o.collectionField.type);(0,import_react2.useEffect)(()=>{o.model.selectedRows.value=e.value},[e.value]);const i=(n,l,a)=>n?a?I(f({},n),{label:n[l.label],value:n[l.value]}):n.map(c=>I(f({},c),{label:c[l.label],value:c[l.value]})):a?void 0:[];return(0,import_jsx_runtime.jsx)(import_antd.Select,I(f({},e),{open:!1,value:i(e.value,t,r),labelRender:n=>(0,import_jsx_runtime.jsx)(LabelByField,{option:n,fieldNames:t}),labelInValue:!0,mode:r?void 0:"multiple",options:e.value,allowClear:!0,onChange:(n,l)=>{o.model.selectedRows.value=l,o.model.change()}}))}class RecordPickerFieldModel extends FieldModel{constructor(){super(...arguments),k(this,"selectedRows",import_flow_engine.observable.ref([])),k(this,"_closeView")}get collectionField(){return this.context.collectionField}render(){return(0,import_jsx_runtime.jsx)(RecordPickerField,f({},this.props))}onInit(t){super.onInit(t),this.context.defineProperty("collection",{get:()=>{var o;return(o=this.context.collectionField)==null?void 0:o.targetCollection},meta:(0,import_flow_engine.createCollectionContextMeta)(()=>{var o;return(o=this.context.collectionField)==null?void 0:o.targetCollection},this.context.t("Current collection"))}),this.onClick=o=>{this.dispatchEvent("openView",{event:o})}}set onClick(t){this.setProps({onClick:t})}change(){this.props.onChange(this.selectedRows.value)}}RecordPickerFieldModel.registerFlow({key:"popupSettings",title:(0,import_flow_engine.escapeT)("Selector setting"),on:{eventName:"openView"},steps:{openView:{title:(0,import_flow_engine.escapeT)("Edit popup"),uiSchema:{mode:{type:"string",title:(0,import_flow_engine.escapeT)("Open mode"),enum:[{label:(0,import_flow_engine.escapeT)("Drawer"),value:"drawer"},{label:(0,import_flow_engine.escapeT)("Dialog"),value:"dialog"}],"x-decorator":"FormItem","x-component":"Radio.Group"},size:{type:"string",title:(0,import_flow_engine.escapeT)("Popup size"),enum:[{label:(0,import_flow_engine.escapeT)("Small"),value:"small"},{label:(0,import_flow_engine.escapeT)("Medium"),value:"medium"},{label:(0,import_flow_engine.escapeT)("Large"),value:"large"}],"x-decorator":"FormItem","x-component":"Radio.Group"}},defaultParams:{mode:"drawer",size:"medium"},handler(e,t){var o;const r=["belongsTo","hasOne"].includes(e.collectionField.type),i={drawer:{small:"30%",medium:"50%",large:"70%"},dialog:{small:"40%",medium:"50%",large:"80%"},embed:{}},n=e.inputArgs.mode||t.mode||"drawer",l=e.inputArgs.size||t.size||"medium";e.viewer.open({type:n,width:i[n][l],inheritContext:!1,inputArgs:{parentId:e.model.uid,scene:"select",dataSourceKey:e.collection.dataSourceKey,collectionName:(o=e.collectionField)==null?void 0:o.target,collectionField:e.collectionField,rowSelectionProps:{type:r?"radio":"checkbox",defaultSelectedRows:()=>e.model.props.value,renderCell:void 0,selectedRowKeys:void 0,onChange:(a,c)=>{var u,d;if(r)e.model.selectedRows.value=c==null?void 0:c[0],e.model.change(),(d=(u=e.model)._closeView)==null||d.call(u);else{const m=[...e.model.selectedRows.value||[],...c].filter((p,h,g)=>h===g.findIndex(x=>x[e.collection.filterTargetKey]===p[e.collection.filterTargetKey]));e.model.selectedRows.value=m}}}},content:()=>(0,import_jsx_runtime.jsx)(RecordPickerContent,{model:e.model,toOne:r}),styles:{content:f({padding:0,backgroundColor:e.model.flowEngine.context.themeToken.colorBgLayout},n==="embed"?{position:"absolute",top:0,left:0,right:0,bottom:0}:{}),body:{padding:0}}})}}}});RecordPickerFieldModel.registerFlow({key:"recordPickerSettings",title:(0,import_flow_engine.escapeT)("RecordPicker settings"),sort:200,steps:{fieldNames:{use:"titleField"}}});RecordPickerFieldModel.define({label:(0,import_flow_engine.escapeT)("Record picker")});import_flow_engine.EditableItemModel.bindModelToInterface("RecordPickerFieldModel",["m2m","m2o","o2o","o2m","oho","obo","updatedBy","createdBy","mbm"]);class AssignFormModel extends FormBlockModel{createResource(t,o){const r=this.context.createResource(import_flow_engine.SingleRecordResource);return r.isNewRecord=!0,r}renderComponent(){var t;const{colon:o,labelAlign:r,labelWidth:i,labelWrap:n,layout:l}=this.props;return(0,import_jsx_runtime.jsx)(FormComponent,{model:this,layoutProps:{colon:o,labelAlign:r,labelWidth:i,labelWrap:n,layout:l},children:(0,import_jsx_runtime.jsx)(import_flow_engine.FlowModelRenderer,{model:(t=this.subModels)==null?void 0:t.grid,showFlowSettings:!1})})}setInitialAssignedValues(t){var o;const r=(o=this.subModels)==null?void 0:o.grid;Object.entries(t||{}).forEach(([i,n])=>{r.addOrEnsureItem(i,n)})}getAssignedValues(){return this.subModels.grid.getAssignedValues()||{}}}AssignFormModel.define({label:(0,import_flow_engine.escapeT)("Field assignments"),hide:!0,createModelOptions:{use:"AssignFormModel",subModels:{grid:{use:"AssignFormGridModel"}}}});class AssignFormGridModel extends FormGridModel{renderAddSubModelButton(){var t,o;const r=(t=this.context)==null?void 0:t.collection,i=((o=r==null?void 0:r.getFields)==null?void 0:o.call(r))||[],n=typeof(r==null?void 0:r.getPrimaryKey)=="function"?r.getPrimaryKey():void 0,l=r==null?void 0:r.filterTargetKey,a=u=>u?!!(n&&u===n||typeof l=="string"&&u===l||Array.isArray(l)&&l.includes(u)):!1,c=i.filter(u=>!a(u==null?void 0:u.name)).map(u=>{const d=u.name,m=u.title||u.name,p=import_flow_engine.EditableItemModel.getDefaultBindingByField(this.context,u);if(!p)return;const h=p.modelName;return{key:d,label:m,toggleable:g=>{const x=g.getStepParams("fieldSettings","init")||{};return(x==null?void 0:x.fieldPath)===d},useModel:"AssignFormItemModel",createModelOptions:()=>({use:"AssignFormItemModel",stepParams:{fieldSettings:{init:{dataSourceKey:r==null?void 0:r.dataSourceKey,collectionName:r==null?void 0:r.name,fieldPath:d}}},subModels:{field:{use:h,stepParams:{fieldSettings:{init:{dataSourceKey:r==null?void 0:r.dataSourceKey,collectionName:r==null?void 0:r.name,fieldPath:d}}}}}})}}).filter(Boolean);return(0,import_jsx_runtime.jsx)(import_flow_engine.AddSubModelButton,{subModelKey:"items",model:this,items:c,keepDropdownOpen:!0,children:(0,import_jsx_runtime.jsx)(import_flow_engine.FlowSettingsButton,{icon:(0,import_jsx_runtime.jsx)(import_icons.SettingOutlined,{}),children:this.translate("Fields")})})}addOrEnsureItem(t,o){var r,i,n;const l=(r=this.context)==null?void 0:r.collection,a=(((i=this.subModels)==null?void 0:i.items)||[]).find(p=>(p==null?void 0:p.context.fieldPath)===t);if(a){typeof(a==null?void 0:a.setStepParams)=="function"&&a.setStepParams("fieldSettings","assignValue",{value:o}),a.assignValue=o;return}const c=(((n=l==null?void 0:l.getFields)==null?void 0:n.call(l))||[]).find(p=>p.name===t),u=import_flow_engine.EditableItemModel.getDefaultBindingByField(this.context,c);if(!u)return;const d=u.modelName,m=this.flowEngine.createModel({use:"AssignFormItemModel",stepParams:{fieldSettings:{init:{dataSourceKey:l==null?void 0:l.dataSourceKey,collectionName:l==null?void 0:l.name,fieldPath:t},assignValue:{value:o}}},subModels:{field:{use:d,stepParams:{fieldSettings:{init:{dataSourceKey:l==null?void 0:l.dataSourceKey,collectionName:l==null?void 0:l.name,fieldPath:t}}}}},parentId:this.uid,subKey:"items"});m.assignValue=o}getAssignedValues(){var t;const o=((t=this.subModels)==null?void 0:t.items)||[],r={};for(const i of o){const n=typeof i.getAssignedEntry=="function"?i.getAssignedEntry():null;n&&Array.isArray(n)&&(r[n[0]]=n[1])}return r}}AssignFormGridModel.define({label:(0,import_flow_engine.escapeT)("Assign grid")});class AssignFormItemModel extends FormItemModel{constructor(t){super(t),k(this,"assignValue"),(0,import_reactive.define)(this,{assignValue:import_reactive.observable})}onInit(t){var o,r,i,n,l,a,c;const u=(o=this.getStepParams("fieldSettings","assignValue"))==null?void 0:o.value;typeof u<"u"&&(this.assignValue=u),this.context.defineProperty("collectionField",{get:()=>{var x,_;const v=this.getStepParams("fieldSettings","init")||{},C=`${v==null?void 0:v.dataSourceKey}.${v==null?void 0:v.collectionName}.${v==null?void 0:v.fieldPath}`,y=(x=this.context)==null?void 0:x.dataSourceManager;return(_=y==null?void 0:y.getCollectionField)==null?void 0:_.call(y,C)}});const d=this.context,m=d==null?void 0:d.collection,p=this.fieldInit;if(!((r=this.subModels)!=null&&r.field)&&m!=null&&m.getFields){const x=(m.getFields()||[]).find(C=>(C==null?void 0:C.name)===(p==null?void 0:p.fieldPath));(i=m==null?void 0:m.getField)==null||i.call(m,p==null?void 0:p.fieldPath);const _=import_flow_engine.EditableItemModel.getDefaultBindingByField(d,x);if(!_)return;const v=_.modelName;(l=(n=d==null?void 0:d.engine)==null?void 0:n.createModel)==null||l.call(n,{use:v,stepParams:{fieldSettings:{init:p}},parentId:this.uid,subKey:"field"})}const h=(a=this.context)==null?void 0:a.collection,g=this.fieldPath;if(g){const x=(c=h==null?void 0:h.getField)==null?void 0:c.call(h,g),_=(x==null?void 0:x.title)||g,v=g.includes(".")?g.split("."):[g];this.setProps({label:_,name:v})}}get fieldInit(){return this.getStepParams("fieldSettings","init")||{}}get fieldPath(){var t;return(t=this.fieldInit)==null?void 0:t.fieldPath}getAssignedEntry(){const t=this.fieldPath;return t?[t,this.assignValue]:null}render(){var t;const o=this.context,r=o.collection,i=this.fieldInit,n=((t=this.props)==null?void 0:t.name)||(this.fieldPath?[this.fieldPath]:void 0),l=this.fieldPath;return(0,import_jsx_runtime.jsx)(()=>{var a,c,u,d,m,p,h;const[g,x]=import_react2.default.useState(null);import_react2.default.useEffect(()=>{var F,j,P,T,M,R,B,D,w,$,N,A,O,q,V,L,U,z,G;if(!l)return;const Y=(((F=r==null?void 0:r.getFields)==null?void 0:F.call(r))||[]).find(se=>(se==null?void 0:se.name)===l);r.getField(l);const K=import_flow_engine.EditableItemModel.getDefaultBindingByField(o,Y);if(!K)return;const J=K.modelName,H=(P=(j=o==null?void 0:o.engine)==null?void 0:j.createModel)==null?void 0:P.call(j,{use:"VariableFieldFormModel",subModels:{fields:[{use:J,stepParams:{fieldSettings:{init:i}}}]}});if(!H)return;(M=(T=H.context)==null?void 0:T.defineProperty)==null||M.call(T,"collection",{value:r});const Q=o==null?void 0:o.dataSource;Q&&((B=(R=H.context)==null?void 0:R.defineProperty)==null||B.call(R,"dataSource",{value:Q}));const X=(D=r==null?void 0:r.getField)==null?void 0:D.call(r,i==null?void 0:i.fieldPath);X&&(($=(w=H.context)==null?void 0:w.defineProperty)==null||$.call(w,"collectionField",{value:X}));const te=o==null?void 0:o.blockModel;te&&((A=(N=H.context)==null?void 0:N.defineProperty)==null||A.call(N,"blockModel",{value:te})),H.context&&Object.defineProperty(H.context,"resource",{configurable:!0,enumerable:!0,get:()=>te==null?void 0:te.resource});const Z=(q=(O=H==null?void 0:H.subModels)==null?void 0:O.fields)==null?void 0:q[0],oe=(V=r==null?void 0:r.getField)==null?void 0:V.call(r,i==null?void 0:i.fieldPath),le=oe==null?void 0:oe.type,ie=oe==null?void 0:oe.interface,de=le==="belongsToMany"||le==="hasMany"||le==="belongsToArray"||ie==="m2m"||ie==="o2m"||ie==="mbm";if((L=Z==null?void 0:Z.setProps)==null||L.call(Z,{disabled:!1,readPretty:!1,pattern:"editable",updateAssociation:!1,multiple:de}),(U=Z==null?void 0:Z.applyAutoFlows)==null||U.call(Z),ensureOptionsFromUiSchemaEnumIfAbsent(Z,oe),!((z=Z==null?void 0:Z.props)!=null&&z.fieldNames)&&oe!=null&&oe.targetCollection){const se=oe.targetCollection,ce=(oe==null?void 0:oe.targetKey)||(se==null?void 0:se.filterTargetKey)||"id";(G=Z==null?void 0:Z.setProps)==null||G.call(Z,{fieldNames:{label:se==null?void 0:se.titleField,value:ce}})}return x(H),()=>{var se,ce,fe,pe;(fe=(ce=(se=H==null?void 0:H.subModels)==null?void 0:se.fields)==null?void 0:ce.forEach)==null||fe.call(ce,xe=>{var he;return(he=xe==null?void 0:xe.remove)==null?void 0:he.call(xe)}),(pe=H==null?void 0:H.remove)==null||pe.call(H)}},[]);const _=F=>(import_react2.default.useEffect(()=>{var j,P,T,M;if(!g)return;(j=g.setProps)==null||j.call(g,f({},F));const R=(T=(P=g==null?void 0:g.subModels)==null?void 0:P.fields)==null?void 0:T[0];R&&((M=R.setProps)==null||M.call(R,{value:F==null?void 0:F.value,onChange:(...B)=>{var D;const w=B&&B.length?B[0]:void 0;(D=F==null?void 0:F.onChange)==null||D.call(F,w)}}))},[F]),g?(0,import_jsx_runtime.jsx)("div",{style:{width:"100%"},children:(0,import_jsx_runtime.jsx)(import_flow_engine.FlowModelRenderer,{model:g,showFlowSettings:!1})}):null),v=()=>(0,import_jsx_runtime.jsx)(import_antd.Input,{placeholder:"<Null>",readOnly:!0,style:{width:"100%"}}),C={renderInputComponent:F=>{var j;const P=(j=F==null?void 0:F.paths)==null?void 0:j[0];if(P==="constant")return _;if(P==="null")return v},resolveValueFromPath:F=>{var j;const P=(j=F==null?void 0:F.paths)==null?void 0:j[0];if(P==="constant")return"";if(P==="null")return null},resolvePathFromValue:F=>F===null?["null"]:(0,import_flow_engine.isVariableExpression)(F)?(0,import_flow_engine.parseValueToPath)(F):["constant"]},y=()=>E(this,null,function*(){var F;const j=(F=this.context)==null?void 0:F.getPropertyMetaTree,P=typeof j=="function"?yield j():[];return[{title:(0,import_flow_engine.escapeT)("Constant"),name:"constant",type:"string",paths:["constant"],render:_},{title:(0,import_flow_engine.escapeT)("Null"),name:"null",type:"object",paths:["null"],render:v},...P]});let b=(u=(c=(a=this.props)==null?void 0:a.label)!=null?c:this.fieldPath)!=null?u:"";const S=(d=r==null?void 0:r.getField)==null?void 0:d.call(r,this.fieldPath);return b=(h=(p=(m=this.props)==null?void 0:m.label)!=null?p:S==null?void 0:S.title)!=null?h:b,(0,import_jsx_runtime.jsx)(import_flow_engine.FormItem,I(f({},this.props),{label:b,name:n,valuePropName:"__assign_value__",trigger:"__assign_trigger__",children:(0,import_jsx_runtime.jsx)(import_flow_engine.VariableInput,{value:this.assignValue,onChange:F=>{this.assignValue=F},metaTree:y,converters:C})}))},{})}}AssignFormItemModel.define({label:(0,import_flow_engine.escapeT)("Assign field")});AssignFormItemModel.registerFlow({key:"editItemSettings",sort:300,title:(0,import_flow_engine.escapeT)("Form item settings"),steps:{label:{title:(0,import_flow_engine.escapeT)("Label"),uiSchema:e=>({label:{"x-component":"Input","x-decorator":"FormItem","x-reactions":t=>{var o,r;const i=e.model,n=(o=i.collectionField)==null?void 0:o.title;t.decoratorProps=I(f({},t.decoratorProps),{extra:i.context.t("Original field title: ")+((r=i.context.t(n))!=null?r:"")})}}}),defaultParams:e=>({label:e.model.collectionField.title}),handler(e,t){e.model.setProps({label:t.label})}},init:{handler(e){return E(this,null,function*(){const t=e.model.collectionField;t&&e.model.setProps(t.getComponentProps());const o=e.model.fieldPath,r=o.includes(".")?o.split("."):o;e.model.setProps({name:r})})}},showLabel:{title:(0,import_flow_engine.escapeT)("Show label"),uiSchema:{showLabel:{"x-component":"Switch","x-decorator":"FormItem","x-component-props":{checkedChildren:(0,import_flow_engine.escapeT)("Yes"),unCheckedChildren:(0,import_flow_engine.escapeT)("No")}}},defaultParams:{showLabel:!0},handler(e,t){e.model.setProps({showLabel:t.showLabel})}},tooltip:{title:(0,import_flow_engine.escapeT)("Tooltip"),uiSchema:{tooltip:{"x-component":"Input.TextArea","x-decorator":"FormItem"}},handler(e,t){e.model.setProps({tooltip:t.tooltip})}},description:{title:(0,import_flow_engine.escapeT)("Description"),uiSchema:{description:{"x-component":"Input.TextArea","x-decorator":"FormItem"}},handler(e,t){e.model.setProps({extra:t.description})}},required:{title:(0,import_flow_engine.escapeT)("Required"),use:"required"},validation:{title:(0,import_flow_engine.escapeT)("Validation"),use:"validation"}}});class DetailsAssociationFieldGroupModel extends AssociationFieldGroupModel{}k(DetailsAssociationFieldGroupModel,"itemModelName","DetailsItemModel");DetailsAssociationFieldGroupModel.define({label:'{{t("Display association fields")}}'});class DetailsBlockModel extends CollectionBlockModel{constructor(){super(...arguments),k(this,"_defaultCustomModelClasses",{RecordActionGroupModel:"RecordActionGroupModel",DetailsItemModel:"DetailsItemModel",DetailsAssociationFieldGroupModel:"DetailsAssociationFieldGroupModel",DetailsCustomItemModel:"DetailsCustomItemModel"}),k(this,"customModelClasses",{}),k(this,"handlePageChange",t=>E(this,null,function*(){if(this.resource instanceof import_flow_engine.MultiRecordResource){const o=this.resource;o.setPage(t),o.loading=!0,yield this.refresh()}}))}createResource(t,o){var r,i;if(((r=this.association)==null?void 0:r.type)==="hasOne"||((i=this.association)==null?void 0:i.type)==="belongsTo"){const l=this.context.createResource(import_flow_engine.SingleRecordResource);return l.isNewRecord=!1,l}if(Object.keys(o).includes("filterByTk")){const l=this.context.createResource(import_flow_engine.SingleRecordResource);return l.isNewRecord=!1,l}const n=this.context.createResource(import_flow_engine.MultiRecordResource);return n.setPageSize(1),n}onInit(t){super.onInit(t);const o=(0,import_flow_engine.createCurrentRecordMetaFactory)(this.context,()=>this.collection);this.context.defineProperty("record",{get:()=>this.getCurrentRecord(),cache:!1,resolveOnServer:!0,meta:o})}isMultiRecordResource(){return this.resource instanceof import_flow_engine.MultiRecordResource}getCurrentRecord(){const t=this.resource.getData();return Array.isArray(t)?t[0]:t}refresh(){return E(this,null,function*(){yield this.resource.refresh()})}renderPagination(){const t=this.resource;return!this.isMultiRecordResource()||!t.getPage()||this.resource.getMeta("count")<=1?null:(0,import_jsx_runtime.jsx)("div",{style:{textAlign:"center"},children:(0,import_jsx_runtime.jsx)(import_antd.Pagination,{simple:!0,pageSize:1,showSizeChanger:!1,defaultCurrent:t.getPage(),total:t.getTotalPage(),onChange:this.handlePageChange,style:{display:"inline-block"}})})}renderComponent(){const{colon:t,labelAlign:o,labelWidth:r,labelWrap:i,layout:n}=this.props;return(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsx)(import_flow_engine.DndProvider,{children:(0,import_jsx_runtime.jsx)("div",{style:{padding:this.context.themeToken.padding,textAlign:"right"},children:(0,import_jsx_runtime.jsxs)(import_antd.Space,{children:[this.mapSubModels("actions",l=>(0,import_jsx_runtime.jsx)(import_flow_engine.Droppable,{model:l,children:(0,import_jsx_runtime.jsx)(import_flow_engine.FlowModelRenderer,{model:l,showFlowSettings:{showBackground:!1,showBorder:!1,toolbarPosition:"above"},extraToolbarItems:[{key:"drag-handler",component:import_flow_engine.DragHandler,sort:1}]})},l.uid)),(0,import_jsx_runtime.jsx)(import_flow_engine.AddSubModelButton,{model:this,subModelKey:"actions",subModelBaseClass:this.getModelClassName("RecordActionGroupModel"),afterSubModelInit:l=>E(this,null,function*(){l.setStepParams("buttonSettings","general",{type:"default"})}),children:(0,import_jsx_runtime.jsx)(import_flow_engine.FlowSettingsButton,{icon:(0,import_jsx_runtime.jsx)(import_icons.SettingOutlined,{}),children:this.translate("Actions")})},"details-actions-add")]})})}),(0,import_jsx_runtime.jsx)(FormComponent,{model:this,layoutProps:{colon:t,labelAlign:o,labelWidth:r,labelWrap:i,layout:n},children:(0,import_jsx_runtime.jsx)(import_flow_engine.FlowModelRenderer,{model:this.subModels.grid,showFlowSettings:!1})}),this.renderPagination()]})}}k(DetailsBlockModel,"scene",BlockSceneEnum.oam);DetailsBlockModel.registerFlow({key:"detailsSettings",title:(0,import_flow_engine.escapeT)("Details settings"),sort:150,steps:{refresh:{handler(e){return E(this,null,function*(){if(!e.resource)throw new Error("Resource is not initialized");yield e.model.applySubModelsAutoFlows("grid")})}},layout:{use:"layout",title:(0,import_flow_engine.escapeT)("Layout")},dataScope:{use:"dataScope"},linkageRules:{use:"detailsFieldLinkageRules"}}});DetailsBlockModel.define({label:(0,import_flow_engine.escapeT)("Details"),searchable:!0,searchPlaceholder:(0,import_flow_engine.escapeT)("Search"),createModelOptions:{use:"DetailsBlockModel",subModels:{grid:{use:"DetailsGridModel"}}},sort:350});class DetailsCustomItemModel extends import_flow_engine.FlowModel{static defineChildren(t){const o=t.engine.filterModelClassByParent("CommonItemModel"),r=t.engine.filterModelClassByParent("DetailsCustomItemModel"),i=n=>Array.from(n.entries()).map(([l,a])=>{var c,u,d,m;const p=typeof a.defineChildren=="function"||!!((c=a.meta)!=null&&c.children),h={key:l,label:t.t(a.meta.label),sort:(u=a.meta.sort)!=null?u:999,searchable:!!((d=a.meta)!=null&&d.searchable),searchPlaceholder:(m=a.meta)==null?void 0:m.searchPlaceholder};return p?h.children=g=>{var x;return typeof a.defineChildren=="function"?a.defineChildren(g):((x=a.meta)==null?void 0:x.children)||[]}:h.createModelOptions={use:l},h});return import_lodash.default.sortBy([...i(o),...i(r)],"sort")}}k(DetailsCustomItemModel,"renderMode",import_flow_engine.ModelRenderMode.RenderFunction);DetailsCustomItemModel.define({hide:!0,label:(0,import_flow_engine.escapeT)("Others")});class DetailsGridModel extends GridModel{constructor(){super(...arguments),k(this,"itemSettingsMenuLevel",2),k(this,"itemFlowSettings",{showBackground:!0,style:{top:-6,left:-6,right:-6,bottom:-6}}),k(this,"dragOverlayConfig",{columnInsert:{before:{offsetTop:-12,height:24},after:{offsetTop:7,height:24}},columnEdge:{left:{offsetLeft:-5,width:24},right:{offsetLeft:8,width:24}},rowGap:{above:{offsetTop:0,height:24},below:{offsetTop:-14,height:24}}})}renderAddSubModelButton(){return(0,import_jsx_runtime.jsx)(import_flow_engine.AddSubModelButton,{model:this,subModelKey:"items",subModelBaseClasses:[this.context.getModelClassName("DetailsItemModel"),this.context.getModelClassName("DetailsAssociationFieldGroupModel"),this.context.getModelClassName("DetailsCustomItemModel")].filter(Boolean),keepDropdownOpen:!0,children:(0,import_jsx_runtime.jsx)(import_flow_engine.FlowSettingsButton,{icon:(0,import_jsx_runtime.jsx)(import_icons.SettingOutlined,{}),children:this.translate("Fields")})})}}DetailsGridModel.registerFlow({key:"detailFieldGridSettings",steps:{grid:{handler(e,t){e.model.setProps("rowGap",0),e.model.setProps("colGap",16)}}}});class DetailsJSFieldItemModel extends DetailsCustomItemModel{static defineChildren(t){var o;const r=(0,import_flow_engine.buildWrapperFieldChildren)(t,{useModel:"DetailsItemModel",fieldUseModel:"JSFieldModel",refreshTargets:["DetailsItemModel"]});return((o=r==null?void 0:r[0])==null?void 0:o.children)||[]}}DetailsJSFieldItemModel.define({label:(0,import_flow_engine.escapeT)("JS field"),searchable:!0,searchPlaceholder:(0,import_flow_engine.escapeT)("Search fields"),sort:110});class FilterFormFieldModel extends FieldModel{}const FilterRangePicker=e=>{const{value:t,picker:o="date",format:r,showTime:i,timeFormat:n}=e,l=(0,import_flow_engine.useFlowEngine)(),a=l.translate.bind(l),c=getDateRanges(),u=[{label:a("Today"),value:c.today},{label:a("Last week"),value:c.lastWeek},{label:a("This week"),value:c.thisWeek},{label:a("Next week"),value:c.nextWeek},{label:a("Last month"),value:c.lastMonth},{label:a("This month"),value:c.thisMonth},{label:a("Next month"),value:c.nextMonth},{label:a("Last quarter"),value:c.lastQuarter},{label:a("This quarter"),value:c.thisQuarter},{label:a("Next quarter"),value:c.nextQuarter},{label:a("Last year"),value:c.lastYear},{label:a("This year"),value:c.thisYear},{label:a("Next year"),value:c.nextYear},{label:a("Last 7 days"),value:c.last7Days},{label:a("Next 7 days"),value:c.next7Days},{label:a("Last 30 days"),value:c.last30Days},{label:a("Next 30 days"),value:c.next30Days},{label:a("Last 90 days"),value:c.last90Days},{label:a("Next 90 days"),value:c.next90Days}],d=t?inferPickerType(t==null?void 0:t[0],o):o,m=(0,import_client.getPickerFormat)(d)||r,p=I(f({utc:!0,presets:u},e),{format:(0,import_client.getDateTimeFormat)(d,m,i,n),picker:d,showTime:i?{defaultValue:[(0,import_client.dayjs)("00:00:00","HH:mm:ss"),(0,import_client.dayjs)("23:59:59","HH:mm:ss")]}:!1}),h=(0,import_react2.useMemo)(()=>import_lodash.default.castArray(e.value).map(g=>g?(0,import_client.dayjs)(g):null),[e.value]);return(0,import_jsx_runtime.jsx)(import_antd.DatePicker.RangePicker,I(f({},p),{style:f({flex:1},p==null?void 0:p.style),value:h}))},FilterDatePicker=e=>{const{picker:t="date",format:o,showTime:r,timeFormat:i}=e,n=(0,import_flow_engine.useFlowContext)(),l=Array.isArray(e.value)?e.value[0]:e.value,a=l?inferPickerType(l,t):t,[c,u]=(0,import_react2.useState)(a),d=(0,import_client.getPickerFormat)(a)||o,m=n.model.translate.bind(n.model),p=I(f({utc:!0,inputReadOnly:n.isMobileLayout},e),{underFilter:!0,showTime:r?{defaultValue:(0,import_client.dayjs)("00:00:00","HH:mm:ss")}:!1,format:(0,import_client.getDateTimeFormat)(c,d,r,i),picker:c}),[h,g]=(0,import_react2.useState)(p),x=(0,import_react2.useMemo)(()=>l?(0,import_client.dayjs)(l):null,[l]);return(0,import_jsx_runtime.jsxs)(import_antd.Space.Compact,{style:{width:"100%"},children:[(0,import_jsx_runtime.jsx)(import_antd.Select,{style:{width:"100px"},popupMatchSelectWidth:!1,value:c,options:[{label:m("Date"),value:"date"},{label:m("Month"),value:"month"},{label:m("Quarter"),value:"quarter"},{label:m("Year"),value:"year"}],onChange:_=>{u(_);const v=(0,import_client.getPickerFormat)(_),C=(0,import_client.getDateTimeFormat)(_,v,r,i);p.picker=_,p.format=C,g(p)}}),(0,import_jsx_runtime.jsx)(import_antd.DatePicker,I(f({},h),{style:f({flex:1},h==null?void 0:h.style),value:x}))]})},getOptions=e=>[{value:"exact",label:e("Exact day")},{value:"past",label:e("Past")},{value:"next",label:e("Next")},{value:"today",label:e("Today")},{value:"yesterday",label:e("Yesterday")},{value:"tomorrow",label:e("Tomorrow")},{value:"thisWeek",label:e("This Week")},{value:"lastWeek",label:e("Last Week")},{value:"nextWeek",label:e("Next Week")},{value:"thisMonth",label:e("This Month")},{value:"lastMonth",label:e("Last Month")},{value:"nextMonth",label:e("Next Month")},{value:"thisQuarter",label:e("This Quarter")},{value:"lastQuarter",label:e("Last Quarter")},{value:"nextQuarter",label:e("Next Quarter")},{value:"thisYear",label:e("This Year")},{value:"lastYear",label:e("Last Year")},{value:"nextYear",label:e("Next Year")}],SmartDatePicker=e=>{const t=e,{isRange:o,defaultValue:r}=t,i=W(t,["isRange","defaultValue"]);return o?(0,import_jsx_runtime.jsx)(FilterRangePicker,f({},i)):(0,import_jsx_runtime.jsx)(FilterDatePicker,f({},i))},DateFilterDynamicComponent=e=>{const{value:t,onChange:o}=e,r=(0,import_flow_engine.useFlowEngine)(),i=r.translate.bind(r),{token:n}=import_antd.theme.useToken(),[l,a]=(0,import_react2.useState)(!1),c=(0,import_react2.useMemo)(()=>getOptions(i),[i]),u=m=>{if(a(!1),m==="exact")return o(void 0);const p={type:m};["past","next"].includes(m)&&(p.number=1,p.unit="day"),o(p)},d=()=>{const m=c.slice(0,3),p=c.slice(3),h=import_css.css`
|
|
@@ -1889,12 +1889,12 @@ ctx.element.innerHTML = \`
|
|
|
1889
1889
|
.ant-pagination-item-link {
|
|
1890
1890
|
min-width: ${this.context.themeToken.controlHeight}px;
|
|
1891
1891
|
}
|
|
1892
|
-
`,children:[c," ",(0,import_jsx_runtime.jsx)("div",{children:this.resource.getPage()})]}):c}}renderComponent(){return(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsx)(import_flow_engine.DndProvider,{children:(0,import_jsx_runtime.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:16},children:[(0,import_jsx_runtime.jsxs)(import_antd.Space,{children:[this.mapSubModels("actions",t=>t.props.position==="left"?(0,import_jsx_runtime.jsx)(import_flow_engine.FlowModelRenderer,{model:t,showFlowSettings:{showBackground:!1,showBorder:!1,toolbarPosition:"above"}},t.uid):null),(0,import_jsx_runtime.jsx)("span",{})]}),(0,import_jsx_runtime.jsxs)(import_antd.Space,{children:[this.mapSubModels("actions",t=>t.props.position!=="left"?(0,import_jsx_runtime.jsx)(import_flow_engine.Droppable,{model:t,children:(0,import_jsx_runtime.jsx)(import_flow_engine.FlowModelRenderer,{model:t,showFlowSettings:{showBackground:!1,showBorder:!1,toolbarPosition:"above"},extraToolbarItems:[{key:"drag-handler",component:import_flow_engine.DragHandler,sort:1}]})},t.uid):null),this.renderConfiguireActions()]})]})}),(0,import_jsx_runtime.jsx)(import_antd.Table,{components:this.components,tableLayout:"fixed",size:this.props.size,rowKey:this.collection.filterTargetKey,rowSelection:f({columnWidth:50,type:"checkbox",onChange:(t,o)=>{this.resource.setSelectedRows(o)},selectedRowKeys:this.resource.getSelectedRows().map(t=>t[this.collection.filterTargetKey]),renderCell:this.renderCell},this.rowSelectionProps),loading:this.resource.loading,virtual:this.props.virtual,scroll:{x:"max-content"},dataSource:this.resource.getData(),columns:this.getColumns(),pagination:this.pagination(),onChange:t=>{console.log("onChange pagination:",t),this.resource.loading=!0,this.resource.setPage(t.current),this.resource.setPageSize(t.pageSize),this.resource.refresh()}})]})}}k(TableBlockModel,"scene",BlockSceneEnum.many);TableBlockModel.registerFlow({key:"resourceSettings2",steps:{}});TableBlockModel.registerFlow({key:"tableSettings",sort:500,title:(0,import_flow_engine.escapeT)("Table settings"),steps:{showRowNumbers:{title:(0,import_flow_engine.escapeT)("Show row numbers"),uiSchema:{showIndex:{"x-component":"Switch","x-decorator":"FormItem"}},defaultParams:{showIndex:!0},handler(e,t){e.model.setProps("showIndex",t.showIndex)}},quickEdit:{title:(0,import_flow_engine.escapeT)("Enable quick edit"),uiSchema:{editable:{"x-component":"Switch","x-decorator":"FormItem"}},defaultParams:{editable:!1},handler(e,t){e.model.setProps("editable",t.editable)}},pageSize:{title:(0,import_flow_engine.escapeT)("Page size"),uiSchema:{pageSize:{"x-component":"Select","x-decorator":"FormItem",enum:[{label:"5",value:5},{label:"10",value:10},{label:"20",value:20},{label:"50",value:50},{label:"100",value:100},{label:"200",value:200}]}},defaultParams:{pageSize:20},handler(e,t){e.model.resource.loading=!0,e.model.resource.setPage(1),e.model.resource.setPageSize(t.pageSize)}},dataScope:{use:"dataScope",title:(0,import_flow_engine.escapeT)("Data scope")},defaultSorting:{use:"sortingRule",title:(0,import_flow_engine.escapeT)("Default sorting")},tableDensity:{title:(0,import_flow_engine.escapeT)("Table density"),uiSchema:{size:{"x-component":"Select","x-decorator":"FormItem",enum:[{label:(0,import_flow_engine.escapeT)("Large"),value:"large"},{label:(0,import_flow_engine.escapeT)("Middle"),value:"middle"},{label:(0,import_flow_engine.escapeT)("Small"),value:"small"}]}},defaultParams:{size:"middle"},handler(e,t){e.model.setProps("size",t.size)}},refreshData:{title:(0,import_flow_engine.escapeT)("Refresh data"),handler(e,t){return E(this,null,function*(){yield Promise.all(e.model.mapSubModels("columns",o=>E(this,null,function*(){if(!o.hidden)try{yield o.applyAutoFlows()}catch(r){o.__autoFlowError=r}})))})}}}});TableBlockModel.define({label:(0,import_flow_engine.escapeT)("Table"),group:(0,import_flow_engine.escapeT)("Content"),searchable:!0,searchPlaceholder:(0,import_flow_engine.escapeT)("Search"),createModelOptions:{use:"TableBlockModel",subModels:{columns:[{use:"TableActionsColumnModel"}]}},sort:300});const Re=class Ee extends import_flow_engine.DisplayItemModel{renderHiddenInConfig(){return(0,import_jsx_runtime.jsx)(import_antd.Tooltip,{title:this.context.t("该字段已被隐藏,你无法查看(该内容仅在激活 UI Editor 时显示)。"),children:(0,import_jsx_runtime.jsx)(import_icons.LockOutlined,{style:{opacity:"0.45"}})})}afterAddAsSubModel(){return E(this,null,function*(){yield Se(Ee.prototype,this,"afterAddAsSubModel").call(this),yield this.applyAutoFlows()})}static defineChildren(t){const o=t.model.collection||t.collection;return o.getFields().map(r=>{const i=this.getDefaultBindingByField(t,r,{fallbackToTargetTitleField:!0});if(!i)return null;const n=i.modelName,l=t.fieldPath?`${t.fieldPath}.${r.name}`:r.name;return{key:l,label:r.title,refreshTargets:["TableCustomColumnModel/TableJSFieldItemModel"],toggleable:a=>{var c;return((c=a.getStepParams("fieldSettings","init"))==null?void 0:c.fieldPath)===l},useModel:this.name,createModelOptions:()=>({use:this.name,stepParams:{fieldSettings:{init:{dataSourceKey:o.dataSourceKey,collectionName:t.model.context.blockModel.collection.name,fieldPath:l}}},subModels:{field:{use:n,props:typeof i.defaultProps=="function"?i.defaultProps(t,r):i.defaultProps}}})}}).filter(Boolean)}getColumnProps(){var t;const o=(0,import_jsx_runtime.jsx)(import_flow_engine.Droppable,{model:this,children:(0,import_jsx_runtime.jsx)(import_flow_engine.FlowsFloatContextMenu,{model:this,containerStyle:{display:"block",padding:"11px 7px",margin:"-11px -7px"},showBorder:!1,settingsMenuLevel:2,extraToolbarItems:[{key:"drag-handler",component:import_flow_engine.DragHandler,sort:1}],children:(0,import_jsx_runtime.jsx)("div",{className:import_css.css`
|
|
1892
|
+
`,children:[c," ",(0,import_jsx_runtime.jsx)("div",{children:this.resource.getPage()})]}):c}}renderComponent(){return(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsx)(import_flow_engine.DndProvider,{children:(0,import_jsx_runtime.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:16},children:[(0,import_jsx_runtime.jsxs)(import_antd.Space,{children:[this.mapSubModels("actions",t=>t.props.position==="left"?(0,import_jsx_runtime.jsx)(import_flow_engine.FlowModelRenderer,{model:t,showFlowSettings:{showBackground:!1,showBorder:!1,toolbarPosition:"above"}},t.uid):null),(0,import_jsx_runtime.jsx)("span",{})]}),(0,import_jsx_runtime.jsxs)(import_antd.Space,{children:[this.mapSubModels("actions",t=>t.props.position!=="left"?(0,import_jsx_runtime.jsx)(import_flow_engine.Droppable,{model:t,children:(0,import_jsx_runtime.jsx)(import_flow_engine.FlowModelRenderer,{model:t,showFlowSettings:{showBackground:!1,showBorder:!1,toolbarPosition:"above"},extraToolbarItems:[{key:"drag-handler",component:import_flow_engine.DragHandler,sort:1}]})},t.uid):null),this.renderConfiguireActions()]})]})}),(0,import_jsx_runtime.jsx)(import_antd.Table,{components:this.components,tableLayout:"fixed",size:this.props.size,rowKey:this.collection.filterTargetKey,rowSelection:f({columnWidth:50,type:"checkbox",onChange:(t,o)=>{this.resource.setSelectedRows(o)},selectedRowKeys:this.resource.getSelectedRows().map(t=>t[this.collection.filterTargetKey]),renderCell:this.renderCell},this.rowSelectionProps),loading:this.resource.loading,virtual:this.props.virtual,scroll:{x:"max-content"},dataSource:this.resource.getData(),columns:this.getColumns(),pagination:this.pagination(),onChange:t=>{console.log("onChange pagination:",t),this.resource.loading=!0,this.resource.setPage(t.current),this.resource.setPageSize(t.pageSize),this.resource.refresh()}})]})}}k(TableBlockModel,"scene",BlockSceneEnum.many);TableBlockModel.registerFlow({key:"resourceSettings2",steps:{}});TableBlockModel.registerFlow({key:"tableSettings",sort:500,title:(0,import_flow_engine.escapeT)("Table settings"),steps:{showRowNumbers:{title:(0,import_flow_engine.escapeT)("Show row numbers"),uiSchema:{showIndex:{"x-component":"Switch","x-decorator":"FormItem"}},defaultParams:{showIndex:!0},handler(e,t){e.model.setProps("showIndex",t.showIndex)}},quickEdit:{title:(0,import_flow_engine.escapeT)("Enable quick edit"),uiSchema:{editable:{"x-component":"Switch","x-decorator":"FormItem"}},defaultParams:{editable:!1},handler(e,t){e.model.setProps("editable",t.editable)}},pageSize:{title:(0,import_flow_engine.escapeT)("Page size"),uiSchema:{pageSize:{"x-component":"Select","x-decorator":"FormItem",enum:[{label:"5",value:5},{label:"10",value:10},{label:"20",value:20},{label:"50",value:50},{label:"100",value:100},{label:"200",value:200}]}},defaultParams:{pageSize:20},handler(e,t){e.model.resource.loading=!0,e.model.resource.setPage(1),e.model.resource.setPageSize(t.pageSize)}},dataScope:{use:"dataScope",title:(0,import_flow_engine.escapeT)("Data scope")},defaultSorting:{use:"sortingRule",title:(0,import_flow_engine.escapeT)("Default sorting")},tableDensity:{title:(0,import_flow_engine.escapeT)("Table density"),uiSchema:{size:{"x-component":"Select","x-decorator":"FormItem",enum:[{label:(0,import_flow_engine.escapeT)("Large"),value:"large"},{label:(0,import_flow_engine.escapeT)("Middle"),value:"middle"},{label:(0,import_flow_engine.escapeT)("Small"),value:"small"}]}},defaultParams:{size:"middle"},handler(e,t){e.model.setProps("size",t.size)}},refreshData:{title:(0,import_flow_engine.escapeT)("Refresh data"),handler(e,t){return E(this,null,function*(){yield Promise.all(e.model.mapSubModels("columns",o=>E(this,null,function*(){if(!o.hidden)try{yield o.applyAutoFlows()}catch(r){o.__autoFlowError=r}})))})}}}});TableBlockModel.define({label:(0,import_flow_engine.escapeT)("Table"),group:(0,import_flow_engine.escapeT)("Content"),searchable:!0,searchPlaceholder:(0,import_flow_engine.escapeT)("Search"),createModelOptions:{use:"TableBlockModel",subModels:{columns:[{use:"TableActionsColumnModel"}]}},sort:300});function FieldDeletePlaceholder(){const{t:e}=(0,import_react_i18next.useTranslation)(),t=(0,import_flow_engine.useFlowModel)(),o=t.context.blockModel,r=o.collection.dataSource,i=o.collection,n=t.fieldPath,l=(0,import_react2.useMemo)(()=>{const c=`${e(r.displayName||r.key)} > `,u=i?`${e(i.title)||i.name||i.tableName} > `:"";return`${c}${u}${n}`},[]),a=e('The {{type}} "{{name}}" may have been deleted. Please remove this {{blockType}}.',{type:e("Field"),name:l,blockType:e("Field")}).replaceAll(">",">");return(0,import_jsx_runtime.jsx)(import_antd.Tooltip,{title:a,children:(0,import_jsx_runtime.jsx)(import_icons.ExclamationCircleOutlined,{style:{opacity:"0.45"}})})}const Re=class Ee extends import_flow_engine.DisplayItemModel{renderHiddenInConfig(){return this.fieldDeleted?(0,import_jsx_runtime.jsx)(FieldDeletePlaceholder,{}):(0,import_jsx_runtime.jsx)(import_antd.Tooltip,{title:this.context.t("该字段已被隐藏,你无法查看(该内容仅在激活 UI Editor 时显示)。"),children:(0,import_jsx_runtime.jsx)(import_icons.LockOutlined,{style:{opacity:"0.45"}})})}afterAddAsSubModel(){return E(this,null,function*(){yield Se(Ee.prototype,this,"afterAddAsSubModel").call(this),yield this.applyAutoFlows()})}static defineChildren(t){const o=t.model.collection||t.collection;return o.getFields().map(r=>{const i=this.getDefaultBindingByField(t,r,{fallbackToTargetTitleField:!0});if(!i)return null;const n=i.modelName,l=t.fieldPath?`${t.fieldPath}.${r.name}`:r.name;return{key:l,label:r.title,refreshTargets:["TableCustomColumnModel/TableJSFieldItemModel"],toggleable:a=>{var c;return((c=a.getStepParams("fieldSettings","init"))==null?void 0:c.fieldPath)===l},useModel:this.name,createModelOptions:()=>({use:this.name,stepParams:{fieldSettings:{init:{dataSourceKey:o.dataSourceKey,collectionName:t.model.context.blockModel.collection.name,fieldPath:l}}},subModels:{field:{use:n,props:typeof i.defaultProps=="function"?i.defaultProps(t,r):i.defaultProps}}})}}).filter(Boolean)}getColumnProps(){var t;const o=(0,import_jsx_runtime.jsx)(import_flow_engine.Droppable,{model:this,children:(0,import_jsx_runtime.jsx)(import_flow_engine.FlowsFloatContextMenu,{model:this,containerStyle:{display:"block",padding:"11px 7px",margin:"-11px -7px"},showBorder:!1,settingsMenuLevel:2,extraToolbarItems:[{key:"drag-handler",component:import_flow_engine.DragHandler,sort:1}],children:(0,import_jsx_runtime.jsx)("div",{className:import_css.css`
|
|
1893
1893
|
overflow: hidden;
|
|
1894
1894
|
text-overflow: ellipsis;
|
|
1895
1895
|
white-space: nowrap;
|
|
1896
1896
|
width: calc(${this.props.width}px - 16px);
|
|
1897
|
-
`,children:this.props.title})})}),r=this.render();return I(f({},this.props),{ellipsis:!0,title:this.props.tooltip?(0,import_jsx_runtime.jsxs)("span",{style:{display:"inline-flex",alignItems:"center",gap:4},children:[o,(0,import_jsx_runtime.jsx)(import_antd.Tooltip,{title:this.props.tooltip,children:(0,import_jsx_runtime.jsx)(import_icons.QuestionCircleOutlined,{style:{cursor:"pointer"}})})]}):o,onCell:(i,n)=>({record:i,recordIndex:n,width:this.props.width,editable:this.props.editable,dataIndex:this.props.dataIndex,title:this.props.title,overflowMode:this.props.overflowMode,model:this}),render:(i,n,l)=>(0,import_jsx_runtime.jsx)(import_flow_engine.FlowModelProvider,{model:this,children:(0,import_jsx_runtime.jsx)(import_react_error_boundary.ErrorBoundary,{FallbackComponent:import_flow_engine.FlowErrorFallback,children:(()=>{const a=this.__autoFlowError;if(a)throw a;return r(i,n,l)})()})}),hidden:this.hidden&&!((t=this.flowEngine.flowSettings)!=null&&t.enabled)})}onInit(t){super.onInit(t)}render(){return(t,o,r)=>(0,import_jsx_runtime.jsx)(import_jsx_runtime.Fragment,{children:this.mapSubModels("field",i=>{const n=i.createFork({},`${r}`),l=(0,import_flow_engine.createRecordMetaFactory)(()=>n.context.collection,n.context.t("Current record"),u=>{var d;try{const m=u.collection,p=u.record,h=m==null?void 0:m.name,g=m==null?void 0:m.dataSourceKey,x=(d=m==null?void 0:m.getFilterByTK)==null?void 0:d.call(m,p);return!h||typeof x>"u"||x===null?void 0:{collection:h,dataSourceKey:g,filterByTk:x}}catch{return}});n.context.defineProperty("record",{get:()=>o,resolveOnServer:!0,meta:l}),n.context.defineProperty("recordIndex",{get:()=>r});const a=this.context.prefixFieldPath?this.fieldPath.split(".").pop():this.fieldPath,c=(0,import_lodash.get)(o,a);return(0,import_jsx_runtime.jsx)(import_flow_engine.FormItem,I(f({},(0,import_lodash.omit)(this.props,"title")),{value:c,noStyle:!0,children:(0,import_jsx_runtime.jsx)(import_flow_engine.FieldModelRenderer,{model:n})}),i.uid)})})}};k(Re,"renderMode",import_flow_engine.ModelRenderMode.RenderFunction);let TableColumnModel=Re;TableColumnModel.define({label:(0,import_flow_engine.escapeT)("Display collection fields")});TableColumnModel.registerFlow({key:"tableColumnSettings",sort:500,title:(0,import_flow_engine.escapeT)("Table column settings"),steps:{init:{handler(e,t){return E(this,null,function*(){const o=e.model.context.collectionField;o&&(e.model.setProps("title",o.title),e.model.setProps("dataIndex",o.name),yield e.model.applySubModelsAutoFlows("field"),e.model.setProps(f({},o.getComponentProps())))})}},aclCheck:{use:"aclCheck"},title:{title:(0,import_flow_engine.escapeT)("Column title"),uiSchema:e=>({title:{"x-component":"Input","x-decorator":"FormItem","x-reactions":t=>{var o,r;const i=e.model,n=(o=i.collectionField)==null?void 0:o.title;t.decoratorProps=I(f({},t.decoratorProps),{extra:i.context.t("Original field title: ")+((r=i.context.t(n))!=null?r:"")})}}}),defaultParams:e=>{var t;return{title:(t=e.model.collectionField)==null?void 0:t.title}},handler(e,t){var o;const r=e.t(t.title||((o=e.model.collectionField)==null?void 0:o.title));e.model.setProps("title",r)}},tooltip:{title:(0,import_flow_engine.escapeT)("Tooltip"),uiSchema:{tooltip:{"x-component":"Input.TextArea","x-decorator":"FormItem"}},handler(e,t){e.model.setProps("tooltip",t.tooltip)}},width:{title:(0,import_flow_engine.escapeT)("Column width"),uiSchema:{width:{"x-component":"NumberPicker","x-decorator":"FormItem"}},defaultParams:{width:100},handler(e,t){e.model.setProps("width",t.width)}},quickEdit:{title:(0,import_flow_engine.escapeT)("Enable quick edit"),uiSchema:e=>{const t=e.model.context.blockModel.collection.name,o=e.model.collectionField.collectionName;if(t===o)return{editable:{"x-component":"Switch","x-decorator":"FormItem","x-disabled":e.model.collectionField.readonly||e.model.associationPathName}}},defaultParams(e){return e.model.collectionField.readonly||e.model.associationPathName?{editable:!1}:{editable:e.model.parent.props.editable||!1}},handler(e,t){e.model.setProps("editable",t.editable)}},model:{title:(0,import_flow_engine.escapeT)("Field component"),use:"displayFieldComponent"},fieldNames:{use:"titleField",title:(0,import_flow_engine.escapeT)("Label field"),beforeParamsSave:(e,t,o)=>E(void 0,null,function*(){if(!e.collectionField||!e.collectionField.isAssociationField())return null;if(t.label!==o.label){const r=e.collectionField.targetCollection,i=r.getField(t.label),n=e.model.constructor.getDefaultBindingByField(e,i);if(n.modelName!==e.model.subModels.field.use){const l=e.model.subModels.field.uid;yield e.engine.destroyModel(l),yield e.model.setSubModel("field",{use:n.modelName,stepParams:{fieldSettings:{init:{dataSourceKey:e.model.collectionField.dataSourceKey,collectionName:r.name,fieldPath:t.label}}}}).save()}e.model.setProps(e.collectionField.targetCollection.getField(t.label).getComponentProps())}}),handler(e,t){var o,r;if(!e.collectionField||!e.collectionField.isAssociationField())return null;e.model.setProps(f({titleField:t.label},(r=(o=e.collectionField.targetCollection)==null?void 0:o.getField(t.label))==null?void 0:r.getComponentProps()))}}}});const De=class Oe extends TableBlockModel{constructor(){super(...arguments),k(this,"rowSelectionProps",import_flow_engine.observable.deep({}))}onInit(t){super.onInit(t);const o=this.context.view.inputArgs.collectionField||{};["oho","o2m"].includes(o==null?void 0:o.interface)&&this.resource.addFilterGroup(`${this.uid}-${o.name}`,{[o.foreignKey]:{$is:null}}),Object.assign(this.rowSelectionProps,this.context.view.inputArgs.rowSelectionProps||{})}onMount(){return E(this,null,function*(){Se(Oe.prototype,this,"onMount").call(this);const t=this.rowSelectionProps.defaultSelectedRows(),o=(t&&(0,import_lodash.castArray)(t)||[]).map(r=>r[this.collection.filterTargetKey]).filter(Boolean);this.resource.addFilterGroup(`${this.uid}-select`,{[`${this.collection.filterTargetKey}.$ne`]:o}),yield this.resource.refresh()})}};k(De,"scene",BlockSceneEnum.select);let TableSelectModel=De;TableSelectModel.define({label:(0,import_flow_engine.escapeT)("Table"),children:!1,useModel:"TableSelectModel",createModelOptions:e=>E(void 0,null,function*(){const{dataSourceKey:t,collectionName:o}=e.view.inputArgs;return{use:"TableSelectModel",stepParams:{resourceSettings:{init:{dataSourceKey:t,collectionName:o}}}}})});class TableJSFieldItemModel extends TableCustomColumnModel{static defineChildren(t){var o;const r=(0,import_flow_engine.buildWrapperFieldChildren)(t,{useModel:"TableColumnModel",fieldUseModel:"JSFieldModel",refreshTargets:["TableColumnModel"]});return((o=r==null?void 0:r[0])==null?void 0:o.children)||[]}}TableJSFieldItemModel.define({label:(0,import_flow_engine.escapeT)("JS field"),searchable:!0,searchPlaceholder:(0,import_flow_engine.escapeT)("Search fields"),sort:110});class JSColumnModel extends TableCustomColumnModel{constructor(){super(...arguments),k(this,"_RenderComponent")}renderHiddenInConfig(){return(0,import_jsx_runtime.jsx)(import_antd.Tooltip,{title:this.context.t("该字段已被隐藏,你无法查看(该内容仅在激活 UI Editor 时显示)。"),children:(0,import_jsx_runtime.jsx)(import_icons.LockOutlined,{style:{opacity:"0.45"}})})}getInputArgs(){const t={};if(this.context.resource){const o=this.context.resource.getSourceId();o&&(t.sourceId=o)}if(this.context.collection&&this.context.record){const o=this.context.collection.getFilterByTK(this.context.record);o&&(t.filterByTk=o)}return t}getColumnProps(){const t=this,o=(0,import_reactive_react.observer)(()=>(0,import_jsx_runtime.jsx)(import_jsx_runtime.Fragment,{children:t.props.title})),r=(0,import_jsx_runtime.jsx)(import_flow_engine.Droppable,{model:this,children:(0,import_jsx_runtime.jsx)(import_flow_engine.FlowsFloatContextMenu,{model:this,containerStyle:{display:"block",padding:"11px 8px",margin:"-11px -8px"},showBorder:!1,extraToolbarItems:[{key:"drag-handler",component:import_flow_engine.DragHandler,sort:1}],children:(0,import_jsx_runtime.jsx)("div",{className:import_css.css`
|
|
1897
|
+
`,children:this.props.title})})}),r=this.render();return I(f({},this.props),{ellipsis:!0,title:this.props.tooltip?(0,import_jsx_runtime.jsxs)("span",{style:{display:"inline-flex",alignItems:"center",gap:4},children:[o,(0,import_jsx_runtime.jsx)(import_antd.Tooltip,{title:this.props.tooltip,children:(0,import_jsx_runtime.jsx)(import_icons.QuestionCircleOutlined,{style:{cursor:"pointer"}})})]}):o,onCell:(i,n)=>({record:i,recordIndex:n,width:this.props.width,editable:this.props.editable,dataIndex:this.props.dataIndex,title:this.props.title,overflowMode:this.props.overflowMode,model:this}),render:(i,n,l)=>(0,import_jsx_runtime.jsx)(import_flow_engine.FlowModelProvider,{model:this,children:(0,import_jsx_runtime.jsx)(import_react_error_boundary.ErrorBoundary,{FallbackComponent:import_flow_engine.FlowErrorFallback,children:(()=>{const a=this.__autoFlowError;if(a)throw a;return r(i,n,l)})()})}),hidden:this.hidden&&!((t=this.flowEngine.flowSettings)!=null&&t.enabled)})}onInit(t){super.onInit(t)}render(){return(t,o,r)=>(0,import_jsx_runtime.jsx)(import_jsx_runtime.Fragment,{children:this.mapSubModels("field",i=>{const n=i.createFork({},`${r}`),l=(0,import_flow_engine.createRecordMetaFactory)(()=>n.context.collection,n.context.t("Current record"),u=>{var d;try{const m=u.collection,p=u.record,h=m==null?void 0:m.name,g=m==null?void 0:m.dataSourceKey,x=(d=m==null?void 0:m.getFilterByTK)==null?void 0:d.call(m,p);return!h||typeof x>"u"||x===null?void 0:{collection:h,dataSourceKey:g,filterByTk:x}}catch{return}});n.context.defineProperty("record",{get:()=>o,resolveOnServer:!0,meta:l}),n.context.defineProperty("recordIndex",{get:()=>r});const a=this.context.prefixFieldPath?this.fieldPath.split(".").pop():this.fieldPath,c=(0,import_lodash.get)(o,a);return(0,import_jsx_runtime.jsx)(import_flow_engine.FormItem,I(f({},(0,import_lodash.omit)(this.props,"title")),{value:c,noStyle:!0,children:(0,import_jsx_runtime.jsx)(import_flow_engine.FieldModelRenderer,{model:n})}),i.uid)})})}};k(Re,"renderMode",import_flow_engine.ModelRenderMode.RenderFunction);let TableColumnModel=Re;TableColumnModel.define({label:(0,import_flow_engine.escapeT)("Display collection fields")});TableColumnModel.registerFlow({key:"tableColumnSettings",sort:500,title:(0,import_flow_engine.escapeT)("Table column settings"),steps:{init:{handler(e,t){return E(this,null,function*(){const o=e.model.context.collectionField;o&&(e.model.setProps("title",o.title),e.model.setProps("dataIndex",o.name),yield e.model.applySubModelsAutoFlows("field"),e.model.setProps(f({},o.getComponentProps())))})}},aclCheck:{use:"aclCheck"},title:{title:(0,import_flow_engine.escapeT)("Column title"),uiSchema:e=>({title:{"x-component":"Input","x-decorator":"FormItem","x-reactions":t=>{var o,r;const i=e.model,n=(o=i.collectionField)==null?void 0:o.title;t.decoratorProps=I(f({},t.decoratorProps),{extra:i.context.t("Original field title: ")+((r=i.context.t(n))!=null?r:"")})}}}),defaultParams:e=>{var t;return{title:(t=e.model.collectionField)==null?void 0:t.title}},handler(e,t){var o;const r=e.t(t.title||((o=e.model.collectionField)==null?void 0:o.title));e.model.setProps("title",r)}},tooltip:{title:(0,import_flow_engine.escapeT)("Tooltip"),uiSchema:{tooltip:{"x-component":"Input.TextArea","x-decorator":"FormItem"}},handler(e,t){e.model.setProps("tooltip",t.tooltip)}},width:{title:(0,import_flow_engine.escapeT)("Column width"),uiSchema:{width:{"x-component":"NumberPicker","x-decorator":"FormItem"}},defaultParams:{width:100},handler(e,t){e.model.setProps("width",t.width)}},quickEdit:{title:(0,import_flow_engine.escapeT)("Enable quick edit"),uiSchema:e=>{if(!e.model.collectionField)return;const t=e.model.context.blockModel.collection.name,o=e.model.collectionField.collectionName;if(t===o)return{editable:{"x-component":"Switch","x-decorator":"FormItem","x-disabled":e.model.collectionField.readonly||e.model.associationPathName}}},defaultParams(e){return e.model.collectionField.readonly||e.model.associationPathName?{editable:!1}:{editable:e.model.parent.props.editable||!1}},handler(e,t){e.model.setProps("editable",t.editable)}},model:{title:(0,import_flow_engine.escapeT)("Field component"),use:"displayFieldComponent"},fieldNames:{use:"titleField",title:(0,import_flow_engine.escapeT)("Label field"),beforeParamsSave:(e,t,o)=>E(void 0,null,function*(){if(!e.collectionField||!e.collectionField.isAssociationField())return null;if(t.label!==o.label){const r=e.collectionField.targetCollection,i=r.getField(t.label),n=e.model.constructor.getDefaultBindingByField(e,i);if(n.modelName!==e.model.subModels.field.use){const l=e.model.subModels.field.uid;yield e.engine.destroyModel(l),yield e.model.setSubModel("field",{use:n.modelName,stepParams:{fieldSettings:{init:{dataSourceKey:e.model.collectionField.dataSourceKey,collectionName:r.name,fieldPath:t.label}}}}).save()}e.model.setProps(e.collectionField.targetCollection.getField(t.label).getComponentProps())}}),handler(e,t){var o,r;if(!e.collectionField||!e.collectionField.isAssociationField())return null;e.model.setProps(f({titleField:t.label},(r=(o=e.collectionField.targetCollection)==null?void 0:o.getField(t.label))==null?void 0:r.getComponentProps()))}}}});const De=class Oe extends TableBlockModel{constructor(){super(...arguments),k(this,"rowSelectionProps",import_flow_engine.observable.deep({}))}onInit(t){super.onInit(t);const o=this.context.view.inputArgs.collectionField||{};["oho","o2m"].includes(o==null?void 0:o.interface)&&this.resource.addFilterGroup(`${this.uid}-${o.name}`,{[o.foreignKey]:{$is:null}}),Object.assign(this.rowSelectionProps,this.context.view.inputArgs.rowSelectionProps||{})}onMount(){return E(this,null,function*(){Se(Oe.prototype,this,"onMount").call(this);const t=this.rowSelectionProps.defaultSelectedRows(),o=(t&&(0,import_lodash.castArray)(t)||[]).map(r=>r[this.collection.filterTargetKey]).filter(Boolean);this.resource.addFilterGroup(`${this.uid}-select`,{[`${this.collection.filterTargetKey}.$ne`]:o}),yield this.resource.refresh()})}};k(De,"scene",BlockSceneEnum.select);let TableSelectModel=De;TableSelectModel.define({label:(0,import_flow_engine.escapeT)("Table"),children:!1,useModel:"TableSelectModel",createModelOptions:e=>E(void 0,null,function*(){const{dataSourceKey:t,collectionName:o}=e.view.inputArgs;return{use:"TableSelectModel",stepParams:{resourceSettings:{init:{dataSourceKey:t,collectionName:o}}}}})});class TableJSFieldItemModel extends TableCustomColumnModel{static defineChildren(t){var o;const r=(0,import_flow_engine.buildWrapperFieldChildren)(t,{useModel:"TableColumnModel",fieldUseModel:"JSFieldModel",refreshTargets:["TableColumnModel"]});return((o=r==null?void 0:r[0])==null?void 0:o.children)||[]}}TableJSFieldItemModel.define({label:(0,import_flow_engine.escapeT)("JS field"),searchable:!0,searchPlaceholder:(0,import_flow_engine.escapeT)("Search fields"),sort:110});class JSColumnModel extends TableCustomColumnModel{constructor(){super(...arguments),k(this,"_RenderComponent")}renderHiddenInConfig(){return(0,import_jsx_runtime.jsx)(import_antd.Tooltip,{title:this.context.t("该字段已被隐藏,你无法查看(该内容仅在激活 UI Editor 时显示)。"),children:(0,import_jsx_runtime.jsx)(import_icons.LockOutlined,{style:{opacity:"0.45"}})})}getInputArgs(){const t={};if(this.context.resource){const o=this.context.resource.getSourceId();o&&(t.sourceId=o)}if(this.context.collection&&this.context.record){const o=this.context.collection.getFilterByTK(this.context.record);o&&(t.filterByTk=o)}return t}getColumnProps(){const t=this,o=(0,import_reactive_react.observer)(()=>(0,import_jsx_runtime.jsx)(import_jsx_runtime.Fragment,{children:t.props.title})),r=(0,import_jsx_runtime.jsx)(import_flow_engine.Droppable,{model:this,children:(0,import_jsx_runtime.jsx)(import_flow_engine.FlowsFloatContextMenu,{model:this,containerStyle:{display:"block",padding:"11px 8px",margin:"-11px -8px"},showBorder:!1,extraToolbarItems:[{key:"drag-handler",component:import_flow_engine.DragHandler,sort:1}],children:(0,import_jsx_runtime.jsx)("div",{className:import_css.css`
|
|
1898
1898
|
overflow: hidden;
|
|
1899
1899
|
text-overflow: ellipsis;
|
|
1900
1900
|
white-space: nowrap;
|
|
@@ -1947,7 +1947,7 @@ ctx.element.innerHTML = \`
|
|
|
1947
1947
|
.ant-tooltip-inner {
|
|
1948
1948
|
color: #000;
|
|
1949
1949
|
}
|
|
1950
|
-
`,color:"#fff"}}:!1,style:{whiteSpace:i==="wrap"?"normal":"nowrap",width:n||"auto"}};if(l)if(o==="tag"){const c=(0,import_lodash.castArray)(t).map((u,d)=>(0,import_jsx_runtime.jsx)(import_react2.default.Fragment,{children:this.renderInDisplayStyle(u==null?void 0:u[l],u)},d));return(0,import_jsx_runtime.jsx)(import_antd.Typography.Text,I(f({},a),{children:c}))}else{const c=(0,import_lodash.castArray)(t).flatMap((u,d)=>{const m=this.renderInDisplayStyle(u==null?void 0:u[l],u);return d===0?[m]:[(0,import_jsx_runtime.jsx)("span",{children:", "},`sep-${d}`),m]});return(0,import_jsx_runtime.jsx)(import_antd.Typography.Text,I(f({},a),{children:c}))}else return(0,import_jsx_runtime.jsx)(import_antd.Typography.Text,I(f({},a),{children:this.renderInDisplayStyle(t)}))}}ClickableFieldModel.registerFlow({key:"displayFieldSettings",title:(0,import_flow_engine.escapeT)("Display Field settings"),sort:200,steps:{displayStyle:{title:(0,import_flow_engine.escapeT)("Display style"),uiSchema:e=>["select","multipleSelect","radioGroup","checkboxGroup"].includes(e.collectionField.interface)?null:{displayStyle:{"x-component":"Radio.Group","x-decorator":"FormItem",enum:[{label:(0,import_flow_engine.escapeT)("Tag"),value:"tag"},{label:(0,import_flow_engine.escapeT)("Text"),value:"text"}]}},defaultParams:{displayStyle:"text"},handler(e,t){e.model.setProps({displayStyle:t.displayStyle})}},clickToOpen:{title:(0,import_flow_engine.escapeT)("Enable click to open"),uiSchema:{clickToOpen:{"x-component":"Switch","x-decorator":"FormItem"}},defaultParams:e=>({clickToOpen:e.collectionField.isAssociationField()}),handler(e,t){e.model.setProps({clickToOpen:t.clickToOpen})}},overflowMode:{title:(0,import_flow_engine.escapeT)("Content overflow display mode"),use:"overflowMode"}}});ClickableFieldModel.registerFlow(openViewFlow);class DisplayTitleFieldModel extends FieldModel{get collectionField(){return this.context.collectionField}renderComponent(t){return t}render(){const{value:t,fieldNames:o,overflowMode:r,width:i}=this.props,n=this.props.titleField||(o==null?void 0:o.label),l={ellipsis:r==="ellipsis"?{tooltip:{rootClassName:import_css.css`
|
|
1950
|
+
`,color:"#fff"}}:!1,style:{whiteSpace:i==="wrap"?"normal":"nowrap",width:n||"auto"}};if(l)if(o==="tag"){const c=(0,import_lodash.castArray)(t).map((u,d)=>(0,import_jsx_runtime.jsx)(import_react2.default.Fragment,{children:this.renderInDisplayStyle(u==null?void 0:u[l],u)},d));return(0,import_jsx_runtime.jsx)(import_antd.Typography.Text,I(f({},a),{children:c}))}else{const c=(0,import_lodash.castArray)(t).flatMap((u,d)=>{const m=this.renderInDisplayStyle(u==null?void 0:u[l],u);return d===0?[m]:[(0,import_jsx_runtime.jsx)("span",{children:", "},`sep-${d}`),m]});return(0,import_jsx_runtime.jsx)(import_antd.Typography.Text,I(f({},a),{children:c}))}else return(0,import_jsx_runtime.jsx)(import_antd.Typography.Text,I(f({},a),{children:this.renderInDisplayStyle(t)}))}}ClickableFieldModel.registerFlow({key:"displayFieldSettings",title:(0,import_flow_engine.escapeT)("Display Field settings"),sort:200,steps:{displayStyle:{title:(0,import_flow_engine.escapeT)("Display style"),uiSchema:e=>{var t;return["select","multipleSelect","radioGroup","checkboxGroup"].includes((t=e.collectionField)==null?void 0:t.interface)?null:{displayStyle:{"x-component":"Radio.Group","x-decorator":"FormItem",enum:[{label:(0,import_flow_engine.escapeT)("Tag"),value:"tag"},{label:(0,import_flow_engine.escapeT)("Text"),value:"text"}]}}},defaultParams:{displayStyle:"text"},handler(e,t){e.model.setProps({displayStyle:t.displayStyle})}},clickToOpen:{title:(0,import_flow_engine.escapeT)("Enable click to open"),uiSchema:{clickToOpen:{"x-component":"Switch","x-decorator":"FormItem"}},defaultParams:e=>({clickToOpen:e.collectionField.isAssociationField()}),handler(e,t){e.model.setProps({clickToOpen:t.clickToOpen})}},overflowMode:{title:(0,import_flow_engine.escapeT)("Content overflow display mode"),use:"overflowMode"}}});ClickableFieldModel.registerFlow(openViewFlow);class DisplayTitleFieldModel extends FieldModel{get collectionField(){return this.context.collectionField}renderComponent(t){return t}render(){const{value:t,fieldNames:o,overflowMode:r,width:i}=this.props,n=this.props.titleField||(o==null?void 0:o.label),l={ellipsis:r==="ellipsis"?{tooltip:{rootClassName:import_css.css`
|
|
1951
1951
|
.ant-tooltip-inner {
|
|
1952
1952
|
color: #000;
|
|
1953
1953
|
}
|