@nocobase/client 1.9.16 → 1.9.17
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 +116 -120
- package/lib/index.js +4 -8
- package/package.json +5 -5
package/es/index.mjs
CHANGED
|
@@ -8857,7 +8857,7 @@ function addAppVersion(e, t) {
|
|
|
8857
8857
|
addAppVersion((o = e.properties) == null ? void 0 : o[n], t);
|
|
8858
8858
|
}), e;
|
|
8859
8859
|
}
|
|
8860
|
-
const name = "@nocobase/client", version = "1.9.
|
|
8860
|
+
const name = "@nocobase/client", version = "1.9.17", license = "AGPL-3.0", main = "lib/index.js", module = "es/index.mjs", types = "es/index.d.ts", dependencies = {
|
|
8861
8861
|
"@ahooksjs/use-url-state": "3.5.1",
|
|
8862
8862
|
"@ant-design/cssinjs": "^1.11.1",
|
|
8863
8863
|
"@ant-design/icons": "^5.6.1",
|
|
@@ -8878,9 +8878,9 @@ const name = "@nocobase/client", version = "1.9.16", license = "AGPL-3.0", main
|
|
|
8878
8878
|
"@formily/reactive-react": "^2.2.27",
|
|
8879
8879
|
"@formily/shared": "^2.2.27",
|
|
8880
8880
|
"@formily/validator": "^2.2.27",
|
|
8881
|
-
"@nocobase/evaluators": "1.9.
|
|
8882
|
-
"@nocobase/sdk": "1.9.
|
|
8883
|
-
"@nocobase/utils": "1.9.
|
|
8881
|
+
"@nocobase/evaluators": "1.9.17",
|
|
8882
|
+
"@nocobase/sdk": "1.9.17",
|
|
8883
|
+
"@nocobase/utils": "1.9.17",
|
|
8884
8884
|
ahooks: "^3.7.2",
|
|
8885
8885
|
antd: "5.24.2",
|
|
8886
8886
|
"antd-mobile": "^5.41.1",
|
|
@@ -20637,7 +20637,98 @@ const EnableChildCollections = withDynamicSchemaProps(
|
|
|
20637
20637
|
);
|
|
20638
20638
|
},
|
|
20639
20639
|
{ displayName: "ChildDynamicComponent" }
|
|
20640
|
-
),
|
|
20640
|
+
), DateScopeComponent = (e) => {
|
|
20641
|
+
var g, f, C, b, S, y, v, I, F, w, T, D, B, N;
|
|
20642
|
+
const t = useFieldSchema(), { getCollectionJoinField: n } = useCollectionManager_deprecated(), o = n(t == null ? void 0 : t["x-collection-field"]) || {}, r = ((g = o == null ? void 0 : o.uiSchema) == null ? void 0 : g["x-component-props"].gmt) || !1, a = ((f = o == null ? void 0 : o.uiSchema) == null ? void 0 : f["x-component-props"].utc) || !1, { form: i } = useFormBlockContext(), l = useRecord(), c = ((C = t == null ? void 0 : t["x-component-props"]) == null ? void 0 : C.showTime) || ((S = (b = o == null ? void 0 : o.uiSchema) == null ? void 0 : b["x-component-props"]) == null ? void 0 : S.showTime) || !1, u = ((y = t == null ? void 0 : t["x-component-props"]) == null ? void 0 : y.dateFormat) || ((I = (v = o == null ? void 0 : o.uiSchema) == null ? void 0 : v["x-component-props"]) == null ? void 0 : I.dateFormat) || "YYYY-MM-DD", d = ((F = t == null ? void 0 : t["x-component-props"]) == null ? void 0 : F.timeFormat) || ((T = (w = o == null ? void 0 : o.uiSchema) == null ? void 0 : w["x-component-props"]) == null ? void 0 : T.timeFormat) || "HH:mm:ss", p = ((D = t == null ? void 0 : t["x-component-props"]) == null ? void 0 : D.picker) || ((N = (B = o == null ? void 0 : o.uiSchema) == null ? void 0 : B["x-component-props"]) == null ? void 0 : N.picker) || "date", m = useCallback(
|
|
20643
|
+
(M) => /* @__PURE__ */ jsx(
|
|
20644
|
+
SchemaComponent,
|
|
20645
|
+
{
|
|
20646
|
+
schema: {
|
|
20647
|
+
"x-component": "DatePicker",
|
|
20648
|
+
"x-component-props": {
|
|
20649
|
+
dateFormat: u,
|
|
20650
|
+
timeFormat: d,
|
|
20651
|
+
gmt: r,
|
|
20652
|
+
utc: a,
|
|
20653
|
+
picker: p,
|
|
20654
|
+
showTime: c,
|
|
20655
|
+
placeholder: '{{t("Please select time or variable")}}',
|
|
20656
|
+
style: {
|
|
20657
|
+
minWidth: 250
|
|
20658
|
+
}
|
|
20659
|
+
},
|
|
20660
|
+
name: "value",
|
|
20661
|
+
"x-read-pretty": !1,
|
|
20662
|
+
"x-validator": void 0,
|
|
20663
|
+
"x-decorator": void 0
|
|
20664
|
+
}
|
|
20665
|
+
}
|
|
20666
|
+
),
|
|
20667
|
+
[u, r, p, c, d, a]
|
|
20668
|
+
), h = useCallback(
|
|
20669
|
+
(M) => /* @__PURE__ */ jsx(FlagProvider, { collectionField: o, children: /* @__PURE__ */ jsx(
|
|
20670
|
+
VariableInput,
|
|
20671
|
+
P(x({}, M), {
|
|
20672
|
+
form: i,
|
|
20673
|
+
record: l,
|
|
20674
|
+
noDisabled: !0,
|
|
20675
|
+
style: { minWidth: "250px" },
|
|
20676
|
+
renderSchemaComponent: m
|
|
20677
|
+
})
|
|
20678
|
+
) }),
|
|
20679
|
+
[t, i, l, m]
|
|
20680
|
+
);
|
|
20681
|
+
return /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(
|
|
20682
|
+
SchemaComponent,
|
|
20683
|
+
{
|
|
20684
|
+
schema: {
|
|
20685
|
+
type: "object",
|
|
20686
|
+
"x-component": "FormLayout",
|
|
20687
|
+
"x-component-props": {
|
|
20688
|
+
layout: "horizontal",
|
|
20689
|
+
labelStyle: {
|
|
20690
|
+
marginTop: "6px"
|
|
20691
|
+
},
|
|
20692
|
+
labelCol: 2,
|
|
20693
|
+
wrapperCol: 24
|
|
20694
|
+
},
|
|
20695
|
+
properties: {
|
|
20696
|
+
_minDate: {
|
|
20697
|
+
type: "string",
|
|
20698
|
+
title: '{{t("Min")}}',
|
|
20699
|
+
"x-decorator": "FormItem",
|
|
20700
|
+
"x-decorator-props": {
|
|
20701
|
+
labelCol: 4,
|
|
20702
|
+
wrapperCol: 20,
|
|
20703
|
+
labelAlign: "left"
|
|
20704
|
+
},
|
|
20705
|
+
"x-component": h,
|
|
20706
|
+
"x-component-props": {
|
|
20707
|
+
name: "_minDate"
|
|
20708
|
+
}
|
|
20709
|
+
//日期和使用变量设置的默认值不同
|
|
20710
|
+
// default: isVariable(minDateDefaultValue) ? minDateDefaultValue : { value: minDateDefaultValue },
|
|
20711
|
+
},
|
|
20712
|
+
_maxDate: {
|
|
20713
|
+
type: "string",
|
|
20714
|
+
title: '{{t("Max")}}',
|
|
20715
|
+
"x-decorator": "FormItem",
|
|
20716
|
+
"x-decorator-props": {
|
|
20717
|
+
labelCol: 4,
|
|
20718
|
+
wrapperCol: 20,
|
|
20719
|
+
labelAlign: "left"
|
|
20720
|
+
},
|
|
20721
|
+
"x-component": h,
|
|
20722
|
+
"x-component-props": {
|
|
20723
|
+
name: "_maxDate"
|
|
20724
|
+
}
|
|
20725
|
+
// default: isVariable(maxDateDefaultValue) ? maxDateDefaultValue : { value: maxDateDefaultValue },
|
|
20726
|
+
}
|
|
20727
|
+
}
|
|
20728
|
+
}
|
|
20729
|
+
}
|
|
20730
|
+
) });
|
|
20731
|
+
}, RemoveActionContext = createContext(null);
|
|
20641
20732
|
RemoveActionContext.displayName = "RemoveActionContext";
|
|
20642
20733
|
const FilterContext$2 = createContext(null);
|
|
20643
20734
|
FilterContext$2.displayName = "FilterContext";
|
|
@@ -20682,6 +20773,25 @@ const DynamicComponent$1 = (e) => {
|
|
|
20682
20773
|
onChange: e == null ? void 0 : e.onChange,
|
|
20683
20774
|
renderSchemaComponent: a
|
|
20684
20775
|
}) : a() });
|
|
20776
|
+
}, OptionsComponent = (e) => {
|
|
20777
|
+
const { fieldValue: t, setValue: n, schema: o } = e, r = useCallback(
|
|
20778
|
+
(a) => {
|
|
20779
|
+
n({
|
|
20780
|
+
value: a
|
|
20781
|
+
});
|
|
20782
|
+
},
|
|
20783
|
+
[n]
|
|
20784
|
+
);
|
|
20785
|
+
return /* @__PURE__ */ jsx(
|
|
20786
|
+
Select$1,
|
|
20787
|
+
{
|
|
20788
|
+
style: { minWidth: 200, maxWidth: 500 },
|
|
20789
|
+
onChange: r,
|
|
20790
|
+
value: t == null ? void 0 : t.value,
|
|
20791
|
+
mode: "multiple",
|
|
20792
|
+
options: (o == null ? void 0 : o.enum) || []
|
|
20793
|
+
}
|
|
20794
|
+
);
|
|
20685
20795
|
}, { Option } = Select$1, ValueDynamicComponent = (e) => {
|
|
20686
20796
|
const { fieldValue: t, schema: n, setValue: o, collectionName: r, inputModes: a } = e, [i, l] = useState((t == null ? void 0 : t.mode) || "constant"), { t: c } = useTranslation(), { form: u } = useFormBlockContext(), d = useRecord(), p = useVariableOptions({
|
|
20687
20797
|
collectionField: { uiSchema: n },
|
|
@@ -20803,25 +20913,6 @@ const DynamicComponent$1 = (e) => {
|
|
|
20803
20913
|
),
|
|
20804
20914
|
y[i]
|
|
20805
20915
|
] });
|
|
20806
|
-
}, OptionsComponent = (e) => {
|
|
20807
|
-
const { fieldValue: t, setValue: n, schema: o } = e, r = useCallback(
|
|
20808
|
-
(a) => {
|
|
20809
|
-
n({
|
|
20810
|
-
value: a
|
|
20811
|
-
});
|
|
20812
|
-
},
|
|
20813
|
-
[n]
|
|
20814
|
-
);
|
|
20815
|
-
return /* @__PURE__ */ jsx(
|
|
20816
|
-
Select$1,
|
|
20817
|
-
{
|
|
20818
|
-
style: { minWidth: 200, maxWidth: 500 },
|
|
20819
|
-
onChange: r,
|
|
20820
|
-
value: t == null ? void 0 : t.value,
|
|
20821
|
-
mode: "multiple",
|
|
20822
|
-
options: (o == null ? void 0 : o.enum) || []
|
|
20823
|
-
}
|
|
20824
|
-
);
|
|
20825
20916
|
}, findOption$1 = (e = [], t) => {
|
|
20826
20917
|
var r;
|
|
20827
20918
|
let n = t, o;
|
|
@@ -20878,97 +20969,6 @@ const DynamicComponent$1 = (e) => {
|
|
|
20878
20969
|
t.data.value = r, t.value = P(x({}, t.value), { value: r });
|
|
20879
20970
|
}
|
|
20880
20971
|
});
|
|
20881
|
-
}, DateScopeComponent = (e) => {
|
|
20882
|
-
var g, f, C, b, S, y, v, I, F, w, T, D, B, N;
|
|
20883
|
-
const t = useFieldSchema(), { getCollectionJoinField: n } = useCollectionManager_deprecated(), o = n(t == null ? void 0 : t["x-collection-field"]) || {}, r = ((g = o == null ? void 0 : o.uiSchema) == null ? void 0 : g["x-component-props"].gmt) || !1, a = ((f = o == null ? void 0 : o.uiSchema) == null ? void 0 : f["x-component-props"].utc) || !1, { form: i } = useFormBlockContext(), l = useRecord(), c = ((C = t == null ? void 0 : t["x-component-props"]) == null ? void 0 : C.showTime) || ((S = (b = o == null ? void 0 : o.uiSchema) == null ? void 0 : b["x-component-props"]) == null ? void 0 : S.showTime) || !1, u = ((y = t == null ? void 0 : t["x-component-props"]) == null ? void 0 : y.dateFormat) || ((I = (v = o == null ? void 0 : o.uiSchema) == null ? void 0 : v["x-component-props"]) == null ? void 0 : I.dateFormat) || "YYYY-MM-DD", d = ((F = t == null ? void 0 : t["x-component-props"]) == null ? void 0 : F.timeFormat) || ((T = (w = o == null ? void 0 : o.uiSchema) == null ? void 0 : w["x-component-props"]) == null ? void 0 : T.timeFormat) || "HH:mm:ss", p = ((D = t == null ? void 0 : t["x-component-props"]) == null ? void 0 : D.picker) || ((N = (B = o == null ? void 0 : o.uiSchema) == null ? void 0 : B["x-component-props"]) == null ? void 0 : N.picker) || "date", m = useCallback(
|
|
20884
|
-
(M) => /* @__PURE__ */ jsx(
|
|
20885
|
-
SchemaComponent,
|
|
20886
|
-
{
|
|
20887
|
-
schema: {
|
|
20888
|
-
"x-component": "DatePicker",
|
|
20889
|
-
"x-component-props": {
|
|
20890
|
-
dateFormat: u,
|
|
20891
|
-
timeFormat: d,
|
|
20892
|
-
gmt: r,
|
|
20893
|
-
utc: a,
|
|
20894
|
-
picker: p,
|
|
20895
|
-
showTime: c,
|
|
20896
|
-
placeholder: '{{t("Please select time or variable")}}',
|
|
20897
|
-
style: {
|
|
20898
|
-
minWidth: 250
|
|
20899
|
-
}
|
|
20900
|
-
},
|
|
20901
|
-
name: "value",
|
|
20902
|
-
"x-read-pretty": !1,
|
|
20903
|
-
"x-validator": void 0,
|
|
20904
|
-
"x-decorator": void 0
|
|
20905
|
-
}
|
|
20906
|
-
}
|
|
20907
|
-
),
|
|
20908
|
-
[u, r, p, c, d, a]
|
|
20909
|
-
), h = useCallback(
|
|
20910
|
-
(M) => /* @__PURE__ */ jsx(FlagProvider, { collectionField: o, children: /* @__PURE__ */ jsx(
|
|
20911
|
-
VariableInput,
|
|
20912
|
-
P(x({}, M), {
|
|
20913
|
-
form: i,
|
|
20914
|
-
record: l,
|
|
20915
|
-
noDisabled: !0,
|
|
20916
|
-
style: { minWidth: "250px" },
|
|
20917
|
-
renderSchemaComponent: m
|
|
20918
|
-
})
|
|
20919
|
-
) }),
|
|
20920
|
-
[t, i, l, m]
|
|
20921
|
-
);
|
|
20922
|
-
return /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(
|
|
20923
|
-
SchemaComponent,
|
|
20924
|
-
{
|
|
20925
|
-
schema: {
|
|
20926
|
-
type: "object",
|
|
20927
|
-
"x-component": "FormLayout",
|
|
20928
|
-
"x-component-props": {
|
|
20929
|
-
layout: "horizontal",
|
|
20930
|
-
labelStyle: {
|
|
20931
|
-
marginTop: "6px"
|
|
20932
|
-
},
|
|
20933
|
-
labelCol: 2,
|
|
20934
|
-
wrapperCol: 24
|
|
20935
|
-
},
|
|
20936
|
-
properties: {
|
|
20937
|
-
_minDate: {
|
|
20938
|
-
type: "string",
|
|
20939
|
-
title: '{{t("Min")}}',
|
|
20940
|
-
"x-decorator": "FormItem",
|
|
20941
|
-
"x-decorator-props": {
|
|
20942
|
-
labelCol: 4,
|
|
20943
|
-
wrapperCol: 20,
|
|
20944
|
-
labelAlign: "left"
|
|
20945
|
-
},
|
|
20946
|
-
"x-component": h,
|
|
20947
|
-
"x-component-props": {
|
|
20948
|
-
name: "_minDate"
|
|
20949
|
-
}
|
|
20950
|
-
//日期和使用变量设置的默认值不同
|
|
20951
|
-
// default: isVariable(minDateDefaultValue) ? minDateDefaultValue : { value: minDateDefaultValue },
|
|
20952
|
-
},
|
|
20953
|
-
_maxDate: {
|
|
20954
|
-
type: "string",
|
|
20955
|
-
title: '{{t("Max")}}',
|
|
20956
|
-
"x-decorator": "FormItem",
|
|
20957
|
-
"x-decorator-props": {
|
|
20958
|
-
labelCol: 4,
|
|
20959
|
-
wrapperCol: 20,
|
|
20960
|
-
labelAlign: "left"
|
|
20961
|
-
},
|
|
20962
|
-
"x-component": h,
|
|
20963
|
-
"x-component-props": {
|
|
20964
|
-
name: "_maxDate"
|
|
20965
|
-
}
|
|
20966
|
-
// default: isVariable(maxDateDefaultValue) ? maxDateDefaultValue : { value: maxDateDefaultValue },
|
|
20967
|
-
}
|
|
20968
|
-
}
|
|
20969
|
-
}
|
|
20970
|
-
}
|
|
20971
|
-
) });
|
|
20972
20972
|
}, FormFieldLinkageRuleAction = observer$1(
|
|
20973
20973
|
(e) => {
|
|
20974
20974
|
const { value: t, options: n, collectionName: o } = e, { t: r } = useTranslation(), a = useCompile(), i = useContext(RemoveActionContext), l = useFlag(), {
|
|
@@ -21028,11 +21028,7 @@ const DynamicComponent$1 = (e) => {
|
|
|
21028
21028
|
},
|
|
21029
21029
|
placeholder: r("Select field"),
|
|
21030
21030
|
treeNodeFilterProp: "title",
|
|
21031
|
-
|
|
21032
|
-
.ant-select-tree-list-holder > div {
|
|
21033
|
-
overflow-y: auto !important;
|
|
21034
|
-
}
|
|
21035
|
-
`
|
|
21031
|
+
virtual: !1
|
|
21036
21032
|
}
|
|
21037
21033
|
),
|
|
21038
21034
|
/* @__PURE__ */ jsx(
|
package/lib/index.js
CHANGED
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
width: 100%;
|
|
63
63
|
}
|
|
64
64
|
}
|
|
65
|
-
`,items:l},n))})},SchemaInitializerSubMenu=e=>{var t;const o=e,{children:r,items:i,title:n,name:a,onOpenChange:l,icon:c}=o,u=W(o,["children","items","title","name","onOpenChange","icon"]),m=useCompile(),d=useSchemaInitializerItem(),p=(0,import_react2.useMemo)(()=>a||(d==null?void 0:d.name)||(0,import_shared.uid)(),[a,d]),h=(t=i||r)==null?void 0:t.filter(f=>f.useVisible?f.useVisible():!0),g=useSchemaInitializerMenuItems(h,a),_=(0,import_react2.useMemo)(()=>[P(x({},u),{key:p,label:m(n),icon:typeof c=="string"?(0,import_jsx_runtime.jsx)(import_icons.default,{type:c}):c,children:g})],[g,m,c,p,u,n]);return(0,import_jsx_runtime.jsx)(SchemaInitializerMenu,{onOpenChange:l,items:_})},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:()=>q(void 0,null,function*(){i(!0);try{const a=yield n.request({url:"logger:collect",method:"post",responseType:"blob",data:x({error:{message:e.message,stack:e.stack},location:o},t)}),l=window.URL.createObjectURL(new Blob([a.data],{type:"application/gzip"})),c=document.createElement("a");c.setAttribute("href",l),c.setAttribute("download","logs.tar.gz"),c.click(),c.remove()}catch(a){console.log(a)}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 pm(){return this.app.pm}get router(){return this.app.router}get pluginSettingsManager(){return this.app.pluginSettingsManager}get schemaInitializerManager(){return this.app.schemaInitializerManager}get schemaSettingsManager(){return this.app.schemaSettingsManager}get dataSourceManager(){return this.app.dataSourceManager}afterAdd(){return q(this,null,function*(){})}beforeLoad(){return q(this,null,function*(){})}load(){return q(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_client3.evaluators.get("formula.js"),useEvaluatedExpression=e=>{const t=useVariables$1(),o=useLocalVariables$1(),[r,i]=(0,import_react2.useState)();return(0,import_react2.useEffect)(()=>{q(void 0,null,function*(){if(e==null||e===""){i(void 0);return}const{exp:n,scope:a}=yield replaceVariables(e,{variables:t,localVariables:o});try{const l=evaluate(n,x({now:()=>new Date().toString()},a));i(l)}catch(l){console.error(l)}})},[t.parseVariable,e,o]),r};class SchemaInitializer{constructor(t){k(this,"options"),k(this,"name"),this.options=Object.assign({items:[]},t),this.name=t.name}get items(){return this.options.items}add(t,o){const r=t.split("."),i=r[r.length-1],n=P(x({},o),{name:i}),a=(u,m)=>{const d=this.items.findIndex(p=>p.name===u);d===-1?this.items.push(m):this.items[d]=m};if(r.length===1){a(i,n);return}const l=r.slice(0,-1).join("."),c=this.get(l);if(c){c.children||(c.children=[]);const u=t.replace(`${c.name}.`,""),m=c.children.findIndex(d=>d.name===u);m===-1?c.children.push(n):c.children[m]=n}else a(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 a=r[n],l=(o=i.children)==null?void 0:o.find(c=>c.name===a);if(l&&(i=l),n===r.length-1)return l}}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(a=>a.name===i);n!==-1&&r.children.splice(n,1)}}}var NocoBaseDesktopRouteType=(e=>(e.group="group",e.page="page",e.link="link",e.tabs="tabs",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`}}}),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,a;if(typeof r=="string"&&r.startsWith("{{")&&(n=!0,a=r),r&&typeof r=="object"&&!(0,import_react2.isValidElement)(r)){try{a=JSON.stringify(r)}catch(l){return console.warn("Failed to stringify:",l),r}if(compileCache[a])return compileCache[a];n=hasVariable(a)}if(Array.isArray(r)){try{a=JSON.stringify(r)}catch(l){return console.warn("Failed to stringify:",l),r}if(compileCache[a])return compileCache[a];n=hasVariable(a)}if(n){const l=x(x(x({},t.scope),o),i);if(!a)return import_react.Schema.compile(r,l);try{return e?import_react.Schema.compile(r,l):(compileCache[a]=compileCache[a]||import_react.Schema.compile(r,l),compileCache[a])}catch(c){return console.log("useCompile error",r,c),import_react.Schema.compile(r,l)}}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 a=(0,import_lodash.get)(n,r);return o[r][LAZY_COMPONENT_KEY]=a,{default:a}}));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="1.9.16",license="AGPL-3.0",main="lib/index.js",module$1="es/index.mjs",types="es/index.d.ts",dependencies={"@ahooksjs/use-url-state":"3.5.1","@ant-design/cssinjs":"^1.11.1","@ant-design/icons":"^5.6.1","@ant-design/pro-layout":"^7.22.1","@antv/g2plot":"^2.4.18","@budibase/handlebars-helpers":"0.14.0","@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":"1.9.16","@nocobase/sdk":"1.9.16","@nocobase/utils":"1.9.16",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",cronstrue:"^2.11.0","file-saver":"^2.0.5",filesize:"9.0.11",flat:"^5.0.2","html5-qrcode":"^2.3.8",i18next:"^22.4.9","i18next-http-backend":"^2.1.1",ignore:"^5.2.0",json5:"^2.2.3",lodash:"4.17.21","lru-cache":"6.0.0","markdown-it":"14.1.0","markdown-it-highlightjs":"3.3.1",mathjs:"^10.6.0",mermaid:"9.4.3",mime:"^4.0.4","mime-match":"^1.0.2","react-beautiful-dnd":"^13.1.0","react-device-detect":"2.2.3","react-drag-listview":"^0.1.9","react-error-boundary":"^4.0.10","react-helmet":"^6.1.0","react-hotkeys-hook":"^3.4.7","react-i18next":"^11.15.1","react-iframe":"~1.8.5","react-image-lightbox":"^5.1.4","react-intersection-observer":"9.14.0","react-js-cron":"^3.1.0","react-quill":"^2.0.0","react-router-dom":"^6.11.2","react-to-print":"^2.14.7","sanitize-html":"2.13.0","use-deep-compare-effect":"^1.8.1"},peerDependencies={react:">=18.0.0","react-dom":">=18.0.0","react-is":">=18.0.0"},devDependencies={"@testing-library/react":"^14.0.0","@types/markdown-it":"14.1.1","@types/markdown-it-highlightjs":"3.3.1","@types/react-big-calendar":"^1.6.4","axios-mock-adapter":"^1.20.0",dumi:"2.2.14","dumi-theme-nocobase":"^0.2.28"},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=P(x({},o),{properties:{}});let i=null;const n=(a,l)=>{Object.keys(a||{}).forEach(c=>{const u=a[c];if(u["x-uid"]===t["x-uid"]){i=a[c];return}else l.properties[c]=P(x({},u),{properties:{}}),n(u==null?void 0:u.properties,l.properties[c])})};return n(o.properties,r),[r,i]},translate=e=>e;class Designable{constructor(t){k(this,"current"),k(this,"options"),k(this,"appVersion"),k(this,"events",{}),this.options=t,this.current=t.current,this.appVersion=t.appVersion}get model(){return this.options.model}get query(){return this.options.query}loadAPIClientEvents(){const{api:t,t:o=translate}=this.options;if(!t)return;const r=i=>{if(!i)return[];const n=Object.values(i.properties).length,a=[];return i.mapProperties(l=>{l["x-component-props"]=l["x-component-props"]||{},l["x-component-props"].width=100/n,l["x-uid"]&&a.push({"x-uid":l["x-uid"],"x-component-props":l["x-component-props"]})}),i["x-uid"]&&a.length?a:[]};this.on("insertAdjacent",i=>q(this,[i],function*({onSuccess:n,current:a,position:l,schema:c,wrap:u,wrapped:m,removed:d}){var p;let h=[];if((m==null?void 0:m["x-component"])==="Grid.Col"&&(h=h.concat(r(m.parent))),(d==null?void 0:d["x-component"])==="Grid.Col"&&(h=h.concat(r(d.parent))),this.refresh(),!a["x-uid"])return;const g=yield t.request({url:`/uiSchemas:insertAdjacent/${a["x-uid"]}?position=${l}`,method:"post",data:{schema:addAppVersion(c,this.appVersion),wrap:u}});h.length&&(yield t.request({url:"/uiSchemas:batchPatch",method:"post",data:h})),d!=null&&d["x-uid"]&&(yield t.request({url:`/uiSchemas:remove/${d["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=>q(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=>q(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=>q(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=>q(this,[i],function*({removed:n}){let a=[];(n==null?void 0:n["x-component"])==="Grid.Col"&&(a=r(n.parent)),this.refresh(),n!=null&&n["x-uid"]&&(yield t.request({url:`/uiSchemas:remove/${n["x-uid"]}`,method:"post"}),a.length&&(yield t.request({url:"/uiSchemas:batchPatch",method:"post",data:a})),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 q(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 a=n.parent.removeProperty(n.name);if(i){const l=this.recursiveRemoveIfNoChildren(n.parent,{breakRemoveOn:r});l&&(a=l)}return this.emit("remove",{removed:a})}removeWithoutEmit(t,o={}){const{breakRemoveOn:r,removeParentsIfNoChildren:i}=o,n=t||this.current;let a=n.parent.removeProperty(n.name);if(i){const l=this.recursiveRemoveIfNoChildren(n.parent,{breakRemoveOn:r});l&&(a=l)}return a}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,a,l)=>{this.current.name===a&&(i=l),t.name===a&&(r=l)}),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:a}=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),a&&(r.removed=this.recursiveRemoveIfNoChildren(t.parent,{breakRemoveOn:n}))}else t&&(t=(0,import_cloneDeep.default)(t));const l={};let c=!1,u=0,m=0;this.current.parent.mapProperties((_,f)=>{f===this.current.name&&(m=u,c=!0,++u),_["x-index"]=u,++u,c&&(l[f]=_,this.current.parent.removeProperty(f))}),this.prepareProperty(t);const d=i(t),p=this.current.parent.addProperty(d.name||(0,import_shared.uid)(),d);p["x-index"]=m,p.parent=this.current.parent,this.current.parent.setProperties(l);const[h,g]=splitWrapSchema(p,t);this.emit("insertAdjacent",x({position:"beforeBegin",schema:g,wrapped:d,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:a}=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),a&&(r.removed=this.recursiveRemoveIfNoChildren(t.parent,{breakRemoveOn:n}))}else t&&(t=(0,import_cloneDeep.default)(t));const l={};let c=1;this.current.mapProperties((h,g)=>{h["x-index"]=c,++c,l[g]=h}),this.current.properties={},this.prepareProperty(t);const u=i(t),m=this.current.addProperty(u.name||(0,import_shared.uid)(),u);m["x-index"]=0,m.parent=this.current,this.current.setProperties(l);const[d,p]=splitWrapSchema(m,t);this.emit("insertAdjacent",x({position:"afterBegin",schema:p,wrap:d,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:a}=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),a&&(r.removed=this.recursiveRemoveIfNoChildren(t.parent,{breakRemoveOn:n}))}else t&&(t=(0,import_cloneDeep.default)(t));this.prepareProperty(t);const l=i(t),c=this.current.addProperty(l.name||(0,import_shared.uid)(),l);c.parent=this.current;const[u,m]=splitWrapSchema(c,t);return this.emit("insertAdjacent",x({position:"beforeEnd",schema:m,wrap:u,wrapped:l},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:a}=o;let l=0,c=0,u=!1;const m={};if(this.current.parent.mapProperties((_,f)=>{_["x-index"]=l,f===this.current.name&&(++l,c=l,u=!0),++l,u&&f!==this.current.name&&(m[f]=_,this.current.parent.removeProperty(f))}),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),a&&(r.removed=this.recursiveRemoveIfNoChildren(t.parent,{breakRemoveOn:n})),t.parent=null}else t&&(t=(0,import_cloneDeep.default)(t));this.prepareProperty(t);const d=i(t),p=this.current.parent.addProperty(d.name||(0,import_shared.uid)(),d);p.parent=this.current.parent,p["x-index"]=c,this.current.parent.setProperties(m);const[h,g]=splitWrapSchema(p,t);this.emit("insertAdjacent",x({position:"afterEnd",schema:g,wrap:h,wrapped:d},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]),a=(0,import_react2.useMemo)(()=>()=>(0,import_jsx_runtime.jsx)(import_jsx_runtime.Fragment,{}),[]),l=(0,import_ahooks.useUpdate)(),c=useRefreshFieldSchema(),u=useRefreshComponent(),m=(0,import_react2.useCallback)(v=>{o==null||o(),l(),c==null||c(v),u==null||u()},[o,l,c,u]),d=(0,import_react.useField)(),p=(0,import_react.useFieldSchema)(),h=useAPIClient(),{t:g}=(0,import_react_i18next.useTranslation)(),_=(0,import_react2.useMemo)(()=>createDesignable({t:g,api:h,refresh:m,current:p,model:d,appVersion:clientPkg.version}),[g,h,m,p,d]);(0,import_react2.useEffect)(()=>{_.loadAPIClientEvents()},[_]);const{isMobileLayout:f}=useMobileLayout();return{dn:_,designable:f?!1:e,reset:r,refresh:m,setDesignable:t,DesignableBar:a,findComponent:(0,import_react2.useCallback)(v=>{var C;if(!v)return null;if(typeof v!="string")return v;const S=(0,import_get.default)(n,v);return(C=S==null?void 0:S[LAZY_COMPONENT_KEY])!=null?C:S},[import_get.default]),on:_.on.bind(_),patch:(0,import_react2.useCallback)((v,C)=>{const S=b=>{Object.keys(b).forEach(y=>{const F=b[y];y==="title"&&(d.title=F,p.title=F),y==="x-decorator-props"&&(d.decoratorProps||(d.decoratorProps={}),p["x-decorator-props"]||(p["x-decorator-props"]={}),Object.keys(F).forEach(j=>{d.decoratorProps[j]=F[j],p["x-decorator-props"][j]=F[j]})),y==="x-component-props"&&(d.componentProps||(d.componentProps={}),p["x-component-props"]||(p["x-component-props"]={}),Object.keys(F).forEach(j=>{d.componentProps[j]=F[j],p["x-component-props"][j]=F[j]}))})};if(typeof v=="string"){const b={};return(0,import_set.default)(b,v,C),S(b)}S(v),m()},[_]),shallowMerge:(0,import_react2.useCallback)(v=>{_.shallowMerge(v)},[_]),deepMerge:(0,import_react2.useCallback)(v=>{_.deepMerge(v)},[_]),remove:(0,import_react2.useCallback)((v,C)=>{_.remove(v,C)},[_]),insertAdjacent:(0,import_react2.useCallback)((v,C,S)=>{_.insertAdjacent(v,C,S)},[_]),insertBeforeBegin:(0,import_react2.useCallback)(v=>{_.insertBeforeBegin(v)},[_]),insertAfterBegin:(0,import_react2.useCallback)(v=>{_.insertAfterBegin(v)},[_]),insertBeforeEnd:(0,import_react2.useCallback)(v=>{_.insertBeforeEnd(v)},[_]),insertAfterEnd:(0,import_react2.useCallback)(v=>{_.insertAfterEnd(v)},[_])}}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(P(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:a}=(0,import_react_i18next.useTranslation)(),{label:l}=((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:a("Record picker"),value:"CollectionField"},{label:a("Select"),value:"AssociationSelect"}];switch(n.interface){case"o2m":return[{label:a("Record picker"),value:"CollectionField"},{label:a("Subtable"),value:"TableField"},{label:a("Select"),value:"AssociationSelect"}];case"m2o":case"m2m":case"linkTo":return[{label:a("Record picker"),value:"CollectionField"},{label:a("Select"),value:"AssociationSelect"}];default:return[{label:a("Record picker"),value:"CollectionField"},{label:a("Subform"),value:"FormField"},{label:a("Select"),value:"AssociationSelect"}]}},[a,n==null?void 0:n.interface,l])},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"])),a=useCompile();(0,import_react2.useEffect)(()=>{var l;t!=null&&t.title||(t.title=a((l=n==null?void 0:n.uiSchema)==null?void 0:l.title))},[(e=n==null?void 0:n.uiSchema)==null?void 0:e.title])},useDef$4=()=>({}),useProps=(e={})=>{const t=e,{useProps:o=useDef$4}=t,r=W(t,["useProps"]);let i=o;typeof o!="function"&&(i=useDef$4);const n=i();return x(x({},r),n)};function useParsedFilter({filterOption:e,onFilterChange:t}){const{parseFilter:o,findVariable:r}=useParseDataScopeFilter(),[i,n]=(0,import_react2.useState)({}),[a,l]=(0,import_react2.useState)(!!e);return(0,import_react2.useEffect)(()=>{if(!e)return;const c=()=>q(this,null,function*(){l(!0);const m=yield o(e);l(!1),n(m),t==null||t(m)});c();const u=import_lodash.default.debounce(c,DEBOUNCE_WAIT);(0,import_reactive.reaction)(()=>(0,import_client.flatten)(e,{breakOn({key:m}){return m.startsWith("$")&&m!=="$and"&&m!=="$or"},transformValue(m){if(!isVariable$1(m))return m;const d=getVariableName(m),p=r(d);let h=null;const g=getPath(m).split(".");return g.forEach((_,f)=>{const v=g.slice(0,f+1).join("."),C=(0,import_client.getValuesByPath)({[d]:(p==null?void 0:p.ctx)||{}},v);import_lodash.default.isEmpty(C)||(h=C)}),h}}),u,{equals:import_lodash.default.isEqual})},[JSON.stringify(e),o,r]),{filter:i,parseVariableLoading:a}}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:a}=(o==null?void 0:o["x-decorator-props"])||{};return e.dragSort&&a&&(n.sort=a),P(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(a=>{const l=o(),c=(0,import_react2.useRef)(!1),u=(0,import_react2.useDeferredValue)(l);return!c.current&&u?(0,import_jsx_runtime.jsx)(i,{}):(c.current=!0,(0,import_jsx_runtime.jsx)(e,x({},a)))});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)=>q(void 0,[e,t],function*({rules:o,variables:r,localVariables:i},n){return(yield Promise.all(o.filter(a=>!a.disabled).map(a=>q(void 0,null,function*(){return(yield conditionAnalyses({ruleGroup:a.condition,variables:r,localVariables:i,conditionType:a.conditionType},n))?a:null})))).filter(Boolean).map(a=>a.actions).flat()}),getSatisfiedValues=(e,t)=>q(void 0,[e,t],function*({rules:o,variables:r,localVariables:i},n){return(yield getSatisfiedActions({rules:o,variables:r,localVariables:i},n)).map(a=>P(x({},a),{value:getActionValue(a.operator,a.value)}))}),getSatisfiedValueMap=(e,t)=>q(void 0,[e,t],function*({rules:o,variables:r,localVariables:i},n){return(yield getSatisfiedValues({rules:o,variables:r,localVariables:i},n)).reduce((a,l)=>P(x({},a),{[l.operator]:l.value}),{})});function useSatisfiedActionValues({formValues:e,category:t="default",rules:o,schema:r,form:i}){const[n,a]=(0,import_react2.useState)({}),l=(0,import_react.useFieldSchema)(),c=useVariables$1(),u=useLocalVariables$1({currentForm:{values:e}}),m=r??l,d=o??(m[LinkageRuleDataKeyMap[t]]||(m==null?void 0:m.parent[LinkageRuleDataKeyMap[t]])),p=useApp(),h=(0,import_react2.useCallback)(()=>{d&&e&&getSatisfiedValueMap({rules:d,variables:c,localVariables:u},p.jsonLogic).then(g=>{(0,import_lodash.isEmpty)(g)?a({}):a(g)}).catch(g=>{throw new Error(g.message)})},[c,u,d,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,P(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})]}));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 a,l;return o["x-uid"]!==n.uid&&(isSameCollection(n.collection,r)||((a=getSupportFieldsByAssociation(i(r.name,r.dataSource),n))==null?void 0:a.length)||((l=getSupportFieldsByForeignKey(r,n))==null?void 0:l.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 a=o(`${r}.${n}`);if(["datetime","datetimeNoTz","date","unixTimestamp","createdAt","updatedAt"].includes(a==null?void 0:a.interface))return!0;if(a!=null&&a.target){if(Array.isArray(i))return!0;const l=a.targetKey||"id";if(i&&i[l]!=null)return!0}return!1}}),{$and:Object.keys(e).map(i=>{let n=import_lodash.default.get(e,i);const a=o(`${r}.${i}`);return a!=null&&a.target&&["hasOne","hasMany","belongsTo","belongsToMany","belongsToArray"].includes(a.type)&&(n=(0,import_client.getValuesByPath)(n,a.targetKey||"id"),i=`${i}.${a.targetKey||"id"}`,(a==null?void 0:a.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,a]=(0,import_react2.useState)(()=>o&&o.some(u=>i.some(m=>m.uid===u.uid))),l=Object.keys(o||{});(0,import_react2.useEffect)(()=>{a(o&&o.some(u=>i.some(m=>m.uid===u.uid)))},[l.length,o,i]);const c=(0,import_react2.useCallback)((u,m="id",d="$eq")=>{const p=i.find(h=>h.uid===e.parent["x-uid"]);i.forEach(h=>{var g,_,f,v;let C=m;const S=o.find(j=>j.uid===h.uid);if(!S)return;import_lodash.default.isFunction(u)&&(u=u(S,h,getSourceKey$1(p,S.field))),import_lodash.default.isFunction(m)&&(C=m(S,h)),import_lodash.default.isFunction(d)&&(d=d(S));const b=((g=h.service.params)==null?void 0:g[0])||{},y=((f=(_=h.service.params)==null?void 0:_[1])==null?void 0:f.filters)||{};if(u!=null)y[r]={$and:[{[C]:{[d]:u}}]};else if((v=h.clearSelection)==null||v.call(h),delete y[r],h.dataLoadingMode==="manual")return h.clearData();const F=mergeFilter([...Object.values(y).map(j=>removeNullCondition(j)),h.defaultFilter]);h.doFilter(P(x({},b),{page:1,filter:F}),{filters:y})})},[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(a=>a.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,a)=>a["x-component"]==="AssociationField."+e?a: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,a,l,c,u,m;const{action:d="list",service:p,useOriginalFilter:h}=e,g=(0,import_react.useFieldSchema)(),_=(0,import_react.useField)(),{getField:f}=useCollection_deprecated(),{getCollectionJoinField:v}=useCollectionManager_deprecated(),C=useRecord(),{isNew:S}=useCollectionRecord()||{},b=((0,import_lodash.isString)((r=(o=(t=g==null?void 0:g["x-component-props"])==null?void 0:t.service)==null?void 0:o.params)==null?void 0:r.filter)?(a=(n=(i=_.componentProps)==null?void 0:i.service)==null?void 0:n.params)==null?void 0:a.filter:(u=(c=(l=g==null?void 0:g["x-component-props"])==null?void 0:l.service)==null?void 0:c.params)==null?void 0:u.filter)||((m=p==null?void 0:p.params)==null?void 0:m.filter),{filter:y}=useParsedFilter({filterOption:b,onFilterChange:()=>{S&&_.reset()}}),F=(0,import_react2.useMemo)(()=>f(g.name)||v(g==null?void 0:g["x-collection-field"]),[g]),j=C==null?void 0:C[F==null?void 0:F.sourceKey],A=(0,import_react2.useMemo)(()=>{const D=["oho","o2m"].includes(F==null?void 0:F.interface);return mergeFilter([mergeFilter([D&&!isInFilterFormBlock(g)&&F!=null&&F.foreignKey&&!h?{[F.foreignKey]:{$is:null}}:null,y]),D&&j!==void 0&&j!==null&&!isInFilterFormBlock(g)&&F!=null&&F.foreignKey&&!h?{[F.foreignKey]:{$eq:j}}:null],"$or")},[F==null?void 0:F.interface,F==null?void 0:F.foreignKey,g,y,j,h]);return(0,import_react2.useMemo)(()=>P(x({resource:F==null?void 0:F.target,action:d},p),{params:P(x({},p==null?void 0:p.params),{filter:A})}),[F==null?void 0:F.target,d,A,p])}const useFieldNames$1=(e={})=>{var t,o,r,i,n;const a=(0,import_react.useFieldSchema)(),l=((i=(r=(o=(t=a["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=a["x-component-props"])==null?void 0:n.fieldNames)||e.fieldNames;return x({label:"label",value:"value"},l)},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:a}=e.value,l=(0,import_react2.useMemo)(()=>import_lodash.default.omitBy({value:o,collection:r,fieldSchema:i,skip:a,parent:n||(t!=null&&t.skip?t.parent:t)},import_lodash.default.isUndefined),[o,r,i,a,n,t]);return(0,import_jsx_runtime.jsx)(SubFormContext.Provider,{value:l,children:e.children})},useSubFormValue=()=>{const{value:e,collection:t,fieldSchema:o,parent:r}=(0,import_react2.useContext)(SubFormContext)||{};return{formValue:e,collection:t,fieldSchema:o,parent:r}},useColumnSettings=e=>{const{t}=(0,import_react_i18next.useTranslation)(),o=`nocobase_table_column_settings_${e}`,r=(0,import_react2.useCallback)(()=>{try{const a=localStorage.getItem(o);return a?JSON.parse(a):null}catch(a){return console.warn("Failed to parse table column settings from localStorage:",a),null}},[o]),i=(0,import_react2.useCallback)(a=>{try{const l=JSON.stringify(a);localStorage.setItem(o,l);const c=new CustomEvent("nocobase-table-settings-changed",{detail:{key:o,tableId:e,settings:a}});window.dispatchEvent(c)}catch(l){console.warn("Failed to save table column settings to localStorage:",l),import_antd.message.error(t("Failed to save table settings"))}},[o,e,t]),n=(0,import_react2.useCallback)(()=>{try{localStorage.removeItem(o);const a=new CustomEvent("nocobase-table-settings-changed",{detail:{key:o,tableId:e,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"))}},[o,e,t]);return{getSettings:r,saveSettings:i,clearSettings:n}},useTableColumnIntegration=(e,t=!0)=>{const o=(0,import_react.useFieldSchema)(),r=(o==null?void 0:o["x-uid"])||"default",{getSettings:i}=useColumnSettings(r),[n,a]=(0,import_react2.useState)(0);(0,import_react2.useEffect)(()=>{const c=u=>{const{key:m,tableId:d}=u.detail;(m.includes(r)||d===r)&&a(p=>p+1)};return window.addEventListener("nocobase-table-settings-changed",c),()=>{window.removeEventListener("nocobase-table-settings-changed",c)}},[r]);const l=(0,import_react2.useMemo)(()=>i(),[i,n]);return{columns:(0,import_react2.useMemo)(()=>{if(!t||!l||l.length===0)return e;const c=new Map;l.forEach(h=>{c.set(h.key,h)});const u=e.map(h=>{const g=c.get(h.key);if(g){const _=h.columnHidden||!g.visible,f=g.width||h.width,v=g.fixed||h.fixed;return P(x({},h),{columnHidden:_,fixed:v,width:f,_orderIndex:g.order})}return h}),m=[],d=[];u.forEach(h=>{h._orderIndex!==void 0?m.push(h):d.push(h)}),m.sort((h,g)=>(h._orderIndex||0)-(g._orderIndex||0));const p=[...m,...d];return p.forEach(h=>{delete h._orderIndex}),p},[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:l},n))})},SchemaInitializerSubMenu=e=>{var t;const o=e,{children:r,items:i,title:n,name:a,onOpenChange:l,icon:c}=o,u=W(o,["children","items","title","name","onOpenChange","icon"]),m=useCompile(),d=useSchemaInitializerItem(),p=(0,import_react2.useMemo)(()=>a||(d==null?void 0:d.name)||(0,import_shared.uid)(),[a,d]),h=(t=i||r)==null?void 0:t.filter(f=>f.useVisible?f.useVisible():!0),g=useSchemaInitializerMenuItems(h,a),_=(0,import_react2.useMemo)(()=>[P(x({},u),{key:p,label:m(n),icon:typeof c=="string"?(0,import_jsx_runtime.jsx)(import_icons.default,{type:c}):c,children:g})],[g,m,c,p,u,n]);return(0,import_jsx_runtime.jsx)(SchemaInitializerMenu,{onOpenChange:l,items:_})},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:()=>q(void 0,null,function*(){i(!0);try{const a=yield n.request({url:"logger:collect",method:"post",responseType:"blob",data:x({error:{message:e.message,stack:e.stack},location:o},t)}),l=window.URL.createObjectURL(new Blob([a.data],{type:"application/gzip"})),c=document.createElement("a");c.setAttribute("href",l),c.setAttribute("download","logs.tar.gz"),c.click(),c.remove()}catch(a){console.log(a)}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 pm(){return this.app.pm}get router(){return this.app.router}get pluginSettingsManager(){return this.app.pluginSettingsManager}get schemaInitializerManager(){return this.app.schemaInitializerManager}get schemaSettingsManager(){return this.app.schemaSettingsManager}get dataSourceManager(){return this.app.dataSourceManager}afterAdd(){return q(this,null,function*(){})}beforeLoad(){return q(this,null,function*(){})}load(){return q(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_client3.evaluators.get("formula.js"),useEvaluatedExpression=e=>{const t=useVariables$1(),o=useLocalVariables$1(),[r,i]=(0,import_react2.useState)();return(0,import_react2.useEffect)(()=>{q(void 0,null,function*(){if(e==null||e===""){i(void 0);return}const{exp:n,scope:a}=yield replaceVariables(e,{variables:t,localVariables:o});try{const l=evaluate(n,x({now:()=>new Date().toString()},a));i(l)}catch(l){console.error(l)}})},[t.parseVariable,e,o]),r};class SchemaInitializer{constructor(t){k(this,"options"),k(this,"name"),this.options=Object.assign({items:[]},t),this.name=t.name}get items(){return this.options.items}add(t,o){const r=t.split("."),i=r[r.length-1],n=P(x({},o),{name:i}),a=(u,m)=>{const d=this.items.findIndex(p=>p.name===u);d===-1?this.items.push(m):this.items[d]=m};if(r.length===1){a(i,n);return}const l=r.slice(0,-1).join("."),c=this.get(l);if(c){c.children||(c.children=[]);const u=t.replace(`${c.name}.`,""),m=c.children.findIndex(d=>d.name===u);m===-1?c.children.push(n):c.children[m]=n}else a(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 a=r[n],l=(o=i.children)==null?void 0:o.find(c=>c.name===a);if(l&&(i=l),n===r.length-1)return l}}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(a=>a.name===i);n!==-1&&r.children.splice(n,1)}}}var NocoBaseDesktopRouteType=(e=>(e.group="group",e.page="page",e.link="link",e.tabs="tabs",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`}}}),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,a;if(typeof r=="string"&&r.startsWith("{{")&&(n=!0,a=r),r&&typeof r=="object"&&!(0,import_react2.isValidElement)(r)){try{a=JSON.stringify(r)}catch(l){return console.warn("Failed to stringify:",l),r}if(compileCache[a])return compileCache[a];n=hasVariable(a)}if(Array.isArray(r)){try{a=JSON.stringify(r)}catch(l){return console.warn("Failed to stringify:",l),r}if(compileCache[a])return compileCache[a];n=hasVariable(a)}if(n){const l=x(x(x({},t.scope),o),i);if(!a)return import_react.Schema.compile(r,l);try{return e?import_react.Schema.compile(r,l):(compileCache[a]=compileCache[a]||import_react.Schema.compile(r,l),compileCache[a])}catch(c){return console.log("useCompile error",r,c),import_react.Schema.compile(r,l)}}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 a=(0,import_lodash.get)(n,r);return o[r][LAZY_COMPONENT_KEY]=a,{default:a}}));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="1.9.17",license="AGPL-3.0",main="lib/index.js",module$1="es/index.mjs",types="es/index.d.ts",dependencies={"@ahooksjs/use-url-state":"3.5.1","@ant-design/cssinjs":"^1.11.1","@ant-design/icons":"^5.6.1","@ant-design/pro-layout":"^7.22.1","@antv/g2plot":"^2.4.18","@budibase/handlebars-helpers":"0.14.0","@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":"1.9.17","@nocobase/sdk":"1.9.17","@nocobase/utils":"1.9.17",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",cronstrue:"^2.11.0","file-saver":"^2.0.5",filesize:"9.0.11",flat:"^5.0.2","html5-qrcode":"^2.3.8",i18next:"^22.4.9","i18next-http-backend":"^2.1.1",ignore:"^5.2.0",json5:"^2.2.3",lodash:"4.17.21","lru-cache":"6.0.0","markdown-it":"14.1.0","markdown-it-highlightjs":"3.3.1",mathjs:"^10.6.0",mermaid:"9.4.3",mime:"^4.0.4","mime-match":"^1.0.2","react-beautiful-dnd":"^13.1.0","react-device-detect":"2.2.3","react-drag-listview":"^0.1.9","react-error-boundary":"^4.0.10","react-helmet":"^6.1.0","react-hotkeys-hook":"^3.4.7","react-i18next":"^11.15.1","react-iframe":"~1.8.5","react-image-lightbox":"^5.1.4","react-intersection-observer":"9.14.0","react-js-cron":"^3.1.0","react-quill":"^2.0.0","react-router-dom":"^6.11.2","react-to-print":"^2.14.7","sanitize-html":"2.13.0","use-deep-compare-effect":"^1.8.1"},peerDependencies={react:">=18.0.0","react-dom":">=18.0.0","react-is":">=18.0.0"},devDependencies={"@testing-library/react":"^14.0.0","@types/markdown-it":"14.1.1","@types/markdown-it-highlightjs":"3.3.1","@types/react-big-calendar":"^1.6.4","axios-mock-adapter":"^1.20.0",dumi:"2.2.14","dumi-theme-nocobase":"^0.2.28"},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=P(x({},o),{properties:{}});let i=null;const n=(a,l)=>{Object.keys(a||{}).forEach(c=>{const u=a[c];if(u["x-uid"]===t["x-uid"]){i=a[c];return}else l.properties[c]=P(x({},u),{properties:{}}),n(u==null?void 0:u.properties,l.properties[c])})};return n(o.properties,r),[r,i]},translate=e=>e;class Designable{constructor(t){k(this,"current"),k(this,"options"),k(this,"appVersion"),k(this,"events",{}),this.options=t,this.current=t.current,this.appVersion=t.appVersion}get model(){return this.options.model}get query(){return this.options.query}loadAPIClientEvents(){const{api:t,t:o=translate}=this.options;if(!t)return;const r=i=>{if(!i)return[];const n=Object.values(i.properties).length,a=[];return i.mapProperties(l=>{l["x-component-props"]=l["x-component-props"]||{},l["x-component-props"].width=100/n,l["x-uid"]&&a.push({"x-uid":l["x-uid"],"x-component-props":l["x-component-props"]})}),i["x-uid"]&&a.length?a:[]};this.on("insertAdjacent",i=>q(this,[i],function*({onSuccess:n,current:a,position:l,schema:c,wrap:u,wrapped:m,removed:d}){var p;let h=[];if((m==null?void 0:m["x-component"])==="Grid.Col"&&(h=h.concat(r(m.parent))),(d==null?void 0:d["x-component"])==="Grid.Col"&&(h=h.concat(r(d.parent))),this.refresh(),!a["x-uid"])return;const g=yield t.request({url:`/uiSchemas:insertAdjacent/${a["x-uid"]}?position=${l}`,method:"post",data:{schema:addAppVersion(c,this.appVersion),wrap:u}});h.length&&(yield t.request({url:"/uiSchemas:batchPatch",method:"post",data:h})),d!=null&&d["x-uid"]&&(yield t.request({url:`/uiSchemas:remove/${d["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=>q(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=>q(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=>q(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=>q(this,[i],function*({removed:n}){let a=[];(n==null?void 0:n["x-component"])==="Grid.Col"&&(a=r(n.parent)),this.refresh(),n!=null&&n["x-uid"]&&(yield t.request({url:`/uiSchemas:remove/${n["x-uid"]}`,method:"post"}),a.length&&(yield t.request({url:"/uiSchemas:batchPatch",method:"post",data:a})),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 q(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 a=n.parent.removeProperty(n.name);if(i){const l=this.recursiveRemoveIfNoChildren(n.parent,{breakRemoveOn:r});l&&(a=l)}return this.emit("remove",{removed:a})}removeWithoutEmit(t,o={}){const{breakRemoveOn:r,removeParentsIfNoChildren:i}=o,n=t||this.current;let a=n.parent.removeProperty(n.name);if(i){const l=this.recursiveRemoveIfNoChildren(n.parent,{breakRemoveOn:r});l&&(a=l)}return a}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,a,l)=>{this.current.name===a&&(i=l),t.name===a&&(r=l)}),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:a}=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),a&&(r.removed=this.recursiveRemoveIfNoChildren(t.parent,{breakRemoveOn:n}))}else t&&(t=(0,import_cloneDeep.default)(t));const l={};let c=!1,u=0,m=0;this.current.parent.mapProperties((_,f)=>{f===this.current.name&&(m=u,c=!0,++u),_["x-index"]=u,++u,c&&(l[f]=_,this.current.parent.removeProperty(f))}),this.prepareProperty(t);const d=i(t),p=this.current.parent.addProperty(d.name||(0,import_shared.uid)(),d);p["x-index"]=m,p.parent=this.current.parent,this.current.parent.setProperties(l);const[h,g]=splitWrapSchema(p,t);this.emit("insertAdjacent",x({position:"beforeBegin",schema:g,wrapped:d,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:a}=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),a&&(r.removed=this.recursiveRemoveIfNoChildren(t.parent,{breakRemoveOn:n}))}else t&&(t=(0,import_cloneDeep.default)(t));const l={};let c=1;this.current.mapProperties((h,g)=>{h["x-index"]=c,++c,l[g]=h}),this.current.properties={},this.prepareProperty(t);const u=i(t),m=this.current.addProperty(u.name||(0,import_shared.uid)(),u);m["x-index"]=0,m.parent=this.current,this.current.setProperties(l);const[d,p]=splitWrapSchema(m,t);this.emit("insertAdjacent",x({position:"afterBegin",schema:p,wrap:d,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:a}=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),a&&(r.removed=this.recursiveRemoveIfNoChildren(t.parent,{breakRemoveOn:n}))}else t&&(t=(0,import_cloneDeep.default)(t));this.prepareProperty(t);const l=i(t),c=this.current.addProperty(l.name||(0,import_shared.uid)(),l);c.parent=this.current;const[u,m]=splitWrapSchema(c,t);return this.emit("insertAdjacent",x({position:"beforeEnd",schema:m,wrap:u,wrapped:l},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:a}=o;let l=0,c=0,u=!1;const m={};if(this.current.parent.mapProperties((_,f)=>{_["x-index"]=l,f===this.current.name&&(++l,c=l,u=!0),++l,u&&f!==this.current.name&&(m[f]=_,this.current.parent.removeProperty(f))}),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),a&&(r.removed=this.recursiveRemoveIfNoChildren(t.parent,{breakRemoveOn:n})),t.parent=null}else t&&(t=(0,import_cloneDeep.default)(t));this.prepareProperty(t);const d=i(t),p=this.current.parent.addProperty(d.name||(0,import_shared.uid)(),d);p.parent=this.current.parent,p["x-index"]=c,this.current.parent.setProperties(m);const[h,g]=splitWrapSchema(p,t);this.emit("insertAdjacent",x({position:"afterEnd",schema:g,wrap:h,wrapped:d},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]),a=(0,import_react2.useMemo)(()=>()=>(0,import_jsx_runtime.jsx)(import_jsx_runtime.Fragment,{}),[]),l=(0,import_ahooks.useUpdate)(),c=useRefreshFieldSchema(),u=useRefreshComponent(),m=(0,import_react2.useCallback)(v=>{o==null||o(),l(),c==null||c(v),u==null||u()},[o,l,c,u]),d=(0,import_react.useField)(),p=(0,import_react.useFieldSchema)(),h=useAPIClient(),{t:g}=(0,import_react_i18next.useTranslation)(),_=(0,import_react2.useMemo)(()=>createDesignable({t:g,api:h,refresh:m,current:p,model:d,appVersion:clientPkg.version}),[g,h,m,p,d]);(0,import_react2.useEffect)(()=>{_.loadAPIClientEvents()},[_]);const{isMobileLayout:f}=useMobileLayout();return{dn:_,designable:f?!1:e,reset:r,refresh:m,setDesignable:t,DesignableBar:a,findComponent:(0,import_react2.useCallback)(v=>{var C;if(!v)return null;if(typeof v!="string")return v;const S=(0,import_get.default)(n,v);return(C=S==null?void 0:S[LAZY_COMPONENT_KEY])!=null?C:S},[import_get.default]),on:_.on.bind(_),patch:(0,import_react2.useCallback)((v,C)=>{const S=b=>{Object.keys(b).forEach(y=>{const F=b[y];y==="title"&&(d.title=F,p.title=F),y==="x-decorator-props"&&(d.decoratorProps||(d.decoratorProps={}),p["x-decorator-props"]||(p["x-decorator-props"]={}),Object.keys(F).forEach(j=>{d.decoratorProps[j]=F[j],p["x-decorator-props"][j]=F[j]})),y==="x-component-props"&&(d.componentProps||(d.componentProps={}),p["x-component-props"]||(p["x-component-props"]={}),Object.keys(F).forEach(j=>{d.componentProps[j]=F[j],p["x-component-props"][j]=F[j]}))})};if(typeof v=="string"){const b={};return(0,import_set.default)(b,v,C),S(b)}S(v),m()},[_]),shallowMerge:(0,import_react2.useCallback)(v=>{_.shallowMerge(v)},[_]),deepMerge:(0,import_react2.useCallback)(v=>{_.deepMerge(v)},[_]),remove:(0,import_react2.useCallback)((v,C)=>{_.remove(v,C)},[_]),insertAdjacent:(0,import_react2.useCallback)((v,C,S)=>{_.insertAdjacent(v,C,S)},[_]),insertBeforeBegin:(0,import_react2.useCallback)(v=>{_.insertBeforeBegin(v)},[_]),insertAfterBegin:(0,import_react2.useCallback)(v=>{_.insertAfterBegin(v)},[_]),insertBeforeEnd:(0,import_react2.useCallback)(v=>{_.insertBeforeEnd(v)},[_]),insertAfterEnd:(0,import_react2.useCallback)(v=>{_.insertAfterEnd(v)},[_])}}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(P(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:a}=(0,import_react_i18next.useTranslation)(),{label:l}=((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:a("Record picker"),value:"CollectionField"},{label:a("Select"),value:"AssociationSelect"}];switch(n.interface){case"o2m":return[{label:a("Record picker"),value:"CollectionField"},{label:a("Subtable"),value:"TableField"},{label:a("Select"),value:"AssociationSelect"}];case"m2o":case"m2m":case"linkTo":return[{label:a("Record picker"),value:"CollectionField"},{label:a("Select"),value:"AssociationSelect"}];default:return[{label:a("Record picker"),value:"CollectionField"},{label:a("Subform"),value:"FormField"},{label:a("Select"),value:"AssociationSelect"}]}},[a,n==null?void 0:n.interface,l])},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"])),a=useCompile();(0,import_react2.useEffect)(()=>{var l;t!=null&&t.title||(t.title=a((l=n==null?void 0:n.uiSchema)==null?void 0:l.title))},[(e=n==null?void 0:n.uiSchema)==null?void 0:e.title])},useDef$4=()=>({}),useProps=(e={})=>{const t=e,{useProps:o=useDef$4}=t,r=W(t,["useProps"]);let i=o;typeof o!="function"&&(i=useDef$4);const n=i();return x(x({},r),n)};function useParsedFilter({filterOption:e,onFilterChange:t}){const{parseFilter:o,findVariable:r}=useParseDataScopeFilter(),[i,n]=(0,import_react2.useState)({}),[a,l]=(0,import_react2.useState)(!!e);return(0,import_react2.useEffect)(()=>{if(!e)return;const c=()=>q(this,null,function*(){l(!0);const m=yield o(e);l(!1),n(m),t==null||t(m)});c();const u=import_lodash.default.debounce(c,DEBOUNCE_WAIT);(0,import_reactive.reaction)(()=>(0,import_client.flatten)(e,{breakOn({key:m}){return m.startsWith("$")&&m!=="$and"&&m!=="$or"},transformValue(m){if(!isVariable$1(m))return m;const d=getVariableName(m),p=r(d);let h=null;const g=getPath(m).split(".");return g.forEach((_,f)=>{const v=g.slice(0,f+1).join("."),C=(0,import_client.getValuesByPath)({[d]:(p==null?void 0:p.ctx)||{}},v);import_lodash.default.isEmpty(C)||(h=C)}),h}}),u,{equals:import_lodash.default.isEqual})},[JSON.stringify(e),o,r]),{filter:i,parseVariableLoading:a}}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:a}=(o==null?void 0:o["x-decorator-props"])||{};return e.dragSort&&a&&(n.sort=a),P(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(a=>{const l=o(),c=(0,import_react2.useRef)(!1),u=(0,import_react2.useDeferredValue)(l);return!c.current&&u?(0,import_jsx_runtime.jsx)(i,{}):(c.current=!0,(0,import_jsx_runtime.jsx)(e,x({},a)))});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)=>q(void 0,[e,t],function*({rules:o,variables:r,localVariables:i},n){return(yield Promise.all(o.filter(a=>!a.disabled).map(a=>q(void 0,null,function*(){return(yield conditionAnalyses({ruleGroup:a.condition,variables:r,localVariables:i,conditionType:a.conditionType},n))?a:null})))).filter(Boolean).map(a=>a.actions).flat()}),getSatisfiedValues=(e,t)=>q(void 0,[e,t],function*({rules:o,variables:r,localVariables:i},n){return(yield getSatisfiedActions({rules:o,variables:r,localVariables:i},n)).map(a=>P(x({},a),{value:getActionValue(a.operator,a.value)}))}),getSatisfiedValueMap=(e,t)=>q(void 0,[e,t],function*({rules:o,variables:r,localVariables:i},n){return(yield getSatisfiedValues({rules:o,variables:r,localVariables:i},n)).reduce((a,l)=>P(x({},a),{[l.operator]:l.value}),{})});function useSatisfiedActionValues({formValues:e,category:t="default",rules:o,schema:r,form:i}){const[n,a]=(0,import_react2.useState)({}),l=(0,import_react.useFieldSchema)(),c=useVariables$1(),u=useLocalVariables$1({currentForm:{values:e}}),m=r??l,d=o??(m[LinkageRuleDataKeyMap[t]]||(m==null?void 0:m.parent[LinkageRuleDataKeyMap[t]])),p=useApp(),h=(0,import_react2.useCallback)(()=>{d&&e&&getSatisfiedValueMap({rules:d,variables:c,localVariables:u},p.jsonLogic).then(g=>{(0,import_lodash.isEmpty)(g)?a({}):a(g)}).catch(g=>{throw new Error(g.message)})},[c,u,d,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,P(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})]}));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 a,l;return o["x-uid"]!==n.uid&&(isSameCollection(n.collection,r)||((a=getSupportFieldsByAssociation(i(r.name,r.dataSource),n))==null?void 0:a.length)||((l=getSupportFieldsByForeignKey(r,n))==null?void 0:l.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 a=o(`${r}.${n}`);if(["datetime","datetimeNoTz","date","unixTimestamp","createdAt","updatedAt"].includes(a==null?void 0:a.interface))return!0;if(a!=null&&a.target){if(Array.isArray(i))return!0;const l=a.targetKey||"id";if(i&&i[l]!=null)return!0}return!1}}),{$and:Object.keys(e).map(i=>{let n=import_lodash.default.get(e,i);const a=o(`${r}.${i}`);return a!=null&&a.target&&["hasOne","hasMany","belongsTo","belongsToMany","belongsToArray"].includes(a.type)&&(n=(0,import_client.getValuesByPath)(n,a.targetKey||"id"),i=`${i}.${a.targetKey||"id"}`,(a==null?void 0:a.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,a]=(0,import_react2.useState)(()=>o&&o.some(u=>i.some(m=>m.uid===u.uid))),l=Object.keys(o||{});(0,import_react2.useEffect)(()=>{a(o&&o.some(u=>i.some(m=>m.uid===u.uid)))},[l.length,o,i]);const c=(0,import_react2.useCallback)((u,m="id",d="$eq")=>{const p=i.find(h=>h.uid===e.parent["x-uid"]);i.forEach(h=>{var g,_,f,v;let C=m;const S=o.find(j=>j.uid===h.uid);if(!S)return;import_lodash.default.isFunction(u)&&(u=u(S,h,getSourceKey$1(p,S.field))),import_lodash.default.isFunction(m)&&(C=m(S,h)),import_lodash.default.isFunction(d)&&(d=d(S));const b=((g=h.service.params)==null?void 0:g[0])||{},y=((f=(_=h.service.params)==null?void 0:_[1])==null?void 0:f.filters)||{};if(u!=null)y[r]={$and:[{[C]:{[d]:u}}]};else if((v=h.clearSelection)==null||v.call(h),delete y[r],h.dataLoadingMode==="manual")return h.clearData();const F=mergeFilter([...Object.values(y).map(j=>removeNullCondition(j)),h.defaultFilter]);h.doFilter(P(x({},b),{page:1,filter:F}),{filters:y})})},[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(a=>a.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,a)=>a["x-component"]==="AssociationField."+e?a: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,a,l,c,u,m;const{action:d="list",service:p,useOriginalFilter:h}=e,g=(0,import_react.useFieldSchema)(),_=(0,import_react.useField)(),{getField:f}=useCollection_deprecated(),{getCollectionJoinField:v}=useCollectionManager_deprecated(),C=useRecord(),{isNew:S}=useCollectionRecord()||{},b=((0,import_lodash.isString)((r=(o=(t=g==null?void 0:g["x-component-props"])==null?void 0:t.service)==null?void 0:o.params)==null?void 0:r.filter)?(a=(n=(i=_.componentProps)==null?void 0:i.service)==null?void 0:n.params)==null?void 0:a.filter:(u=(c=(l=g==null?void 0:g["x-component-props"])==null?void 0:l.service)==null?void 0:c.params)==null?void 0:u.filter)||((m=p==null?void 0:p.params)==null?void 0:m.filter),{filter:y}=useParsedFilter({filterOption:b,onFilterChange:()=>{S&&_.reset()}}),F=(0,import_react2.useMemo)(()=>f(g.name)||v(g==null?void 0:g["x-collection-field"]),[g]),j=C==null?void 0:C[F==null?void 0:F.sourceKey],A=(0,import_react2.useMemo)(()=>{const D=["oho","o2m"].includes(F==null?void 0:F.interface);return mergeFilter([mergeFilter([D&&!isInFilterFormBlock(g)&&F!=null&&F.foreignKey&&!h?{[F.foreignKey]:{$is:null}}:null,y]),D&&j!==void 0&&j!==null&&!isInFilterFormBlock(g)&&F!=null&&F.foreignKey&&!h?{[F.foreignKey]:{$eq:j}}:null],"$or")},[F==null?void 0:F.interface,F==null?void 0:F.foreignKey,g,y,j,h]);return(0,import_react2.useMemo)(()=>P(x({resource:F==null?void 0:F.target,action:d},p),{params:P(x({},p==null?void 0:p.params),{filter:A})}),[F==null?void 0:F.target,d,A,p])}const useFieldNames$1=(e={})=>{var t,o,r,i,n;const a=(0,import_react.useFieldSchema)(),l=((i=(r=(o=(t=a["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=a["x-component-props"])==null?void 0:n.fieldNames)||e.fieldNames;return x({label:"label",value:"value"},l)},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:a}=e.value,l=(0,import_react2.useMemo)(()=>import_lodash.default.omitBy({value:o,collection:r,fieldSchema:i,skip:a,parent:n||(t!=null&&t.skip?t.parent:t)},import_lodash.default.isUndefined),[o,r,i,a,n,t]);return(0,import_jsx_runtime.jsx)(SubFormContext.Provider,{value:l,children:e.children})},useSubFormValue=()=>{const{value:e,collection:t,fieldSchema:o,parent:r}=(0,import_react2.useContext)(SubFormContext)||{};return{formValue:e,collection:t,fieldSchema:o,parent:r}},useColumnSettings=e=>{const{t}=(0,import_react_i18next.useTranslation)(),o=`nocobase_table_column_settings_${e}`,r=(0,import_react2.useCallback)(()=>{try{const a=localStorage.getItem(o);return a?JSON.parse(a):null}catch(a){return console.warn("Failed to parse table column settings from localStorage:",a),null}},[o]),i=(0,import_react2.useCallback)(a=>{try{const l=JSON.stringify(a);localStorage.setItem(o,l);const c=new CustomEvent("nocobase-table-settings-changed",{detail:{key:o,tableId:e,settings:a}});window.dispatchEvent(c)}catch(l){console.warn("Failed to save table column settings to localStorage:",l),import_antd.message.error(t("Failed to save table settings"))}},[o,e,t]),n=(0,import_react2.useCallback)(()=>{try{localStorage.removeItem(o);const a=new CustomEvent("nocobase-table-settings-changed",{detail:{key:o,tableId:e,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"))}},[o,e,t]);return{getSettings:r,saveSettings:i,clearSettings:n}},useTableColumnIntegration=(e,t=!0)=>{const o=(0,import_react.useFieldSchema)(),r=(o==null?void 0:o["x-uid"])||"default",{getSettings:i}=useColumnSettings(r),[n,a]=(0,import_react2.useState)(0);(0,import_react2.useEffect)(()=>{const c=u=>{const{key:m,tableId:d}=u.detail;(m.includes(r)||d===r)&&a(p=>p+1)};return window.addEventListener("nocobase-table-settings-changed",c),()=>{window.removeEventListener("nocobase-table-settings-changed",c)}},[r]);const l=(0,import_react2.useMemo)(()=>i(),[i,n]);return{columns:(0,import_react2.useMemo)(()=>{if(!t||!l||l.length===0)return e;const c=new Map;l.forEach(h=>{c.set(h.key,h)});const u=e.map(h=>{const g=c.get(h.key);if(g){const _=h.columnHidden||!g.visible,f=g.width||h.width,v=g.fixed||h.fixed;return P(x({},h),{columnHidden:_,fixed:v,width:f,_orderIndex:g.order})}return h}),m=[],d=[];u.forEach(h=>{h._orderIndex!==void 0?m.push(h):d.push(h)}),m.sort((h,g)=>(h._orderIndex||0)-(g._orderIndex||0));const p=[...m,...d];return p.forEach(h=>{delete h._orderIndex}),p},[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};
|
|
@@ -339,7 +339,7 @@ ${JSON.stringify(V,null,2)}`)},[u,c,l,i,r,j,t,a,n,g,o,_,S,A,b,y,h]),B=(0,import_
|
|
|
339
339
|
.ant-input {
|
|
340
340
|
width: 100% !important;
|
|
341
341
|
}
|
|
342
|
-
`})},{displayName:"ChildDynamicComponent"}),RemoveActionContext=(0,import_react2.createContext)(null);RemoveActionContext.displayName="RemoveActionContext";const FilterContext$2=(0,import_react2.createContext)(null);FilterContext$2.displayName="FilterContext";const LinkageLogicContext=(0,import_react2.createContext)(null);LinkageLogicContext.displayName="LinkageLogicContext";const DynamicComponent$1=e=>{const{dynamicComponent:t,disabled:o}=(0,import_react2.useContext)(FilterContext$2)||{},r=useComponent(t),i=(0,import_react2.useMemo)(()=>(0,import_core.createForm)({values:{value:e.value},disabled:o,effects(){(0,import_core.onFieldValueChange)("value",a=>{var l;(l=e==null?void 0:e.onChange)==null||l.call(e,a.value)})}}),[JSON.stringify(e.schema),JSON.stringify(e.value)]),n=()=>{var a;return(0,import_jsx_runtime.jsx)(import_react.FieldContext.Provider,{value:null,children:(0,import_jsx_runtime.jsx)(SchemaComponent,{schema:P(x({"x-component":"Input"},e.schema),{"x-component-props":(0,import_shared.merge)(((a=e==null?void 0:e.schema)==null?void 0:a["x-component-props"])||{},{style:{minWidth:150,width:"100%"}}),name:"value","x-read-pretty":!1,"x-validator":void 0,"x-decorator":void 0})})})};return(0,import_jsx_runtime.jsx)(import_react.FormContext.Provider,{value:i,children:r?import_react2.default.createElement(r,{value:e.value,onChange:e==null?void 0:e.onChange,renderSchemaComponent:n}):n()})},{Option}=import_antd.Select,ValueDynamicComponent=e=>{const{fieldValue:t,schema:o,setValue:r,collectionName:i,inputModes:n}=e,[a,l]=(0,import_react2.useState)((t==null?void 0:t.mode)||"constant"),{t:c}=(0,import_react_i18next.useTranslation)(),{form:u}=useFormBlockContext(),m=useRecord(),d=useVariableOptions({collectionField:{uiSchema:o},form:u,record:m,uiSchema:o,noDisabled:!0}),{compatOldVariables:p}=useCompatOldVariables({collectionField:{uiSchema:o,collectionName:i},uiSchema:o,blockCollectionName:i}),h=(0,import_react2.useMemo)(()=>({minWidth:150,maxWidth:430}),[]);(0,import_react2.useEffect)(()=>{l((t==null?void 0:t.mode)||"constant")},[t==null?void 0:t.mode]);const g=(0,import_react2.useCallback)(F=>{r({mode:a,value:F})},[a,r]),_=(0,import_react2.useMemo)(()=>({minWidth:150,maxWidth:430,fontSize:13,display:"inline-block",verticalAlign:"middle"}),[]),f=(0,import_react2.useCallback)(F=>{const j=F.replaceAll(`${i}.`,"").replaceAll("$system.","").trim();r({mode:a,value:F,result:j})},[i,a,r]),v=(0,import_react2.useMemo)(()=>({minWidth:390,borderRadius:0}),[]),C=(0,import_react2.useMemo)(()=>p(d,{value:t==null?void 0:t.value}),[p,t==null?void 0:t.value,d]),S={constant:(0,import_jsx_runtime.jsx)("div",{role:"button","aria-label":"dynamic-component-linkage-rules",style:h,className:import_css.css`
|
|
342
|
+
`})},{displayName:"ChildDynamicComponent"}),DateScopeComponent=e=>{var t,o,r,i,n,a,l,c,u,m,d,p,h,g;const _=(0,import_react.useFieldSchema)(),{getCollectionJoinField:f}=useCollectionManager_deprecated(),v=f(_==null?void 0:_["x-collection-field"])||{},C=((t=v==null?void 0:v.uiSchema)==null?void 0:t["x-component-props"].gmt)||!1,S=((o=v==null?void 0:v.uiSchema)==null?void 0:o["x-component-props"].utc)||!1,{form:b}=useFormBlockContext(),y=useRecord(),F=((r=_==null?void 0:_["x-component-props"])==null?void 0:r.showTime)||((n=(i=v==null?void 0:v.uiSchema)==null?void 0:i["x-component-props"])==null?void 0:n.showTime)||!1,j=((a=_==null?void 0:_["x-component-props"])==null?void 0:a.dateFormat)||((c=(l=v==null?void 0:v.uiSchema)==null?void 0:l["x-component-props"])==null?void 0:c.dateFormat)||"YYYY-MM-DD",A=((u=_==null?void 0:_["x-component-props"])==null?void 0:u.timeFormat)||((d=(m=v==null?void 0:v.uiSchema)==null?void 0:m["x-component-props"])==null?void 0:d.timeFormat)||"HH:mm:ss",D=((p=_==null?void 0:_["x-component-props"])==null?void 0:p.picker)||((g=(h=v==null?void 0:v.uiSchema)==null?void 0:h["x-component-props"])==null?void 0:g.picker)||"date",B=(0,import_react2.useCallback)(M=>(0,import_jsx_runtime.jsx)(SchemaComponent,{schema:{"x-component":"DatePicker","x-component-props":{dateFormat:j,timeFormat:A,gmt:C,utc:S,picker:D,showTime:F,placeholder:'{{t("Please select time or variable")}}',style:{minWidth:250}},name:"value","x-read-pretty":!1,"x-validator":void 0,"x-decorator":void 0}}),[j,C,D,F,A,S]),w=(0,import_react2.useCallback)(M=>(0,import_jsx_runtime.jsx)(FlagProvider,{collectionField:v,children:(0,import_jsx_runtime.jsx)(VariableInput,P(x({},M),{form:b,record:y,noDisabled:!0,style:{minWidth:"250px"},renderSchemaComponent:B}))}),[_,b,y,B]);return(0,import_jsx_runtime.jsx)("div",{children:(0,import_jsx_runtime.jsx)(SchemaComponent,{schema:{type:"object","x-component":"FormLayout","x-component-props":{layout:"horizontal",labelStyle:{marginTop:"6px"},labelCol:2,wrapperCol:24},properties:{_minDate:{type:"string",title:'{{t("Min")}}',"x-decorator":"FormItem","x-decorator-props":{labelCol:4,wrapperCol:20,labelAlign:"left"},"x-component":w,"x-component-props":{name:"_minDate"}},_maxDate:{type:"string",title:'{{t("Max")}}',"x-decorator":"FormItem","x-decorator-props":{labelCol:4,wrapperCol:20,labelAlign:"left"},"x-component":w,"x-component-props":{name:"_maxDate"}}}}})})},RemoveActionContext=(0,import_react2.createContext)(null);RemoveActionContext.displayName="RemoveActionContext";const FilterContext$2=(0,import_react2.createContext)(null);FilterContext$2.displayName="FilterContext";const LinkageLogicContext=(0,import_react2.createContext)(null);LinkageLogicContext.displayName="LinkageLogicContext";const DynamicComponent$1=e=>{const{dynamicComponent:t,disabled:o}=(0,import_react2.useContext)(FilterContext$2)||{},r=useComponent(t),i=(0,import_react2.useMemo)(()=>(0,import_core.createForm)({values:{value:e.value},disabled:o,effects(){(0,import_core.onFieldValueChange)("value",a=>{var l;(l=e==null?void 0:e.onChange)==null||l.call(e,a.value)})}}),[JSON.stringify(e.schema),JSON.stringify(e.value)]),n=()=>{var a;return(0,import_jsx_runtime.jsx)(import_react.FieldContext.Provider,{value:null,children:(0,import_jsx_runtime.jsx)(SchemaComponent,{schema:P(x({"x-component":"Input"},e.schema),{"x-component-props":(0,import_shared.merge)(((a=e==null?void 0:e.schema)==null?void 0:a["x-component-props"])||{},{style:{minWidth:150,width:"100%"}}),name:"value","x-read-pretty":!1,"x-validator":void 0,"x-decorator":void 0})})})};return(0,import_jsx_runtime.jsx)(import_react.FormContext.Provider,{value:i,children:r?import_react2.default.createElement(r,{value:e.value,onChange:e==null?void 0:e.onChange,renderSchemaComponent:n}):n()})},OptionsComponent=e=>{const{fieldValue:t,setValue:o,schema:r}=e,i=(0,import_react2.useCallback)(n=>{o({value:n})},[o]);return(0,import_jsx_runtime.jsx)(import_antd.Select,{style:{minWidth:200,maxWidth:500},onChange:i,value:t==null?void 0:t.value,mode:"multiple",options:(r==null?void 0:r.enum)||[]})},{Option}=import_antd.Select,ValueDynamicComponent=e=>{const{fieldValue:t,schema:o,setValue:r,collectionName:i,inputModes:n}=e,[a,l]=(0,import_react2.useState)((t==null?void 0:t.mode)||"constant"),{t:c}=(0,import_react_i18next.useTranslation)(),{form:u}=useFormBlockContext(),m=useRecord(),d=useVariableOptions({collectionField:{uiSchema:o},form:u,record:m,uiSchema:o,noDisabled:!0}),{compatOldVariables:p}=useCompatOldVariables({collectionField:{uiSchema:o,collectionName:i},uiSchema:o,blockCollectionName:i}),h=(0,import_react2.useMemo)(()=>({minWidth:150,maxWidth:430}),[]);(0,import_react2.useEffect)(()=>{l((t==null?void 0:t.mode)||"constant")},[t==null?void 0:t.mode]);const g=(0,import_react2.useCallback)(F=>{r({mode:a,value:F})},[a,r]),_=(0,import_react2.useMemo)(()=>({minWidth:150,maxWidth:430,fontSize:13,display:"inline-block",verticalAlign:"middle"}),[]),f=(0,import_react2.useCallback)(F=>{const j=F.replaceAll(`${i}.`,"").replaceAll("$system.","").trim();r({mode:a,value:F,result:j})},[i,a,r]),v=(0,import_react2.useMemo)(()=>({minWidth:390,borderRadius:0}),[]),C=(0,import_react2.useMemo)(()=>p(d,{value:t==null?void 0:t.value}),[p,t==null?void 0:t.value,d]),S={constant:(0,import_jsx_runtime.jsx)("div",{role:"button","aria-label":"dynamic-component-linkage-rules",style:h,className:import_css.css`
|
|
343
343
|
.ant-input-affix-wrapper {
|
|
344
344
|
border-radius: 0px;
|
|
345
345
|
}
|
|
@@ -358,7 +358,7 @@ ${JSON.stringify(V,null,2)}`)},[u,c,l,i,r,j,t,a,n,g,o,_,S,A,b,y,h]),B=(0,import_
|
|
|
358
358
|
.x-button {
|
|
359
359
|
height: auto !important;
|
|
360
360
|
}
|
|
361
|
-
`,children:[(0,import_jsx_runtime.jsx)(Variable.TextArea,{value:t==null?void 0:t.value,onChange:f,scope:C,style:v}),(0,import_jsx_runtime.jsxs)("div",{children:[(0,import_jsx_runtime.jsxs)("span",{style:{marginLeft:".25em"},className:"ant-formily-item-extra",children:[c("Syntax references"),":"]}),(0,import_jsx_runtime.jsx)("a",{href:"https://docs.nocobase.com/handbook/calculation-engines/formula",target:"_blank",rel:"noreferrer",children:"Formula.js"})]})]})},b=F=>n?n.indexOf(F)>-1:!0,y=[{value:"constant",label:c("Constant value")},{value:"express",label:c("Expression")},{value:"empty",label:c("Empty")}].filter(F=>b(F.value));return(0,import_jsx_runtime.jsxs)(import_antd.Input.Group,{compact:!0,children:[(0,import_jsx_runtime.jsx)(import_antd.Select,{role:"button","data-testid":"select-linkage-value-type",value:a,style:{width:150},onChange:F=>{l(F),r({mode:F||(t==null?void 0:t.mode)})},children:y.map(F=>(0,import_jsx_runtime.jsx)(Option,{value:F.value,children:F.label},F.value))}),S[a]]})},
|
|
361
|
+
`,children:[(0,import_jsx_runtime.jsx)(Variable.TextArea,{value:t==null?void 0:t.value,onChange:f,scope:C,style:v}),(0,import_jsx_runtime.jsxs)("div",{children:[(0,import_jsx_runtime.jsxs)("span",{style:{marginLeft:".25em"},className:"ant-formily-item-extra",children:[c("Syntax references"),":"]}),(0,import_jsx_runtime.jsx)("a",{href:"https://docs.nocobase.com/handbook/calculation-engines/formula",target:"_blank",rel:"noreferrer",children:"Formula.js"})]})]})},b=F=>n?n.indexOf(F)>-1:!0,y=[{value:"constant",label:c("Constant value")},{value:"express",label:c("Expression")},{value:"empty",label:c("Empty")}].filter(F=>b(F.value));return(0,import_jsx_runtime.jsxs)(import_antd.Input.Group,{compact:!0,children:[(0,import_jsx_runtime.jsx)(import_antd.Select,{role:"button","data-testid":"select-linkage-value-type",value:a,style:{width:150},onChange:F=>{l(F),r({mode:F||(t==null?void 0:t.mode)})},children:y.map(F=>(0,import_jsx_runtime.jsx)(Option,{value:F.value,children:F.label},F.value))}),S[a]]})},findOption$1=(e=[],t)=>{var o;let r=t,i;return(o=e==null?void 0:e.forEach)==null||o.call(e,(n,a)=>{const l=r.find(c=>c.name===n);l&&(i=l),r=(l==null?void 0:l.children)||[]}),i},useValues$1=e=>{const t=(0,import_react.useField)(),o=(0,import_react2.useContext)(LinkageLogicContext);return(0,import_react2.useEffect)(()=>{var r;t.data=x({},t.initialValue||t.value);const i=(r=t.data)==null?void 0:r.targetFields,n=i&&findOption$1(i,e)||{},a=(n==null?void 0:n.operators)||[];t.data.operators=a==null?void 0:a.filter(l=>{const c=["select","radioGroup","multipleSelect","checkboxGroup"].includes((n==null?void 0:n.interface)||""),u=["date","datetime","dateOnly","datetimeNoTz","unixTimestamp","createdAt","updatedAt"].includes((n==null?void 0:n.interface)||"");return!(i.length>1&&[ActionType.Value,ActionType.DateScope,ActionType.Options].includes(l.value)||!c&&l.value===ActionType.Options||!u&&l.value===ActionType.DateScope)}),t.data.schema=n==null?void 0:n.schema},[o]),P(x({fields:e},t.data),{setDataIndex(r){const i=findOption$1(r,e);t.data=t.data||{};const n=i==null?void 0:i.operators;t.data.operators=n==null?void 0:n.filter(a=>{const l=["select","radioGroup","multipleSelect","checkboxGroup"].includes((i==null?void 0:i.interface)||""),c=["date","datetime","dateOnly","datetimeNoTz","unixTimestamp","createdAt","updatedAt"].includes((i==null?void 0:i.interface)||"");return!(r.length>1&&[ActionType.Value,ActionType.DateScope,ActionType.Options].includes(a.value)||!l&&a.value===ActionType.Options||!c&&a.value===ActionType.DateScope)}),t.data.schema=i==null?void 0:i.schema,t.value=t.value||[],t.data.operator=void 0,t.data.value=void 0,t.value=P(x({},t.value),{targetFields:r,operator:void 0,value:void 0})},setOperator(r){t.data.operator=r,t.value=P(x({},t.value),{operator:r})},setValue(r){t.data.value=r,t.value=P(x({},t.value),{value:r})}})},FormFieldLinkageRuleAction=(0,import_react.observer)(e=>{const{value:t,options:o,collectionName:r}=e,{t:i}=(0,import_react_i18next.useTranslation)(),n=useCompile(),a=(0,import_react2.useContext)(RemoveActionContext),l=useFlag(),{schema:c,fields:u,operator:m,setDataIndex:d,setOperator:p,setValue:h,value:g,operators:_}=useValues$1(o);return(0,import_jsx_runtime.jsx)(LinkageLogicContext.Provider,{value:(0,import_shared.uid)(),children:(0,import_jsx_runtime.jsx)("div",{style:{marginBottom:8},className:import_css.css`
|
|
362
362
|
.ant-space {
|
|
363
363
|
display: inline-block;
|
|
364
364
|
}
|
|
@@ -374,11 +374,7 @@ ${JSON.stringify(V,null,2)}`)},[u,c,l,i,r,j,t,a,n,g,o,_,S,A,b,y,h]),B=(0,import_
|
|
|
374
374
|
}
|
|
375
375
|
`,children:[(0,import_jsx_runtime.jsx)(import_antd_v5.TreeSelect,{role:"button","data-testid":"select-linkage-property-field",className:import_css.css`
|
|
376
376
|
min-width: 160px;
|
|
377
|
-
`,fieldNames:{label:"title",value:"name",children:"children"},treeCheckable:!0,value:t==null?void 0:t.targetFields,multiple:!0,allowClear:!0,treeData:n(u),onChange:f=>{d(f)},placeholder:i("Select field"),treeNodeFilterProp:"title",
|
|
378
|
-
.ant-select-tree-list-holder > div {
|
|
379
|
-
overflow-y: auto !important;
|
|
380
|
-
}
|
|
381
|
-
`}),(0,import_jsx_runtime.jsx)(import_antd.Select,{role:"button","data-testid":"select-linkage-action-field",popupMatchSelectWidth:!1,value:m,className:import_css.css`
|
|
377
|
+
`,fieldNames:{label:"title",value:"name",children:"children"},treeCheckable:!0,value:t==null?void 0:t.targetFields,multiple:!0,allowClear:!0,treeData:n(u),onChange:f=>{d(f)},placeholder:i("Select field"),treeNodeFilterProp:"title",virtual:!1}),(0,import_jsx_runtime.jsx)(import_antd.Select,{role:"button","data-testid":"select-linkage-action-field",popupMatchSelectWidth:!1,value:m,className:import_css.css`
|
|
382
378
|
min-width: 120px;
|
|
383
379
|
`,options:n(_),onChange:f=>{p(f)},placeholder:i("action")}),[ActionType.Value].includes(m)&&(0,import_jsx_runtime.jsx)(FlagProvider,P(x({},l),{collectionField:{uiSchema:c},children:(0,import_jsx_runtime.jsx)(ValueDynamicComponent,{fieldValue:g,schema:c,setValue:h,collectionName:r})})),[ActionType.Options].includes(m)&&(0,import_jsx_runtime.jsx)(OptionsComponent,{fieldValue:g,schema:c,setValue:h,collectionName:r}),[ActionType.DateScope].includes(m)&&(0,import_jsx_runtime.jsx)(DateScopeComponent,{fieldValue:g,schema:c,setValue:h,collectionName:r}),!e.disabled&&(0,import_jsx_runtime.jsx)("a",{role:"button","aria-label":"icon-close",style:{verticalAlign:"text-top"},children:(0,import_jsx_runtime.jsx)(import_icons.CloseCircleOutlined,{onClick:()=>a(),style:{color:"#bfbfbf"}})})]})})})},{displayName:"FormFieldLinkageRuleAction"}),FormButtonLinkageRuleAction=(0,import_react.observer)(e=>{const{value:t,options:o}=e,{t:r}=(0,import_react_i18next.useTranslation)(),i=useCompile(),[n,a]=(0,import_react2.useState)(!1),l=(0,import_react2.useContext)(RemoveActionContext),{schema:c,operator:u,setOperator:m,setValue:d}=useValues$1(o),p=(0,import_react2.useMemo)(()=>i([{label:r("Visible"),value:ActionType.Visible,schema:{}},{label:r("Hidden"),value:ActionType.Hidden,schema:{}},{label:r("Disabled"),value:ActionType.Disabled,schema:{}},{label:r("Enabled"),value:ActionType.Active,schema:{}}]),[i,r]),h=(0,import_react2.useCallback)(f=>{const v=[ActionType.Value].includes(f);a(v),m(f)},[m]),g=(0,import_react2.useCallback)(f=>{d(f)},[d]),_=(0,import_react2.useMemo)(()=>({color:"#bfbfbf"}),[]);return(0,import_jsx_runtime.jsx)("div",{style:{marginBottom:8},children:(0,import_jsx_runtime.jsxs)(import_antd.Space,{children:[(0,import_jsx_runtime.jsx)(import_antd.Select,{"data-testid":"select-linkage-properties",popupMatchSelectWidth:!1,value:u,options:p,onChange:h,placeholder:r("action")}),n&&import_react2.default.createElement(DynamicComponent$1,{value:t,schema:c,onChange:g}),!e.disabled&&(0,import_jsx_runtime.jsx)("a",{role:"button","aria-label":"icon-close",children:(0,import_jsx_runtime.jsx)(import_icons.CloseCircleOutlined,{onClick:l,style:_})})]})})},{displayName:"FormButtonLinkageRuleAction"}),colorSchema={type:"string","x-decorator":"FormItem","x-component":"ColorPicker","x-component-props":{defaultValue:""}},textAlignSchema={type:"string","x-decorator":"FormItem","x-component":"Select","x-component-props":{defaultValue:""},enum:[{label:"left",value:"left"},{label:"right",value:"right"},{label:"center",value:"center"}]},fontSizeSchema={type:"number","x-decorator":"FormItem","x-component":"InputNumber","x-component-props":{precision:0,min:10,max:40,placeholder:'{{t("Valid range: 10-40")}}'},"x-validator":{maximum:40,minimum:10}},fontWeightSchema={type:"number","x-decorator":"FormItem","x-component":"InputNumber","x-component-props":{precision:0,placeholder:'{{t("Valid range: 100-900")}}',max:900,min:100},"x-validator":{maximum:900,minimum:100}},fontStyleSchema={type:"string","x-decorator":"FormItem","x-component":"Select","x-component-props":{defaultValue:""},enum:[{label:"{{t('Normal')}}",value:"normal"},{label:"{{t('Italic')}}",value:"italic"}]},schemas=new Map;schemas.set(ActionType.Color,colorSchema);schemas.set(ActionType.BackgroundColor,colorSchema);schemas.set(ActionType.TextAlign,textAlignSchema);schemas.set(ActionType.FontSize,fontSizeSchema);schemas.set(ActionType.FontWeight,fontWeightSchema);schemas.set(ActionType.FontStyle,fontStyleSchema);const FieldStyleLinkageRuleAction=(0,import_react.observer)(e=>{const{options:t,collectionName:o}=e,{t:r}=(0,import_react_i18next.useTranslation)(),i=useCompile(),n=(0,import_react2.useContext)(RemoveActionContext),{operator:a,setOperator:l,value:c,setValue:u}=useValues$1(t),m=(0,import_react2.useMemo)(()=>i([{label:r("Color"),value:ActionType.Color,schema:{}},{label:r("Background Color"),value:ActionType.BackgroundColor,schema:{}},{label:r("Text Align"),value:ActionType.TextAlign,schema:{}},{label:r("Font Size(px)"),value:ActionType.FontSize,schema:{}},{label:r("Font Weight"),value:ActionType.FontWeight,schema:{}},{label:r("Font Style"),value:ActionType.FontStyle,schema:{}}]),[i,r]),d=(0,import_react2.useCallback)(h=>{l(h)},[l]),p=(0,import_react2.useMemo)(()=>({color:"#bfbfbf"}),[]);return(0,import_jsx_runtime.jsx)("div",{style:{marginBottom:8},children:(0,import_jsx_runtime.jsxs)(import_antd.Space,{children:[(0,import_jsx_runtime.jsx)(import_antd.Select,{"data-testid":"select-linkage-properties",popupMatchSelectWidth:!1,value:a,options:m,onChange:d,placeholder:r("action")}),a&&(0,import_jsx_runtime.jsx)(ValueDynamicComponent,{fieldValue:c,schema:schemas.get(a),setValue:u,collectionName:o,inputModes:["constant"]}),!e.disabled&&(0,import_jsx_runtime.jsx)("a",{role:"button","aria-label":"icon-close",children:(0,import_jsx_runtime.jsx)(import_icons.CloseCircleOutlined,{onClick:n,style:p})})]})})},{displayName:"FormStyleLinkageRuleAction"}),BlockLinkageRuleAction=(0,import_react.observer)(e=>{const{value:t,options:o}=e,{t:r}=(0,import_react_i18next.useTranslation)(),i=useCompile(),[n,a]=(0,import_react2.useState)(!1),l=(0,import_react2.useContext)(RemoveActionContext),{schema:c,operator:u,setOperator:m,setValue:d}=useValues$1(o),p=(0,import_react2.useMemo)(()=>i([{label:r("Visible"),value:ActionType.Visible,schema:{}},{label:r("Hidden"),value:ActionType.Hidden,schema:{}}]),[i,r]),h=(0,import_react2.useCallback)(f=>{const v=[ActionType.Value].includes(f);a(v),m(f)},[m]),g=(0,import_react2.useCallback)(f=>{d(f)},[d]),_=(0,import_react2.useMemo)(()=>({color:"#bfbfbf"}),[]);return(0,import_jsx_runtime.jsx)("div",{style:{marginBottom:8},children:(0,import_jsx_runtime.jsxs)(import_antd.Space,{children:[(0,import_jsx_runtime.jsx)(import_antd.Select,{"data-testid":"select-linkage-properties",popupMatchSelectWidth:!1,value:u,options:p,onChange:h,placeholder:r("action")}),n&&import_react2.default.createElement(DynamicComponent$1,{value:t,schema:c,onChange:g}),!e.disabled&&(0,import_jsx_runtime.jsx)("a",{role:"button","aria-label":"icon-close",children:(0,import_jsx_runtime.jsx)(import_icons.CloseCircleOutlined,{onClick:l,style:_})})]})})},{displayName:"FormButtonLinkageRuleAction"}),LinkageRuleActions=(0,import_react.observer)(e=>{var t;const{linkageOptions:o,category:r,elementType:i}=e,n=(0,import_react.useField)(),a=r==="default"?i:r,l={button:FormButtonLinkageRuleAction,field:FormFieldLinkageRuleAction,style:FieldStyleLinkageRuleAction,block:BlockLinkageRuleAction};return(t=n==null?void 0:n.value)==null?void 0:t.map((c,u)=>(0,import_jsx_runtime.jsx)(RemoveActionContext.Provider,{value:()=>n.remove(u),children:(0,import_jsx_runtime.jsx)(import_react.ObjectField,{name:u,component:[l[a],P(x({},e),{options:o})]})},u))},{displayName:"LinkageRuleActions"}),LinkageRuleActionGroup=withDynamicSchemaProps(e=>{const{t}=(0,import_react_i18next.useTranslation)(),o=(0,import_react.useField)(),r="actions",{category:i,elementType:n,linkageOptions:a,collectionName:l}=useProps(e),c=(0,import_react2.useMemo)(()=>({marginLeft:10}),[]),u=(0,import_react2.useMemo)(()=>[LinkageRuleActions,{category:i,elementType:n,linkageOptions:a,collectionName:l}],[l,a,i,n]),m=(0,import_react2.useMemo)(()=>({marginTop:8,marginBottom:8}),[]),d=(0,import_react2.useCallback)(()=>{const p=o.query(".actions").take(),h=p.value||[];h.push({}),p.value=h,p.initialValue=h},[o]);return(0,import_jsx_runtime.jsxs)("div",{style:c,children:[(0,import_jsx_runtime.jsx)(import_react.ArrayField,{name:r,component:u,disabled:!1}),(0,import_jsx_runtime.jsx)(import_antd.Space,{size:16,style:m,children:(0,import_jsx_runtime.jsx)("a",{onClick:d,children:t("Add property")})})]})},{displayName:"LinkageRuleActionGroup"}),EnableLinkage=import_react2.default.forwardRef((e,t)=>{var o;const r=import_antd_v5.ArrayBase.useArray(),i=import_antd_v5.ArrayBase.useIndex(e.index),{t:n}=(0,import_react_i18next.useTranslation)();return(0,import_jsx_runtime.jsx)(import_antd.Switch,P(x({},e),{checkedChildren:n("On"),unCheckedChildren:n("Off"),checked:!((o=r==null?void 0:r.field)!=null&&o.value[i].disabled),size:"small",style:{transition:"all 0.25s ease-in-out",color:"rgba(0, 0, 0, 0.8)",fontSize:16,marginLeft:6,marginBottom:3},onChange:(a,l)=>{var c;l.stopPropagation(),r.field.value.splice(i,1,P(x({},(c=r==null?void 0:r.field)==null?void 0:c.value[i]),{disabled:!a}))},onClick:(a,l)=>{l.stopPropagation()}}))});EnableLinkage.displayName="EnableLinkage";const arrayCollapseItemStyle={marginBottom:10},LinkageRulesTitle=e=>{var t;const o=import_antd_v5.ArrayBase.useArray(),r=import_antd_v5.ArrayBase.useIndex(e.index),{t:i}=(0,import_react_i18next.useTranslation)(),n=(t=o==null?void 0:o.field)==null?void 0:t.value[r];return(0,import_jsx_runtime.jsx)(import_antd.Input.TextArea,{value:n.title,defaultValue:i("Linkage rule"),onChange:a=>{a.stopPropagation(),o.field.value.splice(r,1,P(x({},n),{title:a.target.value}))},onBlur:a=>{a.stopPropagation(),o.field.value.splice(r,1,P(x({},n),{title:a.target.value}))},autoSize:!0,style:{width:"70%",border:"none"},onClick:a=>{a.stopPropagation()}})},isAdditionComponent=e=>{var t,o;return((o=(t=e["x-component"])==null?void 0:t.indexOf)==null?void 0:o.call(t,"Addition"))>-1},isIndexComponent=e=>{var t,o;return((o=(t=e["x-component"])==null?void 0:t.indexOf)==null?void 0:o.call(t,"Index"))>-1},isRemoveComponent=e=>{var t,o;return((o=(t=e["x-component"])==null?void 0:t.indexOf)==null?void 0:o.call(t,"Remove"))>-1},isMoveUpComponent=e=>{var t,o;return((o=(t=e["x-component"])==null?void 0:t.indexOf)==null?void 0:o.call(t,"MoveUp"))>-1},isMoveDownComponent=e=>{var t,o;return((o=(t=e["x-component"])==null?void 0:t.indexOf)==null?void 0:o.call(t,"MoveDown"))>-1},isCopyComponent=e=>{var t,o;return((o=(t=e["x-component"])==null?void 0:t.indexOf)==null?void 0:o.call(t,"Copy"))>-1},isOperationComponent=e=>isAdditionComponent(e)||isRemoveComponent(e)||isMoveDownComponent(e)||isMoveUpComponent(e)||isCopyComponent(e),range=e=>Array.from({length:e}).map((t,o)=>o),takeDefaultActiveKeys=(e,t)=>e<t?range(e):range(t),insertActiveKeys=(e,t)=>e.length<=t?e.concat(t):e.reduce((o,r)=>r<t?o.concat(r):r===t?o.concat([r,r+1]):o.concat(r+1),[]),ArrayCollapse=(0,import_react.observer)(e=>{const t=(0,import_react.useField)(),o=Array.isArray(t.value)?t.value:[],[r,i]=(0,import_react2.useState)(takeDefaultActiveKeys(o.length,e.defaultOpenPanelCount)),n=(0,import_react.useFieldSchema)();if((0,import_react2.useEffect)(()=>{!t.modified&&o.length&&i(takeDefaultActiveKeys(o.length,e.defaultOpenPanelCount))},[o.length,t]),!n)throw new Error("can not found schema object");const a=()=>n.reduceProperties((u,m,d)=>isAdditionComponent(m)?(0,import_jsx_runtime.jsx)(import_react.RecursionField,{schema:m,name:d}):u,null),l=()=>{if(!o.length)return(0,import_jsx_runtime.jsx)(import_antd.Card,{className:e.className,style:arrayCollapseItemStyle,children:(0,import_jsx_runtime.jsx)(import_antd.Empty,{})})},c=()=>(0,import_jsx_runtime.jsx)(import_antd.Collapse,P(x({},e),{activeKey:r,onChange:u=>i((0,import_shared.toArr)(u).map(Number)),className:e.className,style:arrayCollapseItemStyle,children:o.map((u,m)=>{const d=Array.isArray(n.items)?n.items[m]||n.items[0]:n.items,p=t.query(`${t.address}.${m}`).get("componentProps"),h=d["x-component-props"],g=()=>{const v=`${(p==null?void 0:p.header)||h.header||t.title}`,C=t.address.concat(m),S=t.form.queryFeedbacks({type:"error",address:`${C}.**`});return(0,import_jsx_runtime.jsxs)(import_antd_v5.ArrayBase.Item,{index:m,record:()=>{var b;return(b=t.value)==null?void 0:b[m]},children:[(0,import_jsx_runtime.jsx)(import_react.RecursionField,{schema:d,name:m,filterProperties:b=>!!isIndexComponent(b),onlyRenderProperties:!0}),S.length?(0,import_jsx_runtime.jsx)(import_antd.Badge,{size:"small",className:"errors-badge",count:S.length,children:v}):h.header?h.header:(0,import_jsx_runtime.jsx)(LinkageRulesTitle,{item:u.initialValue||u,index:m})]})},_=(0,import_jsx_runtime.jsxs)(import_antd_v5.ArrayBase.Item,{index:m,record:u,children:[(0,import_jsx_runtime.jsx)(import_react.RecursionField,{schema:d,name:m,filterProperties:v=>!!isOperationComponent(v),onlyRenderProperties:!0}),p==null?void 0:p.extra]}),f=(0,import_jsx_runtime.jsx)(import_react.RecursionField,{schema:d,name:m,filterProperties:v=>!(isIndexComponent(v)||isOperationComponent(v))});return(0,import_react2.createElement)(import_antd.Collapse.Panel,P(x(x({},h),p),{forceRender:!0,key:m,header:g(),extra:_}),(0,import_jsx_runtime.jsx)(import_antd_v5.ArrayBase.Item,{index:m,record:u,children:f},m))})}));return(0,import_jsx_runtime.jsxs)(import_antd_v5.ArrayBase,{onAdd:u=>{i(insertActiveKeys(r,u))},children:[l(),c(),a()]})},{displayName:"ArrayCollapse"}),CollapsePanel=({children:e})=>(0,import_jsx_runtime.jsx)(import_react2.Fragment,{children:e});CollapsePanel.displayName="CollapsePanel";ArrayCollapse.defaultProps={defaultOpenPanelCount:5};ArrayCollapse.displayName="ArrayCollapse";ArrayCollapse.CollapsePanel=CollapsePanel;import_antd_v5.ArrayBase.mixin(ArrayCollapse);ArrayCollapse.Copy=import_react2.default.forwardRef((e,t)=>{var o;const{token:r}=useToken(),i=(0,import_react.useField)(),n=import_antd_v5.ArrayBase.useArray(),a=import_antd_v5.ArrayBase.useIndex(e.index);return!n||((o=n.field)==null?void 0:o.pattern)!=="editable"?null:(0,import_jsx_runtime.jsx)(import_icons.CopyOutlined,P(x({},e),{style:{transition:"all 0.25s ease-in-out",color:r.colorText,fontSize:r.fontSizeLG,marginLeft:6},ref:t,onClick:l=>{var c,u;if(i!=null&&i.disabled||(l.stopPropagation(),(c=n.props)!=null&&c.disabled))return;const m=(0,import_lodash.cloneDeep)((u=n==null?void 0:n.field)==null?void 0:u.value[a]);n.field.push(m),e.onClick&&e.onClick(l)}}))});ArrayCollapse.Copy.displayName="ArrayCollapse.Copy";function extractFieldPath(e,t=[]){if(typeof e!="object"||e===null)return null;const[o,r]=Object.entries(e)[0]||[];return typeof r=="object"&&r!==null&&!o.startsWith("$")?extractFieldPath(r,[...t,o]):[t.join("."),e]}function transformConditionData(e,t){if("$and"in e)return{$and:e.$and.map(a=>transformConditionData(a,t))};if("$or"in e)return{$or:e.$or.map(a=>transformConditionData(a,t))};const[o,r]=extractFieldPath(e||{})||[],[i,n]=Object.entries(r||{})[0]||[];return{leftVar:o?`{{${t}.${o}}}`:null,op:i,rightVar:n}}function getActiveContextName(e,t){return e?"$iteration":t?"$nForm":"$nRecord"}const transformDefaultValue=(e,t)=>e.map(o=>{if(o.conditionType!=="advanced"){const r=transformConditionData(o.condition,t);return P(x({},o),{condition:t?r:o.condition,conditionType:t?"advanced":"basic"})}return o}),FormLinkageRules=withDynamicSchemaProps((0,import_react.observer)(e=>{const t=(0,import_react.useFieldSchema)(),{options:o,defaultValues:r,collectionName:i,form:n,variables:a,localVariables:l,record:c,dynamicComponent:u,category:m,returnScope:d}=useProps(e),{name:p}=useCollection_deprecated(),{getAllCollectionsInheritChain:h}=useCollectionManager_deprecated(),g=useCollectionParentRecordData(),{shouldDisplayCurrentForm:_}=useCurrentFormContext(),f=(0,import_react2.useMemo)(()=>({ArrayCollapse}),[]),{isInSubTable:v,isInSubForm:C}=useFlag(),S=getActiveContextName(v||C,_),b=d??(j=>j.filter(A=>m===LinkageRuleCategory.block?!["$nForm","$nRecord"].includes(A.value):!0)),y=(0,import_react2.useMemo)(()=>({type:"object",properties:{rules:{type:"array",default:transformDefaultValue(r,S),"x-component":"ArrayCollapse","x-decorator":"FormItem","x-component-props":{accordion:!0},items:{type:"object","x-component":"ArrayCollapse.CollapsePanel","x-component-props":{extra:(0,import_jsx_runtime.jsx)(EnableLinkage,{})},properties:{layout:{type:"void","x-component":"FormLayout","x-component-props":{labelStyle:{marginTop:"6px"},labelCol:8,wrapperCol:16},properties:{conditions:{"x-component":"h4","x-content":'{{ t("Condition") }}'},condition:{"x-component":"Input","x-hidden":!0,"x-reactions":[{dependencies:[".conditionType",".conditionBasic",".conditionAdvanced"],fulfill:{state:{value:'{{$deps[0] === "basic" ? $deps[1] : $deps[2]}}'}}}]},conditionBasic:{"x-component":"Filter","x-use-component-props":()=>({options:o,className:import_css.css`
|
|
384
380
|
position: relative;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nocobase/client",
|
|
3
|
-
"version": "1.9.
|
|
3
|
+
"version": "1.9.17",
|
|
4
4
|
"license": "AGPL-3.0",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"module": "es/index.mjs",
|
|
@@ -26,9 +26,9 @@
|
|
|
26
26
|
"@formily/reactive-react": "^2.2.27",
|
|
27
27
|
"@formily/shared": "^2.2.27",
|
|
28
28
|
"@formily/validator": "^2.2.27",
|
|
29
|
-
"@nocobase/evaluators": "1.9.
|
|
30
|
-
"@nocobase/sdk": "1.9.
|
|
31
|
-
"@nocobase/utils": "1.9.
|
|
29
|
+
"@nocobase/evaluators": "1.9.17",
|
|
30
|
+
"@nocobase/sdk": "1.9.17",
|
|
31
|
+
"@nocobase/utils": "1.9.17",
|
|
32
32
|
"ahooks": "^3.7.2",
|
|
33
33
|
"antd": "5.24.2",
|
|
34
34
|
"antd-mobile": "^5.41.1",
|
|
@@ -85,5 +85,5 @@
|
|
|
85
85
|
"dumi": "2.2.14",
|
|
86
86
|
"dumi-theme-nocobase": "^0.2.28"
|
|
87
87
|
},
|
|
88
|
-
"gitHead": "
|
|
88
|
+
"gitHead": "eb15276b3eaf1fb4464e6d1ab248be15aa1b0fd2"
|
|
89
89
|
}
|