@nocobase/client 2.0.7 → 2.0.8
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 +58 -22
- package/lib/index.js +2 -2
- package/package.json +6 -6
package/es/index.mjs
CHANGED
|
@@ -9948,7 +9948,7 @@ function addAppVersion(e, t) {
|
|
|
9948
9948
|
addAppVersion((n = e.properties) == null ? void 0 : n[o], t);
|
|
9949
9949
|
}), e;
|
|
9950
9950
|
}
|
|
9951
|
-
const name = "@nocobase/client", version = "2.0.
|
|
9951
|
+
const name = "@nocobase/client", version = "2.0.8", license = "Apache-2.0", main = "lib/index.js", module = "es/index.mjs", types = "es/index.d.ts", dependencies = {
|
|
9952
9952
|
"@ahooksjs/use-url-state": "3.5.1",
|
|
9953
9953
|
"@ant-design/cssinjs": "^1.11.1",
|
|
9954
9954
|
"@ant-design/icons": "^5.6.1",
|
|
@@ -9971,10 +9971,10 @@ const name = "@nocobase/client", version = "2.0.7", license = "Apache-2.0", main
|
|
|
9971
9971
|
"@formily/reactive-react": "^2.2.27",
|
|
9972
9972
|
"@formily/shared": "^2.2.27",
|
|
9973
9973
|
"@formily/validator": "^2.2.27",
|
|
9974
|
-
"@nocobase/evaluators": "2.0.
|
|
9975
|
-
"@nocobase/flow-engine": "2.0.
|
|
9976
|
-
"@nocobase/sdk": "2.0.
|
|
9977
|
-
"@nocobase/utils": "2.0.
|
|
9974
|
+
"@nocobase/evaluators": "2.0.8",
|
|
9975
|
+
"@nocobase/flow-engine": "2.0.8",
|
|
9976
|
+
"@nocobase/sdk": "2.0.8",
|
|
9977
|
+
"@nocobase/utils": "2.0.8",
|
|
9978
9978
|
"@tanstack/react-table": "^8.21.3",
|
|
9979
9979
|
"@types/tabulator-tables": "^6.2.6",
|
|
9980
9980
|
"acorn-jsx": "^5.3.2",
|
|
@@ -89064,6 +89064,23 @@ const getAssociationTargetCollection = (e, t, o) => {
|
|
|
89064
89064
|
return !m || typeof m != "object" ? m : typeof (m == null ? void 0 : m[r]) != "undefined" ? m[r] : typeof (m == null ? void 0 : m.id) != "undefined" ? m.id : typeof (m == null ? void 0 : m.value) != "undefined" ? m.value : m;
|
|
89065
89065
|
};
|
|
89066
89066
|
return Array.isArray(e) ? e.map(i) : i(e);
|
|
89067
|
+
}, buildVirtualFilterCollectionField = (e, t) => {
|
|
89068
|
+
var a, l, c;
|
|
89069
|
+
if (!t)
|
|
89070
|
+
return;
|
|
89071
|
+
const o = (t == null ? void 0 : t.title) || (t == null ? void 0 : t.name), n = t == null ? void 0 : t.interface, r = n ? (
|
|
89072
|
+
// @ts-ignore
|
|
89073
|
+
(c = (l = (a = e == null ? void 0 : e.dataSourceManager) == null ? void 0 : a.collectionFieldInterfaceManager) == null ? void 0 : l.getFieldInterface) == null ? void 0 : c.call(l, n)
|
|
89074
|
+
) : void 0;
|
|
89075
|
+
return A(x({}, t), {
|
|
89076
|
+
title: o,
|
|
89077
|
+
uiSchema: A(x({}, (t == null ? void 0 : t.uiSchema) || {}), {
|
|
89078
|
+
title: o
|
|
89079
|
+
}),
|
|
89080
|
+
filterable: (t == null ? void 0 : t.filterable) || (r == null ? void 0 : r.filterable),
|
|
89081
|
+
isAssociationField: typeof (t == null ? void 0 : t.isAssociationField) == "function" ? t.isAssociationField : () => !!(t != null && t.target),
|
|
89082
|
+
getComponentProps: typeof (t == null ? void 0 : t.getComponentProps) == "function" ? t.getComponentProps : () => ({})
|
|
89083
|
+
});
|
|
89067
89084
|
}, buildFilterFormFieldItem = ({
|
|
89068
89085
|
model: e,
|
|
89069
89086
|
collection: t,
|
|
@@ -89289,7 +89306,14 @@ class FilterFormItemModel extends FilterableItemModel {
|
|
|
89289
89306
|
return Array.isArray(n) && n.find((a) => a.value === o) || null;
|
|
89290
89307
|
}
|
|
89291
89308
|
onInit(o) {
|
|
89309
|
+
var r;
|
|
89292
89310
|
super.onInit(o), this.debouncedDoFilter = debounce(this.doFilter.bind(this), 300);
|
|
89311
|
+
const n = (r = this.getStepParams("filterFormItemSettings", "init")) == null ? void 0 : r.filterField;
|
|
89312
|
+
n && this.context.defineProperty("filterField", {
|
|
89313
|
+
value: A(x({}, n), {
|
|
89314
|
+
title: (n == null ? void 0 : n.title) || (n == null ? void 0 : n.name)
|
|
89315
|
+
})
|
|
89316
|
+
});
|
|
89293
89317
|
}
|
|
89294
89318
|
onMount() {
|
|
89295
89319
|
super.onMount(), this.mounted = !0;
|
|
@@ -89366,8 +89390,8 @@ FilterFormItemModel.registerFlow({
|
|
|
89366
89390
|
"x-component": "Input",
|
|
89367
89391
|
"x-decorator": "FormItem",
|
|
89368
89392
|
"x-reactions": (t) => {
|
|
89369
|
-
var r, i;
|
|
89370
|
-
const o = e.model, n = ((r = o.collectionField) == null ? void 0 : r.title) || ((i = e.filterField) == null ? void 0 : i.title);
|
|
89393
|
+
var r, i, a;
|
|
89394
|
+
const o = e.model, n = ((r = o.collectionField) == null ? void 0 : r.title) || ((i = e.filterField) == null ? void 0 : i.title) || ((a = e.filterField) == null ? void 0 : a.name) || o.fieldPath;
|
|
89371
89395
|
t.decoratorProps = A(x({}, t.decoratorProps), {
|
|
89372
89396
|
extra: o.context.t("Original field title: ") + n
|
|
89373
89397
|
});
|
|
@@ -89375,14 +89399,15 @@ FilterFormItemModel.registerFlow({
|
|
|
89375
89399
|
}
|
|
89376
89400
|
}),
|
|
89377
89401
|
defaultParams: (e) => {
|
|
89378
|
-
var t, o;
|
|
89402
|
+
var t, o, n;
|
|
89379
89403
|
return {
|
|
89380
|
-
label: ((t = e.collectionField) == null ? void 0 : t.title) || ((o = e.filterField) == null ? void 0 : o.title)
|
|
89404
|
+
label: ((t = e.collectionField) == null ? void 0 : t.title) || ((o = e.filterField) == null ? void 0 : o.title) || ((n = e.filterField) == null ? void 0 : n.name)
|
|
89381
89405
|
};
|
|
89382
89406
|
},
|
|
89383
89407
|
handler(e, t) {
|
|
89384
|
-
var
|
|
89385
|
-
|
|
89408
|
+
var n, r, i;
|
|
89409
|
+
const o = ((n = e.collectionField) == null ? void 0 : n.title) || ((r = e.filterField) == null ? void 0 : r.title) || ((i = e.filterField) == null ? void 0 : i.name);
|
|
89410
|
+
t.label && t.label === o ? e.model.setProps({ label: t.label }) : e.model.setProps({ label: e.t(t.label, { ns: "lm-flow-engine" }) });
|
|
89386
89411
|
}
|
|
89387
89412
|
},
|
|
89388
89413
|
// aclCheck: {
|
|
@@ -89391,21 +89416,32 @@ FilterFormItemModel.registerFlow({
|
|
|
89391
89416
|
init: {
|
|
89392
89417
|
handler(e, t) {
|
|
89393
89418
|
return V(this, null, function* () {
|
|
89394
|
-
var
|
|
89395
|
-
const o =
|
|
89396
|
-
|
|
89397
|
-
|
|
89398
|
-
|
|
89419
|
+
var a, l, c, u, d;
|
|
89420
|
+
const o = t.filterField ? A(x({}, t.filterField), {
|
|
89421
|
+
title: ((a = t.filterField) == null ? void 0 : a.title) || ((l = t.filterField) == null ? void 0 : l.name)
|
|
89422
|
+
}) : t.filterField;
|
|
89423
|
+
e.model.context.defineProperty("filterField", {
|
|
89424
|
+
value: o
|
|
89425
|
+
}), e.model.setProps({
|
|
89426
|
+
name: `${e.model.fieldPath}_${e.model.uid}`
|
|
89427
|
+
// 确保每个字段的名称唯一
|
|
89428
|
+
});
|
|
89429
|
+
let n = e.model.collectionField;
|
|
89430
|
+
const r = ((u = (c = e.model).getFieldSettingsInitParams) == null ? void 0 : u.call(c)) || {};
|
|
89431
|
+
if (!!!// @ts-ignore
|
|
89432
|
+
(r != null && r.dataSourceKey && (r != null && r.collectionName)) && !n && o) {
|
|
89433
|
+
const m = buildVirtualFilterCollectionField(e, o);
|
|
89434
|
+
m && (e.model.context.defineProperty("collectionField", {
|
|
89435
|
+
value: m
|
|
89436
|
+
}), n = m);
|
|
89437
|
+
}
|
|
89438
|
+
if (n != null && n.getComponentProps) {
|
|
89439
|
+
const m = n.getComponentProps(), g = ((d = e.model.subModels) == null ? void 0 : d.field) instanceof RecordSelectFieldModel, p = m || {}, { rules: f, required: y, multiple: b, allowMultiple: S, maxCount: C } = p, F = ee(p, ["rules", "required", "multiple", "allowMultiple", "maxCount"]);
|
|
89440
|
+
e.model.setProps(A(x({}, g ? F : A(x({}, F), { multiple: b, allowMultiple: S, maxCount: C })), {
|
|
89399
89441
|
rules: void 0,
|
|
89400
89442
|
required: void 0
|
|
89401
89443
|
}));
|
|
89402
89444
|
}
|
|
89403
|
-
e.model.setProps({
|
|
89404
|
-
name: `${e.model.fieldPath}_${e.model.uid}`
|
|
89405
|
-
// 确保每个字段的名称唯一
|
|
89406
|
-
}), e.model.context.defineProperty("filterField", {
|
|
89407
|
-
value: t.filterField
|
|
89408
|
-
});
|
|
89409
89445
|
});
|
|
89410
89446
|
}
|
|
89411
89447
|
},
|
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:()=>V(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 V(this,null,function*(){})}beforeLoad(){return V(this,null,function*(){})}load(){return V(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)(()=>{V(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=>V(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)(()=>V(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)(()=>V(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.7",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.7","@nocobase/flow-engine":"2.0.7","@nocobase/sdk":"2.0.7","@nocobase/utils":"2.0.7","@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=>V(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=>V(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=>V(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=>V(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=>V(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 V(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 C=(0,import_get.default)(n,v);return(b=C==null?void 0:C[LAZY_COMPONENT_KEY])!=null?b:C},[import_get.default]),on:f.on.bind(f),patch:(0,import_react2.useCallback)((v,b)=>{const C=y=>{Object.keys(y).forEach(F=>{const S=y[F];F==="title"&&(m.title=S,p.title=S),F==="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]})),F==="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),C(y)}C(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,C)=>{f.insertAdjacent(v,b,C)},[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,n]=(0,import_react2.useState)({}),[l,a]=(0,import_react2.useState)(!!e);return(0,import_react2.useEffect)(()=>{if(!e)return;const c=()=>V(this,null,function*(){a(!0);const d=yield o(e);a(!1),n(d),t==null||t(d)});c();const u=import_lodash.default.debounce(c,DEBOUNCE_WAIT);(0,import_reactive.reaction)(()=>(0,import_client.flatten)(e,{breakOn({key:d}){return d.startsWith("$")&&d!=="$and"&&d!=="$or"},transformValue(d){if(!isVariable$1(d))return d;const m=getVariableName(d),p=r(m);let h=null;const g=getPath(d).split(".");return g.forEach((f,_)=>{const v=g.slice(0,_+1).join("."),b=(0,import_client.getValuesByPath)({[m]:(p==null?void 0:p.ctx)||{}},v);import_lodash.default.isEmpty(b)||(h=b)}),h}}),u,{equals:import_lodash.default.isEqual})},[JSON.stringify(e),o,r]),{filter:i,parseVariableLoading:l}}const useParentRecordCommon=e=>{const t=useCollectionRecordData();if(e)return t},useTableBlockDecoratorProps=e=>{var t;const{params:o,parseVariableLoading:r}=useTableBlockParams(e),i=useParentRecordCommon(e.association),n=(t=useDataSourceManager().getDataSource(e.dataSource))==null?void 0:t.collectionManager.getCollection(e.collection);return{params:o,parentRecord:i,parseVariableLoading:r,rowKey:(n==null?void 0:n.filterTargetKey)||"id"}};function useTableBlockParams(e){var t;const o=(0,import_react.useFieldSchema)(),{filter:r,parseVariableLoading:i}=useParsedFilter({filterOption:(t=e.params)==null?void 0:t.filter});return{params:(0,import_react2.useMemo)(()=>{const n=e.params||{},{dragSortBy:l}=(o==null?void 0:o["x-decorator-props"])||{};return e.dragSort&&l&&(n.sort=l),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)=>V(void 0,[e,t],function*({rules:o,variables:r,localVariables:i},n){return(yield Promise.all(o.filter(l=>!l.disabled).map(l=>V(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)=>V(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)=>V(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 C=o.find(P=>P.uid===h.uid);if(!C)return;import_lodash.default.isFunction(u)&&(u=u(C,h,getSourceKey$1(p,C.field))),import_lodash.default.isFunction(d)&&(b=d(C,h)),import_lodash.default.isFunction(m)&&(m=m(C));const y=((g=h.service.params)==null?void 0:g[0])||{},F=((_=(f=h.service.params)==null?void 0:f[1])==null?void 0:_.filters)||{};if(u!=null)F[r]={$and:[{[b]:{[m]:u}}]};else if((v=h.clearSelection)==null||v.call(h),delete F[r],h.dataLoadingMode==="manual")return h.clearData();const S=mergeFilter([...Object.values(F).map(P=>removeNullCondition(P)),h.defaultFilter]);h.doFilter(A(x({},y),{page:1,filter:S}),{filters:F})})},[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:C}=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:F}=useParsedFilter({filterOption:y,onFilterChange:()=>{C&&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,F]),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,F,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:()=>V(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 V(this,null,function*(){})}beforeLoad(){return V(this,null,function*(){})}load(){return V(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)(()=>{V(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=>V(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)(()=>V(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)(()=>V(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.8",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.8","@nocobase/flow-engine":"2.0.8","@nocobase/sdk":"2.0.8","@nocobase/utils":"2.0.8","@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=>V(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=>V(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=>V(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=>V(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=>V(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 V(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 C=(0,import_get.default)(n,v);return(b=C==null?void 0:C[LAZY_COMPONENT_KEY])!=null?b:C},[import_get.default]),on:f.on.bind(f),patch:(0,import_react2.useCallback)((v,b)=>{const C=y=>{Object.keys(y).forEach(F=>{const S=y[F];F==="title"&&(m.title=S,p.title=S),F==="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]})),F==="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),C(y)}C(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,C)=>{f.insertAdjacent(v,b,C)},[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,n]=(0,import_react2.useState)({}),[l,a]=(0,import_react2.useState)(!!e);return(0,import_react2.useEffect)(()=>{if(!e)return;const c=()=>V(this,null,function*(){a(!0);const d=yield o(e);a(!1),n(d),t==null||t(d)});c();const u=import_lodash.default.debounce(c,DEBOUNCE_WAIT);(0,import_reactive.reaction)(()=>(0,import_client.flatten)(e,{breakOn({key:d}){return d.startsWith("$")&&d!=="$and"&&d!=="$or"},transformValue(d){if(!isVariable$1(d))return d;const m=getVariableName(d),p=r(m);let h=null;const g=getPath(d).split(".");return g.forEach((f,_)=>{const v=g.slice(0,_+1).join("."),b=(0,import_client.getValuesByPath)({[m]:(p==null?void 0:p.ctx)||{}},v);import_lodash.default.isEmpty(b)||(h=b)}),h}}),u,{equals:import_lodash.default.isEqual})},[JSON.stringify(e),o,r]),{filter:i,parseVariableLoading:l}}const useParentRecordCommon=e=>{const t=useCollectionRecordData();if(e)return t},useTableBlockDecoratorProps=e=>{var t;const{params:o,parseVariableLoading:r}=useTableBlockParams(e),i=useParentRecordCommon(e.association),n=(t=useDataSourceManager().getDataSource(e.dataSource))==null?void 0:t.collectionManager.getCollection(e.collection);return{params:o,parentRecord:i,parseVariableLoading:r,rowKey:(n==null?void 0:n.filterTargetKey)||"id"}};function useTableBlockParams(e){var t;const o=(0,import_react.useFieldSchema)(),{filter:r,parseVariableLoading:i}=useParsedFilter({filterOption:(t=e.params)==null?void 0:t.filter});return{params:(0,import_react2.useMemo)(()=>{const n=e.params||{},{dragSortBy:l}=(o==null?void 0:o["x-decorator-props"])||{};return e.dragSort&&l&&(n.sort=l),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)=>V(void 0,[e,t],function*({rules:o,variables:r,localVariables:i},n){return(yield Promise.all(o.filter(l=>!l.disabled).map(l=>V(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)=>V(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)=>V(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 C=o.find(P=>P.uid===h.uid);if(!C)return;import_lodash.default.isFunction(u)&&(u=u(C,h,getSourceKey$1(p,C.field))),import_lodash.default.isFunction(d)&&(b=d(C,h)),import_lodash.default.isFunction(m)&&(m=m(C));const y=((g=h.service.params)==null?void 0:g[0])||{},F=((_=(f=h.service.params)==null?void 0:f[1])==null?void 0:_.filters)||{};if(u!=null)F[r]={$and:[{[b]:{[m]:u}}]};else if((v=h.clearSelection)==null||v.call(h),delete F[r],h.dataLoadingMode==="manual")return h.clearData();const S=mergeFilter([...Object.values(F).map(P=>removeNullCondition(P)),h.defaultFilter]);h.doFilter(A(x({},y),{page:1,filter:S}),{filters:F})})},[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:C}=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:F}=useParsedFilter({filterOption:y,onFilterChange:()=>{C&&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,F]),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,F,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};
|
|
@@ -2012,7 +2012,7 @@ ctx.message.success('Current form values: ' + JSON.stringify(values));
|
|
|
2012
2012
|
overflow: hidden;
|
|
2013
2013
|
text-overflow: ellipsis;
|
|
2014
2014
|
}
|
|
2015
|
-
`,children:F.label}),dropdownRender:F=>{const S=f.some(P=>P[r.label]===h.searchText);return(0,import_jsx_runtime.jsx)(import_jsx_runtime.Fragment,{children:c==="quickAdd"&&d&&m&&h.searchText?(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[!(f.length===0&&h.searchText)&&F,f.length>0&&h.searchText&&!S&&(0,import_jsx_runtime.jsx)(import_antd.Divider,{style:{margin:0}}),!S&&(0,import_jsx_runtime.jsx)(C,{searchText:h.searchText})]}):F})}})),c==="modalAdd"&&(d&&m||v)&&(d&&m?(0,import_jsx_runtime.jsx)(import_antd.Button,{onClick:h.onModalAddClick,children:b("Add new")}):(0,import_jsx_runtime.jsx)(ActionWithoutPermission,{forbidden:{actionName:"create"},collection:(t=_==null?void 0:_.collectionField)==null?void 0:t.targetCollection,message:y,children:(0,import_jsx_runtime.jsx)(import_antd.Button,{onClick:h.onModalAddClick,disabled:!m,style:{opacity:"0.3"},children:b("Add new")})}))]})};class FilterFormCustomRecordSelectFieldModel extends RecordSelectFieldModel{constructor(){super(...arguments),R(this,"valueOptionsSyncKey",null),R(this,"valueOptionsSyncedKey",null),R(this,"valueOptionsSyncTask",null)}buildValueOptionsSyncKey(){var t,o,r,i,n,l,a,c,u,d,m,p,h;if((((t=this.props)==null?void 0:t.valueMode)||"record")!=="value")return null;const g=((o=this.props)==null?void 0:o.fieldNames)||{},f=((i=(r=this.context.collectionField)==null?void 0:r.targetCollection)==null?void 0:i.filterTargetKey)||"id",_=(g==null?void 0:g.value)||"id",v=!!((n=this.props)!=null&&n.multiple&&(l=this.props)!=null&&l.allowMultiple),b=resolveOptions((a=this.props)==null?void 0:a.options,(c=this.props)==null?void 0:c.value,v),C=(p=(m=(d=(u=this.context.collectionField)==null?void 0:u.targetCollection)==null?void 0:d.getField)==null?void 0:m.call(d,f))==null?void 0:p.type,y=normalizePrimaryKeys((h=this.props)==null?void 0:h.value,b,f,_,v,C);if(!y.length)return null;const F=new Set(b.map(P=>P==null?void 0:P[f]).filter(P=>P!=null)),S=y.filter(P=>!F.has(P));return S.length?`${f}::${S.slice().sort().join(",")}`:null}ensureValueOptionsSynced(){const t=this.buildValueOptionsSyncKey();t&&t!==this.valueOptionsSyncedKey&&(this.valueOptionsSyncTask&&this.valueOptionsSyncKey===t||(this.valueOptionsSyncKey=t,this.valueOptionsSyncTask=this.applyFlow("syncValueOptions").then(()=>{this.valueOptionsSyncedKey=t}).finally(()=>{this.valueOptionsSyncKey===t&&(this.valueOptionsSyncTask=null)})))}onDispatchEventStart(t){return V(this,null,function*(){t==="beforeRender"&&this.ensureValueOptionsSynced()})}getFilterValue(){var t,o;if((this.props.valueMode||"record")==="value"){const r=((o=(t=this.props)==null?void 0:t.fieldNames)==null?void 0:o.value)||"id",i=n=>{var l;return n==null?n:typeof n=="object"?(l=n==null?void 0:n[r])!=null?l:n==null?void 0:n.value:n};return Array.isArray(this.props.value)?this.props.value.map(n=>i(n)).filter(n=>n!=null&&n!==""):i(this.props.value)}return super.getFilterValue()}render(){return this.context.isMobileLayout?(0,import_jsx_runtime.jsx)(MobileLazySelect,A(x({},this.props),{loading:this.resource.loading})):(0,import_jsx_runtime.jsx)(FilterFormLazySelect,x({},this.props))}}FilterFormCustomRecordSelectFieldModel.registerFlow({key:"syncValueOptions",sort:780,steps:{syncByValue:{handler(e){return V(this,null,function*(){var t,o,r,i,n,l,a,c,u,d,m,p,h,g,f;if((((t=e.model.props)==null?void 0:t.valueMode)||"record")!=="value")return;const _=((o=e.model.props)==null?void 0:o.fieldNames)||{},v=((i=(r=e.model.context.collectionField)==null?void 0:r.targetCollection)==null?void 0:i.filterTargetKey)||"id",b=(_==null?void 0:_.value)||"id",C=!!((n=e.model.props)!=null&&n.multiple&&(l=e.model.props)!=null&&l.allowMultiple),y=resolveOptions((a=e.model.props)==null?void 0:a.options,(c=e.model.props)==null?void 0:c.value,C),F=(p=(m=(d=(u=e.model.context.collectionField)==null?void 0:u.targetCollection)==null?void 0:d.getField)==null?void 0:m.call(d,v))==null?void 0:p.type,S=normalizePrimaryKeys((h=e.model.props)==null?void 0:h.value,y,v,b,C,F);if(!S.length)return;const P=new Set(y.map(E=>E==null?void 0:E[v]).filter(E=>E!=null)),j=S.filter(E=>!P.has(E));if(!j.length)return;const I=e.model.resource;if(!I||typeof(I==null?void 0:I.addFilterGroup)!="function"||typeof(I==null?void 0:I.refresh)!="function")return;const D=j.length===1?{[`${v}.$eq`]:j[0]}:{[`${v}.$in`]:j};try{I.addFilterGroup(FILTER_FORM_VALUE_OPTIONS_GROUP,D),yield I.refresh();const E=((g=I.getData)==null?void 0:g.call(I))||[];if(!Array.isArray(E)||!E.length)return;const T=mergeOptionsByValue(y,E,v);if(!(T.length!==y.length||T.some((k,w)=>{var B;return(k==null?void 0:k[v])!==((B=y==null?void 0:y[w])==null?void 0:B[v])})))return;e.model.setDataSource(T)}finally{(f=I.removeFilterGroup)==null||f.call(I,FILTER_FORM_VALUE_OPTIONS_GROUP)}})}}}});FilterFormCustomRecordSelectFieldModel.registerFlow({key:"selectSettings",title:(0,import_flow_engine.tExpr)("Association select settings"),sort:800,steps:{fieldNames:{use:"titleField"},valueFieldOverride:{handler(e){const t=e.model.props.recordSelectValueField;if(!t)return;const o=A(x({},e.model.props.fieldNames||{}),{value:t});e.model.setProps({fieldNames:o})}},dataScope:{use:"dataScope"},sortingRule:{use:"sortingRule"},allowMultiple:{title:(0,import_flow_engine.tExpr)("Multiple"),uiMode:{type:"switch",key:"allowMultiple"},hideInSettings(e){return!e.collectionField||!["belongsToMany","hasMany","belongsToArray"].includes(e.collectionField.type)},defaultParams(e){return typeof e.model.props.allowMultiple=="boolean"?{allowMultiple:e.model.props.allowMultiple}:{allowMultiple:e.collectionField&&["belongsToMany","hasMany","belongsToArray"].includes(e.model.context.collectionField.type)}},handler(e,t){var o,r;const i=((r=(o=e==null?void 0:e.blockModel)==null?void 0:o.constructor)==null?void 0:r.scene)===BlockSceneEnum.filter,n=typeof e.model.props.allowMultiple=="boolean"?e.model.props.allowMultiple:t==null?void 0:t.allowMultiple;if(i&&typeof n=="boolean"){e.model.setProps({allowMultiple:n,multiple:n});return}e.model.setProps({allowMultiple:t==null?void 0:t.allowMultiple,multiple:t==null?void 0:t.allowMultiple})}},quickCreate:{title:(0,import_flow_engine.tExpr)("Quick create"),uiMode(e){const t=e.t;return{type:"select",key:"quickCreate",props:{options:[{label:t("None"),value:"none"},{label:t("Dropdown"),value:"quickAdd"},{label:t("Pop-up"),value:"modalAdd"}]}}},hideInSettings(e){var t,o;return((o=(t=e==null?void 0:e.blockModel)==null?void 0:t.constructor)==null?void 0:o.scene)===BlockSceneEnum.filter},defaultParams:{quickCreate:"none"},handler(e,t){e.model.setProps({quickCreate:t.quickCreate})}}}});class FilterFormActionModel extends ActionModel{}class FilterFormActionGroupModel extends ActionGroupModel{}R(FilterFormActionGroupModel,"baseClass",FilterFormActionModel);const FILTER_FORM_FLOW_KEYS=["filterFormItemSettings"],getLegacyFilterFormItemInitialValue=createLegacyValueExtractor(FILTER_FORM_FLOW_KEYS),clearLegacyFilterFormItemInitialValue=createLegacyClearer(FILTER_FORM_FLOW_KEYS);function collectLegacyDefaultValueRulesFromFilterFormModel(e){return collectLegacyDefaultValueRules(e,getLegacyFilterFormItemInitialValue)}function clearLegacyDefaultValuesFromFilterFormModel(e){return clearLegacyDefaultValues(e,getLegacyFilterFormItemInitialValue,clearLegacyFilterFormItemInitialValue)}const Ge=class qe extends FilterBlockModel{constructor(){super(...arguments),R(this,"autoTriggerFilter",!0),R(this,"removeTargetBlockListener")}get form(){return this.context.form}get title(){return"Filter form"}useHooksBeforeRender(){const[t]=import_antd.Form.useForm();this.context.defineProperty("form",{get:()=>t,cache:!1})}saveStepParams(){return V(this,null,function*(){return yield saveStepParamsWithSubModelsIfNeeded(this,()=>V(this,null,function*(){return yield Ee(qe.prototype,this,"saveStepParams").call(this)}))})}addAppends(){}onInit(t){super.onInit(t),this.context.defineProperty("blockModel",{value:this}),this.context.defineMethod("refreshTargets",()=>V(this,null,function*(){const o=this.subModels.grid.subModels.items;o&&o.forEach(r=>{var i;(i=r==null?void 0:r.doFilter)==null||i.call(r)})}))}onMount(){super.onMount(),this.context.defineProperty("filterFormGridModel",{value:this.subModels.grid}),this.applyDefaultsAndInitialFilter();const t=this.context.blockGridModel;if(t!=null&&t.emitter){const o=r=>{!(r!=null&&r.uid)||r.uid===this.uid||this.handleTargetBlockRemoved(r.uid)};t.emitter.on("onSubModelRemoved",o),this.removeTargetBlockListener=()=>t.emitter.off("onSubModelRemoved",o)}}onUnmount(){var t;(t=this.removeTargetBlockListener)==null||t.call(this),super.onUnmount()}applyDefaultsAndInitialFilter(){return V(this,null,function*(){var t,o;yield this.ensureFilterItemsBeforeRender(),yield this.applyFormDefaultValues(),yield(o=(t=this.context).refreshTargets)==null?void 0:o.call(t)})}ensureFilterItemsBeforeRender(){return V(this,null,function*(){var t,o;const r=(t=this.subModels)==null?void 0:t.grid,i=((o=r==null?void 0:r.subModels)==null?void 0:o.items)||[];if(!(!Array.isArray(i)||i.length===0))for(const n of i)typeof(n==null?void 0:n.dispatchEvent)=="function"&&(yield n.dispatchEvent("beforeRender"))})}applyFormDefaultValues(t){return V(this,null,function*(){var o,r,i,n,l,a,c,u;const d=this.form;if(!d)return;const m=(t==null?void 0:t.force)===!0,p=(o=this.getStepParams)==null?void 0:o.call(this,"formFilterBlockModelSettings","defaultValues"),h=(p==null?void 0:p.value)||[];if(!Array.isArray(h)||h.length===0)return;const g=f=>V(this,null,function*(){var _,v;if((0,import_flow_engine.isRunJSValue)(f)){const{code:b,version:C}=(0,import_flow_engine.normalizeRunJSValue)(f),y=yield(0,import_flow_engine.runjsWithSafeGlobals)(this.context,b,{version:C});return y!=null&&y.success?y.value:void 0}return yield(v=(_=this.context).resolveJsonTemplate)==null?void 0:v.call(_,f)});for(const f of h){if(!f||typeof f!="object"||f.enable===!1||f.mode&&String(f.mode)!=="default")continue;const _=f.targetPath?String(f.targetPath).trim():"",v=f.field?String(f.field).trim():"",b=(l=_?findFormItemModelByFieldPath(this,_):null)!=null?l:v?(n=(i=(r=this.context)==null?void 0:r.engine)==null?void 0:i.getModel)==null?void 0:n.call(i,v):null;if(!b)continue;const C=typeof b.getProps=="function"?b.getProps():b.props,y=(a=C==null?void 0:C.name)!=null?a:b.fieldPath?`${b.fieldPath}_${b.uid}`:void 0;if(!y)continue;const F=(c=d.getFieldValue)==null?void 0:c.call(d,y);if(!m&&!isEmptyValue(F))continue;const S=yield g(f.value);if(typeof S>"u")continue;const P=getDefaultOperator(b),j=normalizeFilterValueByOperator(P,S);typeof d.setFieldValue=="function"?d.setFieldValue(y,j):(u=d.setFieldsValue)==null||u.call(d,{[String(y)]:j})}})}handleTargetBlockRemoved(t){return V(this,null,function*(){const o=this.context.filterManager,r=this.subModels.grid.subModels.items||[];for(const i of[...r]){const n=o.getConnectFieldsConfig(i.uid),l=(n==null?void 0:n.targets)||[],a=l.some(d=>d.targetId===t),c=i.defaultTargetUid===t;if(!a&&!c)continue;const u=l.filter(d=>d.targetId!==t);if(u.length>0){yield o.saveConnectFieldsConfig(i.uid,{targets:u});continue}yield o.removeFilterConfig({filterId:i.uid}),yield i.destroy()}})}destroy(){return V(this,null,function*(){var t;const o=this.context.filterManager;return(t=this.subModels.grid.subModels.items)==null||t.map(r=>{o.removeFilterConfig({filterId:r.uid,persist:!1})}),yield Ee(qe.prototype,this,"destroy").call(this)})}renderComponent(){const{colon:t,labelAlign:o,labelWidth:r,labelWrap:i,layout:n}=this.props,l=!!this.context.flowSettingsEnabled;return(0,import_jsx_runtime.jsxs)(FormComponent,{model:this,onFinish:()=>{this.context.refreshTargets()},layoutProps:{colon:t,labelAlign:o,labelWidth:r,labelWrap:i,layout:n},children:[(0,import_jsx_runtime.jsx)(import_flow_engine.FlowModelRenderer,{model:this.subModels.grid,showFlowSettings:!1}),(0,import_jsx_runtime.jsx)(import_flow_engine.DndProvider,{children:(0,import_jsx_runtime.jsxs)(import_antd_v5.FormButtonGroup,{align:"right",children:[this.mapSubModels("actions",a=>{if(!(a.hidden&&!l))return(0,import_jsx_runtime.jsx)(import_flow_engine.Droppable,{model:a,children:(0,import_jsx_runtime.jsx)(import_flow_engine.FlowModelRenderer,{model:a,showFlowSettings:{showBackground:!1,showBorder:!1,toolbarPosition:"above"},extraToolbarItems:[{key:"drag-handler",component:import_flow_engine.DragHandler,sort:1}]},a.uid)},a.uid)}),(0,import_jsx_runtime.jsx)(import_flow_engine.AddSubModelButton,{model:this,subModelKey:"actions",subModelBaseClass:"FilterFormActionGroupModel",children:(0,import_jsx_runtime.jsx)(import_flow_engine.FlowSettingsButton,{icon:(0,import_jsx_runtime.jsx)(import_icons.SettingOutlined,{}),children:this.translate("Actions")})},"filter-form-actions-add")]})})]})}};R(Ge,"scene",BlockSceneEnum.filter);let FilterFormBlockModel=Ge;FilterFormBlockModel.define({label:(0,import_flow_engine.tExpr)("Form"),createModelOptions:{use:"FilterFormBlockModel",subModels:{grid:{use:"FilterFormGridModel"}}}});FilterFormBlockModel.registerFlow({key:"formFilterBlockModelSettings",title:(0,import_flow_engine.tExpr)("Form settings"),steps:{layout:{use:"layout",title:(0,import_flow_engine.tExpr)("Layout")},defaultValues:{use:"filterFormDefaultValues",title:(0,import_flow_engine.tExpr)("Field values"),beforeParamsSave(e){const t=clearLegacyDefaultValuesFromFilterFormModel(e.model);Array.isArray(t)&&t.length&&markSaveStepParamsWithSubModels(e.model)},afterParamsSave(e){var t,o;(o=(t=e.model)==null?void 0:t.applyFormDefaultValues)==null||o.call(t,{force:!0}).then(()=>{var r,i,n;return(n=(i=(r=e.model)==null?void 0:r.context)==null?void 0:i.refreshTargets)==null?void 0:n.call(i)})}}}});FilterFormBlockModel.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}});const collapseState=(0,import_reactive.observable)({collapsed:!1}),CollapseButton=(0,import_flow_engine.observer)(()=>{const e=(0,import_flow_engine.useFlowModel)(),t=x(x({},e.defaultProps),e.props),o=()=>{e.dispatchEvent("collapseToggle")};return(0,import_jsx_runtime.jsx)(import_antd.Button,A(x({},t),{onClick:o,icon:(0,import_jsx_runtime.jsx)(import_icons.DownOutlined,{rotate:collapseState.collapsed?0:180}),iconPosition:"end",children:collapseState.collapsed?e.translate("Expand button"):e.translate("Collapse button")}))});class FilterFormCollapseActionModel extends FilterFormActionModel{constructor(){super(...arguments),R(this,"defaultProps",{type:"link"}),R(this,"enableEditTitle",!1),R(this,"enableEditIcon",!1)}onMount(){var t,o;super.onMount();const r=((t=this.getStepParams("collapseSettings","defaultCollapsed"))==null?void 0:t.value)||!1,i=((o=this.getStepParams("collapseSettings","toggle"))==null?void 0:o.collapsedRows)||1;collapseState.collapsed=r,this.context.filterFormGridModel.toggleFormFieldsCollapse(collapseState.collapsed,i)}render(){return(0,import_jsx_runtime.jsx)(CollapseButton,{})}}FilterFormCollapseActionModel.registerFlow({key:"collapseSettings",title:(0,import_flow_engine.tExpr)("Collapse settings"),on:"collapseToggle",steps:{toggle:{title:(0,import_flow_engine.tExpr)("Collapsed rows"),uiSchema:{collapsedRows:{type:"number","x-decorator":"FormItem","x-component":import_antd.InputNumber,"x-component-props":{min:1,max:10,placeholder:(0,import_flow_engine.tExpr)("Enter number of rows to display")},default:1}},handler(e,t){return V(this,null,function*(){const o=t.collapsedRows||1;collapseState.collapsed=!collapseState.collapsed,e.model.context.filterFormGridModel.toggleFormFieldsCollapse(collapseState.collapsed,o)})}},defaultCollapsed:{title:(0,import_flow_engine.tExpr)("Default collapsed"),uiSchema:{value:{type:"boolean","x-decorator":"FormItem","x-component":"Switch"}},beforeParamsSave(e,t){var o;const r=t.value||!1;collapseState.collapsed=r;const i=((o=e.model.getStepParams("collapseSettings","toggle"))==null?void 0:o.collapsedRows)||1;e.model.context.filterFormGridModel.toggleFormFieldsCollapse(collapseState.collapsed,i)},handler(e,t){}}}});FilterFormCollapseActionModel.define({label:(0,import_flow_engine.tExpr)("Collapse button"),toggleable:!0,sort:300});FilterFormCollapseActionModel.registerEvents({collapseToggle:{title:(0,import_flow_engine.tExpr)("Collapse / Expand toggle"),name:"collapseToggle",uiSchema:{condition:{type:"object",title:(0,import_flow_engine.tExpr)("Trigger condition"),"x-decorator":"FormItem","x-component":ConditionBuilder}},handler:commonConditionHandler}});const getAssociationTargetCollection=(e,t,o)=>{var r,i,n;if(e!=null&&e.targetCollection)return e.targetCollection;const l=e==null?void 0:e.target;if(!l)return;if((r=t==null?void 0:t.dataSource)!=null&&r.getCollection)return t.dataSource.getCollection(l);const a=t==null?void 0:t.dataSourceKey;if(a&&(n=(i=o==null?void 0:o.context)==null?void 0:i.dataSourceManager)!=null&&n.getCollection)return o.context.dataSourceManager.getCollection(a,l)},getTargetFilterableFields=(e,t,o)=>{const r=getAssociationTargetCollection(e,t,o);return r!=null&&r.getFields?(r.getFields()||[]).filter(i=>i==null?void 0:i.filterable):[]},MAX_ASSOCIATION_DEPTH=5,normalizeAssociationDefaultFilterValue=(e,t)=>{var o,r,i,n,l;const a=(o=t==null?void 0:t.context)==null?void 0:o.collectionField;if(!((r=a==null?void 0:a.isAssociationField)!=null&&r.call(a)))return e;const c=((i=t==null?void 0:t.props)==null?void 0:i.fieldNames)||(a==null?void 0:a.fieldNames)||{},u=(c==null?void 0:c.value)||(a==null?void 0:a.targetKey)||((n=a==null?void 0:a.targetCollection)==null?void 0:n.filterTargetKey)||((l=a==null?void 0:a.collection)==null?void 0:l.filterTargetKey)||"id",d=m=>{const p=m&&typeof m=="object"&&typeof(m==null?void 0:m.data)<"u"?m.data:m;return!p||typeof p!="object"?p:typeof(p==null?void 0:p[u])<"u"?p[u]:typeof(p==null?void 0:p.id)<"u"?p.id:typeof(p==null?void 0:p.value)<"u"?p.value:p};return Array.isArray(e)?e.map(d):d(e)},buildFilterFormFieldItem=({model:e,collection:t,ctxWithFlags:o,field:r,fieldPath:i,labelPrefix:n})=>{var l,a;const c=import_flow_engine.FilterableItemModel.getDefaultBindingByField(o,r);if(!c)return;const u=(typeof(r==null?void 0:r.isAssociationField)=="function"?r.isAssociationField():r!=null&&r.target)&&(a=(l=o.engine)==null?void 0:l.getModelClass)!=null&&a.call(l,"FilterFormRecordSelectFieldModel")?"FilterFormRecordSelectFieldModel":c.modelName,d=r.title||r.name,m=n?`${n} / ${d}`:d;return{key:i,label:m,useModel:"FilterFormItemModel",refreshTargets:["FilterFormCustomItemModel"],createModelOptions:()=>({use:"FilterFormItemModel",stepParams:{fieldSettings:{init:{dataSourceKey:t==null?void 0:t.dataSourceKey,collectionName:t==null?void 0:t.name,fieldPath:i}},filterFormItemSettings:{init:{filterField:import_lodash.default.pick(r,["name","title","interface","type"]),defaultTargetUid:e.uid}}},subModels:{field:{use:u,props:typeof c.defaultProps=="function"?c.defaultProps(e.context,r):c.defaultProps}}})}},buildAssociationFieldMenuItem=({model:e,collection:t,ctxWithFlags:o,field:r,fieldPath:i,depth:n})=>{var l;if(!getAssociationTargetCollection(r,t,e)||n>MAX_ASSOCIATION_DEPTH)return;const a=r.title||r.name,c=((l=e.context)==null?void 0:l.t)||(o==null?void 0:o.t)||(u=>u);return{key:`${i}-associationField`,label:a,children:()=>V(void 0,null,function*(){const u=getTargetFilterableFields(r,t,e),d=[],m=[];u.forEach(h=>{const g=`${i}.${h.name}`;if(h!=null&&h.targetCollection){const _=buildAssociationFieldMenuItem({model:e,collection:t,ctxWithFlags:o,field:h,fieldPath:g,depth:n+1});_&&m.push(_);return}const f=buildFilterFormFieldItem({model:e,collection:t,ctxWithFlags:o,field:h,fieldPath:g});f&&d.push(f)});const p=[];return d.length&&p.push({key:`${i}-fields`,label:c("Fields"),type:"group",searchable:!0,searchPlaceholder:c("Search fields"),children:d}),m.length&&p.push({key:`${i}-relation-fields`,label:c("Association fields"),type:"group",searchable:!0,searchPlaceholder:c("Search association fields"),children:m}),p.length?p:[{key:`${i}-empty`,label:(0,import_jsx_runtime.jsx)(import_antd.Empty,{style:{width:140},description:c("No data"),image:import_antd.Empty.PRESENTED_IMAGE_SIMPLE}),disabled:!0}]})}},getModelFieldGroups=e=>V(void 0,null,function*(){var t,o;const r=e.collection||e.context.collection,i=(yield(t=e==null?void 0:e.getFilterFields)==null?void 0:t.call(e))||[],n=new import_flow_engine.FlowModelContext(e);n.addDelegate(e.context),n.defineProperty("flags",{value:A(x({},(o=e.context)==null?void 0:o.flags),{isInFilterFormBlock:!0})});const l=[],a=[];return i.forEach(c=>{const u=c.name,d=buildFilterFormFieldItem({model:e,collection:r,ctxWithFlags:n,field:c,fieldPath:u});if(d&&l.push(d),c!=null&&c.targetCollection){const m=buildAssociationFieldMenuItem({model:e,collection:r,ctxWithFlags:n,field:c,fieldPath:u,depth:1});m&&a.push(m)}}),{baseItems:l.filter(Boolean),relationItems:a.filter(Boolean)}});class FilterFormItemModel extends import_flow_engine.FilterableItemModel{constructor(){super(...arguments),R(this,"operator"),R(this,"mounted",!1),R(this,"debouncedDoFilter"),R(this,"lastAutoTriggerValue"),R(this,"autoTriggerInitialized",!1),R(this,"handleEnterPress",t=>{(t.key==="Enter"||t.keyCode===13)&&(t.preventDefault(),this.doFilter())})}static defineChildren(t){const o=t.blockGridModel;if(!o)return[];const r=getAllDataModels(o);return r.length===0?[{key:"no-data-blocks",label:(0,import_jsx_runtime.jsx)(import_antd.Empty,{style:{width:140},description:t.t("Please add a data block on the page first"),image:import_antd.Empty.PRESENTED_IMAGE_SIMPLE}),disabled:!0}]:r.map(i=>({key:i.uid,label:(0,import_jsx_runtime.jsx)("span",{style:{margin:"-5px -24px -5px -12px",padding:"5px 24px 5px 12px"},onMouseEnter:()=>{var n;const l=(n=i.context.ref)==null?void 0:n.current;l instanceof HTMLElement&&(l.style.outline=`2px solid ${i.context.themeToken.colorPrimaryBorder}`)},onMouseLeave:()=>{var n;const l=(n=i.context.ref)==null?void 0:n.current;l instanceof HTMLElement&&(l.style.outline="none")},children:`${i.title} #${i.uid.substring(0,4)}`}),children:()=>V(this,null,function*(){const{baseItems:n,relationItems:l}=yield getModelFieldGroups(i),a=[{key:"fields",label:t.t("Fields"),type:"group",searchable:!0,searchPlaceholder:t.t("Search fields"),children:n}];return l.length&&a.push({key:"relation-fields",label:t.t("Association fields"),type:"group",searchable:!0,searchPlaceholder:t.t("Search association fields"),children:l}),[...a]})}))}get defaultTargetUid(){return this.getStepParams("filterFormItemSettings","init").defaultTargetUid}getCurrentOperatorMeta(){var t,o;const r=getDefaultOperator(this);if(!r)return null;const i=(o=(t=this.collectionField)==null?void 0:t.filterable)==null?void 0:o.operators;return Array.isArray(i)&&i.find(n=>n.value===r)||null}onInit(t){super.onInit(t),this.debouncedDoFilter=(0,import_lodash.debounce)(this.doFilter.bind(this),300)}onMount(){super.onMount(),this.mounted=!0}onUnmount(){super.onUnmount(),this.debouncedDoFilter.cancel()}doFilter(){this.context.filterManager.refreshTargetsByFilter(this.uid)}doReset(){this.context.filterManager.refreshTargetsByFilter(this.uid)}getFilterValue(){var t,o,r,i;const n=this.subModels.field,l=n.getFilterValue?n.getFilterValue():(t=this.context.form)==null?void 0:t.getFieldValue(this.props.name);let a=l;if(!this.mounted){const d=import_lodash.default.isEmpty(l)?this.getDefaultValue():l;a=normalizeAssociationDefaultFilterValue(d,(o=this.subModels)==null?void 0:o.field)}const c=getDefaultOperator(this);a=this.normalizeAssociationFilterValue(a,n);const u=this.getCurrentOperatorMeta();if(u!=null&&u.noValue){const d=(i=(r=u==null?void 0:u.schema)==null?void 0:r["x-component-props"])==null?void 0:i.options;return Array.isArray(d)?a:!0}return normalizeFilterValueByOperator(c,a)}normalizeAssociationFilterValue(t,o){var r,i;if(t===null||typeof t>"u")return t;const n=(r=o==null?void 0:o.context)==null?void 0:r.collectionField;if(!(typeof(n==null?void 0:n.isAssociationField)=="function"?n.isAssociationField():n!=null&&n.target))return t;const l=(n==null?void 0:n.targetKey)||((i=n==null?void 0:n.targetCollection)==null?void 0:i.filterTargetKey)||"id";return Array.isArray(t)?t.length===0?t:t.map(a=>a&&typeof a=="object"?a[l]:a):typeof t=="object"?t==null?void 0:t[l]:t}getDefaultValue(){var t;return(t=this.getStepParams("filterFormItemSettings","initialValue"))==null?void 0:t.defaultValue}getValueProps(t){return this.context.blockModel.autoTriggerFilter&&(this.autoTriggerInitialized?(0,import_lodash.isEqual)(this.lastAutoTriggerValue,t)||(this.lastAutoTriggerValue=(0,import_lodash.cloneDeep)(t),this.debouncedDoFilter()):(this.autoTriggerInitialized=!0,this.lastAutoTriggerValue=(0,import_lodash.cloneDeep)(t))),{value:t,onKeyDown:this.handleEnterPress.bind(this),isRange:this.operator==="$dateBetween"}}renderItem(){const t=this.subModels.field;return(0,import_jsx_runtime.jsx)(import_flow_engine.FormItem,A(x({},this.props),{getValueProps:this.getValueProps.bind(this),children:(0,import_jsx_runtime.jsx)(import_flow_engine.FieldModelRenderer,{model:t})}))}}FilterFormItemModel.define({label:(0,import_flow_engine.tExpr)("Block list")});FilterFormItemModel.registerFlow({key:"filterFormItemSettings",sort:300,title:(0,import_flow_engine.tExpr)("Form item settings"),steps:{label:{title:(0,import_flow_engine.tExpr)("Label"),uiSchema:e=>({label:{"x-component":"Input","x-decorator":"FormItem","x-reactions":t=>{var o,r;const i=e.model,n=((o=i.collectionField)==null?void 0:o.title)||((r=e.filterField)==null?void 0:r.title);t.decoratorProps=A(x({},t.decoratorProps),{extra:i.context.t("Original field title: ")+n})}}}),defaultParams:e=>{var t,o;return{label:((t=e.collectionField)==null?void 0:t.title)||((o=e.filterField)==null?void 0:o.title)}},handler(e,t){var o;t.label&&t.label===((o=e.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,t){return V(this,null,function*(){var o;const r=e.model.collectionField;if(r!=null&&r.getComponentProps){const i=r.getComponentProps(),n=((o=e.model.subModels)==null?void 0:o.field)instanceof RecordSelectFieldModel,l=i||{},{rules:a,required:c,multiple:u,allowMultiple:d,maxCount:m}=l,p=ee(l,["rules","required","multiple","allowMultiple","maxCount"]);e.model.setProps(A(x({},n?p:A(x({},p),{multiple:u,allowMultiple:d,maxCount:m})),{rules:void 0,required:void 0}))}e.model.setProps({name:`${e.model.fieldPath}_${e.model.uid}`}),e.model.context.defineProperty("filterField",{value:t.filterField})})}},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})}},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"})})}},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;const r=((o=(t=e==null?void 0:e.model)==null?void 0:t.context)==null?void 0:o.flags)||{};return{defaultValue:{"x-component":"DefaultValue","x-decorator":"FormItem","x-component-props":{flags:A(x({},r),{isInSetDefaultValueDialog:!0})}}}},handler(e,t){e.model.setProps({initialValue:t.defaultValue})}},model:{use:"fieldComponent",title:(0,import_flow_engine.tExpr)("Field component"),uiMode(e){const t=import_flow_engine.FilterableItemModel.getBindingsByField(e,e.collectionField),o=e.t;return{type:"select",key:"use",props:{options:t.map(r=>({label:o(r.modelName),value:r.modelName}))}}},hideInSettings(e){if(import_flow_engine.FilterableItemModel.getBindingsByField(e,e.collectionField).length===1)return!0}},connectFields:{use:"connectFields"},defaultOperator:{use:"defaultOperator"},operatorComponentProps:{use:"operatorComponentProps"},customizeFilterRender:{use:"customizeFilterRender"}}});FilterFormItemModel.registerFlow({key:"fieldSettings",title:(0,import_flow_engine.tExpr)("Field settings"),steps:{init:{handler(e,t){}}}});class FilterFormGridModel extends GridModel{constructor(){super(...arguments),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}}}),R(this,"hiddenRows",{}),R(this,"loading",import_flow_engine.observable.ref(!1))}toggleFormFieldsCollapse(t,o){const r=this.props.rows||{};if(t){const i=Object.keys(r);if(i.length>o){const n=i.slice(0,o),l=i.slice(o);this.hiddenRows={},l.forEach(c=>{this.hiddenRows[c]=r[c]});const a={};n.forEach(c=>{a[c]=r[c]}),this.setProps("rows",a)}}else{const i=x(x({},r),this.hiddenRows);this.setProps("rows",i),this.hiddenRows={}}}onModelCreated(t){return V(this,null,function*(){if(!(t instanceof FilterFormItemModel))return;const{fieldPath:o}=t.getFieldSettingsInitParams(),r=getAllDataModels(t.context.blockGridModel).filter(i=>{var n;return(n=i.resource)!=null&&n.supportsFilter?i.uid===t.defaultTargetUid:!1});if(r.length>0){const i=r.map(n=>{var l,a,c;const u=n.collection||n.context.collection;if(u){let d;if(o!=null&&o.includes(".")){const m=`${u.dataSourceKey}.${u.name}.${o}`;d=(a=(l=n.context.dataSourceManager)==null?void 0:l.getCollectionField)==null?void 0:a.call(l,m)}if(d||(d=(c=u.getField)==null?void 0:c.call(u,o)),d!=null&&d.target)return{targetId:n.uid,filterPaths:[`${o}.${d.targetKey}`]}}return{targetId:n.uid,filterPaths:[o]}});yield this.context.filterManager.saveConnectFieldsConfig(t.uid,{targets:i})}})}renderAddSubModelButton(){var t,o,r;return this.loading.value?null:(0,import_jsx_runtime.jsx)(import_flow_engine.AddSubModelButton,{subModelKey:"items",model:this,afterSubModelInit:this.onModelCreated.bind(this),keepDropdownOpen:!0,subModelBaseClasses:["FilterFormItemModel","FilterFormCustomItemModel"],children:(0,import_jsx_runtime.jsx)(import_flow_engine.FlowSettingsButton,{icon:(0,import_jsx_runtime.jsx)(import_icons.SettingOutlined,{}),children:this.translate("Fields")})},(r=(o=(t=this.context.blockGridModel)==null?void 0:t.subModels)==null?void 0:o.items)==null?void 0:r.length)}}FilterFormGridModel.registerFlow({key:"filterFormGridSettings",steps:{grid:{handler(e,t){e.model.setProps("rowGap",0),e.model.setProps("colGap",16)}}}});class FilterFormJSActionModel extends FilterFormActionModel{}FilterFormJSActionModel.define({label:(0,import_flow_engine.tExpr)("JS action"),sort:9999});FilterFormJSActionModel.registerFlow({key:"clickSettings",on:"click",title:(0,import_flow_engine.tExpr)("Click settings"),steps:{runJs:{title:(0,import_flow_engine.tExpr)("Write JavaScript"),useRawParams:!0,uiSchema:{code:{type:"string","x-component":CodeEditor,"x-component-props":{minHeight:"400px",theme:"light",enableLinter:!0,wrapperStyle:{position:"fixed",inset:8}}}},uiMode:{type:"embed",props:{styles:{body:{transform:"translateX(0)"}}}},defaultParams(e){return{version:"v1",code:""}},handler(e,t){return V(this,null,function*(){const{code:o,version:r}=resolveRunJsParams(e,t),i=(0,import_flow_engine.createSafeNavigator)();yield e.runjs(o,{window:(0,import_flow_engine.createSafeWindow)({navigator:i}),document:(0,import_flow_engine.createSafeDocument)(),navigator:i},{version:r})})}}}});class FilterFormResetActionModel extends FilterFormActionModel{constructor(){super(...arguments),R(this,"defaultProps",{title:(0,import_flow_engine.tExpr)("Reset")})}}FilterFormResetActionModel.registerFlow({key:"resetSettings",on:{eventName:"click"},steps:{doReset:{handler(e,t){return V(this,null,function*(){const o=e.model.context.blockModel,r=o.subModels.grid.subModels.items;e.form.resetFields(),setTimeout(()=>{var i;(i=o.applyFormDefaultValues)==null||i.call(o,{force:!0}).finally(()=>{r.forEach(n=>{n.doReset()})})})})}}}});FilterFormResetActionModel.define({label:(0,import_flow_engine.tExpr)("Reset"),toggleable:!0,sort:200});class FilterFormSubmitActionModel extends FilterFormActionModel{constructor(){super(...arguments),R(this,"defaultProps",{title:(0,import_flow_engine.tExpr)("Filter"),type:"primary"})}onInit(t){super.onInit(t),this.context.blockModel.autoTriggerFilter=!1}onUnmount(){super.onUnmount(),this.context.blockModel.autoTriggerFilter=!0}}FilterFormSubmitActionModel.registerFlow({key:"submitSettings",on:{eventName:"click"},steps:{doFilter:{handler(e,t){return V(this,null,function*(){e.form.submit()})}}}});FilterFormSubmitActionModel.define({label:(0,import_flow_engine.tExpr)("Filter"),toggleable:!0,sort:100});const connectFields=(0,import_flow_engine.defineAction)({name:"connectFields",title:(0,import_flow_engine.tExpr)("Connect fields"),uiSchema(e){return{value:{type:"object","x-component":ConnectFields}}},beforeParamsSave(e,t){import_lodash.default.isEmpty(t.value)||e.model.context.filterManager.saveConnectFieldsConfig(e.model.uid,t.value),e.exit()},handler(e,t){}}),buildCascaderOptions=(e,t,o="",r=[],i="")=>{const n=r.filter(Boolean);return t.map(l=>{var a,c,u;const d=o?`${o}.${l.name}`:l.name,m=l.title||l.name,p=i?`${i} / ${m}`:m,h=!l.target,g={label:m,value:l.name,isLeaf:h,disableCheckbox:!h,meta:{field:l,fullPath:d,fullLabel:p}};if(!h&&n.some(f=>f&&f.startsWith(d+".")))if((c=(a=l.filterable)==null?void 0:a.children)!=null&&c.length)g.children=buildCascaderOptions(e,l.filterable.children,d,r,p);else{const f=l.targetCollection;if(f){const _=((u=f.getFields)==null?void 0:u.call(f))||[];g.children=buildCascaderOptions(e,_,d,r,p)}}return g}).sort((l,a)=>l.isLeaf&&!a.isLeaf?-1:!l.isLeaf&&a.isLeaf?1:0)};function ConnectFields(e){const t=(0,import_flow_engine.useFlowSettingsContext)(),o=(0,import_react2.useMemo)(()=>getAllDataModels(t.blockGridModel),[t.blockGridModel]),[r,i]=(0,import_react2.useState)(()=>t.model.context.filterManager.getConnectFieldsConfig(t.model.uid)),[n,l]=(0,import_react2.useState)({}),[a,c]=(0,import_react2.useState)({});import_react2.default.useEffect(()=>{V(this,null,function*(){var _;const v={},b=((r==null?void 0:r.targets)||[]).map(C=>C.targetId);for(const C of o.filter(y=>b.includes(y.uid))){const y=(yield(_=C.getFilterFields)==null?void 0:_.call(C))||[];v[C.uid]=y}l(v)})},[r==null?void 0:r.targets,o]);const u=(_,v)=>{c(b=>A(x({},b),{[_]:v}))},d=_=>a[_]||"field-select",m=(_,v)=>{var b;const C={};((r==null?void 0:r.targets)||[]).forEach(F=>{C[F.targetId]=F}),C[_]={targetId:_,filterPaths:v};const y=Object.values(C);(b=e.onChange)==null||b.call(e,{targets:y}),i({targets:y})},p=(_,v)=>{var b;const C={};((r==null?void 0:r.targets)||[]).forEach(F=>{C[F.targetId]=F}),v?C[_]={targetId:_,filterPaths:[]}:delete C[_];const y=Object.values(C);(b=e.onChange)==null||b.call(e,{targets:y}),i({targets:y})},h=_=>{var v;const b={};((r==null?void 0:r.targets)||[]).forEach(y=>{y.targetId!==_&&(b[y.targetId]=y)});const C=Object.values(b);(v=e.onChange)==null||v.call(e,{targets:C}),i({targets:C})},g=((r==null?void 0:r.targets)||[]).map(_=>_.targetId),f=o.filter(_=>{var v;return(v=_.resource)==null?void 0:v.supportsFilter}).map(_=>{const v=g.includes(_.uid);return{key:_.uid,label:(0,import_jsx_runtime.jsxs)("button",{type:"button",style:{display:"flex",justifyContent:"space-between",alignItems:"center",minWidth:"200px",border:"none",background:"none",padding:"0",width:"100%",cursor:"pointer"},onClick:b=>{b.stopPropagation(),p(_.uid,!v)},children:[(0,import_jsx_runtime.jsxs)("span",{style:{marginRight:"16px"},children:[_.title," #",_.uid.substring(0,4)]}),(0,import_jsx_runtime.jsx)(import_antd.Switch,{size:"small",checked:v})]})}});return(0,import_jsx_runtime.jsxs)("div",{children:[(0,import_jsx_runtime.jsxs)("div",{style:{marginBottom:"16px",padding:"12px",backgroundColor:"#f0f9ff",border:"1px solid #bae6fd",borderRadius:"6px",fontSize:"14px",color:"#0369a1"},children:[(0,import_jsx_runtime.jsx)("div",{style:{fontWeight:500,marginBottom:"8px"},children:t.t("Configuration:")}),(0,import_jsx_runtime.jsxs)("ul",{style:{margin:0,paddingLeft:"16px"},children:[(0,import_jsx_runtime.jsx)("li",{children:t.t('Available "target blocks" are all data blocks on the current page')}),(0,import_jsx_runtime.jsx)("li",{children:t.t("Support filtering multiple blocks simultaneously, support deep selection of relationship fields (e.g.: User/Department/Name)")})]})]}),o.filter(_=>g.includes(_.uid)&&n[_.uid]).sort((_,v)=>{const b=((r==null?void 0:r.targets)||[]).findIndex(y=>y.targetId===_.uid),C=((r==null?void 0:r.targets)||[]).findIndex(y=>y.targetId===v.uid);return b-C}).map(_=>{var v,b;const C=n[_.uid]||[],y=((b=(v=r==null?void 0:r.targets)==null?void 0:v.find(j=>j.targetId===_.uid))==null?void 0:b.filterPaths)||[],F=buildCascaderOptions(t,C,"",y,""),S=y.map(j=>j.split(".")),P=d(_.uid);return(0,import_jsx_runtime.jsx)(import_antd_v5.FormItem,{label:`${_.title} #${_.uid.substring(0,4)}`,children:(0,import_jsx_runtime.jsxs)("div",{style:{display:"flex",gap:"8px",alignItems:"center"},children:[(0,import_jsx_runtime.jsx)("div",{style:{flex:1},children:P==="field-select"?(0,import_jsx_runtime.jsx)(CascaderWrapper,{options:F,value:S,onChange:j=>{const I=(j||[]).map(D=>D.join("."));m(_.uid,I)},multiple:!0,allowClear:!0,placeholder:t.t("Please select fields to filter"),style:{width:"100%"},showSearch:{filter:(j,I)=>I.some(D=>(D.label||"").toString().toLowerCase().includes(j.toLowerCase()))}}):(0,import_jsx_runtime.jsx)(import_antd.Select,{mode:"tags",value:y,onChange:j=>m(_.uid,j),placeholder:t.t("Separate multiple values with comma or Enter"),style:{width:"100%"},allowClear:!0,tokenSeparators:[","],open:!1,suffixIcon:null})}),(0,import_jsx_runtime.jsx)(import_antd.Segmented,{value:P,onChange:j=>u(_.uid,j),options:[{label:t.t("Dropdown select"),value:"field-select"},{label:t.t("Text input"),value:"text-input"}]}),(0,import_jsx_runtime.jsx)(import_antd.Button,{type:"text",icon:(0,import_jsx_runtime.jsx)(import_icons.DeleteOutlined,{}),onClick:()=>h(_.uid),style:{color:"#8c8c8c"},title:t.t("Delete this target block")})]})},_.uid)}),(0,import_jsx_runtime.jsx)("div",{style:{marginTop:"16px"},children:(0,import_jsx_runtime.jsx)(import_antd.Dropdown,{menu:{items:f},trigger:["hover"],autoFocus:!1,children:(0,import_jsx_runtime.jsx)(import_antd.Button,{type:"dashed",icon:(0,import_jsx_runtime.jsx)(import_icons.PlusOutlined,{}),style:{width:"100%"},children:t.t("Add target block")})})})]})}function CascaderWrapper(e){const t=(0,import_flow_engine.useFlowSettingsContext)(),[o,r]=import_react2.default.useState(e.options||[]),i=import_react2.default.useMemo(()=>(e.options||[]).map(m=>{var p;return((p=m==null?void 0:m.meta)==null?void 0:p.fullPath)||(m==null?void 0:m.value)}).filter(Boolean).join("|"),[e.options]),n=(0,import_css.cx)(e.popupClassName,import_css.css`
|
|
2015
|
+
`,children:F.label}),dropdownRender:F=>{const S=f.some(P=>P[r.label]===h.searchText);return(0,import_jsx_runtime.jsx)(import_jsx_runtime.Fragment,{children:c==="quickAdd"&&d&&m&&h.searchText?(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[!(f.length===0&&h.searchText)&&F,f.length>0&&h.searchText&&!S&&(0,import_jsx_runtime.jsx)(import_antd.Divider,{style:{margin:0}}),!S&&(0,import_jsx_runtime.jsx)(C,{searchText:h.searchText})]}):F})}})),c==="modalAdd"&&(d&&m||v)&&(d&&m?(0,import_jsx_runtime.jsx)(import_antd.Button,{onClick:h.onModalAddClick,children:b("Add new")}):(0,import_jsx_runtime.jsx)(ActionWithoutPermission,{forbidden:{actionName:"create"},collection:(t=_==null?void 0:_.collectionField)==null?void 0:t.targetCollection,message:y,children:(0,import_jsx_runtime.jsx)(import_antd.Button,{onClick:h.onModalAddClick,disabled:!m,style:{opacity:"0.3"},children:b("Add new")})}))]})};class FilterFormCustomRecordSelectFieldModel extends RecordSelectFieldModel{constructor(){super(...arguments),R(this,"valueOptionsSyncKey",null),R(this,"valueOptionsSyncedKey",null),R(this,"valueOptionsSyncTask",null)}buildValueOptionsSyncKey(){var t,o,r,i,n,l,a,c,u,d,m,p,h;if((((t=this.props)==null?void 0:t.valueMode)||"record")!=="value")return null;const g=((o=this.props)==null?void 0:o.fieldNames)||{},f=((i=(r=this.context.collectionField)==null?void 0:r.targetCollection)==null?void 0:i.filterTargetKey)||"id",_=(g==null?void 0:g.value)||"id",v=!!((n=this.props)!=null&&n.multiple&&(l=this.props)!=null&&l.allowMultiple),b=resolveOptions((a=this.props)==null?void 0:a.options,(c=this.props)==null?void 0:c.value,v),C=(p=(m=(d=(u=this.context.collectionField)==null?void 0:u.targetCollection)==null?void 0:d.getField)==null?void 0:m.call(d,f))==null?void 0:p.type,y=normalizePrimaryKeys((h=this.props)==null?void 0:h.value,b,f,_,v,C);if(!y.length)return null;const F=new Set(b.map(P=>P==null?void 0:P[f]).filter(P=>P!=null)),S=y.filter(P=>!F.has(P));return S.length?`${f}::${S.slice().sort().join(",")}`:null}ensureValueOptionsSynced(){const t=this.buildValueOptionsSyncKey();t&&t!==this.valueOptionsSyncedKey&&(this.valueOptionsSyncTask&&this.valueOptionsSyncKey===t||(this.valueOptionsSyncKey=t,this.valueOptionsSyncTask=this.applyFlow("syncValueOptions").then(()=>{this.valueOptionsSyncedKey=t}).finally(()=>{this.valueOptionsSyncKey===t&&(this.valueOptionsSyncTask=null)})))}onDispatchEventStart(t){return V(this,null,function*(){t==="beforeRender"&&this.ensureValueOptionsSynced()})}getFilterValue(){var t,o;if((this.props.valueMode||"record")==="value"){const r=((o=(t=this.props)==null?void 0:t.fieldNames)==null?void 0:o.value)||"id",i=n=>{var l;return n==null?n:typeof n=="object"?(l=n==null?void 0:n[r])!=null?l:n==null?void 0:n.value:n};return Array.isArray(this.props.value)?this.props.value.map(n=>i(n)).filter(n=>n!=null&&n!==""):i(this.props.value)}return super.getFilterValue()}render(){return this.context.isMobileLayout?(0,import_jsx_runtime.jsx)(MobileLazySelect,A(x({},this.props),{loading:this.resource.loading})):(0,import_jsx_runtime.jsx)(FilterFormLazySelect,x({},this.props))}}FilterFormCustomRecordSelectFieldModel.registerFlow({key:"syncValueOptions",sort:780,steps:{syncByValue:{handler(e){return V(this,null,function*(){var t,o,r,i,n,l,a,c,u,d,m,p,h,g,f;if((((t=e.model.props)==null?void 0:t.valueMode)||"record")!=="value")return;const _=((o=e.model.props)==null?void 0:o.fieldNames)||{},v=((i=(r=e.model.context.collectionField)==null?void 0:r.targetCollection)==null?void 0:i.filterTargetKey)||"id",b=(_==null?void 0:_.value)||"id",C=!!((n=e.model.props)!=null&&n.multiple&&(l=e.model.props)!=null&&l.allowMultiple),y=resolveOptions((a=e.model.props)==null?void 0:a.options,(c=e.model.props)==null?void 0:c.value,C),F=(p=(m=(d=(u=e.model.context.collectionField)==null?void 0:u.targetCollection)==null?void 0:d.getField)==null?void 0:m.call(d,v))==null?void 0:p.type,S=normalizePrimaryKeys((h=e.model.props)==null?void 0:h.value,y,v,b,C,F);if(!S.length)return;const P=new Set(y.map(E=>E==null?void 0:E[v]).filter(E=>E!=null)),j=S.filter(E=>!P.has(E));if(!j.length)return;const I=e.model.resource;if(!I||typeof(I==null?void 0:I.addFilterGroup)!="function"||typeof(I==null?void 0:I.refresh)!="function")return;const D=j.length===1?{[`${v}.$eq`]:j[0]}:{[`${v}.$in`]:j};try{I.addFilterGroup(FILTER_FORM_VALUE_OPTIONS_GROUP,D),yield I.refresh();const E=((g=I.getData)==null?void 0:g.call(I))||[];if(!Array.isArray(E)||!E.length)return;const T=mergeOptionsByValue(y,E,v);if(!(T.length!==y.length||T.some((k,w)=>{var B;return(k==null?void 0:k[v])!==((B=y==null?void 0:y[w])==null?void 0:B[v])})))return;e.model.setDataSource(T)}finally{(f=I.removeFilterGroup)==null||f.call(I,FILTER_FORM_VALUE_OPTIONS_GROUP)}})}}}});FilterFormCustomRecordSelectFieldModel.registerFlow({key:"selectSettings",title:(0,import_flow_engine.tExpr)("Association select settings"),sort:800,steps:{fieldNames:{use:"titleField"},valueFieldOverride:{handler(e){const t=e.model.props.recordSelectValueField;if(!t)return;const o=A(x({},e.model.props.fieldNames||{}),{value:t});e.model.setProps({fieldNames:o})}},dataScope:{use:"dataScope"},sortingRule:{use:"sortingRule"},allowMultiple:{title:(0,import_flow_engine.tExpr)("Multiple"),uiMode:{type:"switch",key:"allowMultiple"},hideInSettings(e){return!e.collectionField||!["belongsToMany","hasMany","belongsToArray"].includes(e.collectionField.type)},defaultParams(e){return typeof e.model.props.allowMultiple=="boolean"?{allowMultiple:e.model.props.allowMultiple}:{allowMultiple:e.collectionField&&["belongsToMany","hasMany","belongsToArray"].includes(e.model.context.collectionField.type)}},handler(e,t){var o,r;const i=((r=(o=e==null?void 0:e.blockModel)==null?void 0:o.constructor)==null?void 0:r.scene)===BlockSceneEnum.filter,n=typeof e.model.props.allowMultiple=="boolean"?e.model.props.allowMultiple:t==null?void 0:t.allowMultiple;if(i&&typeof n=="boolean"){e.model.setProps({allowMultiple:n,multiple:n});return}e.model.setProps({allowMultiple:t==null?void 0:t.allowMultiple,multiple:t==null?void 0:t.allowMultiple})}},quickCreate:{title:(0,import_flow_engine.tExpr)("Quick create"),uiMode(e){const t=e.t;return{type:"select",key:"quickCreate",props:{options:[{label:t("None"),value:"none"},{label:t("Dropdown"),value:"quickAdd"},{label:t("Pop-up"),value:"modalAdd"}]}}},hideInSettings(e){var t,o;return((o=(t=e==null?void 0:e.blockModel)==null?void 0:t.constructor)==null?void 0:o.scene)===BlockSceneEnum.filter},defaultParams:{quickCreate:"none"},handler(e,t){e.model.setProps({quickCreate:t.quickCreate})}}}});class FilterFormActionModel extends ActionModel{}class FilterFormActionGroupModel extends ActionGroupModel{}R(FilterFormActionGroupModel,"baseClass",FilterFormActionModel);const FILTER_FORM_FLOW_KEYS=["filterFormItemSettings"],getLegacyFilterFormItemInitialValue=createLegacyValueExtractor(FILTER_FORM_FLOW_KEYS),clearLegacyFilterFormItemInitialValue=createLegacyClearer(FILTER_FORM_FLOW_KEYS);function collectLegacyDefaultValueRulesFromFilterFormModel(e){return collectLegacyDefaultValueRules(e,getLegacyFilterFormItemInitialValue)}function clearLegacyDefaultValuesFromFilterFormModel(e){return clearLegacyDefaultValues(e,getLegacyFilterFormItemInitialValue,clearLegacyFilterFormItemInitialValue)}const Ge=class qe extends FilterBlockModel{constructor(){super(...arguments),R(this,"autoTriggerFilter",!0),R(this,"removeTargetBlockListener")}get form(){return this.context.form}get title(){return"Filter form"}useHooksBeforeRender(){const[t]=import_antd.Form.useForm();this.context.defineProperty("form",{get:()=>t,cache:!1})}saveStepParams(){return V(this,null,function*(){return yield saveStepParamsWithSubModelsIfNeeded(this,()=>V(this,null,function*(){return yield Ee(qe.prototype,this,"saveStepParams").call(this)}))})}addAppends(){}onInit(t){super.onInit(t),this.context.defineProperty("blockModel",{value:this}),this.context.defineMethod("refreshTargets",()=>V(this,null,function*(){const o=this.subModels.grid.subModels.items;o&&o.forEach(r=>{var i;(i=r==null?void 0:r.doFilter)==null||i.call(r)})}))}onMount(){super.onMount(),this.context.defineProperty("filterFormGridModel",{value:this.subModels.grid}),this.applyDefaultsAndInitialFilter();const t=this.context.blockGridModel;if(t!=null&&t.emitter){const o=r=>{!(r!=null&&r.uid)||r.uid===this.uid||this.handleTargetBlockRemoved(r.uid)};t.emitter.on("onSubModelRemoved",o),this.removeTargetBlockListener=()=>t.emitter.off("onSubModelRemoved",o)}}onUnmount(){var t;(t=this.removeTargetBlockListener)==null||t.call(this),super.onUnmount()}applyDefaultsAndInitialFilter(){return V(this,null,function*(){var t,o;yield this.ensureFilterItemsBeforeRender(),yield this.applyFormDefaultValues(),yield(o=(t=this.context).refreshTargets)==null?void 0:o.call(t)})}ensureFilterItemsBeforeRender(){return V(this,null,function*(){var t,o;const r=(t=this.subModels)==null?void 0:t.grid,i=((o=r==null?void 0:r.subModels)==null?void 0:o.items)||[];if(!(!Array.isArray(i)||i.length===0))for(const n of i)typeof(n==null?void 0:n.dispatchEvent)=="function"&&(yield n.dispatchEvent("beforeRender"))})}applyFormDefaultValues(t){return V(this,null,function*(){var o,r,i,n,l,a,c,u;const d=this.form;if(!d)return;const m=(t==null?void 0:t.force)===!0,p=(o=this.getStepParams)==null?void 0:o.call(this,"formFilterBlockModelSettings","defaultValues"),h=(p==null?void 0:p.value)||[];if(!Array.isArray(h)||h.length===0)return;const g=f=>V(this,null,function*(){var _,v;if((0,import_flow_engine.isRunJSValue)(f)){const{code:b,version:C}=(0,import_flow_engine.normalizeRunJSValue)(f),y=yield(0,import_flow_engine.runjsWithSafeGlobals)(this.context,b,{version:C});return y!=null&&y.success?y.value:void 0}return yield(v=(_=this.context).resolveJsonTemplate)==null?void 0:v.call(_,f)});for(const f of h){if(!f||typeof f!="object"||f.enable===!1||f.mode&&String(f.mode)!=="default")continue;const _=f.targetPath?String(f.targetPath).trim():"",v=f.field?String(f.field).trim():"",b=(l=_?findFormItemModelByFieldPath(this,_):null)!=null?l:v?(n=(i=(r=this.context)==null?void 0:r.engine)==null?void 0:i.getModel)==null?void 0:n.call(i,v):null;if(!b)continue;const C=typeof b.getProps=="function"?b.getProps():b.props,y=(a=C==null?void 0:C.name)!=null?a:b.fieldPath?`${b.fieldPath}_${b.uid}`:void 0;if(!y)continue;const F=(c=d.getFieldValue)==null?void 0:c.call(d,y);if(!m&&!isEmptyValue(F))continue;const S=yield g(f.value);if(typeof S>"u")continue;const P=getDefaultOperator(b),j=normalizeFilterValueByOperator(P,S);typeof d.setFieldValue=="function"?d.setFieldValue(y,j):(u=d.setFieldsValue)==null||u.call(d,{[String(y)]:j})}})}handleTargetBlockRemoved(t){return V(this,null,function*(){const o=this.context.filterManager,r=this.subModels.grid.subModels.items||[];for(const i of[...r]){const n=o.getConnectFieldsConfig(i.uid),l=(n==null?void 0:n.targets)||[],a=l.some(d=>d.targetId===t),c=i.defaultTargetUid===t;if(!a&&!c)continue;const u=l.filter(d=>d.targetId!==t);if(u.length>0){yield o.saveConnectFieldsConfig(i.uid,{targets:u});continue}yield o.removeFilterConfig({filterId:i.uid}),yield i.destroy()}})}destroy(){return V(this,null,function*(){var t;const o=this.context.filterManager;return(t=this.subModels.grid.subModels.items)==null||t.map(r=>{o.removeFilterConfig({filterId:r.uid,persist:!1})}),yield Ee(qe.prototype,this,"destroy").call(this)})}renderComponent(){const{colon:t,labelAlign:o,labelWidth:r,labelWrap:i,layout:n}=this.props,l=!!this.context.flowSettingsEnabled;return(0,import_jsx_runtime.jsxs)(FormComponent,{model:this,onFinish:()=>{this.context.refreshTargets()},layoutProps:{colon:t,labelAlign:o,labelWidth:r,labelWrap:i,layout:n},children:[(0,import_jsx_runtime.jsx)(import_flow_engine.FlowModelRenderer,{model:this.subModels.grid,showFlowSettings:!1}),(0,import_jsx_runtime.jsx)(import_flow_engine.DndProvider,{children:(0,import_jsx_runtime.jsxs)(import_antd_v5.FormButtonGroup,{align:"right",children:[this.mapSubModels("actions",a=>{if(!(a.hidden&&!l))return(0,import_jsx_runtime.jsx)(import_flow_engine.Droppable,{model:a,children:(0,import_jsx_runtime.jsx)(import_flow_engine.FlowModelRenderer,{model:a,showFlowSettings:{showBackground:!1,showBorder:!1,toolbarPosition:"above"},extraToolbarItems:[{key:"drag-handler",component:import_flow_engine.DragHandler,sort:1}]},a.uid)},a.uid)}),(0,import_jsx_runtime.jsx)(import_flow_engine.AddSubModelButton,{model:this,subModelKey:"actions",subModelBaseClass:"FilterFormActionGroupModel",children:(0,import_jsx_runtime.jsx)(import_flow_engine.FlowSettingsButton,{icon:(0,import_jsx_runtime.jsx)(import_icons.SettingOutlined,{}),children:this.translate("Actions")})},"filter-form-actions-add")]})})]})}};R(Ge,"scene",BlockSceneEnum.filter);let FilterFormBlockModel=Ge;FilterFormBlockModel.define({label:(0,import_flow_engine.tExpr)("Form"),createModelOptions:{use:"FilterFormBlockModel",subModels:{grid:{use:"FilterFormGridModel"}}}});FilterFormBlockModel.registerFlow({key:"formFilterBlockModelSettings",title:(0,import_flow_engine.tExpr)("Form settings"),steps:{layout:{use:"layout",title:(0,import_flow_engine.tExpr)("Layout")},defaultValues:{use:"filterFormDefaultValues",title:(0,import_flow_engine.tExpr)("Field values"),beforeParamsSave(e){const t=clearLegacyDefaultValuesFromFilterFormModel(e.model);Array.isArray(t)&&t.length&&markSaveStepParamsWithSubModels(e.model)},afterParamsSave(e){var t,o;(o=(t=e.model)==null?void 0:t.applyFormDefaultValues)==null||o.call(t,{force:!0}).then(()=>{var r,i,n;return(n=(i=(r=e.model)==null?void 0:r.context)==null?void 0:i.refreshTargets)==null?void 0:n.call(i)})}}}});FilterFormBlockModel.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}});const collapseState=(0,import_reactive.observable)({collapsed:!1}),CollapseButton=(0,import_flow_engine.observer)(()=>{const e=(0,import_flow_engine.useFlowModel)(),t=x(x({},e.defaultProps),e.props),o=()=>{e.dispatchEvent("collapseToggle")};return(0,import_jsx_runtime.jsx)(import_antd.Button,A(x({},t),{onClick:o,icon:(0,import_jsx_runtime.jsx)(import_icons.DownOutlined,{rotate:collapseState.collapsed?0:180}),iconPosition:"end",children:collapseState.collapsed?e.translate("Expand button"):e.translate("Collapse button")}))});class FilterFormCollapseActionModel extends FilterFormActionModel{constructor(){super(...arguments),R(this,"defaultProps",{type:"link"}),R(this,"enableEditTitle",!1),R(this,"enableEditIcon",!1)}onMount(){var t,o;super.onMount();const r=((t=this.getStepParams("collapseSettings","defaultCollapsed"))==null?void 0:t.value)||!1,i=((o=this.getStepParams("collapseSettings","toggle"))==null?void 0:o.collapsedRows)||1;collapseState.collapsed=r,this.context.filterFormGridModel.toggleFormFieldsCollapse(collapseState.collapsed,i)}render(){return(0,import_jsx_runtime.jsx)(CollapseButton,{})}}FilterFormCollapseActionModel.registerFlow({key:"collapseSettings",title:(0,import_flow_engine.tExpr)("Collapse settings"),on:"collapseToggle",steps:{toggle:{title:(0,import_flow_engine.tExpr)("Collapsed rows"),uiSchema:{collapsedRows:{type:"number","x-decorator":"FormItem","x-component":import_antd.InputNumber,"x-component-props":{min:1,max:10,placeholder:(0,import_flow_engine.tExpr)("Enter number of rows to display")},default:1}},handler(e,t){return V(this,null,function*(){const o=t.collapsedRows||1;collapseState.collapsed=!collapseState.collapsed,e.model.context.filterFormGridModel.toggleFormFieldsCollapse(collapseState.collapsed,o)})}},defaultCollapsed:{title:(0,import_flow_engine.tExpr)("Default collapsed"),uiSchema:{value:{type:"boolean","x-decorator":"FormItem","x-component":"Switch"}},beforeParamsSave(e,t){var o;const r=t.value||!1;collapseState.collapsed=r;const i=((o=e.model.getStepParams("collapseSettings","toggle"))==null?void 0:o.collapsedRows)||1;e.model.context.filterFormGridModel.toggleFormFieldsCollapse(collapseState.collapsed,i)},handler(e,t){}}}});FilterFormCollapseActionModel.define({label:(0,import_flow_engine.tExpr)("Collapse button"),toggleable:!0,sort:300});FilterFormCollapseActionModel.registerEvents({collapseToggle:{title:(0,import_flow_engine.tExpr)("Collapse / Expand toggle"),name:"collapseToggle",uiSchema:{condition:{type:"object",title:(0,import_flow_engine.tExpr)("Trigger condition"),"x-decorator":"FormItem","x-component":ConditionBuilder}},handler:commonConditionHandler}});const getAssociationTargetCollection=(e,t,o)=>{var r,i,n;if(e!=null&&e.targetCollection)return e.targetCollection;const l=e==null?void 0:e.target;if(!l)return;if((r=t==null?void 0:t.dataSource)!=null&&r.getCollection)return t.dataSource.getCollection(l);const a=t==null?void 0:t.dataSourceKey;if(a&&(n=(i=o==null?void 0:o.context)==null?void 0:i.dataSourceManager)!=null&&n.getCollection)return o.context.dataSourceManager.getCollection(a,l)},getTargetFilterableFields=(e,t,o)=>{const r=getAssociationTargetCollection(e,t,o);return r!=null&&r.getFields?(r.getFields()||[]).filter(i=>i==null?void 0:i.filterable):[]},MAX_ASSOCIATION_DEPTH=5,normalizeAssociationDefaultFilterValue=(e,t)=>{var o,r,i,n,l;const a=(o=t==null?void 0:t.context)==null?void 0:o.collectionField;if(!((r=a==null?void 0:a.isAssociationField)!=null&&r.call(a)))return e;const c=((i=t==null?void 0:t.props)==null?void 0:i.fieldNames)||(a==null?void 0:a.fieldNames)||{},u=(c==null?void 0:c.value)||(a==null?void 0:a.targetKey)||((n=a==null?void 0:a.targetCollection)==null?void 0:n.filterTargetKey)||((l=a==null?void 0:a.collection)==null?void 0:l.filterTargetKey)||"id",d=m=>{const p=m&&typeof m=="object"&&typeof(m==null?void 0:m.data)<"u"?m.data:m;return!p||typeof p!="object"?p:typeof(p==null?void 0:p[u])<"u"?p[u]:typeof(p==null?void 0:p.id)<"u"?p.id:typeof(p==null?void 0:p.value)<"u"?p.value:p};return Array.isArray(e)?e.map(d):d(e)},buildVirtualFilterCollectionField=(e,t)=>{var o,r,i;if(!t)return;const n=(t==null?void 0:t.title)||(t==null?void 0:t.name),l=t==null?void 0:t.interface,a=l?(i=(r=(o=e==null?void 0:e.dataSourceManager)==null?void 0:o.collectionFieldInterfaceManager)==null?void 0:r.getFieldInterface)==null?void 0:i.call(r,l):void 0;return A(x({},t),{title:n,uiSchema:A(x({},(t==null?void 0:t.uiSchema)||{}),{title:n}),filterable:(t==null?void 0:t.filterable)||(a==null?void 0:a.filterable),isAssociationField:typeof(t==null?void 0:t.isAssociationField)=="function"?t.isAssociationField:()=>!!(t!=null&&t.target),getComponentProps:typeof(t==null?void 0:t.getComponentProps)=="function"?t.getComponentProps:()=>({})})},buildFilterFormFieldItem=({model:e,collection:t,ctxWithFlags:o,field:r,fieldPath:i,labelPrefix:n})=>{var l,a;const c=import_flow_engine.FilterableItemModel.getDefaultBindingByField(o,r);if(!c)return;const u=(typeof(r==null?void 0:r.isAssociationField)=="function"?r.isAssociationField():r!=null&&r.target)&&(a=(l=o.engine)==null?void 0:l.getModelClass)!=null&&a.call(l,"FilterFormRecordSelectFieldModel")?"FilterFormRecordSelectFieldModel":c.modelName,d=r.title||r.name,m=n?`${n} / ${d}`:d;return{key:i,label:m,useModel:"FilterFormItemModel",refreshTargets:["FilterFormCustomItemModel"],createModelOptions:()=>({use:"FilterFormItemModel",stepParams:{fieldSettings:{init:{dataSourceKey:t==null?void 0:t.dataSourceKey,collectionName:t==null?void 0:t.name,fieldPath:i}},filterFormItemSettings:{init:{filterField:import_lodash.default.pick(r,["name","title","interface","type"]),defaultTargetUid:e.uid}}},subModels:{field:{use:u,props:typeof c.defaultProps=="function"?c.defaultProps(e.context,r):c.defaultProps}}})}},buildAssociationFieldMenuItem=({model:e,collection:t,ctxWithFlags:o,field:r,fieldPath:i,depth:n})=>{var l;if(!getAssociationTargetCollection(r,t,e)||n>MAX_ASSOCIATION_DEPTH)return;const a=r.title||r.name,c=((l=e.context)==null?void 0:l.t)||(o==null?void 0:o.t)||(u=>u);return{key:`${i}-associationField`,label:a,children:()=>V(void 0,null,function*(){const u=getTargetFilterableFields(r,t,e),d=[],m=[];u.forEach(h=>{const g=`${i}.${h.name}`;if(h!=null&&h.targetCollection){const _=buildAssociationFieldMenuItem({model:e,collection:t,ctxWithFlags:o,field:h,fieldPath:g,depth:n+1});_&&m.push(_);return}const f=buildFilterFormFieldItem({model:e,collection:t,ctxWithFlags:o,field:h,fieldPath:g});f&&d.push(f)});const p=[];return d.length&&p.push({key:`${i}-fields`,label:c("Fields"),type:"group",searchable:!0,searchPlaceholder:c("Search fields"),children:d}),m.length&&p.push({key:`${i}-relation-fields`,label:c("Association fields"),type:"group",searchable:!0,searchPlaceholder:c("Search association fields"),children:m}),p.length?p:[{key:`${i}-empty`,label:(0,import_jsx_runtime.jsx)(import_antd.Empty,{style:{width:140},description:c("No data"),image:import_antd.Empty.PRESENTED_IMAGE_SIMPLE}),disabled:!0}]})}},getModelFieldGroups=e=>V(void 0,null,function*(){var t,o;const r=e.collection||e.context.collection,i=(yield(t=e==null?void 0:e.getFilterFields)==null?void 0:t.call(e))||[],n=new import_flow_engine.FlowModelContext(e);n.addDelegate(e.context),n.defineProperty("flags",{value:A(x({},(o=e.context)==null?void 0:o.flags),{isInFilterFormBlock:!0})});const l=[],a=[];return i.forEach(c=>{const u=c.name,d=buildFilterFormFieldItem({model:e,collection:r,ctxWithFlags:n,field:c,fieldPath:u});if(d&&l.push(d),c!=null&&c.targetCollection){const m=buildAssociationFieldMenuItem({model:e,collection:r,ctxWithFlags:n,field:c,fieldPath:u,depth:1});m&&a.push(m)}}),{baseItems:l.filter(Boolean),relationItems:a.filter(Boolean)}});class FilterFormItemModel extends import_flow_engine.FilterableItemModel{constructor(){super(...arguments),R(this,"operator"),R(this,"mounted",!1),R(this,"debouncedDoFilter"),R(this,"lastAutoTriggerValue"),R(this,"autoTriggerInitialized",!1),R(this,"handleEnterPress",t=>{(t.key==="Enter"||t.keyCode===13)&&(t.preventDefault(),this.doFilter())})}static defineChildren(t){const o=t.blockGridModel;if(!o)return[];const r=getAllDataModels(o);return r.length===0?[{key:"no-data-blocks",label:(0,import_jsx_runtime.jsx)(import_antd.Empty,{style:{width:140},description:t.t("Please add a data block on the page first"),image:import_antd.Empty.PRESENTED_IMAGE_SIMPLE}),disabled:!0}]:r.map(i=>({key:i.uid,label:(0,import_jsx_runtime.jsx)("span",{style:{margin:"-5px -24px -5px -12px",padding:"5px 24px 5px 12px"},onMouseEnter:()=>{var n;const l=(n=i.context.ref)==null?void 0:n.current;l instanceof HTMLElement&&(l.style.outline=`2px solid ${i.context.themeToken.colorPrimaryBorder}`)},onMouseLeave:()=>{var n;const l=(n=i.context.ref)==null?void 0:n.current;l instanceof HTMLElement&&(l.style.outline="none")},children:`${i.title} #${i.uid.substring(0,4)}`}),children:()=>V(this,null,function*(){const{baseItems:n,relationItems:l}=yield getModelFieldGroups(i),a=[{key:"fields",label:t.t("Fields"),type:"group",searchable:!0,searchPlaceholder:t.t("Search fields"),children:n}];return l.length&&a.push({key:"relation-fields",label:t.t("Association fields"),type:"group",searchable:!0,searchPlaceholder:t.t("Search association fields"),children:l}),[...a]})}))}get defaultTargetUid(){return this.getStepParams("filterFormItemSettings","init").defaultTargetUid}getCurrentOperatorMeta(){var t,o;const r=getDefaultOperator(this);if(!r)return null;const i=(o=(t=this.collectionField)==null?void 0:t.filterable)==null?void 0:o.operators;return Array.isArray(i)&&i.find(n=>n.value===r)||null}onInit(t){var o;super.onInit(t),this.debouncedDoFilter=(0,import_lodash.debounce)(this.doFilter.bind(this),300);const r=(o=this.getStepParams("filterFormItemSettings","init"))==null?void 0:o.filterField;r&&this.context.defineProperty("filterField",{value:A(x({},r),{title:(r==null?void 0:r.title)||(r==null?void 0:r.name)})})}onMount(){super.onMount(),this.mounted=!0}onUnmount(){super.onUnmount(),this.debouncedDoFilter.cancel()}doFilter(){this.context.filterManager.refreshTargetsByFilter(this.uid)}doReset(){this.context.filterManager.refreshTargetsByFilter(this.uid)}getFilterValue(){var t,o,r,i;const n=this.subModels.field,l=n.getFilterValue?n.getFilterValue():(t=this.context.form)==null?void 0:t.getFieldValue(this.props.name);let a=l;if(!this.mounted){const d=import_lodash.default.isEmpty(l)?this.getDefaultValue():l;a=normalizeAssociationDefaultFilterValue(d,(o=this.subModels)==null?void 0:o.field)}const c=getDefaultOperator(this);a=this.normalizeAssociationFilterValue(a,n);const u=this.getCurrentOperatorMeta();if(u!=null&&u.noValue){const d=(i=(r=u==null?void 0:u.schema)==null?void 0:r["x-component-props"])==null?void 0:i.options;return Array.isArray(d)?a:!0}return normalizeFilterValueByOperator(c,a)}normalizeAssociationFilterValue(t,o){var r,i;if(t===null||typeof t>"u")return t;const n=(r=o==null?void 0:o.context)==null?void 0:r.collectionField;if(!(typeof(n==null?void 0:n.isAssociationField)=="function"?n.isAssociationField():n!=null&&n.target))return t;const l=(n==null?void 0:n.targetKey)||((i=n==null?void 0:n.targetCollection)==null?void 0:i.filterTargetKey)||"id";return Array.isArray(t)?t.length===0?t:t.map(a=>a&&typeof a=="object"?a[l]:a):typeof t=="object"?t==null?void 0:t[l]:t}getDefaultValue(){var t;return(t=this.getStepParams("filterFormItemSettings","initialValue"))==null?void 0:t.defaultValue}getValueProps(t){return this.context.blockModel.autoTriggerFilter&&(this.autoTriggerInitialized?(0,import_lodash.isEqual)(this.lastAutoTriggerValue,t)||(this.lastAutoTriggerValue=(0,import_lodash.cloneDeep)(t),this.debouncedDoFilter()):(this.autoTriggerInitialized=!0,this.lastAutoTriggerValue=(0,import_lodash.cloneDeep)(t))),{value:t,onKeyDown:this.handleEnterPress.bind(this),isRange:this.operator==="$dateBetween"}}renderItem(){const t=this.subModels.field;return(0,import_jsx_runtime.jsx)(import_flow_engine.FormItem,A(x({},this.props),{getValueProps:this.getValueProps.bind(this),children:(0,import_jsx_runtime.jsx)(import_flow_engine.FieldModelRenderer,{model:t})}))}}FilterFormItemModel.define({label:(0,import_flow_engine.tExpr)("Block list")});FilterFormItemModel.registerFlow({key:"filterFormItemSettings",sort:300,title:(0,import_flow_engine.tExpr)("Form item settings"),steps:{label:{title:(0,import_flow_engine.tExpr)("Label"),uiSchema:e=>({label:{"x-component":"Input","x-decorator":"FormItem","x-reactions":t=>{var o,r,i;const n=e.model,l=((o=n.collectionField)==null?void 0:o.title)||((r=e.filterField)==null?void 0:r.title)||((i=e.filterField)==null?void 0:i.name)||n.fieldPath;t.decoratorProps=A(x({},t.decoratorProps),{extra:n.context.t("Original field title: ")+l})}}}),defaultParams:e=>{var t,o,r;return{label:((t=e.collectionField)==null?void 0:t.title)||((o=e.filterField)==null?void 0:o.title)||((r=e.filterField)==null?void 0:r.name)}},handler(e,t){var o,r,i;const n=((o=e.collectionField)==null?void 0:o.title)||((r=e.filterField)==null?void 0:r.title)||((i=e.filterField)==null?void 0:i.name);t.label&&t.label===n?e.model.setProps({label:t.label}):e.model.setProps({label:e.t(t.label,{ns:"lm-flow-engine"})})}},init:{handler(e,t){return V(this,null,function*(){var o,r,i,n,l;const a=t.filterField?A(x({},t.filterField),{title:((o=t.filterField)==null?void 0:o.title)||((r=t.filterField)==null?void 0:r.name)}):t.filterField;e.model.context.defineProperty("filterField",{value:a}),e.model.setProps({name:`${e.model.fieldPath}_${e.model.uid}`});let c=e.model.collectionField;const u=((n=(i=e.model).getFieldSettingsInitParams)==null?void 0:n.call(i))||{};if(!(u!=null&&u.dataSourceKey&&u!=null&&u.collectionName)&&!c&&a){const d=buildVirtualFilterCollectionField(e,a);d&&(e.model.context.defineProperty("collectionField",{value:d}),c=d)}if(c!=null&&c.getComponentProps){const d=c.getComponentProps(),m=((l=e.model.subModels)==null?void 0:l.field)instanceof RecordSelectFieldModel,p=d||{},{rules:h,required:g,multiple:f,allowMultiple:_,maxCount:v}=p,b=ee(p,["rules","required","multiple","allowMultiple","maxCount"]);e.model.setProps(A(x({},m?b:A(x({},b),{multiple:f,allowMultiple:_,maxCount:v})),{rules:void 0,required:void 0}))}})}},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})}},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"})})}},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;const r=((o=(t=e==null?void 0:e.model)==null?void 0:t.context)==null?void 0:o.flags)||{};return{defaultValue:{"x-component":"DefaultValue","x-decorator":"FormItem","x-component-props":{flags:A(x({},r),{isInSetDefaultValueDialog:!0})}}}},handler(e,t){e.model.setProps({initialValue:t.defaultValue})}},model:{use:"fieldComponent",title:(0,import_flow_engine.tExpr)("Field component"),uiMode(e){const t=import_flow_engine.FilterableItemModel.getBindingsByField(e,e.collectionField),o=e.t;return{type:"select",key:"use",props:{options:t.map(r=>({label:o(r.modelName),value:r.modelName}))}}},hideInSettings(e){if(import_flow_engine.FilterableItemModel.getBindingsByField(e,e.collectionField).length===1)return!0}},connectFields:{use:"connectFields"},defaultOperator:{use:"defaultOperator"},operatorComponentProps:{use:"operatorComponentProps"},customizeFilterRender:{use:"customizeFilterRender"}}});FilterFormItemModel.registerFlow({key:"fieldSettings",title:(0,import_flow_engine.tExpr)("Field settings"),steps:{init:{handler(e,t){}}}});class FilterFormGridModel extends GridModel{constructor(){super(...arguments),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}}}),R(this,"hiddenRows",{}),R(this,"loading",import_flow_engine.observable.ref(!1))}toggleFormFieldsCollapse(t,o){const r=this.props.rows||{};if(t){const i=Object.keys(r);if(i.length>o){const n=i.slice(0,o),l=i.slice(o);this.hiddenRows={},l.forEach(c=>{this.hiddenRows[c]=r[c]});const a={};n.forEach(c=>{a[c]=r[c]}),this.setProps("rows",a)}}else{const i=x(x({},r),this.hiddenRows);this.setProps("rows",i),this.hiddenRows={}}}onModelCreated(t){return V(this,null,function*(){if(!(t instanceof FilterFormItemModel))return;const{fieldPath:o}=t.getFieldSettingsInitParams(),r=getAllDataModels(t.context.blockGridModel).filter(i=>{var n;return(n=i.resource)!=null&&n.supportsFilter?i.uid===t.defaultTargetUid:!1});if(r.length>0){const i=r.map(n=>{var l,a,c;const u=n.collection||n.context.collection;if(u){let d;if(o!=null&&o.includes(".")){const m=`${u.dataSourceKey}.${u.name}.${o}`;d=(a=(l=n.context.dataSourceManager)==null?void 0:l.getCollectionField)==null?void 0:a.call(l,m)}if(d||(d=(c=u.getField)==null?void 0:c.call(u,o)),d!=null&&d.target)return{targetId:n.uid,filterPaths:[`${o}.${d.targetKey}`]}}return{targetId:n.uid,filterPaths:[o]}});yield this.context.filterManager.saveConnectFieldsConfig(t.uid,{targets:i})}})}renderAddSubModelButton(){var t,o,r;return this.loading.value?null:(0,import_jsx_runtime.jsx)(import_flow_engine.AddSubModelButton,{subModelKey:"items",model:this,afterSubModelInit:this.onModelCreated.bind(this),keepDropdownOpen:!0,subModelBaseClasses:["FilterFormItemModel","FilterFormCustomItemModel"],children:(0,import_jsx_runtime.jsx)(import_flow_engine.FlowSettingsButton,{icon:(0,import_jsx_runtime.jsx)(import_icons.SettingOutlined,{}),children:this.translate("Fields")})},(r=(o=(t=this.context.blockGridModel)==null?void 0:t.subModels)==null?void 0:o.items)==null?void 0:r.length)}}FilterFormGridModel.registerFlow({key:"filterFormGridSettings",steps:{grid:{handler(e,t){e.model.setProps("rowGap",0),e.model.setProps("colGap",16)}}}});class FilterFormJSActionModel extends FilterFormActionModel{}FilterFormJSActionModel.define({label:(0,import_flow_engine.tExpr)("JS action"),sort:9999});FilterFormJSActionModel.registerFlow({key:"clickSettings",on:"click",title:(0,import_flow_engine.tExpr)("Click settings"),steps:{runJs:{title:(0,import_flow_engine.tExpr)("Write JavaScript"),useRawParams:!0,uiSchema:{code:{type:"string","x-component":CodeEditor,"x-component-props":{minHeight:"400px",theme:"light",enableLinter:!0,wrapperStyle:{position:"fixed",inset:8}}}},uiMode:{type:"embed",props:{styles:{body:{transform:"translateX(0)"}}}},defaultParams(e){return{version:"v1",code:""}},handler(e,t){return V(this,null,function*(){const{code:o,version:r}=resolveRunJsParams(e,t),i=(0,import_flow_engine.createSafeNavigator)();yield e.runjs(o,{window:(0,import_flow_engine.createSafeWindow)({navigator:i}),document:(0,import_flow_engine.createSafeDocument)(),navigator:i},{version:r})})}}}});class FilterFormResetActionModel extends FilterFormActionModel{constructor(){super(...arguments),R(this,"defaultProps",{title:(0,import_flow_engine.tExpr)("Reset")})}}FilterFormResetActionModel.registerFlow({key:"resetSettings",on:{eventName:"click"},steps:{doReset:{handler(e,t){return V(this,null,function*(){const o=e.model.context.blockModel,r=o.subModels.grid.subModels.items;e.form.resetFields(),setTimeout(()=>{var i;(i=o.applyFormDefaultValues)==null||i.call(o,{force:!0}).finally(()=>{r.forEach(n=>{n.doReset()})})})})}}}});FilterFormResetActionModel.define({label:(0,import_flow_engine.tExpr)("Reset"),toggleable:!0,sort:200});class FilterFormSubmitActionModel extends FilterFormActionModel{constructor(){super(...arguments),R(this,"defaultProps",{title:(0,import_flow_engine.tExpr)("Filter"),type:"primary"})}onInit(t){super.onInit(t),this.context.blockModel.autoTriggerFilter=!1}onUnmount(){super.onUnmount(),this.context.blockModel.autoTriggerFilter=!0}}FilterFormSubmitActionModel.registerFlow({key:"submitSettings",on:{eventName:"click"},steps:{doFilter:{handler(e,t){return V(this,null,function*(){e.form.submit()})}}}});FilterFormSubmitActionModel.define({label:(0,import_flow_engine.tExpr)("Filter"),toggleable:!0,sort:100});const connectFields=(0,import_flow_engine.defineAction)({name:"connectFields",title:(0,import_flow_engine.tExpr)("Connect fields"),uiSchema(e){return{value:{type:"object","x-component":ConnectFields}}},beforeParamsSave(e,t){import_lodash.default.isEmpty(t.value)||e.model.context.filterManager.saveConnectFieldsConfig(e.model.uid,t.value),e.exit()},handler(e,t){}}),buildCascaderOptions=(e,t,o="",r=[],i="")=>{const n=r.filter(Boolean);return t.map(l=>{var a,c,u;const d=o?`${o}.${l.name}`:l.name,m=l.title||l.name,p=i?`${i} / ${m}`:m,h=!l.target,g={label:m,value:l.name,isLeaf:h,disableCheckbox:!h,meta:{field:l,fullPath:d,fullLabel:p}};if(!h&&n.some(f=>f&&f.startsWith(d+".")))if((c=(a=l.filterable)==null?void 0:a.children)!=null&&c.length)g.children=buildCascaderOptions(e,l.filterable.children,d,r,p);else{const f=l.targetCollection;if(f){const _=((u=f.getFields)==null?void 0:u.call(f))||[];g.children=buildCascaderOptions(e,_,d,r,p)}}return g}).sort((l,a)=>l.isLeaf&&!a.isLeaf?-1:!l.isLeaf&&a.isLeaf?1:0)};function ConnectFields(e){const t=(0,import_flow_engine.useFlowSettingsContext)(),o=(0,import_react2.useMemo)(()=>getAllDataModels(t.blockGridModel),[t.blockGridModel]),[r,i]=(0,import_react2.useState)(()=>t.model.context.filterManager.getConnectFieldsConfig(t.model.uid)),[n,l]=(0,import_react2.useState)({}),[a,c]=(0,import_react2.useState)({});import_react2.default.useEffect(()=>{V(this,null,function*(){var _;const v={},b=((r==null?void 0:r.targets)||[]).map(C=>C.targetId);for(const C of o.filter(y=>b.includes(y.uid))){const y=(yield(_=C.getFilterFields)==null?void 0:_.call(C))||[];v[C.uid]=y}l(v)})},[r==null?void 0:r.targets,o]);const u=(_,v)=>{c(b=>A(x({},b),{[_]:v}))},d=_=>a[_]||"field-select",m=(_,v)=>{var b;const C={};((r==null?void 0:r.targets)||[]).forEach(F=>{C[F.targetId]=F}),C[_]={targetId:_,filterPaths:v};const y=Object.values(C);(b=e.onChange)==null||b.call(e,{targets:y}),i({targets:y})},p=(_,v)=>{var b;const C={};((r==null?void 0:r.targets)||[]).forEach(F=>{C[F.targetId]=F}),v?C[_]={targetId:_,filterPaths:[]}:delete C[_];const y=Object.values(C);(b=e.onChange)==null||b.call(e,{targets:y}),i({targets:y})},h=_=>{var v;const b={};((r==null?void 0:r.targets)||[]).forEach(y=>{y.targetId!==_&&(b[y.targetId]=y)});const C=Object.values(b);(v=e.onChange)==null||v.call(e,{targets:C}),i({targets:C})},g=((r==null?void 0:r.targets)||[]).map(_=>_.targetId),f=o.filter(_=>{var v;return(v=_.resource)==null?void 0:v.supportsFilter}).map(_=>{const v=g.includes(_.uid);return{key:_.uid,label:(0,import_jsx_runtime.jsxs)("button",{type:"button",style:{display:"flex",justifyContent:"space-between",alignItems:"center",minWidth:"200px",border:"none",background:"none",padding:"0",width:"100%",cursor:"pointer"},onClick:b=>{b.stopPropagation(),p(_.uid,!v)},children:[(0,import_jsx_runtime.jsxs)("span",{style:{marginRight:"16px"},children:[_.title," #",_.uid.substring(0,4)]}),(0,import_jsx_runtime.jsx)(import_antd.Switch,{size:"small",checked:v})]})}});return(0,import_jsx_runtime.jsxs)("div",{children:[(0,import_jsx_runtime.jsxs)("div",{style:{marginBottom:"16px",padding:"12px",backgroundColor:"#f0f9ff",border:"1px solid #bae6fd",borderRadius:"6px",fontSize:"14px",color:"#0369a1"},children:[(0,import_jsx_runtime.jsx)("div",{style:{fontWeight:500,marginBottom:"8px"},children:t.t("Configuration:")}),(0,import_jsx_runtime.jsxs)("ul",{style:{margin:0,paddingLeft:"16px"},children:[(0,import_jsx_runtime.jsx)("li",{children:t.t('Available "target blocks" are all data blocks on the current page')}),(0,import_jsx_runtime.jsx)("li",{children:t.t("Support filtering multiple blocks simultaneously, support deep selection of relationship fields (e.g.: User/Department/Name)")})]})]}),o.filter(_=>g.includes(_.uid)&&n[_.uid]).sort((_,v)=>{const b=((r==null?void 0:r.targets)||[]).findIndex(y=>y.targetId===_.uid),C=((r==null?void 0:r.targets)||[]).findIndex(y=>y.targetId===v.uid);return b-C}).map(_=>{var v,b;const C=n[_.uid]||[],y=((b=(v=r==null?void 0:r.targets)==null?void 0:v.find(j=>j.targetId===_.uid))==null?void 0:b.filterPaths)||[],F=buildCascaderOptions(t,C,"",y,""),S=y.map(j=>j.split(".")),P=d(_.uid);return(0,import_jsx_runtime.jsx)(import_antd_v5.FormItem,{label:`${_.title} #${_.uid.substring(0,4)}`,children:(0,import_jsx_runtime.jsxs)("div",{style:{display:"flex",gap:"8px",alignItems:"center"},children:[(0,import_jsx_runtime.jsx)("div",{style:{flex:1},children:P==="field-select"?(0,import_jsx_runtime.jsx)(CascaderWrapper,{options:F,value:S,onChange:j=>{const I=(j||[]).map(D=>D.join("."));m(_.uid,I)},multiple:!0,allowClear:!0,placeholder:t.t("Please select fields to filter"),style:{width:"100%"},showSearch:{filter:(j,I)=>I.some(D=>(D.label||"").toString().toLowerCase().includes(j.toLowerCase()))}}):(0,import_jsx_runtime.jsx)(import_antd.Select,{mode:"tags",value:y,onChange:j=>m(_.uid,j),placeholder:t.t("Separate multiple values with comma or Enter"),style:{width:"100%"},allowClear:!0,tokenSeparators:[","],open:!1,suffixIcon:null})}),(0,import_jsx_runtime.jsx)(import_antd.Segmented,{value:P,onChange:j=>u(_.uid,j),options:[{label:t.t("Dropdown select"),value:"field-select"},{label:t.t("Text input"),value:"text-input"}]}),(0,import_jsx_runtime.jsx)(import_antd.Button,{type:"text",icon:(0,import_jsx_runtime.jsx)(import_icons.DeleteOutlined,{}),onClick:()=>h(_.uid),style:{color:"#8c8c8c"},title:t.t("Delete this target block")})]})},_.uid)}),(0,import_jsx_runtime.jsx)("div",{style:{marginTop:"16px"},children:(0,import_jsx_runtime.jsx)(import_antd.Dropdown,{menu:{items:f},trigger:["hover"],autoFocus:!1,children:(0,import_jsx_runtime.jsx)(import_antd.Button,{type:"dashed",icon:(0,import_jsx_runtime.jsx)(import_icons.PlusOutlined,{}),style:{width:"100%"},children:t.t("Add target block")})})})]})}function CascaderWrapper(e){const t=(0,import_flow_engine.useFlowSettingsContext)(),[o,r]=import_react2.default.useState(e.options||[]),i=import_react2.default.useMemo(()=>(e.options||[]).map(m=>{var p;return((p=m==null?void 0:m.meta)==null?void 0:p.fullPath)||(m==null?void 0:m.value)}).filter(Boolean).join("|"),[e.options]),n=(0,import_css.cx)(e.popupClassName,import_css.css`
|
|
2016
2016
|
.ant-cascader-checkbox {
|
|
2017
2017
|
display: none;
|
|
2018
2018
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nocobase/client",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.8",
|
|
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.8",
|
|
32
|
+
"@nocobase/flow-engine": "2.0.8",
|
|
33
|
+
"@nocobase/sdk": "2.0.8",
|
|
34
|
+
"@nocobase/utils": "2.0.8",
|
|
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": "af89ac2350fded2a0a915a119b8f0e83d50711cc"
|
|
100
100
|
}
|