@nocobase/client 1.8.27 → 1.8.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/es/index.mjs
CHANGED
|
@@ -8785,7 +8785,7 @@ function addAppVersion(e, t) {
|
|
|
8785
8785
|
addAppVersion((n = e.properties) == null ? void 0 : n[o], t);
|
|
8786
8786
|
}), e;
|
|
8787
8787
|
}
|
|
8788
|
-
const name = "@nocobase/client", version = "1.8.
|
|
8788
|
+
const name = "@nocobase/client", version = "1.8.28", license = "AGPL-3.0", main = "lib/index.js", module = "es/index.mjs", types = "es/index.d.ts", dependencies = {
|
|
8789
8789
|
"@ahooksjs/use-url-state": "3.5.1",
|
|
8790
8790
|
"@ant-design/cssinjs": "^1.11.1",
|
|
8791
8791
|
"@ant-design/icons": "^5.6.1",
|
|
@@ -8806,9 +8806,9 @@ const name = "@nocobase/client", version = "1.8.27", license = "AGPL-3.0", main
|
|
|
8806
8806
|
"@formily/reactive-react": "^2.2.27",
|
|
8807
8807
|
"@formily/shared": "^2.2.27",
|
|
8808
8808
|
"@formily/validator": "^2.2.27",
|
|
8809
|
-
"@nocobase/evaluators": "1.8.
|
|
8810
|
-
"@nocobase/sdk": "1.8.
|
|
8811
|
-
"@nocobase/utils": "1.8.
|
|
8809
|
+
"@nocobase/evaluators": "1.8.28",
|
|
8810
|
+
"@nocobase/sdk": "1.8.28",
|
|
8811
|
+
"@nocobase/utils": "1.8.28",
|
|
8812
8812
|
ahooks: "^3.7.2",
|
|
8813
8813
|
antd: "5.24.2",
|
|
8814
8814
|
"antd-style": "3.7.1",
|
|
@@ -43746,9 +43746,18 @@ function validate(e, t) {
|
|
|
43746
43746
|
function useBeforeUpload(e) {
|
|
43747
43747
|
const { t } = useTranslation();
|
|
43748
43748
|
return useCallback(
|
|
43749
|
-
(o) => {
|
|
43750
|
-
|
|
43751
|
-
|
|
43749
|
+
(o, n) => {
|
|
43750
|
+
var i, l;
|
|
43751
|
+
let r = o;
|
|
43752
|
+
if (!o.type) {
|
|
43753
|
+
const c = (l = (i = o.name) == null ? void 0 : i.match(/\.[^.]+$/)) == null ? void 0 : l[0];
|
|
43754
|
+
c && (r = new File([o], o.name, {
|
|
43755
|
+
type: mime.getType(c) || "application/octet-stream",
|
|
43756
|
+
lastModified: o.lastModified
|
|
43757
|
+
}));
|
|
43758
|
+
}
|
|
43759
|
+
const a = validate(r, e);
|
|
43760
|
+
return a ? (r.status = "error", r.response = t(a)) : r.status === "error" && (delete r.status, delete r.response), a ? !1 : r;
|
|
43752
43761
|
},
|
|
43753
43762
|
[e]
|
|
43754
43763
|
);
|
|
@@ -43863,38 +43872,56 @@ attachmentFileTypes.add({
|
|
|
43863
43872
|
return e.preview ? e.preview : e.url ? e.url : e.originFileObj ? URL.createObjectURL(e.originFileObj) : null;
|
|
43864
43873
|
},
|
|
43865
43874
|
Previewer({ index: e, list: t, onSwitchIndex: o }) {
|
|
43866
|
-
var
|
|
43867
|
-
const [n, r] = useState(0), a = useCallback(
|
|
43868
|
-
(
|
|
43869
|
-
|
|
43870
|
-
|
|
43871
|
-
|
|
43875
|
+
var p, m, h, g;
|
|
43876
|
+
const [n, r] = useState(0), a = useRef(!1), i = () => document.querySelector(".ril-image-current"), l = useCallback((f, C) => {
|
|
43877
|
+
if (!f)
|
|
43878
|
+
return;
|
|
43879
|
+
const b = f.style.transform || "", S = `${b.replace(/rotate\([^)]*\)/g, "").trim()} rotate(${(C % 360 + 360) % 360}deg)`.trim();
|
|
43880
|
+
b !== S && (a.current = !0, f.style.transform = S, f.style.transformOrigin = "center center", setTimeout(() => {
|
|
43881
|
+
a.current = !1;
|
|
43882
|
+
}, 0));
|
|
43883
|
+
}, []), c = useCallback(
|
|
43884
|
+
(f) => {
|
|
43885
|
+
f.preventDefault();
|
|
43886
|
+
const C = t[e];
|
|
43887
|
+
saveAs(C.url, `${C.title}${C.extname}`);
|
|
43872
43888
|
},
|
|
43873
43889
|
[e, t]
|
|
43874
|
-
),
|
|
43875
|
-
r((
|
|
43876
|
-
}, []),
|
|
43877
|
-
r((
|
|
43890
|
+
), u = useCallback(() => {
|
|
43891
|
+
r((f) => (f - 90) % 360);
|
|
43892
|
+
}, []), d = useCallback(() => {
|
|
43893
|
+
r((f) => (f + 90) % 360);
|
|
43878
43894
|
}, []);
|
|
43879
43895
|
return useEffect(() => {
|
|
43880
|
-
|
|
43881
|
-
|
|
43896
|
+
l(i(), n);
|
|
43897
|
+
}, [n, l]), useEffect(() => {
|
|
43898
|
+
const f = i();
|
|
43899
|
+
if (!f)
|
|
43882
43900
|
return;
|
|
43883
|
-
|
|
43884
|
-
const
|
|
43885
|
-
|
|
43886
|
-
|
|
43901
|
+
l(f, n);
|
|
43902
|
+
const C = new MutationObserver((b) => {
|
|
43903
|
+
a.current || b.some((y) => y.attributeName === "style") && l(f, n);
|
|
43904
|
+
});
|
|
43905
|
+
return C.observe(f, { attributes: !0, attributeFilter: ["style"] }), () => C.disconnect();
|
|
43906
|
+
}, [l, n, e]), /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
43887
43907
|
/* @__PURE__ */ jsx(LightBoxGlobalStyle, {}),
|
|
43888
43908
|
/* @__PURE__ */ jsx(
|
|
43889
43909
|
LightBox,
|
|
43890
43910
|
{
|
|
43891
|
-
mainSrc: (
|
|
43892
|
-
nextSrc: (
|
|
43893
|
-
prevSrc: (
|
|
43911
|
+
mainSrc: (p = t[e]) == null ? void 0 : p.url,
|
|
43912
|
+
nextSrc: (m = t[(e + 1) % t.length]) == null ? void 0 : m.url,
|
|
43913
|
+
prevSrc: (h = t[(e + t.length - 1) % t.length]) == null ? void 0 : h.url,
|
|
43894
43914
|
onCloseRequest: () => o(null),
|
|
43895
|
-
onMovePrevRequest: () =>
|
|
43896
|
-
|
|
43897
|
-
|
|
43915
|
+
onMovePrevRequest: () => {
|
|
43916
|
+
r(0), o((e + t.length - 1) % t.length);
|
|
43917
|
+
},
|
|
43918
|
+
onMoveNextRequest: () => {
|
|
43919
|
+
r(0), o((e + 1) % t.length);
|
|
43920
|
+
},
|
|
43921
|
+
onAfterOpen: () => {
|
|
43922
|
+
l(i(), n);
|
|
43923
|
+
},
|
|
43924
|
+
imageTitle: (g = t[e]) == null ? void 0 : g.title,
|
|
43898
43925
|
toolbarButtons: [
|
|
43899
43926
|
/* @__PURE__ */ jsx(
|
|
43900
43927
|
"button",
|
|
@@ -43904,7 +43931,7 @@ attachmentFileTypes.add({
|
|
|
43904
43931
|
title: "Download",
|
|
43905
43932
|
className: "ril-zoom-in ril__toolbarItemChild ril__builtinButton",
|
|
43906
43933
|
style: { fontSize: 22, background: "none", lineHeight: 1 },
|
|
43907
|
-
onClick:
|
|
43934
|
+
onClick: c,
|
|
43908
43935
|
children: /* @__PURE__ */ jsx(DownloadOutlined, {})
|
|
43909
43936
|
},
|
|
43910
43937
|
"preview-img"
|
|
@@ -43915,7 +43942,7 @@ attachmentFileTypes.add({
|
|
|
43915
43942
|
type: "button",
|
|
43916
43943
|
className: "ril-zoom-in ril__toolbarItemChild ril__builtinButton",
|
|
43917
43944
|
style: { fontSize: 22, background: "none", lineHeight: 1 },
|
|
43918
|
-
onClick:
|
|
43945
|
+
onClick: u,
|
|
43919
43946
|
children: /* @__PURE__ */ jsx(UndoOutlined, {})
|
|
43920
43947
|
},
|
|
43921
43948
|
"rotate-left"
|
|
@@ -43926,7 +43953,7 @@ attachmentFileTypes.add({
|
|
|
43926
43953
|
type: "button",
|
|
43927
43954
|
className: "ril-zoom-in ril__toolbarItemChild ril__builtinButton",
|
|
43928
43955
|
style: { fontSize: 22, background: "none", lineHeight: 1 },
|
|
43929
|
-
onClick:
|
|
43956
|
+
onClick: d,
|
|
43930
43957
|
children: /* @__PURE__ */ jsx(RedoOutlined, {})
|
|
43931
43958
|
},
|
|
43932
43959
|
"rotate-right"
|
|
@@ -45645,7 +45672,7 @@ const AssignedFieldInner = (e) => {
|
|
|
45645
45672
|
targetFieldSchema: l
|
|
45646
45673
|
}
|
|
45647
45674
|
) });
|
|
45648
|
-
}, AssignedField = (
|
|
45675
|
+
}, AssignedField = withDynamicSchemaProps(AssignedFieldInner);
|
|
45649
45676
|
function useAclCheck(e) {
|
|
45650
45677
|
return useAclCheckFn()(e);
|
|
45651
45678
|
}
|
|
@@ -87,4 +87,4 @@ export declare function toValueItem(data: any): any;
|
|
|
87
87
|
export declare const toItem: (file: any) => any;
|
|
88
88
|
export declare const toFileList: (fileList: any) => any[];
|
|
89
89
|
export declare function validate(file: any, rules: Record<string, any>): string;
|
|
90
|
-
export declare function useBeforeUpload(rules: any): (file: any) =>
|
|
90
|
+
export declare function useBeforeUpload(rules: any): (file: any, fileList: any) => any;
|
|
@@ -17,5 +17,5 @@ export declare enum AssignedFieldValueType {
|
|
|
17
17
|
DynamicValue = "dynamicValue"
|
|
18
18
|
}
|
|
19
19
|
export declare const AssignedFieldInner: (props: AssignedFieldProps) => React.JSX.Element;
|
|
20
|
-
export declare const AssignedField:
|
|
20
|
+
export declare const AssignedField: React.FunctionComponent<AssignedFieldProps>;
|
|
21
21
|
export {};
|
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=Y(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:()=>z(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 z(this,null,function*(){})}beforeLoad(){return z(this,null,function*(){})}load(){return z(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)(()=>{z(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){A(this,"options"),A(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.8.27",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.8.27","@nocobase/sdk":"1.8.27","@nocobase/utils":"1.8.27",ahooks:"^3.7.2",antd:"5.24.2","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){A(this,"current"),A(this,"options"),A(this,"appVersion"),A(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=>z(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=>z(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=>z(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=>z(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=>z(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 z(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=Y(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=()=>z(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)=>z(void 0,[e,t],function*({rules:o,variables:r,localVariables:i},n){return(yield Promise.all(o.filter(a=>!a.disabled).map(a=>z(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)=>z(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)=>z(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],k=(0,import_react2.useMemo)(()=>{const T=["oho","o2m"].includes(F==null?void 0:F.interface);return mergeFilter([mergeFilter([T&&!isInFilterFormBlock(g)&&F!=null&&F.foreignKey&&!h?{[F.foreignKey]:{$is:null}}:null,y]),T&&j!==void 0&&j!==null&&!isInFilterFormBlock(g)&&F!=null&&F.foreignKey&&!h?{[F.foreignKey]:{$eq:j}}:null],"$or")},[F==null?void 0:F.interface,F==null?void 0:F.foreignKey,g,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:k})}),[F==null?void 0:F.target,d,k,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}},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=Y(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:()=>z(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 z(this,null,function*(){})}beforeLoad(){return z(this,null,function*(){})}load(){return z(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)(()=>{z(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){A(this,"options"),A(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.8.28",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.8.28","@nocobase/sdk":"1.8.28","@nocobase/utils":"1.8.28",ahooks:"^3.7.2",antd:"5.24.2","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){A(this,"current"),A(this,"options"),A(this,"appVersion"),A(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=>z(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=>z(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=>z(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=>z(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=>z(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 z(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=Y(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=()=>z(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)=>z(void 0,[e,t],function*({rules:o,variables:r,localVariables:i},n){return(yield Promise.all(o.filter(a=>!a.disabled).map(a=>z(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)=>z(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)=>z(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],k=(0,import_react2.useMemo)(()=>{const T=["oho","o2m"].includes(F==null?void 0:F.interface);return mergeFilter([mergeFilter([T&&!isInFilterFormBlock(g)&&F!=null&&F.foreignKey&&!h?{[F.foreignKey]:{$is:null}}:null,y]),T&&j!==void 0&&j!==null&&!isInFilterFormBlock(g)&&F!=null&&F.foreignKey&&!h?{[F.foreignKey]:{$eq:j}}:null],"$or")},[F==null?void 0:F.interface,F==null?void 0:F.foreignKey,g,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:k})}),[F==null?void 0:F.target,d,k,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}},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};
|
|
@@ -910,11 +910,11 @@ https://requirejs.org/docs/errors.html#`+e);return i.requireType=e,i.requireModu
|
|
|
910
910
|
display: none;
|
|
911
911
|
}
|
|
912
912
|
}
|
|
913
|
-
`,InternalPageContent=e=>{var t,o,r;const{loading:i,disablePageHeader:n,enablePageTabs:a,activeKey:l}=e,c=useCurrentRoute(),u=useNavigateNoUpdate(),m=useLocationNoUpdate(),{isMobileLayout:d}=useMobileLayout(),p=((c==null?void 0:c.children)||[]).every(g=>g.schemaUid!==l&&g.tabSchemaName!==l);if(l&&p)return(0,import_jsx_runtime.jsx)(AppNotFound,{});const h=(t=c==null?void 0:c.children)==null?void 0:t.find(g=>g.tabSchemaName===l);if(h){const g=new URLSearchParams(m.search);g.has("tab")&&g.get("tab")===l&&g.delete("tab");const _=g.toString()?`?${g.toString()}`:"",f=m.pathname+(m.pathname.endsWith("/")?`tabs/${h.schemaUid}`:`/tabs/${h.schemaUid}`);return u(f+_),null}return!n&&a?(0,import_jsx_runtime.jsx)(KeepAlive,{uid:l,children:g=>{var _;return(0,import_jsx_runtime.jsx)(NocoBaseRouteContext.Provider,{value:(_=c.children)==null?void 0:_.find(f=>f.schemaUid===g),children:(0,import_jsx_runtime.jsx)(RemoteSchemaComponent,{uid:g,schemaTransform:d?import_client.transformMultiColumnToSingleColumn:void 0})})}}):(0,import_jsx_runtime.jsx)("div",{className:className1,children:(0,import_jsx_runtime.jsx)(NocoBaseRouteContext.Provider,{value:(o=c==null?void 0:c.children)==null?void 0:o[0],children:(0,import_jsx_runtime.jsx)(RemoteSchemaComponent,{uid:(r=c==null?void 0:c.children)==null?void 0:r[0].schemaUid,schemaTransform:d?import_client.transformMultiColumnToSingleColumn:void 0})})})},PageContent=(0,import_react2.memo)(e=>(0,import_jsx_runtime.jsx)(PopupRouteContextResetter,{children:(0,import_jsx_runtime.jsx)(InternalPageContent,x({},e))})),TabBadge=e=>{var t,o,r;const i=useEvaluatedExpression((o=(t=e.tabRoute.options)==null?void 0:t.badge)==null?void 0:o.count);return i==null?null:(0,import_jsx_runtime.jsx)(import_antd.Badge,P(x({},(r=e.tabRoute.options)==null?void 0:r.badge),{count:i,style:e.style,dot:!1,children:e.children}))},NocoBasePageHeaderTabs=({className:e,activeKey:t})=>{const o=(0,import_react.useFieldSchema)(),{t:r}=(0,import_react_i18next.useTranslation)(),{t:i}=useRouteTranslation(),{token:n}=useToken$1(),a=useRouterBasename(),l=useNavigateNoUpdate(),c=(0,import_react2.useCallback)(y=>{navigateToTab({activeKey:y,navigate:l,basename:a})},[a,l]),u=useDesignable(),{getAriaLabel:m}=useGetAriaLabelOfSchemaInitializer(),d=(0,import_react2.useContext)(import_react.SchemaOptionsContext),{theme:p}=useGlobalTheme(),h=useCurrentRoute(),{createRoute:g}=useNocoBaseRoutes(),_=useCompile(),f=(0,import_react2.useMemo)(()=>u.designable&&(0,import_jsx_runtime.jsx)(import_antd.Button,{"aria-label":m("tabs"),icon:(0,import_jsx_runtime.jsx)(import_icons.PlusOutlined,{}),className:"addTabBtn",type:"dashed",onClick:()=>z(void 0,null,function*(){const y=yield FormDialog(r("Add tab"),()=>(0,import_jsx_runtime.jsx)(SchemaComponentOptions,{scope:d.scope,components:x({},d.components),children:(0,import_jsx_runtime.jsx)(import_antd_v5.FormLayout,{layout:"vertical",children:(0,import_jsx_runtime.jsx)(SchemaComponent,{schema:{properties:{title:{title:r("Tab name"),"x-component":"Input","x-decorator":"FormItem",required:!0},icon:{title:r("Icon"),"x-component":"IconPicker","x-decorator":"FormItem"}}}})})}),p).open({initialValues:{}}),{title:F,icon:j}=y,k=(0,import_shared.uid)(),T=(0,import_shared.uid)();yield g({type:NocoBaseDesktopRouteType.tabs,schemaUid:k,title:F||'{{t("Unnamed")}}',icon:j,parentId:h.id,tabSchemaName:T}),u.insertBeforeEnd(getTabSchema({title:F,icon:j,schemaUid:k,tabSchemaName:T}))}),children:r("Add tab")}),[u,m,d==null?void 0:d.components,d==null?void 0:d.scope,r,p]),v=h.enableTabs,C=(0,import_react2.useMemo)(()=>({paddingLeft:n.paddingLG-n.paddingPageHorizontal,paddingRight:n.paddingLG-n.paddingPageHorizontal,marginLeft:n.paddingPageHorizontal-n.paddingLG,marginRight:n.paddingPageHorizontal-n.paddingLG}),[n.paddingLG,n.paddingPageHorizontal]),S=(0,import_react2.useMemo)(()=>{var y;return(y=h==null?void 0:h.children)==null?void 0:y.map(F=>{var j,k;if(!F||F.hideInMenu)return null;const T={__route__:F};return{label:(0,import_jsx_runtime.jsx)(NocoBaseRouteContext.Provider,{value:F,children:(0,import_jsx_runtime.jsx)(VariableScope,{scopeId:F.schemaUid,type:"pageTab",children:(0,import_jsx_runtime.jsxs)(SortableItem,{id:String(F.id),className:(0,import_classnames.default)("nb-action-link","designerCss",e),schema:T,style:{display:"flex",alignItems:"center"},children:[F.icon&&(0,import_jsx_runtime.jsx)(Icon,{style:{marginRight:8},type:F.icon}),(0,import_jsx_runtime.jsx)("span",{children:F.title&&i(_(F.title))||r("Unnamed")}),(0,import_jsx_runtime.jsx)(PageTabDesigner,{}),(0,import_jsx_runtime.jsx)(TabBadge,{style:{marginLeft:4,color:(k=(j=F.options)==null?void 0:j.badge)==null?void 0:k.textColor},tabRoute:F})]})})}),key:F.schemaUid}}).filter(Boolean)},[o,e,r,o.mapProperties(y=>y.title||r("Unnamed")).join(),h]),{onDragEnd:b}=useMenuDragEnd();return v?(0,import_jsx_runtime.jsx)(DndContext,{onDragEnd:b,children:(0,import_jsx_runtime.jsx)(import_antd.Tabs,{size:"small",activeKey:t,tabBarStyle:C,onChange:c,tabBarExtraContent:f,items:S})}):null},NocoBasePageHeader=import_react2.default.memo(({activeKey:e,className:t})=>{var o,r;const i=(0,import_react.useFieldSchema)(),{setTitle:n}=useDocumentTitle(),{t:a}=(0,import_react_i18next.useTranslation)(),{t:l}=useRouteTranslation(),[c,u]=(0,import_react2.useState)(()=>a(i.title)),{active:m}=useKeepAlive(),d=(o=i["x-component-props"])==null?void 0:o.disablePageHeader,p=useCurrentRoute(),h=p.enableTabs,g=(r=i["x-component-props"])==null?void 0:r.hidePageTitle,{token:_}=useToken$1();return(0,import_react2.useEffect)(()=>{const f=a(i.title,{ns:NAMESPACE_UI_SCHEMA})||a(p==null?void 0:p.title,{ns:NAMESPACE_UI_SCHEMA});f&&m&&(n(f),u(f))},[i.title,c,n,a,p==null?void 0:p.title,m]),(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsx)(PageDesigner,{title:c}),!d&&(0,import_jsx_runtime.jsx)(import_pro_layout.PageHeader,{className:(0,import_classnames.default)("pageHeaderCss",c||h?"":"height0"),style:{paddingBottom:p.enableTabs||g?0:_.paddingSM},ghost:!1,title:g?" ":(!i.title&&c?l(c):c)||" ",footer:(0,import_jsx_runtime.jsx)(NocoBasePageHeaderTabs,{className:t,activeKey:e})})]})});NocoBasePageHeader.displayName="NocoBasePageHeader";function navigateToTab({activeKey:e,navigate:t,basename:o,pathname:r=window.location.pathname}){r=r.replace(o,""),r.endsWith("/")&&(r=r.slice(0,-1)),r.startsWith("/")||(r=`/${r}`),isTabPage(r)?t(withSearchParams(`${r.replace(/\/tabs\/[^/]+$/,`/tabs/${e}`)}`),{replace:!0}):t(withSearchParams(`${r}/tabs/${e}`),{replace:!0})}function isTabPage(e){e.endsWith("/")&&(e=e.slice(0,-1));const t=e.split("/");return t[t.length-2]==="tabs"}function getTabSchema({title:e,icon:t,schemaUid:o,tabSchemaName:r}){return{type:"void",name:r,title:e,"x-icon":t,"x-component":"Grid","x-initializer":"page:addBlock",properties:{},"x-uid":o,"x-async":!0}}function RouteSchemaComponent(){const e=useCurrentPageUid();return(0,import_jsx_runtime.jsx)(RemoteSchemaComponent,{onlyRenderProperties:!0,uid:e})}function useNotDisableHeader(){var e;return!((e=(0,import_react.useFieldSchema)()["x-component-props"])!=null&&e.disablePageHeader)}const pageSettings=new SchemaSettings({name:"PageSettings",items:[{name:"enablePageHeader",type:"switch",useComponentProps(){var e;const{dn:t}=useDesignable(),{t:o}=(0,import_react_i18next.useTranslation)(),r=(0,import_react.useFieldSchema)();return{title:o("Enable page header"),checked:!((e=r["x-component-props"])!=null&&e.disablePageHeader),onChange(i){r["x-component-props"]=r["x-component-props"]||{},r["x-component-props"].disablePageHeader=!i,t.emit("patch",{schema:{"x-uid":r["x-uid"],"x-component-props":r["x-component-props"]}}),t.refresh()}}}},{name:"divider",type:"divider",useVisible:useNotDisableHeader},{name:"displayPageTitle",type:"switch",useVisible:useNotDisableHeader,useComponentProps(){var e;const{dn:t}=useDesignable(),{t:o}=(0,import_react_i18next.useTranslation)(),r=(0,import_react.useFieldSchema)();return{title:o("Display page title"),checked:!((e=r["x-component-props"])!=null&&e.hidePageTitle),onChange(i){r["x-component-props"]=r["x-component-props"]||{},r["x-component-props"].hidePageTitle=!i,t.emit("patch",{schema:{"x-uid":r["x-uid"],"x-component-props":r["x-component-props"]}}),t.refresh()}}}},{name:"editPageTitle",type:"modal",useVisible(){var e;const t=useNotDisableHeader(),o=!((e=(0,import_react.useFieldSchema)()["x-component-props"])!=null&&e.hidePageTitle);return t&&o},useComponentProps(){const{dn:e}=useDesignable(),{t}=(0,import_react_i18next.useTranslation)(),o=(0,import_react.useField)(),r=(0,import_react.useFieldSchema)(),{title:i}=useSchemaToolbar();return{hide:!0,title:t("Edit page title"),schema:{type:"object",title:t("Edit page title"),properties:{title:{title:t("Title"),required:!0,"x-decorator":"FormItem","x-component":"Input","x-component-props":{}}}},initialValues:{title:i},onSubmit({title:n}){o.title=n,r.title=n,e.emit("patch",{schema:{"x-uid":r["x-uid"],title:n}})}}}},{name:"enablePageTabs",type:"switch",useVisible:useNotDisableHeader,useComponentProps(){const{dn:e}=useDesignable(),{t}=(0,import_react_i18next.useTranslation)(),o=(0,import_react.useFieldSchema)(),r=useCurrentRoute(),{updateRoute:i}=useNocoBaseRoutes();return{title:t("Enable page tabs"),checked:r.enableTabs,onChange(n){return z(this,null,function*(){yield i(r.id,{enableTabs:n}),o["x-component-props"]=o["x-component-props"]||{},o["x-component-props"].enablePageTabs=n,e.emit("patch",{schema:{"x-uid":o["x-uid"],"x-component-props":o["x-component-props"]}})})}}}}]}),pageTabSettings=new SchemaSettings({name:"PageTabSettings",items:[{name:"edit",type:"modal",useComponentProps(){const{t:e}=(0,import_react_i18next.useTranslation)(),{updateRoute:t}=useNocoBaseRoutes(),o=useCurrentRoute();return{title:e("Edit"),schema:{type:"object",title:e("Edit tab"),properties:{title:{title:e("Tab name"),required:!0,"x-decorator":"FormItem","x-component":"Input","x-component-props":{}},icon:{title:e("Icon"),"x-decorator":"FormItem","x-component":"IconPicker","x-component-props":{}}}},initialValues:{title:o.title,icon:o.icon},onSubmit:({title:r,icon:i})=>{t(o.id,{title:r,icon:i})}}},sort:100},{name:"hidden",type:"switch",useComponentProps(){const{t:e}=(0,import_react_i18next.useTranslation)(),{updateRoute:t}=useNocoBaseRoutes(),o=useCurrentRoute();return{title:e("Hidden"),checked:o.hideInMenu,onChange:r=>{import_antd.Modal.confirm({title:e("Are you sure you want to hide this tab?"),icon:(0,import_jsx_runtime.jsx)(import_icons.ExclamationCircleFilled,{}),content:e("After hiding, this tab will no longer appear in the tab bar. To show it again, you need to go to the route management page to set it."),onOk(){return z(this,null,function*(){yield t(o.id,{hideInMenu:!!r})})}})}}},sort:200},{name:"divider",type:"divider",sort:300},{name:"delete",type:"item",useComponentProps(){const{modal:e}=import_antd.App.useApp(),{dn:t}=useDesignable(),{t:o}=(0,import_react_i18next.useTranslation)(),{deleteRoute:r}=useNocoBaseRoutes(),i=useCurrentRoute(),n=useNavigateNoUpdate(),a=(0,import_react.useFieldSchema)();return{title:o("Delete"),eventKey:"remove",onClick(){e.confirm(P(x({title:o("Delete block"),content:o("Are you sure you want to delete it?")},confirm),{onOk(){return z(this,null,function*(){yield r(i.id),t.emit("remove",{removed:{"x-uid":i.schemaUid}}),window.location.pathname.includes(i.schemaUid)&&n(`/admin/${a["x-uid"]}`)})}}))},children:o("Delete")}},sort:400}]}),AntdSchemaComponentProvider=e=>{const{children:t}=e;return(0,import_jsx_runtime.jsx)(SchemaComponentOptions,{scope:{requestChartData,useFilterActionProps:useFilterActionProps$1},components:x(x({},components$2),common),children:t})};class AntdSchemaComponentPlugin extends Plugin{load(){return z(this,null,function*(){this.addComponents(),this.addScopes(),this.addSchemaSettings()})}addComponents(){this.app.addComponents(x(x({},components$2),common))}addScopes(){this.app.addScopes({requestChartData,useFilterActionProps:useFilterActionProps$1})}addSchemaSettings(){this.app.schemaSettingsManager.add(pageSettings),this.app.schemaSettingsManager.add(pageTabSettings),this.app.schemaSettingsManager.add(formItemSettings),this.app.schemaSettingsManager.add(filterFormItemSettings),this.app.schemaSettingsManager.add(formV1Settings),this.app.schemaSettingsManager.add(formSettings),this.app.schemaSettingsManager.add(readPrettyFormSettings),this.app.schemaSettingsManager.add(formDetailsSettings),this.app.schemaSettingsManager.add(actionSettings)}}function usePropsCollection({collection:e}){return e}function loadChildren(e){const t=getCollectionFieldOptions.call(this,e.field.target,e);return t.length&&t.some(o=>isAssociation(o.field))||(e.isLeaf=!0),t}function isAssociation(e){return["belongsTo","hasMany","hasOne","belongsToMany","belongsToArray"].includes(e.type)&&e.target&&e.interface}function trueFilter(e){return!0}function getCollectionFieldOptions(e,t){const o=this.getCollectionFields(e),r=loadChildren.bind(this);return o.filter(this.filter).map(i=>{var n,a,l;const c=t?`${t.value?`${t.value}.`:""}${i.name}`:i.name,u=(a=this.compile((n=i.uiSchema)==null?void 0:n.title))!=null?a:i.name,m=!this.getCollectionFields(i.target).filter(isAssociation).filter(this.filter).length;return{pId:(l=t==null?void 0:t.key)!=null?l:null,id:c,key:c,value:c,title:u,isLeaf:m,loadChildren:m?null:r,field:i,fullTitle:t?[...t.fullTitle,u]:[u]}})}const FieldsTreeSelect=e=>{const t=e,{title:o,value:r,onChange:i,collection:n,useCollection:a=usePropsCollection,filter:l=trueFilter,rootOption:c,loadData:u,includeFieldPaths:m}=t,d=Y(t,["title","value","onChange","collection","useCollection","filter","rootOption","loadData","includeFieldPaths"]),p=useCompile(),{t:h}=(0,import_react_i18next.useTranslation)(),[g,_]=(0,import_react2.useState)({}),f=a({collection:n}),[v,C]=parseCollectionName(f),S=useApp(),{collectionManager:b}=S.dataSourceManager.getDataSource(v),y=(D,R)=>{const N=b.getCollection(D);return N?N.getAllFields(R):[]},F=Object.values(g),j=(0,import_react2.useMemo)(()=>e.multiple?(r||[]).map(D=>g[D]).filter(Boolean):r,[r,e.multiple,g]),k=(0,import_react2.useCallback)(D=>z(void 0,null,function*(){if(u!=null)return u(D);if(!D.isLeaf&&D.loadChildren){const R=D.loadChildren(D);_(N=>R.reduce((B,I)=>Object.assign(B,{[I.value]:I}),x({},N)))}}),[u]);(0,import_react2.useEffect)(()=>{const D=c?P(x({},c),{id:c.value,key:c.value,title:c.label,fullTitle:c.label,isLeaf:!1}):null,R=(u===null?[]:getCollectionFieldOptions.call({compile:p,getCollectionFields:y,filter:l},C,D)).reduce((N,B)=>Object.assign(N,{[B.value]:B}),{});D&&(R[D.value]=D),_(R)},[f,c,l,u]),(0,import_react2.useEffect)(()=>{const D=e.multiple?r:r?[r]:[];if(!(D!=null&&D.length)||D.every(N=>!!g[N]))return;const R=[];D.forEach(N=>{const B=N.split(".");let I=g[B[0]];for(let $=1;$<B.length&&I;$++){const E=B.slice(0,$+1).join(".");if(g[E]){I=g[E];break}if(!I.isLeaf&&I.loadChildren){const L=I.loadChildren(I);L!=null&&L.length&&(R.push(...L),I=L.find(V=>V.value===B.slice(0,$+1).join(".")))}}}),_(N=>R.reduce((B,I)=>Object.assign(B,{[I.value]:I}),x({},N)))},[r,F.length,e.multiple]);const T=(0,import_react2.useCallback)(D=>{if(!e.multiple){i(D);return}const R=D.map(I=>I.value).filter(Boolean),N=new Set(R),B=j.find(I=>!N.has(I.value));if(B){const I=`${B.value}.`;Object.keys(g).forEach($=>{$.startsWith(I)&&N.delete($)})}else m&&R.forEach(I=>{const $=I.split(".");if($.length)for(let E=1;E<=$.length;E++)N.add($.slice(0,E).join("."))});i(Array.from(N))},[e.multiple,j,i,g]),M=(0,import_react2.useCallback)(D=>{var R;const{value:N,onClose:B,disabled:I,closable:$}=D;if(!N)return null;const{fullTitle:E}=(R=g[N])!=null?R:{};return(0,import_jsx_runtime.jsx)(import_antd.Tag,{closable:$&&!I,onClose:B,children:E==null?void 0:E.join(" / ")})},[g]),w=Array.isArray(j)?j.filter(D=>D.value in g):j,O=e.multiple?r:r!=null?[r]:[];return(0,import_jsx_runtime.jsx)(import_antd.TreeSelect,P(x({role:"button","data-testid":`select-field${o?`-${o}`:""}`,value:w,placeholder:h("Select field"),showCheckedStrategy:import_antd.TreeSelect.SHOW_ALL,treeDefaultExpandedKeys:O,allowClear:{clearIcon:(0,import_jsx_runtime.jsx)(import_icons.CloseCircleFilled,{role:"button","aria-label":"icon-close"})},treeCheckStrictly:e.multiple,treeCheckable:e.multiple,tagRender:M,onChange:T,treeDataSimpleMode:!0,treeData:F,loadData:k},d),{suffixIcon:(0,import_jsx_runtime.jsx)(import_icons.DownOutlined,{})}))},AppendsTreeSelect=e=>(0,import_jsx_runtime.jsx)(FieldsTreeSelect,x({filter:isAssociation,includeFieldPaths:!0},e)),removeIfKeyEmpty=(e,t)=>!e||typeof e!="object"||!t||Array.isArray(e)||e[t]?e:void 0,AssociationFieldAddNewer=e=>{const t=(0,import_react2.useContext)(SchemaComponentContext);return(0,import_jsx_runtime.jsx)(SchemaComponentContext.Provider,{value:P(x({},t),{draggable:!0}),children:(0,import_jsx_runtime.jsx)(Action.Container,x({},e))})},filterAnalyses=e=>{if(!e)return;const t=Object.keys(e)[0]||"$and",o=e[t],r=[];return o==null||o.map(i=>{var n,a,l;const c=getInnermostKeyAndValue(i);if(!(c!=null&&c.key))return!0;const u=/\{\{\$[a-zA-Z_]\w*(?:\.[a-zA-Z_]\w*)*\.(\w+)\.id\}\}/,m=(l=(a=(n=c==null?void 0:c.value)==null?void 0:n.match)==null?void 0:a.call(n,u))==null?void 0:l[1];m&&r.push(m)}),r};function getFieldPath(e){const t=e.lastIndexOf(".");return t===-1?e:e.slice(0,t)}const InternalAssociationSelect$1=(0,import_react.observer)(e=>{var t;const o=e,{objectValue:r=!0,addMode:i}=o,n=Y(o,["objectValue","addMode"]),a=(0,import_react.useField)(),l=(0,import_react.useFieldSchema)(),c=useServiceOptions$1((l==null?void 0:l["x-component-props"])||e),{options:u}=useAssociationFieldContext(),m=isVariable$1(e.value)?void 0:e.value,d=Array.isArray(m)?m.filter(Boolean):m,[p,h]=(0,import_react2.useState)(d),g=(t=l["x-component-props"])==null?void 0:t.addMode,{t:_}=(0,import_react_i18next.useTranslation)(),{multiple:f}=e,v=(0,import_react.useForm)(),C=useAPIClient().resource(u.target),S=useCollectionRecordData(),b=(0,import_react2.useContext)(SchemaComponentContext),{getCollection:y}=useCollectionManager_deprecated(),F=y(u.target),{filterTargetKey:j}=F;(0,import_react2.useEffect)(()=>{const M=isVariable$1(a.value)?void 0:a.value,w=Array.isArray(M)?M.filter(Boolean):M,O=removeIfKeyEmpty(w,j);h(O),(0,import_lodash.isEqual)(a.value,O)||(a.value=O)},[a.value,j]),(0,import_react2.useEffect)(()=>{const M=(0,import_shared.uid)();return v.addEffects(M,()=>{(0,import_core.onFieldInputValueChange)("*",w=>{var O,D,R,N,B,I;const $=filterAnalyses((R=(D=(O=a.componentProps)==null?void 0:O.service)==null?void 0:D.params)==null?void 0:R.filter)||[],E=getFieldPath(w.address.entire),L=getFieldPath(a.address.entire);$.includes((N=w==null?void 0:w.props)==null?void 0:N.name)&&a.value&&(0,import_lodash.isEqual)(w==null?void 0:w.indexes,a==null?void 0:a.indexes)&&((B=w==null?void 0:w.props)==null?void 0:B.name)!==a.props.name&&(!((I=a==null?void 0:a.indexes)!=null&&I.length)||(0,import_lodash.isEqual)(E,L))&&(a.setValue(null),h(null))})}),()=>{v.removeEffects(M)}},[]);const k=M=>z(void 0,null,function*(){var w,O;const{search:D,callBack:R}=M,{data:{data:N}}=yield C.create({values:{[((O=(w=a==null?void 0:a.componentProps)==null?void 0:w.fieldNames)==null?void 0:O.label)||"id"]:D}});if(N){if(["m2m","o2m"].includes(u==null?void 0:u.interface)&&f!==!1){const B=v.getValuesIn(a.path)||[];B.push(N),v.setValuesIn(a.path,B),a.onInput(B)}else v.setValuesIn(a.path,N),a.onInput(N);(0,import_mathjs.isFunction)(R)&&(R==null||R()),import_antd.message.success(_("Saved successfully"))}}),T=M=>(0,import_jsx_runtime.jsxs)("div",{onClick:()=>k(M),style:{cursor:"pointer",padding:"5px 12px",color:"#0d0c0c"},children:[(0,import_jsx_runtime.jsx)(import_icons.PlusOutlined,{}),(0,import_jsx_runtime.jsx)("span",{style:{paddingLeft:5},children:_("Add")+` “${M.search}” `})]});return(0,import_jsx_runtime.jsx)("div",{children:(0,import_jsx_runtime.jsxs)(import_antd.Space.Compact,{style:{display:"flex"},children:[(0,import_jsx_runtime.jsx)(RemoteSelect,P(x({style:{width:"100%"}},n),{size:"middle",objectValue:r,value:removeIfKeyEmpty(d||p,j),service:c,onChange:M=>{var w;const O=Array.isArray(M)&&M.length===0?null:M;(w=e.onChange)==null||w.call(e,O)},CustomDropdownRender:g==="quickAdd"&&T})),g==="modalAdd"&&(0,import_jsx_runtime.jsx)(SchemaComponentContext.Provider,{value:P(x({},b),{draggable:!1}),children:(0,import_jsx_runtime.jsx)(RecordProvider,{isNew:!0,record:null,parent:S,children:(0,import_jsx_runtime.jsx)(VariablePopupRecordProvider,{children:(0,import_jsx_runtime.jsx)(ClearCollectionFieldContext,{children:(0,import_jsx_runtime.jsx)(NocoBaseRecursionField,{onlyRenderProperties:!0,basePath:a.address,schema:l,filterProperties:M=>M["x-component"]==="Action"})})})})})]})},l.name)},{displayName:"AssociationSelect"}),AssociationSelect$1=InternalAssociationSelect$1;(0,import_react.connect)(e=>{const t=useServiceOptions$1(e);return e.fieldNames?(0,import_jsx_runtime.jsx)(RemoteSelect.ReadPretty,P(x({},e),{service:t})):null},(0,import_react.mapProps)({dataSource:"options",loading:!0},(e,t)=>P(x({},e),{fieldNames:e.fieldNames&&x(x({},e.fieldNames),t.componentProps.fieldNames),suffixIcon:t!=null&&t.loading||t!=null&&t.validating?(0,import_jsx_runtime.jsx)(import_icons.LoadingOutlined,{}):e.suffixIcon})));const publicPath=window.__nocobase_dev_public_path__||window.__nocobase_public_path__||"/",UPLOAD_PLACEHOLDER=[{ext:/\.docx?$/i,icon:"/file-placeholder/docx-200-200.png"},{ext:/\.pptx?$/i,icon:"/file-placeholder/pptx-200-200.png"},{ext:/\.jpe?g$/i,icon:"/file-placeholder/jpeg-200-200.png"},{ext:/\.pdf$/i,icon:"/file-placeholder/pdf-200-200.png"},{ext:/\.png$/i,icon:"/file-placeholder/png-200-200.png"},{ext:/\.eps$/i,icon:"/file-placeholder/eps-200-200.png"},{ext:/\.ai$/i,icon:"/file-placeholder/ai-200-200.png"},{ext:/\.gif$/i,icon:"/file-placeholder/gif-200-200.png"},{ext:/\.svg$/i,icon:"/file-placeholder/svg-200-200.png"},{ext:/\.xlsx?$/i,icon:"/file-placeholder/xlsx-200-200.png"},{ext:/\.psd?$/i,icon:"/file-placeholder/psd-200-200.png"},{ext:/\.(wav|aif|aiff|au|mp1|mp2|mp3|ra|rm|ram|mid|rmi)$/i,icon:"/file-placeholder/audio-200-200.png"},{ext:/\.(avi|wmv|mpg|mpeg|vob|dat|3gp|mp4|mkv|rm|rmvb|mov|flv)$/i,icon:"/file-placeholder/video-200-200.png"},{ext:/\.(zip|rar|arj|z|gz|iso|jar|ace|tar|uue|dmg|pkg|lzh|cab)$/i,icon:"/file-placeholder/zip-200-200.png"}].map(e=>({ext:e.ext,icon:publicPath+e.icon.slice(1)})),UNKNOWN_FILE_ICON=publicPath+"file-placeholder/unknown-200-200.png",FILE_SIZE_LIMIT_DEFAULT=1024*1024*20;class AttachmentFileTypes{constructor(){A(this,"types",[])}add(t){this.types.unshift(t)}getTypeByFile(t){return this.types.find(o=>o.match(t))}}const attachmentFileTypes=new AttachmentFileTypes;function matchMimetype(e,t){if(!e)return!1;if(e.originFileObj)return(0,import_mime_match.default)(e.type,t);if(e.mimetype)return(0,import_mime_match.default)(e.mimetype,t);if(e.url){const[o]=e.url.split("?");return(0,import_mime_match.default)(import_mime.default.getType(o)||"",t)}return!1}const toArr$1=e=>(0,import_shared.isValid)(e)?Object.keys(e).length===0?[]:(0,import_shared.toArr)(e):[],testOpts=(e,t)=>t&&(0,import_shared.isArr)(t.include)?t.include.some(o=>e.test(o)):t&&(0,import_shared.isArr)(t.exclude)?!t.exclude.some(o=>e.test(o)):!0;function getThumbnailPlaceholderURL(e,t={}){for(let o=0;o<UPLOAD_PLACEHOLDER.length;o++){const r=e.url?new URL(e.url.startsWith("http://")||e.url.startsWith("https://")?e.url:`${location.origin}/${e.url.replace(/^\//,"")}`):{pathname:e.filename};if(UPLOAD_PLACEHOLDER[o].ext.test(e.extname||e.filename||r.pathname||e.name))return testOpts(UPLOAD_PLACEHOLDER[o].ext,t)?UPLOAD_PLACEHOLDER[o].icon||UNKNOWN_FILE_ICON:e.name}return UNKNOWN_FILE_ICON}function getResponseMessage({error:e,response:t}){var o,r,i,n;if(e instanceof Error&&"isAxiosError"in e)return e.response?(i=(r=(o=e.response.data)==null?void 0:o.errors)==null?void 0:r.map)==null?void 0:i.call(r,l=>l==null?void 0:l.message).join(", "):e.message;if(!t)return"";if(typeof t=="string")return t;const{errors:a}=(n=t.data)!=null?n:{};return a!=null&&a.length?a.map(l=>l==null?void 0:l.message).join(", "):""}function normalizeFile(e){const t=getResponseMessage(e);return P(x({},e),{title:e.name,response:t})}function useUploadProps(e){const t=useAPIClient();return x({customRequest({action:o,data:r,file:i,filename:n,headers:a,onError:l,onProgress:c,onSuccess:u,withCredentials:m}){const d=new FormData;return r&&Object.keys(r).forEach(p=>{d.append(p,r[p])}),d.append(n,i),t.axios.post(o,d,{withCredentials:m,headers:a,onUploadProgress:({total:p,loaded:h})=>{c({percent:Math.round(h/p*100).toFixed(2)},i)}}).then(({data:p})=>{u(p,i)}).catch(l).finally(()=>{}),{abort(){console.log("upload progress is aborted.")}}}},e)}function toValueItem(e){return e}const toItem=e=>{var t;if(typeof e=="string")return{url:e};(t=e==null?void 0:e.response)!=null&&t.data&&(e=x({uid:e.uid},e.response.data));const o=P(x({},e),{id:e.id||e.uid,title:e.title||e.name});return e.url&&(o.url=e.url.startsWith("https://")||e.url.startsWith("http://")?e.url:`${location.origin}/${e.url.replace(/^\//,"")}`),o},toFileList=e=>toArr$1(e).filter(Boolean).map(toItem),Rules={size(e,t){const o=t??FILE_SIZE_LIMIT_DEFAULT;return o===0||e.size<=o?null:"File size exceeds the limit"},mimetype(e,t="*"){const o=t.toString().trim();return!o||o==="*"||o.split(",").filter(Boolean).some((0,import_mime_match.default)(e.type))?null:"File type is not allowed"}};function validate(e,t){if(!t)return null;const o=Object.keys(t);if(!o.length)return null;for(const r of o){const i=Rules[r](e,t[r]);if(i)return i}return null}function useBeforeUpload(e){const{t}=(0,import_react_i18next.useTranslation)();return(0,import_react2.useCallback)(o=>{const r=validate(o,e);return r?(o.status="error",o.response=t(r)):o.status==="error"&&(delete o.status,delete o.response),!r},[e])}const useStyles$6=genStyleHook("upload",e=>{const{componentCls:t,antCls:o}=e;return{[`${t}-wrapper`]:{"&.nb-upload.nb-upload-small":{[`${t}-list-picture-card-container`]:{margin:"0 3px 3px 0 !important",height:"32px !important",width:"32px !important",marginBlock:"0 !important"},[`${t}-list-picture-card ${t}-list-item-name${t}-list-item-name`]:{display:"none !important"},[`${t}-list-picture ${t}-list-item, ${t}-list-picture-card ${t}-list-item`]:{borderRadius:"4px",padding:"1px !important",[`${t}-list-item-image`]:{borderRadius:"2px"}}},"&.nb-upload-large":{[`${t}-list-picture-card-container`]:{margin:"0 3px 3px 0 !important",height:"160px !important",width:"160px !important",marginBlock:"0 28px !important"}},"&.nb-upload":{[`${t}-list-item, ${t}-list-item-list-type-picture-card`]:{padding:"3px !important"},[`${t}-list-item-thumbnail`]:{img:{objectFit:"cover !important"}},[`${t}-list-item-actions`]:{left:"auto !important",right:"2px !important",top:"2px !important",transform:"none !important",width:"fit-content !important",[`${o}-btn-text:hover, ${o}-btn-text:focus`]:{background:"rgba(0, 0, 0, 0.4)"}},[`${t}-list-picture-card ${t}-list-item-info`]:{overflow:"inherit",width:"100%",height:"100%"},[`${t}-list-picture-card ${t}-list-item-name`]:{display:"block !important",marginTop:"5px",fontSize:"13px",color:"#636363"},[`${t}-list-picture-card ${t}-list-item::before`]:{display:"none !important"},[`${t}-list-picture-card ${t}-list-item-progress`]:{bottom:"calc(50% - 11px)",left:`${e.margin/2}px`,pointerEvents:"none"},[`${o}-btn`]:{background:"rgba(0, 0, 0, 0.5)"},[`${t}-list-picture-card-container`]:{}},[`${t}-list-item-error`]:{[`${t}-list-item-info img`]:{opacity:.6}},[`${t}-drag`]:{[`${t}-drag-container`]:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",height:"100%",ul:{color:e.colorTextSecondary,[`${t}-hint`]:{textAlign:"left"}}}}}}}),useUploadStyles=useStyles$6,LightBoxGlobalStyle=import_antd_style.createGlobalStyle`
|
|
913
|
+
`,InternalPageContent=e=>{var t,o,r;const{loading:i,disablePageHeader:n,enablePageTabs:a,activeKey:l}=e,c=useCurrentRoute(),u=useNavigateNoUpdate(),m=useLocationNoUpdate(),{isMobileLayout:d}=useMobileLayout(),p=((c==null?void 0:c.children)||[]).every(g=>g.schemaUid!==l&&g.tabSchemaName!==l);if(l&&p)return(0,import_jsx_runtime.jsx)(AppNotFound,{});const h=(t=c==null?void 0:c.children)==null?void 0:t.find(g=>g.tabSchemaName===l);if(h){const g=new URLSearchParams(m.search);g.has("tab")&&g.get("tab")===l&&g.delete("tab");const _=g.toString()?`?${g.toString()}`:"",f=m.pathname+(m.pathname.endsWith("/")?`tabs/${h.schemaUid}`:`/tabs/${h.schemaUid}`);return u(f+_),null}return!n&&a?(0,import_jsx_runtime.jsx)(KeepAlive,{uid:l,children:g=>{var _;return(0,import_jsx_runtime.jsx)(NocoBaseRouteContext.Provider,{value:(_=c.children)==null?void 0:_.find(f=>f.schemaUid===g),children:(0,import_jsx_runtime.jsx)(RemoteSchemaComponent,{uid:g,schemaTransform:d?import_client.transformMultiColumnToSingleColumn:void 0})})}}):(0,import_jsx_runtime.jsx)("div",{className:className1,children:(0,import_jsx_runtime.jsx)(NocoBaseRouteContext.Provider,{value:(o=c==null?void 0:c.children)==null?void 0:o[0],children:(0,import_jsx_runtime.jsx)(RemoteSchemaComponent,{uid:(r=c==null?void 0:c.children)==null?void 0:r[0].schemaUid,schemaTransform:d?import_client.transformMultiColumnToSingleColumn:void 0})})})},PageContent=(0,import_react2.memo)(e=>(0,import_jsx_runtime.jsx)(PopupRouteContextResetter,{children:(0,import_jsx_runtime.jsx)(InternalPageContent,x({},e))})),TabBadge=e=>{var t,o,r;const i=useEvaluatedExpression((o=(t=e.tabRoute.options)==null?void 0:t.badge)==null?void 0:o.count);return i==null?null:(0,import_jsx_runtime.jsx)(import_antd.Badge,P(x({},(r=e.tabRoute.options)==null?void 0:r.badge),{count:i,style:e.style,dot:!1,children:e.children}))},NocoBasePageHeaderTabs=({className:e,activeKey:t})=>{const o=(0,import_react.useFieldSchema)(),{t:r}=(0,import_react_i18next.useTranslation)(),{t:i}=useRouteTranslation(),{token:n}=useToken$1(),a=useRouterBasename(),l=useNavigateNoUpdate(),c=(0,import_react2.useCallback)(y=>{navigateToTab({activeKey:y,navigate:l,basename:a})},[a,l]),u=useDesignable(),{getAriaLabel:m}=useGetAriaLabelOfSchemaInitializer(),d=(0,import_react2.useContext)(import_react.SchemaOptionsContext),{theme:p}=useGlobalTheme(),h=useCurrentRoute(),{createRoute:g}=useNocoBaseRoutes(),_=useCompile(),f=(0,import_react2.useMemo)(()=>u.designable&&(0,import_jsx_runtime.jsx)(import_antd.Button,{"aria-label":m("tabs"),icon:(0,import_jsx_runtime.jsx)(import_icons.PlusOutlined,{}),className:"addTabBtn",type:"dashed",onClick:()=>z(void 0,null,function*(){const y=yield FormDialog(r("Add tab"),()=>(0,import_jsx_runtime.jsx)(SchemaComponentOptions,{scope:d.scope,components:x({},d.components),children:(0,import_jsx_runtime.jsx)(import_antd_v5.FormLayout,{layout:"vertical",children:(0,import_jsx_runtime.jsx)(SchemaComponent,{schema:{properties:{title:{title:r("Tab name"),"x-component":"Input","x-decorator":"FormItem",required:!0},icon:{title:r("Icon"),"x-component":"IconPicker","x-decorator":"FormItem"}}}})})}),p).open({initialValues:{}}),{title:F,icon:j}=y,k=(0,import_shared.uid)(),T=(0,import_shared.uid)();yield g({type:NocoBaseDesktopRouteType.tabs,schemaUid:k,title:F||'{{t("Unnamed")}}',icon:j,parentId:h.id,tabSchemaName:T}),u.insertBeforeEnd(getTabSchema({title:F,icon:j,schemaUid:k,tabSchemaName:T}))}),children:r("Add tab")}),[u,m,d==null?void 0:d.components,d==null?void 0:d.scope,r,p]),v=h.enableTabs,C=(0,import_react2.useMemo)(()=>({paddingLeft:n.paddingLG-n.paddingPageHorizontal,paddingRight:n.paddingLG-n.paddingPageHorizontal,marginLeft:n.paddingPageHorizontal-n.paddingLG,marginRight:n.paddingPageHorizontal-n.paddingLG}),[n.paddingLG,n.paddingPageHorizontal]),S=(0,import_react2.useMemo)(()=>{var y;return(y=h==null?void 0:h.children)==null?void 0:y.map(F=>{var j,k;if(!F||F.hideInMenu)return null;const T={__route__:F};return{label:(0,import_jsx_runtime.jsx)(NocoBaseRouteContext.Provider,{value:F,children:(0,import_jsx_runtime.jsx)(VariableScope,{scopeId:F.schemaUid,type:"pageTab",children:(0,import_jsx_runtime.jsxs)(SortableItem,{id:String(F.id),className:(0,import_classnames.default)("nb-action-link","designerCss",e),schema:T,style:{display:"flex",alignItems:"center"},children:[F.icon&&(0,import_jsx_runtime.jsx)(Icon,{style:{marginRight:8},type:F.icon}),(0,import_jsx_runtime.jsx)("span",{children:F.title&&i(_(F.title))||r("Unnamed")}),(0,import_jsx_runtime.jsx)(PageTabDesigner,{}),(0,import_jsx_runtime.jsx)(TabBadge,{style:{marginLeft:4,color:(k=(j=F.options)==null?void 0:j.badge)==null?void 0:k.textColor},tabRoute:F})]})})}),key:F.schemaUid}}).filter(Boolean)},[o,e,r,o.mapProperties(y=>y.title||r("Unnamed")).join(),h]),{onDragEnd:b}=useMenuDragEnd();return v?(0,import_jsx_runtime.jsx)(DndContext,{onDragEnd:b,children:(0,import_jsx_runtime.jsx)(import_antd.Tabs,{size:"small",activeKey:t,tabBarStyle:C,onChange:c,tabBarExtraContent:f,items:S})}):null},NocoBasePageHeader=import_react2.default.memo(({activeKey:e,className:t})=>{var o,r;const i=(0,import_react.useFieldSchema)(),{setTitle:n}=useDocumentTitle(),{t:a}=(0,import_react_i18next.useTranslation)(),{t:l}=useRouteTranslation(),[c,u]=(0,import_react2.useState)(()=>a(i.title)),{active:m}=useKeepAlive(),d=(o=i["x-component-props"])==null?void 0:o.disablePageHeader,p=useCurrentRoute(),h=p.enableTabs,g=(r=i["x-component-props"])==null?void 0:r.hidePageTitle,{token:_}=useToken$1();return(0,import_react2.useEffect)(()=>{const f=a(i.title,{ns:NAMESPACE_UI_SCHEMA})||a(p==null?void 0:p.title,{ns:NAMESPACE_UI_SCHEMA});f&&m&&(n(f),u(f))},[i.title,c,n,a,p==null?void 0:p.title,m]),(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsx)(PageDesigner,{title:c}),!d&&(0,import_jsx_runtime.jsx)(import_pro_layout.PageHeader,{className:(0,import_classnames.default)("pageHeaderCss",c||h?"":"height0"),style:{paddingBottom:p.enableTabs||g?0:_.paddingSM},ghost:!1,title:g?" ":(!i.title&&c?l(c):c)||" ",footer:(0,import_jsx_runtime.jsx)(NocoBasePageHeaderTabs,{className:t,activeKey:e})})]})});NocoBasePageHeader.displayName="NocoBasePageHeader";function navigateToTab({activeKey:e,navigate:t,basename:o,pathname:r=window.location.pathname}){r=r.replace(o,""),r.endsWith("/")&&(r=r.slice(0,-1)),r.startsWith("/")||(r=`/${r}`),isTabPage(r)?t(withSearchParams(`${r.replace(/\/tabs\/[^/]+$/,`/tabs/${e}`)}`),{replace:!0}):t(withSearchParams(`${r}/tabs/${e}`),{replace:!0})}function isTabPage(e){e.endsWith("/")&&(e=e.slice(0,-1));const t=e.split("/");return t[t.length-2]==="tabs"}function getTabSchema({title:e,icon:t,schemaUid:o,tabSchemaName:r}){return{type:"void",name:r,title:e,"x-icon":t,"x-component":"Grid","x-initializer":"page:addBlock",properties:{},"x-uid":o,"x-async":!0}}function RouteSchemaComponent(){const e=useCurrentPageUid();return(0,import_jsx_runtime.jsx)(RemoteSchemaComponent,{onlyRenderProperties:!0,uid:e})}function useNotDisableHeader(){var e;return!((e=(0,import_react.useFieldSchema)()["x-component-props"])!=null&&e.disablePageHeader)}const pageSettings=new SchemaSettings({name:"PageSettings",items:[{name:"enablePageHeader",type:"switch",useComponentProps(){var e;const{dn:t}=useDesignable(),{t:o}=(0,import_react_i18next.useTranslation)(),r=(0,import_react.useFieldSchema)();return{title:o("Enable page header"),checked:!((e=r["x-component-props"])!=null&&e.disablePageHeader),onChange(i){r["x-component-props"]=r["x-component-props"]||{},r["x-component-props"].disablePageHeader=!i,t.emit("patch",{schema:{"x-uid":r["x-uid"],"x-component-props":r["x-component-props"]}}),t.refresh()}}}},{name:"divider",type:"divider",useVisible:useNotDisableHeader},{name:"displayPageTitle",type:"switch",useVisible:useNotDisableHeader,useComponentProps(){var e;const{dn:t}=useDesignable(),{t:o}=(0,import_react_i18next.useTranslation)(),r=(0,import_react.useFieldSchema)();return{title:o("Display page title"),checked:!((e=r["x-component-props"])!=null&&e.hidePageTitle),onChange(i){r["x-component-props"]=r["x-component-props"]||{},r["x-component-props"].hidePageTitle=!i,t.emit("patch",{schema:{"x-uid":r["x-uid"],"x-component-props":r["x-component-props"]}}),t.refresh()}}}},{name:"editPageTitle",type:"modal",useVisible(){var e;const t=useNotDisableHeader(),o=!((e=(0,import_react.useFieldSchema)()["x-component-props"])!=null&&e.hidePageTitle);return t&&o},useComponentProps(){const{dn:e}=useDesignable(),{t}=(0,import_react_i18next.useTranslation)(),o=(0,import_react.useField)(),r=(0,import_react.useFieldSchema)(),{title:i}=useSchemaToolbar();return{hide:!0,title:t("Edit page title"),schema:{type:"object",title:t("Edit page title"),properties:{title:{title:t("Title"),required:!0,"x-decorator":"FormItem","x-component":"Input","x-component-props":{}}}},initialValues:{title:i},onSubmit({title:n}){o.title=n,r.title=n,e.emit("patch",{schema:{"x-uid":r["x-uid"],title:n}})}}}},{name:"enablePageTabs",type:"switch",useVisible:useNotDisableHeader,useComponentProps(){const{dn:e}=useDesignable(),{t}=(0,import_react_i18next.useTranslation)(),o=(0,import_react.useFieldSchema)(),r=useCurrentRoute(),{updateRoute:i}=useNocoBaseRoutes();return{title:t("Enable page tabs"),checked:r.enableTabs,onChange(n){return z(this,null,function*(){yield i(r.id,{enableTabs:n}),o["x-component-props"]=o["x-component-props"]||{},o["x-component-props"].enablePageTabs=n,e.emit("patch",{schema:{"x-uid":o["x-uid"],"x-component-props":o["x-component-props"]}})})}}}}]}),pageTabSettings=new SchemaSettings({name:"PageTabSettings",items:[{name:"edit",type:"modal",useComponentProps(){const{t:e}=(0,import_react_i18next.useTranslation)(),{updateRoute:t}=useNocoBaseRoutes(),o=useCurrentRoute();return{title:e("Edit"),schema:{type:"object",title:e("Edit tab"),properties:{title:{title:e("Tab name"),required:!0,"x-decorator":"FormItem","x-component":"Input","x-component-props":{}},icon:{title:e("Icon"),"x-decorator":"FormItem","x-component":"IconPicker","x-component-props":{}}}},initialValues:{title:o.title,icon:o.icon},onSubmit:({title:r,icon:i})=>{t(o.id,{title:r,icon:i})}}},sort:100},{name:"hidden",type:"switch",useComponentProps(){const{t:e}=(0,import_react_i18next.useTranslation)(),{updateRoute:t}=useNocoBaseRoutes(),o=useCurrentRoute();return{title:e("Hidden"),checked:o.hideInMenu,onChange:r=>{import_antd.Modal.confirm({title:e("Are you sure you want to hide this tab?"),icon:(0,import_jsx_runtime.jsx)(import_icons.ExclamationCircleFilled,{}),content:e("After hiding, this tab will no longer appear in the tab bar. To show it again, you need to go to the route management page to set it."),onOk(){return z(this,null,function*(){yield t(o.id,{hideInMenu:!!r})})}})}}},sort:200},{name:"divider",type:"divider",sort:300},{name:"delete",type:"item",useComponentProps(){const{modal:e}=import_antd.App.useApp(),{dn:t}=useDesignable(),{t:o}=(0,import_react_i18next.useTranslation)(),{deleteRoute:r}=useNocoBaseRoutes(),i=useCurrentRoute(),n=useNavigateNoUpdate(),a=(0,import_react.useFieldSchema)();return{title:o("Delete"),eventKey:"remove",onClick(){e.confirm(P(x({title:o("Delete block"),content:o("Are you sure you want to delete it?")},confirm),{onOk(){return z(this,null,function*(){yield r(i.id),t.emit("remove",{removed:{"x-uid":i.schemaUid}}),window.location.pathname.includes(i.schemaUid)&&n(`/admin/${a["x-uid"]}`)})}}))},children:o("Delete")}},sort:400}]}),AntdSchemaComponentProvider=e=>{const{children:t}=e;return(0,import_jsx_runtime.jsx)(SchemaComponentOptions,{scope:{requestChartData,useFilterActionProps:useFilterActionProps$1},components:x(x({},components$2),common),children:t})};class AntdSchemaComponentPlugin extends Plugin{load(){return z(this,null,function*(){this.addComponents(),this.addScopes(),this.addSchemaSettings()})}addComponents(){this.app.addComponents(x(x({},components$2),common))}addScopes(){this.app.addScopes({requestChartData,useFilterActionProps:useFilterActionProps$1})}addSchemaSettings(){this.app.schemaSettingsManager.add(pageSettings),this.app.schemaSettingsManager.add(pageTabSettings),this.app.schemaSettingsManager.add(formItemSettings),this.app.schemaSettingsManager.add(filterFormItemSettings),this.app.schemaSettingsManager.add(formV1Settings),this.app.schemaSettingsManager.add(formSettings),this.app.schemaSettingsManager.add(readPrettyFormSettings),this.app.schemaSettingsManager.add(formDetailsSettings),this.app.schemaSettingsManager.add(actionSettings)}}function usePropsCollection({collection:e}){return e}function loadChildren(e){const t=getCollectionFieldOptions.call(this,e.field.target,e);return t.length&&t.some(o=>isAssociation(o.field))||(e.isLeaf=!0),t}function isAssociation(e){return["belongsTo","hasMany","hasOne","belongsToMany","belongsToArray"].includes(e.type)&&e.target&&e.interface}function trueFilter(e){return!0}function getCollectionFieldOptions(e,t){const o=this.getCollectionFields(e),r=loadChildren.bind(this);return o.filter(this.filter).map(i=>{var n,a,l;const c=t?`${t.value?`${t.value}.`:""}${i.name}`:i.name,u=(a=this.compile((n=i.uiSchema)==null?void 0:n.title))!=null?a:i.name,m=!this.getCollectionFields(i.target).filter(isAssociation).filter(this.filter).length;return{pId:(l=t==null?void 0:t.key)!=null?l:null,id:c,key:c,value:c,title:u,isLeaf:m,loadChildren:m?null:r,field:i,fullTitle:t?[...t.fullTitle,u]:[u]}})}const FieldsTreeSelect=e=>{const t=e,{title:o,value:r,onChange:i,collection:n,useCollection:a=usePropsCollection,filter:l=trueFilter,rootOption:c,loadData:u,includeFieldPaths:m}=t,d=Y(t,["title","value","onChange","collection","useCollection","filter","rootOption","loadData","includeFieldPaths"]),p=useCompile(),{t:h}=(0,import_react_i18next.useTranslation)(),[g,_]=(0,import_react2.useState)({}),f=a({collection:n}),[v,C]=parseCollectionName(f),S=useApp(),{collectionManager:b}=S.dataSourceManager.getDataSource(v),y=(D,R)=>{const N=b.getCollection(D);return N?N.getAllFields(R):[]},F=Object.values(g),j=(0,import_react2.useMemo)(()=>e.multiple?(r||[]).map(D=>g[D]).filter(Boolean):r,[r,e.multiple,g]),k=(0,import_react2.useCallback)(D=>z(void 0,null,function*(){if(u!=null)return u(D);if(!D.isLeaf&&D.loadChildren){const R=D.loadChildren(D);_(N=>R.reduce((B,I)=>Object.assign(B,{[I.value]:I}),x({},N)))}}),[u]);(0,import_react2.useEffect)(()=>{const D=c?P(x({},c),{id:c.value,key:c.value,title:c.label,fullTitle:c.label,isLeaf:!1}):null,R=(u===null?[]:getCollectionFieldOptions.call({compile:p,getCollectionFields:y,filter:l},C,D)).reduce((N,B)=>Object.assign(N,{[B.value]:B}),{});D&&(R[D.value]=D),_(R)},[f,c,l,u]),(0,import_react2.useEffect)(()=>{const D=e.multiple?r:r?[r]:[];if(!(D!=null&&D.length)||D.every(N=>!!g[N]))return;const R=[];D.forEach(N=>{const B=N.split(".");let I=g[B[0]];for(let $=1;$<B.length&&I;$++){const E=B.slice(0,$+1).join(".");if(g[E]){I=g[E];break}if(!I.isLeaf&&I.loadChildren){const L=I.loadChildren(I);L!=null&&L.length&&(R.push(...L),I=L.find(V=>V.value===B.slice(0,$+1).join(".")))}}}),_(N=>R.reduce((B,I)=>Object.assign(B,{[I.value]:I}),x({},N)))},[r,F.length,e.multiple]);const T=(0,import_react2.useCallback)(D=>{if(!e.multiple){i(D);return}const R=D.map(I=>I.value).filter(Boolean),N=new Set(R),B=j.find(I=>!N.has(I.value));if(B){const I=`${B.value}.`;Object.keys(g).forEach($=>{$.startsWith(I)&&N.delete($)})}else m&&R.forEach(I=>{const $=I.split(".");if($.length)for(let E=1;E<=$.length;E++)N.add($.slice(0,E).join("."))});i(Array.from(N))},[e.multiple,j,i,g]),M=(0,import_react2.useCallback)(D=>{var R;const{value:N,onClose:B,disabled:I,closable:$}=D;if(!N)return null;const{fullTitle:E}=(R=g[N])!=null?R:{};return(0,import_jsx_runtime.jsx)(import_antd.Tag,{closable:$&&!I,onClose:B,children:E==null?void 0:E.join(" / ")})},[g]),w=Array.isArray(j)?j.filter(D=>D.value in g):j,O=e.multiple?r:r!=null?[r]:[];return(0,import_jsx_runtime.jsx)(import_antd.TreeSelect,P(x({role:"button","data-testid":`select-field${o?`-${o}`:""}`,value:w,placeholder:h("Select field"),showCheckedStrategy:import_antd.TreeSelect.SHOW_ALL,treeDefaultExpandedKeys:O,allowClear:{clearIcon:(0,import_jsx_runtime.jsx)(import_icons.CloseCircleFilled,{role:"button","aria-label":"icon-close"})},treeCheckStrictly:e.multiple,treeCheckable:e.multiple,tagRender:M,onChange:T,treeDataSimpleMode:!0,treeData:F,loadData:k},d),{suffixIcon:(0,import_jsx_runtime.jsx)(import_icons.DownOutlined,{})}))},AppendsTreeSelect=e=>(0,import_jsx_runtime.jsx)(FieldsTreeSelect,x({filter:isAssociation,includeFieldPaths:!0},e)),removeIfKeyEmpty=(e,t)=>!e||typeof e!="object"||!t||Array.isArray(e)||e[t]?e:void 0,AssociationFieldAddNewer=e=>{const t=(0,import_react2.useContext)(SchemaComponentContext);return(0,import_jsx_runtime.jsx)(SchemaComponentContext.Provider,{value:P(x({},t),{draggable:!0}),children:(0,import_jsx_runtime.jsx)(Action.Container,x({},e))})},filterAnalyses=e=>{if(!e)return;const t=Object.keys(e)[0]||"$and",o=e[t],r=[];return o==null||o.map(i=>{var n,a,l;const c=getInnermostKeyAndValue(i);if(!(c!=null&&c.key))return!0;const u=/\{\{\$[a-zA-Z_]\w*(?:\.[a-zA-Z_]\w*)*\.(\w+)\.id\}\}/,m=(l=(a=(n=c==null?void 0:c.value)==null?void 0:n.match)==null?void 0:a.call(n,u))==null?void 0:l[1];m&&r.push(m)}),r};function getFieldPath(e){const t=e.lastIndexOf(".");return t===-1?e:e.slice(0,t)}const InternalAssociationSelect$1=(0,import_react.observer)(e=>{var t;const o=e,{objectValue:r=!0,addMode:i}=o,n=Y(o,["objectValue","addMode"]),a=(0,import_react.useField)(),l=(0,import_react.useFieldSchema)(),c=useServiceOptions$1((l==null?void 0:l["x-component-props"])||e),{options:u}=useAssociationFieldContext(),m=isVariable$1(e.value)?void 0:e.value,d=Array.isArray(m)?m.filter(Boolean):m,[p,h]=(0,import_react2.useState)(d),g=(t=l["x-component-props"])==null?void 0:t.addMode,{t:_}=(0,import_react_i18next.useTranslation)(),{multiple:f}=e,v=(0,import_react.useForm)(),C=useAPIClient().resource(u.target),S=useCollectionRecordData(),b=(0,import_react2.useContext)(SchemaComponentContext),{getCollection:y}=useCollectionManager_deprecated(),F=y(u.target),{filterTargetKey:j}=F;(0,import_react2.useEffect)(()=>{const M=isVariable$1(a.value)?void 0:a.value,w=Array.isArray(M)?M.filter(Boolean):M,O=removeIfKeyEmpty(w,j);h(O),(0,import_lodash.isEqual)(a.value,O)||(a.value=O)},[a.value,j]),(0,import_react2.useEffect)(()=>{const M=(0,import_shared.uid)();return v.addEffects(M,()=>{(0,import_core.onFieldInputValueChange)("*",w=>{var O,D,R,N,B,I;const $=filterAnalyses((R=(D=(O=a.componentProps)==null?void 0:O.service)==null?void 0:D.params)==null?void 0:R.filter)||[],E=getFieldPath(w.address.entire),L=getFieldPath(a.address.entire);$.includes((N=w==null?void 0:w.props)==null?void 0:N.name)&&a.value&&(0,import_lodash.isEqual)(w==null?void 0:w.indexes,a==null?void 0:a.indexes)&&((B=w==null?void 0:w.props)==null?void 0:B.name)!==a.props.name&&(!((I=a==null?void 0:a.indexes)!=null&&I.length)||(0,import_lodash.isEqual)(E,L))&&(a.setValue(null),h(null))})}),()=>{v.removeEffects(M)}},[]);const k=M=>z(void 0,null,function*(){var w,O;const{search:D,callBack:R}=M,{data:{data:N}}=yield C.create({values:{[((O=(w=a==null?void 0:a.componentProps)==null?void 0:w.fieldNames)==null?void 0:O.label)||"id"]:D}});if(N){if(["m2m","o2m"].includes(u==null?void 0:u.interface)&&f!==!1){const B=v.getValuesIn(a.path)||[];B.push(N),v.setValuesIn(a.path,B),a.onInput(B)}else v.setValuesIn(a.path,N),a.onInput(N);(0,import_mathjs.isFunction)(R)&&(R==null||R()),import_antd.message.success(_("Saved successfully"))}}),T=M=>(0,import_jsx_runtime.jsxs)("div",{onClick:()=>k(M),style:{cursor:"pointer",padding:"5px 12px",color:"#0d0c0c"},children:[(0,import_jsx_runtime.jsx)(import_icons.PlusOutlined,{}),(0,import_jsx_runtime.jsx)("span",{style:{paddingLeft:5},children:_("Add")+` “${M.search}” `})]});return(0,import_jsx_runtime.jsx)("div",{children:(0,import_jsx_runtime.jsxs)(import_antd.Space.Compact,{style:{display:"flex"},children:[(0,import_jsx_runtime.jsx)(RemoteSelect,P(x({style:{width:"100%"}},n),{size:"middle",objectValue:r,value:removeIfKeyEmpty(d||p,j),service:c,onChange:M=>{var w;const O=Array.isArray(M)&&M.length===0?null:M;(w=e.onChange)==null||w.call(e,O)},CustomDropdownRender:g==="quickAdd"&&T})),g==="modalAdd"&&(0,import_jsx_runtime.jsx)(SchemaComponentContext.Provider,{value:P(x({},b),{draggable:!1}),children:(0,import_jsx_runtime.jsx)(RecordProvider,{isNew:!0,record:null,parent:S,children:(0,import_jsx_runtime.jsx)(VariablePopupRecordProvider,{children:(0,import_jsx_runtime.jsx)(ClearCollectionFieldContext,{children:(0,import_jsx_runtime.jsx)(NocoBaseRecursionField,{onlyRenderProperties:!0,basePath:a.address,schema:l,filterProperties:M=>M["x-component"]==="Action"})})})})})]})},l.name)},{displayName:"AssociationSelect"}),AssociationSelect$1=InternalAssociationSelect$1;(0,import_react.connect)(e=>{const t=useServiceOptions$1(e);return e.fieldNames?(0,import_jsx_runtime.jsx)(RemoteSelect.ReadPretty,P(x({},e),{service:t})):null},(0,import_react.mapProps)({dataSource:"options",loading:!0},(e,t)=>P(x({},e),{fieldNames:e.fieldNames&&x(x({},e.fieldNames),t.componentProps.fieldNames),suffixIcon:t!=null&&t.loading||t!=null&&t.validating?(0,import_jsx_runtime.jsx)(import_icons.LoadingOutlined,{}):e.suffixIcon})));const publicPath=window.__nocobase_dev_public_path__||window.__nocobase_public_path__||"/",UPLOAD_PLACEHOLDER=[{ext:/\.docx?$/i,icon:"/file-placeholder/docx-200-200.png"},{ext:/\.pptx?$/i,icon:"/file-placeholder/pptx-200-200.png"},{ext:/\.jpe?g$/i,icon:"/file-placeholder/jpeg-200-200.png"},{ext:/\.pdf$/i,icon:"/file-placeholder/pdf-200-200.png"},{ext:/\.png$/i,icon:"/file-placeholder/png-200-200.png"},{ext:/\.eps$/i,icon:"/file-placeholder/eps-200-200.png"},{ext:/\.ai$/i,icon:"/file-placeholder/ai-200-200.png"},{ext:/\.gif$/i,icon:"/file-placeholder/gif-200-200.png"},{ext:/\.svg$/i,icon:"/file-placeholder/svg-200-200.png"},{ext:/\.xlsx?$/i,icon:"/file-placeholder/xlsx-200-200.png"},{ext:/\.psd?$/i,icon:"/file-placeholder/psd-200-200.png"},{ext:/\.(wav|aif|aiff|au|mp1|mp2|mp3|ra|rm|ram|mid|rmi)$/i,icon:"/file-placeholder/audio-200-200.png"},{ext:/\.(avi|wmv|mpg|mpeg|vob|dat|3gp|mp4|mkv|rm|rmvb|mov|flv)$/i,icon:"/file-placeholder/video-200-200.png"},{ext:/\.(zip|rar|arj|z|gz|iso|jar|ace|tar|uue|dmg|pkg|lzh|cab)$/i,icon:"/file-placeholder/zip-200-200.png"}].map(e=>({ext:e.ext,icon:publicPath+e.icon.slice(1)})),UNKNOWN_FILE_ICON=publicPath+"file-placeholder/unknown-200-200.png",FILE_SIZE_LIMIT_DEFAULT=1024*1024*20;class AttachmentFileTypes{constructor(){A(this,"types",[])}add(t){this.types.unshift(t)}getTypeByFile(t){return this.types.find(o=>o.match(t))}}const attachmentFileTypes=new AttachmentFileTypes;function matchMimetype(e,t){if(!e)return!1;if(e.originFileObj)return(0,import_mime_match.default)(e.type,t);if(e.mimetype)return(0,import_mime_match.default)(e.mimetype,t);if(e.url){const[o]=e.url.split("?");return(0,import_mime_match.default)(import_mime.default.getType(o)||"",t)}return!1}const toArr$1=e=>(0,import_shared.isValid)(e)?Object.keys(e).length===0?[]:(0,import_shared.toArr)(e):[],testOpts=(e,t)=>t&&(0,import_shared.isArr)(t.include)?t.include.some(o=>e.test(o)):t&&(0,import_shared.isArr)(t.exclude)?!t.exclude.some(o=>e.test(o)):!0;function getThumbnailPlaceholderURL(e,t={}){for(let o=0;o<UPLOAD_PLACEHOLDER.length;o++){const r=e.url?new URL(e.url.startsWith("http://")||e.url.startsWith("https://")?e.url:`${location.origin}/${e.url.replace(/^\//,"")}`):{pathname:e.filename};if(UPLOAD_PLACEHOLDER[o].ext.test(e.extname||e.filename||r.pathname||e.name))return testOpts(UPLOAD_PLACEHOLDER[o].ext,t)?UPLOAD_PLACEHOLDER[o].icon||UNKNOWN_FILE_ICON:e.name}return UNKNOWN_FILE_ICON}function getResponseMessage({error:e,response:t}){var o,r,i,n;if(e instanceof Error&&"isAxiosError"in e)return e.response?(i=(r=(o=e.response.data)==null?void 0:o.errors)==null?void 0:r.map)==null?void 0:i.call(r,l=>l==null?void 0:l.message).join(", "):e.message;if(!t)return"";if(typeof t=="string")return t;const{errors:a}=(n=t.data)!=null?n:{};return a!=null&&a.length?a.map(l=>l==null?void 0:l.message).join(", "):""}function normalizeFile(e){const t=getResponseMessage(e);return P(x({},e),{title:e.name,response:t})}function useUploadProps(e){const t=useAPIClient();return x({customRequest({action:o,data:r,file:i,filename:n,headers:a,onError:l,onProgress:c,onSuccess:u,withCredentials:m}){const d=new FormData;return r&&Object.keys(r).forEach(p=>{d.append(p,r[p])}),d.append(n,i),t.axios.post(o,d,{withCredentials:m,headers:a,onUploadProgress:({total:p,loaded:h})=>{c({percent:Math.round(h/p*100).toFixed(2)},i)}}).then(({data:p})=>{u(p,i)}).catch(l).finally(()=>{}),{abort(){console.log("upload progress is aborted.")}}}},e)}function toValueItem(e){return e}const toItem=e=>{var t;if(typeof e=="string")return{url:e};(t=e==null?void 0:e.response)!=null&&t.data&&(e=x({uid:e.uid},e.response.data));const o=P(x({},e),{id:e.id||e.uid,title:e.title||e.name});return e.url&&(o.url=e.url.startsWith("https://")||e.url.startsWith("http://")?e.url:`${location.origin}/${e.url.replace(/^\//,"")}`),o},toFileList=e=>toArr$1(e).filter(Boolean).map(toItem),Rules={size(e,t){const o=t??FILE_SIZE_LIMIT_DEFAULT;return o===0||e.size<=o?null:"File size exceeds the limit"},mimetype(e,t="*"){const o=t.toString().trim();return!o||o==="*"||o.split(",").filter(Boolean).some((0,import_mime_match.default)(e.type))?null:"File type is not allowed"}};function validate(e,t){if(!t)return null;const o=Object.keys(t);if(!o.length)return null;for(const r of o){const i=Rules[r](e,t[r]);if(i)return i}return null}function useBeforeUpload(e){const{t}=(0,import_react_i18next.useTranslation)();return(0,import_react2.useCallback)((o,r)=>{var i,n;let a=o;if(!o.type){const c=(n=(i=o.name)==null?void 0:i.match(/\.[^.]+$/))==null?void 0:n[0];c&&(a=new File([o],o.name,{type:import_mime.default.getType(c)||"application/octet-stream",lastModified:o.lastModified}))}const l=validate(a,e);return l?(a.status="error",a.response=t(l)):a.status==="error"&&(delete a.status,delete a.response),l?!1:a},[e])}const useStyles$6=genStyleHook("upload",e=>{const{componentCls:t,antCls:o}=e;return{[`${t}-wrapper`]:{"&.nb-upload.nb-upload-small":{[`${t}-list-picture-card-container`]:{margin:"0 3px 3px 0 !important",height:"32px !important",width:"32px !important",marginBlock:"0 !important"},[`${t}-list-picture-card ${t}-list-item-name${t}-list-item-name`]:{display:"none !important"},[`${t}-list-picture ${t}-list-item, ${t}-list-picture-card ${t}-list-item`]:{borderRadius:"4px",padding:"1px !important",[`${t}-list-item-image`]:{borderRadius:"2px"}}},"&.nb-upload-large":{[`${t}-list-picture-card-container`]:{margin:"0 3px 3px 0 !important",height:"160px !important",width:"160px !important",marginBlock:"0 28px !important"}},"&.nb-upload":{[`${t}-list-item, ${t}-list-item-list-type-picture-card`]:{padding:"3px !important"},[`${t}-list-item-thumbnail`]:{img:{objectFit:"cover !important"}},[`${t}-list-item-actions`]:{left:"auto !important",right:"2px !important",top:"2px !important",transform:"none !important",width:"fit-content !important",[`${o}-btn-text:hover, ${o}-btn-text:focus`]:{background:"rgba(0, 0, 0, 0.4)"}},[`${t}-list-picture-card ${t}-list-item-info`]:{overflow:"inherit",width:"100%",height:"100%"},[`${t}-list-picture-card ${t}-list-item-name`]:{display:"block !important",marginTop:"5px",fontSize:"13px",color:"#636363"},[`${t}-list-picture-card ${t}-list-item::before`]:{display:"none !important"},[`${t}-list-picture-card ${t}-list-item-progress`]:{bottom:"calc(50% - 11px)",left:`${e.margin/2}px`,pointerEvents:"none"},[`${o}-btn`]:{background:"rgba(0, 0, 0, 0.5)"},[`${t}-list-picture-card-container`]:{}},[`${t}-list-item-error`]:{[`${t}-list-item-info img`]:{opacity:.6}},[`${t}-drag`]:{[`${t}-drag-container`]:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",height:"100%",ul:{color:e.colorTextSecondary,[`${t}-hint`]:{textAlign:"left"}}}}}}}),useUploadStyles=useStyles$6,LightBoxGlobalStyle=import_antd_style.createGlobalStyle`
|
|
914
914
|
.ReactModal__Overlay.ReactModal__Overlay--after-open {
|
|
915
915
|
z-index: 3000 !important; // 避免预览图片时被遮挡
|
|
916
916
|
}
|
|
917
|
-
`;attachmentFileTypes.add({match(e){return matchMimetype(e,"image/*")},getThumbnailURL(e){return e.preview?e.preview:e.url?e.url:e.originFileObj?URL.createObjectURL(e.originFileObj):null},Previewer({index:e,list:t,onSwitchIndex:o}){var r,i,n,a;const[l,c]=(0,import_react2.useState)(0),u=(0,import_react2.useCallback)(
|
|
917
|
+
`;attachmentFileTypes.add({match(e){return matchMimetype(e,"image/*")},getThumbnailURL(e){return e.preview?e.preview:e.url?e.url:e.originFileObj?URL.createObjectURL(e.originFileObj):null},Previewer({index:e,list:t,onSwitchIndex:o}){var r,i,n,a;const[l,c]=(0,import_react2.useState)(0),u=(0,import_react2.useRef)(!1),m=()=>document.querySelector(".ril-image-current"),d=(0,import_react2.useCallback)((_,f)=>{if(!_)return;const v=_.style.transform||"",C=`${v.replace(/rotate\([^)]*\)/g,"").trim()} rotate(${(f%360+360)%360}deg)`.trim();v!==C&&(u.current=!0,_.style.transform=C,_.style.transformOrigin="center center",setTimeout(()=>{u.current=!1},0))},[]),p=(0,import_react2.useCallback)(_=>{_.preventDefault();const f=t[e];(0,import_file_saver.saveAs)(f.url,`${f.title}${f.extname}`)},[e,t]),h=(0,import_react2.useCallback)(()=>{c(_=>(_-90)%360)},[]),g=(0,import_react2.useCallback)(()=>{c(_=>(_+90)%360)},[]);return(0,import_react2.useEffect)(()=>{d(m(),l)},[l,d]),(0,import_react2.useEffect)(()=>{const _=m();if(!_)return;d(_,l);const f=new MutationObserver(v=>{u.current||v.some(C=>C.attributeName==="style")&&d(_,l)});return f.observe(_,{attributes:!0,attributeFilter:["style"]}),()=>f.disconnect()},[d,l,e]),(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsx)(LightBoxGlobalStyle,{}),(0,import_jsx_runtime.jsx)(import_react_image_lightbox.default,{mainSrc:(r=t[e])==null?void 0:r.url,nextSrc:(i=t[(e+1)%t.length])==null?void 0:i.url,prevSrc:(n=t[(e+t.length-1)%t.length])==null?void 0:n.url,onCloseRequest:()=>o(null),onMovePrevRequest:()=>{c(0),o((e+t.length-1)%t.length)},onMoveNextRequest:()=>{c(0),o((e+1)%t.length)},onAfterOpen:()=>{d(m(),l)},imageTitle:(a=t[e])==null?void 0:a.title,toolbarButtons:[(0,import_jsx_runtime.jsx)("button",{type:"button","aria-label":"Download",title:"Download",className:"ril-zoom-in ril__toolbarItemChild ril__builtinButton",style:{fontSize:22,background:"none",lineHeight:1},onClick:p,children:(0,import_jsx_runtime.jsx)(import_icons.DownloadOutlined,{})},"preview-img"),(0,import_jsx_runtime.jsx)("button",{type:"button",className:"ril-zoom-in ril__toolbarItemChild ril__builtinButton",style:{fontSize:22,background:"none",lineHeight:1},onClick:h,children:(0,import_jsx_runtime.jsx)(import_icons.UndoOutlined,{})},"rotate-left"),(0,import_jsx_runtime.jsx)("button",{type:"button",className:"ril-zoom-in ril__toolbarItemChild ril__builtinButton",style:{fontSize:22,background:"none",lineHeight:1},onClick:g,children:(0,import_jsx_runtime.jsx)(import_icons.RedoOutlined,{})},"rotate-right")]})]})}});const iframePreviewSupportedTypes=["application/pdf","audio/*","image/*","video/*","text/plain"];function IframePreviewer({index:e,list:t,onSwitchIndex:o}){const{t:r}=(0,import_react_i18next.useTranslation)(),i=t[e],n=i.url,a=(0,import_react2.useCallback)(u=>{u.preventDefault(),u.stopPropagation(),window.open(n)},[n]),l=(0,import_react2.useCallback)(u=>{u.preventDefault(),u.stopPropagation(),(0,import_file_saver.saveAs)(n,`${i.title}${i.extname}`)},[i.extname,i.title,n]),c=(0,import_react2.useCallback)(()=>{o(null)},[o]);return(0,import_jsx_runtime.jsx)(import_antd.Modal,{open:e!=null,title:i.title,onCancel:c,footer:[(0,import_jsx_runtime.jsx)(import_antd.Button,{onClick:a,children:r("Open in new window")},"open"),(0,import_jsx_runtime.jsx)(import_antd.Button,{onClick:l,children:r("Download")},"download"),(0,import_jsx_runtime.jsx)(import_antd.Button,{onClick:c,children:r("Close")},"close")],width:"85vw",centered:!0,children:(0,import_jsx_runtime.jsx)("div",{style:{maxWidth:"100%",maxHeight:"calc(100vh - 256px)",height:"90vh",width:"100%",background:"white",display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",overflowY:"auto"},children:iframePreviewSupportedTypes.some(u=>matchMimetype(i,u))?(0,import_jsx_runtime.jsx)("iframe",{src:n,style:{width:"100%",maxHeight:"90vh",flex:"1 1 auto",border:"none"}}):(0,import_jsx_runtime.jsx)(import_antd.Alert,{type:"warning",description:r("File type is not supported for previewing, please download it to preview."),showIcon:!0})})})}function InternalUpload(e){const t=e,{onChange:o}=t,r=Y(t,["onChange"]),i=(0,import_react2.useCallback)(n=>{o==null||o(toFileList(n.fileList))},[o]);return(0,import_jsx_runtime.jsx)(import_antd.Upload,P(x({},useUploadProps(r)),{onChange:i}))}function ReadPretty$9(e){var t=e,{value:o,onChange:r,disabled:i,multiple:n,size:a}=t,l=Y(t,["value","onChange","disabled","multiple","size"]);const{wrapSSR:c,hashId:u,componentCls:m}=useStyles$6();(import_style2.default.default?import_style2.default.default:import_style2.default)(m);const{isInTableCell:d}=useFlag(),p=(0,import_react2.useMemo)(()=>d?{display:"inline-block"}:{},[d]);return c((0,import_jsx_runtime.jsx)("div",{className:(0,import_classnames.default)(`${m}-wrapper`,`${m}-picture-card-wrapper`,"nb-upload",a?`nb-upload-${a}`:null,u,import_css.css`
|
|
918
918
|
.ant-upload-list-picture-card-container {
|
|
919
919
|
width: ${a}px !important;
|
|
920
920
|
height: ${a}px !important;
|
|
@@ -996,7 +996,7 @@ https://requirejs.org/docs/errors.html#`+e);return i.requireType=e,i.requireModu
|
|
|
996
996
|
.ant-table-tbody .nb-column-initializer {
|
|
997
997
|
min-width: 40px !important;
|
|
998
998
|
}
|
|
999
|
-
`,layout:"vertical",bordered:!1,feedbackLayout:"popover",children:(0,import_jsx_runtime.jsx)(import_react.SchemaOptionsContext.Provider,{value:{scope:l.scope,components:c},children:(0,import_jsx_runtime.jsx)(NocoBaseRecursionField,{onlyRenderProperties:!0,basePath:t.address,schema:o,filterProperties:u=>u["x-component"]==="AssociationField.SubTable"})})})})})},{displayName:"InternalSubTable"}),toValue$3=(e,t)=>e??t,ButtonTabList=(0,import_react.observer)(e=>{const t=(0,import_react.useFieldSchema)(),{enableLink:o,tagColorField:r}=t["x-component-props"],i=useFieldNames$1({fieldNames:e.fieldNames}),n=useInsertSchema$1("Viewer"),{options:a}=useAssociationFieldContext(),l=useCompile(),{designable:c}=useDesignable(),u=useLabelUiSchema$1(a,(i==null?void 0:i.label)||"label"),{snapshot:m}=useActionContext(),d=(0,import_react2.useRef)(),{getCollection:p}=useCollectionManager_deprecated(),h=p(a==null?void 0:a.target),g=(h==null?void 0:h.template)==="tree",{openPopup:_}=usePopupUtils(),f=useCollectionRecordData(),v=(0,import_react2.useRef)(!1),C=(0,import_react2.useRef)(t);C.current=t;const S=(0,import_react2.useCallback)(()=>C.current,[]);return(0,import_jsx_runtime.jsx)(import_jsx_runtime.Fragment,{children:(0,import_shared.toArr)(e.value).map((b,y,F)=>{const j=b==null?void 0:b[(i==null?void 0:i.label)||"label"],k=g?transformNestedData(b).map(w=>w==null?void 0:w[(i==null?void 0:i.label)||"label"]).join(" / "):isObject(j)?JSON.stringify(j):j,T=toValue$3(l(k),"N/A"),M=getTabFormatValue(l(u),T,b[r]);return(0,import_jsx_runtime.jsxs)(import_react2.Fragment,{children:[(0,import_jsx_runtime.jsx)("span",{children:m?M:o!==!1?(0,import_jsx_runtime.jsx)("a",{onMouseEnter:()=>{e.setBtnHover(!0)},onClick:w=>{var O;e.setBtnHover(!0),w.stopPropagation(),w.preventDefault(),c&&!t.properties&&(n(schema$1.Viewer),v.current=!0),v.current?setTimeout(()=>{_({recordData:b,parentRecordData:f,customActionSchema:S()}),v.current=!1}):_({recordData:b,parentRecordData:f}),(O=d==null?void 0:d.current)==null||O.setPopoverVisible(!1)},children:M}):M}),y<F.length-1?(0,import_jsx_runtime.jsx)("span",{style:{marginRight:4,color:"#aaa"},children:","}):null]},`${b==null?void 0:b[i.value]}_${y}`)})})},{displayName:"ButtonTabList"}),ReadPrettyInternalTag=e=>(0,import_jsx_runtime.jsx)(ReadPrettyInternalViewer,P(x({},e),{ButtonList:ButtonTabList}));var AssociationFieldMode=(e=>(e.Picker="Picker",e.Nester="Nester",e.PopoverNester="PopoverNester",e.Select="Select",e.SubTable="SubTable",e.FileManager="FileManager",e.CascadeSelect="CascadeSelect",e.Tag="Tag",e))(AssociationFieldMode||{});const defaultModeToComponent={Picker:InternalPicker,Nester:InternalNester,PopoverNester:InternalPopoverNester,Select:AssociationSelect$1,SubTable:InternalSubTable,FileManager:InternalFileManager,CascadeSelect:InternalCascadeSelect,Tag:ReadPrettyInternalTag},AssociationFieldModeContext=(0,import_react2.createContext)({modeToComponent:defaultModeToComponent,getComponent:e=>defaultModeToComponent[e],getDefaultComponent:e=>defaultModeToComponent[e]}),AssociationFieldModeProvider=e=>{const t=useAssociationFieldModeContext(),o=(0,import_react2.useMemo)(()=>x(x({},t.modeToComponent),e.modeToComponent),[t.modeToComponent,e.modeToComponent]),r=(0,import_react2.useCallback)(a=>o[a]||defaultModeToComponent[a],[o]),i=(0,import_react2.useCallback)(a=>defaultModeToComponent[a],[]),n=(0,import_react2.useMemo)(()=>({modeToComponent:o,getComponent:r,getDefaultComponent:i}),[r,o,i]);return(0,import_jsx_runtime.jsx)(AssociationFieldModeContext.Provider,{value:n,children:e.children})},useAssociationFieldModeContext=()=>import_react2.default.useContext(AssociationFieldModeContext),AssociationFieldProvider=(0,import_react.observer)(e=>{var t,o,r;const i=(0,import_react.useField)(),n=useCollectionManager(),a=(0,import_react.useFieldSchema)(),l=useAPIClient(),c=useSchemaOptionsContext(),u=(0,import_react2.useRef)(null),m=useCollectionRecord();useSchemaComponentContext();const d=((t=a["x-component-props"])==null?void 0:t.multiple)!==!1,p=((o=a["x-component-props"])==null?void 0:o.allowDissociate)!==!1,h=(0,import_react2.useMemo)(()=>n.getCollectionField(a["x-collection-field"]),[a["x-collection-field"],a.name]),g=(0,import_react2.useMemo)(()=>{var F;return((F=n.getCollection(h==null?void 0:h.target))==null?void 0:F.template)==="file"},[a["x-collection-field"]]),_=(0,import_react2.useMemo)(()=>{var F;return((F=a["x-component-props"])==null?void 0:F.mode)||(g?"FileManager":"Select")},[(r=a["x-component-props"])==null?void 0:r.mode]),[f,v]=(0,import_react2.useState)(!i.readPretty),{loading:C,run:S}=useRequest(()=>{var F;const j=h.targetKey;if(!a.default||!["Picker","Select"].includes(_)||!import_lodash.default.isObject(a.default))return Promise.reject(null);const k=Array.isArray(a.default)?a.default.map(T=>T[j]):a.default[j];return import_lodash.default.isUndefined(k)||import_lodash.default.isNil(k)||import_lodash.default.isNaN(k)||m&&!m.isNew?Promise.reject(null):l.request({resource:h.target,action:Array.isArray(k)?"list":"get",headers:getDataSourceHeaders((F=n==null?void 0:n.dataSource)==null?void 0:F.key),params:{filter:{[j]:k}}})},{manual:!0,onSuccess(F){var j;i.initialValue=(j=F==null?void 0:F.data)==null?void 0:j.data}}),{active:b}=useKeepAlive();if((0,import_react2.useEffect)(()=>{var F;if(b){if(v(!0),!h){v(!1);return}if(["Picker","Select"].includes(_)&&a.default&&S(),i.value&&i.form.__template&&["Nester","SubTable","PopoverNester"].includes(_)&&(["belongsTo","hasOne"].includes(h.type)?((F=i.value)!=null&&F[h.targetKey]&&delete i.value[h.targetKey],i.value=x(x({},i.initialValue),i.value)):["belongsToMany","hasMany"].includes(h.type)&&Array.isArray(i.value)&&(i.value=i.value.map(j=>{var k;return delete j[h.targetKey],x(x({},(k=i.initialValue)==null?void 0:k[0]),j)}))),i.value!==null&&i.value!==void 0){["Nester","PopoverNester"].includes(_)&&Array.isArray(i.value)&&i.value.length===0&&["belongsToMany","hasMany","belongsToArray"].includes(h.type)&&(i.value=[markRecordAsNew({})]),v(!1);return}["Nester"].includes(_)&&(["belongsTo","hasOne"].includes(h.type)?i.value={}:["belongsToMany","hasMany","belongsToArray"].includes(h.type)&&(i.value=[markRecordAsNew({})])),_==="SubTable"&&(i.value=[]),v(!1)}},[_,h,i,b]),f||C)return null;const y=P(x({},c.components),{FormItem:F=>(0,import_jsx_runtime.jsx)(FormItem,P(x({},F),{getPopupContainer:j=>u.current||document.body}))});return h?(0,import_jsx_runtime.jsx)("div",{ref:u,children:(0,import_jsx_runtime.jsx)(AssociationFieldContext.Provider,{value:{options:h,field:i,fieldSchema:a,allowMultiple:d,allowDissociate:p,currentMode:_},children:(0,import_jsx_runtime.jsx)(import_react.SchemaOptionsContext.Provider,{value:{components:y,scope:c.scope},children:e.children})})}):null},{displayName:"AssociationFieldProvider"}),InternalField=e=>{const t=(0,import_react.useField)(),o=(0,import_react.useFieldSchema)(),r=useCollectionField_deprecated(),{getInterface:i}=useCollectionManager_deprecated(),{uiSchema:n}=r,a=i(r.interface),l=useComponent((n==null?void 0:n["x-component"])||a.default.uiSchema["x-component"]),c=useCompile(),u=(d,p)=>{t[d]=typeof t[d]>"u"?p:t[d]},m=()=>{typeof o.required>"u"&&(t.required=!!n.required)};return(0,import_react2.useEffect)(()=>{if(!n)return;u("content",n["x-content"]),u("title",n.title),u("description",n.description),u("initialValue",n.default),o["x-disabled"]===!0&&(t.disabled=!0),o["x-read-pretty"]===!0&&(t.readPretty=!0),m(),t.dataSource=n.enum;const d=c(n["x-component-props"])||{},p=(0,import_shared.merge)(d,t.componentProps||{});t.componentProps=p},[JSON.stringify(n)]),n?import_react2.default.createElement(l,e,e.children):null},CollectionField=e=>{const t=(0,import_react.useFieldSchema)();return(0,import_jsx_runtime.jsx)(CollectionFieldProvider,{name:t.name,children:(0,import_jsx_runtime.jsx)(InternalField,x({},e))})};var AssignedFieldValueType=(e=>(e.ConstantValue="constantValue",e.DynamicValue="dynamicValue",e))(AssignedFieldValueType||{});const AssignedFieldInner=e=>{const{value:t,onChange:o}=e,{getCollectionFields:r,getAllCollectionsInheritChain:i}=useCollectionManager_deprecated(),n=useCollection_deprecated(),{form:a}=useFormBlockContext(),l=(0,import_react.useFieldSchema)(),c=(0,import_react.useField)(),u=useRecord(),m=useVariables$1(),d=useLocalVariables$1(),p=useCollectionFilterOptions(n),{name:h,getField:g}=n,_=g(l.name),{uiSchema:f}=useCollectionField_deprecated(),v=(0,import_react2.useMemo)(()=>getShouldChange({collectionField:_,variables:m,localVariables:d,getAllCollectionsInheritChain:i}),[_,i,d,m]),C=(0,import_react2.useCallback)(b=>{const y=b.find(j=>j.value==="$nForm"),F=r(h);return!(F!=null&&F.length)&&y&&(y.children=formatVariableScop(p)),(0,import_lodash.cloneDeepWith)(b,j=>{if((0,import_react2.isValidElement)(j))return j})},[p,h]),S=(0,import_react2.useCallback)(({value:b,onChange:y})=>(0,import_jsx_runtime.jsx)(CollectionField,P(x({},e),{value:b,onChange:y})),[JSON.stringify(import_lodash.default.omit(e,"value"))]);return(0,import_react2.useEffect)(()=>{f&&(c.title=typeof c.title>"u"?(f==null?void 0:f.title)||c.name:c.title)},[JSON.stringify(f)]),(0,import_jsx_runtime.jsx)(FlagProvider,{collectionField:_,children:(0,import_jsx_runtime.jsx)(VariableInput,{form:a,record:u,value:t,onChange:o,renderSchemaComponent:S,collectionField:_,shouldChange:v,returnScope:C,targetFieldSchema:l})})},AssignedField=e=>(useFormBlockContext(),useBlockContext(),(0,import_jsx_runtime.jsx)(AssignedFieldInner,x({},e)));function useAclCheck(e){return useAclCheckFn()(e)}function useAclCheckFn(){const{data:e,inResources:t,getResourceActionParams:o,getStrategyActionParams:r}=useACLRolesCheck(),i=useRecordPkValue(),n=useCollection_deprecated();function a(l){const c=n.resource,u=(m,d={})=>{const[p]=m.split(":");return e!=null&&e.allowAll?{}:t(p)?o(m):r(m)};return!l&&c&&(l=`${c}:create}`),l!=null&&l.includes(":")||(l=`${c}:${l}`),l?!!u(l,{recordPkValue:i}):!0}return a}const InternalCreateRecordAction=(e,t)=>{const o=(0,import_react.useFieldSchema)(),r=(0,import_react.useField)(),i=(o==null?void 0:o["x-linkage-rules"])||[],n=useRecord(),a=useVariables$1(),l=useLocalVariables$1({currentForm:{values:n}}),{openPopup:c}=usePopupUtils(),u=useTreeParentRecord(),m=useCollectionManager(),d=useApp();(0,import_react2.useEffect)(()=>{r.stateOfLinkageRules={},i.filter(g=>!g.disabled).forEach(g=>{var _;(_=g.actions)==null||_.forEach(f=>{linkageAction({operator:f.operator,field:r,condition:g.condition,variables:a,localVariables:l,conditionType:g.conditionType},d.jsonLogic)})})},[r,i,l,a]);const p=(0,import_react2.createRef)(),h=(0,import_ref.composeRef)(t,p);return(0,import_jsx_runtime.jsx)("div",{ref:h,children:(0,import_jsx_runtime.jsx)(CreateAction,P(x({},e),{onClick:g=>{var _;g=m.getCollection(g.name)||g,u?c({recordData:u}):(_=g.isInherited)!=null&&_.call(g)?c({collectionNameUsedInURL:g.name}):c()}}))})};function getLinkageCollection(e,t,o){const r={$form:t.values,$iteration:t.values};if(e.includes("$iteration")){const i=o.path.segments.concat([]);return i.splice(-2),e=e.replace("$iteration.",`$iteration.${i.join(".")}.`),parseVariables(e,r)}else return parseVariables(e,{$form:t.values})}const CreateAction=(0,import_react.observer)(e=>{var t;const{onClick:o}=e,r=useCollection_deprecated(),i=(0,import_react.useFieldSchema)(),n=(0,import_react.useField)(),a=(0,import_react.useForm)(),l=useVariables$1(),c=useAclCheckFn(),u=i["x-enable-children"]||[],m=i==null?void 0:i["x-allow-add-to-current"],d=(t=i==null?void 0:i["x-component-props"])==null?void 0:t.linkageFromForm,p=n.componentProps.type==="danger"?void 0:n.componentProps.type||"primary",{getChildrenCollections:h}=useCollectionManager_deprecated(),g=h(r.name),_=(0,import_react2.useMemo)(()=>u.map(T=>{if(!T)return;const M=g.find(w=>w.name===T.collection);if(M)return P(x({},M.getOptions()),{title:T.title||M.title})}).filter(T=>T&&c(`${T.name}:create`)),[u,g]),f=(i==null?void 0:i["x-linkage-rules"])||[],v=useRecord(),C=useLocalVariables$1({currentForm:{values:v}}),S=useCompile(),{designable:b}=useDesignable(),y=e.icon||null,F=useApp(),j=(0,import_react2.useMemo)(()=>_.map(T=>({key:T.name,label:S(T.title),onClick:()=>o==null?void 0:o(T)})),[_,o]),k=(0,import_react2.useMemo)(()=>({items:j}),[j]);return(0,import_react2.useEffect)(()=>{n.stateOfLinkageRules={},f.filter(T=>!T.disabled).forEach(T=>{var M;(M=T.actions)==null||M.forEach(w=>{linkageAction({operator:w.operator,field:n,condition:T.condition,variables:l,localVariables:C,conditionType:T.conditionType},F.jsonLogic)})})},[n,f,C,l]),(0,import_jsx_runtime.jsx)("div",{children:(0,import_jsx_runtime.jsx)(FinallyButton,{inheritsCollections:_,linkageFromForm:d,allowAddToCurrent:m,props:e,componentType:p,menu:k,onClick:o,collection:r,icon:y,field:n,form:a,designable:b})})},{displayName:"CreateAction"});function FinallyButton(e){var t=e,{inheritsCollections:o,linkageFromForm:r,allowAddToCurrent:i,props:n}=t,a=n,{onlyIcon:l}=a,c=Y(a,["onlyIcon"]),{componentType:u,menu:m,onClick:d,collection:p,icon:h,field:g,form:_,designable:f}=t,v,C,S,b,y,F;const{getCollection:j}=useCollectionManager_deprecated(),k=useACLActionParamsContext(),T=(0,import_react2.useMemo)(()=>{var M;const w=f&&(((M=g==null?void 0:g.data)==null?void 0:M.hidden)||!k);return{opacity:u!=="link"&&w?.1:1}},[f,(v=g==null?void 0:g.data)==null?void 0:v.hidden,k,u]);return(o==null?void 0:o.length)>0?r?(0,import_jsx_runtime.jsx)(import_antd.Button,{"aria-label":c["aria-label"],type:u,disabled:g.disabled,danger:c.danger,icon:h,onClick:M=>{const w=getLinkageCollection(r,_,g),O=o.find(R=>R.name===w)?w:p.name,D=j(O);d==null||d(D)},style:x({display:!f&&((C=g==null?void 0:g.data)==null?void 0:C.hidden)&&"none",opacity:f&&((S=g==null?void 0:g.data)==null?void 0:S.hidden)&&.1},T),children:c.children}):i===void 0||i?(0,import_jsx_runtime.jsxs)(import_antd.Dropdown.Button,{"aria-label":c["aria-label"],danger:c.danger,type:u,icon:(0,import_jsx_runtime.jsx)(import_icons.DownOutlined,{}),style:x(x({},c==null?void 0:c.style),T),buttonsRender:([M,w])=>[import_react2.default.cloneElement(M,{style:c==null?void 0:c.style}),import_react2.default.cloneElement(w,{loading:!1,style:P(x({},c==null?void 0:c.style),{justifyContent:"center"})})],menu:m,onClick:M=>{d==null||d(p)},children:[h,c.children]}):(0,import_jsx_runtime.jsx)(import_antd.Dropdown,{menu:m,children:(0,import_jsx_runtime.jsxs)(import_antd.Button,{"aria-label":c["aria-label"],icon:h,type:u,danger:c.danger,style:x(x({},c==null?void 0:c.style),T),children:[c.children," ",(0,import_jsx_runtime.jsx)(import_icons.DownOutlined,{})]})}):(0,import_jsx_runtime.jsx)(import_antd.Button,P(x({},c),{"aria-label":c["aria-label"],type:u,disabled:g.disabled,danger:c.danger,icon:h,onClick:M=>{d==null||d(p)},style:x(P(x({},c==null?void 0:c.style),{display:!f&&(b=g==null?void 0:g.data)!=null&&b.hidden?"none":"inline-block",opacity:f&&((y=g==null?void 0:g.data)==null?void 0:y.hidden)&&.1}),T),children:l?(F=c==null?void 0:c.children)==null?void 0:F[1]:c==null?void 0:c.children}))}const CreateRecordAction$1=(0,import_react2.forwardRef)(InternalCreateRecordAction),initializerComponents=Object.freeze(Object.defineProperty({__proto__:null,AssignedField,AssignedFieldInner,AssignedFieldValueType,CreateAction,CreateRecordAction:CreateRecordAction$1,useAclCheck},Symbol.toStringTag,{value:"Module"})),CreateRecordAction=(0,import_react.observer)(e=>{const t=(0,import_react.useField)(),o=(0,import_react.useFieldSchema)(),r=useActionContext(),{getCollection:i}=useCollectionManager_deprecated(),n=useInsertSchema$1("AddNewer"),{options:a}=useAssociationFieldContext(),[l,c]=(0,import_react2.useState)(!1),u=i(a==null?void 0:a.target),[m,d]=(0,import_react2.useState)(u==null?void 0:u.name),[p,h]=(0,import_react2.useState)(u==null?void 0:u.dataSource),[g,_]=(0,import_react2.useState)(!1),f=(0,import_react2.useMemo)(()=>o.reduceProperties((C,S)=>S["x-component"]==="AssociationField.AddNewer"?(Object.keys(S.parent.properties).forEach(b=>{b!==S.name&&S.parent.removeProperty(b)}),S.parent):C),[o]),v=C=>{n(schema$1.AddNewer),c(!0),d(C.name),h(C.dataSource)};return(0,import_jsx_runtime.jsxs)(CollectionProvider_deprecated,{name:a==null?void 0:a.target,children:[(0,import_jsx_runtime.jsx)(CreateAction,P(x({},e),{onClick:C=>v(C)})),(0,import_jsx_runtime.jsx)(ActionContextProvider,{value:P(x({},r),{visible:l,setVisible:c,formValueChanged:g,setFormValueChanged:_}),children:(0,import_jsx_runtime.jsx)(CollectionProvider_deprecated,{name:m,dataSource:p,children:(0,import_jsx_runtime.jsx)(TabsContextProvider,{children:(0,import_jsx_runtime.jsx)(NocoBaseRecursionField,{basePath:t.address,schema:f})})})})]})},{displayName:"CreateRecordAction"}),EditableAssociationField=e=>{const{multiple:t}=e,o=(0,import_react.useField)(),r=(0,import_react.useForm)(),{options:i,currentMode:n}=useAssociationFieldContext(),{getComponent:a}=useAssociationFieldModeContext(),l=()=>{const{onClick:u}=useAssociationCreateActionProps(),m=(0,import_react.useField)(),{getPrimaryKey:d}=useCollection_deprecated(),p=d();return{onClick(){return z(this,null,function*(){var h,g;yield u();const{data:_}=((g=(h=m.data)==null?void 0:h.data)==null?void 0:g.data)||{};if(_)if(["m2m","o2m"].includes(i==null?void 0:i.interface)&&t!==!1){const f=r.getValuesIn(o.path)||[];f.find(v=>v[p]===_[p])||(f.push(_),r.setValuesIn(o.path,f),o.onInput(f))}else r.setValuesIn(o.path,_),o.onInput(_)})}}},c=a(n);return(0,import_jsx_runtime.jsx)(SchemaComponentOptions,{scope:{useCreateActionProps:l},components:{CreateRecordAction},children:(0,import_jsx_runtime.jsx)(c,x({},e))})},Editable$1=(0,import_react.observer)(e=>(0,import_jsx_runtime.jsx)(AssociationFieldProvider,{children:(0,import_jsx_runtime.jsx)(EditableAssociationField,x({},e))}),{displayName:"Editable"}),Nester=e=>{const{options:t}=(0,import_react2.useContext)(AssociationFieldContext);return["hasOne","belongsTo"].includes(t.type)?(0,import_jsx_runtime.jsx)(FlagProvider,{isInSubForm:!0,children:(0,import_jsx_runtime.jsx)(ToOneNester,x({},e))}):["hasMany","belongsToMany","belongsToArray"].includes(t.type)?(0,import_jsx_runtime.jsx)(FlagProvider,{isInSubForm:!0,children:(0,import_jsx_runtime.jsx)(ToManyNester,x({},e))}):null},ToOneNester=e=>{const{field:t}=useAssociationFieldContext(),o=useCollectionRecord(),r=useCollection(),i=(0,import_react.useFieldSchema)(),n=(0,import_react2.useCallback)(({form:a,fieldSchema:l,collectionField:c,getInterface:u,formBlockType:m})=>{var d;return!c||c.target&&(d=l["x-component-props"])!=null&&d.mode&&!["Picker","Select"].includes(l["x-component-props"].mode)||m==="update"?!1:!(a!=null&&a.readPretty)&&!isPatternDisabled(l)&&!interfacesOfUnsupportedDefaultValue.includes(c==null?void 0:c.interface)&&!isSystemField(c,u)},[]);return(0,import_jsx_runtime.jsx)(FormActiveFieldsProvider,{name:"nester",children:(0,import_jsx_runtime.jsx)(SubFormProvider,{value:{value:t.value,collection:r,fieldSchema:i.parent},children:(0,import_jsx_runtime.jsx)(RecordProvider,{isNew:o==null?void 0:o.isNew,record:t.value,parent:o==null?void 0:o.data,children:(0,import_jsx_runtime.jsx)(DefaultValueProvider,{isAllowToSetDefaultValue:n,children:(0,import_jsx_runtime.jsx)(import_antd.Card,{bordered:!0,children:e.children})})})})})},ToManyNester=(0,import_react.observer)(e=>{const t=(0,import_react.useFieldSchema)(),{options:o,field:r,allowMultiple:i,allowDissociate:n,currentMode:a}=useAssociationFieldContext(),{allowSelectExistingRecord:l}=r.componentProps,{t:c}=(0,import_react_i18next.useTranslation)(),u=useCollectionRecordData(),m=useCollection(),d=(0,import_ahooks.useUpdate)(),{isMobileLayout:p}=useMobileLayout(),h=(0,import_react2.useMemo)(()=>p?(0,import_client.transformMultiColumnToSingleColumn)(t):t,[p,t]),g=(0,import_react2.useMemo)(()=>p?(0,import_client.transformMultiColumnToSingleColumn)(t.parent):t.parent,[p,t.parent]),_=useRefreshComponent(),f=(0,import_react2.useCallback)(()=>{d(),_==null||_()},[d,_]),[v,C]=(0,import_react2.useState)(!1),[S,b]=(0,import_react2.useState)([]),y=useFieldNames$1(e),F=useCompile(),j=useLabelUiSchema$1(o,(y==null?void 0:y.label)||"label"),k=()=>({run(){C(!0)}});Array.isArray(r.value)||(r.value=[]);const T=(0,import_react2.useCallback)(({form:R,fieldSchema:N,collectionField:B,getInterface:I})=>{var $;return!B||B.target&&($=N["x-component-props"])!=null&&$.mode&&!["Picker","Select"].includes(N["x-component-props"].mode)?!1:!(R!=null&&R.readPretty)&&!isPatternDisabled(N)&&!interfacesOfUnsupportedDefaultValue.includes(B==null?void 0:B.interface)&&!isSystemField(B,I)},[]),M=()=>{const{setVisible:R}=useActionContext(),{selectedRows:N,setSelectedRows:B}=(0,import_react2.useContext)(RecordPickerContext);return{onClick(){N.map(I=>r.value.push(markRecordAsNew(I))),r.onInput(r.value),r.initialValue=r.value,B([]),R(!1)}}},w=(0,import_react2.useMemo)(()=>r.value&&Object.keys(r.value).length>0?(Array.isArray(r.value)?r.value:r.value?[r.value]:[]).filter(Boolean).map(R=>{const N=R==null?void 0:R[y.label];return P(x({},R),{[y.label]:getLabelFormatValue$1(F(j),F(N))})}):[],[r.value,y==null?void 0:y.label]),O={size:"small",fieldNames:r.componentProps.fieldNames,multiple:!0,association:{target:o==null?void 0:o.target},options:w,onChange:e==null?void 0:e.onChange,selectedRows:S,setSelectedRows:b,collectionField:o},D=()=>{const R=(o==null?void 0:o.targetKey)||"id",N=(r.value||[]).map(B=>B==null?void 0:B[R]).filter(Boolean);return N.length?{$and:[{[`${R}.$ne`]:N}]}:{}};return r.value.length>0?(0,import_jsx_runtime.jsxs)(import_antd.Card,{bordered:!0,style:{position:"relative"},className:import_css.css`
|
|
999
|
+
`,layout:"vertical",bordered:!1,feedbackLayout:"popover",children:(0,import_jsx_runtime.jsx)(import_react.SchemaOptionsContext.Provider,{value:{scope:l.scope,components:c},children:(0,import_jsx_runtime.jsx)(NocoBaseRecursionField,{onlyRenderProperties:!0,basePath:t.address,schema:o,filterProperties:u=>u["x-component"]==="AssociationField.SubTable"})})})})})},{displayName:"InternalSubTable"}),toValue$3=(e,t)=>e??t,ButtonTabList=(0,import_react.observer)(e=>{const t=(0,import_react.useFieldSchema)(),{enableLink:o,tagColorField:r}=t["x-component-props"],i=useFieldNames$1({fieldNames:e.fieldNames}),n=useInsertSchema$1("Viewer"),{options:a}=useAssociationFieldContext(),l=useCompile(),{designable:c}=useDesignable(),u=useLabelUiSchema$1(a,(i==null?void 0:i.label)||"label"),{snapshot:m}=useActionContext(),d=(0,import_react2.useRef)(),{getCollection:p}=useCollectionManager_deprecated(),h=p(a==null?void 0:a.target),g=(h==null?void 0:h.template)==="tree",{openPopup:_}=usePopupUtils(),f=useCollectionRecordData(),v=(0,import_react2.useRef)(!1),C=(0,import_react2.useRef)(t);C.current=t;const S=(0,import_react2.useCallback)(()=>C.current,[]);return(0,import_jsx_runtime.jsx)(import_jsx_runtime.Fragment,{children:(0,import_shared.toArr)(e.value).map((b,y,F)=>{const j=b==null?void 0:b[(i==null?void 0:i.label)||"label"],k=g?transformNestedData(b).map(w=>w==null?void 0:w[(i==null?void 0:i.label)||"label"]).join(" / "):isObject(j)?JSON.stringify(j):j,T=toValue$3(l(k),"N/A"),M=getTabFormatValue(l(u),T,b[r]);return(0,import_jsx_runtime.jsxs)(import_react2.Fragment,{children:[(0,import_jsx_runtime.jsx)("span",{children:m?M:o!==!1?(0,import_jsx_runtime.jsx)("a",{onMouseEnter:()=>{e.setBtnHover(!0)},onClick:w=>{var O;e.setBtnHover(!0),w.stopPropagation(),w.preventDefault(),c&&!t.properties&&(n(schema$1.Viewer),v.current=!0),v.current?setTimeout(()=>{_({recordData:b,parentRecordData:f,customActionSchema:S()}),v.current=!1}):_({recordData:b,parentRecordData:f}),(O=d==null?void 0:d.current)==null||O.setPopoverVisible(!1)},children:M}):M}),y<F.length-1?(0,import_jsx_runtime.jsx)("span",{style:{marginRight:4,color:"#aaa"},children:","}):null]},`${b==null?void 0:b[i.value]}_${y}`)})})},{displayName:"ButtonTabList"}),ReadPrettyInternalTag=e=>(0,import_jsx_runtime.jsx)(ReadPrettyInternalViewer,P(x({},e),{ButtonList:ButtonTabList}));var AssociationFieldMode=(e=>(e.Picker="Picker",e.Nester="Nester",e.PopoverNester="PopoverNester",e.Select="Select",e.SubTable="SubTable",e.FileManager="FileManager",e.CascadeSelect="CascadeSelect",e.Tag="Tag",e))(AssociationFieldMode||{});const defaultModeToComponent={Picker:InternalPicker,Nester:InternalNester,PopoverNester:InternalPopoverNester,Select:AssociationSelect$1,SubTable:InternalSubTable,FileManager:InternalFileManager,CascadeSelect:InternalCascadeSelect,Tag:ReadPrettyInternalTag},AssociationFieldModeContext=(0,import_react2.createContext)({modeToComponent:defaultModeToComponent,getComponent:e=>defaultModeToComponent[e],getDefaultComponent:e=>defaultModeToComponent[e]}),AssociationFieldModeProvider=e=>{const t=useAssociationFieldModeContext(),o=(0,import_react2.useMemo)(()=>x(x({},t.modeToComponent),e.modeToComponent),[t.modeToComponent,e.modeToComponent]),r=(0,import_react2.useCallback)(a=>o[a]||defaultModeToComponent[a],[o]),i=(0,import_react2.useCallback)(a=>defaultModeToComponent[a],[]),n=(0,import_react2.useMemo)(()=>({modeToComponent:o,getComponent:r,getDefaultComponent:i}),[r,o,i]);return(0,import_jsx_runtime.jsx)(AssociationFieldModeContext.Provider,{value:n,children:e.children})},useAssociationFieldModeContext=()=>import_react2.default.useContext(AssociationFieldModeContext),AssociationFieldProvider=(0,import_react.observer)(e=>{var t,o,r;const i=(0,import_react.useField)(),n=useCollectionManager(),a=(0,import_react.useFieldSchema)(),l=useAPIClient(),c=useSchemaOptionsContext(),u=(0,import_react2.useRef)(null),m=useCollectionRecord();useSchemaComponentContext();const d=((t=a["x-component-props"])==null?void 0:t.multiple)!==!1,p=((o=a["x-component-props"])==null?void 0:o.allowDissociate)!==!1,h=(0,import_react2.useMemo)(()=>n.getCollectionField(a["x-collection-field"]),[a["x-collection-field"],a.name]),g=(0,import_react2.useMemo)(()=>{var F;return((F=n.getCollection(h==null?void 0:h.target))==null?void 0:F.template)==="file"},[a["x-collection-field"]]),_=(0,import_react2.useMemo)(()=>{var F;return((F=a["x-component-props"])==null?void 0:F.mode)||(g?"FileManager":"Select")},[(r=a["x-component-props"])==null?void 0:r.mode]),[f,v]=(0,import_react2.useState)(!i.readPretty),{loading:C,run:S}=useRequest(()=>{var F;const j=h.targetKey;if(!a.default||!["Picker","Select"].includes(_)||!import_lodash.default.isObject(a.default))return Promise.reject(null);const k=Array.isArray(a.default)?a.default.map(T=>T[j]):a.default[j];return import_lodash.default.isUndefined(k)||import_lodash.default.isNil(k)||import_lodash.default.isNaN(k)||m&&!m.isNew?Promise.reject(null):l.request({resource:h.target,action:Array.isArray(k)?"list":"get",headers:getDataSourceHeaders((F=n==null?void 0:n.dataSource)==null?void 0:F.key),params:{filter:{[j]:k}}})},{manual:!0,onSuccess(F){var j;i.initialValue=(j=F==null?void 0:F.data)==null?void 0:j.data}}),{active:b}=useKeepAlive();if((0,import_react2.useEffect)(()=>{var F;if(b){if(v(!0),!h){v(!1);return}if(["Picker","Select"].includes(_)&&a.default&&S(),i.value&&i.form.__template&&["Nester","SubTable","PopoverNester"].includes(_)&&(["belongsTo","hasOne"].includes(h.type)?((F=i.value)!=null&&F[h.targetKey]&&delete i.value[h.targetKey],i.value=x(x({},i.initialValue),i.value)):["belongsToMany","hasMany"].includes(h.type)&&Array.isArray(i.value)&&(i.value=i.value.map(j=>{var k;return delete j[h.targetKey],x(x({},(k=i.initialValue)==null?void 0:k[0]),j)}))),i.value!==null&&i.value!==void 0){["Nester","PopoverNester"].includes(_)&&Array.isArray(i.value)&&i.value.length===0&&["belongsToMany","hasMany","belongsToArray"].includes(h.type)&&(i.value=[markRecordAsNew({})]),v(!1);return}["Nester"].includes(_)&&(["belongsTo","hasOne"].includes(h.type)?i.value={}:["belongsToMany","hasMany","belongsToArray"].includes(h.type)&&(i.value=[markRecordAsNew({})])),_==="SubTable"&&(i.value=[]),v(!1)}},[_,h,i,b]),f||C)return null;const y=P(x({},c.components),{FormItem:F=>(0,import_jsx_runtime.jsx)(FormItem,P(x({},F),{getPopupContainer:j=>u.current||document.body}))});return h?(0,import_jsx_runtime.jsx)("div",{ref:u,children:(0,import_jsx_runtime.jsx)(AssociationFieldContext.Provider,{value:{options:h,field:i,fieldSchema:a,allowMultiple:d,allowDissociate:p,currentMode:_},children:(0,import_jsx_runtime.jsx)(import_react.SchemaOptionsContext.Provider,{value:{components:y,scope:c.scope},children:e.children})})}):null},{displayName:"AssociationFieldProvider"}),InternalField=e=>{const t=(0,import_react.useField)(),o=(0,import_react.useFieldSchema)(),r=useCollectionField_deprecated(),{getInterface:i}=useCollectionManager_deprecated(),{uiSchema:n}=r,a=i(r.interface),l=useComponent((n==null?void 0:n["x-component"])||a.default.uiSchema["x-component"]),c=useCompile(),u=(d,p)=>{t[d]=typeof t[d]>"u"?p:t[d]},m=()=>{typeof o.required>"u"&&(t.required=!!n.required)};return(0,import_react2.useEffect)(()=>{if(!n)return;u("content",n["x-content"]),u("title",n.title),u("description",n.description),u("initialValue",n.default),o["x-disabled"]===!0&&(t.disabled=!0),o["x-read-pretty"]===!0&&(t.readPretty=!0),m(),t.dataSource=n.enum;const d=c(n["x-component-props"])||{},p=(0,import_shared.merge)(d,t.componentProps||{});t.componentProps=p},[JSON.stringify(n)]),n?import_react2.default.createElement(l,e,e.children):null},CollectionField=e=>{const t=(0,import_react.useFieldSchema)();return(0,import_jsx_runtime.jsx)(CollectionFieldProvider,{name:t.name,children:(0,import_jsx_runtime.jsx)(InternalField,x({},e))})};var AssignedFieldValueType=(e=>(e.ConstantValue="constantValue",e.DynamicValue="dynamicValue",e))(AssignedFieldValueType||{});const AssignedFieldInner=e=>{const{value:t,onChange:o}=e,{getCollectionFields:r,getAllCollectionsInheritChain:i}=useCollectionManager_deprecated(),n=useCollection_deprecated(),{form:a}=useFormBlockContext(),l=(0,import_react.useFieldSchema)(),c=(0,import_react.useField)(),u=useRecord(),m=useVariables$1(),d=useLocalVariables$1(),p=useCollectionFilterOptions(n),{name:h,getField:g}=n,_=g(l.name),{uiSchema:f}=useCollectionField_deprecated(),v=(0,import_react2.useMemo)(()=>getShouldChange({collectionField:_,variables:m,localVariables:d,getAllCollectionsInheritChain:i}),[_,i,d,m]),C=(0,import_react2.useCallback)(b=>{const y=b.find(j=>j.value==="$nForm"),F=r(h);return!(F!=null&&F.length)&&y&&(y.children=formatVariableScop(p)),(0,import_lodash.cloneDeepWith)(b,j=>{if((0,import_react2.isValidElement)(j))return j})},[p,h]),S=(0,import_react2.useCallback)(({value:b,onChange:y})=>(0,import_jsx_runtime.jsx)(CollectionField,P(x({},e),{value:b,onChange:y})),[JSON.stringify(import_lodash.default.omit(e,"value"))]);return(0,import_react2.useEffect)(()=>{f&&(c.title=typeof c.title>"u"?(f==null?void 0:f.title)||c.name:c.title)},[JSON.stringify(f)]),(0,import_jsx_runtime.jsx)(FlagProvider,{collectionField:_,children:(0,import_jsx_runtime.jsx)(VariableInput,{form:a,record:u,value:t,onChange:o,renderSchemaComponent:S,collectionField:_,shouldChange:v,returnScope:C,targetFieldSchema:l})})},AssignedField=withDynamicSchemaProps(AssignedFieldInner);function useAclCheck(e){return useAclCheckFn()(e)}function useAclCheckFn(){const{data:e,inResources:t,getResourceActionParams:o,getStrategyActionParams:r}=useACLRolesCheck(),i=useRecordPkValue(),n=useCollection_deprecated();function a(l){const c=n.resource,u=(m,d={})=>{const[p]=m.split(":");return e!=null&&e.allowAll?{}:t(p)?o(m):r(m)};return!l&&c&&(l=`${c}:create}`),l!=null&&l.includes(":")||(l=`${c}:${l}`),l?!!u(l,{recordPkValue:i}):!0}return a}const InternalCreateRecordAction=(e,t)=>{const o=(0,import_react.useFieldSchema)(),r=(0,import_react.useField)(),i=(o==null?void 0:o["x-linkage-rules"])||[],n=useRecord(),a=useVariables$1(),l=useLocalVariables$1({currentForm:{values:n}}),{openPopup:c}=usePopupUtils(),u=useTreeParentRecord(),m=useCollectionManager(),d=useApp();(0,import_react2.useEffect)(()=>{r.stateOfLinkageRules={},i.filter(g=>!g.disabled).forEach(g=>{var _;(_=g.actions)==null||_.forEach(f=>{linkageAction({operator:f.operator,field:r,condition:g.condition,variables:a,localVariables:l,conditionType:g.conditionType},d.jsonLogic)})})},[r,i,l,a]);const p=(0,import_react2.createRef)(),h=(0,import_ref.composeRef)(t,p);return(0,import_jsx_runtime.jsx)("div",{ref:h,children:(0,import_jsx_runtime.jsx)(CreateAction,P(x({},e),{onClick:g=>{var _;g=m.getCollection(g.name)||g,u?c({recordData:u}):(_=g.isInherited)!=null&&_.call(g)?c({collectionNameUsedInURL:g.name}):c()}}))})};function getLinkageCollection(e,t,o){const r={$form:t.values,$iteration:t.values};if(e.includes("$iteration")){const i=o.path.segments.concat([]);return i.splice(-2),e=e.replace("$iteration.",`$iteration.${i.join(".")}.`),parseVariables(e,r)}else return parseVariables(e,{$form:t.values})}const CreateAction=(0,import_react.observer)(e=>{var t;const{onClick:o}=e,r=useCollection_deprecated(),i=(0,import_react.useFieldSchema)(),n=(0,import_react.useField)(),a=(0,import_react.useForm)(),l=useVariables$1(),c=useAclCheckFn(),u=i["x-enable-children"]||[],m=i==null?void 0:i["x-allow-add-to-current"],d=(t=i==null?void 0:i["x-component-props"])==null?void 0:t.linkageFromForm,p=n.componentProps.type==="danger"?void 0:n.componentProps.type||"primary",{getChildrenCollections:h}=useCollectionManager_deprecated(),g=h(r.name),_=(0,import_react2.useMemo)(()=>u.map(T=>{if(!T)return;const M=g.find(w=>w.name===T.collection);if(M)return P(x({},M.getOptions()),{title:T.title||M.title})}).filter(T=>T&&c(`${T.name}:create`)),[u,g]),f=(i==null?void 0:i["x-linkage-rules"])||[],v=useRecord(),C=useLocalVariables$1({currentForm:{values:v}}),S=useCompile(),{designable:b}=useDesignable(),y=e.icon||null,F=useApp(),j=(0,import_react2.useMemo)(()=>_.map(T=>({key:T.name,label:S(T.title),onClick:()=>o==null?void 0:o(T)})),[_,o]),k=(0,import_react2.useMemo)(()=>({items:j}),[j]);return(0,import_react2.useEffect)(()=>{n.stateOfLinkageRules={},f.filter(T=>!T.disabled).forEach(T=>{var M;(M=T.actions)==null||M.forEach(w=>{linkageAction({operator:w.operator,field:n,condition:T.condition,variables:l,localVariables:C,conditionType:T.conditionType},F.jsonLogic)})})},[n,f,C,l]),(0,import_jsx_runtime.jsx)("div",{children:(0,import_jsx_runtime.jsx)(FinallyButton,{inheritsCollections:_,linkageFromForm:d,allowAddToCurrent:m,props:e,componentType:p,menu:k,onClick:o,collection:r,icon:y,field:n,form:a,designable:b})})},{displayName:"CreateAction"});function FinallyButton(e){var t=e,{inheritsCollections:o,linkageFromForm:r,allowAddToCurrent:i,props:n}=t,a=n,{onlyIcon:l}=a,c=Y(a,["onlyIcon"]),{componentType:u,menu:m,onClick:d,collection:p,icon:h,field:g,form:_,designable:f}=t,v,C,S,b,y,F;const{getCollection:j}=useCollectionManager_deprecated(),k=useACLActionParamsContext(),T=(0,import_react2.useMemo)(()=>{var M;const w=f&&(((M=g==null?void 0:g.data)==null?void 0:M.hidden)||!k);return{opacity:u!=="link"&&w?.1:1}},[f,(v=g==null?void 0:g.data)==null?void 0:v.hidden,k,u]);return(o==null?void 0:o.length)>0?r?(0,import_jsx_runtime.jsx)(import_antd.Button,{"aria-label":c["aria-label"],type:u,disabled:g.disabled,danger:c.danger,icon:h,onClick:M=>{const w=getLinkageCollection(r,_,g),O=o.find(R=>R.name===w)?w:p.name,D=j(O);d==null||d(D)},style:x({display:!f&&((C=g==null?void 0:g.data)==null?void 0:C.hidden)&&"none",opacity:f&&((S=g==null?void 0:g.data)==null?void 0:S.hidden)&&.1},T),children:c.children}):i===void 0||i?(0,import_jsx_runtime.jsxs)(import_antd.Dropdown.Button,{"aria-label":c["aria-label"],danger:c.danger,type:u,icon:(0,import_jsx_runtime.jsx)(import_icons.DownOutlined,{}),style:x(x({},c==null?void 0:c.style),T),buttonsRender:([M,w])=>[import_react2.default.cloneElement(M,{style:c==null?void 0:c.style}),import_react2.default.cloneElement(w,{loading:!1,style:P(x({},c==null?void 0:c.style),{justifyContent:"center"})})],menu:m,onClick:M=>{d==null||d(p)},children:[h,c.children]}):(0,import_jsx_runtime.jsx)(import_antd.Dropdown,{menu:m,children:(0,import_jsx_runtime.jsxs)(import_antd.Button,{"aria-label":c["aria-label"],icon:h,type:u,danger:c.danger,style:x(x({},c==null?void 0:c.style),T),children:[c.children," ",(0,import_jsx_runtime.jsx)(import_icons.DownOutlined,{})]})}):(0,import_jsx_runtime.jsx)(import_antd.Button,P(x({},c),{"aria-label":c["aria-label"],type:u,disabled:g.disabled,danger:c.danger,icon:h,onClick:M=>{d==null||d(p)},style:x(P(x({},c==null?void 0:c.style),{display:!f&&(b=g==null?void 0:g.data)!=null&&b.hidden?"none":"inline-block",opacity:f&&((y=g==null?void 0:g.data)==null?void 0:y.hidden)&&.1}),T),children:l?(F=c==null?void 0:c.children)==null?void 0:F[1]:c==null?void 0:c.children}))}const CreateRecordAction$1=(0,import_react2.forwardRef)(InternalCreateRecordAction),initializerComponents=Object.freeze(Object.defineProperty({__proto__:null,AssignedField,AssignedFieldInner,AssignedFieldValueType,CreateAction,CreateRecordAction:CreateRecordAction$1,useAclCheck},Symbol.toStringTag,{value:"Module"})),CreateRecordAction=(0,import_react.observer)(e=>{const t=(0,import_react.useField)(),o=(0,import_react.useFieldSchema)(),r=useActionContext(),{getCollection:i}=useCollectionManager_deprecated(),n=useInsertSchema$1("AddNewer"),{options:a}=useAssociationFieldContext(),[l,c]=(0,import_react2.useState)(!1),u=i(a==null?void 0:a.target),[m,d]=(0,import_react2.useState)(u==null?void 0:u.name),[p,h]=(0,import_react2.useState)(u==null?void 0:u.dataSource),[g,_]=(0,import_react2.useState)(!1),f=(0,import_react2.useMemo)(()=>o.reduceProperties((C,S)=>S["x-component"]==="AssociationField.AddNewer"?(Object.keys(S.parent.properties).forEach(b=>{b!==S.name&&S.parent.removeProperty(b)}),S.parent):C),[o]),v=C=>{n(schema$1.AddNewer),c(!0),d(C.name),h(C.dataSource)};return(0,import_jsx_runtime.jsxs)(CollectionProvider_deprecated,{name:a==null?void 0:a.target,children:[(0,import_jsx_runtime.jsx)(CreateAction,P(x({},e),{onClick:C=>v(C)})),(0,import_jsx_runtime.jsx)(ActionContextProvider,{value:P(x({},r),{visible:l,setVisible:c,formValueChanged:g,setFormValueChanged:_}),children:(0,import_jsx_runtime.jsx)(CollectionProvider_deprecated,{name:m,dataSource:p,children:(0,import_jsx_runtime.jsx)(TabsContextProvider,{children:(0,import_jsx_runtime.jsx)(NocoBaseRecursionField,{basePath:t.address,schema:f})})})})]})},{displayName:"CreateRecordAction"}),EditableAssociationField=e=>{const{multiple:t}=e,o=(0,import_react.useField)(),r=(0,import_react.useForm)(),{options:i,currentMode:n}=useAssociationFieldContext(),{getComponent:a}=useAssociationFieldModeContext(),l=()=>{const{onClick:u}=useAssociationCreateActionProps(),m=(0,import_react.useField)(),{getPrimaryKey:d}=useCollection_deprecated(),p=d();return{onClick(){return z(this,null,function*(){var h,g;yield u();const{data:_}=((g=(h=m.data)==null?void 0:h.data)==null?void 0:g.data)||{};if(_)if(["m2m","o2m"].includes(i==null?void 0:i.interface)&&t!==!1){const f=r.getValuesIn(o.path)||[];f.find(v=>v[p]===_[p])||(f.push(_),r.setValuesIn(o.path,f),o.onInput(f))}else r.setValuesIn(o.path,_),o.onInput(_)})}}},c=a(n);return(0,import_jsx_runtime.jsx)(SchemaComponentOptions,{scope:{useCreateActionProps:l},components:{CreateRecordAction},children:(0,import_jsx_runtime.jsx)(c,x({},e))})},Editable$1=(0,import_react.observer)(e=>(0,import_jsx_runtime.jsx)(AssociationFieldProvider,{children:(0,import_jsx_runtime.jsx)(EditableAssociationField,x({},e))}),{displayName:"Editable"}),Nester=e=>{const{options:t}=(0,import_react2.useContext)(AssociationFieldContext);return["hasOne","belongsTo"].includes(t.type)?(0,import_jsx_runtime.jsx)(FlagProvider,{isInSubForm:!0,children:(0,import_jsx_runtime.jsx)(ToOneNester,x({},e))}):["hasMany","belongsToMany","belongsToArray"].includes(t.type)?(0,import_jsx_runtime.jsx)(FlagProvider,{isInSubForm:!0,children:(0,import_jsx_runtime.jsx)(ToManyNester,x({},e))}):null},ToOneNester=e=>{const{field:t}=useAssociationFieldContext(),o=useCollectionRecord(),r=useCollection(),i=(0,import_react.useFieldSchema)(),n=(0,import_react2.useCallback)(({form:a,fieldSchema:l,collectionField:c,getInterface:u,formBlockType:m})=>{var d;return!c||c.target&&(d=l["x-component-props"])!=null&&d.mode&&!["Picker","Select"].includes(l["x-component-props"].mode)||m==="update"?!1:!(a!=null&&a.readPretty)&&!isPatternDisabled(l)&&!interfacesOfUnsupportedDefaultValue.includes(c==null?void 0:c.interface)&&!isSystemField(c,u)},[]);return(0,import_jsx_runtime.jsx)(FormActiveFieldsProvider,{name:"nester",children:(0,import_jsx_runtime.jsx)(SubFormProvider,{value:{value:t.value,collection:r,fieldSchema:i.parent},children:(0,import_jsx_runtime.jsx)(RecordProvider,{isNew:o==null?void 0:o.isNew,record:t.value,parent:o==null?void 0:o.data,children:(0,import_jsx_runtime.jsx)(DefaultValueProvider,{isAllowToSetDefaultValue:n,children:(0,import_jsx_runtime.jsx)(import_antd.Card,{bordered:!0,children:e.children})})})})})},ToManyNester=(0,import_react.observer)(e=>{const t=(0,import_react.useFieldSchema)(),{options:o,field:r,allowMultiple:i,allowDissociate:n,currentMode:a}=useAssociationFieldContext(),{allowSelectExistingRecord:l}=r.componentProps,{t:c}=(0,import_react_i18next.useTranslation)(),u=useCollectionRecordData(),m=useCollection(),d=(0,import_ahooks.useUpdate)(),{isMobileLayout:p}=useMobileLayout(),h=(0,import_react2.useMemo)(()=>p?(0,import_client.transformMultiColumnToSingleColumn)(t):t,[p,t]),g=(0,import_react2.useMemo)(()=>p?(0,import_client.transformMultiColumnToSingleColumn)(t.parent):t.parent,[p,t.parent]),_=useRefreshComponent(),f=(0,import_react2.useCallback)(()=>{d(),_==null||_()},[d,_]),[v,C]=(0,import_react2.useState)(!1),[S,b]=(0,import_react2.useState)([]),y=useFieldNames$1(e),F=useCompile(),j=useLabelUiSchema$1(o,(y==null?void 0:y.label)||"label"),k=()=>({run(){C(!0)}});Array.isArray(r.value)||(r.value=[]);const T=(0,import_react2.useCallback)(({form:R,fieldSchema:N,collectionField:B,getInterface:I})=>{var $;return!B||B.target&&($=N["x-component-props"])!=null&&$.mode&&!["Picker","Select"].includes(N["x-component-props"].mode)?!1:!(R!=null&&R.readPretty)&&!isPatternDisabled(N)&&!interfacesOfUnsupportedDefaultValue.includes(B==null?void 0:B.interface)&&!isSystemField(B,I)},[]),M=()=>{const{setVisible:R}=useActionContext(),{selectedRows:N,setSelectedRows:B}=(0,import_react2.useContext)(RecordPickerContext);return{onClick(){N.map(I=>r.value.push(markRecordAsNew(I))),r.onInput(r.value),r.initialValue=r.value,B([]),R(!1)}}},w=(0,import_react2.useMemo)(()=>r.value&&Object.keys(r.value).length>0?(Array.isArray(r.value)?r.value:r.value?[r.value]:[]).filter(Boolean).map(R=>{const N=R==null?void 0:R[y.label];return P(x({},R),{[y.label]:getLabelFormatValue$1(F(j),F(N))})}):[],[r.value,y==null?void 0:y.label]),O={size:"small",fieldNames:r.componentProps.fieldNames,multiple:!0,association:{target:o==null?void 0:o.target},options:w,onChange:e==null?void 0:e.onChange,selectedRows:S,setSelectedRows:b,collectionField:o},D=()=>{const R=(o==null?void 0:o.targetKey)||"id",N=(r.value||[]).map(B=>B==null?void 0:B[R]).filter(Boolean);return N.length?{$and:[{[`${R}.$ne`]:N}]}:{}};return r.value.length>0?(0,import_jsx_runtime.jsxs)(import_antd.Card,{bordered:!0,style:{position:"relative"},className:import_css.css`
|
|
1000
1000
|
> .ant-card-body > .ant-divider:last-child {
|
|
1001
1001
|
display: none;
|
|
1002
1002
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nocobase/client",
|
|
3
|
-
"version": "1.8.
|
|
3
|
+
"version": "1.8.28",
|
|
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.8.
|
|
30
|
-
"@nocobase/sdk": "1.8.
|
|
31
|
-
"@nocobase/utils": "1.8.
|
|
29
|
+
"@nocobase/evaluators": "1.8.28",
|
|
30
|
+
"@nocobase/sdk": "1.8.28",
|
|
31
|
+
"@nocobase/utils": "1.8.28",
|
|
32
32
|
"ahooks": "^3.7.2",
|
|
33
33
|
"antd": "5.24.2",
|
|
34
34
|
"antd-style": "3.7.1",
|
|
@@ -83,5 +83,5 @@
|
|
|
83
83
|
"dumi": "2.2.14",
|
|
84
84
|
"dumi-theme-nocobase": "^0.2.28"
|
|
85
85
|
},
|
|
86
|
-
"gitHead": "
|
|
86
|
+
"gitHead": "21e48d622f0787e85daf7fae3f0940426caf4c02"
|
|
87
87
|
}
|