@nocobase/client 2.0.20 → 2.0.22
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/es/index.mjs
CHANGED
|
@@ -9964,7 +9964,7 @@ function addAppVersion(e, t) {
|
|
|
9964
9964
|
addAppVersion((n = e.properties) == null ? void 0 : n[o], t);
|
|
9965
9965
|
}), e;
|
|
9966
9966
|
}
|
|
9967
|
-
const name = "@nocobase/client", version = "2.0.
|
|
9967
|
+
const name = "@nocobase/client", version = "2.0.22", license = "Apache-2.0", main = "lib/index.js", module = "es/index.mjs", types = "es/index.d.ts", dependencies = {
|
|
9968
9968
|
"@ahooksjs/use-url-state": "3.5.1",
|
|
9969
9969
|
"@ant-design/cssinjs": "^1.11.1",
|
|
9970
9970
|
"@ant-design/icons": "^5.6.1",
|
|
@@ -9987,10 +9987,10 @@ const name = "@nocobase/client", version = "2.0.20", license = "Apache-2.0", mai
|
|
|
9987
9987
|
"@formily/reactive-react": "^2.2.27",
|
|
9988
9988
|
"@formily/shared": "^2.2.27",
|
|
9989
9989
|
"@formily/validator": "^2.2.27",
|
|
9990
|
-
"@nocobase/evaluators": "2.0.
|
|
9991
|
-
"@nocobase/flow-engine": "2.0.
|
|
9992
|
-
"@nocobase/sdk": "2.0.
|
|
9993
|
-
"@nocobase/utils": "2.0.
|
|
9990
|
+
"@nocobase/evaluators": "2.0.22",
|
|
9991
|
+
"@nocobase/flow-engine": "2.0.22",
|
|
9992
|
+
"@nocobase/sdk": "2.0.22",
|
|
9993
|
+
"@nocobase/utils": "2.0.22",
|
|
9994
9994
|
"@tanstack/react-table": "^8.21.3",
|
|
9995
9995
|
"@types/tabulator-tables": "^6.2.6",
|
|
9996
9996
|
"acorn-jsx": "^5.3.2",
|
|
@@ -81193,6 +81193,7 @@ class AssociationFieldModel extends FieldModel {
|
|
|
81193
81193
|
constructor() {
|
|
81194
81194
|
super(...arguments);
|
|
81195
81195
|
R(this, "operator", "$eq");
|
|
81196
|
+
R(this, "updateAssociation", !0);
|
|
81196
81197
|
}
|
|
81197
81198
|
}
|
|
81198
81199
|
AssociationFieldModel.registerFlow({
|
|
@@ -81202,7 +81203,13 @@ AssociationFieldModel.registerFlow({
|
|
|
81202
81203
|
init: {
|
|
81203
81204
|
handler(e, t) {
|
|
81204
81205
|
return L(this, null, function* () {
|
|
81205
|
-
|
|
81206
|
+
var o, n;
|
|
81207
|
+
if (e.model.updateAssociation) {
|
|
81208
|
+
const r = e.model.context.blockModel, i = (o = r == null ? void 0 : r.context) == null ? void 0 : o.resource, a = (n = e.model.parent) == null ? void 0 : n.fieldPath;
|
|
81209
|
+
if (!i || !a)
|
|
81210
|
+
return;
|
|
81211
|
+
i.addUpdateAssociationValues(a);
|
|
81212
|
+
}
|
|
81206
81213
|
});
|
|
81207
81214
|
}
|
|
81208
81215
|
},
|
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=ee(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),f=(0,import_react2.useMemo)(()=>[A(x({},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:f})},SchemaInitializerSubMenuInternal=()=>{const e=useSchemaInitializerItem();return(0,import_jsx_runtime.jsx)(SchemaInitializerSubMenu,x({},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,x({},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:()=>L(void 0,null,function*(){i(!0);try{const l=yield n.request({url:"logger:collect",method:"post",responseType:"blob",data:x({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 ai(){return this.app.aiManager}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 L(this,null,function*(){})}beforeLoad(){return L(this,null,function*(){})}load(){return L(this,null,function*(){})}t(t,o={}){var r;return this.app.i18n.t(t,x({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,x({},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,x({},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)(()=>{L(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,x({now:()=>new Date().toString()},l));i(a)}catch(a){console.error(a)}})},[t.parseVariable,e,o]),r};class SchemaInitializer{constructor(t){R(this,"options"),R(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=A(x({},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=>L(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)(()=>L(void 0,null,function*(){const u=yield FormDialog(e("Add page"),()=>(0,import_jsx_runtime.jsx)(SchemaComponentOptions,{scope:t.scope,components:x({},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.flowPage,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}))}),[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}){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)(()=>L(void 0,null,function*(){const c=yield FormDialog(e("Add group"),()=>(0,import_jsx_runtime.jsx)(SchemaComponentOptions,{scope:t.scope,components:x({},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=x(x(x({},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,x({},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,x({},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.20",license="Apache-2.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.20","@nocobase/flow-engine":"2.0.20","@nocobase/sdk":"2.0.20","@nocobase/utils":"2.0.20","@tanstack/react-table":"^8.21.3","@types/tabulator-tables":"^6.2.6","acorn-jsx":"^5.3.2",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",liquidjs:"^10.0.0",lodash:"4.17.21","lru-cache":"6.0.0","markdown-it":"14.1.0","markdown-it-highlightjs":"3.3.1",mathjs:"^15.1.0",mermaid:"9.4.3",mime:"^4.0.4","mime-match":"^1.0.2","quill-image-resize-module-react":"^3.0.0","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",vditor:"^3.10.3"},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=A(x({},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]=A(x({},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){R(this,"current"),R(this,"options"),R(this,"appVersion"),R(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=>L(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=>L(this,[i],function*({schema:n}){this.refresh(),n!=null&&n["x-uid"]&&(yield t.request({url:"/uiSchemas:patch",method:"post",data:x({},n)}),import_antd.message.success(o("Saved successfully"),.2))})),this.on("initializeActionContext",i=>L(this,[i],function*({schema:n}){n!=null&&n["x-uid"]&&(yield t.request({url:"/uiSchemas:initializeActionContext",method:"post",data:x({},n)}))})),this.on("batchPatch",i=>L(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=>L(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 L(this,null,function*(){if(!this.events[t])return;const[r,...i]=o;return Promise.all(this.events[t].map(n=>n.bind(this)(x({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((f,_)=>{_===this.current.name&&(d=u,c=!0,++u),f["x-index"]=u,++u,c&&(a[_]=f,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",x({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",x({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",x({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((f,_)=>{f["x-index"]=a,_===this.current.name&&(++a,c=a,u=!0),++a,u&&_!==this.current.name&&(d[_]=f,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",x({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)(),f=(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)(()=>{f.loadAPIClientEvents()},[f]);const{isMobileLayout:_}=useMobileLayout();return{dn:f,designable:_?!1:e,reset:r,refresh:d,setDesignable:t,DesignableBar:l,findComponent:(0,import_react2.useCallback)(v=>{var b;if(!v)return null;if(typeof v!="string")return v;const F=(0,import_get.default)(n,v);return(b=F==null?void 0:F[LAZY_COMPONENT_KEY])!=null?b:F},[import_get.default]),on:f.on.bind(f),patch:(0,import_react2.useCallback)((v,b)=>{const F=y=>{Object.keys(y).forEach(C=>{const S=y[C];C==="title"&&(m.title=S,p.title=S),C==="x-decorator-props"&&(m.decoratorProps||(m.decoratorProps={}),p["x-decorator-props"]||(p["x-decorator-props"]={}),Object.keys(S).forEach(P=>{m.decoratorProps[P]=S[P],p["x-decorator-props"][P]=S[P]})),C==="x-component-props"&&(m.componentProps||(m.componentProps={}),p["x-component-props"]||(p["x-component-props"]={}),Object.keys(S).forEach(P=>{m.componentProps[P]=S[P],p["x-component-props"][P]=S[P]}))})};if(typeof v=="string"){const y={};return(0,import_set.default)(y,v,b),F(y)}F(v),d()},[f]),shallowMerge:(0,import_react2.useCallback)(v=>{f.shallowMerge(v)},[f]),deepMerge:(0,import_react2.useCallback)(v=>{f.deepMerge(v)},[f]),remove:(0,import_react2.useCallback)((v,b)=>{f.remove(v,b)},[f]),insertAdjacent:(0,import_react2.useCallback)((v,b,F)=>{f.insertAdjacent(v,b,F)},[f]),insertBeforeBegin:(0,import_react2.useCallback)(v=>{f.insertBeforeBegin(v)},[f]),insertAfterBegin:(0,import_react2.useCallback)(v=>{f.insertAfterBegin(v)},[f]),insertBeforeEnd:(0,import_react2.useCallback)(v=>{f.insertBeforeEnd(v)},[f]),insertAfterEnd:(0,import_react2.useCallback)(v=>{f.insertAfterEnd(v)},[f])}}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(A(x({},t),{get scope(){return x(x({},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=ee(t,["useProps"]);let i=o;typeof o!="function"&&(i=useDef$4);const n=i();return x(x({},r),n)};function useParsedFilter({filterOption:e,onFilterChange:t}){const{parseFilter:o,findVariable:r}=useParseDataScopeFilter(),i=JSON.stringify(e),n=(0,import_react2.useRef)(e),l=(0,import_react2.useRef)(t),[a,c]=(0,import_react2.useState)({}),[u,d]=(0,import_react2.useState)(()=>e?null:i),m=!!e&&u!==i;return n.current=e,l.current=t,(0,import_react2.useEffect)(()=>{const p=n.current;if(!p){c({}),d(i);return}let h=!1;const g=()=>L(this,null,function*(){var v;const b=yield o(p);h||(c(b),d(i),(v=l.current)==null||v.call(l,b))});g();const f=import_lodash.default.debounce(g,DEBOUNCE_WAIT),_=(0,import_reactive.reaction)(()=>(0,import_client.flatten)(p,{breakOn({key:v}){return v.startsWith("$")&&v!=="$and"&&v!=="$or"},transformValue(v){if(!isVariable$1(v))return v;const b=getVariableName(v),F=r(b);let y=null;const C=getPath(v).split(".");return C.forEach((S,P)=>{const j=C.slice(0,P+1).join("."),I=(0,import_client.getValuesByPath)({[b]:(F==null?void 0:F.ctx)||{}},j);import_lodash.default.isEmpty(I)||(y=I)}),y}}),f,{equals:import_lodash.default.isEqual});return()=>{h=!0,f.cancel(),_()}},[i,r,o]),{filter:a,parseVariableLoading:m}}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),A(x({},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,x({},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)=>L(void 0,[e,t],function*({rules:o,variables:r,localVariables:i},n){return(yield Promise.all(o.filter(l=>!l.disabled).map(l=>L(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)=>L(void 0,[e,t],function*({rules:o,variables:r,localVariables:i},n){return(yield getSatisfiedActions({rules:o,variables:r,localVariables:i},n)).map(l=>A(x({},l),{value:getActionValue(l.operator,l.value)}))}),getSatisfiedValueMap=(e,t)=>L(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)=>A(x({},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,A(x({},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})]}));HighPerformanceSpin.displayName="HighPerformanceSpin";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,f,_,v;let b=d;const F=o.find(P=>P.uid===h.uid);if(!F)return;import_lodash.default.isFunction(u)&&(u=u(F,h,getSourceKey$1(p,F.field))),import_lodash.default.isFunction(d)&&(b=d(F,h)),import_lodash.default.isFunction(m)&&(m=m(F));const y=((g=h.service.params)==null?void 0:g[0])||{},C=((_=(f=h.service.params)==null?void 0:f[1])==null?void 0:_.filters)||{};if(u!=null)C[r]={$and:[{[b]:{[m]:u}}]};else if((v=h.clearSelection)==null||v.call(h),delete C[r],h.dataLoadingMode==="manual")return h.clearData();const S=mergeFilter([...Object.values(C).map(P=>removeNullCondition(P)),h.defaultFilter]);h.doFilter(A(x({},y),{page:1,filter:S}),{filters:C})})},[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)(),f=(0,import_react.useField)(),{getField:_}=useCollection_deprecated(),{getCollectionJoinField:v}=useCollectionManager_deprecated(),b=useRecord(),{isNew:F}=useCollectionRecord()||{},y=((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=f.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:C}=useParsedFilter({filterOption:y,onFilterChange:()=>{F&&f.reset()}}),S=(0,import_react2.useMemo)(()=>_(g.name)||v(g==null?void 0:g["x-collection-field"]),[g]),P=b==null?void 0:b[S==null?void 0:S.sourceKey],j=(0,import_react2.useMemo)(()=>{const I=["oho","o2m"].includes(S==null?void 0:S.interface);return mergeFilter([mergeFilter([I&&!isInFilterFormBlock(g)&&S!=null&&S.foreignKey&&!h?{[S.foreignKey]:{$is:null}}:null,C]),I&&P!==void 0&&P!==null&&!isInFilterFormBlock(g)&&S!=null&&S.foreignKey&&!h?{[S.foreignKey]:{$eq:P}}:null],"$or")},[S==null?void 0:S.interface,S==null?void 0:S.foreignKey,g,C,P,h]);return(0,import_react2.useMemo)(()=>A(x({resource:S==null?void 0:S.target,action:m},p),{params:A(x({},p==null?void 0:p.params),{filter:j})}),[S==null?void 0:S.target,m,j,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 x({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}},TableUidContext=(0,import_react2.createContext)(null),useColumnSettings=e=>{const{t}=(0,import_react_i18next.useTranslation)(),o=(0,import_react2.useContext)(TableUidContext),r=`nocobase_table_column_settings_${o}`,i=(0,import_react2.useCallback)(()=>{try{const a=localStorage.getItem(r);return a?JSON.parse(a):null}catch(a){return console.warn("Failed to parse table column settings from localStorage:",a),null}},[r]),n=(0,import_react2.useCallback)(a=>{try{const c=JSON.stringify(a);localStorage.setItem(r,c);const u=new CustomEvent("nocobase-table-settings-changed",{detail:{key:r,tableId:o,settings:a}});window.dispatchEvent(u)}catch(c){console.warn("Failed to save table column settings to localStorage:",c),import_antd.message.error(t("Failed to save table settings"))}},[r,o,t]),l=(0,import_react2.useCallback)(()=>{try{localStorage.removeItem(r);const a=new CustomEvent("nocobase-table-settings-changed",{detail:{key:r,tableId:o,settings:null}});window.dispatchEvent(a)}catch(a){console.warn("Failed to clear table column settings from localStorage:",a),import_antd.message.error(t("Failed to clear table settings"))}},[r,o,t]);return{getSettings:i,saveSettings:n,clearSettings:l}},useTableColumnIntegration=(e,t=!0)=>{const o=(0,import_react2.useContext)(TableUidContext),{getSettings:r}=useColumnSettings(),[i,n]=(0,import_react2.useState)(0);(0,import_react2.useEffect)(()=>{const a=c=>{const{key:u,tableId:d}=c.detail;(u.includes(o)||d===o)&&n(m=>m+1)};return window.addEventListener("nocobase-table-settings-changed",a),()=>{window.removeEventListener("nocobase-table-settings-changed",a)}},[o]);const l=(0,import_react2.useMemo)(()=>r(),[r,i]);return{columns:(0,import_react2.useMemo)(()=>{if(!t||!l||l.length===0)return e;const a=new Map;l.forEach(p=>{a.set(p.key,p)});const c=e.map(p=>{const h=a.get(p.key);if(h){const g=p.columnHidden||!h.visible,f=h.width||p.width,_=h.fixed||p.fixed;return A(x({},p),{columnHidden:g,fixed:_,width:f,_orderIndex:h.order})}return p}),u=[],d=[];c.forEach(p=>{p._orderIndex!==void 0?u.push(p):d.push(p)}),u.sort((p,h)=>(p._orderIndex||0)-(h._orderIndex||0));const m=[...u,...d];return m.forEach(p=>{delete p._orderIndex}),m},[e,l])}},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=ee(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),f=(0,import_react2.useMemo)(()=>[A(x({},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:f})},SchemaInitializerSubMenuInternal=()=>{const e=useSchemaInitializerItem();return(0,import_jsx_runtime.jsx)(SchemaInitializerSubMenu,x({},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,x({},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:()=>L(void 0,null,function*(){i(!0);try{const l=yield n.request({url:"logger:collect",method:"post",responseType:"blob",data:x({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 ai(){return this.app.aiManager}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 L(this,null,function*(){})}beforeLoad(){return L(this,null,function*(){})}load(){return L(this,null,function*(){})}t(t,o={}){var r;return this.app.i18n.t(t,x({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,x({},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,x({},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)(()=>{L(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,x({now:()=>new Date().toString()},l));i(a)}catch(a){console.error(a)}})},[t.parseVariable,e,o]),r};class SchemaInitializer{constructor(t){R(this,"options"),R(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=A(x({},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=>L(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)(()=>L(void 0,null,function*(){const u=yield FormDialog(e("Add page"),()=>(0,import_jsx_runtime.jsx)(SchemaComponentOptions,{scope:t.scope,components:x({},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.flowPage,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}))}),[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}){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)(()=>L(void 0,null,function*(){const c=yield FormDialog(e("Add group"),()=>(0,import_jsx_runtime.jsx)(SchemaComponentOptions,{scope:t.scope,components:x({},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=x(x(x({},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,x({},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,x({},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.22",license="Apache-2.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.22","@nocobase/flow-engine":"2.0.22","@nocobase/sdk":"2.0.22","@nocobase/utils":"2.0.22","@tanstack/react-table":"^8.21.3","@types/tabulator-tables":"^6.2.6","acorn-jsx":"^5.3.2",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",liquidjs:"^10.0.0",lodash:"4.17.21","lru-cache":"6.0.0","markdown-it":"14.1.0","markdown-it-highlightjs":"3.3.1",mathjs:"^15.1.0",mermaid:"9.4.3",mime:"^4.0.4","mime-match":"^1.0.2","quill-image-resize-module-react":"^3.0.0","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",vditor:"^3.10.3"},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=A(x({},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]=A(x({},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){R(this,"current"),R(this,"options"),R(this,"appVersion"),R(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=>L(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=>L(this,[i],function*({schema:n}){this.refresh(),n!=null&&n["x-uid"]&&(yield t.request({url:"/uiSchemas:patch",method:"post",data:x({},n)}),import_antd.message.success(o("Saved successfully"),.2))})),this.on("initializeActionContext",i=>L(this,[i],function*({schema:n}){n!=null&&n["x-uid"]&&(yield t.request({url:"/uiSchemas:initializeActionContext",method:"post",data:x({},n)}))})),this.on("batchPatch",i=>L(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=>L(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 L(this,null,function*(){if(!this.events[t])return;const[r,...i]=o;return Promise.all(this.events[t].map(n=>n.bind(this)(x({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((f,_)=>{_===this.current.name&&(d=u,c=!0,++u),f["x-index"]=u,++u,c&&(a[_]=f,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",x({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",x({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",x({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((f,_)=>{f["x-index"]=a,_===this.current.name&&(++a,c=a,u=!0),++a,u&&_!==this.current.name&&(d[_]=f,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",x({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)(),f=(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)(()=>{f.loadAPIClientEvents()},[f]);const{isMobileLayout:_}=useMobileLayout();return{dn:f,designable:_?!1:e,reset:r,refresh:d,setDesignable:t,DesignableBar:l,findComponent:(0,import_react2.useCallback)(v=>{var b;if(!v)return null;if(typeof v!="string")return v;const F=(0,import_get.default)(n,v);return(b=F==null?void 0:F[LAZY_COMPONENT_KEY])!=null?b:F},[import_get.default]),on:f.on.bind(f),patch:(0,import_react2.useCallback)((v,b)=>{const F=y=>{Object.keys(y).forEach(C=>{const S=y[C];C==="title"&&(m.title=S,p.title=S),C==="x-decorator-props"&&(m.decoratorProps||(m.decoratorProps={}),p["x-decorator-props"]||(p["x-decorator-props"]={}),Object.keys(S).forEach(P=>{m.decoratorProps[P]=S[P],p["x-decorator-props"][P]=S[P]})),C==="x-component-props"&&(m.componentProps||(m.componentProps={}),p["x-component-props"]||(p["x-component-props"]={}),Object.keys(S).forEach(P=>{m.componentProps[P]=S[P],p["x-component-props"][P]=S[P]}))})};if(typeof v=="string"){const y={};return(0,import_set.default)(y,v,b),F(y)}F(v),d()},[f]),shallowMerge:(0,import_react2.useCallback)(v=>{f.shallowMerge(v)},[f]),deepMerge:(0,import_react2.useCallback)(v=>{f.deepMerge(v)},[f]),remove:(0,import_react2.useCallback)((v,b)=>{f.remove(v,b)},[f]),insertAdjacent:(0,import_react2.useCallback)((v,b,F)=>{f.insertAdjacent(v,b,F)},[f]),insertBeforeBegin:(0,import_react2.useCallback)(v=>{f.insertBeforeBegin(v)},[f]),insertAfterBegin:(0,import_react2.useCallback)(v=>{f.insertAfterBegin(v)},[f]),insertBeforeEnd:(0,import_react2.useCallback)(v=>{f.insertBeforeEnd(v)},[f]),insertAfterEnd:(0,import_react2.useCallback)(v=>{f.insertAfterEnd(v)},[f])}}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(A(x({},t),{get scope(){return x(x({},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=ee(t,["useProps"]);let i=o;typeof o!="function"&&(i=useDef$4);const n=i();return x(x({},r),n)};function useParsedFilter({filterOption:e,onFilterChange:t}){const{parseFilter:o,findVariable:r}=useParseDataScopeFilter(),i=JSON.stringify(e),n=(0,import_react2.useRef)(e),l=(0,import_react2.useRef)(t),[a,c]=(0,import_react2.useState)({}),[u,d]=(0,import_react2.useState)(()=>e?null:i),m=!!e&&u!==i;return n.current=e,l.current=t,(0,import_react2.useEffect)(()=>{const p=n.current;if(!p){c({}),d(i);return}let h=!1;const g=()=>L(this,null,function*(){var v;const b=yield o(p);h||(c(b),d(i),(v=l.current)==null||v.call(l,b))});g();const f=import_lodash.default.debounce(g,DEBOUNCE_WAIT),_=(0,import_reactive.reaction)(()=>(0,import_client.flatten)(p,{breakOn({key:v}){return v.startsWith("$")&&v!=="$and"&&v!=="$or"},transformValue(v){if(!isVariable$1(v))return v;const b=getVariableName(v),F=r(b);let y=null;const C=getPath(v).split(".");return C.forEach((S,P)=>{const j=C.slice(0,P+1).join("."),I=(0,import_client.getValuesByPath)({[b]:(F==null?void 0:F.ctx)||{}},j);import_lodash.default.isEmpty(I)||(y=I)}),y}}),f,{equals:import_lodash.default.isEqual});return()=>{h=!0,f.cancel(),_()}},[i,r,o]),{filter:a,parseVariableLoading:m}}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),A(x({},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,x({},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)=>L(void 0,[e,t],function*({rules:o,variables:r,localVariables:i},n){return(yield Promise.all(o.filter(l=>!l.disabled).map(l=>L(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)=>L(void 0,[e,t],function*({rules:o,variables:r,localVariables:i},n){return(yield getSatisfiedActions({rules:o,variables:r,localVariables:i},n)).map(l=>A(x({},l),{value:getActionValue(l.operator,l.value)}))}),getSatisfiedValueMap=(e,t)=>L(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)=>A(x({},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,A(x({},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})]}));HighPerformanceSpin.displayName="HighPerformanceSpin";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,f,_,v;let b=d;const F=o.find(P=>P.uid===h.uid);if(!F)return;import_lodash.default.isFunction(u)&&(u=u(F,h,getSourceKey$1(p,F.field))),import_lodash.default.isFunction(d)&&(b=d(F,h)),import_lodash.default.isFunction(m)&&(m=m(F));const y=((g=h.service.params)==null?void 0:g[0])||{},C=((_=(f=h.service.params)==null?void 0:f[1])==null?void 0:_.filters)||{};if(u!=null)C[r]={$and:[{[b]:{[m]:u}}]};else if((v=h.clearSelection)==null||v.call(h),delete C[r],h.dataLoadingMode==="manual")return h.clearData();const S=mergeFilter([...Object.values(C).map(P=>removeNullCondition(P)),h.defaultFilter]);h.doFilter(A(x({},y),{page:1,filter:S}),{filters:C})})},[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)(),f=(0,import_react.useField)(),{getField:_}=useCollection_deprecated(),{getCollectionJoinField:v}=useCollectionManager_deprecated(),b=useRecord(),{isNew:F}=useCollectionRecord()||{},y=((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=f.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:C}=useParsedFilter({filterOption:y,onFilterChange:()=>{F&&f.reset()}}),S=(0,import_react2.useMemo)(()=>_(g.name)||v(g==null?void 0:g["x-collection-field"]),[g]),P=b==null?void 0:b[S==null?void 0:S.sourceKey],j=(0,import_react2.useMemo)(()=>{const I=["oho","o2m"].includes(S==null?void 0:S.interface);return mergeFilter([mergeFilter([I&&!isInFilterFormBlock(g)&&S!=null&&S.foreignKey&&!h?{[S.foreignKey]:{$is:null}}:null,C]),I&&P!==void 0&&P!==null&&!isInFilterFormBlock(g)&&S!=null&&S.foreignKey&&!h?{[S.foreignKey]:{$eq:P}}:null],"$or")},[S==null?void 0:S.interface,S==null?void 0:S.foreignKey,g,C,P,h]);return(0,import_react2.useMemo)(()=>A(x({resource:S==null?void 0:S.target,action:m},p),{params:A(x({},p==null?void 0:p.params),{filter:j})}),[S==null?void 0:S.target,m,j,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 x({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}},TableUidContext=(0,import_react2.createContext)(null),useColumnSettings=e=>{const{t}=(0,import_react_i18next.useTranslation)(),o=(0,import_react2.useContext)(TableUidContext),r=`nocobase_table_column_settings_${o}`,i=(0,import_react2.useCallback)(()=>{try{const a=localStorage.getItem(r);return a?JSON.parse(a):null}catch(a){return console.warn("Failed to parse table column settings from localStorage:",a),null}},[r]),n=(0,import_react2.useCallback)(a=>{try{const c=JSON.stringify(a);localStorage.setItem(r,c);const u=new CustomEvent("nocobase-table-settings-changed",{detail:{key:r,tableId:o,settings:a}});window.dispatchEvent(u)}catch(c){console.warn("Failed to save table column settings to localStorage:",c),import_antd.message.error(t("Failed to save table settings"))}},[r,o,t]),l=(0,import_react2.useCallback)(()=>{try{localStorage.removeItem(r);const a=new CustomEvent("nocobase-table-settings-changed",{detail:{key:r,tableId:o,settings:null}});window.dispatchEvent(a)}catch(a){console.warn("Failed to clear table column settings from localStorage:",a),import_antd.message.error(t("Failed to clear table settings"))}},[r,o,t]);return{getSettings:i,saveSettings:n,clearSettings:l}},useTableColumnIntegration=(e,t=!0)=>{const o=(0,import_react2.useContext)(TableUidContext),{getSettings:r}=useColumnSettings(),[i,n]=(0,import_react2.useState)(0);(0,import_react2.useEffect)(()=>{const a=c=>{const{key:u,tableId:d}=c.detail;(u.includes(o)||d===o)&&n(m=>m+1)};return window.addEventListener("nocobase-table-settings-changed",a),()=>{window.removeEventListener("nocobase-table-settings-changed",a)}},[o]);const l=(0,import_react2.useMemo)(()=>r(),[r,i]);return{columns:(0,import_react2.useMemo)(()=>{if(!t||!l||l.length===0)return e;const a=new Map;l.forEach(p=>{a.set(p.key,p)});const c=e.map(p=>{const h=a.get(p.key);if(h){const g=p.columnHidden||!h.visible,f=h.width||p.width,_=h.fixed||p.fixed;return A(x({},p),{columnHidden:g,fixed:_,width:f,_orderIndex:h.order})}return p}),u=[],d=[];c.forEach(p=>{p._orderIndex!==void 0?u.push(p):d.push(p)}),u.sort((p,h)=>(p._orderIndex||0)-(h._orderIndex||0));const m=[...u,...d];return m.forEach(p=>{delete p._orderIndex}),m},[e,l])}},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};
|
|
@@ -1848,7 +1848,7 @@ if (!ctx.record) {
|
|
|
1848
1848
|
}
|
|
1849
1849
|
}
|
|
1850
1850
|
}
|
|
1851
|
-
`;function isGridDelegatedStep(e,t){var o;return!!((o=GRID_DELEGATED_STEP_KEYS[e])!=null&&o.has(t))}class FormBlockModel extends CollectionBlockModel{constructor(){super(...arguments),R(this,"formValueRuntime"),R(this,"userModifiedTopLevelFields",new Set),R(this,"_defaultCustomModelClasses",{FormActionGroupModel:"FormActionGroupModel",FormItemModel:"FormItemModel",FormAssociationFieldGroupModel:"FormAssociationFieldGroupModel"}),R(this,"customModelClasses",{})}get form(){return this.context.form}syncRuntimeAssignRules(t="unknown"){var o,r,i;const n=this.getStepParams("formModelSettings","assignRules"),l=(n==null?void 0:n.value)||[];(r=(o=this.formValueRuntime)==null?void 0:o.syncAssignRules)==null||r.call(o,Array.isArray(l)?l:[]);const a=(i=this.context)==null?void 0:i.resource,c=collectUpdateAssociationValuesFromAssignRules(l,this.collection);a!=null&&a.addUpdateAssociationValues&&c.length&&a.addUpdateAssociationValues(c)}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){const o=this.context;if(typeof o.setFormValues=="function"){o.setFormValues(t,{source:"system"}).catch(r=>{console.warn("[FormBlockModel] Failed to set form values via ctx.setFormValues",r)});return}this.form.setFieldsValue(t)}setFieldValue(t,o){const r=this.context;if(typeof r.setFormValue=="function"){r.setFormValue(t,o,{source:"system"}).catch(i=>{console.warn("[FormBlockModel] Failed to set form value via ctx.setFormValue",i)});return}this.form.setFieldValue(t,o)}markUserModifiedFields(t){if(!(!t||typeof t!="object")&&!Array.isArray(t))for(const o of Object.keys(t))o&&this.userModifiedTopLevelFields.add(o)}getUserModifiedFields(){return this.userModifiedTopLevelFields}resetUserModifiedFields(){this.userModifiedTopLevelFields.clear()}onDispatchEventStart(t,o,r){return L(this,null,function*(){var i;if(t==="beforeRender"){const n=this.subModels.grid;n&&(yield n.dispatchEvent("beforeRender",r,{useCache:o==null?void 0:o.useCache}))}yield(i=Ne(FormBlockModel.prototype,this,"onDispatchEventStart"))==null?void 0:i.call(this,t,o,r)})}getStepParams(t,o){const r=this.subModels.grid;if(t&&o&&isGridDelegatedStep(t,o)&&r){const i=r.getStepParams(t,o);return typeof i<"u"?i:super.getStepParams(t,o)}if(t&&!o&&GRID_DELEGATED_STEP_KEYS[t]&&r){const i=super.getStepParams(t)||{},n=r.getStepParams(t)||{};for(const l of GRID_DELEGATED_STEP_KEYS[t])Object.prototype.hasOwnProperty.call(n,l)&&typeof n[l]<"u"&&(i[l]=n[l]);return i}return super.getStepParams(t,o)}setStepParams(t,o,r){const i=this.subModels.grid,n=(l,a)=>{const c=GRID_DELEGATED_STEP_KEYS[l];if(!c||!i)return a;const u={};for(const[d,m]of Object.entries(a))c.has(d)?i.setStepParams(l,d,m):u[d]=m;return u};if(typeof t=="string"&&typeof o=="string"&&r!==void 0){isGridDelegatedStep(t,o)&&i?i.setStepParams(t,o,r):super.setStepParams(t,o,r);return}if(typeof t=="string"&&typeof o=="object"&&o!==null){const l=n(t,o);Object.keys(l).length>0&&super.setStepParams(t,l);return}if(typeof t=="object"&&t!==null){const l={};for(const[a,c]of Object.entries(t)){if(typeof c!="object"||c===null){l[a]=c;continue}const u=n(a,c);Object.keys(u).length>0&&(l[a]=u)}Object.keys(l).length>0&&super.setStepParams(l)}}saveStepParams(){return L(this,null,function*(){return yield saveStepParamsWithSubModelsIfNeeded(this,()=>L(this,null,function*(){const t=yield Ne(FormBlockModel.prototype,this,"saveStepParams").call(this),o=this.subModels.grid;return yield o==null?void 0:o.saveStepParams(),t}))})}createFormValuesMetaFactory(){return(0,import_flow_engine.createAssociationAwareObjectMetaFactory)(()=>this.collection,this.translate("Current form"),()=>{var t,o;return((o=(t=this.form)==null?void 0:t.getFieldsValue)==null?void 0:o.call(t))||{}})}useHooksBeforeRender(){const[t]=import_antd.Form.useForm();this.context.defineProperty("form",{get:()=>t}),this.formValueRuntime||(this.formValueRuntime=new FormValueRuntime({model:this,getForm:()=>this.context.form}));const o=this.formValueRuntime;o.mount();const r=this.createFormValuesMetaFactory();this.context.defineProperty("formValues",{get:()=>o.formValues,cache:!1,meta:r,resolveOnServer:i=>{var n,l,a,c,u,d,m,p,h,g,f,_,v,b,F;if(!i)return!1;const y=(C=>{const S=String(C||"").match(/^([^.[]+)/);return S==null?void 0:S[1]})(i);if(!y||!((l=(n=this.collection)==null?void 0:n.getField)!=null&&l.call(n,y)))return!1;if((()=>{var C,S,P,j,I;const T=(P=(S=(C=this.subModels.grid)==null?void 0:C.subModels)==null?void 0:S.items)!=null?P:[],D=new Set;for(const E of T){const w=(I=(j=E==null?void 0:E.getStepParams)==null?void 0:j.call(E,"fieldSettings","init"))==null?void 0:I.fieldPath,k=w==null?void 0:w.toString().split(".")[0];k&&D.add(k)}return D})().has(y)){const C=(c=(a=this.form)==null?void 0:a.getFieldValue)==null?void 0:c.call(a,y);if(C==null||Array.isArray(C)&&C.length===0)return!1;const S=o.getFormValuesSnapshot();return S&&typeof S=="object"&&typeof(0,import_shared2.getValuesByPath)(S,i)<"u"?!1:(0,import_flow_engine.createAssociationSubpathResolver)(()=>this.collection,()=>o.getFormValuesSnapshot())(i)}try{const C=(F=(f=(m=(d=(u=this.context)==null?void 0:u.resource)==null?void 0:d.getMeta)==null?void 0:m.call(d,"currentFilterByTk"))!=null?f:(g=(h=(p=this.context)==null?void 0:p.resource)==null?void 0:h.getFilterByTk)==null?void 0:g.call(h))!=null?F:(b=(_=this.collection)==null?void 0:_.getFilterByTK)==null?void 0:b.call(_,(v=this.context)==null?void 0:v.record);if(typeof C>"u"||C===null)return!1}catch{return!1}return!0},serverOnlyWhenContextParams:!0}),this.context.defineMethod("getFormValues",function(){return o.getFormValuesSnapshot()}),this.context.defineMethod("setFormValues",function(i,n){return o.setFormValues(this,i,n)}),this.context.defineMethod("setFormValue",function(i,n,l){return o.setFormValues(this,[{path:i,value:n}],l)})}onInit(t){super.onInit(t),this.emitter.on("onSubModelAdded",o=>{o===this.subModels.grid&&queueMicrotask(()=>this.syncRuntimeAssignRules("onSubModelAdded:grid"))}),this.context.defineProperty("record",{get:()=>this.getCurrentRecord(),cache:!1}),this.context.resource.on("saved",()=>{this.dispatchEvent("formSubmitSuccess",{})})}onMount(){var t;super.onMount(),(t=this.formValueRuntime)==null||t.mount({sync:!0}),this.syncRuntimeAssignRules("onMount"),setTimeout(()=>{this.applyFlow("eventSettings")},100)}onUnmount(){var t;(t=this.formValueRuntime)==null||t.dispose(),this.formValueRuntime=void 0,super.onUnmount()}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=ee(t,["model","children","layoutProps","initialValues"]),a,c,u,d;const m=!!((a=o==null?void 0:o.context)!=null&&a.isMobileLayout&&(i==null?void 0:i.layout)==="horizontal"),p=[l.className,m?FLOW_KEEP_MOBILE_HORIZONTAL_CLASS:"",m?flowKeepMobileHorizontalClassName:""].filter(Boolean).join(" ");return(0,import_jsx_runtime.jsx)(import_antd.Form,A(x(A(x({form:o.form,initialValues:((d=(u=(c=o.context)==null?void 0:c.view)==null?void 0:u.inputArgs)==null?void 0:d.formData)||o.context.record||n},(0,import_lodash.omit)(i,"labelWidth")),{labelCol:{style:{width:i==null?void 0:i.labelWidth}},onFieldsChange:h=>{const g=o.formValueRuntime;g&&g.handleFormFieldsChange(h)},onValuesChange:(h,g)=>{var f;(f=o.markUserModifiedFields)==null||f.call(o,h);const _=o.formValueRuntime;if(_){_.handleFormValuesChange(h,g);return}o.dispatchEvent("formValuesChange",{changedValues:h,allValues:g},{debounce:!0}),o.emitter.emit("formValuesChange",{changedValues:h,allValues:g})}}),l),{className:p||void 0,children:r}))}const getOuterHeight$1=e=>{if(!e)return 0;const t=e.getBoundingClientRect(),o=window.getComputedStyle(e),r=parseFloat(o.marginTop)||0,i=parseFloat(o.marginBottom)||0;return t.height+r+i},useFormGridHeight=({heightMode:e,containerRef:t,actionsRef:o,footerRef:r,deps:i=[]})=>{const[n,l]=(0,import_react2.useState)(),a=(0,import_react2.useCallback)(()=>{if(e!=="specifyValue"&&e!=="fullHeight"){l(h=>h===void 0?h:void 0);return}const c=t.current;if(!c)return;const u=c.getBoundingClientRect().height;if(!u)return;const d=getOuterHeight$1((o==null?void 0:o.current)||null),m=getOuterHeight$1((r==null?void 0:r.current)||null),p=Math.max(0,Math.floor(u-d-m));l(h=>h===p?h:p)},[e,t,o,r]);return(0,import_react2.useLayoutEffect)(()=>{a()},[a,...i]),(0,import_react2.useEffect)(()=>{if(!t.current||typeof ResizeObserver>"u")return;const c=t.current,u=(o==null?void 0:o.current)||null,d=(r==null?void 0:r.current)||null,m=new ResizeObserver(()=>a());return m.observe(c),u&&m.observe(u),d&&m.observe(d),()=>m.disconnect()},[a,t,o,r,...i]),n},FormBlockContent=({model:e,gridModel:t,layoutProps:o,onFinish:r,grid:i,actions:n,footer:l,heightMode:a,height:c})=>{var u,d;const m=(0,import_react2.useRef)(null),p=(0,import_react2.useRef)(null),h=(0,import_react2.useRef)(null),g=a==="specifyValue"||a==="fullHeight",f=useFormGridHeight({heightMode:a,containerRef:m,actionsRef:n?p:void 0,footerRef:l?h:void 0,deps:[c]});return(0,import_react2.useEffect)(()=>{var _;if(!t)return;const v=g?f:void 0;((_=t.props)==null?void 0:_.height)!==v&&t.setProps({height:v})},[t,f,g]),(0,import_jsx_runtime.jsx)(FormComponent,{model:e,layoutProps:o,onFinish:r,style:g?{display:"flex",flexDirection:"column",minHeight:0,height:"100%"}:void 0,children:(0,import_jsx_runtime.jsxs)("div",{ref:m,style:g?{display:"flex",flexDirection:"column",minHeight:0,flex:1}:void 0,children:[i,n?(0,import_jsx_runtime.jsx)("div",{style:{paddingTop:(d=(u=e.context)==null?void 0:u.themeToken)==null?void 0:d.padding},ref:p,children:n}):null,l?(0,import_jsx_runtime.jsx)("div",{ref:h,children:l}):null]})})};FormBlockModel.define({hide:!0});FormBlockModel.registerFlow({key:"formModelSettings",title:(0,import_flow_engine.tExpr)("Form settings"),steps:{layout:{use:"layout",title:(0,import_flow_engine.tExpr)("Layout")},assignRules:{use:"formAssignRules",title:(0,import_flow_engine.tExpr)("Field values"),beforeParamsSave(e){const t=clearLegacyDefaultValuesFromFormModel(e.model);Array.isArray(t)&&t.length&&markSaveStepParamsWithSubModels(e.model)},afterParamsSave(e){var t,o,r,i,n,l;const a=e.model.getStepParams("formModelSettings","assignRules"),c=(a==null?void 0:a.value)||[];(r=(o=(t=e.model)==null?void 0:t.formValueRuntime)==null?void 0:o.syncAssignRules)==null||r.call(o,Array.isArray(c)?c:[]);const u=(n=(i=e.model)==null?void 0:i.context)==null?void 0:n.resource,d=collectUpdateAssociationValuesFromAssignRules(c,(l=e.model)==null?void 0:l.collection);u!=null&&u.addUpdateAssociationValues&&d.length&&u.addUpdateAssociationValues(d)}}}});FormBlockModel.registerFlow({key:"eventSettings",title:(0,import_flow_engine.tExpr)("Event settings"),on:"formValuesChange",steps:{linkageRules:{use:"fieldLinkageRules",afterParamsSave(e){var t;e.model.applyFlow("eventSettings",{changedValues:{},allValues:(t=e.form)==null?void 0:t.getFieldsValue(!0)})}}}});FormBlockModel.registerEvents({formValuesChange:{title:(0,import_flow_engine.tExpr)("Form values change"),name:"formValuesChange",uiSchema:{condition:{type:"object",title:(0,import_flow_engine.tExpr)("Trigger condition"),"x-decorator":"FormItem","x-component":ConditionBuilder}},handler:commonConditionHandler}});class FormModel extends FormBlockModel{}FormModel.define({hide:!0});class AssignFormModel extends FormBlockModel{useHooksBeforeRender(){const[t]=import_antd.Form.useForm();this.context.defineProperty("form",{get:()=>t})}onInit(t){super.onInit(t);const o=(0,import_flow_engine.createCurrentRecordMetaFactory)(this.context,()=>this.collection);this.context.defineProperty("record",{get:()=>{var r;return(r=this.getCurrentRecord)==null?void 0:r.call(this)},cache:!1,resolveOnServer:(0,import_flow_engine.createRecordResolveOnServerWithLocal)(()=>this.collection,()=>{var r;return(r=this.getCurrentRecord)==null?void 0:r.call(this)}),meta:o}),this.context.defineProperty("filterManager",{once:!0,get:()=>new FilterManager(this,t==null?void 0:t.filterManager)}),this.isManualRefresh=!0}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.tExpr)("Field assignments"),hide:!0,createModelOptions:{use:"AssignFormModel",subModels:{grid:{use:"AssignFormGridModel"}}}});class FormGridModel extends GridModel{constructor(){super(...arguments),R(this,"itemFallback",(0,import_jsx_runtime.jsx)(import_antd.Skeleton.Input,{block:!0,size:"small",style:{marginBottom:"0.5rem"}})),R(this,"itemSettingsMenuLevel",2),R(this,"itemFlowSettings",{showBackground:!0,style:{top:-6,left:-6,right:-6,bottom:-6}}),R(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("FormAssociationFieldGroupModel"),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")})})}render(){var t,o;const r=(t=this.props)==null?void 0:t.height,i=(o=this.props)==null?void 0:o.heightModel,n=this.context.themeToken,l=super.render();return i==="defaultHeight"?l:(0,import_jsx_runtime.jsx)("div",{style:{height:r,overflowY:"auto",marginLeft:`-${n.marginLG}px`,marginRight:`-${n.marginLG}px`,paddingLeft:`${n.marginLG}px`,paddingRight:`${n.marginLG}px`,paddingTop:5},children:l})}}FormGridModel.registerFlow({key:"formFieldGridSettings",steps:{grid:{handler(e,t){e.model.setProps("rowGap",0),e.model.setProps("colGap",16)}}}});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 f=g.getStepParams("fieldSettings","init")||{};return(f==null?void 0:f.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=>{try{const h=typeof(p==null?void 0:p.getStepParams)=="function"?p.getStepParams("fieldSettings","init"):null;return(h==null?void 0:h.fieldPath)===t}catch{return!1}});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.tExpr)("Assign grid")});function getFieldBindingUse(e){var t,o;const r=(o=(t=e==null?void 0:e.stepParams)==null?void 0:t.fieldBinding)==null?void 0:o.use;return typeof r=="string"?r:void 0}function rebuildFieldSubModel(e){return L(this,arguments,function*({parentModel:t,targetUse:o,defaultProps:r,pattern:i,fieldSettingsInit:n}){var l,a,c;const u=t.subModels.field,d=u==null?void 0:u.uid,m=(a=(l=u==null?void 0:u.serialize)==null?void 0:l.call(u))==null?void 0:a.subModels;for(const _ in m)m[_].delegateToParent===!1&&delete m[_];const p=(u==null?void 0:u.stepParams)||{},h=n??((c=t.getFieldSettingsInitParams)==null?void 0:c.call(t)),g=A(x({},p),{fieldBinding:A(x({},p.fieldBinding),{use:o}),fieldSettings:{init:h}}),f=t.flowEngine;d&&(u==null||u.invalidateFlowCache("beforeRender",!0),f.removeModelWithSubModels(d)),yield t.setSubModel("field",{uid:d,use:FieldModel,props:x(x({},r||{}),i?{pattern:i}:{}),stepParams:g,subModels:m}).dispatchEvent("beforeRender",void 0,{useCache:!1}),yield t.save()})}function getValueWithIndex(e,t,o){const r=(0,import_lodash.castArray)(o).filter(n=>typeof n=="string"),i=t.split(".");if(r!=null&&r.length){const n=[];let l=0,a=0;for(;l<i.length;){const c=i[l];if(n.push(c),a<r.length){const[u,d]=r[a].split(":");u===c&&(n.push(Number(d)),a++)}l++}return(0,import_lodash.get)(e,n)}return(0,import_lodash.get)(e,i)}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),this.context.defineProperty("actionName",{get:()=>"view",cache:!1})}renderItem(){const t=this.subModels.field,o=this.context.fieldIndex,r=this.context.record,i=this.context.currentObject,n=this.context.item,l=this.context.getPropertyOptions("item"),a=o!=null?(()=>{const d=t.createFork({},`${o}`);d.context.defineProperty("fieldIndex",{get:()=>o}),d.context.defineProperty("record",{get:()=>r,cache:!1}),d.context.defineProperty("currentObject",{get:()=>i,cache:!1});const m=l||{},p=ee(m,["value"]);return d.context.defineProperty("item",A(x({},p),{get:()=>n,cache:!1})),this.context.pattern&&d.context.defineProperty("pattern",{get:()=>this.context.pattern}),d})():t,c=this.context.pattern?A(x(x({},this.context.blockModel.props),this.props),{pattern:this.context.pattern,disabled:this.context.pattern==="readPretty"}):x(x({},this.context.blockModel.props),this.props),u=getValueWithIndex(r,this.fieldPath,o);return(0,import_jsx_runtime.jsx)(import_flow_engine.FormItem,A(x({},c),{value:u,children:(0,import_jsx_runtime.jsx)(import_flow_engine.FieldModelRenderer,{model:a})}))}}DetailsItemModel.define({label:(0,import_flow_engine.tExpr)("Display fields"),sort:100});DetailsItemModel.registerFlow({key:"detailItemSettings",sort:300,title:(0,import_flow_engine.tExpr)("Detail item settings"),steps:{showLabel:{title:(0,import_flow_engine.tExpr)("Show label"),uiMode:{type:"switch",key:"showLabel"},defaultParams:{showLabel:!0},handler(e,t){e.model.setProps({showLabel:t.showLabel})}},label:{title:(0,import_flow_engine.tExpr)("Label"),uiSchema:e=>({title:{"x-component":"Input","x-decorator":"FormItem","x-reactions":t=>{var o;const r=e.model,i=(o=r.collectionField)==null?void 0:o.title;t.decoratorProps=A(x({},t.decoratorProps),{extra:r.context.t("Original field title: ")+i})}}}),defaultParams:e=>{var t;return{title:(t=e.collectionField)==null?void 0:t.title}},handler(e,t){var o;const r={ns:"lm-flow-engine",compareWith:(o=e.collectionField)==null?void 0:o.title};e.model.setProps({label:e.t(t.title,r)})}},aclCheck:{use:"aclCheck"},init:{handler(e){return L(this,null,function*(){const{collectionField:t}=e.model;t&&e.model.setProps(t.getComponentProps())})}},tooltip:{title:(0,import_flow_engine.tExpr)("Tooltip"),uiSchema:{tooltip:{"x-component":"Input.TextArea","x-decorator":"FormItem"}},handler(e,t){e.model.setProps({tooltip:e.t(t.tooltip,{ns:"lm-flow-engine"})})}},description:{title:(0,import_flow_engine.tExpr)("Description"),uiSchema:{description:{"x-component":"Input.TextArea","x-decorator":"FormItem"}},handler(e,t){e.model.setProps({extra:e.t(t.description,{ns:"lm-flow-engine"})})}},model:{title:(0,import_flow_engine.tExpr)("Field component"),use:"displayFieldComponent"},fieldNames:{use:"titleField",title:(0,import_flow_engine.tExpr)("Title field"),beforeParamsSave:(e,t,o)=>L(void 0,null,function*(){var r,i;if(!e.collectionField||!e.collectionField.isAssociationField())return null;if(t.label!==o.label){e.model.setProps(x({titleField:t.label},(i=(r=e.collectionField.targetCollection)==null?void 0:r.getField(t.label))==null?void 0:i.getComponentProps()));const n=e.collectionField.targetCollection.getField(t.label),l=import_flow_engine.DisplayItemModel.getDefaultBindingByField(e,n),a=l.modelName;yield rebuildFieldSubModel({parentModel:e.model,targetUse:a,defaultProps:typeof(l==null?void 0:l.defaultProps)=="function"?l.defaultProps(e,e.collectionField):l==null?void 0:l.defaultProps,pattern:e.model.getProps().pattern})}}),handler(e,t){return L(this,null,function*(){var o,r;if(!e.collectionField||e.model.subModels.field.disableTitleField)return;e.model.setProps(x({titleField:t.label},(r=(o=e.collectionField.targetCollection)==null?void 0:o.getField(t.label))==null?void 0:r.getComponentProps()));const i=e.collectionField.targetCollection;if(i){const n=i.getField(t.label),l=import_flow_engine.DisplayItemModel.getDefaultBindingByField(e,n).modelName,a=e.model.subModels.field.use;l!==a&&e.model.setStepParams(e.flowKey,"model",{use:l})}})},hideInSettings:e=>L(void 0,null,function*(){return!e.collectionField||!e.collectionField.isAssociationField()||e.model.subModels.field.disableTitleField})}}});DetailsItemModel.registerFlow({key:"paginationChange",on:"paginationChange",steps:{aclCheckRefresh:{use:"aclCheckRefresh"}}});function isInSameBlock(e,t){var o,r;const i=(r=(o=e==null?void 0:e.context)==null?void 0:o.blockModel)==null?void 0:r.uid,n=t==null?void 0:t.uid;return!i||!n?!1:String(i)===String(n)}function tryGetModelTargetPathCandidate(e){var t,o;const r=(t=e==null?void 0:e.context)==null?void 0:t.fieldPathArray;if(Array.isArray(r)&&r.length)return r;try{const a=(o=e==null?void 0:e.getStepParams)==null?void 0:o.call(e,"fieldSettings","init"),c=a==null?void 0:a.fieldPath;if(typeof c=="string"&&c)return c}catch{}const i=e==null?void 0:e.fieldPath;if(typeof i=="string"&&i)return i;const n=typeof(e==null?void 0:e.getProps)=="function"?e.getProps():e==null?void 0:e.props,l=n==null?void 0:n.name;return typeof l=="string"&&l||Array.isArray(l)&&l.length?l:null}function normalizeResolvedNamePath(e){return!Array.isArray(e)||!e.length||typeof e[0]!="string"?null:e}function resolveModelNamePath(e){var t;const o=tryGetModelTargetPathCandidate(e);if(!o)return null;const r=resolveDynamicNamePath(o,(t=e==null?void 0:e.context)==null?void 0:t.fieldIndex);return normalizeResolvedNamePath(r)}function cleanupEmptyPlainObjectAncestors(e,t){if(!(!e||typeof e!="object")&&!(!Array.isArray(t)||t.length<2))for(let o=t.length-1;o>=1;o--){const r=t.slice(0,o);if(typeof r[r.length-1]=="number")continue;const i=import_lodash.default.get(e,r);import_lodash.default.isPlainObject(i)&&Object.keys(i).length===0&&import_lodash.default.unset(e,r)}}function forEachModelIncludingForks(e,t){e!=null&&e.forEachModel&&e.forEachModel(o=>{t(o);const r=o==null?void 0:o.forks;r&&typeof r.forEach=="function"&&r.forEach(i=>t(i))})}function collectHiddenModelNamePaths(e){const t=e==null?void 0:e.flowEngine;if(!(t!=null&&t.forEachModel))return[];const o=[],r=new Set;return forEachModelIncludingForks(t,i=>{if(!i||typeof i!="object"||!i.hidden||!isInSameBlock(i,e))return;const n=resolveModelNamePath(i);if(!n)return;const l=JSON.stringify(n);r.has(l)||(r.add(l),o.push(n))}),o}function normalizeFormNamePath(e){return typeof e=="string"?e?[e]:null:Array.isArray(e)?normalizeResolvedNamePath(e):null}function isNamePathPrefix(e,t){if(!Array.isArray(e)||!Array.isArray(t)||e.length>t.length)return!1;for(let o=0;o<e.length;o++)if(e[o]!==t[o])return!1;return!0}function getValidationNamePathsExcludingHiddenModels(e){const t=e==null?void 0:e.form;if(!t||typeof t.getFieldsError!="function")return null;const o=t.getFieldsError();if(!Array.isArray(o))return null;const r=[],i=new Set;for(const l of o){const a=normalizeFormNamePath(l==null?void 0:l.name);if(!a)continue;const c=JSON.stringify(a);i.has(c)||(i.add(c),r.push(a))}if(!r.length)return null;const n=collectHiddenModelNamePaths(e);return n.length?r.filter(l=>!n.some(a=>isNamePathPrefix(a,l))):r}function omitHiddenModelValuesFromSubmit(e,t){if(!e||typeof e!="object")return e;const o=collectHiddenModelNamePaths(t);if(!o.length)return e;const r=import_lodash.default.cloneDeep(e);for(const i of o)import_lodash.default.unset(r,i),cleanupEmptyPlainObjectAncestors(r,i);return r}function submitHandler(e,t,o){return L(this,null,function*(){var r,i;const n=e.resource,l=e.blockModel,a=e!=null&&e.flowSettingsEnabled?getValidationNamePathsExcludingHiddenModels(l):null;Array.isArray(a)?a.length&&(yield l.form.validateFields(a)):yield l.form.validateFields();const c=l.form.getFieldsValue(!0),u=omitHiddenModelValuesFromSubmit(c,l);if(n instanceof import_flow_engine.SingleRecordResource){if(l instanceof EditFormModel){const m=n.getMeta("currentFilterByTk");m?n.setFilterByTk(m):n.isNewRecord=!0}const d=o?yield o(u):yield n.save(u,t.requestConfig);l instanceof EditFormModel?(n.isNewRecord=!1,(r=l.resetUserModifiedFields)==null||r.call(l),yield n.refresh()):(l.form.resetFields(),(i=l.resetUserModifiedFields)==null||i.call(l),l.emitter.emit("onFieldReset"),e.view.inputArgs.collectionName===l.collection.name&&e.view.inputArgs.onChange&&e.view.inputArgs.onChange(d==null?void 0:d.data))}else if(n instanceof import_flow_engine.MultiRecordResource){const d=n.getMeta("currentFilterByTk");if(!d){e.message.error(e.t("No filterByTk found for multi-record resource."));return}(yield o)?yield o(u,d):yield n.update(d,u,t.requestConfig)}})}class EditFormModel extends FormBlockModel{constructor(){super(...arguments),R(this,"actionFlowSettings",{showBackground:!1,showBorder:!1,toolbarPosition:"above"}),R(this,"actionExtraToolbarItems",[{key:"drag-handler",component:import_flow_engine.DragHandler,sort:1}]),R(this,"handlePageChange",t=>L(this,null,function*(){if(this.resource instanceof import_flow_engine.MultiRecordResource){const o=this.resource;o.setPage(t),o.loading=!0,yield o.refresh(),yield dispatchEventDeep(this,"paginationChange")}}))}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}hasAvailableData(){return this.resource.hasData()}getAclActionName(){return"update"}submitHandler(t,o,r){return L(this,null,function*(){yield submitHandler(t,o,r)})}submit(){return L(this,arguments,function*(t={},o){yield submitHandler(this.context,t,o)})}renderComponent(){var t,o;const{colon:r,labelAlign:i,labelWidth:n,labelWrap:l,layout:a}=this.props,c=!!this.context.flowSettingsEnabled,u=this.hasAvailableData(),d=!c&&!u,{heightMode:m,height:p}=this.decoratorProps,h=!this.resource.loading&&!u?(0,import_jsx_runtime.jsx)("div",{style:{textAlign:"center",marginTop:16,color:(o=(t=this.context)==null?void 0:t.themeToken)==null?void 0:o.colorTextDescription},children:this.translate("No available data currently")}):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"}})}):null;return(0,import_jsx_runtime.jsx)(FormBlockContent,{model:this,gridModel:this.subModels.grid,layoutProps:{colon:r,labelAlign:i,labelWidth:n,labelWrap:l,layout:a},heightMode:m,height:p,grid:(0,import_jsx_runtime.jsx)(import_flow_engine.FlowModelRenderer,{model:this.subModels.grid,showFlowSettings:!1}),actions:(0,import_jsx_runtime.jsx)("div",{style:d?{pointerEvents:"none",opacity:.45}:void 0,children:(0,import_jsx_runtime.jsx)(import_flow_engine.DndProvider,{children:(0,import_jsx_runtime.jsxs)(import_antd.Space,{wrap:!0,children:[this.mapSubModels("actions",g=>{if(!(g.hidden&&!c))return(0,import_jsx_runtime.jsx)(import_flow_engine.Droppable,{model:g,children:(0,import_jsx_runtime.jsx)(import_flow_engine.MemoFlowModelRenderer,{model:g,showFlowSettings:this.context.flowSettingsEnabled?this.actionFlowSettings:!1,extraToolbarItems:this.actionExtraToolbarItems},g.uid)},g.uid)}),this.renderConfigureActions()]})})}),footer:h})}}R(EditFormModel,"scene",BlockSceneEnum.oam),R(EditFormModel,"blockCapabilityActionName","update");EditFormModel.registerFlow({key:"formSettings",title:(0,import_flow_engine.tExpr)("Edit form settings"),steps:{init:{handler(e){return L(this,null,function*(){if(!e.resource)throw new Error("Resource is not initialized");e.resource.on("refresh",()=>L(this,null,function*(){var t,o,r,i,n,l;const a=e.resource.getMeta("currentFilterByTk"),c=x({},e.model.getCurrentRecord());if(!c)return;const u=(t=e.association)==null?void 0:t.targetKey;if(u&&((o=e.association)==null?void 0:o.interface)!=="m2m"?e.resource.setMeta({currentFilterByTk:c==null?void 0:c[u]}):e.resource.setMeta({currentFilterByTk:e.collection.getFilterByTK(c)}),!e.form)return;const d=e.resource.getMeta("currentFilterByTk"),m=!(0,import_lodash.isEqual)(a,d),p=(i=(r=e.model).getUserModifiedFields)==null?void 0:i.call(r),h=!!(p!=null&&p.size),g=()=>{if(!(p!=null&&p.size))return;const f=_=>_!==null&&typeof _=="object";for(const _ of Array.from(p)){const v=e.form.getFieldValue(_),b=c==null?void 0:c[_];(Object.is(v,b)||f(v)&&f(b)&&(0,import_lodash.isEqual)(v,b))&&p.delete(_)}};if(!m&&h){const f=x({},c);for(const _ of p)f[_]=e.form.getFieldValue(_);e.form.setFieldsValue(f),g();return}m&&((l=(n=e.model).resetUserModifiedFields)==null||l.call(n)),e.form.setFieldsValue(c),g()}))})}},dataScope:{use:"dataScope"},refresh:{handler(e){return L(this,null,function*(){if(!e.resource)throw new Error("Resource is not initialized")})}}}});EditFormModel.registerFlow({key:"paginationChange",on:"paginationChange",steps:{blockLinkageRulesRefresh:{use:"linkageRulesRefresh",defaultParams:{actionName:"blockLinkageRules",flowKey:"cardSettings",stepKey:"linkageRules"}},fieldsLinkageRulesRefresh:{use:"linkageRulesRefresh",defaultParams:{actionName:"fieldLinkageRules",flowKey:"eventSettings",stepKey:"linkageRules"}}}});EditFormModel.define({label:(0,import_flow_engine.tExpr)("Form (Edit)"),searchable:!0,searchPlaceholder:(0,import_flow_engine.tExpr)("Search"),createModelOptions:{use:"EditFormModel",subModels:{grid:{use:"FormGridModel"}}},sort:340});function isToManyAssociation(e){if(!e)return!1;const t=e==null?void 0:e.type;return t==="belongsToMany"||t==="hasMany"||t==="belongsToArray"}function coerceForToOneField(e,t){var o;const r=!!((o=e==null?void 0:e.isAssociationField)!=null&&o.call(e)),i=isToManyAssociation(e);return r&&!i&&Array.isArray(t)?t.length?t[0]:void 0:t}function buildDynamicNamePath(e,t){if(!(t!=null&&t.length))return e;const o=t[t.length-1],[r,i]=String(o).split(":"),n=Number(i);if(!r||!Number.isFinite(n))return e;let l=0;for(const u of t){const[d]=String(u).split(":");d===r&&(l+=1)}let a=-1,c=0;for(let u=0;u<e.length;u++)if(String(e[u])===r&&(c+=1,c===l)){a=u;break}if(a===-1){for(let u=e.length-1;u>=0;u--)if(String(e[u])===r){a=u;break}}return a===-1?e:[n,...e.slice(a+1)]}const interfacesOfUnsupportedDefaultValue=["o2o","oho","obo","o2m","attachment","expression","point","lineString","circle","polygon","sequence","formula"];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=>{if(this.collectionField){const r=this.collectionField.getComponentProps();o.setProps(r),this.setProps(x({},import_lodash.default.pick(r,"rules")||{}))}})}renderItem(){var t,o;const r=this.subModels.field,i=this.context.fieldIndex,n=this.context.fieldKey,l=((t=this.parent)==null?void 0:t.context.fieldPathArray)||[],a=i!=null?(()=>{const p=r.createFork({},`${n}`);p.context.defineProperty("fieldIndex",{get:()=>i}),p.context.defineProperty("fieldKey",{get:()=>n}),this.context.currentObject&&p.context.defineProperty("currentObject",{get:()=>this.context.currentObject});const h=this.context.getPropertyOptions("item");if(this.context.item){const g=h||{},f=ee(g,["value"]);p.context.defineProperty("item",A(x({},f),{get:()=>this.context.item,cache:!1}))}return this.context.pattern&&p.context.defineProperty("pattern",{get:()=>this.context.pattern}),p})():r,c=this.context.pattern?A(x({},this.props),{pattern:this.context.pattern}):this.props,u=ee(c,["initialValue"]),d=buildDynamicNamePath(this.props.name,i);this.context.defineProperty("fieldPathArray",{value:[...l,...import_lodash.default.castArray(d)]});const m=((o=this.context.item)==null?void 0:o.value)||this.context.record;return(0,import_jsx_runtime.jsx)(import_flow_engine.FormItem,A(x({},u),{name:d,validateFirst:!0,disabled:this.props.disabled||!import_lodash.default.isEmpty(m)&&!m.__is_new__&&this.props.aclDisabled||!import_lodash.default.isEmpty(m)&&m.__is_new__&&this.props.aclCreateDisabled,children:(0,import_jsx_runtime.jsx)(import_flow_engine.FieldModelRenderer,{model:a,name:d})}))}}FormItemModel.define({label:(0,import_flow_engine.tExpr)("Display fields"),sort:100});FormItemModel.registerFlow({key:"editItemSettings",sort:300,title:(0,import_flow_engine.tExpr)("Form item settings"),steps:{showLabel:{title:(0,import_flow_engine.tExpr)("Show label"),uiMode:{type:"switch",key:"showLabel"},defaultParams:{showLabel:!0},handler(e,t){e.model.setProps({showLabel:t.showLabel})}},label:{title:(0,import_flow_engine.tExpr)("Label"),uiSchema:e=>({label:{"x-component":"Input","x-decorator":"FormItem","x-reactions":t=>{var o;const r=e.model,i=(o=r.collectionField)==null?void 0:o.title;t.decoratorProps=A(x({},t.decoratorProps),{extra:r.context.t("Original field title: ")+i})}}}),defaultParams:e=>{var t;return{label:(t=e.collectionField)==null?void 0:t.title}},handler(e,t){var o;const r={ns:"lm-flow-engine",compareWith:(o=e.collectionField)==null?void 0:o.title};e.model.setProps({label:e.t(t.label,r)})}},aclCheck:{use:"aclCheck",handler(e,t){return L(this,null,function*(){var o,r,i,n,l,a,c,u,d,m,p,h,g,f,_;if(!e.collectionField||!e.blockModel)return;const v=e.blockModel.context.actionName,b=yield e.aclCheck({dataSourceKey:(o=e.dataSource)==null?void 0:o.key,resourceName:(r=e.collectionField)==null?void 0:r.collectionName,fields:[(i=e.collectionField)==null?void 0:i.name],actionName:v});if(v==="update"){const F=yield e.aclCheck({dataSourceKey:(n=e.dataSource)==null?void 0:n.key,resourceName:(l=e.collectionField)==null?void 0:l.collectionName,fields:[e.collectionField.name],actionName:"view"});e.prefixFieldPath&&e.item&&((yield e.aclCheck({dataSourceKey:(a=e.dataSource)==null?void 0:a.key,resourceName:(c=e.collectionField)==null?void 0:c.collectionName,fields:[e.collectionField.name],actionName:"create"}))||e.model.setProps({aclCreateDisabled:!0}));const y=(d=(u=e.item)==null?void 0:u.__is_new__)!=null?d:!1;!F&&!y&&(e.model.hidden=!0,e.model.forbidden={actionName:"view"},e.exitAll()),b||e.model.setProps({aclDisabled:!0})}else if(v==="create"){const F=yield e.aclCheck({dataSourceKey:(m=e.dataSource)==null?void 0:m.key,resourceName:(p=e.collectionField)==null?void 0:p.collectionName,actionName:"update"}),y=yield e.aclCheck({dataSourceKey:(h=e.dataSource)==null?void 0:h.key,resourceName:(g=e.collectionField)==null?void 0:g.collectionName,fields:[e.collectionField.name],actionName:"update"}),C=(_=(f=e.item)==null?void 0:f.__is_stored__)!=null?_:!1;!b&&!C&&(e.model.hidden=!0,e.model.forbidden={actionName:v},e.exitAll()),(!F||!y)&&e.model.setProps({aclDisabled:!0})}})}},init:{handler(e){return L(this,null,function*(){const t=e.model.fieldPath,o=t.includes(".")?t.split("."):t;e.model.setProps({name:o})})}},tooltip:{title:(0,import_flow_engine.tExpr)("Tooltip"),uiSchema:{tooltip:{"x-component":"Input.TextArea","x-decorator":"FormItem"}},handler(e,t){e.model.setProps({tooltip:e.t(t.tooltip,{ns:"lm-flow-engine"})})}},description:{title:(0,import_flow_engine.tExpr)("Description"),uiSchema:{description:{"x-component":"Input.TextArea","x-decorator":"FormItem","x-component-props":{autoSize:!0}}},handler(e,t){e.model.setProps({extra:e.t(t.description,{ns:"lm-flow-engine"})})}},initialValue:{title:(0,import_flow_engine.tExpr)("Default value"),disabledInSettings:!0,disabledReasonInSettings:e=>`${e.t("This setting has been moved to")}: ${e.t("Form block settings")} > ${e.t("Field values")}`,uiSchema:e=>{var t,o,r,i;if(e.model.parent.parent instanceof EditFormModel||(o=(t=e.model.subModels)==null?void 0:t.field)!=null&&o.updateAssociation)return;const n=(r=e.model.collectionField)==null?void 0:r.interface;if(!((i=interfacesOfUnsupportedDefaultValue==null?void 0:interfacesOfUnsupportedDefaultValue.includes)!=null&&i.call(interfacesOfUnsupportedDefaultValue,n)))return{defaultValue:{"x-component":"DefaultValue","x-decorator":"FormItem"}}},defaultParams:e=>{const t=e.model.collectionField;if(t.interface==="nanoid"&&t.options.autoFill!==!1){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;if((r=interfacesOfUnsupportedDefaultValue==null?void 0:interfacesOfUnsupportedDefaultValue.includes)!=null&&r.call(interfacesOfUnsupportedDefaultValue,i))return;const n=e.model.collectionField,l=coerceForToOneField(n,t.defaultValue);e.model.setProps({initialValue:l})}},validation:{title:(0,import_flow_engine.tExpr)("Validation"),use:"validation"},required:{title:(0,import_flow_engine.tExpr)("Required"),use:"required"},model:{use:"fieldComponent",title:(0,import_flow_engine.tExpr)("Field component")},pattern:{use:"pattern"},titleField:{use:"titleField",hideInSettings(e){return!e.collectionField||!e.collectionField.isAssociationField()||!(e.collectionField.isAssociationField()&&e.model.getProps().pattern==="readPretty")},defaultParams:e=>({titleField:e.model.props.titleField||e.model.context.collectionField.targetCollectionTitleFieldName}),beforeParamsSave:(e,t,o)=>L(void 0,null,function*(){if(!(e.collectionField.isAssociationField()&&e.model.getProps().pattern==="readPretty"))return null;const r=t.titleField||t.label;if(r!==o.titleField){const i=e.collectionField.targetCollection,n=i.getField(r),l=DetailsItemModel.getDefaultBindingByField(e,n);if(l.modelName!==e.model.subModels.field.use){const a=e.model.subModels.field.uid;yield e.engine.destroyModel(a),yield e.model.setSubModel("field",{use:l.modelName,stepParams:{fieldSettings:{init:{dataSourceKey:e.model.collectionField.dataSourceKey,collectionName:i.name,fieldPath:r}}}}).save()}e.model.setProps(e.collectionField.targetCollection.getField(r).getComponentProps())}}),handler(e,t){return L(this,null,function*(){e.model.props.pattern==="readPretty"?e.model.setProps({titleField:t==null?void 0:t.label}):e.model.setProps({titleField:t.titleField})})}}}});FormItemModel.registerFlow({key:"paginationChange",on:"paginationChange",steps:{aclCheckRefresh:{use:"aclCheckRefresh",defaultParams:{strategy:"formItem"}}}});class AssignFormItemModel extends FormItemModel{constructor(t){super(t),R(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 f,_;const v=this.getStepParams("fieldSettings","init")||{},b=`${v==null?void 0:v.dataSourceKey}.${v==null?void 0:v.collectionName}.${v==null?void 0:v.fieldPath}`,F=(f=this.context)==null?void 0:f.dataSourceManager;return(_=F==null?void 0:F.getCollectionField)==null?void 0:_.call(F,b)}});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 f=(m.getFields()||[]).find(b=>(b==null?void 0:b.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,f);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 f=(c=h==null?void 0:h.getField)==null?void 0:c.call(h,g),_=(f==null?void 0:f.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,f]=import_react2.default.useState(null);import_react2.default.useEffect(()=>{var P,j,I,T,D,E,w,k,N,B,M,$,q,O,V,z,U,K,H,Y,Z;if(!l)return;const W=(((P=r==null?void 0:r.getFields)==null?void 0:P.call(r))||[]).find(me=>(me==null?void 0:me.name)===l);r.getField(l);const J=import_flow_engine.EditableItemModel.getDefaultBindingByField(o,W);if(!J)return;const oe=J.modelName,G=(I=(j=o==null?void 0:o.engine)==null?void 0:j.createModel)==null?void 0:I.call(j,{use:"VariableFieldFormModel",subModels:{fields:[{use:oe,stepParams:{fieldSettings:{init:i}}}]}});if(!G)return;(D=(T=G.context)==null?void 0:T.defineProperty)==null||D.call(T,"collection",{value:r});const Q=o==null?void 0:o.dataSource;Q&&((w=(E=G.context)==null?void 0:E.defineProperty)==null||w.call(E,"dataSource",{value:Q}));const X=(k=r==null?void 0:r.getField)==null?void 0:k.call(r,i==null?void 0:i.fieldPath);X&&((B=(N=G.context)==null?void 0:N.defineProperty)==null||B.call(N,"collectionField",{value:X}));const te=o==null?void 0:o.blockModel;te&&(($=(M=G.context)==null?void 0:M.defineProperty)==null||$.call(M,"blockModel",{value:te}));const ie=o.form;ie&&((O=(q=G.context)==null?void 0:q.defineProperty)==null||O.call(q,"form",{value:ie})),G.context&&Object.defineProperty(G.context,"resource",{configurable:!0,enumerable:!0,get:()=>te==null?void 0:te.resource});const re=(z=(V=G==null?void 0:G.subModels)==null?void 0:V.fields)==null?void 0:z[0],ae=(U=r==null?void 0:r.getField)==null?void 0:U.call(r,i==null?void 0:i.fieldPath),se=ae==null?void 0:ae.type,le=ae==null?void 0:ae.interface,ge=se==="belongsToMany"||se==="hasMany"||se==="belongsToArray"||le==="m2m"||le==="o2m"||le==="mbm";if((K=re==null?void 0:re.setProps)==null||K.call(re,{disabled:!1,readPretty:!1,pattern:"editable",updateAssociation:!1,multiple:ge}),(H=re==null?void 0:re.dispatchEvent)==null||H.call(re,"beforeRender",void 0,{sequential:!0,useCache:!0}),ensureOptionsFromUiSchemaEnumIfAbsent(re,ae),!((Y=re==null?void 0:re.props)!=null&&Y.fieldNames)&&ae!=null&&ae.targetCollection){const me=ae.targetCollection,xe=(ae==null?void 0:ae.targetKey)||(me==null?void 0:me.filterTargetKey)||"id";(Z=re==null?void 0:re.setProps)==null||Z.call(re,{fieldNames:{label:me==null?void 0:me.titleField,value:xe}})}return f(G),()=>{var me,xe,pe,fe;(pe=(xe=(me=G==null?void 0:G.subModels)==null?void 0:me.fields)==null?void 0:xe.forEach)==null||pe.call(xe,de=>{var ce;return(ce=de==null?void 0:de.remove)==null?void 0:ce.call(de)}),(fe=G==null?void 0:G.remove)==null||fe.call(G)}},[]);const _=P=>(import_react2.default.useEffect(()=>{var j,I,T,D;if(!g)return;(j=g.setProps)==null||j.call(g,x({},P));const E=(T=(I=g==null?void 0:g.subModels)==null?void 0:I.fields)==null?void 0:T[0];E&&((D=E.setProps)==null||D.call(E,{value:P==null?void 0:P.value,onChange:(...w)=>{var k;const N=w&&w.length?w[0]:void 0;(k=P==null?void 0:P.onChange)==null||k.call(P,N)}}))},[P]),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%"}}),b=P=>(0,import_jsx_runtime.jsx)(RunJSValueEditor,{t:this.context.t,value:P==null?void 0:P.value,onChange:P==null?void 0:P.onChange,containerStyle:{width:"100%"}}),F={renderInputComponent:P=>{var j;const I=(j=P==null?void 0:P.paths)==null?void 0:j[0];if(I==="constant")return _;if(I==="null")return v;if(I==="runjs")return b},resolveValueFromPath:P=>{var j;const I=(j=P==null?void 0:P.paths)==null?void 0:j[0];if(I==="constant")return"";if(I==="null")return null;if(I==="runjs")return{code:"",version:"v2"}},resolvePathFromValue:P=>P===null?["null"]:(0,import_flow_engine.isRunJSValue)(P)?["runjs"]:(0,import_flow_engine.isVariableExpression)(P)?(0,import_flow_engine.parseValueToPath)(P):["constant"]},y=()=>L(this,null,function*(){var P;const j=(P=this.context)==null?void 0:P.getPropertyMetaTree,I=typeof j=="function"?yield j():[];return[{title:(0,import_flow_engine.tExpr)("Constant"),name:"constant",type:"string",paths:["constant"],render:_},{title:(0,import_flow_engine.tExpr)("Null"),name:"null",type:"object",paths:["null"],render:v},{title:(0,import_flow_engine.tExpr)("RunJS"),name:"runjs",type:"object",paths:["runjs"],render:b},...I]});let C=(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 C=(h=(p=(m=this.props)==null?void 0:m.label)!=null?p:S==null?void 0:S.title)!=null?h:C,(0,import_jsx_runtime.jsx)(import_flow_engine.FormItem,A(x({},this.props),{label:C,name:n,initialValue:this.assignValue,valuePropName:"__assign_value__",trigger:"__assign_trigger__",validateTrigger:"__assign_trigger__",children:import_react2.default.createElement(P=>{const j=P==null?void 0:P.__assign_value__,I=typeof j>"u"?this.assignValue:j;return(0,import_jsx_runtime.jsx)(import_flow_engine.VariableInput,{value:I,onChange:T=>{var D;this.assignValue=T,(D=P==null?void 0:P.__assign_trigger__)==null||D.call(P,T)},metaTree:y,converters:F,clearValue:""})})}))},{})}}AssignFormItemModel.define({label:(0,import_flow_engine.tExpr)("Assign field")});AssignFormItemModel.registerFlow({key:"editItemSettings",sort:300,title:(0,import_flow_engine.tExpr)("Form item settings"),steps:{showLabel:{title:(0,import_flow_engine.tExpr)("Show label"),uiMode:{type:"switch",key:"showLabel"},defaultParams:{showLabel:!0},handler(e,t){e.model.setProps({showLabel:t.showLabel})}},label:{title:(0,import_flow_engine.tExpr)("Label"),uiSchema:e=>({label:{"x-component":"Input","x-decorator":"FormItem","x-reactions":t=>{var o;const r=e.model,i=(o=r.collectionField)==null?void 0:o.title;t.decoratorProps=A(x({},t.decoratorProps),{extra:r.context.t("Original field title: ")+i})}}}),defaultParams:e=>({label:e.model.collectionField.title}),handler(e,t){var o;t.label&&t.label===((o=e.model.collectionField)==null?void 0:o.title)?e.model.setProps({label:t.label}):e.model.setProps({label:e.t(t.label,{ns:"lm-flow-engine"})})}},init:{handler(e){return L(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})})}},tooltip:{title:(0,import_flow_engine.tExpr)("Tooltip"),uiSchema:{tooltip:{"x-component":"Input.TextArea","x-decorator":"FormItem"}},handler(e,t){e.model.setProps({tooltip:e.t(t.tooltip,{ns:"lm-flow-engine"})})}},description:{title:(0,import_flow_engine.tExpr)("Description"),uiSchema:{description:{"x-component":"Input.TextArea","x-decorator":"FormItem"}},handler(e,t){e.model.setProps({extra:e.t(t.description,{ns:"lm-flow-engine"})})}},validation:{title:(0,import_flow_engine.tExpr)("Validation"),use:"validation"},required:{title:(0,import_flow_engine.tExpr)("Required"),use:"required"}}});class DetailsAssociationFieldGroupModel extends AssociationFieldGroupModel{}R(DetailsAssociationFieldGroupModel,"itemModelName","DetailsItemModel");DetailsAssociationFieldGroupModel.define({label:'{{t("Display association fields")}}'});const getOuterHeight=e=>{if(!e)return 0;const t=e.getBoundingClientRect(),o=window.getComputedStyle(e),r=parseFloat(o.marginTop)||0,i=parseFloat(o.marginBottom)||0;return t.height+r+i},useDetailsGridHeight=({heightMode:e,containerRef:t,actionsRef:o,paginationRef:r,deps:i=[]})=>{const[n,l]=(0,import_react2.useState)(),a=(0,import_react2.useCallback)(()=>{if(e!=="specifyValue"&&e!=="fullHeight"){l(h=>h===void 0?h:void 0);return}const c=t.current;if(!c)return;const u=c.getBoundingClientRect().height;if(!u)return;const d=getOuterHeight(o.current),m=getOuterHeight(r.current),p=Math.max(0,Math.floor(u-d-m));l(h=>h===p?h:p)},[e,t,o,r]);return(0,import_react2.useLayoutEffect)(()=>{a()},[a,...i]),(0,import_react2.useEffect)(()=>{if(!t.current||typeof ResizeObserver>"u")return;const c=t.current,u=o.current,d=r.current,m=new ResizeObserver(()=>a());return m.observe(c),u&&m.observe(u),d&&m.observe(d),()=>m.disconnect()},[a,t,o,r,...i]),n};class DetailsBlockModel extends CollectionBlockModel{constructor(){super(...arguments),R(this,"hadSingleRecordData",!1),R(this,"hasMultiRefreshDispatched",!1),R(this,"_defaultCustomModelClasses",{RecordActionGroupModel:"RecordActionGroupModel",DetailsItemModel:"DetailsItemModel",DetailsAssociationFieldGroupModel:"DetailsAssociationFieldGroupModel",DetailsCustomItemModel:"DetailsCustomItemModel"}),R(this,"customModelClasses",{}),R(this,"handlePageChange",t=>L(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){var o,r,i;super.onInit(t),this.hadSingleRecordData=(i=(r=(o=this.resource)==null?void 0:o.hasData)==null?void 0:r.call(o))!=null?i:!1,this.hasMultiRefreshDispatched=!1;const n=(0,import_flow_engine.createCurrentRecordMetaFactory)(this.context,()=>this.collection);this.context.defineProperty("record",{get:()=>this.getCurrentRecord(),cache:!1,resolveOnServer:(0,import_flow_engine.createRecordResolveOnServerWithLocal)(()=>this.collection,()=>this.getCurrentRecord()),meta:n}),this.resource.on("refresh",()=>{var l,a,c;if(this.isMultiRecordResource()){this.hasMultiRefreshDispatched=!0,dispatchEventDeep(this,"paginationChange");return}const u=this.hadSingleRecordData;this.hadSingleRecordData=(c=(a=(l=this.resource)==null?void 0:l.hasData)==null?void 0:a.call(l))!=null?c:!1,u&&dispatchEventDeep(this,"paginationChange")})}isMultiRecordResource(){return this.resource instanceof import_flow_engine.MultiRecordResource}hasDispatchedMultiRefresh(){return this.hasMultiRefreshDispatched}getCurrentRecord(){const t=this.resource.getData();return Array.isArray(t)?t[0]:t}hasAvailableData(){return this.resource.hasData()}refresh(){return L(this,null,function*(){yield this.resource.refresh()})}renderPagination(){var t,o;if(!this.resource.loading&&!this.hasAvailableData())return(0,import_jsx_runtime.jsx)("div",{style:{textAlign:"center",color:(o=(t=this.context)==null?void 0:t.themeToken)==null?void 0:o.colorTextDescription},children:this.translate("No available data currently")});const r=this.resource;return!this.isMultiRecordResource()||!r.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:r.getPage(),total:r.getTotalPage(),onChange:this.handlePageChange,style:{display:"inline-block"}})})}renderConfigureActions(){return(0,import_jsx_runtime.jsx)(import_flow_engine.AddSubModelButton,{model:this,subModelKey:"actions",subModelBaseClass:this.getModelClassName("RecordActionGroupModel"),afterSubModelInit:t=>L(this,null,function*(){t.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")}renderComponent(){const{colon:t,labelAlign:o,labelWidth:r,labelWrap:i,layout:n}=this.props,l=!!this.context.flowSettingsEnabled,a=!l&&!this.hasAvailableData(),{heightMode:c,height:u}=this.decoratorProps;return(0,import_jsx_runtime.jsx)(DetailsBlockContent,{model:this,gridModel:this.subModels.grid,isConfigMode:l,heightMode:c,height:u,layoutProps:{colon:t,labelAlign:o,labelWidth:r,labelWrap:i,layout:n},actions:(0,import_jsx_runtime.jsx)(import_flow_engine.DndProvider,{children:(0,import_jsx_runtime.jsx)("div",{style:a?{pointerEvents:"none",opacity:.45}:void 0,children:(0,import_jsx_runtime.jsxs)(import_antd.Space,{wrap:!0,children:[this.mapSubModels("actions",d=>{if(!(d.hidden&&!l))return(0,import_jsx_runtime.jsx)(import_flow_engine.Droppable,{model:d,children:(0,import_jsx_runtime.jsx)(import_flow_engine.FlowModelRenderer,{model:d,showFlowSettings:{showBackground:!1,showBorder:!1,toolbarPosition:"above"},extraToolbarItems:[{key:"drag-handler",component:import_flow_engine.DragHandler,sort:1}]})},d.uid)}),this.renderConfigureActions()]})})})})}}R(DetailsBlockModel,"scene",BlockSceneEnum.oam);const DetailsBlockContent=({model:e,gridModel:t,isConfigMode:o,heightMode:r,height:i,layoutProps:n,actions:l})=>{const a=(0,import_react2.useRef)(null),c=(0,import_react2.useRef)(null),u=(0,import_react2.useRef)(null),d=r==="specifyValue"||r==="fullHeight",m=useDetailsGridHeight({heightMode:r,containerRef:a,actionsRef:c,paginationRef:u,deps:[i]});return(0,import_react2.useEffect)(()=>{var p,h;if(!t)return;const g=d?m:void 0;((p=t.props)==null?void 0:p.height)===g&&((h=t.props)==null?void 0:h.heightMode)===r||t.setProps({height:g,heightMode:r})},[t,m,d,r]),(0,import_jsx_runtime.jsx)(FormComponent,{model:e,layoutProps:n,style:d?{display:"flex",flexDirection:"column",minHeight:0,height:"100%"}:void 0,children:(0,import_jsx_runtime.jsxs)("div",{ref:a,style:d?{display:"flex",flexDirection:"column",minHeight:0,flex:1}:void 0,children:[(0,import_jsx_runtime.jsx)("div",{ref:c,style:{textAlign:"right",lineHeight:"0px",paddingBottom:o&&e.context.themeToken.padding},children:l}),(0,import_jsx_runtime.jsx)(import_flow_engine.FlowModelRenderer,{model:t,showFlowSettings:!1},`${(t==null?void 0:t.uid)||"details-grid"}:${o?"design":"runtime"}`),(0,import_jsx_runtime.jsx)("div",{ref:u,children:e.renderPagination()})]})})};DetailsBlockModel.registerFlow({key:"detailsSettings",title:(0,import_flow_engine.tExpr)("Details settings"),sort:150,steps:{refresh:{handler(e){return L(this,null,function*(){if(!e.resource)throw new Error("Resource is not initialized");yield e.model.applySubModelsBeforeRenderFlows("grid")})}},layout:{use:"layout",title:(0,import_flow_engine.tExpr)("Layout")},dataScope:{use:"dataScope"},defaultSorting:{use:"sortingRule",title:(0,import_flow_engine.tExpr)("Default sorting")},linkageRules:{use:"detailsFieldLinkageRules"}}});DetailsBlockModel.registerFlow({key:"paginationChange",on:"paginationChange",steps:{blockLinkageRulesRefresh:{use:"linkageRulesRefresh",defaultParams:{actionName:"blockLinkageRules",flowKey:"cardSettings",stepKey:"linkageRules"}},fieldslinkageRulesRefresh:{use:"linkageRulesRefresh",defaultParams:{actionName:"detailsFieldLinkageRules",flowKey:"detailsSettings",stepKey:"linkageRules"}}}});DetailsBlockModel.registerFlow({key:"initialPaginationChangeRefresh",sort:10001,steps:{refreshPaginationRelatedStates:{handler(e){return L(this,null,function*(){var t;if(e.model.hidden||!e.model.isMultiRecordResource()||e.model.hasDispatchedMultiRefresh())return;const o=e.model.resource;if(!o)return;const r=((t=o.dataLoadingMode)!=null?t:o.loadingMode)==="manual",i=typeof o.hasActiveFilters=="function"?o.hasActiveFilters():!1;!r||i||(yield dispatchEventDeep(e.model,"paginationChange"))})}}}});DetailsBlockModel.define({label:(0,import_flow_engine.tExpr)("Details"),searchable:!0,searchPlaceholder:(0,import_flow_engine.tExpr)("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,p,h;const g=typeof a.defineChildren=="function"||!!((c=a.meta)!=null&&c.children),f={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,hide:(p=a.meta)==null?void 0:p.hide};return g?f.children=_=>{var v;return typeof a.defineChildren=="function"?a.defineChildren(_):((v=a.meta)==null?void 0:v.children)||[]}:f.createModelOptions=((h=a.meta)==null?void 0:h.createModelOptions)||{use:l},f});return import_lodash.default.sortBy([...i(o),...i(r)],"sort")}}R(DetailsCustomItemModel,"renderMode",import_flow_engine.ModelRenderMode.RenderFunction);DetailsCustomItemModel.define({hide:!0,label:(0,import_flow_engine.tExpr)("Others")});class DetailsGridModel extends GridModel{constructor(){super(...arguments),R(this,"itemFallback",(0,import_jsx_runtime.jsx)(import_antd.Skeleton.Input,{block:!0,size:"small",style:{marginBottom:"0.5rem"}})),R(this,"itemSettingsMenuLevel",2),R(this,"itemFlowSettings",{showBackground:!0,style:{top:-6,left:-6,right:-6,bottom:-6}}),R(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 this.context.flowSettingsEnabled?(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")})}):null}render(){var t,o;const r=(t=this.props)==null?void 0:t.height,i=(o=this.props)==null?void 0:o.heightMode,n=this.context.themeToken,l=super.render();return i==="defaultHeight"?l:(0,import_jsx_runtime.jsx)("div",{style:{height:r,overflowY:"auto",marginLeft:`-${n.marginLG}px`,marginRight:`-${n.marginLG}px`,paddingLeft:`${n.marginLG}px`,paddingRight:`${n.marginLG}px`},children:l})}}DetailsGridModel.registerFlow({key:"detailFieldGridSettings",steps:{grid:{handler(e,t){e.model.setProps("rowGap",0),e.model.setProps("colGap",16)}}}});function transformChildrenToJS(e,t){const{fieldUseModel:o,refreshTargets:r}=t,i=n=>Array.isArray(n)?n.map(l=>{const a=x({},l);if(a.children)if(typeof a.children=="function"){const c=a.children;a.children=u=>L(this,null,function*(){const d=yield c(u);return i(d)})}else Array.isArray(a.children)&&(a.children=i(a.children));if(a.createModelOptions){const c=a.createModelOptions;a.createModelOptions=(u,d)=>L(this,null,function*(){const m=yield typeof c=="function"?c(u,d):c;return m.subModels=m.subModels||{},m.subModels.field=A(x({},m.subModels.field||{}),{use:o}),m}),a.refreshTargets=a.refreshTargets||r}return a}):[];return i(e)}function buildAssociationJSGroup(e,t,o){var r,i,n,l;const{fieldUseModel:a,refreshTargets:c}=o,u=(r=o.key)!=null?r:"js-association-fields",d=(i=o.label)!=null?i:(0,import_flow_engine.tExpr)("Display association fields"),m=(n=o.searchable)!=null?n:!0,p=(l=o.searchPlaceholder)!=null?l:(0,import_flow_engine.tExpr)("Search fields");return{key:u,type:"group",label:d,searchable:m,searchPlaceholder:p,children:h=>L(this,null,function*(){const g=yield t(h);return transformChildrenToJS(g,{fieldUseModel:a,refreshTargets:c})})}}function buildJSFieldMenuChildren(e,t){return L(this,null,function*(){var o;const{useModel:r,fieldUseModel:i,refreshTargets:n,associationPathName:l,associationProvider:a}=t,c=(0,import_flow_engine.buildWrapperFieldChildren)(e,{useModel:r,fieldUseModel:i,associationPathName:l,refreshTargets:n});let u=[];const d=(o=c==null?void 0:c[0])==null?void 0:o.children;if(Array.isArray(d)&&(u=d),!a)return u;const m=yield a(e);if(!Array.isArray(m)||m.length===0)return u;const p=buildAssociationJSGroup(e,a,{fieldUseModel:i,refreshTargets:n});return[...u,p]})}class DetailsJSFieldItemModel extends DetailsCustomItemModel{static defineChildren(t){return buildJSFieldMenuChildren(t,{useModel:"DetailsItemModel",fieldUseModel:"JSFieldModel",refreshTargets:["DetailsItemModel"],associationProvider:o=>DetailsAssociationFieldGroupModel.defineChildren(o)})}}DetailsJSFieldItemModel.define({label:(0,import_flow_engine.tExpr)("JS field"),searchable:!0,searchPlaceholder:(0,import_flow_engine.tExpr)("Search fields"),sort:110});class FilterFormFieldModel extends FieldModel{}class AssociationFieldModel extends FieldModel{constructor(){super(...arguments),R(this,"operator","$eq")}}AssociationFieldModel.registerFlow({key:"AssociationFieldInit",sort:800,steps:{init:{handler(e,t){return L(this,null,function*(){e.model.updateAssociation&&e.model.context.blockModel.context.resource.addUpdateAssociationValues(e.model.parent.fieldPath)})}},allowCreateCheck:{handler(e){return L(this,null,function*(){var t;const o=yield e.aclCheck({dataSourceKey:e.collectionField.dataSourceKey,resourceName:(t=e.collectionField)==null?void 0:t.target,actionName:"create"});e.model.setProps({allowCreate:!!o})})}}}});function buildOpenerUids(e,t={}){var o,r,i,n,l,a;const c=!!t.navigation,u=_=>{if(Array.isArray(_))return _.filter(v=>typeof v=="string"&&!!v)},d=u((r=(o=e.view)==null?void 0:o.inputArgs)==null?void 0:r.openerUids),m=u(t.openerUids),p=d||m||[];if(c)return(m||p).filter(Boolean);const h=(n=(i=e.view)==null?void 0:i.inputArgs)==null?void 0:n.viewUid,g=(a=(l=e.model.context)==null?void 0:l.inputArgs)==null?void 0:a.viewUid,f=typeof h=="string"&&h?h:typeof g=="string"&&g?g:e.model.uid;return[...p,f].filter(Boolean)}function toSafeDisplayLabel(e){var t;if(typeof e=="string"||typeof e=="number"||typeof e=="boolean")return e;if(Array.isArray(e)){const o=e.map(r=>{var i;if(typeof r=="string"||typeof r=="number"||typeof r=="boolean")return r;if(r&&typeof r=="object"){const n=(i=r.label)!=null?i:r.name;if(typeof n=="string"||typeof n=="number"||typeof n=="boolean")return n}}).filter(r=>r!==void 0);return o.length?o.map(String).join(", "):void 0}if(e&&typeof e=="object"){const o=(t=e.label)!=null?t:e.name;if(typeof o=="string"||typeof o=="number"||typeof o=="boolean")return o}}function LabelByField(e){var t,o;const{option:r,fieldNames:i}=e,n=(0,import_flow_engine.useFlowModel)(),l=n.subModels.field;if(!l)return;const a=r[i.value],c=l.createFork({},a);c.context.defineProperty("record",{get:()=>r,cache:!1,meta:(0,import_flow_engine.createCurrentRecordMetaFactory)(c.context,()=>c.context.collection)});const u=(o=(t=toSafeDisplayLabel(r==null?void 0:r[i.label]))!=null?t:toSafeDisplayLabel(r==null?void 0:r.label))!=null?o:toSafeDisplayLabel(r==null?void 0:r[i.value]),d=n.context.collectionField.targetCollection.getField(i.label),m=d&&typeof d.getComponentProps=="function"?d.getComponentProps():{};return c.setProps(x({value:u,clickToOpen:!1},m)),(0,import_jsx_runtime.jsx)("span",{style:{pointerEvents:"none"},children:u!==null&&typeof u<"u"&&u!==""?c.render():"N/A"},a)}function toSelectValue(e,t,o=!1,r="record",i=[]){if(!e)return o?[]:void 0;const{value:n}=t||{},l=c=>typeof c=="object"&&c!==null,a=c=>{if(l(c))return{label:(0,import_jsx_runtime.jsx)(LabelByField,{option:c,fieldNames:t}),value:c[n]}};if(r==="value"){const c=u=>{if(typeof u=="object"&&u!==null)return a(u);const d=i.find(m=>(m==null?void 0:m[n])===u);return d?a(d):{label:u,value:u}};return o?Array.isArray(e)?e.map(u=>c(u)).filter(Boolean):[]:Array.isArray(e)?c(e[0]):c(e)}if(o)return Array.isArray(e)?e.filter(l).map(a).filter(Boolean):[];if(Array.isArray(e)){const c=e[0];return l(c)?a(c):void 0}return l(e)?a(e):void 0}function resolveOptions(e,t,o){return e!=null&&e.length?e.map(r=>(0,import_lodash.omit)(r,"disabled","options")):o?Array.isArray(t)?t.filter(r=>typeof r=="object"&&r!==null):[]:t&&typeof t=="object"?[t]:[]}const labelClassName=import_css.css`
|
|
1851
|
+
`;function isGridDelegatedStep(e,t){var o;return!!((o=GRID_DELEGATED_STEP_KEYS[e])!=null&&o.has(t))}class FormBlockModel extends CollectionBlockModel{constructor(){super(...arguments),R(this,"formValueRuntime"),R(this,"userModifiedTopLevelFields",new Set),R(this,"_defaultCustomModelClasses",{FormActionGroupModel:"FormActionGroupModel",FormItemModel:"FormItemModel",FormAssociationFieldGroupModel:"FormAssociationFieldGroupModel"}),R(this,"customModelClasses",{})}get form(){return this.context.form}syncRuntimeAssignRules(t="unknown"){var o,r,i;const n=this.getStepParams("formModelSettings","assignRules"),l=(n==null?void 0:n.value)||[];(r=(o=this.formValueRuntime)==null?void 0:o.syncAssignRules)==null||r.call(o,Array.isArray(l)?l:[]);const a=(i=this.context)==null?void 0:i.resource,c=collectUpdateAssociationValuesFromAssignRules(l,this.collection);a!=null&&a.addUpdateAssociationValues&&c.length&&a.addUpdateAssociationValues(c)}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){const o=this.context;if(typeof o.setFormValues=="function"){o.setFormValues(t,{source:"system"}).catch(r=>{console.warn("[FormBlockModel] Failed to set form values via ctx.setFormValues",r)});return}this.form.setFieldsValue(t)}setFieldValue(t,o){const r=this.context;if(typeof r.setFormValue=="function"){r.setFormValue(t,o,{source:"system"}).catch(i=>{console.warn("[FormBlockModel] Failed to set form value via ctx.setFormValue",i)});return}this.form.setFieldValue(t,o)}markUserModifiedFields(t){if(!(!t||typeof t!="object")&&!Array.isArray(t))for(const o of Object.keys(t))o&&this.userModifiedTopLevelFields.add(o)}getUserModifiedFields(){return this.userModifiedTopLevelFields}resetUserModifiedFields(){this.userModifiedTopLevelFields.clear()}onDispatchEventStart(t,o,r){return L(this,null,function*(){var i;if(t==="beforeRender"){const n=this.subModels.grid;n&&(yield n.dispatchEvent("beforeRender",r,{useCache:o==null?void 0:o.useCache}))}yield(i=Ne(FormBlockModel.prototype,this,"onDispatchEventStart"))==null?void 0:i.call(this,t,o,r)})}getStepParams(t,o){const r=this.subModels.grid;if(t&&o&&isGridDelegatedStep(t,o)&&r){const i=r.getStepParams(t,o);return typeof i<"u"?i:super.getStepParams(t,o)}if(t&&!o&&GRID_DELEGATED_STEP_KEYS[t]&&r){const i=super.getStepParams(t)||{},n=r.getStepParams(t)||{};for(const l of GRID_DELEGATED_STEP_KEYS[t])Object.prototype.hasOwnProperty.call(n,l)&&typeof n[l]<"u"&&(i[l]=n[l]);return i}return super.getStepParams(t,o)}setStepParams(t,o,r){const i=this.subModels.grid,n=(l,a)=>{const c=GRID_DELEGATED_STEP_KEYS[l];if(!c||!i)return a;const u={};for(const[d,m]of Object.entries(a))c.has(d)?i.setStepParams(l,d,m):u[d]=m;return u};if(typeof t=="string"&&typeof o=="string"&&r!==void 0){isGridDelegatedStep(t,o)&&i?i.setStepParams(t,o,r):super.setStepParams(t,o,r);return}if(typeof t=="string"&&typeof o=="object"&&o!==null){const l=n(t,o);Object.keys(l).length>0&&super.setStepParams(t,l);return}if(typeof t=="object"&&t!==null){const l={};for(const[a,c]of Object.entries(t)){if(typeof c!="object"||c===null){l[a]=c;continue}const u=n(a,c);Object.keys(u).length>0&&(l[a]=u)}Object.keys(l).length>0&&super.setStepParams(l)}}saveStepParams(){return L(this,null,function*(){return yield saveStepParamsWithSubModelsIfNeeded(this,()=>L(this,null,function*(){const t=yield Ne(FormBlockModel.prototype,this,"saveStepParams").call(this),o=this.subModels.grid;return yield o==null?void 0:o.saveStepParams(),t}))})}createFormValuesMetaFactory(){return(0,import_flow_engine.createAssociationAwareObjectMetaFactory)(()=>this.collection,this.translate("Current form"),()=>{var t,o;return((o=(t=this.form)==null?void 0:t.getFieldsValue)==null?void 0:o.call(t))||{}})}useHooksBeforeRender(){const[t]=import_antd.Form.useForm();this.context.defineProperty("form",{get:()=>t}),this.formValueRuntime||(this.formValueRuntime=new FormValueRuntime({model:this,getForm:()=>this.context.form}));const o=this.formValueRuntime;o.mount();const r=this.createFormValuesMetaFactory();this.context.defineProperty("formValues",{get:()=>o.formValues,cache:!1,meta:r,resolveOnServer:i=>{var n,l,a,c,u,d,m,p,h,g,f,_,v,b,F;if(!i)return!1;const y=(C=>{const S=String(C||"").match(/^([^.[]+)/);return S==null?void 0:S[1]})(i);if(!y||!((l=(n=this.collection)==null?void 0:n.getField)!=null&&l.call(n,y)))return!1;if((()=>{var C,S,P,j,I;const T=(P=(S=(C=this.subModels.grid)==null?void 0:C.subModels)==null?void 0:S.items)!=null?P:[],D=new Set;for(const E of T){const w=(I=(j=E==null?void 0:E.getStepParams)==null?void 0:j.call(E,"fieldSettings","init"))==null?void 0:I.fieldPath,k=w==null?void 0:w.toString().split(".")[0];k&&D.add(k)}return D})().has(y)){const C=(c=(a=this.form)==null?void 0:a.getFieldValue)==null?void 0:c.call(a,y);if(C==null||Array.isArray(C)&&C.length===0)return!1;const S=o.getFormValuesSnapshot();return S&&typeof S=="object"&&typeof(0,import_shared2.getValuesByPath)(S,i)<"u"?!1:(0,import_flow_engine.createAssociationSubpathResolver)(()=>this.collection,()=>o.getFormValuesSnapshot())(i)}try{const C=(F=(f=(m=(d=(u=this.context)==null?void 0:u.resource)==null?void 0:d.getMeta)==null?void 0:m.call(d,"currentFilterByTk"))!=null?f:(g=(h=(p=this.context)==null?void 0:p.resource)==null?void 0:h.getFilterByTk)==null?void 0:g.call(h))!=null?F:(b=(_=this.collection)==null?void 0:_.getFilterByTK)==null?void 0:b.call(_,(v=this.context)==null?void 0:v.record);if(typeof C>"u"||C===null)return!1}catch{return!1}return!0},serverOnlyWhenContextParams:!0}),this.context.defineMethod("getFormValues",function(){return o.getFormValuesSnapshot()}),this.context.defineMethod("setFormValues",function(i,n){return o.setFormValues(this,i,n)}),this.context.defineMethod("setFormValue",function(i,n,l){return o.setFormValues(this,[{path:i,value:n}],l)})}onInit(t){super.onInit(t),this.emitter.on("onSubModelAdded",o=>{o===this.subModels.grid&&queueMicrotask(()=>this.syncRuntimeAssignRules("onSubModelAdded:grid"))}),this.context.defineProperty("record",{get:()=>this.getCurrentRecord(),cache:!1}),this.context.resource.on("saved",()=>{this.dispatchEvent("formSubmitSuccess",{})})}onMount(){var t;super.onMount(),(t=this.formValueRuntime)==null||t.mount({sync:!0}),this.syncRuntimeAssignRules("onMount"),setTimeout(()=>{this.applyFlow("eventSettings")},100)}onUnmount(){var t;(t=this.formValueRuntime)==null||t.dispose(),this.formValueRuntime=void 0,super.onUnmount()}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=ee(t,["model","children","layoutProps","initialValues"]),a,c,u,d;const m=!!((a=o==null?void 0:o.context)!=null&&a.isMobileLayout&&(i==null?void 0:i.layout)==="horizontal"),p=[l.className,m?FLOW_KEEP_MOBILE_HORIZONTAL_CLASS:"",m?flowKeepMobileHorizontalClassName:""].filter(Boolean).join(" ");return(0,import_jsx_runtime.jsx)(import_antd.Form,A(x(A(x({form:o.form,initialValues:((d=(u=(c=o.context)==null?void 0:c.view)==null?void 0:u.inputArgs)==null?void 0:d.formData)||o.context.record||n},(0,import_lodash.omit)(i,"labelWidth")),{labelCol:{style:{width:i==null?void 0:i.labelWidth}},onFieldsChange:h=>{const g=o.formValueRuntime;g&&g.handleFormFieldsChange(h)},onValuesChange:(h,g)=>{var f;(f=o.markUserModifiedFields)==null||f.call(o,h);const _=o.formValueRuntime;if(_){_.handleFormValuesChange(h,g);return}o.dispatchEvent("formValuesChange",{changedValues:h,allValues:g},{debounce:!0}),o.emitter.emit("formValuesChange",{changedValues:h,allValues:g})}}),l),{className:p||void 0,children:r}))}const getOuterHeight$1=e=>{if(!e)return 0;const t=e.getBoundingClientRect(),o=window.getComputedStyle(e),r=parseFloat(o.marginTop)||0,i=parseFloat(o.marginBottom)||0;return t.height+r+i},useFormGridHeight=({heightMode:e,containerRef:t,actionsRef:o,footerRef:r,deps:i=[]})=>{const[n,l]=(0,import_react2.useState)(),a=(0,import_react2.useCallback)(()=>{if(e!=="specifyValue"&&e!=="fullHeight"){l(h=>h===void 0?h:void 0);return}const c=t.current;if(!c)return;const u=c.getBoundingClientRect().height;if(!u)return;const d=getOuterHeight$1((o==null?void 0:o.current)||null),m=getOuterHeight$1((r==null?void 0:r.current)||null),p=Math.max(0,Math.floor(u-d-m));l(h=>h===p?h:p)},[e,t,o,r]);return(0,import_react2.useLayoutEffect)(()=>{a()},[a,...i]),(0,import_react2.useEffect)(()=>{if(!t.current||typeof ResizeObserver>"u")return;const c=t.current,u=(o==null?void 0:o.current)||null,d=(r==null?void 0:r.current)||null,m=new ResizeObserver(()=>a());return m.observe(c),u&&m.observe(u),d&&m.observe(d),()=>m.disconnect()},[a,t,o,r,...i]),n},FormBlockContent=({model:e,gridModel:t,layoutProps:o,onFinish:r,grid:i,actions:n,footer:l,heightMode:a,height:c})=>{var u,d;const m=(0,import_react2.useRef)(null),p=(0,import_react2.useRef)(null),h=(0,import_react2.useRef)(null),g=a==="specifyValue"||a==="fullHeight",f=useFormGridHeight({heightMode:a,containerRef:m,actionsRef:n?p:void 0,footerRef:l?h:void 0,deps:[c]});return(0,import_react2.useEffect)(()=>{var _;if(!t)return;const v=g?f:void 0;((_=t.props)==null?void 0:_.height)!==v&&t.setProps({height:v})},[t,f,g]),(0,import_jsx_runtime.jsx)(FormComponent,{model:e,layoutProps:o,onFinish:r,style:g?{display:"flex",flexDirection:"column",minHeight:0,height:"100%"}:void 0,children:(0,import_jsx_runtime.jsxs)("div",{ref:m,style:g?{display:"flex",flexDirection:"column",minHeight:0,flex:1}:void 0,children:[i,n?(0,import_jsx_runtime.jsx)("div",{style:{paddingTop:(d=(u=e.context)==null?void 0:u.themeToken)==null?void 0:d.padding},ref:p,children:n}):null,l?(0,import_jsx_runtime.jsx)("div",{ref:h,children:l}):null]})})};FormBlockModel.define({hide:!0});FormBlockModel.registerFlow({key:"formModelSettings",title:(0,import_flow_engine.tExpr)("Form settings"),steps:{layout:{use:"layout",title:(0,import_flow_engine.tExpr)("Layout")},assignRules:{use:"formAssignRules",title:(0,import_flow_engine.tExpr)("Field values"),beforeParamsSave(e){const t=clearLegacyDefaultValuesFromFormModel(e.model);Array.isArray(t)&&t.length&&markSaveStepParamsWithSubModels(e.model)},afterParamsSave(e){var t,o,r,i,n,l;const a=e.model.getStepParams("formModelSettings","assignRules"),c=(a==null?void 0:a.value)||[];(r=(o=(t=e.model)==null?void 0:t.formValueRuntime)==null?void 0:o.syncAssignRules)==null||r.call(o,Array.isArray(c)?c:[]);const u=(n=(i=e.model)==null?void 0:i.context)==null?void 0:n.resource,d=collectUpdateAssociationValuesFromAssignRules(c,(l=e.model)==null?void 0:l.collection);u!=null&&u.addUpdateAssociationValues&&d.length&&u.addUpdateAssociationValues(d)}}}});FormBlockModel.registerFlow({key:"eventSettings",title:(0,import_flow_engine.tExpr)("Event settings"),on:"formValuesChange",steps:{linkageRules:{use:"fieldLinkageRules",afterParamsSave(e){var t;e.model.applyFlow("eventSettings",{changedValues:{},allValues:(t=e.form)==null?void 0:t.getFieldsValue(!0)})}}}});FormBlockModel.registerEvents({formValuesChange:{title:(0,import_flow_engine.tExpr)("Form values change"),name:"formValuesChange",uiSchema:{condition:{type:"object",title:(0,import_flow_engine.tExpr)("Trigger condition"),"x-decorator":"FormItem","x-component":ConditionBuilder}},handler:commonConditionHandler}});class FormModel extends FormBlockModel{}FormModel.define({hide:!0});class AssignFormModel extends FormBlockModel{useHooksBeforeRender(){const[t]=import_antd.Form.useForm();this.context.defineProperty("form",{get:()=>t})}onInit(t){super.onInit(t);const o=(0,import_flow_engine.createCurrentRecordMetaFactory)(this.context,()=>this.collection);this.context.defineProperty("record",{get:()=>{var r;return(r=this.getCurrentRecord)==null?void 0:r.call(this)},cache:!1,resolveOnServer:(0,import_flow_engine.createRecordResolveOnServerWithLocal)(()=>this.collection,()=>{var r;return(r=this.getCurrentRecord)==null?void 0:r.call(this)}),meta:o}),this.context.defineProperty("filterManager",{once:!0,get:()=>new FilterManager(this,t==null?void 0:t.filterManager)}),this.isManualRefresh=!0}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.tExpr)("Field assignments"),hide:!0,createModelOptions:{use:"AssignFormModel",subModels:{grid:{use:"AssignFormGridModel"}}}});class FormGridModel extends GridModel{constructor(){super(...arguments),R(this,"itemFallback",(0,import_jsx_runtime.jsx)(import_antd.Skeleton.Input,{block:!0,size:"small",style:{marginBottom:"0.5rem"}})),R(this,"itemSettingsMenuLevel",2),R(this,"itemFlowSettings",{showBackground:!0,style:{top:-6,left:-6,right:-6,bottom:-6}}),R(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("FormAssociationFieldGroupModel"),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")})})}render(){var t,o;const r=(t=this.props)==null?void 0:t.height,i=(o=this.props)==null?void 0:o.heightModel,n=this.context.themeToken,l=super.render();return i==="defaultHeight"?l:(0,import_jsx_runtime.jsx)("div",{style:{height:r,overflowY:"auto",marginLeft:`-${n.marginLG}px`,marginRight:`-${n.marginLG}px`,paddingLeft:`${n.marginLG}px`,paddingRight:`${n.marginLG}px`,paddingTop:5},children:l})}}FormGridModel.registerFlow({key:"formFieldGridSettings",steps:{grid:{handler(e,t){e.model.setProps("rowGap",0),e.model.setProps("colGap",16)}}}});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 f=g.getStepParams("fieldSettings","init")||{};return(f==null?void 0:f.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=>{try{const h=typeof(p==null?void 0:p.getStepParams)=="function"?p.getStepParams("fieldSettings","init"):null;return(h==null?void 0:h.fieldPath)===t}catch{return!1}});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.tExpr)("Assign grid")});function getFieldBindingUse(e){var t,o;const r=(o=(t=e==null?void 0:e.stepParams)==null?void 0:t.fieldBinding)==null?void 0:o.use;return typeof r=="string"?r:void 0}function rebuildFieldSubModel(e){return L(this,arguments,function*({parentModel:t,targetUse:o,defaultProps:r,pattern:i,fieldSettingsInit:n}){var l,a,c;const u=t.subModels.field,d=u==null?void 0:u.uid,m=(a=(l=u==null?void 0:u.serialize)==null?void 0:l.call(u))==null?void 0:a.subModels;for(const _ in m)m[_].delegateToParent===!1&&delete m[_];const p=(u==null?void 0:u.stepParams)||{},h=n??((c=t.getFieldSettingsInitParams)==null?void 0:c.call(t)),g=A(x({},p),{fieldBinding:A(x({},p.fieldBinding),{use:o}),fieldSettings:{init:h}}),f=t.flowEngine;d&&(u==null||u.invalidateFlowCache("beforeRender",!0),f.removeModelWithSubModels(d)),yield t.setSubModel("field",{uid:d,use:FieldModel,props:x(x({},r||{}),i?{pattern:i}:{}),stepParams:g,subModels:m}).dispatchEvent("beforeRender",void 0,{useCache:!1}),yield t.save()})}function getValueWithIndex(e,t,o){const r=(0,import_lodash.castArray)(o).filter(n=>typeof n=="string"),i=t.split(".");if(r!=null&&r.length){const n=[];let l=0,a=0;for(;l<i.length;){const c=i[l];if(n.push(c),a<r.length){const[u,d]=r[a].split(":");u===c&&(n.push(Number(d)),a++)}l++}return(0,import_lodash.get)(e,n)}return(0,import_lodash.get)(e,i)}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),this.context.defineProperty("actionName",{get:()=>"view",cache:!1})}renderItem(){const t=this.subModels.field,o=this.context.fieldIndex,r=this.context.record,i=this.context.currentObject,n=this.context.item,l=this.context.getPropertyOptions("item"),a=o!=null?(()=>{const d=t.createFork({},`${o}`);d.context.defineProperty("fieldIndex",{get:()=>o}),d.context.defineProperty("record",{get:()=>r,cache:!1}),d.context.defineProperty("currentObject",{get:()=>i,cache:!1});const m=l||{},p=ee(m,["value"]);return d.context.defineProperty("item",A(x({},p),{get:()=>n,cache:!1})),this.context.pattern&&d.context.defineProperty("pattern",{get:()=>this.context.pattern}),d})():t,c=this.context.pattern?A(x(x({},this.context.blockModel.props),this.props),{pattern:this.context.pattern,disabled:this.context.pattern==="readPretty"}):x(x({},this.context.blockModel.props),this.props),u=getValueWithIndex(r,this.fieldPath,o);return(0,import_jsx_runtime.jsx)(import_flow_engine.FormItem,A(x({},c),{value:u,children:(0,import_jsx_runtime.jsx)(import_flow_engine.FieldModelRenderer,{model:a})}))}}DetailsItemModel.define({label:(0,import_flow_engine.tExpr)("Display fields"),sort:100});DetailsItemModel.registerFlow({key:"detailItemSettings",sort:300,title:(0,import_flow_engine.tExpr)("Detail item settings"),steps:{showLabel:{title:(0,import_flow_engine.tExpr)("Show label"),uiMode:{type:"switch",key:"showLabel"},defaultParams:{showLabel:!0},handler(e,t){e.model.setProps({showLabel:t.showLabel})}},label:{title:(0,import_flow_engine.tExpr)("Label"),uiSchema:e=>({title:{"x-component":"Input","x-decorator":"FormItem","x-reactions":t=>{var o;const r=e.model,i=(o=r.collectionField)==null?void 0:o.title;t.decoratorProps=A(x({},t.decoratorProps),{extra:r.context.t("Original field title: ")+i})}}}),defaultParams:e=>{var t;return{title:(t=e.collectionField)==null?void 0:t.title}},handler(e,t){var o;const r={ns:"lm-flow-engine",compareWith:(o=e.collectionField)==null?void 0:o.title};e.model.setProps({label:e.t(t.title,r)})}},aclCheck:{use:"aclCheck"},init:{handler(e){return L(this,null,function*(){const{collectionField:t}=e.model;t&&e.model.setProps(t.getComponentProps())})}},tooltip:{title:(0,import_flow_engine.tExpr)("Tooltip"),uiSchema:{tooltip:{"x-component":"Input.TextArea","x-decorator":"FormItem"}},handler(e,t){e.model.setProps({tooltip:e.t(t.tooltip,{ns:"lm-flow-engine"})})}},description:{title:(0,import_flow_engine.tExpr)("Description"),uiSchema:{description:{"x-component":"Input.TextArea","x-decorator":"FormItem"}},handler(e,t){e.model.setProps({extra:e.t(t.description,{ns:"lm-flow-engine"})})}},model:{title:(0,import_flow_engine.tExpr)("Field component"),use:"displayFieldComponent"},fieldNames:{use:"titleField",title:(0,import_flow_engine.tExpr)("Title field"),beforeParamsSave:(e,t,o)=>L(void 0,null,function*(){var r,i;if(!e.collectionField||!e.collectionField.isAssociationField())return null;if(t.label!==o.label){e.model.setProps(x({titleField:t.label},(i=(r=e.collectionField.targetCollection)==null?void 0:r.getField(t.label))==null?void 0:i.getComponentProps()));const n=e.collectionField.targetCollection.getField(t.label),l=import_flow_engine.DisplayItemModel.getDefaultBindingByField(e,n),a=l.modelName;yield rebuildFieldSubModel({parentModel:e.model,targetUse:a,defaultProps:typeof(l==null?void 0:l.defaultProps)=="function"?l.defaultProps(e,e.collectionField):l==null?void 0:l.defaultProps,pattern:e.model.getProps().pattern})}}),handler(e,t){return L(this,null,function*(){var o,r;if(!e.collectionField||e.model.subModels.field.disableTitleField)return;e.model.setProps(x({titleField:t.label},(r=(o=e.collectionField.targetCollection)==null?void 0:o.getField(t.label))==null?void 0:r.getComponentProps()));const i=e.collectionField.targetCollection;if(i){const n=i.getField(t.label),l=import_flow_engine.DisplayItemModel.getDefaultBindingByField(e,n).modelName,a=e.model.subModels.field.use;l!==a&&e.model.setStepParams(e.flowKey,"model",{use:l})}})},hideInSettings:e=>L(void 0,null,function*(){return!e.collectionField||!e.collectionField.isAssociationField()||e.model.subModels.field.disableTitleField})}}});DetailsItemModel.registerFlow({key:"paginationChange",on:"paginationChange",steps:{aclCheckRefresh:{use:"aclCheckRefresh"}}});function isInSameBlock(e,t){var o,r;const i=(r=(o=e==null?void 0:e.context)==null?void 0:o.blockModel)==null?void 0:r.uid,n=t==null?void 0:t.uid;return!i||!n?!1:String(i)===String(n)}function tryGetModelTargetPathCandidate(e){var t,o;const r=(t=e==null?void 0:e.context)==null?void 0:t.fieldPathArray;if(Array.isArray(r)&&r.length)return r;try{const a=(o=e==null?void 0:e.getStepParams)==null?void 0:o.call(e,"fieldSettings","init"),c=a==null?void 0:a.fieldPath;if(typeof c=="string"&&c)return c}catch{}const i=e==null?void 0:e.fieldPath;if(typeof i=="string"&&i)return i;const n=typeof(e==null?void 0:e.getProps)=="function"?e.getProps():e==null?void 0:e.props,l=n==null?void 0:n.name;return typeof l=="string"&&l||Array.isArray(l)&&l.length?l:null}function normalizeResolvedNamePath(e){return!Array.isArray(e)||!e.length||typeof e[0]!="string"?null:e}function resolveModelNamePath(e){var t;const o=tryGetModelTargetPathCandidate(e);if(!o)return null;const r=resolveDynamicNamePath(o,(t=e==null?void 0:e.context)==null?void 0:t.fieldIndex);return normalizeResolvedNamePath(r)}function cleanupEmptyPlainObjectAncestors(e,t){if(!(!e||typeof e!="object")&&!(!Array.isArray(t)||t.length<2))for(let o=t.length-1;o>=1;o--){const r=t.slice(0,o);if(typeof r[r.length-1]=="number")continue;const i=import_lodash.default.get(e,r);import_lodash.default.isPlainObject(i)&&Object.keys(i).length===0&&import_lodash.default.unset(e,r)}}function forEachModelIncludingForks(e,t){e!=null&&e.forEachModel&&e.forEachModel(o=>{t(o);const r=o==null?void 0:o.forks;r&&typeof r.forEach=="function"&&r.forEach(i=>t(i))})}function collectHiddenModelNamePaths(e){const t=e==null?void 0:e.flowEngine;if(!(t!=null&&t.forEachModel))return[];const o=[],r=new Set;return forEachModelIncludingForks(t,i=>{if(!i||typeof i!="object"||!i.hidden||!isInSameBlock(i,e))return;const n=resolveModelNamePath(i);if(!n)return;const l=JSON.stringify(n);r.has(l)||(r.add(l),o.push(n))}),o}function normalizeFormNamePath(e){return typeof e=="string"?e?[e]:null:Array.isArray(e)?normalizeResolvedNamePath(e):null}function isNamePathPrefix(e,t){if(!Array.isArray(e)||!Array.isArray(t)||e.length>t.length)return!1;for(let o=0;o<e.length;o++)if(e[o]!==t[o])return!1;return!0}function getValidationNamePathsExcludingHiddenModels(e){const t=e==null?void 0:e.form;if(!t||typeof t.getFieldsError!="function")return null;const o=t.getFieldsError();if(!Array.isArray(o))return null;const r=[],i=new Set;for(const l of o){const a=normalizeFormNamePath(l==null?void 0:l.name);if(!a)continue;const c=JSON.stringify(a);i.has(c)||(i.add(c),r.push(a))}if(!r.length)return null;const n=collectHiddenModelNamePaths(e);return n.length?r.filter(l=>!n.some(a=>isNamePathPrefix(a,l))):r}function omitHiddenModelValuesFromSubmit(e,t){if(!e||typeof e!="object")return e;const o=collectHiddenModelNamePaths(t);if(!o.length)return e;const r=import_lodash.default.cloneDeep(e);for(const i of o)import_lodash.default.unset(r,i),cleanupEmptyPlainObjectAncestors(r,i);return r}function submitHandler(e,t,o){return L(this,null,function*(){var r,i;const n=e.resource,l=e.blockModel,a=e!=null&&e.flowSettingsEnabled?getValidationNamePathsExcludingHiddenModels(l):null;Array.isArray(a)?a.length&&(yield l.form.validateFields(a)):yield l.form.validateFields();const c=l.form.getFieldsValue(!0),u=omitHiddenModelValuesFromSubmit(c,l);if(n instanceof import_flow_engine.SingleRecordResource){if(l instanceof EditFormModel){const m=n.getMeta("currentFilterByTk");m?n.setFilterByTk(m):n.isNewRecord=!0}const d=o?yield o(u):yield n.save(u,t.requestConfig);l instanceof EditFormModel?(n.isNewRecord=!1,(r=l.resetUserModifiedFields)==null||r.call(l),yield n.refresh()):(l.form.resetFields(),(i=l.resetUserModifiedFields)==null||i.call(l),l.emitter.emit("onFieldReset"),e.view.inputArgs.collectionName===l.collection.name&&e.view.inputArgs.onChange&&e.view.inputArgs.onChange(d==null?void 0:d.data))}else if(n instanceof import_flow_engine.MultiRecordResource){const d=n.getMeta("currentFilterByTk");if(!d){e.message.error(e.t("No filterByTk found for multi-record resource."));return}(yield o)?yield o(u,d):yield n.update(d,u,t.requestConfig)}})}class EditFormModel extends FormBlockModel{constructor(){super(...arguments),R(this,"actionFlowSettings",{showBackground:!1,showBorder:!1,toolbarPosition:"above"}),R(this,"actionExtraToolbarItems",[{key:"drag-handler",component:import_flow_engine.DragHandler,sort:1}]),R(this,"handlePageChange",t=>L(this,null,function*(){if(this.resource instanceof import_flow_engine.MultiRecordResource){const o=this.resource;o.setPage(t),o.loading=!0,yield o.refresh(),yield dispatchEventDeep(this,"paginationChange")}}))}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}hasAvailableData(){return this.resource.hasData()}getAclActionName(){return"update"}submitHandler(t,o,r){return L(this,null,function*(){yield submitHandler(t,o,r)})}submit(){return L(this,arguments,function*(t={},o){yield submitHandler(this.context,t,o)})}renderComponent(){var t,o;const{colon:r,labelAlign:i,labelWidth:n,labelWrap:l,layout:a}=this.props,c=!!this.context.flowSettingsEnabled,u=this.hasAvailableData(),d=!c&&!u,{heightMode:m,height:p}=this.decoratorProps,h=!this.resource.loading&&!u?(0,import_jsx_runtime.jsx)("div",{style:{textAlign:"center",marginTop:16,color:(o=(t=this.context)==null?void 0:t.themeToken)==null?void 0:o.colorTextDescription},children:this.translate("No available data currently")}):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"}})}):null;return(0,import_jsx_runtime.jsx)(FormBlockContent,{model:this,gridModel:this.subModels.grid,layoutProps:{colon:r,labelAlign:i,labelWidth:n,labelWrap:l,layout:a},heightMode:m,height:p,grid:(0,import_jsx_runtime.jsx)(import_flow_engine.FlowModelRenderer,{model:this.subModels.grid,showFlowSettings:!1}),actions:(0,import_jsx_runtime.jsx)("div",{style:d?{pointerEvents:"none",opacity:.45}:void 0,children:(0,import_jsx_runtime.jsx)(import_flow_engine.DndProvider,{children:(0,import_jsx_runtime.jsxs)(import_antd.Space,{wrap:!0,children:[this.mapSubModels("actions",g=>{if(!(g.hidden&&!c))return(0,import_jsx_runtime.jsx)(import_flow_engine.Droppable,{model:g,children:(0,import_jsx_runtime.jsx)(import_flow_engine.MemoFlowModelRenderer,{model:g,showFlowSettings:this.context.flowSettingsEnabled?this.actionFlowSettings:!1,extraToolbarItems:this.actionExtraToolbarItems},g.uid)},g.uid)}),this.renderConfigureActions()]})})}),footer:h})}}R(EditFormModel,"scene",BlockSceneEnum.oam),R(EditFormModel,"blockCapabilityActionName","update");EditFormModel.registerFlow({key:"formSettings",title:(0,import_flow_engine.tExpr)("Edit form settings"),steps:{init:{handler(e){return L(this,null,function*(){if(!e.resource)throw new Error("Resource is not initialized");e.resource.on("refresh",()=>L(this,null,function*(){var t,o,r,i,n,l;const a=e.resource.getMeta("currentFilterByTk"),c=x({},e.model.getCurrentRecord());if(!c)return;const u=(t=e.association)==null?void 0:t.targetKey;if(u&&((o=e.association)==null?void 0:o.interface)!=="m2m"?e.resource.setMeta({currentFilterByTk:c==null?void 0:c[u]}):e.resource.setMeta({currentFilterByTk:e.collection.getFilterByTK(c)}),!e.form)return;const d=e.resource.getMeta("currentFilterByTk"),m=!(0,import_lodash.isEqual)(a,d),p=(i=(r=e.model).getUserModifiedFields)==null?void 0:i.call(r),h=!!(p!=null&&p.size),g=()=>{if(!(p!=null&&p.size))return;const f=_=>_!==null&&typeof _=="object";for(const _ of Array.from(p)){const v=e.form.getFieldValue(_),b=c==null?void 0:c[_];(Object.is(v,b)||f(v)&&f(b)&&(0,import_lodash.isEqual)(v,b))&&p.delete(_)}};if(!m&&h){const f=x({},c);for(const _ of p)f[_]=e.form.getFieldValue(_);e.form.setFieldsValue(f),g();return}m&&((l=(n=e.model).resetUserModifiedFields)==null||l.call(n)),e.form.setFieldsValue(c),g()}))})}},dataScope:{use:"dataScope"},refresh:{handler(e){return L(this,null,function*(){if(!e.resource)throw new Error("Resource is not initialized")})}}}});EditFormModel.registerFlow({key:"paginationChange",on:"paginationChange",steps:{blockLinkageRulesRefresh:{use:"linkageRulesRefresh",defaultParams:{actionName:"blockLinkageRules",flowKey:"cardSettings",stepKey:"linkageRules"}},fieldsLinkageRulesRefresh:{use:"linkageRulesRefresh",defaultParams:{actionName:"fieldLinkageRules",flowKey:"eventSettings",stepKey:"linkageRules"}}}});EditFormModel.define({label:(0,import_flow_engine.tExpr)("Form (Edit)"),searchable:!0,searchPlaceholder:(0,import_flow_engine.tExpr)("Search"),createModelOptions:{use:"EditFormModel",subModels:{grid:{use:"FormGridModel"}}},sort:340});function isToManyAssociation(e){if(!e)return!1;const t=e==null?void 0:e.type;return t==="belongsToMany"||t==="hasMany"||t==="belongsToArray"}function coerceForToOneField(e,t){var o;const r=!!((o=e==null?void 0:e.isAssociationField)!=null&&o.call(e)),i=isToManyAssociation(e);return r&&!i&&Array.isArray(t)?t.length?t[0]:void 0:t}function buildDynamicNamePath(e,t){if(!(t!=null&&t.length))return e;const o=t[t.length-1],[r,i]=String(o).split(":"),n=Number(i);if(!r||!Number.isFinite(n))return e;let l=0;for(const u of t){const[d]=String(u).split(":");d===r&&(l+=1)}let a=-1,c=0;for(let u=0;u<e.length;u++)if(String(e[u])===r&&(c+=1,c===l)){a=u;break}if(a===-1){for(let u=e.length-1;u>=0;u--)if(String(e[u])===r){a=u;break}}return a===-1?e:[n,...e.slice(a+1)]}const interfacesOfUnsupportedDefaultValue=["o2o","oho","obo","o2m","attachment","expression","point","lineString","circle","polygon","sequence","formula"];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=>{if(this.collectionField){const r=this.collectionField.getComponentProps();o.setProps(r),this.setProps(x({},import_lodash.default.pick(r,"rules")||{}))}})}renderItem(){var t,o;const r=this.subModels.field,i=this.context.fieldIndex,n=this.context.fieldKey,l=((t=this.parent)==null?void 0:t.context.fieldPathArray)||[],a=i!=null?(()=>{const p=r.createFork({},`${n}`);p.context.defineProperty("fieldIndex",{get:()=>i}),p.context.defineProperty("fieldKey",{get:()=>n}),this.context.currentObject&&p.context.defineProperty("currentObject",{get:()=>this.context.currentObject});const h=this.context.getPropertyOptions("item");if(this.context.item){const g=h||{},f=ee(g,["value"]);p.context.defineProperty("item",A(x({},f),{get:()=>this.context.item,cache:!1}))}return this.context.pattern&&p.context.defineProperty("pattern",{get:()=>this.context.pattern}),p})():r,c=this.context.pattern?A(x({},this.props),{pattern:this.context.pattern}):this.props,u=ee(c,["initialValue"]),d=buildDynamicNamePath(this.props.name,i);this.context.defineProperty("fieldPathArray",{value:[...l,...import_lodash.default.castArray(d)]});const m=((o=this.context.item)==null?void 0:o.value)||this.context.record;return(0,import_jsx_runtime.jsx)(import_flow_engine.FormItem,A(x({},u),{name:d,validateFirst:!0,disabled:this.props.disabled||!import_lodash.default.isEmpty(m)&&!m.__is_new__&&this.props.aclDisabled||!import_lodash.default.isEmpty(m)&&m.__is_new__&&this.props.aclCreateDisabled,children:(0,import_jsx_runtime.jsx)(import_flow_engine.FieldModelRenderer,{model:a,name:d})}))}}FormItemModel.define({label:(0,import_flow_engine.tExpr)("Display fields"),sort:100});FormItemModel.registerFlow({key:"editItemSettings",sort:300,title:(0,import_flow_engine.tExpr)("Form item settings"),steps:{showLabel:{title:(0,import_flow_engine.tExpr)("Show label"),uiMode:{type:"switch",key:"showLabel"},defaultParams:{showLabel:!0},handler(e,t){e.model.setProps({showLabel:t.showLabel})}},label:{title:(0,import_flow_engine.tExpr)("Label"),uiSchema:e=>({label:{"x-component":"Input","x-decorator":"FormItem","x-reactions":t=>{var o;const r=e.model,i=(o=r.collectionField)==null?void 0:o.title;t.decoratorProps=A(x({},t.decoratorProps),{extra:r.context.t("Original field title: ")+i})}}}),defaultParams:e=>{var t;return{label:(t=e.collectionField)==null?void 0:t.title}},handler(e,t){var o;const r={ns:"lm-flow-engine",compareWith:(o=e.collectionField)==null?void 0:o.title};e.model.setProps({label:e.t(t.label,r)})}},aclCheck:{use:"aclCheck",handler(e,t){return L(this,null,function*(){var o,r,i,n,l,a,c,u,d,m,p,h,g,f,_;if(!e.collectionField||!e.blockModel)return;const v=e.blockModel.context.actionName,b=yield e.aclCheck({dataSourceKey:(o=e.dataSource)==null?void 0:o.key,resourceName:(r=e.collectionField)==null?void 0:r.collectionName,fields:[(i=e.collectionField)==null?void 0:i.name],actionName:v});if(v==="update"){const F=yield e.aclCheck({dataSourceKey:(n=e.dataSource)==null?void 0:n.key,resourceName:(l=e.collectionField)==null?void 0:l.collectionName,fields:[e.collectionField.name],actionName:"view"});e.prefixFieldPath&&e.item&&((yield e.aclCheck({dataSourceKey:(a=e.dataSource)==null?void 0:a.key,resourceName:(c=e.collectionField)==null?void 0:c.collectionName,fields:[e.collectionField.name],actionName:"create"}))||e.model.setProps({aclCreateDisabled:!0}));const y=(d=(u=e.item)==null?void 0:u.__is_new__)!=null?d:!1;!F&&!y&&(e.model.hidden=!0,e.model.forbidden={actionName:"view"},e.exitAll()),b||e.model.setProps({aclDisabled:!0})}else if(v==="create"){const F=yield e.aclCheck({dataSourceKey:(m=e.dataSource)==null?void 0:m.key,resourceName:(p=e.collectionField)==null?void 0:p.collectionName,actionName:"update"}),y=yield e.aclCheck({dataSourceKey:(h=e.dataSource)==null?void 0:h.key,resourceName:(g=e.collectionField)==null?void 0:g.collectionName,fields:[e.collectionField.name],actionName:"update"}),C=(_=(f=e.item)==null?void 0:f.__is_stored__)!=null?_:!1;!b&&!C&&(e.model.hidden=!0,e.model.forbidden={actionName:v},e.exitAll()),(!F||!y)&&e.model.setProps({aclDisabled:!0})}})}},init:{handler(e){return L(this,null,function*(){const t=e.model.fieldPath,o=t.includes(".")?t.split("."):t;e.model.setProps({name:o})})}},tooltip:{title:(0,import_flow_engine.tExpr)("Tooltip"),uiSchema:{tooltip:{"x-component":"Input.TextArea","x-decorator":"FormItem"}},handler(e,t){e.model.setProps({tooltip:e.t(t.tooltip,{ns:"lm-flow-engine"})})}},description:{title:(0,import_flow_engine.tExpr)("Description"),uiSchema:{description:{"x-component":"Input.TextArea","x-decorator":"FormItem","x-component-props":{autoSize:!0}}},handler(e,t){e.model.setProps({extra:e.t(t.description,{ns:"lm-flow-engine"})})}},initialValue:{title:(0,import_flow_engine.tExpr)("Default value"),disabledInSettings:!0,disabledReasonInSettings:e=>`${e.t("This setting has been moved to")}: ${e.t("Form block settings")} > ${e.t("Field values")}`,uiSchema:e=>{var t,o,r,i;if(e.model.parent.parent instanceof EditFormModel||(o=(t=e.model.subModels)==null?void 0:t.field)!=null&&o.updateAssociation)return;const n=(r=e.model.collectionField)==null?void 0:r.interface;if(!((i=interfacesOfUnsupportedDefaultValue==null?void 0:interfacesOfUnsupportedDefaultValue.includes)!=null&&i.call(interfacesOfUnsupportedDefaultValue,n)))return{defaultValue:{"x-component":"DefaultValue","x-decorator":"FormItem"}}},defaultParams:e=>{const t=e.model.collectionField;if(t.interface==="nanoid"&&t.options.autoFill!==!1){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;if((r=interfacesOfUnsupportedDefaultValue==null?void 0:interfacesOfUnsupportedDefaultValue.includes)!=null&&r.call(interfacesOfUnsupportedDefaultValue,i))return;const n=e.model.collectionField,l=coerceForToOneField(n,t.defaultValue);e.model.setProps({initialValue:l})}},validation:{title:(0,import_flow_engine.tExpr)("Validation"),use:"validation"},required:{title:(0,import_flow_engine.tExpr)("Required"),use:"required"},model:{use:"fieldComponent",title:(0,import_flow_engine.tExpr)("Field component")},pattern:{use:"pattern"},titleField:{use:"titleField",hideInSettings(e){return!e.collectionField||!e.collectionField.isAssociationField()||!(e.collectionField.isAssociationField()&&e.model.getProps().pattern==="readPretty")},defaultParams:e=>({titleField:e.model.props.titleField||e.model.context.collectionField.targetCollectionTitleFieldName}),beforeParamsSave:(e,t,o)=>L(void 0,null,function*(){if(!(e.collectionField.isAssociationField()&&e.model.getProps().pattern==="readPretty"))return null;const r=t.titleField||t.label;if(r!==o.titleField){const i=e.collectionField.targetCollection,n=i.getField(r),l=DetailsItemModel.getDefaultBindingByField(e,n);if(l.modelName!==e.model.subModels.field.use){const a=e.model.subModels.field.uid;yield e.engine.destroyModel(a),yield e.model.setSubModel("field",{use:l.modelName,stepParams:{fieldSettings:{init:{dataSourceKey:e.model.collectionField.dataSourceKey,collectionName:i.name,fieldPath:r}}}}).save()}e.model.setProps(e.collectionField.targetCollection.getField(r).getComponentProps())}}),handler(e,t){return L(this,null,function*(){e.model.props.pattern==="readPretty"?e.model.setProps({titleField:t==null?void 0:t.label}):e.model.setProps({titleField:t.titleField})})}}}});FormItemModel.registerFlow({key:"paginationChange",on:"paginationChange",steps:{aclCheckRefresh:{use:"aclCheckRefresh",defaultParams:{strategy:"formItem"}}}});class AssignFormItemModel extends FormItemModel{constructor(t){super(t),R(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 f,_;const v=this.getStepParams("fieldSettings","init")||{},b=`${v==null?void 0:v.dataSourceKey}.${v==null?void 0:v.collectionName}.${v==null?void 0:v.fieldPath}`,F=(f=this.context)==null?void 0:f.dataSourceManager;return(_=F==null?void 0:F.getCollectionField)==null?void 0:_.call(F,b)}});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 f=(m.getFields()||[]).find(b=>(b==null?void 0:b.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,f);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 f=(c=h==null?void 0:h.getField)==null?void 0:c.call(h,g),_=(f==null?void 0:f.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,f]=import_react2.default.useState(null);import_react2.default.useEffect(()=>{var P,j,I,T,D,E,w,k,N,B,M,$,q,O,V,z,U,K,H,Y,Z;if(!l)return;const W=(((P=r==null?void 0:r.getFields)==null?void 0:P.call(r))||[]).find(me=>(me==null?void 0:me.name)===l);r.getField(l);const J=import_flow_engine.EditableItemModel.getDefaultBindingByField(o,W);if(!J)return;const oe=J.modelName,G=(I=(j=o==null?void 0:o.engine)==null?void 0:j.createModel)==null?void 0:I.call(j,{use:"VariableFieldFormModel",subModels:{fields:[{use:oe,stepParams:{fieldSettings:{init:i}}}]}});if(!G)return;(D=(T=G.context)==null?void 0:T.defineProperty)==null||D.call(T,"collection",{value:r});const Q=o==null?void 0:o.dataSource;Q&&((w=(E=G.context)==null?void 0:E.defineProperty)==null||w.call(E,"dataSource",{value:Q}));const X=(k=r==null?void 0:r.getField)==null?void 0:k.call(r,i==null?void 0:i.fieldPath);X&&((B=(N=G.context)==null?void 0:N.defineProperty)==null||B.call(N,"collectionField",{value:X}));const te=o==null?void 0:o.blockModel;te&&(($=(M=G.context)==null?void 0:M.defineProperty)==null||$.call(M,"blockModel",{value:te}));const ie=o.form;ie&&((O=(q=G.context)==null?void 0:q.defineProperty)==null||O.call(q,"form",{value:ie})),G.context&&Object.defineProperty(G.context,"resource",{configurable:!0,enumerable:!0,get:()=>te==null?void 0:te.resource});const re=(z=(V=G==null?void 0:G.subModels)==null?void 0:V.fields)==null?void 0:z[0],ae=(U=r==null?void 0:r.getField)==null?void 0:U.call(r,i==null?void 0:i.fieldPath),se=ae==null?void 0:ae.type,le=ae==null?void 0:ae.interface,ge=se==="belongsToMany"||se==="hasMany"||se==="belongsToArray"||le==="m2m"||le==="o2m"||le==="mbm";if((K=re==null?void 0:re.setProps)==null||K.call(re,{disabled:!1,readPretty:!1,pattern:"editable",updateAssociation:!1,multiple:ge}),(H=re==null?void 0:re.dispatchEvent)==null||H.call(re,"beforeRender",void 0,{sequential:!0,useCache:!0}),ensureOptionsFromUiSchemaEnumIfAbsent(re,ae),!((Y=re==null?void 0:re.props)!=null&&Y.fieldNames)&&ae!=null&&ae.targetCollection){const me=ae.targetCollection,xe=(ae==null?void 0:ae.targetKey)||(me==null?void 0:me.filterTargetKey)||"id";(Z=re==null?void 0:re.setProps)==null||Z.call(re,{fieldNames:{label:me==null?void 0:me.titleField,value:xe}})}return f(G),()=>{var me,xe,pe,fe;(pe=(xe=(me=G==null?void 0:G.subModels)==null?void 0:me.fields)==null?void 0:xe.forEach)==null||pe.call(xe,de=>{var ce;return(ce=de==null?void 0:de.remove)==null?void 0:ce.call(de)}),(fe=G==null?void 0:G.remove)==null||fe.call(G)}},[]);const _=P=>(import_react2.default.useEffect(()=>{var j,I,T,D;if(!g)return;(j=g.setProps)==null||j.call(g,x({},P));const E=(T=(I=g==null?void 0:g.subModels)==null?void 0:I.fields)==null?void 0:T[0];E&&((D=E.setProps)==null||D.call(E,{value:P==null?void 0:P.value,onChange:(...w)=>{var k;const N=w&&w.length?w[0]:void 0;(k=P==null?void 0:P.onChange)==null||k.call(P,N)}}))},[P]),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%"}}),b=P=>(0,import_jsx_runtime.jsx)(RunJSValueEditor,{t:this.context.t,value:P==null?void 0:P.value,onChange:P==null?void 0:P.onChange,containerStyle:{width:"100%"}}),F={renderInputComponent:P=>{var j;const I=(j=P==null?void 0:P.paths)==null?void 0:j[0];if(I==="constant")return _;if(I==="null")return v;if(I==="runjs")return b},resolveValueFromPath:P=>{var j;const I=(j=P==null?void 0:P.paths)==null?void 0:j[0];if(I==="constant")return"";if(I==="null")return null;if(I==="runjs")return{code:"",version:"v2"}},resolvePathFromValue:P=>P===null?["null"]:(0,import_flow_engine.isRunJSValue)(P)?["runjs"]:(0,import_flow_engine.isVariableExpression)(P)?(0,import_flow_engine.parseValueToPath)(P):["constant"]},y=()=>L(this,null,function*(){var P;const j=(P=this.context)==null?void 0:P.getPropertyMetaTree,I=typeof j=="function"?yield j():[];return[{title:(0,import_flow_engine.tExpr)("Constant"),name:"constant",type:"string",paths:["constant"],render:_},{title:(0,import_flow_engine.tExpr)("Null"),name:"null",type:"object",paths:["null"],render:v},{title:(0,import_flow_engine.tExpr)("RunJS"),name:"runjs",type:"object",paths:["runjs"],render:b},...I]});let C=(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 C=(h=(p=(m=this.props)==null?void 0:m.label)!=null?p:S==null?void 0:S.title)!=null?h:C,(0,import_jsx_runtime.jsx)(import_flow_engine.FormItem,A(x({},this.props),{label:C,name:n,initialValue:this.assignValue,valuePropName:"__assign_value__",trigger:"__assign_trigger__",validateTrigger:"__assign_trigger__",children:import_react2.default.createElement(P=>{const j=P==null?void 0:P.__assign_value__,I=typeof j>"u"?this.assignValue:j;return(0,import_jsx_runtime.jsx)(import_flow_engine.VariableInput,{value:I,onChange:T=>{var D;this.assignValue=T,(D=P==null?void 0:P.__assign_trigger__)==null||D.call(P,T)},metaTree:y,converters:F,clearValue:""})})}))},{})}}AssignFormItemModel.define({label:(0,import_flow_engine.tExpr)("Assign field")});AssignFormItemModel.registerFlow({key:"editItemSettings",sort:300,title:(0,import_flow_engine.tExpr)("Form item settings"),steps:{showLabel:{title:(0,import_flow_engine.tExpr)("Show label"),uiMode:{type:"switch",key:"showLabel"},defaultParams:{showLabel:!0},handler(e,t){e.model.setProps({showLabel:t.showLabel})}},label:{title:(0,import_flow_engine.tExpr)("Label"),uiSchema:e=>({label:{"x-component":"Input","x-decorator":"FormItem","x-reactions":t=>{var o;const r=e.model,i=(o=r.collectionField)==null?void 0:o.title;t.decoratorProps=A(x({},t.decoratorProps),{extra:r.context.t("Original field title: ")+i})}}}),defaultParams:e=>({label:e.model.collectionField.title}),handler(e,t){var o;t.label&&t.label===((o=e.model.collectionField)==null?void 0:o.title)?e.model.setProps({label:t.label}):e.model.setProps({label:e.t(t.label,{ns:"lm-flow-engine"})})}},init:{handler(e){return L(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})})}},tooltip:{title:(0,import_flow_engine.tExpr)("Tooltip"),uiSchema:{tooltip:{"x-component":"Input.TextArea","x-decorator":"FormItem"}},handler(e,t){e.model.setProps({tooltip:e.t(t.tooltip,{ns:"lm-flow-engine"})})}},description:{title:(0,import_flow_engine.tExpr)("Description"),uiSchema:{description:{"x-component":"Input.TextArea","x-decorator":"FormItem"}},handler(e,t){e.model.setProps({extra:e.t(t.description,{ns:"lm-flow-engine"})})}},validation:{title:(0,import_flow_engine.tExpr)("Validation"),use:"validation"},required:{title:(0,import_flow_engine.tExpr)("Required"),use:"required"}}});class DetailsAssociationFieldGroupModel extends AssociationFieldGroupModel{}R(DetailsAssociationFieldGroupModel,"itemModelName","DetailsItemModel");DetailsAssociationFieldGroupModel.define({label:'{{t("Display association fields")}}'});const getOuterHeight=e=>{if(!e)return 0;const t=e.getBoundingClientRect(),o=window.getComputedStyle(e),r=parseFloat(o.marginTop)||0,i=parseFloat(o.marginBottom)||0;return t.height+r+i},useDetailsGridHeight=({heightMode:e,containerRef:t,actionsRef:o,paginationRef:r,deps:i=[]})=>{const[n,l]=(0,import_react2.useState)(),a=(0,import_react2.useCallback)(()=>{if(e!=="specifyValue"&&e!=="fullHeight"){l(h=>h===void 0?h:void 0);return}const c=t.current;if(!c)return;const u=c.getBoundingClientRect().height;if(!u)return;const d=getOuterHeight(o.current),m=getOuterHeight(r.current),p=Math.max(0,Math.floor(u-d-m));l(h=>h===p?h:p)},[e,t,o,r]);return(0,import_react2.useLayoutEffect)(()=>{a()},[a,...i]),(0,import_react2.useEffect)(()=>{if(!t.current||typeof ResizeObserver>"u")return;const c=t.current,u=o.current,d=r.current,m=new ResizeObserver(()=>a());return m.observe(c),u&&m.observe(u),d&&m.observe(d),()=>m.disconnect()},[a,t,o,r,...i]),n};class DetailsBlockModel extends CollectionBlockModel{constructor(){super(...arguments),R(this,"hadSingleRecordData",!1),R(this,"hasMultiRefreshDispatched",!1),R(this,"_defaultCustomModelClasses",{RecordActionGroupModel:"RecordActionGroupModel",DetailsItemModel:"DetailsItemModel",DetailsAssociationFieldGroupModel:"DetailsAssociationFieldGroupModel",DetailsCustomItemModel:"DetailsCustomItemModel"}),R(this,"customModelClasses",{}),R(this,"handlePageChange",t=>L(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){var o,r,i;super.onInit(t),this.hadSingleRecordData=(i=(r=(o=this.resource)==null?void 0:o.hasData)==null?void 0:r.call(o))!=null?i:!1,this.hasMultiRefreshDispatched=!1;const n=(0,import_flow_engine.createCurrentRecordMetaFactory)(this.context,()=>this.collection);this.context.defineProperty("record",{get:()=>this.getCurrentRecord(),cache:!1,resolveOnServer:(0,import_flow_engine.createRecordResolveOnServerWithLocal)(()=>this.collection,()=>this.getCurrentRecord()),meta:n}),this.resource.on("refresh",()=>{var l,a,c;if(this.isMultiRecordResource()){this.hasMultiRefreshDispatched=!0,dispatchEventDeep(this,"paginationChange");return}const u=this.hadSingleRecordData;this.hadSingleRecordData=(c=(a=(l=this.resource)==null?void 0:l.hasData)==null?void 0:a.call(l))!=null?c:!1,u&&dispatchEventDeep(this,"paginationChange")})}isMultiRecordResource(){return this.resource instanceof import_flow_engine.MultiRecordResource}hasDispatchedMultiRefresh(){return this.hasMultiRefreshDispatched}getCurrentRecord(){const t=this.resource.getData();return Array.isArray(t)?t[0]:t}hasAvailableData(){return this.resource.hasData()}refresh(){return L(this,null,function*(){yield this.resource.refresh()})}renderPagination(){var t,o;if(!this.resource.loading&&!this.hasAvailableData())return(0,import_jsx_runtime.jsx)("div",{style:{textAlign:"center",color:(o=(t=this.context)==null?void 0:t.themeToken)==null?void 0:o.colorTextDescription},children:this.translate("No available data currently")});const r=this.resource;return!this.isMultiRecordResource()||!r.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:r.getPage(),total:r.getTotalPage(),onChange:this.handlePageChange,style:{display:"inline-block"}})})}renderConfigureActions(){return(0,import_jsx_runtime.jsx)(import_flow_engine.AddSubModelButton,{model:this,subModelKey:"actions",subModelBaseClass:this.getModelClassName("RecordActionGroupModel"),afterSubModelInit:t=>L(this,null,function*(){t.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")}renderComponent(){const{colon:t,labelAlign:o,labelWidth:r,labelWrap:i,layout:n}=this.props,l=!!this.context.flowSettingsEnabled,a=!l&&!this.hasAvailableData(),{heightMode:c,height:u}=this.decoratorProps;return(0,import_jsx_runtime.jsx)(DetailsBlockContent,{model:this,gridModel:this.subModels.grid,isConfigMode:l,heightMode:c,height:u,layoutProps:{colon:t,labelAlign:o,labelWidth:r,labelWrap:i,layout:n},actions:(0,import_jsx_runtime.jsx)(import_flow_engine.DndProvider,{children:(0,import_jsx_runtime.jsx)("div",{style:a?{pointerEvents:"none",opacity:.45}:void 0,children:(0,import_jsx_runtime.jsxs)(import_antd.Space,{wrap:!0,children:[this.mapSubModels("actions",d=>{if(!(d.hidden&&!l))return(0,import_jsx_runtime.jsx)(import_flow_engine.Droppable,{model:d,children:(0,import_jsx_runtime.jsx)(import_flow_engine.FlowModelRenderer,{model:d,showFlowSettings:{showBackground:!1,showBorder:!1,toolbarPosition:"above"},extraToolbarItems:[{key:"drag-handler",component:import_flow_engine.DragHandler,sort:1}]})},d.uid)}),this.renderConfigureActions()]})})})})}}R(DetailsBlockModel,"scene",BlockSceneEnum.oam);const DetailsBlockContent=({model:e,gridModel:t,isConfigMode:o,heightMode:r,height:i,layoutProps:n,actions:l})=>{const a=(0,import_react2.useRef)(null),c=(0,import_react2.useRef)(null),u=(0,import_react2.useRef)(null),d=r==="specifyValue"||r==="fullHeight",m=useDetailsGridHeight({heightMode:r,containerRef:a,actionsRef:c,paginationRef:u,deps:[i]});return(0,import_react2.useEffect)(()=>{var p,h;if(!t)return;const g=d?m:void 0;((p=t.props)==null?void 0:p.height)===g&&((h=t.props)==null?void 0:h.heightMode)===r||t.setProps({height:g,heightMode:r})},[t,m,d,r]),(0,import_jsx_runtime.jsx)(FormComponent,{model:e,layoutProps:n,style:d?{display:"flex",flexDirection:"column",minHeight:0,height:"100%"}:void 0,children:(0,import_jsx_runtime.jsxs)("div",{ref:a,style:d?{display:"flex",flexDirection:"column",minHeight:0,flex:1}:void 0,children:[(0,import_jsx_runtime.jsx)("div",{ref:c,style:{textAlign:"right",lineHeight:"0px",paddingBottom:o&&e.context.themeToken.padding},children:l}),(0,import_jsx_runtime.jsx)(import_flow_engine.FlowModelRenderer,{model:t,showFlowSettings:!1},`${(t==null?void 0:t.uid)||"details-grid"}:${o?"design":"runtime"}`),(0,import_jsx_runtime.jsx)("div",{ref:u,children:e.renderPagination()})]})})};DetailsBlockModel.registerFlow({key:"detailsSettings",title:(0,import_flow_engine.tExpr)("Details settings"),sort:150,steps:{refresh:{handler(e){return L(this,null,function*(){if(!e.resource)throw new Error("Resource is not initialized");yield e.model.applySubModelsBeforeRenderFlows("grid")})}},layout:{use:"layout",title:(0,import_flow_engine.tExpr)("Layout")},dataScope:{use:"dataScope"},defaultSorting:{use:"sortingRule",title:(0,import_flow_engine.tExpr)("Default sorting")},linkageRules:{use:"detailsFieldLinkageRules"}}});DetailsBlockModel.registerFlow({key:"paginationChange",on:"paginationChange",steps:{blockLinkageRulesRefresh:{use:"linkageRulesRefresh",defaultParams:{actionName:"blockLinkageRules",flowKey:"cardSettings",stepKey:"linkageRules"}},fieldslinkageRulesRefresh:{use:"linkageRulesRefresh",defaultParams:{actionName:"detailsFieldLinkageRules",flowKey:"detailsSettings",stepKey:"linkageRules"}}}});DetailsBlockModel.registerFlow({key:"initialPaginationChangeRefresh",sort:10001,steps:{refreshPaginationRelatedStates:{handler(e){return L(this,null,function*(){var t;if(e.model.hidden||!e.model.isMultiRecordResource()||e.model.hasDispatchedMultiRefresh())return;const o=e.model.resource;if(!o)return;const r=((t=o.dataLoadingMode)!=null?t:o.loadingMode)==="manual",i=typeof o.hasActiveFilters=="function"?o.hasActiveFilters():!1;!r||i||(yield dispatchEventDeep(e.model,"paginationChange"))})}}}});DetailsBlockModel.define({label:(0,import_flow_engine.tExpr)("Details"),searchable:!0,searchPlaceholder:(0,import_flow_engine.tExpr)("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,p,h;const g=typeof a.defineChildren=="function"||!!((c=a.meta)!=null&&c.children),f={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,hide:(p=a.meta)==null?void 0:p.hide};return g?f.children=_=>{var v;return typeof a.defineChildren=="function"?a.defineChildren(_):((v=a.meta)==null?void 0:v.children)||[]}:f.createModelOptions=((h=a.meta)==null?void 0:h.createModelOptions)||{use:l},f});return import_lodash.default.sortBy([...i(o),...i(r)],"sort")}}R(DetailsCustomItemModel,"renderMode",import_flow_engine.ModelRenderMode.RenderFunction);DetailsCustomItemModel.define({hide:!0,label:(0,import_flow_engine.tExpr)("Others")});class DetailsGridModel extends GridModel{constructor(){super(...arguments),R(this,"itemFallback",(0,import_jsx_runtime.jsx)(import_antd.Skeleton.Input,{block:!0,size:"small",style:{marginBottom:"0.5rem"}})),R(this,"itemSettingsMenuLevel",2),R(this,"itemFlowSettings",{showBackground:!0,style:{top:-6,left:-6,right:-6,bottom:-6}}),R(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 this.context.flowSettingsEnabled?(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")})}):null}render(){var t,o;const r=(t=this.props)==null?void 0:t.height,i=(o=this.props)==null?void 0:o.heightMode,n=this.context.themeToken,l=super.render();return i==="defaultHeight"?l:(0,import_jsx_runtime.jsx)("div",{style:{height:r,overflowY:"auto",marginLeft:`-${n.marginLG}px`,marginRight:`-${n.marginLG}px`,paddingLeft:`${n.marginLG}px`,paddingRight:`${n.marginLG}px`},children:l})}}DetailsGridModel.registerFlow({key:"detailFieldGridSettings",steps:{grid:{handler(e,t){e.model.setProps("rowGap",0),e.model.setProps("colGap",16)}}}});function transformChildrenToJS(e,t){const{fieldUseModel:o,refreshTargets:r}=t,i=n=>Array.isArray(n)?n.map(l=>{const a=x({},l);if(a.children)if(typeof a.children=="function"){const c=a.children;a.children=u=>L(this,null,function*(){const d=yield c(u);return i(d)})}else Array.isArray(a.children)&&(a.children=i(a.children));if(a.createModelOptions){const c=a.createModelOptions;a.createModelOptions=(u,d)=>L(this,null,function*(){const m=yield typeof c=="function"?c(u,d):c;return m.subModels=m.subModels||{},m.subModels.field=A(x({},m.subModels.field||{}),{use:o}),m}),a.refreshTargets=a.refreshTargets||r}return a}):[];return i(e)}function buildAssociationJSGroup(e,t,o){var r,i,n,l;const{fieldUseModel:a,refreshTargets:c}=o,u=(r=o.key)!=null?r:"js-association-fields",d=(i=o.label)!=null?i:(0,import_flow_engine.tExpr)("Display association fields"),m=(n=o.searchable)!=null?n:!0,p=(l=o.searchPlaceholder)!=null?l:(0,import_flow_engine.tExpr)("Search fields");return{key:u,type:"group",label:d,searchable:m,searchPlaceholder:p,children:h=>L(this,null,function*(){const g=yield t(h);return transformChildrenToJS(g,{fieldUseModel:a,refreshTargets:c})})}}function buildJSFieldMenuChildren(e,t){return L(this,null,function*(){var o;const{useModel:r,fieldUseModel:i,refreshTargets:n,associationPathName:l,associationProvider:a}=t,c=(0,import_flow_engine.buildWrapperFieldChildren)(e,{useModel:r,fieldUseModel:i,associationPathName:l,refreshTargets:n});let u=[];const d=(o=c==null?void 0:c[0])==null?void 0:o.children;if(Array.isArray(d)&&(u=d),!a)return u;const m=yield a(e);if(!Array.isArray(m)||m.length===0)return u;const p=buildAssociationJSGroup(e,a,{fieldUseModel:i,refreshTargets:n});return[...u,p]})}class DetailsJSFieldItemModel extends DetailsCustomItemModel{static defineChildren(t){return buildJSFieldMenuChildren(t,{useModel:"DetailsItemModel",fieldUseModel:"JSFieldModel",refreshTargets:["DetailsItemModel"],associationProvider:o=>DetailsAssociationFieldGroupModel.defineChildren(o)})}}DetailsJSFieldItemModel.define({label:(0,import_flow_engine.tExpr)("JS field"),searchable:!0,searchPlaceholder:(0,import_flow_engine.tExpr)("Search fields"),sort:110});class FilterFormFieldModel extends FieldModel{}class AssociationFieldModel extends FieldModel{constructor(){super(...arguments),R(this,"operator","$eq"),R(this,"updateAssociation",!0)}}AssociationFieldModel.registerFlow({key:"AssociationFieldInit",sort:800,steps:{init:{handler(e,t){return L(this,null,function*(){var o,r;if(e.model.updateAssociation){const i=e.model.context.blockModel,n=(o=i==null?void 0:i.context)==null?void 0:o.resource,l=(r=e.model.parent)==null?void 0:r.fieldPath;if(!n||!l)return;n.addUpdateAssociationValues(l)}})}},allowCreateCheck:{handler(e){return L(this,null,function*(){var t;const o=yield e.aclCheck({dataSourceKey:e.collectionField.dataSourceKey,resourceName:(t=e.collectionField)==null?void 0:t.target,actionName:"create"});e.model.setProps({allowCreate:!!o})})}}}});function buildOpenerUids(e,t={}){var o,r,i,n,l,a;const c=!!t.navigation,u=_=>{if(Array.isArray(_))return _.filter(v=>typeof v=="string"&&!!v)},d=u((r=(o=e.view)==null?void 0:o.inputArgs)==null?void 0:r.openerUids),m=u(t.openerUids),p=d||m||[];if(c)return(m||p).filter(Boolean);const h=(n=(i=e.view)==null?void 0:i.inputArgs)==null?void 0:n.viewUid,g=(a=(l=e.model.context)==null?void 0:l.inputArgs)==null?void 0:a.viewUid,f=typeof h=="string"&&h?h:typeof g=="string"&&g?g:e.model.uid;return[...p,f].filter(Boolean)}function toSafeDisplayLabel(e){var t;if(typeof e=="string"||typeof e=="number"||typeof e=="boolean")return e;if(Array.isArray(e)){const o=e.map(r=>{var i;if(typeof r=="string"||typeof r=="number"||typeof r=="boolean")return r;if(r&&typeof r=="object"){const n=(i=r.label)!=null?i:r.name;if(typeof n=="string"||typeof n=="number"||typeof n=="boolean")return n}}).filter(r=>r!==void 0);return o.length?o.map(String).join(", "):void 0}if(e&&typeof e=="object"){const o=(t=e.label)!=null?t:e.name;if(typeof o=="string"||typeof o=="number"||typeof o=="boolean")return o}}function LabelByField(e){var t,o;const{option:r,fieldNames:i}=e,n=(0,import_flow_engine.useFlowModel)(),l=n.subModels.field;if(!l)return;const a=r[i.value],c=l.createFork({},a);c.context.defineProperty("record",{get:()=>r,cache:!1,meta:(0,import_flow_engine.createCurrentRecordMetaFactory)(c.context,()=>c.context.collection)});const u=(o=(t=toSafeDisplayLabel(r==null?void 0:r[i.label]))!=null?t:toSafeDisplayLabel(r==null?void 0:r.label))!=null?o:toSafeDisplayLabel(r==null?void 0:r[i.value]),d=n.context.collectionField.targetCollection.getField(i.label),m=d&&typeof d.getComponentProps=="function"?d.getComponentProps():{};return c.setProps(x({value:u,clickToOpen:!1},m)),(0,import_jsx_runtime.jsx)("span",{style:{pointerEvents:"none"},children:u!==null&&typeof u<"u"&&u!==""?c.render():"N/A"},a)}function toSelectValue(e,t,o=!1,r="record",i=[]){if(!e)return o?[]:void 0;const{value:n}=t||{},l=c=>typeof c=="object"&&c!==null,a=c=>{if(l(c))return{label:(0,import_jsx_runtime.jsx)(LabelByField,{option:c,fieldNames:t}),value:c[n]}};if(r==="value"){const c=u=>{if(typeof u=="object"&&u!==null)return a(u);const d=i.find(m=>(m==null?void 0:m[n])===u);return d?a(d):{label:u,value:u}};return o?Array.isArray(e)?e.map(u=>c(u)).filter(Boolean):[]:Array.isArray(e)?c(e[0]):c(e)}if(o)return Array.isArray(e)?e.filter(l).map(a).filter(Boolean):[];if(Array.isArray(e)){const c=e[0];return l(c)?a(c):void 0}return l(e)?a(e):void 0}function resolveOptions(e,t,o){return e!=null&&e.length?e.map(r=>(0,import_lodash.omit)(r,"disabled","options")):o?Array.isArray(t)?t.filter(r=>typeof r=="object"&&r!==null):[]:t&&typeof t=="object"?[t]:[]}const labelClassName=import_css.css`
|
|
1852
1852
|
div {
|
|
1853
1853
|
white-space: nowrap !important;
|
|
1854
1854
|
overflow: hidden;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nocobase/client",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.22",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"module": "es/index.mjs",
|
|
@@ -28,10 +28,10 @@
|
|
|
28
28
|
"@formily/reactive-react": "^2.2.27",
|
|
29
29
|
"@formily/shared": "^2.2.27",
|
|
30
30
|
"@formily/validator": "^2.2.27",
|
|
31
|
-
"@nocobase/evaluators": "2.0.
|
|
32
|
-
"@nocobase/flow-engine": "2.0.
|
|
33
|
-
"@nocobase/sdk": "2.0.
|
|
34
|
-
"@nocobase/utils": "2.0.
|
|
31
|
+
"@nocobase/evaluators": "2.0.22",
|
|
32
|
+
"@nocobase/flow-engine": "2.0.22",
|
|
33
|
+
"@nocobase/sdk": "2.0.22",
|
|
34
|
+
"@nocobase/utils": "2.0.22",
|
|
35
35
|
"@tanstack/react-table": "^8.21.3",
|
|
36
36
|
"@types/tabulator-tables": "^6.2.6",
|
|
37
37
|
"acorn-jsx": "^5.3.2",
|
|
@@ -96,5 +96,5 @@
|
|
|
96
96
|
"dumi": "2.2.14",
|
|
97
97
|
"dumi-theme-nocobase": "^0.2.32"
|
|
98
98
|
},
|
|
99
|
-
"gitHead": "
|
|
99
|
+
"gitHead": "7b703580c4bb60f1e5e44c8fd685141bb8b3a47c"
|
|
100
100
|
}
|