@nocobase/client 2.0.27 → 2.0.29
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 +18 -8
- package/lib/index.js +14 -4
- package/package.json +6 -6
package/es/index.mjs
CHANGED
|
@@ -9964,7 +9964,7 @@ function addAppVersion(e, t) {
|
|
|
9964
9964
|
addAppVersion((n = e.properties) == null ? void 0 : n[o], t);
|
|
9965
9965
|
}), e;
|
|
9966
9966
|
}
|
|
9967
|
-
const name = "@nocobase/client", version = "2.0.
|
|
9967
|
+
const name = "@nocobase/client", version = "2.0.29", license = "Apache-2.0", main = "lib/index.js", module = "es/index.mjs", types = "es/index.d.ts", dependencies = {
|
|
9968
9968
|
"@ahooksjs/use-url-state": "3.5.1",
|
|
9969
9969
|
"@ant-design/cssinjs": "^1.11.1",
|
|
9970
9970
|
"@ant-design/icons": "^5.6.1",
|
|
@@ -9987,10 +9987,10 @@ const name = "@nocobase/client", version = "2.0.27", license = "Apache-2.0", mai
|
|
|
9987
9987
|
"@formily/reactive-react": "^2.2.27",
|
|
9988
9988
|
"@formily/shared": "^2.2.27",
|
|
9989
9989
|
"@formily/validator": "^2.2.27",
|
|
9990
|
-
"@nocobase/evaluators": "2.0.
|
|
9991
|
-
"@nocobase/flow-engine": "2.0.
|
|
9992
|
-
"@nocobase/sdk": "2.0.
|
|
9993
|
-
"@nocobase/utils": "2.0.
|
|
9990
|
+
"@nocobase/evaluators": "2.0.29",
|
|
9991
|
+
"@nocobase/flow-engine": "2.0.29",
|
|
9992
|
+
"@nocobase/sdk": "2.0.29",
|
|
9993
|
+
"@nocobase/utils": "2.0.29",
|
|
9994
9994
|
"@tanstack/react-table": "^8.21.3",
|
|
9995
9995
|
"@types/tabulator-tables": "^6.2.6",
|
|
9996
9996
|
"acorn-jsx": "^5.3.2",
|
|
@@ -24650,7 +24650,7 @@ function parseValue(e, t = {}) {
|
|
|
24650
24650
|
if (o === "string") {
|
|
24651
24651
|
const r = e.match(JT_VALUE_RE);
|
|
24652
24652
|
if (r)
|
|
24653
|
-
return r[1].split(".");
|
|
24653
|
+
return r[1].trim().split(".");
|
|
24654
24654
|
if (t.stringToDate && !Number.isNaN(Date.parse(e)))
|
|
24655
24655
|
return "date";
|
|
24656
24656
|
}
|
|
@@ -25262,7 +25262,7 @@ function useVariablesFromValue(e, t = ["{{", "}}"]) {
|
|
|
25262
25262
|
if (!(e != null && e.trim()))
|
|
25263
25263
|
return [];
|
|
25264
25264
|
const n = new RegExp(`${t[0]}\\s*([^{}]+)\\s*${t[1]}`, "g"), r = e.match(n);
|
|
25265
|
-
return (i = r == null ? void 0 : r.map((a) => a.replace(n, "$1"))) != null ? i : [];
|
|
25265
|
+
return (i = r == null ? void 0 : r.map((a) => a.replace(n, "$1").trim())) != null ? i : [];
|
|
25266
25266
|
}, [e, o]);
|
|
25267
25267
|
}
|
|
25268
25268
|
function TextArea(e) {
|
|
@@ -73144,6 +73144,16 @@ const TABS_DESIGN_MODE_ROOT_CLASS_NAME = css`
|
|
|
73144
73144
|
> .ant-tabs-nav .ant-tabs-tab {
|
|
73145
73145
|
min-width: 54px;
|
|
73146
73146
|
}
|
|
73147
|
+
|
|
73148
|
+
> .ant-tabs-nav .ant-tabs-tab .ant-tabs-tab-btn {
|
|
73149
|
+
display: block;
|
|
73150
|
+
width: 100%;
|
|
73151
|
+
}
|
|
73152
|
+
|
|
73153
|
+
> .ant-tabs-nav .ant-tabs-tab .ant-tabs-tab-btn > [data-has-float-menu='true'] {
|
|
73154
|
+
display: block;
|
|
73155
|
+
width: 100%;
|
|
73156
|
+
}
|
|
73147
73157
|
`;
|
|
73148
73158
|
class PageModel extends FlowModel {
|
|
73149
73159
|
constructor() {
|
|
@@ -95443,7 +95453,7 @@ DisplayItemModel.bindModelToInterface("DisplayPercentFieldModel", ["percent"], {
|
|
|
95443
95453
|
});
|
|
95444
95454
|
class DisplayTextFieldModel extends ClickableFieldModel {
|
|
95445
95455
|
t(t) {
|
|
95446
|
-
return t !=
|
|
95456
|
+
return typeof t != "string" ? t : t.startsWith("{{") && t.endsWith("}}") ? this.translate(t) : t;
|
|
95447
95457
|
}
|
|
95448
95458
|
renderComponent(t, o) {
|
|
95449
95459
|
const { prefix: n, suffix: r, overflowMode: i } = this.props;
|
package/lib/index.js
CHANGED
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
width: 100%;
|
|
63
63
|
}
|
|
64
64
|
}
|
|
65
|
-
`,items:a},n))})},SchemaInitializerSubMenu=e=>{var t;const o=e,{children:r,items:i,title:n,name:l,onOpenChange:a,icon:c}=o,u=ee(o,["children","items","title","name","onOpenChange","icon"]),d=useCompile(),m=useSchemaInitializerItem(),p=(0,import_react2.useMemo)(()=>l||(m==null?void 0:m.name)||(0,import_shared.uid)(),[l,m]),h=(t=i||r)==null?void 0:t.filter(_=>_.useVisible?_.useVisible():!0),g=useSchemaInitializerMenuItems(h,l),f=(0,import_react2.useMemo)(()=>[A(x({},u),{key:p,label:d(n),icon:typeof c=="string"?(0,import_jsx_runtime.jsx)(import_icons.default,{type:c}):c,children:g})],[g,d,c,p,u,n]);return(0,import_jsx_runtime.jsx)(SchemaInitializerMenu,{onOpenChange:a,items:f})},SchemaInitializerSubMenuInternal=()=>{const e=useSchemaInitializerItem();return(0,import_jsx_runtime.jsx)(SchemaInitializerSubMenu,x({},e))},useAriaAttributeOfMenuItem=()=>{const{isInMenu:e}=useSchemaInitializerSubMenuContext();return{attribute:(0,import_react2.useMemo)(()=>e?{}:{role:"menuitem"},[e])}},{Paragraph:Paragraph$1,Text:Text$2}=import_antd.Typography,ErrorFallbackModal=e=>{const[t,o]=import_react2.default.useState(!1),r=(0,import_jsx_runtime.jsx)(Paragraph$1,{style:{display:"flex",marginBottom:0},copyable:{text:e.error.message},children:(0,import_jsx_runtime.jsxs)(Text$2,{type:"danger",style:{whiteSpace:"nowrap",textOverflow:"ellipsis",overflow:"hidden",display:"inline-block",maxWidth:"200px"},children:["Error: ",e.error.message]})});return(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsx)("div",{onMouseOver:()=>o(!0),children:e.children||r}),(0,import_jsx_runtime.jsx)(import_antd.Modal,{zIndex:1e4,open:t,footer:null,onCancel:()=>o(!1),width:"60%",children:(0,import_jsx_runtime.jsx)(ErrorFallback,x({},e))})]})},{Paragraph,Text:Text$1,Link}=import_antd.Typography,useDownloadLogs=(e,t={})=>{const o=useLocationNoUpdate(),[r,i]=import_react2.default.useState(!1),n=useAPIClient();return{loading:r,download:()=>L(void 0,null,function*(){i(!0);try{const l=yield n.request({url:"logger:collect",method:"post",responseType:"blob",data:x({error:{message:e.message,stack:e.stack},location:o},t)}),a=window.URL.createObjectURL(new Blob([l.data],{type:"application/gzip"})),c=document.createElement("a");c.setAttribute("href",a),c.setAttribute("download","logs.tar.gz"),c.click(),c.remove()}catch(l){console.log(l)}i(!1)})}},ErrorFallback=({error:e})=>{const t=(0,import_react.useFieldSchema)(),{t:o}=(0,import_react_i18next.useTranslation)(),{loading:r,download:i}=useDownloadLogs(e,{schema:t}),n=(0,import_jsx_runtime.jsxs)(import_react_i18next.Trans,{children:["This is likely a NocoBase internals bug. Please open an issue at ",(0,import_jsx_runtime.jsx)(Link,{href:"https://github.com/nocobase/nocobase/issues",target:"_blank",children:"here"})]});return(0,import_jsx_runtime.jsx)("div",{style:{backgroundColor:"white"},children:(0,import_jsx_runtime.jsx)(import_antd.Result,{style:{maxWidth:"60vw",margin:"auto"},status:"error",title:o("Render Failed"),subTitle:n,extra:[(0,import_jsx_runtime.jsx)(import_antd.Button,{type:"primary",href:"https://github.com/nocobase/nocobase/issues",target:"_blank",children:o("Feedback")},"feedback"),(0,import_jsx_runtime.jsx)(import_antd.Button,{loading:r,onClick:i,children:o("Download logs")},"log")],children:(0,import_jsx_runtime.jsx)(Paragraph,{copyable:{text:e.stack},children:(0,import_jsx_runtime.jsx)(Text$1,{type:"danger",style:{whiteSpace:"pre-line",textAlign:"center"},children:e.stack})})})})};ErrorFallback.Modal=ErrorFallbackModal;const AppNotFound=()=>{const e=(0,import_react_router_dom.useNavigate)(),{t}=(0,import_react_i18next.useTranslation)();return(0,import_jsx_runtime.jsx)(import_antd.Result,{status:"404",title:"404",subTitle:t("Sorry, the page you visited does not exist."),extra:(0,import_jsx_runtime.jsx)(import_antd.Button,{onClick:()=>e("/",{replace:!0}),type:"primary",children:"Back Home"})})};class Plugin{constructor(t,o){this.options=t,this.app=o,this.options=t,this.app=o}get pluginManager(){return this.app.pluginManager}get context(){return this.app.context}get flowEngine(){return this.app.flowEngine}get engine(){return this.app.flowEngine}get ai(){return this.app.aiManager}get pm(){return this.app.pm}get router(){return this.app.router}get pluginSettingsManager(){return this.app.pluginSettingsManager}get pluginSettingsRouter(){return this.app.pluginSettingsManager}get schemaInitializerManager(){return this.app.schemaInitializerManager}get schemaSettingsManager(){return this.app.schemaSettingsManager}get dataSourceManager(){return this.app.dataSourceManager}afterAdd(){return L(this,null,function*(){})}beforeLoad(){return L(this,null,function*(){})}load(){return L(this,null,function*(){})}t(t,o={}){var r;return this.app.i18n.t(t,x({ns:(r=this.options)==null?void 0:r.packageName},o))}}const titleWrapperStyle={display:"flex",alignItems:"center",gap:4},withTooltipComponent=e=>t=>{const{tooltip:o}=t;return o?(0,import_jsx_runtime.jsxs)("div",{style:titleWrapperStyle,children:[(0,import_jsx_runtime.jsx)(e,x({},t)),(0,import_jsx_runtime.jsx)(import_antd.Tooltip,{title:o,children:(0,import_jsx_runtime.jsx)(import_icons.QuestionCircleOutlined,{style:{zIndex:1}})})]}):(0,import_jsx_runtime.jsx)(e,x({},t))},{evaluate}=import_client4.evaluators.get("formula.js"),useEvaluatedExpression=e=>{const t=useVariables$1(),o=useLocalVariables$1(),[r,i]=(0,import_react2.useState)();return(0,import_react2.useEffect)(()=>{L(void 0,null,function*(){if(e==null||e===""){i(void 0);return}const{exp:n,scope:l}=yield replaceVariables(e,{variables:t,localVariables:o});try{const a=evaluate(n,x({now:()=>new Date().toString()},l));i(a)}catch(a){console.error(a)}})},[t.parseVariable,e,o]),r};class SchemaInitializer{constructor(t){R(this,"options"),R(this,"name"),this.options=Object.assign({items:[]},t),this.name=t.name}get items(){return this.options.items}add(t,o){const r=t.split("."),i=r[r.length-1],n=A(x({},o),{name:i}),l=(u,d)=>{const m=this.items.findIndex(p=>p.name===u);m===-1?this.items.push(d):this.items[m]=d};if(r.length===1){l(i,n);return}const a=r.slice(0,-1).join("."),c=this.get(a);if(c){c.children||(c.children=[]);const u=t.replace(`${c.name}.`,""),d=c.children.findIndex(m=>m.name===u);d===-1?c.children.push(n):c.children[d]=n}else l(i,n)}get(t){var o;if(!t)return;const r=t.split(".");let i={children:this.items};for(let n=0;n<r.length;n++){const l=r[n],a=(o=i.children)==null?void 0:o.find(c=>c.name===l);if(a&&(i=a),n===r.length-1)return a}}remove(t){const o=t.split(".");if(o.length===1){const i=this.items.findIndex(n=>n.name===o[0]);i!==-1&&this.items.splice(i,1);return}const r=this.get(o.slice(0,-1).join("."));if(r&&r.children){const i=o[o.length-1],n=r.children.findIndex(l=>l.name===i);n!==-1&&r.children.splice(n,1)}}}var NocoBaseDesktopRouteType=(e=>(e.group="group",e.page="page",e.flowRoute="flowRoute",e.link="link",e.tabs="tabs",e.flowPage="flowPage",e))(NocoBaseDesktopRouteType||{});const useStyles$h=genStyleHook("nb-menu-item",e=>{const{componentCls:t}=e;return{[t]:{paddingLeft:`${e.padding}px !important`,paddingRight:`${e.padding}px !important`}}}),useInsertFlowPageSchema=()=>{const e=useAPIClient();return(0,import_react2.useCallback)(t=>L(void 0,null,function*(){yield e.request({method:"POST",url:"/uiSchemas:insert",data:t})}),[e])},FlowPageMenuItem=()=>{const{t:e}=(0,import_react_i18next.useTranslation)(),t=(0,import_react2.useContext)(import_react.SchemaOptionsContext),{theme:o}=useGlobalTheme(),{componentCls:r,hashId:i}=useStyles$h(),n=useParentRoute(),{createRoute:l}=useNocoBaseRoutes(),a=useInsertFlowPageSchema(),c=(0,import_react2.useCallback)(()=>L(void 0,null,function*(){const u=yield FormDialog(e("Add page"),()=>(0,import_jsx_runtime.jsx)(SchemaComponentOptions,{scope:t.scope,components:x({},t.components),children:(0,import_jsx_runtime.jsx)(import_antd_v5.FormLayout,{layout:"vertical",children:(0,import_jsx_runtime.jsx)(zIndexContext.Provider,{value:ICON_POPUP_Z_INDEX,children:(0,import_jsx_runtime.jsx)(SchemaComponent,{schema:{properties:{title:{title:e("Menu item title"),required:!0,"x-component":"Input","x-decorator":"FormItem"},icon:{title:e("Icon"),"x-component":"IconPicker","x-decorator":"FormItem"}}}})})})}),o).open({initialValues:{}}),d=(0,import_shared.uid)(),m=(0,import_shared.uid)(),p=(0,import_shared.uid)(),h=(0,import_shared.uid)();yield l({type:NocoBaseDesktopRouteType.flowPage,title:u.title,icon:u.icon,parentId:n==null?void 0:n.id,schemaUid:m,menuSchemaUid:d,enableTabs:!1,children:[{type:NocoBaseDesktopRouteType.tabs,schemaUid:p,tabSchemaName:h,hidden:!0}]}),a(getFlowPageMenuSchema({pageSchemaUid:m}))}),[l,a,t==null?void 0:t.components,t==null?void 0:t.scope,n==null?void 0:n.id,e,o]);return(0,import_jsx_runtime.jsx)(SchemaInitializerItem,{title:e("Modern page (v2)"),onClick:c,className:`${r} ${i}`})};function getFlowPageMenuSchema({pageSchemaUid:e}){return{type:"void","x-component":"FlowRoute","x-uid":e}}const GroupItem$1=()=>{const{t:e}=(0,import_react_i18next.useTranslation)(),t=(0,import_react2.useContext)(import_react.SchemaOptionsContext),{theme:o}=useGlobalTheme(),{componentCls:r,hashId:i}=useStyles$h(),n=useParentRoute(),{createRoute:l}=useNocoBaseRoutes(),a=(0,import_react2.useCallback)(()=>L(void 0,null,function*(){const c=yield FormDialog(e("Add group"),()=>(0,import_jsx_runtime.jsx)(SchemaComponentOptions,{scope:t.scope,components:x({},t.components),children:(0,import_jsx_runtime.jsx)(import_antd_v5.FormLayout,{layout:"vertical",children:(0,import_jsx_runtime.jsx)(zIndexContext.Provider,{value:ICON_POPUP_Z_INDEX,children:(0,import_jsx_runtime.jsx)(SchemaComponent,{schema:{properties:{title:{title:e("Menu item title"),"x-component":"Input","x-decorator":"FormItem",required:!0},icon:{title:e("Icon"),"x-component":"IconPicker","x-decorator":"FormItem"}}}})})})}),o).open({initialValues:{}}),{title:u,icon:d}=c,m=(0,import_shared.uid)();yield l({type:NocoBaseDesktopRouteType.group,title:u,icon:d,parentId:n==null?void 0:n.id,schemaUid:m})}),[t.components,t.scope,e,o]);return(0,import_jsx_runtime.jsx)(SchemaInitializerItem,{title:e("Group"),onClick:a,className:`${r} ${i}`})},useAttach=e=>{const t=(0,import_react2.useRef)(null);return(0,import_react2.useEffect)(()=>(t.current&&e!==t.current&&t.current.onUnmount(),t.current=e,e.onMount(),()=>{e.onUnmount()}),[e]),e},compileCache={},hasVariable=e=>/{{.*?}}/g.test(e),useCompile=({noCache:e}={noCache:!1})=>{const t=(0,import_react2.useContext)(import_react.SchemaOptionsContext),o=(0,import_react2.useContext)(import_react.SchemaExpressionScopeContext);return(r,i)=>{let n=!1,l;if(typeof r=="string"&&r.startsWith("{{")&&(n=!0,l=r),r&&typeof r=="object"&&!(0,import_react2.isValidElement)(r)){try{l=JSON.stringify(r)}catch(a){return console.warn("Failed to stringify:",a),r}if(compileCache[l])return compileCache[l];n=hasVariable(l)}if(Array.isArray(r)){try{l=JSON.stringify(r)}catch(a){return console.warn("Failed to stringify:",a),r}if(compileCache[l])return compileCache[l];n=hasVariable(l)}if(n){const a=x(x(x({},t==null?void 0:t.scope),o),i);if(!l)return import_react.Schema.compile(r,a);try{return e?import_react.Schema.compile(r,a):(compileCache[l]=compileCache[l]||import_react.Schema.compile(r,a),compileCache[l])}catch(c){return console.log("useCompile error",r,c),import_react.Schema.compile(r,a)}}return r}},useComponent=(e,t)=>{const{components:o}=(0,import_react2.useContext)(import_react.SchemaOptionsContext);return e?typeof e!="string"?e:(0,import_lodash.get)(o,e)||t:t},LAZY_COMPONENT_KEY=Symbol("LAZY_COMPONENT_KEY");function lazy(e,...t){if(t.length===0){const o=(0,import_react2.lazy)(()=>e().then(i=>{const n=i.default;return r[LAZY_COMPONENT_KEY]=n,{default:n}})),r=i=>(0,import_jsx_runtime.jsx)(import_react2.default.Suspense,{fallback:(0,import_jsx_runtime.jsx)(import_antd.Spin,{}),children:(0,import_jsx_runtime.jsx)(o,x({},i))});return r}return t.reduce((o,r)=>{const i=(0,import_react2.lazy)(()=>e().then(n=>{const l=(0,import_lodash.get)(n,r);return o[r][LAZY_COMPONENT_KEY]=l,{default:l}}));return o[r]=n=>(0,import_jsx_runtime.jsx)(import_react2.default.Suspense,{fallback:(0,import_jsx_runtime.jsx)(import_antd.Spin,{}),children:(0,import_jsx_runtime.jsx)(i,x({},n))}),o},{})}function useLazy(e,t){const o=typeof t=="function"?t:i=>i[t],r=(0,import_react_imported_component.loadableResource)(e);if(!r.payload)throw new Promise((i,n)=>{r.loadIfNeeded(),r.resolution.then(i).catch(n)});return o(r.payload)}function addAppVersion(e,t){if(e)return e["x-app-version"]||(e["x-app-version"]=t),Object.keys(e.properties||{}).forEach(o=>{var r;addAppVersion((r=e.properties)==null?void 0:r[o],t)}),e}const name="@nocobase/client",version="2.0.27",license="Apache-2.0",main="lib/index.js",module$1="es/index.mjs",types="es/index.d.ts",dependencies={"@ahooksjs/use-url-state":"3.5.1","@ant-design/cssinjs":"^1.11.1","@ant-design/icons":"^5.6.1","@ant-design/pro-layout":"^7.22.1","@antv/g2plot":"^2.4.18","@budibase/handlebars-helpers":"0.14.0","@codemirror/lang-html":"^6.4.10","@codemirror/theme-one-dark":"^6.1.3","@ctrl/tinycolor":"^3.6.0","@dnd-kit/core":"^6.0.0","@dnd-kit/sortable":"^7.0.0","@emotion/css":"^11.7.1","@formily/antd-v5":"1.2.3","@formily/core":"^2.2.27","@formily/grid":"^2.2.27","@formily/json-schema":"^2.2.27","@formily/path":"^2.2.27","@formily/react":"^2.2.27","@formily/reactive":"^2.2.27","@formily/reactive-react":"^2.2.27","@formily/shared":"^2.2.27","@formily/validator":"^2.2.27","@nocobase/evaluators":"2.0.27","@nocobase/flow-engine":"2.0.27","@nocobase/sdk":"2.0.27","@nocobase/utils":"2.0.27","@tanstack/react-table":"^8.21.3","@types/tabulator-tables":"^6.2.6","acorn-jsx":"^5.3.2",ahooks:"^3.7.2",antd:"5.24.2","antd-mobile":"^5.41.1","antd-mobile-icons":"^0.3.0","antd-style":"3.7.1",axios:"^1.7.0","bignumber.js":"^9.1.2",classnames:"^2.3.1",codemirror:"^6.0.2",cronstrue:"^2.11.0","file-saver":"^2.0.5",filesize:"9.0.11",flat:"^5.0.2","html5-qrcode":"^2.3.8",i18next:"^22.4.9","i18next-http-backend":"^2.1.1",ignore:"^5.2.0",json5:"^2.2.3",liquidjs:"^10.0.0",lodash:"4.17.21","lru-cache":"6.0.0","markdown-it":"14.1.0","markdown-it-highlightjs":"3.3.1",mathjs:"^15.1.0",mermaid:"9.4.3",mime:"^4.0.4","mime-match":"^1.0.2","quill-image-resize-module-react":"^3.0.0","react-beautiful-dnd":"^13.1.0","react-device-detect":"2.2.3","react-drag-listview":"^0.1.9","react-error-boundary":"^4.0.10","react-helmet":"^6.1.0","react-hotkeys-hook":"^3.4.7","react-i18next":"^11.15.1","react-iframe":"~1.8.5","react-image-lightbox":"^5.1.4","react-intersection-observer":"9.14.0","react-js-cron":"^3.1.0","react-quill":"^2.0.0","react-router-dom":"^6.30.1","react-to-print":"^2.14.7","sanitize-html":"2.13.0","tabulator-tables":"^6.3.1","use-deep-compare-effect":"^1.8.1",vditor:"^3.10.3"},peerDependencies={react:">=18.0.0","react-dom":">=18.0.0","react-is":">=18.0.0"},devDependencies={"@testing-library/react":"^14.0.0","@types/markdown-it":"14.1.1","@types/markdown-it-highlightjs":"3.3.1","@types/react-big-calendar":"^1.6.4","axios-mock-adapter":"^1.20.0",dumi:"2.2.14","dumi-theme-nocobase":"^0.2.32"},clientPkg={name,version,license,main,module:module$1,types,dependencies,peerDependencies,devDependencies};function createDesignable(e){return new Designable(e)}const generateUid=e=>{e&&(e["x-uid"]||(e["x-uid"]=(0,import_shared.uid)()),Object.keys(e.properties||{}).forEach(t=>{generateUid(e.properties[t])}))},defaultWrap=e=>e,matchSchema=(e,t)=>{if(!(!e||!t)){for(const o in t)if(Object.prototype.hasOwnProperty.call(t,o)&&t[o]!==(e==null?void 0:e[o]))return!1;return!0}},splitWrapSchema=(e,t)=>{if(e["x-uid"]&&e["x-uid"]===t["x-uid"])return[null,e.toJSON()];const o=e.toJSON(),r=A(x({},o),{properties:{}});let i=null;const n=(l,a)=>{Object.keys(l||{}).forEach(c=>{const u=l[c];if(u["x-uid"]===t["x-uid"]){i=l[c];return}else a.properties[c]=A(x({},u),{properties:{}}),n(u==null?void 0:u.properties,a.properties[c])})};return n(o.properties,r),[r,i]},translate=e=>e;class Designable{constructor(t){R(this,"current"),R(this,"options"),R(this,"appVersion"),R(this,"events",{}),this.options=t,this.current=t.current,this.appVersion=t.appVersion}get model(){return this.options.model}get query(){return this.options.query}loadAPIClientEvents(){const{api:t,t:o=translate}=this.options;if(!t)return;const r=i=>{if(!i)return[];const n=Object.values(i.properties).length,l=[];return i.mapProperties(a=>{a["x-component-props"]=a["x-component-props"]||{},a["x-component-props"].width=100/n,a["x-uid"]&&l.push({"x-uid":a["x-uid"],"x-component-props":a["x-component-props"]})}),i["x-uid"]&&l.length?l:[]};this.on("insertAdjacent",i=>L(this,[i],function*({onSuccess:n,current:l,position:a,schema:c,wrap:u,wrapped:d,removed:m}){var p;let h=[];if((d==null?void 0:d["x-component"])==="Grid.Col"&&(h=h.concat(r(d.parent))),(m==null?void 0:m["x-component"])==="Grid.Col"&&(h=h.concat(r(m.parent))),this.refresh(),!l["x-uid"])return;const g=yield t.request({url:`/uiSchemas:insertAdjacent/${l["x-uid"]}?position=${a}`,method:"post",data:{schema:addAppVersion(c,this.appVersion),wrap:u}});h.length&&(yield t.request({url:"/uiSchemas:batchPatch",method:"post",data:h})),m!=null&&m["x-uid"]&&(yield t.request({url:`/uiSchemas:remove/${m["x-uid"]}`,method:"post"})),n==null||n((p=g==null?void 0:g.data)==null?void 0:p.data),import_antd.message.success(o("Saved successfully"),.2)})),this.on("patch",i=>L(this,[i],function*({schema:n}){this.refresh(),n!=null&&n["x-uid"]&&(yield t.request({url:"/uiSchemas:patch",method:"post",data:x({},n)}),import_antd.message.success(o("Saved successfully"),.2))})),this.on("initializeActionContext",i=>L(this,[i],function*({schema:n}){n!=null&&n["x-uid"]&&(yield t.request({url:"/uiSchemas:initializeActionContext",method:"post",data:x({},n)}))})),this.on("batchPatch",i=>L(this,[i],function*({schemas:n}){this.refresh(),yield t.request({url:"/uiSchemas:batchPatch",method:"post",data:n}),import_antd.message.success(o("Saved successfully"),.2)})),this.on("remove",i=>L(this,[i],function*({removed:n}){let l=[];(n==null?void 0:n["x-component"])==="Grid.Col"&&(l=r(n.parent)),this.refresh(),n!=null&&n["x-uid"]&&(yield t.request({url:`/uiSchemas:remove/${n["x-uid"]}`,method:"post"}),l.length&&(yield t.request({url:"/uiSchemas:batchPatch",method:"post",data:l})),import_antd.message.success(o("Saved successfully"),.2))}))}prepareProperty(t){t.type||(t.type="void"),t.name||(t.name=(0,import_shared.uid)()),this.current["x-uid"]&&generateUid(t)}on(t,o){this.events[t]||(this.events[t]=[]),this.events[t].push(o)}emit(t,...o){return L(this,null,function*(){if(!this.events[t])return;const[r,...i]=o;return Promise.all(this.events[t].map(n=>n.bind(this)(x({current:this.current},r),...i)))})}parentsIn(t){if(!t||!import_react.Schema.isSchemaInstance(t))return!1;let o=this.current;for(;o!=null&&o.parent;){if(o.parent===t)return!0;o=o.parent}return!1}refresh(t){const{refresh:o}=this.options;return o==null?void 0:o(t)}deepMerge(t){const o={title:"title",description:"description",default:"initialValue",readOnly:"readOnly",writeOnly:"editable",enum:"dataSource","x-pattern":"pattern","x-display":"display","x-validator":"validator","x-decorator":"decorator","x-component":"component","x-reactions":"reactions","x-content":"content","x-visible":"visible","x-hidden":"hidden","x-disabled":"disabled","x-editable":"editable","x-read-only":"readOnly"},r={"x-decorator-props":"decoratorProps","x-component-props":"componentProps","x-data":"data"};Object.keys(t).forEach(i=>{o[i]?(this.current[i]=t[i],this.updateModel(o[i],t[i])):r[i]?Object.keys(t[i]).forEach(n=>{(0,import_set.default)(this.current,[i,n],t[i][n]),this.updateModel([r[i],n],t[i][n])}):this.current[i]=t[i]}),this.emit("patch",{schema:t})}getSchemaAttribute(t,o){return(0,import_get.default)(this.current,t,o)}shallowMerge(t){const o={title:"title",description:"description",default:"initialValue",readOnly:"readOnly",writeOnly:"editable",enum:"dataSource","x-pattern":"pattern","x-display":"display","x-validator":"validator","x-decorator":"decorator","x-component":"component","x-reactions":"reactions","x-content":"content","x-visible":"visible","x-hidden":"hidden","x-disabled":"disabled","x-editable":"editable","x-read-only":"readOnly","x-decorator-props":"decoratorProps","x-component-props":"componentProps","x-data":"data"};Object.keys(t).forEach(r=>{this.current[r]=t[r],o[r]&&this.updateModel(o[r],t[r])}),this.emit("patch",{schema:t})}updateModel(t,o){const r=i=>{(0,import_set.default)(i,t,o)};this.model&&r(this.model),this.query&&this.query.take(r)}insertAdjacent(t,o,r={}){switch(t){case"beforeBegin":return this.insertBeforeBegin(o,r);case"afterBegin":return this.insertAfterBegin(o,r);case"beforeEnd":return this.insertBeforeEnd(o,r);case"afterEnd":return this.insertAfterEnd(o,r)}}recursiveRemoveIfNoChildren(t,o){if(!t)return;let r=t,i;const n=o==null?void 0:o.breakRemoveOn;for(;r;){if(typeof n=="function"){if(n(r))break}else if(matchSchema(r,n))break;if(Object.keys(r.properties||{}).length>0)break;r.parent&&(i=r.parent.removeProperty(r.name)),r=r.parent}return i}remove(t,o={}){const{breakRemoveOn:r,removeParentsIfNoChildren:i}=o,n=t||this.current;let l=n.parent.removeProperty(n.name);if(i){const a=this.recursiveRemoveIfNoChildren(n.parent,{breakRemoveOn:r});a&&(l=a)}return this.emit("remove",{removed:l})}removeWithoutEmit(t,o={}){const{breakRemoveOn:r,removeParentsIfNoChildren:i}=o,n=t||this.current;let l=n.parent.removeProperty(n.name);if(i){const a=this.recursiveRemoveIfNoChildren(n.parent,{breakRemoveOn:r});a&&(l=a)}return l}insertBeforeBeginOrAfterEnd(t,o={}){if(!import_react.Schema.isSchemaInstance(this.current)||!import_react.Schema.isSchemaInstance(t)||this.current.parent!==t.parent)return;let r=0,i=0;return this.current.parent.mapProperties((n,l,a)=>{this.current.name===l&&(i=a),t.name===l&&(r=a)}),r>i?this.insertBeforeBegin(t,o):this.insertAfterEnd(t,o)}insertBeforeBegin(t,o={}){if(!import_react.Schema.isSchemaInstance(this.current))return;const r={onSuccess:o.onSuccess},{wrap:i=defaultWrap,breakRemoveOn:n,removeParentsIfNoChildren:l}=o;if(import_react.Schema.isSchemaInstance(t)){if(this.parentsIn(t)){this.emit("error",{code:"parent_is_not_allowed",schema:t});return}t.parent.removeProperty(t.name),l&&(r.removed=this.recursiveRemoveIfNoChildren(t.parent,{breakRemoveOn:n}))}else t&&(t=(0,import_cloneDeep.default)(t));const a={};let c=!1,u=0,d=0;this.current.parent.mapProperties((f,_)=>{_===this.current.name&&(d=u,c=!0,++u),f["x-index"]=u,++u,c&&(a[_]=f,this.current.parent.removeProperty(_))}),this.prepareProperty(t);const m=i(t),p=this.current.parent.addProperty(m.name||(0,import_shared.uid)(),m);p["x-index"]=d,p.parent=this.current.parent,this.current.parent.setProperties(a);const[h,g]=splitWrapSchema(p,t);this.emit("insertAdjacent",x({position:"beforeBegin",schema:g,wrapped:m,wrap:h},r))}insertAfterBegin(t,o={}){if(!import_react.Schema.isSchemaInstance(this.current))return;const r={onSuccess:o.onSuccess},{wrap:i=defaultWrap,breakRemoveOn:n,removeParentsIfNoChildren:l}=o;if(import_react.Schema.isSchemaInstance(t)){if(this.parentsIn(t)){this.emit("error",{code:"parent_is_not_allowed",schema:t});return}t.parent.removeProperty(t.name),l&&(r.removed=this.recursiveRemoveIfNoChildren(t.parent,{breakRemoveOn:n}))}else t&&(t=(0,import_cloneDeep.default)(t));const a={};let c=1;this.current.mapProperties((h,g)=>{h["x-index"]=c,++c,a[g]=h}),this.current.properties={},this.prepareProperty(t);const u=i(t),d=this.current.addProperty(u.name||(0,import_shared.uid)(),u);d["x-index"]=0,d.parent=this.current,this.current.setProperties(a);const[m,p]=splitWrapSchema(d,t);this.emit("insertAdjacent",x({position:"afterBegin",schema:p,wrap:m,wrapped:u},r))}insertBeforeEnd(t,o={}){if(!import_react.Schema.isSchemaInstance(this.current))return;delete t["x-index"];const r={onSuccess:o.onSuccess},{wrap:i=defaultWrap,breakRemoveOn:n,removeParentsIfNoChildren:l}=o;if(import_react.Schema.isSchemaInstance(t)){if(this.parentsIn(t)){this.emit("error",{code:"parent_is_not_allowed",schema:t});return}t.parent.removeProperty(t.name),l&&(r.removed=this.recursiveRemoveIfNoChildren(t.parent,{breakRemoveOn:n}))}else t&&(t=(0,import_cloneDeep.default)(t));this.prepareProperty(t);const a=i(t),c=this.current.addProperty(a.name||(0,import_shared.uid)(),a);c.parent=this.current;const[u,d]=splitWrapSchema(c,t);return this.emit("insertAdjacent",x({position:"beforeEnd",schema:d,wrap:u,wrapped:a},r))}insertAfterEnd(t,o={}){if(!import_react.Schema.isSchemaInstance(this.current))return;const r={onSuccess:o==null?void 0:o.onSuccess},{wrap:i=defaultWrap,breakRemoveOn:n,removeParentsIfNoChildren:l}=o;let a=0,c=0,u=!1;const d={};if(this.current.parent.mapProperties((f,_)=>{f["x-index"]=a,_===this.current.name&&(++a,c=a,u=!0),++a,u&&_!==this.current.name&&(d[_]=f,this.current.parent.removeProperty(_))}),import_react.Schema.isSchemaInstance(t)){if(this.parentsIn(t)){this.emit("error",{code:"parent_is_not_allowed",schema:t});return}t.parent.removeProperty(t.name),l&&(r.removed=this.recursiveRemoveIfNoChildren(t.parent,{breakRemoveOn:n})),t.parent=null}else t&&(t=(0,import_cloneDeep.default)(t));this.prepareProperty(t);const m=i(t),p=this.current.parent.addProperty(m.name||(0,import_shared.uid)(),m);p.parent=this.current.parent,p["x-index"]=c,this.current.parent.setProperties(d);const[h,g]=splitWrapSchema(p,t);this.emit("insertAdjacent",x({position:"afterEnd",schema:g,wrap:h,wrapped:m},r))}}function useFindComponent(){const e=(0,import_react2.useContext)(import_react.SchemaOptionsContext),t=(0,import_react2.useMemo)(()=>(e==null?void 0:e.components)||{},[e]);return o=>{if(!o)return null;if(typeof o!="string")return o;const r=(0,import_get.default)(t,o);return r||console.error(`[nocobase]: Component "${o}" not found`),r}}function useDesignable(){const{designable:e,setDesignable:t,refresh:o,reset:r}=(0,import_react2.useContext)(SchemaComponentContext),i=(0,import_react2.useContext)(import_react.SchemaOptionsContext),n=(0,import_react2.useMemo)(()=>(i==null?void 0:i.components)||{},[i]),l=(0,import_react2.useMemo)(()=>()=>(0,import_jsx_runtime.jsx)(import_jsx_runtime.Fragment,{}),[]),a=(0,import_ahooks.useUpdate)(),c=useRefreshFieldSchema(),u=useRefreshComponent(),d=(0,import_react2.useCallback)(v=>{o==null||o(),a(),c==null||c(v),u==null||u()},[o,a,c,u]),m=(0,import_react.useField)(),p=(0,import_react.useFieldSchema)(),h=useAPIClient(),{t:g}=(0,import_react_i18next.useTranslation)(),f=(0,import_react2.useMemo)(()=>createDesignable({t:g,api:h,refresh:d,current:p,model:m,appVersion:clientPkg.version}),[g,h,d,p,m]);(0,import_react2.useEffect)(()=>{f.loadAPIClientEvents()},[f]);const{isMobileLayout:_}=useMobileLayout();return{dn:f,designable:_?!1:e,reset:r,refresh:d,setDesignable:t,DesignableBar:l,findComponent:(0,import_react2.useCallback)(v=>{var b;if(!v)return null;if(typeof v!="string")return v;const F=(0,import_get.default)(n,v);return(b=F==null?void 0:F[LAZY_COMPONENT_KEY])!=null?b:F},[import_get.default]),on:f.on.bind(f),patch:(0,import_react2.useCallback)((v,b)=>{const F=y=>{Object.keys(y).forEach(C=>{const S=y[C];C==="title"&&(m.title=S,p.title=S),C==="x-decorator-props"&&(m.decoratorProps||(m.decoratorProps={}),p["x-decorator-props"]||(p["x-decorator-props"]={}),Object.keys(S).forEach(P=>{m.decoratorProps[P]=S[P],p["x-decorator-props"][P]=S[P]})),C==="x-component-props"&&(m.componentProps||(m.componentProps={}),p["x-component-props"]||(p["x-component-props"]={}),Object.keys(S).forEach(P=>{m.componentProps[P]=S[P],p["x-component-props"][P]=S[P]}))})};if(typeof v=="string"){const y={};return(0,import_set.default)(y,v,b),F(y)}F(v),d()},[f]),shallowMerge:(0,import_react2.useCallback)(v=>{f.shallowMerge(v)},[f]),deepMerge:(0,import_react2.useCallback)(v=>{f.deepMerge(v)},[f]),remove:(0,import_react2.useCallback)((v,b)=>{f.remove(v,b)},[f]),insertAdjacent:(0,import_react2.useCallback)((v,b,F)=>{f.insertAdjacent(v,b,F)},[f]),insertBeforeBegin:(0,import_react2.useCallback)(v=>{f.insertBeforeBegin(v)},[f]),insertAfterBegin:(0,import_react2.useCallback)(v=>{f.insertAfterBegin(v)},[f]),insertBeforeEnd:(0,import_react2.useCallback)(v=>{f.insertBeforeEnd(v)},[f]),insertAfterEnd:(0,import_react2.useCallback)(v=>{f.insertAfterEnd(v)},[f])}}const DefaultSchemaToolbar=()=>null;DefaultSchemaToolbar.isNullComponent=!0;const useDesigner=()=>{const{designable:e}=useDesignable(),t=(0,import_react.useFieldSchema)(),o=(0,import_react2.useMemo)(()=>t["x-designer"]||t["x-toolbar"]?t["x-designer"]||t["x-toolbar"]:t["x-settings"]?SchemaToolbar:DefaultSchemaToolbar,[t]),r=useComponent(o);return e&&r||DefaultSchemaToolbar},useFieldProps$1=e=>{const t=(0,import_react2.useContext)(import_react.SchemaOptionsContext),o=(0,import_react2.useContext)(import_react.SchemaExpressionScopeContext),r=(0,import_react2.useRef)();return r.current=o,e.toFieldProps(A(x({},t),{get scope(){return x(x({},t.scope),r.current)}}))};function useSchemaComponentContext(){return(0,import_react2.useContext)(SchemaComponentContext)}const useFieldComponentOptions=()=>{var e;const{getCollectionJoinField:t,getCollection:o}=useCollectionManager_deprecated(),r=(0,import_react.useFieldSchema)(),{getField:i}=useCollection_deprecated(),n=i(r.name)||t(r["x-collection-field"]),{t:l}=(0,import_react_i18next.useTranslation)(),{label:a}=((e=r["x-component-props"])==null?void 0:e.fieldNames)||{};return(0,import_react2.useMemo)(()=>{if(!n||!(n!=null&&n.interface)||!["o2o","oho","obo","o2m","linkTo","m2o","m2m"].includes(n.interface))return;const c=o(n.target);if((c==null?void 0:c.template)==="file")return[{label:l("Record picker"),value:"CollectionField"},{label:l("Select"),value:"AssociationSelect"}];switch(n.interface){case"o2m":return[{label:l("Record picker"),value:"CollectionField"},{label:l("Subtable"),value:"TableField"},{label:l("Select"),value:"AssociationSelect"}];case"m2o":case"m2m":case"linkTo":return[{label:l("Record picker"),value:"CollectionField"},{label:l("Select"),value:"AssociationSelect"}];default:return[{label:l("Record picker"),value:"CollectionField"},{label:l("Subform"),value:"FormField"},{label:l("Select"),value:"AssociationSelect"}]}},[l,n==null?void 0:n.interface,a])},useFieldTitle=()=>{var e;const t=(0,import_react.useField)(),o=(0,import_react.useFieldSchema)(),r=useCollection(),i=useCollectionManager(),n=(r==null?void 0:r.getField(o.name))||(i==null?void 0:i.getCollectionField(o["x-collection-field"])),l=useCompile();(0,import_react2.useEffect)(()=>{var a;t!=null&&t.title||(t.title=l((a=n==null?void 0:n.uiSchema)==null?void 0:a.title))},[(e=n==null?void 0:n.uiSchema)==null?void 0:e.title])},useDef$4=()=>({}),useProps=(e={})=>{const t=e,{useProps:o=useDef$4}=t,r=ee(t,["useProps"]);let i=o;typeof o!="function"&&(i=useDef$4);const n=i();return x(x({},r),n)};function useParsedFilter({filterOption:e,onFilterChange:t}){const{parseFilter:o,findVariable:r}=useParseDataScopeFilter(),i=JSON.stringify(e),n=(0,import_react2.useRef)(e),l=(0,import_react2.useRef)(t),[a,c]=(0,import_react2.useState)({}),[u,d]=(0,import_react2.useState)(()=>e?null:i),m=!!e&&u!==i;return n.current=e,l.current=t,(0,import_react2.useEffect)(()=>{const p=n.current;if(!p){c({}),d(i);return}let h=!1;const g=()=>L(this,null,function*(){var v;const b=yield o(p);h||(c(b),d(i),(v=l.current)==null||v.call(l,b))});g();const f=import_lodash.default.debounce(g,DEBOUNCE_WAIT),_=(0,import_reactive.reaction)(()=>(0,import_client.flatten)(p,{breakOn({key:v}){return v.startsWith("$")&&v!=="$and"&&v!=="$or"},transformValue(v){if(!isVariable$1(v))return v;const b=getVariableName(v),F=r(b);let y=null;const C=getPath(v).split(".");return C.forEach((S,P)=>{const j=C.slice(0,P+1).join("."),I=(0,import_client.getValuesByPath)({[b]:(F==null?void 0:F.ctx)||{}},j);import_lodash.default.isEmpty(I)||(y=I)}),y}}),f,{equals:import_lodash.default.isEqual});return()=>{h=!0,f.cancel(),_()}},[i,r,o]),{filter:a,parseVariableLoading:m}}const useParentRecordCommon=e=>{const t=useCollectionRecordData();if(e)return t},useTableBlockDecoratorProps=e=>{var t;const{params:o,parseVariableLoading:r}=useTableBlockParams(e),i=useParentRecordCommon(e.association),n=(t=useDataSourceManager().getDataSource(e.dataSource))==null?void 0:t.collectionManager.getCollection(e.collection);return{params:o,parentRecord:i,parseVariableLoading:r,rowKey:(n==null?void 0:n.filterTargetKey)||"id"}};function useTableBlockParams(e){var t;const o=(0,import_react.useFieldSchema)(),{filter:r,parseVariableLoading:i}=useParsedFilter({filterOption:(t=e.params)==null?void 0:t.filter});return{params:(0,import_react2.useMemo)(()=>{const n=e.params||{},{dragSortBy:l}=(o==null?void 0:o["x-decorator-props"])||{};return e.dragSort&&l&&(n.sort=l),A(x({},n),{filter:r})},[o,r,e.dragSort,e.params]),parseVariableLoading:i}}const key="__isNewRecord__",isNewRecord=e=>(0,import_reactive.untracked)(()=>!!(e!=null&&e[key])),markRecordAsNew=e=>{if(!(0,import_lodash.isObject)(e))throw new Error("markRecordAsNew: record must be an object");return e[key]=!0,e},useDefaultLoading=()=>{var e;return!!((e=useDataBlockRequest())!=null&&e.loading)},withSkeletonComponent=(e,t)=>{const{useLoading:o=useDefaultLoading,displayName:r,SkeletonComponent:i=import_antd.Skeleton}=t||{},n=import_react2.default.memo(l=>{const a=o(),c=(0,import_react2.useRef)(!1),u=(0,import_react2.useDeferredValue)(a);return!c.current&&u?(0,import_jsx_runtime.jsx)(i,{}):(c.current=!0,(0,import_jsx_runtime.jsx)(e,x({},l)))});return n.displayName=r||`${e.displayName}(withSkeletonComponent)`||`${e.name}(withSkeletonComponent)`,n},getActionValue=(e,t)=>{const o=r=>(r==null?void 0:r.mode)==="constant"?r.value:null;switch(!0){case[ActionType.Color,ActionType.BackgroundColor,ActionType.TextAlign,ActionType.FontSize,ActionType.FontWeight,ActionType.FontStyle].includes(e):return o(t);default:return null}},getSatisfiedActions=(e,t)=>L(void 0,[e,t],function*({rules:o,variables:r,localVariables:i},n){return(yield Promise.all(o.filter(l=>!l.disabled).map(l=>L(void 0,null,function*(){return(yield conditionAnalyses({ruleGroup:l.condition,variables:r,localVariables:i,conditionType:l.conditionType},n))?l:null})))).filter(Boolean).map(l=>l.actions).flat()}),getSatisfiedValues=(e,t)=>L(void 0,[e,t],function*({rules:o,variables:r,localVariables:i},n){return(yield getSatisfiedActions({rules:o,variables:r,localVariables:i},n)).map(l=>A(x({},l),{value:getActionValue(l.operator,l.value)}))}),getSatisfiedValueMap=(e,t)=>L(void 0,[e,t],function*({rules:o,variables:r,localVariables:i},n){return(yield getSatisfiedValues({rules:o,variables:r,localVariables:i},n)).reduce((l,a)=>A(x({},l),{[a.operator]:a.value}),{})});function useSatisfiedActionValues({formValues:e,category:t="default",rules:o,schema:r,form:i}){const[n,l]=(0,import_react2.useState)({}),a=(0,import_react.useFieldSchema)(),c=useVariables$1(),u=useLocalVariables$1({currentForm:{values:e}}),d=r??a,m=o??(d[LinkageRuleDataKeyMap[t]]||(d==null?void 0:d.parent[LinkageRuleDataKeyMap[t]])),p=useApp(),h=(0,import_react2.useCallback)(()=>{m&&e&&getSatisfiedValueMap({rules:m,variables:c,localVariables:u},p.jsonLogic).then(g=>{(0,import_lodash.isEmpty)(g)?l({}):l(g)}).catch(g=>{throw new Error(g.message)})},[c,u,m,e]);return(0,import_react2.useEffect)(()=>{if(h(),i){const g=(0,import_shared.uid)();return i.addEffects(g,()=>{(0,import_core.onFormValuesChange)(()=>{h()})}),()=>{i.removeEffects(g)}}},[i,h,e]),{valueMap:n}}const GetStyleRules=import_react2.default.memo(({record:e,schema:t,onStyleChange:o})=>{const{valueMap:r}=useSatisfiedActionValues({formValues:e,category:"style",schema:t});return(0,import_react2.useEffect)(()=>{o(r)},[o,r]),null});GetStyleRules.displayName="GetStyleRules";const opacityStyle={opacity:.5},containerStyle={position:"relative"},spinStyle={display:"flex",alignItems:"center",justifyContent:"center",position:"absolute",left:0,right:0,height:"100%",maxHeight:400,zIndex:1e3},displayNone$3={display:"none"},HighPerformanceSpin=import_react2.default.memo(e=>(0,import_jsx_runtime.jsxs)("div",{style:containerStyle,children:[(0,import_jsx_runtime.jsx)(import_antd.Spin,A(x({},import_lodash.default.omit(e,"children")),{style:e.spinning?spinStyle:displayNone$3})),(0,import_jsx_runtime.jsx)("div",{style:e.spinning?opacityStyle:null,children:e.children})]}));HighPerformanceSpin.displayName="HighPerformanceSpin";var FilterBlockType=(e=>(e[e.FORM=0]="FORM",e[e.TABLE=1]="TABLE",e[e.TREE=2]="TREE",e[e.COLLAPSE=3]="COLLAPSE",e))(FilterBlockType||{});const mergeFilter=(e,t="$and")=>{const o=e.filter(r=>{if(r&&typeof r=="object"&&!Array.isArray(r))return Object.values(r).filter(i=>i!==void 0).length});return o.length===0?{}:o.length===1?o[0]:{[t]:o}},getSupportFieldsByAssociation=(e,t)=>{var o;return(o=t.associatedFields)==null?void 0:o.filter(r=>e==null?void 0:e.some(i=>i===r.target))},getSupportFieldsByForeignKey=(e,t)=>{var o;return(o=t.foreignKeyFields)==null?void 0:o.filter(r=>e.fields.some(i=>i.type!=="belongsTo"&&i.foreignKey===r.name&&i.target===r.collectionName))},useSupportedBlocks=e=>{const{getDataBlocks:t}=useFilterBlock(),o=(0,import_react.useFieldSchema)(),r=useCollection(),{getAllCollectionsInheritChain:i}=useAllCollectionsInheritChainGetter();if(e===0||e===3)return t().filter(n=>isSameCollection(n.collection,r));if(e===1||e===2)return t().filter(n=>{var l,a;return o["x-uid"]!==n.uid&&(isSameCollection(n.collection,r)||((l=getSupportFieldsByAssociation(i(r.name,r.dataSource),n))==null?void 0:l.length)||((a=getSupportFieldsByForeignKey(r,n))==null?void 0:a.length))})},transformToFilter=(e,t,o,r)=>(e=(0,import_client.flatten)(e,{breakOn({value:i,path:n}){if(["$match","$notMatch","$anyOf","$noneOf","$childIn","$childNotIn","$dateBetween","$in","$notIn"].includes(t[n]))return!0;const l=o(`${r}.${n}`);if(["datetime","datetimeNoTz","date","unixTimestamp","createdAt","updatedAt"].includes(l==null?void 0:l.interface))return!0;if(l!=null&&l.target){if(Array.isArray(i))return!0;const a=l.targetKey||"id";if(i&&i[a]!=null)return!0}return!1}}),{$and:Object.keys(e).map(i=>{let n=import_lodash.default.get(e,i);const l=o(`${r}.${i}`);return l!=null&&l.target&&["hasOne","hasMany","belongsTo","belongsToMany","belongsToArray"].includes(l.type)&&(n=(0,import_client.getValuesByPath)(n,l.targetKey||"id"),i=`${i}.${l.targetKey||"id"}`,(l==null?void 0:l.interface)==="chinaRegion"&&(n=import_lodash.default.last(n))),!n&&n!==0&&n!==!1?null:{[i]:{[t[i]||"$eq"]:n}}}).filter(Boolean)}),useAssociatedFields=()=>{var e;return((e=useCollection())==null?void 0:e.fields.filter(t=>isAssocField(t)))||[]},isAssocField=e=>["o2o","oho","obo","m2o","createdBy","updatedBy","o2m","m2m","linkTo","chinaRegion","mbm"].includes(e==null?void 0:e.interface),isSameCollection=(e,t)=>e.name===t.name&&e.dataSource===t.dataSource,useFilterAPI=()=>{const e=(0,import_react.useFieldSchema)(),{getDataBlocks:t}=useFilterBlock(),{targets:o,uid:r}=findFilterTargets(e),i=t(),[n,l]=(0,import_react2.useState)(()=>o&&o.some(u=>i.some(d=>d.uid===u.uid))),a=Object.keys(o||{});(0,import_react2.useEffect)(()=>{l(o&&o.some(u=>i.some(d=>d.uid===u.uid)))},[a.length,o,i]);const c=(0,import_react2.useCallback)((u,d="id",m="$eq")=>{const p=i.find(h=>h.uid===e.parent["x-uid"]);i.forEach(h=>{var g,f,_,v;let b=d;const F=o.find(P=>P.uid===h.uid);if(!F)return;import_lodash.default.isFunction(u)&&(u=u(F,h,getSourceKey$1(p,F.field))),import_lodash.default.isFunction(d)&&(b=d(F,h)),import_lodash.default.isFunction(m)&&(m=m(F));const y=((g=h.service.params)==null?void 0:g[0])||{},C=((_=(f=h.service.params)==null?void 0:f[1])==null?void 0:_.filters)||{};if(u!=null)C[r]={$and:[{[b]:{[m]:u}}]};else if((v=h.clearSelection)==null||v.call(h),delete C[r],h.dataLoadingMode==="manual")return h.clearData();const S=mergeFilter([...Object.values(C).map(P=>removeNullCondition(P)),h.defaultFilter]);h.doFilter(A(x({},y),{page:1,filter:S}),{filters:C})})},[i,o,r,e]);return{isConnected:n,doFilter:c}},isInFilterFormBlock=e=>{for(;e;){if(e["x-filter-targets"])return e["x-decorator"]==="FilterFormBlockProvider";e=e.parent}return!1};function getSourceKey$1(e,t){var o,r,i;const n=(o=e==null?void 0:e.associatedFields)==null?void 0:o.find(l=>l.foreignKey===t);return(n==null?void 0:n.sourceKey)||((i=(r=t==null?void 0:t.split)==null?void 0:r.call(t,"."))==null?void 0:i[1])}const AssociationFieldContext=(0,import_react2.createContext)({});AssociationFieldContext.displayName="AssociationFieldContext";const useInsertSchema$1=e=>{const t=(0,import_react.useFieldSchema)(),{insertAfterBegin:o}=useDesignable(),{isMobileLayout:r}=useMobileLayout();return(0,import_react2.useCallback)(i=>{r||t.reduceProperties((n,l)=>l["x-component"]==="AssociationField."+e?l:n,null)||o((0,import_cloneDeep.default)(i))},[e,t,o,r])};function useAssociationFieldContext(){return(0,import_react2.useContext)(AssociationFieldContext)}function useServiceOptions$1(e){var t,o,r,i,n,l,a,c,u,d;const{action:m="list",service:p,useOriginalFilter:h}=e,g=(0,import_react.useFieldSchema)(),f=(0,import_react.useField)(),{getField:_}=useCollection_deprecated(),{getCollectionJoinField:v}=useCollectionManager_deprecated(),b=useRecord(),{isNew:F}=useCollectionRecord()||{},y=((0,import_lodash.isString)((r=(o=(t=g==null?void 0:g["x-component-props"])==null?void 0:t.service)==null?void 0:o.params)==null?void 0:r.filter)?(l=(n=(i=f.componentProps)==null?void 0:i.service)==null?void 0:n.params)==null?void 0:l.filter:(u=(c=(a=g==null?void 0:g["x-component-props"])==null?void 0:a.service)==null?void 0:c.params)==null?void 0:u.filter)||((d=p==null?void 0:p.params)==null?void 0:d.filter),{filter:C}=useParsedFilter({filterOption:y,onFilterChange:()=>{F&&f.reset()}}),S=(0,import_react2.useMemo)(()=>_(g.name)||v(g==null?void 0:g["x-collection-field"]),[g]),P=b==null?void 0:b[S==null?void 0:S.sourceKey],j=(0,import_react2.useMemo)(()=>{const I=["oho","o2m"].includes(S==null?void 0:S.interface);return mergeFilter([mergeFilter([I&&!isInFilterFormBlock(g)&&S!=null&&S.foreignKey&&!h?{[S.foreignKey]:{$is:null}}:null,C]),I&&P!==void 0&&P!==null&&!isInFilterFormBlock(g)&&S!=null&&S.foreignKey&&!h?{[S.foreignKey]:{$eq:P}}:null],"$or")},[S==null?void 0:S.interface,S==null?void 0:S.foreignKey,g,C,P,h]);return(0,import_react2.useMemo)(()=>A(x({resource:S==null?void 0:S.target,action:m},p),{params:A(x({},p==null?void 0:p.params),{filter:j})}),[S==null?void 0:S.target,m,j,p])}const useFieldNames$1=(e={})=>{var t,o,r,i,n;const l=(0,import_react.useFieldSchema)(),a=((i=(r=(o=(t=l["x-component-props"])==null?void 0:t.field)==null?void 0:o.uiSchema)==null?void 0:r["x-component-props"])==null?void 0:i.fieldNames)||((n=l["x-component-props"])==null?void 0:n.fieldNames)||e.fieldNames;return x({label:"label",value:"value"},a)},SubFormContext=(0,import_react2.createContext)(null);SubFormContext.displayName="SubFormContext";const SubFormProvider=e=>{const t=(0,import_react2.useContext)(SubFormContext),{value:o,collection:r,fieldSchema:i,parent:n,skip:l}=e.value,a=(0,import_react2.useMemo)(()=>import_lodash.default.omitBy({value:o,collection:r,fieldSchema:i,skip:l,parent:n||(t!=null&&t.skip?t.parent:t)},import_lodash.default.isUndefined),[o,r,i,l,n,t]);return(0,import_jsx_runtime.jsx)(SubFormContext.Provider,{value:a,children:e.children})},useSubFormValue=()=>{const{value:e,collection:t,fieldSchema:o,parent:r}=(0,import_react2.useContext)(SubFormContext)||{};return{formValue:e,collection:t,fieldSchema:o,parent:r}},TableUidContext=(0,import_react2.createContext)(null),useColumnSettings=e=>{const{t}=(0,import_react_i18next.useTranslation)(),o=(0,import_react2.useContext)(TableUidContext),r=`nocobase_table_column_settings_${o}`,i=(0,import_react2.useCallback)(()=>{try{const a=localStorage.getItem(r);return a?JSON.parse(a):null}catch(a){return console.warn("Failed to parse table column settings from localStorage:",a),null}},[r]),n=(0,import_react2.useCallback)(a=>{try{const c=JSON.stringify(a);localStorage.setItem(r,c);const u=new CustomEvent("nocobase-table-settings-changed",{detail:{key:r,tableId:o,settings:a}});window.dispatchEvent(u)}catch(c){console.warn("Failed to save table column settings to localStorage:",c),import_antd.message.error(t("Failed to save table settings"))}},[r,o,t]),l=(0,import_react2.useCallback)(()=>{try{localStorage.removeItem(r);const a=new CustomEvent("nocobase-table-settings-changed",{detail:{key:r,tableId:o,settings:null}});window.dispatchEvent(a)}catch(a){console.warn("Failed to clear table column settings from localStorage:",a),import_antd.message.error(t("Failed to clear table settings"))}},[r,o,t]);return{getSettings:i,saveSettings:n,clearSettings:l}},useTableColumnIntegration=(e,t=!0)=>{const o=(0,import_react2.useContext)(TableUidContext),{getSettings:r}=useColumnSettings(),[i,n]=(0,import_react2.useState)(0);(0,import_react2.useEffect)(()=>{const a=c=>{const{key:u,tableId:d}=c.detail;(u.includes(o)||d===o)&&n(m=>m+1)};return window.addEventListener("nocobase-table-settings-changed",a),()=>{window.removeEventListener("nocobase-table-settings-changed",a)}},[o]);const l=(0,import_react2.useMemo)(()=>r(),[r,i]);return{columns:(0,import_react2.useMemo)(()=>{if(!t||!l||l.length===0)return e;const a=new Map;l.forEach(p=>{a.set(p.key,p)});const c=e.map(p=>{const h=a.get(p.key);if(h){const g=p.columnHidden||!h.visible,f=h.width||p.width,_=h.fixed||p.fixed;return A(x({},p),{columnHidden:g,fixed:_,width:f,_orderIndex:h.order})}return p}),u=[],d=[];c.forEach(p=>{p._orderIndex!==void 0?u.push(p):d.push(p)}),u.sort((p,h)=>(p._orderIndex||0)-(h._orderIndex||0));const m=[...u,...d];return m.forEach(p=>{delete p._orderIndex}),m},[e,l])}},TableSkeleton=({rows:e=5,columns:t=6})=>{const{token:o}=useToken$1(),r=o.controlHeight*2.06,i=o.controlHeight*1.75,n=(0,import_react2.useMemo)(()=>import_css.css`
|
|
65
|
+
`,items:a},n))})},SchemaInitializerSubMenu=e=>{var t;const o=e,{children:r,items:i,title:n,name:l,onOpenChange:a,icon:c}=o,u=ee(o,["children","items","title","name","onOpenChange","icon"]),d=useCompile(),m=useSchemaInitializerItem(),p=(0,import_react2.useMemo)(()=>l||(m==null?void 0:m.name)||(0,import_shared.uid)(),[l,m]),h=(t=i||r)==null?void 0:t.filter(_=>_.useVisible?_.useVisible():!0),g=useSchemaInitializerMenuItems(h,l),f=(0,import_react2.useMemo)(()=>[A(x({},u),{key:p,label:d(n),icon:typeof c=="string"?(0,import_jsx_runtime.jsx)(import_icons.default,{type:c}):c,children:g})],[g,d,c,p,u,n]);return(0,import_jsx_runtime.jsx)(SchemaInitializerMenu,{onOpenChange:a,items:f})},SchemaInitializerSubMenuInternal=()=>{const e=useSchemaInitializerItem();return(0,import_jsx_runtime.jsx)(SchemaInitializerSubMenu,x({},e))},useAriaAttributeOfMenuItem=()=>{const{isInMenu:e}=useSchemaInitializerSubMenuContext();return{attribute:(0,import_react2.useMemo)(()=>e?{}:{role:"menuitem"},[e])}},{Paragraph:Paragraph$1,Text:Text$2}=import_antd.Typography,ErrorFallbackModal=e=>{const[t,o]=import_react2.default.useState(!1),r=(0,import_jsx_runtime.jsx)(Paragraph$1,{style:{display:"flex",marginBottom:0},copyable:{text:e.error.message},children:(0,import_jsx_runtime.jsxs)(Text$2,{type:"danger",style:{whiteSpace:"nowrap",textOverflow:"ellipsis",overflow:"hidden",display:"inline-block",maxWidth:"200px"},children:["Error: ",e.error.message]})});return(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsx)("div",{onMouseOver:()=>o(!0),children:e.children||r}),(0,import_jsx_runtime.jsx)(import_antd.Modal,{zIndex:1e4,open:t,footer:null,onCancel:()=>o(!1),width:"60%",children:(0,import_jsx_runtime.jsx)(ErrorFallback,x({},e))})]})},{Paragraph,Text:Text$1,Link}=import_antd.Typography,useDownloadLogs=(e,t={})=>{const o=useLocationNoUpdate(),[r,i]=import_react2.default.useState(!1),n=useAPIClient();return{loading:r,download:()=>L(void 0,null,function*(){i(!0);try{const l=yield n.request({url:"logger:collect",method:"post",responseType:"blob",data:x({error:{message:e.message,stack:e.stack},location:o},t)}),a=window.URL.createObjectURL(new Blob([l.data],{type:"application/gzip"})),c=document.createElement("a");c.setAttribute("href",a),c.setAttribute("download","logs.tar.gz"),c.click(),c.remove()}catch(l){console.log(l)}i(!1)})}},ErrorFallback=({error:e})=>{const t=(0,import_react.useFieldSchema)(),{t:o}=(0,import_react_i18next.useTranslation)(),{loading:r,download:i}=useDownloadLogs(e,{schema:t}),n=(0,import_jsx_runtime.jsxs)(import_react_i18next.Trans,{children:["This is likely a NocoBase internals bug. Please open an issue at ",(0,import_jsx_runtime.jsx)(Link,{href:"https://github.com/nocobase/nocobase/issues",target:"_blank",children:"here"})]});return(0,import_jsx_runtime.jsx)("div",{style:{backgroundColor:"white"},children:(0,import_jsx_runtime.jsx)(import_antd.Result,{style:{maxWidth:"60vw",margin:"auto"},status:"error",title:o("Render Failed"),subTitle:n,extra:[(0,import_jsx_runtime.jsx)(import_antd.Button,{type:"primary",href:"https://github.com/nocobase/nocobase/issues",target:"_blank",children:o("Feedback")},"feedback"),(0,import_jsx_runtime.jsx)(import_antd.Button,{loading:r,onClick:i,children:o("Download logs")},"log")],children:(0,import_jsx_runtime.jsx)(Paragraph,{copyable:{text:e.stack},children:(0,import_jsx_runtime.jsx)(Text$1,{type:"danger",style:{whiteSpace:"pre-line",textAlign:"center"},children:e.stack})})})})};ErrorFallback.Modal=ErrorFallbackModal;const AppNotFound=()=>{const e=(0,import_react_router_dom.useNavigate)(),{t}=(0,import_react_i18next.useTranslation)();return(0,import_jsx_runtime.jsx)(import_antd.Result,{status:"404",title:"404",subTitle:t("Sorry, the page you visited does not exist."),extra:(0,import_jsx_runtime.jsx)(import_antd.Button,{onClick:()=>e("/",{replace:!0}),type:"primary",children:"Back Home"})})};class Plugin{constructor(t,o){this.options=t,this.app=o,this.options=t,this.app=o}get pluginManager(){return this.app.pluginManager}get context(){return this.app.context}get flowEngine(){return this.app.flowEngine}get engine(){return this.app.flowEngine}get ai(){return this.app.aiManager}get pm(){return this.app.pm}get router(){return this.app.router}get pluginSettingsManager(){return this.app.pluginSettingsManager}get pluginSettingsRouter(){return this.app.pluginSettingsManager}get schemaInitializerManager(){return this.app.schemaInitializerManager}get schemaSettingsManager(){return this.app.schemaSettingsManager}get dataSourceManager(){return this.app.dataSourceManager}afterAdd(){return L(this,null,function*(){})}beforeLoad(){return L(this,null,function*(){})}load(){return L(this,null,function*(){})}t(t,o={}){var r;return this.app.i18n.t(t,x({ns:(r=this.options)==null?void 0:r.packageName},o))}}const titleWrapperStyle={display:"flex",alignItems:"center",gap:4},withTooltipComponent=e=>t=>{const{tooltip:o}=t;return o?(0,import_jsx_runtime.jsxs)("div",{style:titleWrapperStyle,children:[(0,import_jsx_runtime.jsx)(e,x({},t)),(0,import_jsx_runtime.jsx)(import_antd.Tooltip,{title:o,children:(0,import_jsx_runtime.jsx)(import_icons.QuestionCircleOutlined,{style:{zIndex:1}})})]}):(0,import_jsx_runtime.jsx)(e,x({},t))},{evaluate}=import_client4.evaluators.get("formula.js"),useEvaluatedExpression=e=>{const t=useVariables$1(),o=useLocalVariables$1(),[r,i]=(0,import_react2.useState)();return(0,import_react2.useEffect)(()=>{L(void 0,null,function*(){if(e==null||e===""){i(void 0);return}const{exp:n,scope:l}=yield replaceVariables(e,{variables:t,localVariables:o});try{const a=evaluate(n,x({now:()=>new Date().toString()},l));i(a)}catch(a){console.error(a)}})},[t.parseVariable,e,o]),r};class SchemaInitializer{constructor(t){R(this,"options"),R(this,"name"),this.options=Object.assign({items:[]},t),this.name=t.name}get items(){return this.options.items}add(t,o){const r=t.split("."),i=r[r.length-1],n=A(x({},o),{name:i}),l=(u,d)=>{const m=this.items.findIndex(p=>p.name===u);m===-1?this.items.push(d):this.items[m]=d};if(r.length===1){l(i,n);return}const a=r.slice(0,-1).join("."),c=this.get(a);if(c){c.children||(c.children=[]);const u=t.replace(`${c.name}.`,""),d=c.children.findIndex(m=>m.name===u);d===-1?c.children.push(n):c.children[d]=n}else l(i,n)}get(t){var o;if(!t)return;const r=t.split(".");let i={children:this.items};for(let n=0;n<r.length;n++){const l=r[n],a=(o=i.children)==null?void 0:o.find(c=>c.name===l);if(a&&(i=a),n===r.length-1)return a}}remove(t){const o=t.split(".");if(o.length===1){const i=this.items.findIndex(n=>n.name===o[0]);i!==-1&&this.items.splice(i,1);return}const r=this.get(o.slice(0,-1).join("."));if(r&&r.children){const i=o[o.length-1],n=r.children.findIndex(l=>l.name===i);n!==-1&&r.children.splice(n,1)}}}var NocoBaseDesktopRouteType=(e=>(e.group="group",e.page="page",e.flowRoute="flowRoute",e.link="link",e.tabs="tabs",e.flowPage="flowPage",e))(NocoBaseDesktopRouteType||{});const useStyles$h=genStyleHook("nb-menu-item",e=>{const{componentCls:t}=e;return{[t]:{paddingLeft:`${e.padding}px !important`,paddingRight:`${e.padding}px !important`}}}),useInsertFlowPageSchema=()=>{const e=useAPIClient();return(0,import_react2.useCallback)(t=>L(void 0,null,function*(){yield e.request({method:"POST",url:"/uiSchemas:insert",data:t})}),[e])},FlowPageMenuItem=()=>{const{t:e}=(0,import_react_i18next.useTranslation)(),t=(0,import_react2.useContext)(import_react.SchemaOptionsContext),{theme:o}=useGlobalTheme(),{componentCls:r,hashId:i}=useStyles$h(),n=useParentRoute(),{createRoute:l}=useNocoBaseRoutes(),a=useInsertFlowPageSchema(),c=(0,import_react2.useCallback)(()=>L(void 0,null,function*(){const u=yield FormDialog(e("Add page"),()=>(0,import_jsx_runtime.jsx)(SchemaComponentOptions,{scope:t.scope,components:x({},t.components),children:(0,import_jsx_runtime.jsx)(import_antd_v5.FormLayout,{layout:"vertical",children:(0,import_jsx_runtime.jsx)(zIndexContext.Provider,{value:ICON_POPUP_Z_INDEX,children:(0,import_jsx_runtime.jsx)(SchemaComponent,{schema:{properties:{title:{title:e("Menu item title"),required:!0,"x-component":"Input","x-decorator":"FormItem"},icon:{title:e("Icon"),"x-component":"IconPicker","x-decorator":"FormItem"}}}})})})}),o).open({initialValues:{}}),d=(0,import_shared.uid)(),m=(0,import_shared.uid)(),p=(0,import_shared.uid)(),h=(0,import_shared.uid)();yield l({type:NocoBaseDesktopRouteType.flowPage,title:u.title,icon:u.icon,parentId:n==null?void 0:n.id,schemaUid:m,menuSchemaUid:d,enableTabs:!1,children:[{type:NocoBaseDesktopRouteType.tabs,schemaUid:p,tabSchemaName:h,hidden:!0}]}),a(getFlowPageMenuSchema({pageSchemaUid:m}))}),[l,a,t==null?void 0:t.components,t==null?void 0:t.scope,n==null?void 0:n.id,e,o]);return(0,import_jsx_runtime.jsx)(SchemaInitializerItem,{title:e("Modern page (v2)"),onClick:c,className:`${r} ${i}`})};function getFlowPageMenuSchema({pageSchemaUid:e}){return{type:"void","x-component":"FlowRoute","x-uid":e}}const GroupItem$1=()=>{const{t:e}=(0,import_react_i18next.useTranslation)(),t=(0,import_react2.useContext)(import_react.SchemaOptionsContext),{theme:o}=useGlobalTheme(),{componentCls:r,hashId:i}=useStyles$h(),n=useParentRoute(),{createRoute:l}=useNocoBaseRoutes(),a=(0,import_react2.useCallback)(()=>L(void 0,null,function*(){const c=yield FormDialog(e("Add group"),()=>(0,import_jsx_runtime.jsx)(SchemaComponentOptions,{scope:t.scope,components:x({},t.components),children:(0,import_jsx_runtime.jsx)(import_antd_v5.FormLayout,{layout:"vertical",children:(0,import_jsx_runtime.jsx)(zIndexContext.Provider,{value:ICON_POPUP_Z_INDEX,children:(0,import_jsx_runtime.jsx)(SchemaComponent,{schema:{properties:{title:{title:e("Menu item title"),"x-component":"Input","x-decorator":"FormItem",required:!0},icon:{title:e("Icon"),"x-component":"IconPicker","x-decorator":"FormItem"}}}})})})}),o).open({initialValues:{}}),{title:u,icon:d}=c,m=(0,import_shared.uid)();yield l({type:NocoBaseDesktopRouteType.group,title:u,icon:d,parentId:n==null?void 0:n.id,schemaUid:m})}),[t.components,t.scope,e,o]);return(0,import_jsx_runtime.jsx)(SchemaInitializerItem,{title:e("Group"),onClick:a,className:`${r} ${i}`})},useAttach=e=>{const t=(0,import_react2.useRef)(null);return(0,import_react2.useEffect)(()=>(t.current&&e!==t.current&&t.current.onUnmount(),t.current=e,e.onMount(),()=>{e.onUnmount()}),[e]),e},compileCache={},hasVariable=e=>/{{.*?}}/g.test(e),useCompile=({noCache:e}={noCache:!1})=>{const t=(0,import_react2.useContext)(import_react.SchemaOptionsContext),o=(0,import_react2.useContext)(import_react.SchemaExpressionScopeContext);return(r,i)=>{let n=!1,l;if(typeof r=="string"&&r.startsWith("{{")&&(n=!0,l=r),r&&typeof r=="object"&&!(0,import_react2.isValidElement)(r)){try{l=JSON.stringify(r)}catch(a){return console.warn("Failed to stringify:",a),r}if(compileCache[l])return compileCache[l];n=hasVariable(l)}if(Array.isArray(r)){try{l=JSON.stringify(r)}catch(a){return console.warn("Failed to stringify:",a),r}if(compileCache[l])return compileCache[l];n=hasVariable(l)}if(n){const a=x(x(x({},t==null?void 0:t.scope),o),i);if(!l)return import_react.Schema.compile(r,a);try{return e?import_react.Schema.compile(r,a):(compileCache[l]=compileCache[l]||import_react.Schema.compile(r,a),compileCache[l])}catch(c){return console.log("useCompile error",r,c),import_react.Schema.compile(r,a)}}return r}},useComponent=(e,t)=>{const{components:o}=(0,import_react2.useContext)(import_react.SchemaOptionsContext);return e?typeof e!="string"?e:(0,import_lodash.get)(o,e)||t:t},LAZY_COMPONENT_KEY=Symbol("LAZY_COMPONENT_KEY");function lazy(e,...t){if(t.length===0){const o=(0,import_react2.lazy)(()=>e().then(i=>{const n=i.default;return r[LAZY_COMPONENT_KEY]=n,{default:n}})),r=i=>(0,import_jsx_runtime.jsx)(import_react2.default.Suspense,{fallback:(0,import_jsx_runtime.jsx)(import_antd.Spin,{}),children:(0,import_jsx_runtime.jsx)(o,x({},i))});return r}return t.reduce((o,r)=>{const i=(0,import_react2.lazy)(()=>e().then(n=>{const l=(0,import_lodash.get)(n,r);return o[r][LAZY_COMPONENT_KEY]=l,{default:l}}));return o[r]=n=>(0,import_jsx_runtime.jsx)(import_react2.default.Suspense,{fallback:(0,import_jsx_runtime.jsx)(import_antd.Spin,{}),children:(0,import_jsx_runtime.jsx)(i,x({},n))}),o},{})}function useLazy(e,t){const o=typeof t=="function"?t:i=>i[t],r=(0,import_react_imported_component.loadableResource)(e);if(!r.payload)throw new Promise((i,n)=>{r.loadIfNeeded(),r.resolution.then(i).catch(n)});return o(r.payload)}function addAppVersion(e,t){if(e)return e["x-app-version"]||(e["x-app-version"]=t),Object.keys(e.properties||{}).forEach(o=>{var r;addAppVersion((r=e.properties)==null?void 0:r[o],t)}),e}const name="@nocobase/client",version="2.0.29",license="Apache-2.0",main="lib/index.js",module$1="es/index.mjs",types="es/index.d.ts",dependencies={"@ahooksjs/use-url-state":"3.5.1","@ant-design/cssinjs":"^1.11.1","@ant-design/icons":"^5.6.1","@ant-design/pro-layout":"^7.22.1","@antv/g2plot":"^2.4.18","@budibase/handlebars-helpers":"0.14.0","@codemirror/lang-html":"^6.4.10","@codemirror/theme-one-dark":"^6.1.3","@ctrl/tinycolor":"^3.6.0","@dnd-kit/core":"^6.0.0","@dnd-kit/sortable":"^7.0.0","@emotion/css":"^11.7.1","@formily/antd-v5":"1.2.3","@formily/core":"^2.2.27","@formily/grid":"^2.2.27","@formily/json-schema":"^2.2.27","@formily/path":"^2.2.27","@formily/react":"^2.2.27","@formily/reactive":"^2.2.27","@formily/reactive-react":"^2.2.27","@formily/shared":"^2.2.27","@formily/validator":"^2.2.27","@nocobase/evaluators":"2.0.29","@nocobase/flow-engine":"2.0.29","@nocobase/sdk":"2.0.29","@nocobase/utils":"2.0.29","@tanstack/react-table":"^8.21.3","@types/tabulator-tables":"^6.2.6","acorn-jsx":"^5.3.2",ahooks:"^3.7.2",antd:"5.24.2","antd-mobile":"^5.41.1","antd-mobile-icons":"^0.3.0","antd-style":"3.7.1",axios:"^1.7.0","bignumber.js":"^9.1.2",classnames:"^2.3.1",codemirror:"^6.0.2",cronstrue:"^2.11.0","file-saver":"^2.0.5",filesize:"9.0.11",flat:"^5.0.2","html5-qrcode":"^2.3.8",i18next:"^22.4.9","i18next-http-backend":"^2.1.1",ignore:"^5.2.0",json5:"^2.2.3",liquidjs:"^10.0.0",lodash:"4.17.21","lru-cache":"6.0.0","markdown-it":"14.1.0","markdown-it-highlightjs":"3.3.1",mathjs:"^15.1.0",mermaid:"9.4.3",mime:"^4.0.4","mime-match":"^1.0.2","quill-image-resize-module-react":"^3.0.0","react-beautiful-dnd":"^13.1.0","react-device-detect":"2.2.3","react-drag-listview":"^0.1.9","react-error-boundary":"^4.0.10","react-helmet":"^6.1.0","react-hotkeys-hook":"^3.4.7","react-i18next":"^11.15.1","react-iframe":"~1.8.5","react-image-lightbox":"^5.1.4","react-intersection-observer":"9.14.0","react-js-cron":"^3.1.0","react-quill":"^2.0.0","react-router-dom":"^6.30.1","react-to-print":"^2.14.7","sanitize-html":"2.13.0","tabulator-tables":"^6.3.1","use-deep-compare-effect":"^1.8.1",vditor:"^3.10.3"},peerDependencies={react:">=18.0.0","react-dom":">=18.0.0","react-is":">=18.0.0"},devDependencies={"@testing-library/react":"^14.0.0","@types/markdown-it":"14.1.1","@types/markdown-it-highlightjs":"3.3.1","@types/react-big-calendar":"^1.6.4","axios-mock-adapter":"^1.20.0",dumi:"2.2.14","dumi-theme-nocobase":"^0.2.32"},clientPkg={name,version,license,main,module:module$1,types,dependencies,peerDependencies,devDependencies};function createDesignable(e){return new Designable(e)}const generateUid=e=>{e&&(e["x-uid"]||(e["x-uid"]=(0,import_shared.uid)()),Object.keys(e.properties||{}).forEach(t=>{generateUid(e.properties[t])}))},defaultWrap=e=>e,matchSchema=(e,t)=>{if(!(!e||!t)){for(const o in t)if(Object.prototype.hasOwnProperty.call(t,o)&&t[o]!==(e==null?void 0:e[o]))return!1;return!0}},splitWrapSchema=(e,t)=>{if(e["x-uid"]&&e["x-uid"]===t["x-uid"])return[null,e.toJSON()];const o=e.toJSON(),r=A(x({},o),{properties:{}});let i=null;const n=(l,a)=>{Object.keys(l||{}).forEach(c=>{const u=l[c];if(u["x-uid"]===t["x-uid"]){i=l[c];return}else a.properties[c]=A(x({},u),{properties:{}}),n(u==null?void 0:u.properties,a.properties[c])})};return n(o.properties,r),[r,i]},translate=e=>e;class Designable{constructor(t){R(this,"current"),R(this,"options"),R(this,"appVersion"),R(this,"events",{}),this.options=t,this.current=t.current,this.appVersion=t.appVersion}get model(){return this.options.model}get query(){return this.options.query}loadAPIClientEvents(){const{api:t,t:o=translate}=this.options;if(!t)return;const r=i=>{if(!i)return[];const n=Object.values(i.properties).length,l=[];return i.mapProperties(a=>{a["x-component-props"]=a["x-component-props"]||{},a["x-component-props"].width=100/n,a["x-uid"]&&l.push({"x-uid":a["x-uid"],"x-component-props":a["x-component-props"]})}),i["x-uid"]&&l.length?l:[]};this.on("insertAdjacent",i=>L(this,[i],function*({onSuccess:n,current:l,position:a,schema:c,wrap:u,wrapped:d,removed:m}){var p;let h=[];if((d==null?void 0:d["x-component"])==="Grid.Col"&&(h=h.concat(r(d.parent))),(m==null?void 0:m["x-component"])==="Grid.Col"&&(h=h.concat(r(m.parent))),this.refresh(),!l["x-uid"])return;const g=yield t.request({url:`/uiSchemas:insertAdjacent/${l["x-uid"]}?position=${a}`,method:"post",data:{schema:addAppVersion(c,this.appVersion),wrap:u}});h.length&&(yield t.request({url:"/uiSchemas:batchPatch",method:"post",data:h})),m!=null&&m["x-uid"]&&(yield t.request({url:`/uiSchemas:remove/${m["x-uid"]}`,method:"post"})),n==null||n((p=g==null?void 0:g.data)==null?void 0:p.data),import_antd.message.success(o("Saved successfully"),.2)})),this.on("patch",i=>L(this,[i],function*({schema:n}){this.refresh(),n!=null&&n["x-uid"]&&(yield t.request({url:"/uiSchemas:patch",method:"post",data:x({},n)}),import_antd.message.success(o("Saved successfully"),.2))})),this.on("initializeActionContext",i=>L(this,[i],function*({schema:n}){n!=null&&n["x-uid"]&&(yield t.request({url:"/uiSchemas:initializeActionContext",method:"post",data:x({},n)}))})),this.on("batchPatch",i=>L(this,[i],function*({schemas:n}){this.refresh(),yield t.request({url:"/uiSchemas:batchPatch",method:"post",data:n}),import_antd.message.success(o("Saved successfully"),.2)})),this.on("remove",i=>L(this,[i],function*({removed:n}){let l=[];(n==null?void 0:n["x-component"])==="Grid.Col"&&(l=r(n.parent)),this.refresh(),n!=null&&n["x-uid"]&&(yield t.request({url:`/uiSchemas:remove/${n["x-uid"]}`,method:"post"}),l.length&&(yield t.request({url:"/uiSchemas:batchPatch",method:"post",data:l})),import_antd.message.success(o("Saved successfully"),.2))}))}prepareProperty(t){t.type||(t.type="void"),t.name||(t.name=(0,import_shared.uid)()),this.current["x-uid"]&&generateUid(t)}on(t,o){this.events[t]||(this.events[t]=[]),this.events[t].push(o)}emit(t,...o){return L(this,null,function*(){if(!this.events[t])return;const[r,...i]=o;return Promise.all(this.events[t].map(n=>n.bind(this)(x({current:this.current},r),...i)))})}parentsIn(t){if(!t||!import_react.Schema.isSchemaInstance(t))return!1;let o=this.current;for(;o!=null&&o.parent;){if(o.parent===t)return!0;o=o.parent}return!1}refresh(t){const{refresh:o}=this.options;return o==null?void 0:o(t)}deepMerge(t){const o={title:"title",description:"description",default:"initialValue",readOnly:"readOnly",writeOnly:"editable",enum:"dataSource","x-pattern":"pattern","x-display":"display","x-validator":"validator","x-decorator":"decorator","x-component":"component","x-reactions":"reactions","x-content":"content","x-visible":"visible","x-hidden":"hidden","x-disabled":"disabled","x-editable":"editable","x-read-only":"readOnly"},r={"x-decorator-props":"decoratorProps","x-component-props":"componentProps","x-data":"data"};Object.keys(t).forEach(i=>{o[i]?(this.current[i]=t[i],this.updateModel(o[i],t[i])):r[i]?Object.keys(t[i]).forEach(n=>{(0,import_set.default)(this.current,[i,n],t[i][n]),this.updateModel([r[i],n],t[i][n])}):this.current[i]=t[i]}),this.emit("patch",{schema:t})}getSchemaAttribute(t,o){return(0,import_get.default)(this.current,t,o)}shallowMerge(t){const o={title:"title",description:"description",default:"initialValue",readOnly:"readOnly",writeOnly:"editable",enum:"dataSource","x-pattern":"pattern","x-display":"display","x-validator":"validator","x-decorator":"decorator","x-component":"component","x-reactions":"reactions","x-content":"content","x-visible":"visible","x-hidden":"hidden","x-disabled":"disabled","x-editable":"editable","x-read-only":"readOnly","x-decorator-props":"decoratorProps","x-component-props":"componentProps","x-data":"data"};Object.keys(t).forEach(r=>{this.current[r]=t[r],o[r]&&this.updateModel(o[r],t[r])}),this.emit("patch",{schema:t})}updateModel(t,o){const r=i=>{(0,import_set.default)(i,t,o)};this.model&&r(this.model),this.query&&this.query.take(r)}insertAdjacent(t,o,r={}){switch(t){case"beforeBegin":return this.insertBeforeBegin(o,r);case"afterBegin":return this.insertAfterBegin(o,r);case"beforeEnd":return this.insertBeforeEnd(o,r);case"afterEnd":return this.insertAfterEnd(o,r)}}recursiveRemoveIfNoChildren(t,o){if(!t)return;let r=t,i;const n=o==null?void 0:o.breakRemoveOn;for(;r;){if(typeof n=="function"){if(n(r))break}else if(matchSchema(r,n))break;if(Object.keys(r.properties||{}).length>0)break;r.parent&&(i=r.parent.removeProperty(r.name)),r=r.parent}return i}remove(t,o={}){const{breakRemoveOn:r,removeParentsIfNoChildren:i}=o,n=t||this.current;let l=n.parent.removeProperty(n.name);if(i){const a=this.recursiveRemoveIfNoChildren(n.parent,{breakRemoveOn:r});a&&(l=a)}return this.emit("remove",{removed:l})}removeWithoutEmit(t,o={}){const{breakRemoveOn:r,removeParentsIfNoChildren:i}=o,n=t||this.current;let l=n.parent.removeProperty(n.name);if(i){const a=this.recursiveRemoveIfNoChildren(n.parent,{breakRemoveOn:r});a&&(l=a)}return l}insertBeforeBeginOrAfterEnd(t,o={}){if(!import_react.Schema.isSchemaInstance(this.current)||!import_react.Schema.isSchemaInstance(t)||this.current.parent!==t.parent)return;let r=0,i=0;return this.current.parent.mapProperties((n,l,a)=>{this.current.name===l&&(i=a),t.name===l&&(r=a)}),r>i?this.insertBeforeBegin(t,o):this.insertAfterEnd(t,o)}insertBeforeBegin(t,o={}){if(!import_react.Schema.isSchemaInstance(this.current))return;const r={onSuccess:o.onSuccess},{wrap:i=defaultWrap,breakRemoveOn:n,removeParentsIfNoChildren:l}=o;if(import_react.Schema.isSchemaInstance(t)){if(this.parentsIn(t)){this.emit("error",{code:"parent_is_not_allowed",schema:t});return}t.parent.removeProperty(t.name),l&&(r.removed=this.recursiveRemoveIfNoChildren(t.parent,{breakRemoveOn:n}))}else t&&(t=(0,import_cloneDeep.default)(t));const a={};let c=!1,u=0,d=0;this.current.parent.mapProperties((f,_)=>{_===this.current.name&&(d=u,c=!0,++u),f["x-index"]=u,++u,c&&(a[_]=f,this.current.parent.removeProperty(_))}),this.prepareProperty(t);const m=i(t),p=this.current.parent.addProperty(m.name||(0,import_shared.uid)(),m);p["x-index"]=d,p.parent=this.current.parent,this.current.parent.setProperties(a);const[h,g]=splitWrapSchema(p,t);this.emit("insertAdjacent",x({position:"beforeBegin",schema:g,wrapped:m,wrap:h},r))}insertAfterBegin(t,o={}){if(!import_react.Schema.isSchemaInstance(this.current))return;const r={onSuccess:o.onSuccess},{wrap:i=defaultWrap,breakRemoveOn:n,removeParentsIfNoChildren:l}=o;if(import_react.Schema.isSchemaInstance(t)){if(this.parentsIn(t)){this.emit("error",{code:"parent_is_not_allowed",schema:t});return}t.parent.removeProperty(t.name),l&&(r.removed=this.recursiveRemoveIfNoChildren(t.parent,{breakRemoveOn:n}))}else t&&(t=(0,import_cloneDeep.default)(t));const a={};let c=1;this.current.mapProperties((h,g)=>{h["x-index"]=c,++c,a[g]=h}),this.current.properties={},this.prepareProperty(t);const u=i(t),d=this.current.addProperty(u.name||(0,import_shared.uid)(),u);d["x-index"]=0,d.parent=this.current,this.current.setProperties(a);const[m,p]=splitWrapSchema(d,t);this.emit("insertAdjacent",x({position:"afterBegin",schema:p,wrap:m,wrapped:u},r))}insertBeforeEnd(t,o={}){if(!import_react.Schema.isSchemaInstance(this.current))return;delete t["x-index"];const r={onSuccess:o.onSuccess},{wrap:i=defaultWrap,breakRemoveOn:n,removeParentsIfNoChildren:l}=o;if(import_react.Schema.isSchemaInstance(t)){if(this.parentsIn(t)){this.emit("error",{code:"parent_is_not_allowed",schema:t});return}t.parent.removeProperty(t.name),l&&(r.removed=this.recursiveRemoveIfNoChildren(t.parent,{breakRemoveOn:n}))}else t&&(t=(0,import_cloneDeep.default)(t));this.prepareProperty(t);const a=i(t),c=this.current.addProperty(a.name||(0,import_shared.uid)(),a);c.parent=this.current;const[u,d]=splitWrapSchema(c,t);return this.emit("insertAdjacent",x({position:"beforeEnd",schema:d,wrap:u,wrapped:a},r))}insertAfterEnd(t,o={}){if(!import_react.Schema.isSchemaInstance(this.current))return;const r={onSuccess:o==null?void 0:o.onSuccess},{wrap:i=defaultWrap,breakRemoveOn:n,removeParentsIfNoChildren:l}=o;let a=0,c=0,u=!1;const d={};if(this.current.parent.mapProperties((f,_)=>{f["x-index"]=a,_===this.current.name&&(++a,c=a,u=!0),++a,u&&_!==this.current.name&&(d[_]=f,this.current.parent.removeProperty(_))}),import_react.Schema.isSchemaInstance(t)){if(this.parentsIn(t)){this.emit("error",{code:"parent_is_not_allowed",schema:t});return}t.parent.removeProperty(t.name),l&&(r.removed=this.recursiveRemoveIfNoChildren(t.parent,{breakRemoveOn:n})),t.parent=null}else t&&(t=(0,import_cloneDeep.default)(t));this.prepareProperty(t);const m=i(t),p=this.current.parent.addProperty(m.name||(0,import_shared.uid)(),m);p.parent=this.current.parent,p["x-index"]=c,this.current.parent.setProperties(d);const[h,g]=splitWrapSchema(p,t);this.emit("insertAdjacent",x({position:"afterEnd",schema:g,wrap:h,wrapped:m},r))}}function useFindComponent(){const e=(0,import_react2.useContext)(import_react.SchemaOptionsContext),t=(0,import_react2.useMemo)(()=>(e==null?void 0:e.components)||{},[e]);return o=>{if(!o)return null;if(typeof o!="string")return o;const r=(0,import_get.default)(t,o);return r||console.error(`[nocobase]: Component "${o}" not found`),r}}function useDesignable(){const{designable:e,setDesignable:t,refresh:o,reset:r}=(0,import_react2.useContext)(SchemaComponentContext),i=(0,import_react2.useContext)(import_react.SchemaOptionsContext),n=(0,import_react2.useMemo)(()=>(i==null?void 0:i.components)||{},[i]),l=(0,import_react2.useMemo)(()=>()=>(0,import_jsx_runtime.jsx)(import_jsx_runtime.Fragment,{}),[]),a=(0,import_ahooks.useUpdate)(),c=useRefreshFieldSchema(),u=useRefreshComponent(),d=(0,import_react2.useCallback)(v=>{o==null||o(),a(),c==null||c(v),u==null||u()},[o,a,c,u]),m=(0,import_react.useField)(),p=(0,import_react.useFieldSchema)(),h=useAPIClient(),{t:g}=(0,import_react_i18next.useTranslation)(),f=(0,import_react2.useMemo)(()=>createDesignable({t:g,api:h,refresh:d,current:p,model:m,appVersion:clientPkg.version}),[g,h,d,p,m]);(0,import_react2.useEffect)(()=>{f.loadAPIClientEvents()},[f]);const{isMobileLayout:_}=useMobileLayout();return{dn:f,designable:_?!1:e,reset:r,refresh:d,setDesignable:t,DesignableBar:l,findComponent:(0,import_react2.useCallback)(v=>{var b;if(!v)return null;if(typeof v!="string")return v;const F=(0,import_get.default)(n,v);return(b=F==null?void 0:F[LAZY_COMPONENT_KEY])!=null?b:F},[import_get.default]),on:f.on.bind(f),patch:(0,import_react2.useCallback)((v,b)=>{const F=y=>{Object.keys(y).forEach(C=>{const S=y[C];C==="title"&&(m.title=S,p.title=S),C==="x-decorator-props"&&(m.decoratorProps||(m.decoratorProps={}),p["x-decorator-props"]||(p["x-decorator-props"]={}),Object.keys(S).forEach(P=>{m.decoratorProps[P]=S[P],p["x-decorator-props"][P]=S[P]})),C==="x-component-props"&&(m.componentProps||(m.componentProps={}),p["x-component-props"]||(p["x-component-props"]={}),Object.keys(S).forEach(P=>{m.componentProps[P]=S[P],p["x-component-props"][P]=S[P]}))})};if(typeof v=="string"){const y={};return(0,import_set.default)(y,v,b),F(y)}F(v),d()},[f]),shallowMerge:(0,import_react2.useCallback)(v=>{f.shallowMerge(v)},[f]),deepMerge:(0,import_react2.useCallback)(v=>{f.deepMerge(v)},[f]),remove:(0,import_react2.useCallback)((v,b)=>{f.remove(v,b)},[f]),insertAdjacent:(0,import_react2.useCallback)((v,b,F)=>{f.insertAdjacent(v,b,F)},[f]),insertBeforeBegin:(0,import_react2.useCallback)(v=>{f.insertBeforeBegin(v)},[f]),insertAfterBegin:(0,import_react2.useCallback)(v=>{f.insertAfterBegin(v)},[f]),insertBeforeEnd:(0,import_react2.useCallback)(v=>{f.insertBeforeEnd(v)},[f]),insertAfterEnd:(0,import_react2.useCallback)(v=>{f.insertAfterEnd(v)},[f])}}const DefaultSchemaToolbar=()=>null;DefaultSchemaToolbar.isNullComponent=!0;const useDesigner=()=>{const{designable:e}=useDesignable(),t=(0,import_react.useFieldSchema)(),o=(0,import_react2.useMemo)(()=>t["x-designer"]||t["x-toolbar"]?t["x-designer"]||t["x-toolbar"]:t["x-settings"]?SchemaToolbar:DefaultSchemaToolbar,[t]),r=useComponent(o);return e&&r||DefaultSchemaToolbar},useFieldProps$1=e=>{const t=(0,import_react2.useContext)(import_react.SchemaOptionsContext),o=(0,import_react2.useContext)(import_react.SchemaExpressionScopeContext),r=(0,import_react2.useRef)();return r.current=o,e.toFieldProps(A(x({},t),{get scope(){return x(x({},t.scope),r.current)}}))};function useSchemaComponentContext(){return(0,import_react2.useContext)(SchemaComponentContext)}const useFieldComponentOptions=()=>{var e;const{getCollectionJoinField:t,getCollection:o}=useCollectionManager_deprecated(),r=(0,import_react.useFieldSchema)(),{getField:i}=useCollection_deprecated(),n=i(r.name)||t(r["x-collection-field"]),{t:l}=(0,import_react_i18next.useTranslation)(),{label:a}=((e=r["x-component-props"])==null?void 0:e.fieldNames)||{};return(0,import_react2.useMemo)(()=>{if(!n||!(n!=null&&n.interface)||!["o2o","oho","obo","o2m","linkTo","m2o","m2m"].includes(n.interface))return;const c=o(n.target);if((c==null?void 0:c.template)==="file")return[{label:l("Record picker"),value:"CollectionField"},{label:l("Select"),value:"AssociationSelect"}];switch(n.interface){case"o2m":return[{label:l("Record picker"),value:"CollectionField"},{label:l("Subtable"),value:"TableField"},{label:l("Select"),value:"AssociationSelect"}];case"m2o":case"m2m":case"linkTo":return[{label:l("Record picker"),value:"CollectionField"},{label:l("Select"),value:"AssociationSelect"}];default:return[{label:l("Record picker"),value:"CollectionField"},{label:l("Subform"),value:"FormField"},{label:l("Select"),value:"AssociationSelect"}]}},[l,n==null?void 0:n.interface,a])},useFieldTitle=()=>{var e;const t=(0,import_react.useField)(),o=(0,import_react.useFieldSchema)(),r=useCollection(),i=useCollectionManager(),n=(r==null?void 0:r.getField(o.name))||(i==null?void 0:i.getCollectionField(o["x-collection-field"])),l=useCompile();(0,import_react2.useEffect)(()=>{var a;t!=null&&t.title||(t.title=l((a=n==null?void 0:n.uiSchema)==null?void 0:a.title))},[(e=n==null?void 0:n.uiSchema)==null?void 0:e.title])},useDef$4=()=>({}),useProps=(e={})=>{const t=e,{useProps:o=useDef$4}=t,r=ee(t,["useProps"]);let i=o;typeof o!="function"&&(i=useDef$4);const n=i();return x(x({},r),n)};function useParsedFilter({filterOption:e,onFilterChange:t}){const{parseFilter:o,findVariable:r}=useParseDataScopeFilter(),i=JSON.stringify(e),n=(0,import_react2.useRef)(e),l=(0,import_react2.useRef)(t),[a,c]=(0,import_react2.useState)({}),[u,d]=(0,import_react2.useState)(()=>e?null:i),m=!!e&&u!==i;return n.current=e,l.current=t,(0,import_react2.useEffect)(()=>{const p=n.current;if(!p){c({}),d(i);return}let h=!1;const g=()=>L(this,null,function*(){var v;const b=yield o(p);h||(c(b),d(i),(v=l.current)==null||v.call(l,b))});g();const f=import_lodash.default.debounce(g,DEBOUNCE_WAIT),_=(0,import_reactive.reaction)(()=>(0,import_client.flatten)(p,{breakOn({key:v}){return v.startsWith("$")&&v!=="$and"&&v!=="$or"},transformValue(v){if(!isVariable$1(v))return v;const b=getVariableName(v),F=r(b);let y=null;const C=getPath(v).split(".");return C.forEach((S,P)=>{const j=C.slice(0,P+1).join("."),I=(0,import_client.getValuesByPath)({[b]:(F==null?void 0:F.ctx)||{}},j);import_lodash.default.isEmpty(I)||(y=I)}),y}}),f,{equals:import_lodash.default.isEqual});return()=>{h=!0,f.cancel(),_()}},[i,r,o]),{filter:a,parseVariableLoading:m}}const useParentRecordCommon=e=>{const t=useCollectionRecordData();if(e)return t},useTableBlockDecoratorProps=e=>{var t;const{params:o,parseVariableLoading:r}=useTableBlockParams(e),i=useParentRecordCommon(e.association),n=(t=useDataSourceManager().getDataSource(e.dataSource))==null?void 0:t.collectionManager.getCollection(e.collection);return{params:o,parentRecord:i,parseVariableLoading:r,rowKey:(n==null?void 0:n.filterTargetKey)||"id"}};function useTableBlockParams(e){var t;const o=(0,import_react.useFieldSchema)(),{filter:r,parseVariableLoading:i}=useParsedFilter({filterOption:(t=e.params)==null?void 0:t.filter});return{params:(0,import_react2.useMemo)(()=>{const n=e.params||{},{dragSortBy:l}=(o==null?void 0:o["x-decorator-props"])||{};return e.dragSort&&l&&(n.sort=l),A(x({},n),{filter:r})},[o,r,e.dragSort,e.params]),parseVariableLoading:i}}const key="__isNewRecord__",isNewRecord=e=>(0,import_reactive.untracked)(()=>!!(e!=null&&e[key])),markRecordAsNew=e=>{if(!(0,import_lodash.isObject)(e))throw new Error("markRecordAsNew: record must be an object");return e[key]=!0,e},useDefaultLoading=()=>{var e;return!!((e=useDataBlockRequest())!=null&&e.loading)},withSkeletonComponent=(e,t)=>{const{useLoading:o=useDefaultLoading,displayName:r,SkeletonComponent:i=import_antd.Skeleton}=t||{},n=import_react2.default.memo(l=>{const a=o(),c=(0,import_react2.useRef)(!1),u=(0,import_react2.useDeferredValue)(a);return!c.current&&u?(0,import_jsx_runtime.jsx)(i,{}):(c.current=!0,(0,import_jsx_runtime.jsx)(e,x({},l)))});return n.displayName=r||`${e.displayName}(withSkeletonComponent)`||`${e.name}(withSkeletonComponent)`,n},getActionValue=(e,t)=>{const o=r=>(r==null?void 0:r.mode)==="constant"?r.value:null;switch(!0){case[ActionType.Color,ActionType.BackgroundColor,ActionType.TextAlign,ActionType.FontSize,ActionType.FontWeight,ActionType.FontStyle].includes(e):return o(t);default:return null}},getSatisfiedActions=(e,t)=>L(void 0,[e,t],function*({rules:o,variables:r,localVariables:i},n){return(yield Promise.all(o.filter(l=>!l.disabled).map(l=>L(void 0,null,function*(){return(yield conditionAnalyses({ruleGroup:l.condition,variables:r,localVariables:i,conditionType:l.conditionType},n))?l:null})))).filter(Boolean).map(l=>l.actions).flat()}),getSatisfiedValues=(e,t)=>L(void 0,[e,t],function*({rules:o,variables:r,localVariables:i},n){return(yield getSatisfiedActions({rules:o,variables:r,localVariables:i},n)).map(l=>A(x({},l),{value:getActionValue(l.operator,l.value)}))}),getSatisfiedValueMap=(e,t)=>L(void 0,[e,t],function*({rules:o,variables:r,localVariables:i},n){return(yield getSatisfiedValues({rules:o,variables:r,localVariables:i},n)).reduce((l,a)=>A(x({},l),{[a.operator]:a.value}),{})});function useSatisfiedActionValues({formValues:e,category:t="default",rules:o,schema:r,form:i}){const[n,l]=(0,import_react2.useState)({}),a=(0,import_react.useFieldSchema)(),c=useVariables$1(),u=useLocalVariables$1({currentForm:{values:e}}),d=r??a,m=o??(d[LinkageRuleDataKeyMap[t]]||(d==null?void 0:d.parent[LinkageRuleDataKeyMap[t]])),p=useApp(),h=(0,import_react2.useCallback)(()=>{m&&e&&getSatisfiedValueMap({rules:m,variables:c,localVariables:u},p.jsonLogic).then(g=>{(0,import_lodash.isEmpty)(g)?l({}):l(g)}).catch(g=>{throw new Error(g.message)})},[c,u,m,e]);return(0,import_react2.useEffect)(()=>{if(h(),i){const g=(0,import_shared.uid)();return i.addEffects(g,()=>{(0,import_core.onFormValuesChange)(()=>{h()})}),()=>{i.removeEffects(g)}}},[i,h,e]),{valueMap:n}}const GetStyleRules=import_react2.default.memo(({record:e,schema:t,onStyleChange:o})=>{const{valueMap:r}=useSatisfiedActionValues({formValues:e,category:"style",schema:t});return(0,import_react2.useEffect)(()=>{o(r)},[o,r]),null});GetStyleRules.displayName="GetStyleRules";const opacityStyle={opacity:.5},containerStyle={position:"relative"},spinStyle={display:"flex",alignItems:"center",justifyContent:"center",position:"absolute",left:0,right:0,height:"100%",maxHeight:400,zIndex:1e3},displayNone$3={display:"none"},HighPerformanceSpin=import_react2.default.memo(e=>(0,import_jsx_runtime.jsxs)("div",{style:containerStyle,children:[(0,import_jsx_runtime.jsx)(import_antd.Spin,A(x({},import_lodash.default.omit(e,"children")),{style:e.spinning?spinStyle:displayNone$3})),(0,import_jsx_runtime.jsx)("div",{style:e.spinning?opacityStyle:null,children:e.children})]}));HighPerformanceSpin.displayName="HighPerformanceSpin";var FilterBlockType=(e=>(e[e.FORM=0]="FORM",e[e.TABLE=1]="TABLE",e[e.TREE=2]="TREE",e[e.COLLAPSE=3]="COLLAPSE",e))(FilterBlockType||{});const mergeFilter=(e,t="$and")=>{const o=e.filter(r=>{if(r&&typeof r=="object"&&!Array.isArray(r))return Object.values(r).filter(i=>i!==void 0).length});return o.length===0?{}:o.length===1?o[0]:{[t]:o}},getSupportFieldsByAssociation=(e,t)=>{var o;return(o=t.associatedFields)==null?void 0:o.filter(r=>e==null?void 0:e.some(i=>i===r.target))},getSupportFieldsByForeignKey=(e,t)=>{var o;return(o=t.foreignKeyFields)==null?void 0:o.filter(r=>e.fields.some(i=>i.type!=="belongsTo"&&i.foreignKey===r.name&&i.target===r.collectionName))},useSupportedBlocks=e=>{const{getDataBlocks:t}=useFilterBlock(),o=(0,import_react.useFieldSchema)(),r=useCollection(),{getAllCollectionsInheritChain:i}=useAllCollectionsInheritChainGetter();if(e===0||e===3)return t().filter(n=>isSameCollection(n.collection,r));if(e===1||e===2)return t().filter(n=>{var l,a;return o["x-uid"]!==n.uid&&(isSameCollection(n.collection,r)||((l=getSupportFieldsByAssociation(i(r.name,r.dataSource),n))==null?void 0:l.length)||((a=getSupportFieldsByForeignKey(r,n))==null?void 0:a.length))})},transformToFilter=(e,t,o,r)=>(e=(0,import_client.flatten)(e,{breakOn({value:i,path:n}){if(["$match","$notMatch","$anyOf","$noneOf","$childIn","$childNotIn","$dateBetween","$in","$notIn"].includes(t[n]))return!0;const l=o(`${r}.${n}`);if(["datetime","datetimeNoTz","date","unixTimestamp","createdAt","updatedAt"].includes(l==null?void 0:l.interface))return!0;if(l!=null&&l.target){if(Array.isArray(i))return!0;const a=l.targetKey||"id";if(i&&i[a]!=null)return!0}return!1}}),{$and:Object.keys(e).map(i=>{let n=import_lodash.default.get(e,i);const l=o(`${r}.${i}`);return l!=null&&l.target&&["hasOne","hasMany","belongsTo","belongsToMany","belongsToArray"].includes(l.type)&&(n=(0,import_client.getValuesByPath)(n,l.targetKey||"id"),i=`${i}.${l.targetKey||"id"}`,(l==null?void 0:l.interface)==="chinaRegion"&&(n=import_lodash.default.last(n))),!n&&n!==0&&n!==!1?null:{[i]:{[t[i]||"$eq"]:n}}}).filter(Boolean)}),useAssociatedFields=()=>{var e;return((e=useCollection())==null?void 0:e.fields.filter(t=>isAssocField(t)))||[]},isAssocField=e=>["o2o","oho","obo","m2o","createdBy","updatedBy","o2m","m2m","linkTo","chinaRegion","mbm"].includes(e==null?void 0:e.interface),isSameCollection=(e,t)=>e.name===t.name&&e.dataSource===t.dataSource,useFilterAPI=()=>{const e=(0,import_react.useFieldSchema)(),{getDataBlocks:t}=useFilterBlock(),{targets:o,uid:r}=findFilterTargets(e),i=t(),[n,l]=(0,import_react2.useState)(()=>o&&o.some(u=>i.some(d=>d.uid===u.uid))),a=Object.keys(o||{});(0,import_react2.useEffect)(()=>{l(o&&o.some(u=>i.some(d=>d.uid===u.uid)))},[a.length,o,i]);const c=(0,import_react2.useCallback)((u,d="id",m="$eq")=>{const p=i.find(h=>h.uid===e.parent["x-uid"]);i.forEach(h=>{var g,f,_,v;let b=d;const F=o.find(P=>P.uid===h.uid);if(!F)return;import_lodash.default.isFunction(u)&&(u=u(F,h,getSourceKey$1(p,F.field))),import_lodash.default.isFunction(d)&&(b=d(F,h)),import_lodash.default.isFunction(m)&&(m=m(F));const y=((g=h.service.params)==null?void 0:g[0])||{},C=((_=(f=h.service.params)==null?void 0:f[1])==null?void 0:_.filters)||{};if(u!=null)C[r]={$and:[{[b]:{[m]:u}}]};else if((v=h.clearSelection)==null||v.call(h),delete C[r],h.dataLoadingMode==="manual")return h.clearData();const S=mergeFilter([...Object.values(C).map(P=>removeNullCondition(P)),h.defaultFilter]);h.doFilter(A(x({},y),{page:1,filter:S}),{filters:C})})},[i,o,r,e]);return{isConnected:n,doFilter:c}},isInFilterFormBlock=e=>{for(;e;){if(e["x-filter-targets"])return e["x-decorator"]==="FilterFormBlockProvider";e=e.parent}return!1};function getSourceKey$1(e,t){var o,r,i;const n=(o=e==null?void 0:e.associatedFields)==null?void 0:o.find(l=>l.foreignKey===t);return(n==null?void 0:n.sourceKey)||((i=(r=t==null?void 0:t.split)==null?void 0:r.call(t,"."))==null?void 0:i[1])}const AssociationFieldContext=(0,import_react2.createContext)({});AssociationFieldContext.displayName="AssociationFieldContext";const useInsertSchema$1=e=>{const t=(0,import_react.useFieldSchema)(),{insertAfterBegin:o}=useDesignable(),{isMobileLayout:r}=useMobileLayout();return(0,import_react2.useCallback)(i=>{r||t.reduceProperties((n,l)=>l["x-component"]==="AssociationField."+e?l:n,null)||o((0,import_cloneDeep.default)(i))},[e,t,o,r])};function useAssociationFieldContext(){return(0,import_react2.useContext)(AssociationFieldContext)}function useServiceOptions$1(e){var t,o,r,i,n,l,a,c,u,d;const{action:m="list",service:p,useOriginalFilter:h}=e,g=(0,import_react.useFieldSchema)(),f=(0,import_react.useField)(),{getField:_}=useCollection_deprecated(),{getCollectionJoinField:v}=useCollectionManager_deprecated(),b=useRecord(),{isNew:F}=useCollectionRecord()||{},y=((0,import_lodash.isString)((r=(o=(t=g==null?void 0:g["x-component-props"])==null?void 0:t.service)==null?void 0:o.params)==null?void 0:r.filter)?(l=(n=(i=f.componentProps)==null?void 0:i.service)==null?void 0:n.params)==null?void 0:l.filter:(u=(c=(a=g==null?void 0:g["x-component-props"])==null?void 0:a.service)==null?void 0:c.params)==null?void 0:u.filter)||((d=p==null?void 0:p.params)==null?void 0:d.filter),{filter:C}=useParsedFilter({filterOption:y,onFilterChange:()=>{F&&f.reset()}}),S=(0,import_react2.useMemo)(()=>_(g.name)||v(g==null?void 0:g["x-collection-field"]),[g]),P=b==null?void 0:b[S==null?void 0:S.sourceKey],j=(0,import_react2.useMemo)(()=>{const I=["oho","o2m"].includes(S==null?void 0:S.interface);return mergeFilter([mergeFilter([I&&!isInFilterFormBlock(g)&&S!=null&&S.foreignKey&&!h?{[S.foreignKey]:{$is:null}}:null,C]),I&&P!==void 0&&P!==null&&!isInFilterFormBlock(g)&&S!=null&&S.foreignKey&&!h?{[S.foreignKey]:{$eq:P}}:null],"$or")},[S==null?void 0:S.interface,S==null?void 0:S.foreignKey,g,C,P,h]);return(0,import_react2.useMemo)(()=>A(x({resource:S==null?void 0:S.target,action:m},p),{params:A(x({},p==null?void 0:p.params),{filter:j})}),[S==null?void 0:S.target,m,j,p])}const useFieldNames$1=(e={})=>{var t,o,r,i,n;const l=(0,import_react.useFieldSchema)(),a=((i=(r=(o=(t=l["x-component-props"])==null?void 0:t.field)==null?void 0:o.uiSchema)==null?void 0:r["x-component-props"])==null?void 0:i.fieldNames)||((n=l["x-component-props"])==null?void 0:n.fieldNames)||e.fieldNames;return x({label:"label",value:"value"},a)},SubFormContext=(0,import_react2.createContext)(null);SubFormContext.displayName="SubFormContext";const SubFormProvider=e=>{const t=(0,import_react2.useContext)(SubFormContext),{value:o,collection:r,fieldSchema:i,parent:n,skip:l}=e.value,a=(0,import_react2.useMemo)(()=>import_lodash.default.omitBy({value:o,collection:r,fieldSchema:i,skip:l,parent:n||(t!=null&&t.skip?t.parent:t)},import_lodash.default.isUndefined),[o,r,i,l,n,t]);return(0,import_jsx_runtime.jsx)(SubFormContext.Provider,{value:a,children:e.children})},useSubFormValue=()=>{const{value:e,collection:t,fieldSchema:o,parent:r}=(0,import_react2.useContext)(SubFormContext)||{};return{formValue:e,collection:t,fieldSchema:o,parent:r}},TableUidContext=(0,import_react2.createContext)(null),useColumnSettings=e=>{const{t}=(0,import_react_i18next.useTranslation)(),o=(0,import_react2.useContext)(TableUidContext),r=`nocobase_table_column_settings_${o}`,i=(0,import_react2.useCallback)(()=>{try{const a=localStorage.getItem(r);return a?JSON.parse(a):null}catch(a){return console.warn("Failed to parse table column settings from localStorage:",a),null}},[r]),n=(0,import_react2.useCallback)(a=>{try{const c=JSON.stringify(a);localStorage.setItem(r,c);const u=new CustomEvent("nocobase-table-settings-changed",{detail:{key:r,tableId:o,settings:a}});window.dispatchEvent(u)}catch(c){console.warn("Failed to save table column settings to localStorage:",c),import_antd.message.error(t("Failed to save table settings"))}},[r,o,t]),l=(0,import_react2.useCallback)(()=>{try{localStorage.removeItem(r);const a=new CustomEvent("nocobase-table-settings-changed",{detail:{key:r,tableId:o,settings:null}});window.dispatchEvent(a)}catch(a){console.warn("Failed to clear table column settings from localStorage:",a),import_antd.message.error(t("Failed to clear table settings"))}},[r,o,t]);return{getSettings:i,saveSettings:n,clearSettings:l}},useTableColumnIntegration=(e,t=!0)=>{const o=(0,import_react2.useContext)(TableUidContext),{getSettings:r}=useColumnSettings(),[i,n]=(0,import_react2.useState)(0);(0,import_react2.useEffect)(()=>{const a=c=>{const{key:u,tableId:d}=c.detail;(u.includes(o)||d===o)&&n(m=>m+1)};return window.addEventListener("nocobase-table-settings-changed",a),()=>{window.removeEventListener("nocobase-table-settings-changed",a)}},[o]);const l=(0,import_react2.useMemo)(()=>r(),[r,i]);return{columns:(0,import_react2.useMemo)(()=>{if(!t||!l||l.length===0)return e;const a=new Map;l.forEach(p=>{a.set(p.key,p)});const c=e.map(p=>{const h=a.get(p.key);if(h){const g=p.columnHidden||!h.visible,f=h.width||p.width,_=h.fixed||p.fixed;return A(x({},p),{columnHidden:g,fixed:_,width:f,_orderIndex:h.order})}return p}),u=[],d=[];c.forEach(p=>{p._orderIndex!==void 0?u.push(p):d.push(p)}),u.sort((p,h)=>(p._orderIndex||0)-(h._orderIndex||0));const m=[...u,...d];return m.forEach(p=>{delete p._orderIndex}),m},[e,l])}},TableSkeleton=({rows:e=5,columns:t=6})=>{const{token:o}=useToken$1(),r=o.controlHeight*2.06,i=o.controlHeight*1.75,n=(0,import_react2.useMemo)(()=>import_css.css`
|
|
66
66
|
&.skeleton-wrapper {
|
|
67
67
|
width: 100%;
|
|
68
68
|
background: ${o.colorBgContainer};
|
|
@@ -408,7 +408,7 @@ ${JSON.stringify(q,null,2)}`)},[u,c,a,i,r,P,t,l,n,g,o,f,F,j,y,C,h]),T=(0,import_
|
|
|
408
408
|
margin-bottom: 0;
|
|
409
409
|
line-height: 1.5;
|
|
410
410
|
font-size: 90%;
|
|
411
|
-
`;ReadPretty$c.JSON=e=>{const t=(0,import_builtins.usePrefixCls)("json",e),o=(0,import_react2.useMemo)(()=>{var i;return e.value!=null?JSON.stringify(e.value,null,(i=e.space)!=null?i:2):""},[e.space,e.value]),r=(0,import_jsx_runtime.jsx)("pre",{className:(0,import_css.cx)(t,e.className,JSONClassName$1),style:e.style,children:o});return e.ellipsis?(0,import_jsx_runtime.jsx)(EllipsisWithTooltip$1,{ellipsis:e.ellipsis,popoverContent:r,children:o}):r};ReadPretty$c.Input=withPopupWrapper(ReadPretty$c.Input);ReadPretty$c.TextArea=withPopupWrapper(ReadPretty$c.TextArea);ReadPretty$c.Html=withPopupWrapper(ReadPretty$c.Html);ReadPretty$c.Preview=withPopupWrapper(ReadPretty$c.Preview);ReadPretty$c.JSON=withPopupWrapper(ReadPretty$c.JSON);function useScanner({onScannerSizeChanged:e,elementId:t,onScanSuccess:o}){const[r,i]=(0,import_react2.useState)(),{t:n}=(0,import_react_i18next.useTranslation)(),l=(0,import_react2.useMemo)(()=>{const d=Math.max(document.documentElement.clientWidth||0,window.innerWidth||0),m=Math.max(document.documentElement.clientHeight||0,window.innerHeight||0);return{width:d,height:m}},[]),a=(0,import_react2.useCallback)(d=>L(this,null,function*(){return d.start({facingMode:"environment"},{fps:10,qrbox(m,p){return e({width:m,height:p}),{width:l.width,height:l.height}}},m=>{o&&o(m)},void 0)}),[e,l,o]),c=(0,import_react2.useCallback)(d=>L(this,null,function*(){const m=d.getState();if([import_html5_qrcode.Html5QrcodeScannerState.SCANNING,import_html5_qrcode.Html5QrcodeScannerState.PAUSED].includes(m))return d.stop()}),[]),u=(0,import_react2.useCallback)(d=>L(this,null,function*(){yield c(r);try{const{decodedText:m}=yield r.scanFileV2(d,!1);o&&o(m)}catch{alert(n("QR code recognition failed, please scan again")),a(r)}}),[c,r,n,a,o]);return(0,import_react2.useEffect)(()=>{if(!document.getElementById(t)||r)return;const d=new import_html5_qrcode.Html5Qrcode(t);return i(d),a(d),()=>{c(d)}},[t]),{startScanCamera:a,startScanFile:u}}function ScanBox({style:e={}}){const t={position:"absolute",backgroundColor:"rgb(255, 255, 255)"};return(0,import_jsx_runtime.jsxs)("div",{id:"qr-scan-box",style:x({boxSizing:"border-box",inset:"0px"},e),children:[(0,import_jsx_runtime.jsx)("div",{style:x({width:"40px",height:"5px",top:"-5px",left:"0px"},t)}),(0,import_jsx_runtime.jsx)("div",{style:x({width:"40px",height:"5px",top:"-5px",right:"0px"},t)}),(0,import_jsx_runtime.jsx)("div",{style:x({width:"40px",height:"5px",bottom:"-5px",left:"0px"},t)}),(0,import_jsx_runtime.jsx)("div",{style:x({width:"40px",height:"5px",bottom:"-5px",right:"0px"},t)}),(0,import_jsx_runtime.jsx)("div",{style:x({width:"5px",height:"45px",top:"-5px",left:"-5px"},t)}),(0,import_jsx_runtime.jsx)("div",{style:x({width:"5px",height:"45px",bottom:"-5px",left:"-5px"},t)}),(0,import_jsx_runtime.jsx)("div",{style:x({width:"5px",height:"45px",top:"-5px",right:"-5px"},t)}),(0,import_jsx_runtime.jsx)("div",{style:x({width:"5px",height:"45px",bottom:"-5px",right:"-5px"},t)})]})}const qrcodeEleId="qrcode-scanner",QRCodeScannerInner=({visible:e,onClose:t,onScanSuccess:o,containerRef:r})=>{const i=(0,import_react2.useRef)(null),{t:n}=(0,import_react_i18next.useTranslation)("block-workbench"),[l,a]=(0,import_react2.useState)(!1),[c,u]=(0,import_react2.useState)({width:0,height:0}),d=Math.max(document.documentElement.clientWidth||0,window.innerWidth||0),m=Math.max(document.documentElement.clientHeight||0,window.innerHeight||0),{startScanFile:p}=useScanner({elementId:qrcodeEleId,onScannerSizeChanged:u,onScanSuccess:f=>{o(f),t()}});if((0,import_react2.useEffect)(()=>{e&&import_html5_qrcode.Html5Qrcode.getCameras().then(f=>{f.length>0?a(!0):(alert(n("No camera device detected")),t())}).catch(f=>{var _;const v={NotFoundError:n("No camera device detected"),NotAllowedError:n("You have not granted permission to use the camera")};alert((_=v[f.name])!=null?_:f.message),t()})},[e,n,t]),(0,import_react2.useEffect)(()=>{if(!e||!c.width||!c.height)return;const f=document.querySelector("video");if(f){const _=m/c.height*c.width;f.style.height=`${m}px`,f.style.width=`${_}px`,r.current&&(r.current.style.left=`${(d-_)/2}px`,r.current.style.position="absolute")}},[c,e]),!e||!l)return null;const h=()=>{var f;(f=i.current)==null||f.click()},g=f=>{var _;const v=(_=f.target.files)==null?void 0:_[0];v&&v.size<1024*1024?p(v):alert(n("The image size is too large. Please compress it to below 1MB before uploading"))};return(0,import_jsx_runtime.jsxs)("div",{children:[(0,import_jsx_runtime.jsx)(ScanBox,{style:{position:"fixed",top:`${(m-d*.6)/2}px`,left:`${(d-d*.6)/2}px`,width:`${d*.6}px`,height:`${d*.6}px`}}),(0,import_jsx_runtime.jsx)(import_icons.LeftOutlined,{onClick:t,style:{position:"absolute",top:"22px",left:"20px",zIndex:1003,color:"white",fontSize:"1.8em",fontWeight:"bold"}}),(0,import_jsx_runtime.jsx)("div",{style:{position:"absolute",top:"20px",left:0,right:0,color:"white",fontSize:"1.5em",textAlign:"center",zIndex:1002},children:n("Scan QR code")}),(0,import_jsx_runtime.jsx)("div",{style:{position:"absolute",bottom:"20px",left:"20px",padding:"10px 60px"},children:(0,import_jsx_runtime.jsxs)("div",{style:{color:"white",width:"40px",display:"flex",flexDirection:"column",alignItems:"center"},children:[(0,import_jsx_runtime.jsx)(import_icons.FileImageOutlined,{style:{fontSize:"2em",fontWeight:"bold",zIndex:1003},onClick:h}),n("Album"),(0,import_jsx_runtime.jsx)("input",{type:"file",accept:"image/*",ref:i,onChange:g,style:{display:"none"}})]})})]})},QRCodeScanner=e=>{const t=(0,import_react2.useRef)(null),o=(0,import_jsx_runtime.jsxs)("div",{style:{position:"fixed",inset:0,backgroundColor:"black",zIndex:9999,overflow:"hidden"},children:[(0,import_jsx_runtime.jsx)("div",{ref:t,id:qrcodeEleId,style:{position:"absolute"}}),(0,import_jsx_runtime.jsx)(QRCodeScannerInner,A(x({},e),{containerRef:t}))]});return import_react_dom.default.createPortal(o,document.body)},ScanInput=({value:e,onChange:t,disabled:o,disableManualInput:r})=>{const{t:i}=(0,import_react_i18next.useTranslation)(),[n,l]=(0,import_react2.useState)(!1),a=(0,import_react2.useRef)(null),c=u=>{l(!1),u&&(t==null||t(u),setTimeout(()=>{var d;return(d=a.current)==null?void 0:d.focus()},100))};return(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsx)(import_antd.Input,{ref:a,value:e,onChange:u=>{t==null||t(u)},disabled:o,readOnly:r,addonAfter:(0,import_jsx_runtime.jsx)(import_icons.ScanOutlined,{onPointerDown:u=>u.preventDefault(),onClick:()=>{var u;(u=a.current)==null||u.blur(),l(!0)},title:i("Scan to input")})}),n&&(0,import_jsx_runtime.jsx)(QRCodeScanner,{visible:n,onScanSuccess:c,onClose:()=>{l(!1)}})]})};function InputInner(e){const t=e,{onChange:o,trim:r,enableScan:i}=t,n=ee(t,["onChange","trim","enableScan"]),l=(0,import_react2.useCallback)(a=>{r&&(a.target.value=a.target.value.trim()),o==null||o(a)},[o,r]);return i?(0,import_jsx_runtime.jsx)(ScanInput,A(x({},n),{onChange:l})):(0,import_jsx_runtime.jsx)(import_antd.Input,A(x({},n),{onChange:l}))}InputInner.Password=import_antd.Input.Password;const Input$2=Object.assign((0,import_react.connect)(InputInner,(0,import_react.mapProps)((e,t)=>A(x({},e),{suffix:(0,import_jsx_runtime.jsx)("span",{children:t!=null&&t.loading||t!=null&&t.validating?(0,import_jsx_runtime.jsx)(import_icons.LoadingOutlined,{}):e.suffix})})),(0,import_react.mapReadPretty)(ReadPretty$c.Input)),{TextArea:(0,import_react.connect)(import_antd.Input.TextArea,(0,import_react.mapProps)((e,t)=>x({autoSize:{maxRows:10,minRows:3}},e)),(0,import_react.mapReadPretty)(ReadPretty$c.TextArea)),URL:(0,import_react.connect)(import_antd.Input,(0,import_react.mapReadPretty)(ReadPretty$c.URL)),JSON:(0,import_react.connect)(Json,(0,import_react.mapReadPretty)(ReadPretty$c.JSON)),ReadPretty:ReadPretty$c.Input,Preview:ReadPretty$c.Preview});Input$2.displayName="Input";const XButton=(0,import_react2.forwardRef)((e,t)=>{const o=(0,import_react2.useMemo)(()=>({fontStyle:"italic",fontFamily:"New York, Times New Roman, Times, serif"}),[]);return(0,import_jsx_runtime.jsx)(FlagProvider,{isInXButton:!0,children:(0,import_jsx_runtime.jsxs)(import_antd.Button,A(x({"aria-label":"variable-button",ref:t,style:o},e),{children:["x",e.children]}))})});XButton.displayName="XButton";const useStyles$d=genStyleHook("nb-variable",(e,t)=>{const{componentCls:o,lineWidth:r,colorFillQuaternary:i}=e,n=e.paddingSM-1,l=8-r,a=e.fontSizeSM,c=`${e.lineHeightSM*a}px`,u=i;return{[o]:{width:"auto",display:"flex","&.ant-input-group-compact":{display:"flex"},".ant-input-disabled":{".ant-tag":{color:"#bfbfbf",borderColor:"#d9d9d9"}},".ant-input.null-value":{width:"4em",minWidth:"4em"},".ant-formily-item .ant-formily-item-control .ant-formily-item-control-content .ant-formily-item-control-content-component":{lineHeight:"normal"},".ant-formily-item":{marginBottom:0},".ant-input":t!=null&&t.hideVariableButton?{}:{borderTopRightRadius:0,borderBottomRightRadius:0},".ant-tag":{display:"inline-block",height:"auto",marginInlineEnd:e.marginXS,paddingInline:l,fontSize:a,lineHeight:c,whiteSpace:"nowrap",background:u,border:`${e.lineWidth}px ${e.lineType} ${e.colorBorder}`,borderRadius:e.borderRadiusSM,opacity:1,transition:`all ${e.motionDurationMid}`,textAlign:"start"},".ant-tag-blue":{color:e.colorPrimaryText,background:e.colorPrimaryBg,borderColor:e.colorPrimaryBorder},".clear-button":{position:"absolute",top:"50%",insetInlineStart:"auto",insetInlineEnd:n,zIndex:1,display:"none",width:e.fontSizeIcon,height:e.fontSizeIcon,marginTop:-e.fontSizeIcon/2,color:e.colorTextQuaternary,fontSize:e.fontSizeIcon,fontStyle:"normal",lineHeight:1,textAlign:"center",textTransform:"none",background:e.colorBgContainer,cursor:"pointer",opacity:.8,transition:`color ${e.motionDurationMid} ease, opacity ${e.motionDurationSlow} ease`,textRendering:"auto",userSelect:"none","&:before":{display:"block"},"&:hover":{color:e.colorTextTertiary}},".ant-btn":{height:"auto"},".variable":{flex:1}}}}),JT_VALUE_RE=/^\s*{{\s*([^{}]+)\s*}}\s*$/;function parseValue(e,t={}){var o;if(e==null)return(o=t.defaultTypeOnNull)!=null?o:"null";const r=typeof e;if(r==="string"){const i=e.match(JT_VALUE_RE);if(i)return i[1].split(".");if(t.stringToDate&&!Number.isNaN(Date.parse(e)))return"date"}return r==="object"&&e instanceof Date?"date":r}function NullComponent(){const{t:e}=(0,import_react_i18next.useTranslation)();return(0,import_jsx_runtime.jsx)(import_antd.Input,{style:{width:"100%"},readOnly:!0,placeholder:`<${e("Null")}>`,className:"null-value"})}const ConstantTypes={string:{label:'{{t("String")}}',value:"string",component:function(e){var t=e,{onChange:o,value:r}=t,i=ee(t,["onChange","value"]);return(0,import_jsx_runtime.jsx)(import_antd.Input,x({value:r,onChange:n=>o(n.target.value)},i))},default(){return""}},number:{label:'{{t("Number")}}',value:"number",component:function(e){var t=e,{onChange:o,value:r}=t,i=ee(t,["onChange","value"]);return(0,import_jsx_runtime.jsx)(import_antd.InputNumber,x({value:r,onChange:o},i))},default(){return 0}},boolean:{label:'{{t("Boolean")}}',value:"boolean",component:function(e){var t=e,{onChange:o,value:r}=t,i=ee(t,["onChange","value"]);const{t:n}=(0,import_react_i18next.useTranslation)();return(0,import_jsx_runtime.jsx)(import_antd.Select,A(x({value:r,onChange:o,placeholder:n("Select"),options:[{value:!0,label:n("True")},{value:!1,label:n("False")}]},i),{className:(0,import_classnames.default)(i.className,"auto-width")}))},default(){return!1}},date:{label:'{{t("Date")}}',value:"date",component:function(e){var t=e,{onChange:o,value:r}=t,i=ee(t,["onChange","value"]);return(0,import_jsx_runtime.jsx)(import_antd.DatePicker,x({value:(0,import_dayjs.default)(r),onChange:n=>n?o(n.toDate()):null,allowClear:!1,showTime:!0},i))},default(){const e=new Date;return new Date(e.getFullYear(),e.getMonth(),e.getDate(),0,0,0)}},null:{label:'{{t("Null")}}',value:"null",component:NullComponent,default(){return null}},object:{label:'{{t("JSON")}}',value:"object",component:Json,default(){return{}}}};function getTypedConstantOption(e,t,o){var r;const i=Object.values(ConstantTypes).filter(l=>l.value!=="null"),n=(t?i.filter(l=>Array.isArray(t)&&t.filter(a=>Array.isArray(a)?a[0]===l.value:a===l.value).length||t===!0):i).map(l=>Object.keys(o).reduce((a,c)=>c in l?Object.assign(a,{[o[c]]:l[c]}):a,x({},l)));return{value:" ",label:'{{t("Constant")}}',children:n,[o.value]:" ",[o.label]:'{{t("Constant")}}',[o.children]:n,component:(r=ConstantTypes[e])==null?void 0:r.component}}function Input$1(e){var t,o,r,i;const n=e,{value:l="",onChange:a,children:c,button:u,useTypedConstant:d,nullable:m=!0,style:p,className:h,changeOnSelect:g,fieldNames:f,parseOptions:_,hideVariableButton:v,constantAbel:b=!0}=n,F=ee(n,["value","onChange","children","button","useTypedConstant","nullable","style","className","changeOnSelect","fieldNames","parseOptions","hideVariableButton","constantAbel"]),y=typeof e.scope=="function"?e.scope():e.scope,{wrapSSR:C,hashId:S,componentCls:P,rootPrefixCls:j}=useStyles$d({hideVariableButton:v});(0,import_style.default)(`${j}-input`);const I=useCompile(),{t:T}=(0,import_react_i18next.useTranslation)(),D=(0,import_react.useForm)(),[E,w]=import_react2.default.useState([]),[k,N]=import_react2.default.useState([]),[B,M]=import_react2.default.useState(v||!!(c&&l!=null)),[$,q]=import_react2.default.useState(null),O=(0,import_react2.useMemo)(()=>parseValue(l,_),[_,l]),V=typeof O=="string",z=V?O:"",U=V?null:O,K=Object.assign({label:"label",value:"value",children:"children"},f??{}),H=(0,import_react2.useMemo)(()=>b?c?{value:"$",label:T("Constant"),[K.value]:"$",[K.label]:T("Constant")}:d?getTypedConstantOption(z,d,K):null:null,[z,d]),Y=(t=H==null?void 0:H.component)!=null?t:NullComponent,Z=Array.isArray(d)?(r=(o=d.find(ie=>Array.isArray(ie)&&ie[0]===z))==null?void 0:o[1])!=null?r:{}:{};let W;l==null?m?c&&B?W=["$"]:W=[""]:c?W=["$"]:W=[" ",z]:W=c?["$"]:[" ",z],v&&(W=["$"]),(0,import_react2.useEffect)(()=>{const ie=H??{},re=ee(ie,["component"]),ae=[...m?[{value:"",label:T("Null"),[K.value]:"",[K.label]:T("Null")}]:[],...H?[I(re)]:[],...y?[...y]:[]].filter(se=>!se.deprecated||(U==null?void 0:U[0])===se[K.value]);w(ae)},[y,U,H,m]);const J=ie=>L(this,null,function*(){var re;const ae=ie[ie.length-1];if(!((re=ae.children)!=null&&re.length)&&!ae.isLeaf&&ae.loadChildren){ie.length&&q(ie.map(le=>le==null?void 0:le[K.value]));let se;if(U&&U.length>=2){for(const le of U)if(le===ae[K.value]){se=le;break}}yield ae.loadChildren(ae,se,U),w(le=>[...le])}}),oe=(0,import_react2.useCallback)((ie,re)=>{var ae,se,le;if(q(null),ie[0]==="$"){M(!0),U&&a(null,re);return}else M(!1);if(ie[0]===""){a(null);return}if(ie[0]===" "){ie[1]?ie[1]!==z&&a((le=(se=(ae=ConstantTypes[ie[1]])==null?void 0:ae.default)==null?void 0:se.call(ae))!=null?le:null,re):U&&a(null,re);return}a(`{{${ie.join(".")}}}`,re)},[z,U,a]),G=(0,import_react2.useCallback)(()=>{var ie;if(M(!!c),(ie=H==null?void 0:H.children)!=null&&ie.length){const re=H.children[0].default();return a(re)}a(null),q(null)},[H]),Q=(0,import_react2.useCallback)(ie=>{ie||q(null)},[]);(0,import_react2.useEffect)(()=>{L(this,null,function*(){var ie;if(!U||E.length<=1)return;let re=null;const ae=[];for(let se=0;se<U.length;se++){const le=U[se];try{if(se===0?re=E.find(ge=>ge[K.value]===le):(re.loadChildren&&!((ie=re.children)!=null&&ie.length)&&(yield re.loadChildren(re,le,U)),re=re.children.find(ge=>ge[K.value]===le)),!re)return;ae.push(re[K.label])}catch(ge){(0,import_client.error)(ge)}}w([...E]),N([...ae])})},[U,E.length]);const X=e.disabled||D.disabled,te=(i=U??$)!=null?i:W;return C((0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsxs)(import_antd.Space.Compact,{style:p,className:(0,import_classnames.default)(P,S,h),children:[U?(0,import_jsx_runtime.jsxs)("div",{className:(0,import_css.cx)("variable",import_css.css`
|
|
411
|
+
`;ReadPretty$c.JSON=e=>{const t=(0,import_builtins.usePrefixCls)("json",e),o=(0,import_react2.useMemo)(()=>{var i;return e.value!=null?JSON.stringify(e.value,null,(i=e.space)!=null?i:2):""},[e.space,e.value]),r=(0,import_jsx_runtime.jsx)("pre",{className:(0,import_css.cx)(t,e.className,JSONClassName$1),style:e.style,children:o});return e.ellipsis?(0,import_jsx_runtime.jsx)(EllipsisWithTooltip$1,{ellipsis:e.ellipsis,popoverContent:r,children:o}):r};ReadPretty$c.Input=withPopupWrapper(ReadPretty$c.Input);ReadPretty$c.TextArea=withPopupWrapper(ReadPretty$c.TextArea);ReadPretty$c.Html=withPopupWrapper(ReadPretty$c.Html);ReadPretty$c.Preview=withPopupWrapper(ReadPretty$c.Preview);ReadPretty$c.JSON=withPopupWrapper(ReadPretty$c.JSON);function useScanner({onScannerSizeChanged:e,elementId:t,onScanSuccess:o}){const[r,i]=(0,import_react2.useState)(),{t:n}=(0,import_react_i18next.useTranslation)(),l=(0,import_react2.useMemo)(()=>{const d=Math.max(document.documentElement.clientWidth||0,window.innerWidth||0),m=Math.max(document.documentElement.clientHeight||0,window.innerHeight||0);return{width:d,height:m}},[]),a=(0,import_react2.useCallback)(d=>L(this,null,function*(){return d.start({facingMode:"environment"},{fps:10,qrbox(m,p){return e({width:m,height:p}),{width:l.width,height:l.height}}},m=>{o&&o(m)},void 0)}),[e,l,o]),c=(0,import_react2.useCallback)(d=>L(this,null,function*(){const m=d.getState();if([import_html5_qrcode.Html5QrcodeScannerState.SCANNING,import_html5_qrcode.Html5QrcodeScannerState.PAUSED].includes(m))return d.stop()}),[]),u=(0,import_react2.useCallback)(d=>L(this,null,function*(){yield c(r);try{const{decodedText:m}=yield r.scanFileV2(d,!1);o&&o(m)}catch{alert(n("QR code recognition failed, please scan again")),a(r)}}),[c,r,n,a,o]);return(0,import_react2.useEffect)(()=>{if(!document.getElementById(t)||r)return;const d=new import_html5_qrcode.Html5Qrcode(t);return i(d),a(d),()=>{c(d)}},[t]),{startScanCamera:a,startScanFile:u}}function ScanBox({style:e={}}){const t={position:"absolute",backgroundColor:"rgb(255, 255, 255)"};return(0,import_jsx_runtime.jsxs)("div",{id:"qr-scan-box",style:x({boxSizing:"border-box",inset:"0px"},e),children:[(0,import_jsx_runtime.jsx)("div",{style:x({width:"40px",height:"5px",top:"-5px",left:"0px"},t)}),(0,import_jsx_runtime.jsx)("div",{style:x({width:"40px",height:"5px",top:"-5px",right:"0px"},t)}),(0,import_jsx_runtime.jsx)("div",{style:x({width:"40px",height:"5px",bottom:"-5px",left:"0px"},t)}),(0,import_jsx_runtime.jsx)("div",{style:x({width:"40px",height:"5px",bottom:"-5px",right:"0px"},t)}),(0,import_jsx_runtime.jsx)("div",{style:x({width:"5px",height:"45px",top:"-5px",left:"-5px"},t)}),(0,import_jsx_runtime.jsx)("div",{style:x({width:"5px",height:"45px",bottom:"-5px",left:"-5px"},t)}),(0,import_jsx_runtime.jsx)("div",{style:x({width:"5px",height:"45px",top:"-5px",right:"-5px"},t)}),(0,import_jsx_runtime.jsx)("div",{style:x({width:"5px",height:"45px",bottom:"-5px",right:"-5px"},t)})]})}const qrcodeEleId="qrcode-scanner",QRCodeScannerInner=({visible:e,onClose:t,onScanSuccess:o,containerRef:r})=>{const i=(0,import_react2.useRef)(null),{t:n}=(0,import_react_i18next.useTranslation)("block-workbench"),[l,a]=(0,import_react2.useState)(!1),[c,u]=(0,import_react2.useState)({width:0,height:0}),d=Math.max(document.documentElement.clientWidth||0,window.innerWidth||0),m=Math.max(document.documentElement.clientHeight||0,window.innerHeight||0),{startScanFile:p}=useScanner({elementId:qrcodeEleId,onScannerSizeChanged:u,onScanSuccess:f=>{o(f),t()}});if((0,import_react2.useEffect)(()=>{e&&import_html5_qrcode.Html5Qrcode.getCameras().then(f=>{f.length>0?a(!0):(alert(n("No camera device detected")),t())}).catch(f=>{var _;const v={NotFoundError:n("No camera device detected"),NotAllowedError:n("You have not granted permission to use the camera")};alert((_=v[f.name])!=null?_:f.message),t()})},[e,n,t]),(0,import_react2.useEffect)(()=>{if(!e||!c.width||!c.height)return;const f=document.querySelector("video");if(f){const _=m/c.height*c.width;f.style.height=`${m}px`,f.style.width=`${_}px`,r.current&&(r.current.style.left=`${(d-_)/2}px`,r.current.style.position="absolute")}},[c,e]),!e||!l)return null;const h=()=>{var f;(f=i.current)==null||f.click()},g=f=>{var _;const v=(_=f.target.files)==null?void 0:_[0];v&&v.size<1024*1024?p(v):alert(n("The image size is too large. Please compress it to below 1MB before uploading"))};return(0,import_jsx_runtime.jsxs)("div",{children:[(0,import_jsx_runtime.jsx)(ScanBox,{style:{position:"fixed",top:`${(m-d*.6)/2}px`,left:`${(d-d*.6)/2}px`,width:`${d*.6}px`,height:`${d*.6}px`}}),(0,import_jsx_runtime.jsx)(import_icons.LeftOutlined,{onClick:t,style:{position:"absolute",top:"22px",left:"20px",zIndex:1003,color:"white",fontSize:"1.8em",fontWeight:"bold"}}),(0,import_jsx_runtime.jsx)("div",{style:{position:"absolute",top:"20px",left:0,right:0,color:"white",fontSize:"1.5em",textAlign:"center",zIndex:1002},children:n("Scan QR code")}),(0,import_jsx_runtime.jsx)("div",{style:{position:"absolute",bottom:"20px",left:"20px",padding:"10px 60px"},children:(0,import_jsx_runtime.jsxs)("div",{style:{color:"white",width:"40px",display:"flex",flexDirection:"column",alignItems:"center"},children:[(0,import_jsx_runtime.jsx)(import_icons.FileImageOutlined,{style:{fontSize:"2em",fontWeight:"bold",zIndex:1003},onClick:h}),n("Album"),(0,import_jsx_runtime.jsx)("input",{type:"file",accept:"image/*",ref:i,onChange:g,style:{display:"none"}})]})})]})},QRCodeScanner=e=>{const t=(0,import_react2.useRef)(null),o=(0,import_jsx_runtime.jsxs)("div",{style:{position:"fixed",inset:0,backgroundColor:"black",zIndex:9999,overflow:"hidden"},children:[(0,import_jsx_runtime.jsx)("div",{ref:t,id:qrcodeEleId,style:{position:"absolute"}}),(0,import_jsx_runtime.jsx)(QRCodeScannerInner,A(x({},e),{containerRef:t}))]});return import_react_dom.default.createPortal(o,document.body)},ScanInput=({value:e,onChange:t,disabled:o,disableManualInput:r})=>{const{t:i}=(0,import_react_i18next.useTranslation)(),[n,l]=(0,import_react2.useState)(!1),a=(0,import_react2.useRef)(null),c=u=>{l(!1),u&&(t==null||t(u),setTimeout(()=>{var d;return(d=a.current)==null?void 0:d.focus()},100))};return(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsx)(import_antd.Input,{ref:a,value:e,onChange:u=>{t==null||t(u)},disabled:o,readOnly:r,addonAfter:(0,import_jsx_runtime.jsx)(import_icons.ScanOutlined,{onPointerDown:u=>u.preventDefault(),onClick:()=>{var u;(u=a.current)==null||u.blur(),l(!0)},title:i("Scan to input")})}),n&&(0,import_jsx_runtime.jsx)(QRCodeScanner,{visible:n,onScanSuccess:c,onClose:()=>{l(!1)}})]})};function InputInner(e){const t=e,{onChange:o,trim:r,enableScan:i}=t,n=ee(t,["onChange","trim","enableScan"]),l=(0,import_react2.useCallback)(a=>{r&&(a.target.value=a.target.value.trim()),o==null||o(a)},[o,r]);return i?(0,import_jsx_runtime.jsx)(ScanInput,A(x({},n),{onChange:l})):(0,import_jsx_runtime.jsx)(import_antd.Input,A(x({},n),{onChange:l}))}InputInner.Password=import_antd.Input.Password;const Input$2=Object.assign((0,import_react.connect)(InputInner,(0,import_react.mapProps)((e,t)=>A(x({},e),{suffix:(0,import_jsx_runtime.jsx)("span",{children:t!=null&&t.loading||t!=null&&t.validating?(0,import_jsx_runtime.jsx)(import_icons.LoadingOutlined,{}):e.suffix})})),(0,import_react.mapReadPretty)(ReadPretty$c.Input)),{TextArea:(0,import_react.connect)(import_antd.Input.TextArea,(0,import_react.mapProps)((e,t)=>x({autoSize:{maxRows:10,minRows:3}},e)),(0,import_react.mapReadPretty)(ReadPretty$c.TextArea)),URL:(0,import_react.connect)(import_antd.Input,(0,import_react.mapReadPretty)(ReadPretty$c.URL)),JSON:(0,import_react.connect)(Json,(0,import_react.mapReadPretty)(ReadPretty$c.JSON)),ReadPretty:ReadPretty$c.Input,Preview:ReadPretty$c.Preview});Input$2.displayName="Input";const XButton=(0,import_react2.forwardRef)((e,t)=>{const o=(0,import_react2.useMemo)(()=>({fontStyle:"italic",fontFamily:"New York, Times New Roman, Times, serif"}),[]);return(0,import_jsx_runtime.jsx)(FlagProvider,{isInXButton:!0,children:(0,import_jsx_runtime.jsxs)(import_antd.Button,A(x({"aria-label":"variable-button",ref:t,style:o},e),{children:["x",e.children]}))})});XButton.displayName="XButton";const useStyles$d=genStyleHook("nb-variable",(e,t)=>{const{componentCls:o,lineWidth:r,colorFillQuaternary:i}=e,n=e.paddingSM-1,l=8-r,a=e.fontSizeSM,c=`${e.lineHeightSM*a}px`,u=i;return{[o]:{width:"auto",display:"flex","&.ant-input-group-compact":{display:"flex"},".ant-input-disabled":{".ant-tag":{color:"#bfbfbf",borderColor:"#d9d9d9"}},".ant-input.null-value":{width:"4em",minWidth:"4em"},".ant-formily-item .ant-formily-item-control .ant-formily-item-control-content .ant-formily-item-control-content-component":{lineHeight:"normal"},".ant-formily-item":{marginBottom:0},".ant-input":t!=null&&t.hideVariableButton?{}:{borderTopRightRadius:0,borderBottomRightRadius:0},".ant-tag":{display:"inline-block",height:"auto",marginInlineEnd:e.marginXS,paddingInline:l,fontSize:a,lineHeight:c,whiteSpace:"nowrap",background:u,border:`${e.lineWidth}px ${e.lineType} ${e.colorBorder}`,borderRadius:e.borderRadiusSM,opacity:1,transition:`all ${e.motionDurationMid}`,textAlign:"start"},".ant-tag-blue":{color:e.colorPrimaryText,background:e.colorPrimaryBg,borderColor:e.colorPrimaryBorder},".clear-button":{position:"absolute",top:"50%",insetInlineStart:"auto",insetInlineEnd:n,zIndex:1,display:"none",width:e.fontSizeIcon,height:e.fontSizeIcon,marginTop:-e.fontSizeIcon/2,color:e.colorTextQuaternary,fontSize:e.fontSizeIcon,fontStyle:"normal",lineHeight:1,textAlign:"center",textTransform:"none",background:e.colorBgContainer,cursor:"pointer",opacity:.8,transition:`color ${e.motionDurationMid} ease, opacity ${e.motionDurationSlow} ease`,textRendering:"auto",userSelect:"none","&:before":{display:"block"},"&:hover":{color:e.colorTextTertiary}},".ant-btn":{height:"auto"},".variable":{flex:1}}}}),JT_VALUE_RE=/^\s*{{\s*([^{}]+)\s*}}\s*$/;function parseValue(e,t={}){var o;if(e==null)return(o=t.defaultTypeOnNull)!=null?o:"null";const r=typeof e;if(r==="string"){const i=e.match(JT_VALUE_RE);if(i)return i[1].trim().split(".");if(t.stringToDate&&!Number.isNaN(Date.parse(e)))return"date"}return r==="object"&&e instanceof Date?"date":r}function NullComponent(){const{t:e}=(0,import_react_i18next.useTranslation)();return(0,import_jsx_runtime.jsx)(import_antd.Input,{style:{width:"100%"},readOnly:!0,placeholder:`<${e("Null")}>`,className:"null-value"})}const ConstantTypes={string:{label:'{{t("String")}}',value:"string",component:function(e){var t=e,{onChange:o,value:r}=t,i=ee(t,["onChange","value"]);return(0,import_jsx_runtime.jsx)(import_antd.Input,x({value:r,onChange:n=>o(n.target.value)},i))},default(){return""}},number:{label:'{{t("Number")}}',value:"number",component:function(e){var t=e,{onChange:o,value:r}=t,i=ee(t,["onChange","value"]);return(0,import_jsx_runtime.jsx)(import_antd.InputNumber,x({value:r,onChange:o},i))},default(){return 0}},boolean:{label:'{{t("Boolean")}}',value:"boolean",component:function(e){var t=e,{onChange:o,value:r}=t,i=ee(t,["onChange","value"]);const{t:n}=(0,import_react_i18next.useTranslation)();return(0,import_jsx_runtime.jsx)(import_antd.Select,A(x({value:r,onChange:o,placeholder:n("Select"),options:[{value:!0,label:n("True")},{value:!1,label:n("False")}]},i),{className:(0,import_classnames.default)(i.className,"auto-width")}))},default(){return!1}},date:{label:'{{t("Date")}}',value:"date",component:function(e){var t=e,{onChange:o,value:r}=t,i=ee(t,["onChange","value"]);return(0,import_jsx_runtime.jsx)(import_antd.DatePicker,x({value:(0,import_dayjs.default)(r),onChange:n=>n?o(n.toDate()):null,allowClear:!1,showTime:!0},i))},default(){const e=new Date;return new Date(e.getFullYear(),e.getMonth(),e.getDate(),0,0,0)}},null:{label:'{{t("Null")}}',value:"null",component:NullComponent,default(){return null}},object:{label:'{{t("JSON")}}',value:"object",component:Json,default(){return{}}}};function getTypedConstantOption(e,t,o){var r;const i=Object.values(ConstantTypes).filter(l=>l.value!=="null"),n=(t?i.filter(l=>Array.isArray(t)&&t.filter(a=>Array.isArray(a)?a[0]===l.value:a===l.value).length||t===!0):i).map(l=>Object.keys(o).reduce((a,c)=>c in l?Object.assign(a,{[o[c]]:l[c]}):a,x({},l)));return{value:" ",label:'{{t("Constant")}}',children:n,[o.value]:" ",[o.label]:'{{t("Constant")}}',[o.children]:n,component:(r=ConstantTypes[e])==null?void 0:r.component}}function Input$1(e){var t,o,r,i;const n=e,{value:l="",onChange:a,children:c,button:u,useTypedConstant:d,nullable:m=!0,style:p,className:h,changeOnSelect:g,fieldNames:f,parseOptions:_,hideVariableButton:v,constantAbel:b=!0}=n,F=ee(n,["value","onChange","children","button","useTypedConstant","nullable","style","className","changeOnSelect","fieldNames","parseOptions","hideVariableButton","constantAbel"]),y=typeof e.scope=="function"?e.scope():e.scope,{wrapSSR:C,hashId:S,componentCls:P,rootPrefixCls:j}=useStyles$d({hideVariableButton:v});(0,import_style.default)(`${j}-input`);const I=useCompile(),{t:T}=(0,import_react_i18next.useTranslation)(),D=(0,import_react.useForm)(),[E,w]=import_react2.default.useState([]),[k,N]=import_react2.default.useState([]),[B,M]=import_react2.default.useState(v||!!(c&&l!=null)),[$,q]=import_react2.default.useState(null),O=(0,import_react2.useMemo)(()=>parseValue(l,_),[_,l]),V=typeof O=="string",z=V?O:"",U=V?null:O,K=Object.assign({label:"label",value:"value",children:"children"},f??{}),H=(0,import_react2.useMemo)(()=>b?c?{value:"$",label:T("Constant"),[K.value]:"$",[K.label]:T("Constant")}:d?getTypedConstantOption(z,d,K):null:null,[z,d]),Y=(t=H==null?void 0:H.component)!=null?t:NullComponent,Z=Array.isArray(d)?(r=(o=d.find(ie=>Array.isArray(ie)&&ie[0]===z))==null?void 0:o[1])!=null?r:{}:{};let W;l==null?m?c&&B?W=["$"]:W=[""]:c?W=["$"]:W=[" ",z]:W=c?["$"]:[" ",z],v&&(W=["$"]),(0,import_react2.useEffect)(()=>{const ie=H??{},re=ee(ie,["component"]),ae=[...m?[{value:"",label:T("Null"),[K.value]:"",[K.label]:T("Null")}]:[],...H?[I(re)]:[],...y?[...y]:[]].filter(se=>!se.deprecated||(U==null?void 0:U[0])===se[K.value]);w(ae)},[y,U,H,m]);const J=ie=>L(this,null,function*(){var re;const ae=ie[ie.length-1];if(!((re=ae.children)!=null&&re.length)&&!ae.isLeaf&&ae.loadChildren){ie.length&&q(ie.map(le=>le==null?void 0:le[K.value]));let se;if(U&&U.length>=2){for(const le of U)if(le===ae[K.value]){se=le;break}}yield ae.loadChildren(ae,se,U),w(le=>[...le])}}),oe=(0,import_react2.useCallback)((ie,re)=>{var ae,se,le;if(q(null),ie[0]==="$"){M(!0),U&&a(null,re);return}else M(!1);if(ie[0]===""){a(null);return}if(ie[0]===" "){ie[1]?ie[1]!==z&&a((le=(se=(ae=ConstantTypes[ie[1]])==null?void 0:ae.default)==null?void 0:se.call(ae))!=null?le:null,re):U&&a(null,re);return}a(`{{${ie.join(".")}}}`,re)},[z,U,a]),G=(0,import_react2.useCallback)(()=>{var ie;if(M(!!c),(ie=H==null?void 0:H.children)!=null&&ie.length){const re=H.children[0].default();return a(re)}a(null),q(null)},[H]),Q=(0,import_react2.useCallback)(ie=>{ie||q(null)},[]);(0,import_react2.useEffect)(()=>{L(this,null,function*(){var ie;if(!U||E.length<=1)return;let re=null;const ae=[];for(let se=0;se<U.length;se++){const le=U[se];try{if(se===0?re=E.find(ge=>ge[K.value]===le):(re.loadChildren&&!((ie=re.children)!=null&&ie.length)&&(yield re.loadChildren(re,le,U)),re=re.children.find(ge=>ge[K.value]===le)),!re)return;ae.push(re[K.label])}catch(ge){(0,import_client.error)(ge)}}w([...E]),N([...ae])})},[U,E.length]);const X=e.disabled||D.disabled,te=(i=U??$)!=null?i:W;return C((0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsxs)(import_antd.Space.Compact,{style:p,className:(0,import_classnames.default)(P,S,h),children:[U?(0,import_jsx_runtime.jsxs)("div",{className:(0,import_css.cx)("variable",import_css.css`
|
|
412
412
|
position: relative;
|
|
413
413
|
line-height: 0;
|
|
414
414
|
|
|
@@ -457,7 +457,7 @@ ${JSON.stringify(q,null,2)}`)},[u,c,a,i,r,P,t,l,n,g,o,f,F,j,y,C,h]),T=(0,import_
|
|
|
457
457
|
border-top-color: transparent;
|
|
458
458
|
}
|
|
459
459
|
background-color: transparent;
|
|
460
|
-
`},e),{component:Input$2.JSON}))}function pasteHTML(e,t,{selectPastedContent:o=!1,range:r}={}){var i;const n=(i=window.getSelection)==null?void 0:i.call(window),l=n==null?void 0:n.getRangeAt(0);if(!l)return;if(r){const m=Array.from(e.childNodes);r[0]===-1?r[1]&&m[r[1]-1]?l.setStartAfter(m[r[1]-1]):l.setStart(e,0):l.setStart(m[r[0]],r[1]),r[2]===-1?r[3]&&m[r[3]-1]?l.setEndAfter(m[r[3]-1]):l.setEnd(e,0):l.setEnd(m[r[2]],r[3])}const a=document.createElement("div");a.innerHTML=t;const c=document.createDocumentFragment();let u;for(;a.firstChild;)u=c.appendChild(a.firstChild);const{firstChild:d}=c;if(l.deleteContents(),l.insertNode(c),u){const m=new Range;m.setStartAfter(u),o?d&&m.setStartBefore(d):m.collapse(!0),n.removeAllRanges(),n.addRange(m)}}function getValue(e,t=["{{","}}"]){const o=[];for(const r of e.childNodes)r.nodeName==="SPAN"&&r.dataset.variable?o.push(`${t[0]}${r.dataset.variable}${t[1]}`):o.push(r.textContent);return o.join("")}function renderHTML(e,t,o=["{{","}}"]){const r=new RegExp(`${o[0]}\\s*([^{}]+)\\s*${o[1]}`,"g");return e.replace(r,(i,n)=>{var l;const a=n.trim();return(l=createVariableTagHTML(a,t))!=null?l:""})}function createOptionsValueLabelMap(e,t=defaultFieldNames$2){const o=new Map;for(const r of e)if(o.set(r[t.value],[r[t.label]]),r.children)for(const[i,n]of createOptionsValueLabelMap(r.children,t))o.set(`${r[t.value]}.${i}`,[r[t.label],...n]);return o}function reactNodeToPlainText(e){return e==null||typeof e=="boolean"?"":typeof e=="string"||typeof e=="number"?`${e}`:Array.isArray(e)?e.map(reactNodeToPlainText).join(""):(0,import_react2.isValidElement)(e)?reactNodeToPlainText(e.props.children):""}function createVariableTagHTML(e,t){let o=t.get(e);return o&&(o=o.map(r=>(0,import_shared.isReactElement)(r)||(0,import_react2.isValidElement)(r)?reactNodeToPlainText(r):r)),`<span class="ant-tag ant-tag-blue" contentEditable="false" data-variable="${e}">${o?o.join(" / "):"..."}</span>`}function getSingleEndRange(e,t,o){var r,i,n,l,a,c,u;if(t===-1){let d=o,m=!1;d&&((r=e[d-1])==null?void 0:r.nodeName)==="#text"&&((i=e[d])==null?void 0:i.nodeName)==="#text"&&(m=!0);let p=0;for(let h=o-1;h>=0;h--)m&&(((n=e[h])==null?void 0:n.nodeName)==="#text"?p+=e[h].textContent.length:m=!1),((l=e[h])==null?void 0:l.nodeName)==="#text"&&((a=e[h+1])==null?void 0:a.nodeName)==="#text"&&(d-=1);return p?[d,p]:[-1,d]}else{let d=0,m=0;for(let p=0;p<t+1;p++)((c=e[p])==null?void 0:c.nodeName)==="#text"?(p!==t&&e[p+1]&&((u=e[p+1])==null?void 0:u.nodeName)!=="#text"&&(d+=1),m+=p===t?o:e[p].textContent.length):(d+=1,m=0);return[d,m]}}function getCurrentRange(e){var t;const o=(t=window.getSelection)==null?void 0:t.call(window),r=o==null?void 0:o.getRangeAt(0);if(!r)return[-1,0,-1,0];const i=Array.from(e.childNodes);if(!i.length)return[-1,0,-1,0];const n=r.startContainer===e?-1:i.indexOf(r.startContainer),l=r.endContainer===e?-1:i.indexOf(r.endContainer);return[...getSingleEndRange(i,n,r.startOffset),...getSingleEndRange(i,l,r.endOffset)]}const defaultFieldNames$2={value:"value",label:"label"};function useVariablesFromValue(e,t=["{{","}}"]){const o=t.join(" ");return(0,import_react2.useMemo)(()=>{var r;if(!(e!=null&&e.trim()))return[];const i=new RegExp(`${t[0]}\\s*([^{}]+)\\s*${t[1]}`,"g"),n=e.match(i);return(r=n==null?void 0:n.map(l=>l.replace(i,"$1")))!=null?r:[]},[e,o])}function TextArea(e){const{wrapSSR:t,hashId:o,componentCls:r}=useStyles$d(),{scope:i,changeOnSelect:n,style:l,fieldNames:a,delimiters:c=["{{","}}"],addonBefore:u,trim:d=!0}=e,m=typeof e.value=="string"?e.value:e.value==null?"":e.value.toString(),p=useVariablesFromValue(m,c),h=(0,import_react2.useRef)(null),[g,f]=(0,import_react2.useState)([]),_=(0,import_react.useForm)(),v=(0,import_react2.useMemo)(()=>createOptionsValueLabelMap(g,a||defaultFieldNames$2),[a,g]),[b,F]=(0,import_react2.useState)(!1),[y,C]=(0,import_react2.useState)(!1),[S,P]=(0,import_react2.useState)(()=>renderHTML(m??"",v,c)),[j,I]=(0,import_react2.useState)([-1,0,-1,0]);(0,import_style.default)("ant-input");const{token:T}=import_antd.theme.useToken(),D=c.join(" "),E=(0,import_react2.useCallback)(V=>{var z;const U=getValue(V,c);(z=e.onChange)==null||z.call(e,d?U.trim():U)},[D,e.onChange,d]);(0,import_react2.useEffect)(()=>{preloadOptions(i,p).then(V=>{f(V)}).catch(console.error)},[i,JSON.stringify(p)]),(0,import_react2.useEffect)(()=>{P(renderHTML(m??"",v,c)),y||I([-1,0,-1,0])},[m,v,D]),(0,import_react2.useEffect)(()=>{var V;const{current:z}=h;if(!z)return;const U=new Range;if(y){if(j.join()==="-1,0,-1,0")return;const K=(V=window.getSelection)==null?void 0:V.call(window);if(K)try{const H=Array.from(z.childNodes);H.length&&(j[0]===-1?j[1]&&U.setStartAfter(H[j[1]-1]):U.setStart(H[j[0]],j[1]),j[2]===-1?j[3]&&U.setEndAfter(H[j[3]-1]):U.setEnd(H[j[2]],j[3])),U.collapse(!0),K.removeAllRanges(),K.addRange(U)}catch{}}else{const{lastChild:K}=z;if(K){U.setStartAfter(K),U.setEndAfter(K);const H=Array.from(z.childNodes),Y=U.startContainer===z?-1:H.indexOf(K),Z=U.startContainer===z?-1:H.indexOf(K);I([Y,U.startOffset,Z,U.endOffset])}}},[S]);const w=(0,import_react2.useCallback)(function(V){const z=V.filter(H=>!!H.trim()),{current:U}=h;if(!U||!z)return;U.focus();const K=createVariableTagHTML(z.join("."),v);pasteHTML(U,K,{range:j}),C(!0),I(getCurrentRange(U)),E(U)},[v,E,j]),k=(0,import_react2.useCallback)(function({currentTarget:V}){b||(C(!0),I(getCurrentRange(V)),E(V))},[b,E]),N=(0,import_react2.useCallback)(function({currentTarget:V}){I(getCurrentRange(V))},[]),B=(0,import_react2.useCallback)(function(V){V.key==="Enter"&&V.preventDefault()},[]),M=(0,import_react2.useCallback)(function(){F(!0)},[]),$=(0,import_react2.useCallback)(({currentTarget:V})=>{F(!1),C(!0),I(getCurrentRange(V)),E(V)},[E]),q=(0,import_react2.useCallback)(function(V){V.preventDefault();const z=V.clipboardData.getData("text/html")||V.clipboardData.getData("text"),U=(0,import_sanitize_html.default)(z,{allowedTags:["span"],allowedAttributes:{span:["data-variable","contenteditable"]},allowedClasses:{span:["ant-tag","ant-tag-*"]},transformTags:{span(K,H){return H["data-variable"]?{tagName:K,attribs:H}:{}}}}).replace(/\n/g," ");C(!0),pasteHTML(V.currentTarget,U),I(getCurrentRange(V.currentTarget)),E(V.currentTarget)},[E]),O=e.disabled||_.disabled;return t((0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsxs)(import_antd.Space.Compact,{className:(0,import_css.cx)(r,o,import_css.css`
|
|
460
|
+
`},e),{component:Input$2.JSON}))}function pasteHTML(e,t,{selectPastedContent:o=!1,range:r}={}){var i;const n=(i=window.getSelection)==null?void 0:i.call(window),l=n==null?void 0:n.getRangeAt(0);if(!l)return;if(r){const m=Array.from(e.childNodes);r[0]===-1?r[1]&&m[r[1]-1]?l.setStartAfter(m[r[1]-1]):l.setStart(e,0):l.setStart(m[r[0]],r[1]),r[2]===-1?r[3]&&m[r[3]-1]?l.setEndAfter(m[r[3]-1]):l.setEnd(e,0):l.setEnd(m[r[2]],r[3])}const a=document.createElement("div");a.innerHTML=t;const c=document.createDocumentFragment();let u;for(;a.firstChild;)u=c.appendChild(a.firstChild);const{firstChild:d}=c;if(l.deleteContents(),l.insertNode(c),u){const m=new Range;m.setStartAfter(u),o?d&&m.setStartBefore(d):m.collapse(!0),n.removeAllRanges(),n.addRange(m)}}function getValue(e,t=["{{","}}"]){const o=[];for(const r of e.childNodes)r.nodeName==="SPAN"&&r.dataset.variable?o.push(`${t[0]}${r.dataset.variable}${t[1]}`):o.push(r.textContent);return o.join("")}function renderHTML(e,t,o=["{{","}}"]){const r=new RegExp(`${o[0]}\\s*([^{}]+)\\s*${o[1]}`,"g");return e.replace(r,(i,n)=>{var l;const a=n.trim();return(l=createVariableTagHTML(a,t))!=null?l:""})}function createOptionsValueLabelMap(e,t=defaultFieldNames$2){const o=new Map;for(const r of e)if(o.set(r[t.value],[r[t.label]]),r.children)for(const[i,n]of createOptionsValueLabelMap(r.children,t))o.set(`${r[t.value]}.${i}`,[r[t.label],...n]);return o}function reactNodeToPlainText(e){return e==null||typeof e=="boolean"?"":typeof e=="string"||typeof e=="number"?`${e}`:Array.isArray(e)?e.map(reactNodeToPlainText).join(""):(0,import_react2.isValidElement)(e)?reactNodeToPlainText(e.props.children):""}function createVariableTagHTML(e,t){let o=t.get(e);return o&&(o=o.map(r=>(0,import_shared.isReactElement)(r)||(0,import_react2.isValidElement)(r)?reactNodeToPlainText(r):r)),`<span class="ant-tag ant-tag-blue" contentEditable="false" data-variable="${e}">${o?o.join(" / "):"..."}</span>`}function getSingleEndRange(e,t,o){var r,i,n,l,a,c,u;if(t===-1){let d=o,m=!1;d&&((r=e[d-1])==null?void 0:r.nodeName)==="#text"&&((i=e[d])==null?void 0:i.nodeName)==="#text"&&(m=!0);let p=0;for(let h=o-1;h>=0;h--)m&&(((n=e[h])==null?void 0:n.nodeName)==="#text"?p+=e[h].textContent.length:m=!1),((l=e[h])==null?void 0:l.nodeName)==="#text"&&((a=e[h+1])==null?void 0:a.nodeName)==="#text"&&(d-=1);return p?[d,p]:[-1,d]}else{let d=0,m=0;for(let p=0;p<t+1;p++)((c=e[p])==null?void 0:c.nodeName)==="#text"?(p!==t&&e[p+1]&&((u=e[p+1])==null?void 0:u.nodeName)!=="#text"&&(d+=1),m+=p===t?o:e[p].textContent.length):(d+=1,m=0);return[d,m]}}function getCurrentRange(e){var t;const o=(t=window.getSelection)==null?void 0:t.call(window),r=o==null?void 0:o.getRangeAt(0);if(!r)return[-1,0,-1,0];const i=Array.from(e.childNodes);if(!i.length)return[-1,0,-1,0];const n=r.startContainer===e?-1:i.indexOf(r.startContainer),l=r.endContainer===e?-1:i.indexOf(r.endContainer);return[...getSingleEndRange(i,n,r.startOffset),...getSingleEndRange(i,l,r.endOffset)]}const defaultFieldNames$2={value:"value",label:"label"};function useVariablesFromValue(e,t=["{{","}}"]){const o=t.join(" ");return(0,import_react2.useMemo)(()=>{var r;if(!(e!=null&&e.trim()))return[];const i=new RegExp(`${t[0]}\\s*([^{}]+)\\s*${t[1]}`,"g"),n=e.match(i);return(r=n==null?void 0:n.map(l=>l.replace(i,"$1").trim()))!=null?r:[]},[e,o])}function TextArea(e){const{wrapSSR:t,hashId:o,componentCls:r}=useStyles$d(),{scope:i,changeOnSelect:n,style:l,fieldNames:a,delimiters:c=["{{","}}"],addonBefore:u,trim:d=!0}=e,m=typeof e.value=="string"?e.value:e.value==null?"":e.value.toString(),p=useVariablesFromValue(m,c),h=(0,import_react2.useRef)(null),[g,f]=(0,import_react2.useState)([]),_=(0,import_react.useForm)(),v=(0,import_react2.useMemo)(()=>createOptionsValueLabelMap(g,a||defaultFieldNames$2),[a,g]),[b,F]=(0,import_react2.useState)(!1),[y,C]=(0,import_react2.useState)(!1),[S,P]=(0,import_react2.useState)(()=>renderHTML(m??"",v,c)),[j,I]=(0,import_react2.useState)([-1,0,-1,0]);(0,import_style.default)("ant-input");const{token:T}=import_antd.theme.useToken(),D=c.join(" "),E=(0,import_react2.useCallback)(V=>{var z;const U=getValue(V,c);(z=e.onChange)==null||z.call(e,d?U.trim():U)},[D,e.onChange,d]);(0,import_react2.useEffect)(()=>{preloadOptions(i,p).then(V=>{f(V)}).catch(console.error)},[i,JSON.stringify(p)]),(0,import_react2.useEffect)(()=>{P(renderHTML(m??"",v,c)),y||I([-1,0,-1,0])},[m,v,D]),(0,import_react2.useEffect)(()=>{var V;const{current:z}=h;if(!z)return;const U=new Range;if(y){if(j.join()==="-1,0,-1,0")return;const K=(V=window.getSelection)==null?void 0:V.call(window);if(K)try{const H=Array.from(z.childNodes);H.length&&(j[0]===-1?j[1]&&U.setStartAfter(H[j[1]-1]):U.setStart(H[j[0]],j[1]),j[2]===-1?j[3]&&U.setEndAfter(H[j[3]-1]):U.setEnd(H[j[2]],j[3])),U.collapse(!0),K.removeAllRanges(),K.addRange(U)}catch{}}else{const{lastChild:K}=z;if(K){U.setStartAfter(K),U.setEndAfter(K);const H=Array.from(z.childNodes),Y=U.startContainer===z?-1:H.indexOf(K),Z=U.startContainer===z?-1:H.indexOf(K);I([Y,U.startOffset,Z,U.endOffset])}}},[S]);const w=(0,import_react2.useCallback)(function(V){const z=V.filter(H=>!!H.trim()),{current:U}=h;if(!U||!z)return;U.focus();const K=createVariableTagHTML(z.join("."),v);pasteHTML(U,K,{range:j}),C(!0),I(getCurrentRange(U)),E(U)},[v,E,j]),k=(0,import_react2.useCallback)(function({currentTarget:V}){b||(C(!0),I(getCurrentRange(V)),E(V))},[b,E]),N=(0,import_react2.useCallback)(function({currentTarget:V}){I(getCurrentRange(V))},[]),B=(0,import_react2.useCallback)(function(V){V.key==="Enter"&&V.preventDefault()},[]),M=(0,import_react2.useCallback)(function(){F(!0)},[]),$=(0,import_react2.useCallback)(({currentTarget:V})=>{F(!1),C(!0),I(getCurrentRange(V)),E(V)},[E]),q=(0,import_react2.useCallback)(function(V){V.preventDefault();const z=V.clipboardData.getData("text/html")||V.clipboardData.getData("text"),U=(0,import_sanitize_html.default)(z,{allowedTags:["span"],allowedAttributes:{span:["data-variable","contenteditable"]},allowedClasses:{span:["ant-tag","ant-tag-*"]},transformTags:{span(K,H){return H["data-variable"]?{tagName:K,attribs:H}:{}}}}).replace(/\n/g," ");C(!0),pasteHTML(V.currentTarget,U),I(getCurrentRange(V.currentTarget)),E(V.currentTarget)},[E]),O=e.disabled||_.disabled;return t((0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsxs)(import_antd.Space.Compact,{className:(0,import_css.cx)(r,o,import_css.css`
|
|
461
461
|
display: flex;
|
|
462
462
|
.ant-input {
|
|
463
463
|
flex-grow: 1;
|
|
@@ -1770,6 +1770,16 @@ ${u}`;return clampText(m,MAX_MESSAGE_CHARS)}}const i=e.issues.filter(c=>c.type==
|
|
|
1770
1770
|
> .ant-tabs-nav .ant-tabs-tab {
|
|
1771
1771
|
min-width: 54px;
|
|
1772
1772
|
}
|
|
1773
|
+
|
|
1774
|
+
> .ant-tabs-nav .ant-tabs-tab .ant-tabs-tab-btn {
|
|
1775
|
+
display: block;
|
|
1776
|
+
width: 100%;
|
|
1777
|
+
}
|
|
1778
|
+
|
|
1779
|
+
> .ant-tabs-nav .ant-tabs-tab .ant-tabs-tab-btn > [data-has-float-menu='true'] {
|
|
1780
|
+
display: block;
|
|
1781
|
+
width: 100%;
|
|
1782
|
+
}
|
|
1773
1783
|
`;class PageModel extends import_flow_engine.FlowModel{constructor(){super(...arguments),R(this,"tabBarExtraContent",{}),R(this,"viewActivatedListener"),R(this,"dataSourceDirtyListener"),R(this,"lastSeenEmitterViewActivatedVersion",0),R(this,"dirtyRefreshScheduled",!1),R(this,"unmounted",!1),R(this,"documentTitleUpdateVersion",0),R(this,"createPageTabModelOptions",()=>{const t=(0,import_shared.uid)();return{uid:t,use:"RootPageTabModel",props:{route:{parentId:this.props.routeId,type:"tabs",schemaUid:t,tabSchemaName:(0,import_shared.uid)(),params:[],hideInMenu:!1,enableTabs:!1}}}})}getActiveTabKey(){var t,o,r,i;const n=(o=(t=this.context.view)==null?void 0:t.navigation)==null?void 0:o.viewParams;return n?n.tabUid||((r=this.getFirstTab())==null?void 0:r.uid):this.props.tabActiveKey||((i=this.getFirstTab())==null?void 0:i.uid)}scheduleActiveLifecycleRefresh(t=!1){this.dirtyRefreshScheduled||(this.dirtyRefreshScheduled=!0,Promise.resolve().then(()=>{if(this.dirtyRefreshScheduled=!1,this.unmounted||(0,import_flow_engine.getPageActive)(this.context)===!1)return;const o=this.getActiveTabKey();o&&this.invokeTabModelLifecycleMethod(o,"onActive",t)}).catch(()=>{}))}onMount(){var t,o,r,i,n,l,a,c,u;super.onMount(),this.unmounted=!1,this.setProps("tabActiveKey",(t=this.context.view.inputArgs)==null?void 0:t.tabUid),(o=this.context)!=null&&o.pageInfo&&(this.context.pageInfo.version="v2"),this.updateDocumentTitle(),this.viewActivatedListener||(this.viewActivatedListener=p=>{const h=this.getActiveTabKey();h&&this.invokeTabModelLifecycleMethod(h,"onActive")},(n=(i=(r=this.flowEngine)==null?void 0:r.emitter)==null?void 0:i.on)==null||n.call(i,import_flow_engine.VIEW_ACTIVATED_EVENT,this.viewActivatedListener));const d=(0,import_flow_engine.getEmitterViewActivatedVersion)((l=this.flowEngine)==null?void 0:l.emitter),m=d>0&&d!==this.lastSeenEmitterViewActivatedVersion;if(this.lastSeenEmitterViewActivatedVersion=d,m&&(0,import_flow_engine.getPageActive)(this.context)!==!1){const p=this.getActiveTabKey();p&&this.invokeTabModelLifecycleMethod(p,"onActive")}this.dataSourceDirtyListener||(this.dataSourceDirtyListener=p=>{this.scheduleActiveLifecycleRefresh()},(u=(c=(a=this.flowEngine)==null?void 0:a.emitter)==null?void 0:c.on)==null||u.call(c,import_flow_engine.DATA_SOURCE_DIRTY_EVENT,this.dataSourceDirtyListener))}onUnmount(){var t,o,r,i,n,l;this.unmounted=!0,this.viewActivatedListener&&((r=(o=(t=this.flowEngine)==null?void 0:t.emitter)==null?void 0:o.off)==null||r.call(o,import_flow_engine.VIEW_ACTIVATED_EVENT,this.viewActivatedListener),this.viewActivatedListener=void 0),this.dataSourceDirtyListener&&((l=(n=(i=this.flowEngine)==null?void 0:i.emitter)==null?void 0:n.off)==null||l.call(n,import_flow_engine.DATA_SOURCE_DIRTY_EVENT,this.dataSourceDirtyListener),this.dataSourceDirtyListener=void 0),super.onUnmount()}invokeTabModelLifecycleMethod(t,o,r=!1){var i,n;o==="onActive"&&(i=this.context)!=null&&i.pageInfo&&(this.context.pageInfo.version="v2");const l=this.flowEngine.getModel(t);if(l){if(l.context.tabActive){const a=(0,import_flow_engine.getPageActive)(l.context)!==!1;l.context.tabActive.value=a&&o==="onActive"}(n=l.subModels.grid)==null||n.mapSubModels("items",a=>{var c;(c=a[o])==null||c.call(a,r)})}o==="onActive"&&this.updateDocumentTitle(t)}updateDocumentTitle(t,o=0){return L(this,null,function*(){var r,i,n,l,a,c,u,d,m,p,h,g,f,_,v,b;if(this.unmounted||(0,import_flow_engine.getPageActive)(this.context)===!1)return;const F=!!((i=(r=this.context)==null?void 0:r.view)!=null&&i.navigation),y=(a=(l=(n=this.context)==null?void 0:n.view)==null?void 0:l.inputArgs)==null?void 0:a.viewUid,C=(d=(u=(c=this.flowEngine)==null?void 0:c.context)==null?void 0:u.route)==null?void 0:d.pathname;if(F&&y&&typeof C=="string"){const I=(m=(0,import_flow_engine.parsePathnameToViewParams)(C).at(-1))==null?void 0:m.viewUid;if(I&&I!==y)return}const S=++this.documentTitleUpdateVersion,P=I=>L(this,null,function*(){var T,D;if(!I||typeof I!="string")return"";try{const E=yield(D=(T=this.context).resolveJsonTemplate)==null?void 0:D.call(T,I);return E==null?"":String(E)}catch{return I}});let j="";if(this.props.enableTabs){const I=t||this.getActiveTabKey(),T=I?this.flowEngine.getModel(I):this.getFirstTab();if(!T&&o<5){window.setTimeout(()=>{this.unmounted||S===this.documentTitleUpdateVersion&&this.updateDocumentTitle(I,o+1)},0);return}j=(yield P((g=(h=(p=T==null?void 0:T.stepParams)==null?void 0:p.pageTabSettings)==null?void 0:h.tab)==null?void 0:g.documentTitle))||((f=T==null?void 0:T.getTabTitle)==null?void 0:f.call(T))||""}else j=(yield P((b=(v=(_=this.stepParams)==null?void 0:_.pageSettings)==null?void 0:v.general)==null?void 0:b.documentTitle))||this.props.title||"";S===this.documentTitleUpdateVersion&&typeof j=="string"&&j!==""&&(document.title=j)})}mapTabs(){return this.mapSubModels("tabs",t=>!this.context.flowSettingsEnabled&&t.hidden?null:{key:t.uid,label:(0,import_jsx_runtime.jsx)(import_flow_engine.Droppable,{model:t,children:(0,import_jsx_runtime.jsx)(import_flow_engine.FlowModelRenderer,{model:t,showFlowSettings:{showBackground:!0,showBorder:!1,toolbarPosition:"above",style:{transform:"translateY(8px)"}},extraToolbarItems:[{key:"drag-handler",component:import_flow_engine.DragHandler,sort:1}]})}),children:t.renderChildren()}).filter(Boolean)}getFirstTab(){var t;return(t=this.subModels.tabs)==null?void 0:t[0]}renderFirstTab(){var t;const o=this.getFirstTab();return(t=o==null?void 0:o.renderChildren)==null?void 0:t.call(o)}handleDragEnd(t){return L(this,null,function*(){throw new Error("Method not implemented.")})}renderTabs(){var t,o,r,i,n;const l=(o=(t=this.context.themeToken)==null?void 0:t.paddingLG)!=null?o:16,a=this.context.flowSettingsEnabled?TABS_DESIGN_MODE_ROOT_CLASS_NAME:void 0,c=this.tabBarExtraContent.left!==void 0?this.tabBarExtraContent.left:(0,import_jsx_runtime.jsx)("span",{"aria-hidden":"true",style:{display:"inline-block",width:l,height:1}}),u=this.tabBarExtraContent.right!==void 0?this.tabBarExtraContent.right:(0,import_jsx_runtime.jsx)(import_flow_engine.AddSubModelButton,{model:this,subModelKey:"tabs",items:[{key:"blank",label:this.context.t("Blank tab"),createModelOptions:this.createPageTabModelOptions}],children:(0,import_jsx_runtime.jsx)(import_flow_engine.FlowSettingsButton,{icon:(0,import_jsx_runtime.jsx)(import_icons.PlusOutlined,{}),children:this.context.t("Add tab")})});return(0,import_jsx_runtime.jsx)(import_flow_engine.DndProvider,{onDragEnd:this.handleDragEnd.bind(this),children:(0,import_jsx_runtime.jsx)(import_antd.Tabs,{className:a,activeKey:(i=(r=this.context.view)==null?void 0:r.navigation)!=null&&i.viewParams?this.context.view.navigation.viewParams.tabUid||((n=this.getFirstTab())==null?void 0:n.uid):this.props.tabActiveKey,tabBarStyle:this.props.tabBarStyle,items:this.mapTabs(),onChange:d=>{var m,p;(p=(m=this.context.view.navigation)==null?void 0:m.changeTo)==null||p.call(m,{tabUid:d}),this.invokeTabModelLifecycleMethod(d,"onActive"),this.invokeTabModelLifecycleMethod(this.props.tabActiveKey,"onInactive"),this.setProps("tabActiveKey",d)},tabBarExtraContent:{left:c,right:u}})})}render(){const t=this.context.themeToken,o=x({},this.props.headerStyle);return t&&(o.paddingBlock=t.paddingSM,o.paddingInline=t.paddingLG),this.props.enableTabs&&(o.paddingBottom=0),(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[this.props.displayTitle&&(0,import_jsx_runtime.jsx)(import_pro_layout.PageHeader,{title:this.props.title,style:o}),this.props.enableTabs?this.renderTabs():this.renderFirstTab()]})}}PageModel.registerEvents({close:{title:(0,import_flow_engine.tExpr)("Close"),name:"close",hideInSettings(e){var t;return!!((t=e.view)!=null&&t.preventClose)},uiSchema:{condition:{type:"object",title:(0,import_flow_engine.tExpr)("Trigger condition"),"x-decorator":"FormItem","x-component":ConditionBuilder}},handler:commonConditionHandler}});PageModel.registerFlow({key:"closeGuard",title:(0,import_flow_engine.tExpr)("Close guard"),on:"close",steps:{confirmUnsavedChanges:{title:(0,import_flow_engine.tExpr)("Unsaved changes confirmation"),handler(e){return L(this,null,function*(){var t,o,r,i,n;(o=(t=e.inputArgs)==null?void 0:t.dirty)!=null&&o.hasDirtyForms&&((yield e.modal.confirm({title:e.t("Unsaved changes"),content:e.t("Are you sure you don't want to save?"),okText:e.t("Confirm"),cancelText:e.t("Cancel")}))||((n=(i=(r=e.inputArgs)==null?void 0:r.controller)==null?void 0:i.prevent)==null||n.call(i),e.exitAll()))})}}}});PageModel.registerFlow({key:"pageSettings",title:(0,import_flow_engine.tExpr)("Page settings"),steps:{general:{title:(0,import_flow_engine.tExpr)("Edit page"),uiSchema:{title:{type:"string",title:(0,import_flow_engine.tExpr)("Page title"),"x-decorator":"FormItem","x-component":"Input","x-reactions":{dependencies:["displayTitle"],fulfill:{state:{visible:"{{$deps[0]}}"}}}},documentTitle:{type:"string",title:(0,import_flow_engine.tExpr)("Document title"),description:(0,import_flow_engine.tExpr)("Used as the browser tab title when tabs are disabled. Supports variables. Leave empty to use Page title."),"x-decorator":"FormItem","x-component":TextAreaWithContextSelector,"x-component-props":{rows:1,maxRows:6}},displayTitle:{type:"boolean",title:(0,import_flow_engine.tExpr)("Display page title"),"x-decorator":"FormItem","x-component":"Switch"},enableTabs:{type:"boolean",title:(0,import_flow_engine.tExpr)("Enable tabs"),"x-decorator":"FormItem","x-component":"Switch"}},defaultParams(e){return{displayTitle:!0,enableTabs:!1}},handler(e,t){return L(this,null,function*(){var o,r;if(e.model.setProps("displayTitle",t.displayTitle),e.model.context.closable)e.model.setProps("title",e.t(t.title,{ns:"lm-desktop-routes"}));else{const i=(r=(o=e.model.context)==null?void 0:o.currentRoute)==null?void 0:r.title;e.model.setProps("title",e.t(t.title||i,{ns:"lm-desktop-routes"}))}e.model.setProps("enableTabs",t.enableTabs),e.view.type==="embed"?(e.model.setProps("headerStyle",{backgroundColor:"var(--colorBgContainer)"}),e.model.setProps("tabBarStyle",{backgroundColor:"var(--colorBgContainer)",marginBottom:0})):(e.model.setProps("headerStyle",{backgroundColor:"var(--colorBgLayout)"}),e.model.setProps("tabBarStyle",{backgroundColor:"var(--colorBgLayout)",marginBottom:0})),e.model.updateDocumentTitle()})}}}});class ChildPageModel extends PageModel{constructor(){super(...arguments),R(this,"tabBarExtraContent",{left:(0,import_jsx_runtime.jsx)(BackButtonUsedInSubPage,{})}),R(this,"createPageTabModelOptions",()=>({use:"ChildPageTabModel"}))}renderBackButtonWhenTabsDisabled(){var t,o,r,i;if(((o=(t=this.context)==null?void 0:t.view)==null?void 0:o.type)!=="embed")return null;const n=(r=this.context)==null?void 0:r.themeToken,l=A(x({},this.props.tabBarStyle),{paddingBlock:(i=n==null?void 0:n.paddingXS)!=null?i:8});return(0,import_jsx_runtime.jsx)("div",{style:l,children:(0,import_jsx_runtime.jsx)(BackButtonUsedInSubPage,{renderSpacerWhenNoBack:!1})})}handleDragEnd(t){return L(this,null,function*(){var o,r;if(!((o=t.active)!=null&&o.id)||!((r=t.over)!=null&&r.id))throw new Error("Invalid drag event");this.flowEngine.moveModel(t.active.id,t.over.id)})}render(){return(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[this.props.displayTitle&&this.props.title&&(0,import_jsx_runtime.jsx)(import_pro_layout.PageHeader,{title:this.props.title,style:this.props.headerStyle}),this.props.enableTabs?this.renderTabs():(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[this.renderBackButtonWhenTabsDisabled(),this.renderFirstTab()]})]})}}const BackButtonUsedInSubPage=({renderSpacerWhenNoBack:e=!0})=>{var t;const o=(0,import_flow_engine.useFlowContext)(),r=o.themeToken,i=32,n=(t=r==null?void 0:r.paddingLG)!=null?t:16,l=(0,import_react2.useMemo)(()=>({width:"auto",height:"auto",lineHeight:1,padding:r.paddingXS,marginLeft:r.paddingLG,marginRight:i-r.paddingXS}),[r.paddingLG,r.paddingXS]);return o.view.type!=="embed"?e?(0,import_jsx_runtime.jsx)("span",{"aria-hidden":"true",style:{display:"inline-block",width:n,height:1}}):null:(0,import_jsx_runtime.jsx)(import_antd.Button,{"aria-label":"back-button",type:"text",icon:(0,import_jsx_runtime.jsx)(import_icons.ArrowLeftOutlined,{}),style:l,onClick:o.view.close})};class OldPageModel extends import_flow_engine.FlowModel{}OldPageModel.registerFlow({key:"pageSettings",title:(0,import_flow_engine.tExpr)("Page settings"),steps:{general:{title:(0,import_flow_engine.tExpr)("General"),uiSchema:{title:{type:"string",title:(0,import_flow_engine.tExpr)("Page title"),"x-decorator":"FormItem","x-component":"Input","x-reactions":{dependencies:["displayTitle"],fulfill:{state:{visible:"{{$deps[0]}}"}}}},displayTitle:{type:"boolean",title:(0,import_flow_engine.tExpr)("Display page title"),"x-decorator":"FormItem","x-component":"Switch"}},defaultParams(e){return{displayTitle:!0,enableTabs:!1}},handler(e,t){return L(this,null,function*(){var o,r;if(e.model.setProps("displayTitle",t.displayTitle),e.model.context.closable)e.model.setProps("title",t.title?e.t(t.title):null);else{const i=(r=(o=e.model.context)==null?void 0:o.currentRoute)==null?void 0:r.title;e.model.setProps("title",e.t(t.title||i))}e.model.setProps("enableTabs",t.enableTabs),e.model.context.closable?(e.model.setProps("headerStyle",{backgroundColor:e.themeToken.colorBgContainer}),e.model.setProps("tabBarStyle",{backgroundColor:e.themeToken.colorBgLayout,paddingInline:16,marginBottom:0})):(e.model.setProps("headerStyle",{backgroundColor:e.themeToken.colorBgContainer}),e.model.setProps("tabBarStyle",{backgroundColor:e.themeToken.colorBgContainer,paddingInline:16,marginBottom:0}))})}}}});class MainPageModel extends OldPageModel{renderFirstTab(){var t;return(0,import_jsx_runtime.jsx)(import_flow_engine.FlowModelRenderer,{model:(t=this.subModels.tabs)==null?void 0:t[0]})}render(){return(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[this.props.displayTitle&&(0,import_jsx_runtime.jsx)(import_pro_layout.PageHeader,{title:this.props.title,style:this.props.headerStyle}),this.renderFirstTab()]})}}class RouteModel extends import_flow_engine.FlowModel{}RouteModel.registerFlow({key:"popupSettings",on:"click",steps:{openView:{use:"openView",defaultParams(e){return{mode:"embed",preventClose:!0,pageModelClass:"RootPageModel"}}}}});function resolveViewParamsToViewList(e,t,o){return t.map((r,i)=>{let n,l=r.viewUid;return i===0?(n=o,l=o.uid):n=e.getModel(r.viewUid,!0),{params:r,modelUid:l,model:n,hidden:import_flow_engine.observable.ref(!1),index:i}})}function updateViewListHidden(e){let t=!1;for(let o=e.length-1;o>=0;o--){const r=e[o];getViewType(r)==="embed"&&!t?(t=!0,r.hidden.value=!1):r.hidden.value=t}}function getViewType(e){if(e.model instanceof RouteModel)return"embed";if(!e.model)return"drawer";const t=e.model.getStepParams("popupSettings","openView");return(t==null?void 0:t.mode)||"drawer"}const stableStringify=e=>e==null?"":typeof e=="object"?Array.isArray(e)?"["+e.map(stableStringify).join(",")+"]":"{"+Object.keys(e).sort().map(t=>`${t}:${stableStringify(e[t])}`).join(",")+"}":String(e),getKey=e=>{const{params:t,index:o}=e;return[stableStringify(t.viewUid),stableStringify(t.sourceId),stableStringify(t.filterByTk),String(o)].join("_")};function getViewDiffAndUpdateHidden(e,t){const o=new Map,r=new Map;e.forEach(l=>{const a=getKey(l);o.set(a,l)}),t.forEach(l=>{r.set(getKey(l),l)});const i=[];o.forEach((l,a)=>{r.has(a)?r.get(a).hidden=l.hidden:i.push(l)});const n=[];return r.forEach((l,a)=>{o.has(a)||n.push(l)}),{viewsToClose:i,viewsToOpen:n}}const openViewFlow=(0,import_flow_engine.defineFlow)({key:"popupSettings",title:(0,import_flow_engine.tExpr)("Popup settings"),on:"click",sort:300,steps:{openView:{use:"openView",hideInSettings:e=>L(void 0,null,function*(){var t,o,r,i;const n=(r=(o=(t=e.model).getStepParams)==null?void 0:o.call(t,"displayFieldSettings","clickToOpen"))==null?void 0:r.clickToOpen;return e.collectionField?n===void 0?!((i=e.collectionField)!=null&&i.isAssociationField())||e.disableFieldClickToOpen:n===!1:!1})}},defaultParams:e=>{var t,o,r,i,n,l,a,c;let u,d,m;const p=e.collectionField,h=e.blockModel,g=(o=(t=e.model)==null?void 0:t.parent)==null?void 0:o.associationPathName,f=e.collection||(h==null?void 0:h.collection),_=F=>{var y;return!!((y=F==null?void 0:F.isAssociationField)!=null&&y.call(F))},v=!_(p)&&g?(r=f==null?void 0:f.getFieldByPath)==null?void 0:r.call(f,g):void 0,b=_(p)?p:v;if(_(b)){const F=b.targetCollection;h==null||h.collection,u=F==null?void 0:F.name,d=F==null?void 0:F.dataSourceKey,m=b==null?void 0:b.resourceName}else p?(u=(i=e.collection)==null?void 0:i.name,d=(n=e.collection)==null?void 0:n.dataSourceKey,m=p==null?void 0:p.target):(u=(l=e.collection)==null?void 0:l.name,d=(a=e.collection)==null?void 0:a.dataSourceKey,m=(c=e.association)==null?void 0:c.resourceName);return{openView:{collectionName:u,associationName:m,dataSourceKey:d}}}}),getOpenViewStepParams=e=>e.getStepParams("popupSettings","openView");function InternalFlowPage(e){var t=e,{uid:o}=t,r=ee(t,["uid"]);const i=(0,import_flow_engine.useFlowModelById)(o);return(0,import_jsx_runtime.jsx)(import_flow_engine.FlowModelRenderer,x({model:i,fallback:(0,import_jsx_runtime.jsx)(SkeletonFallback,{style:{margin:i!=null&&i.context.isMobileLayout?8:i==null?void 0:i.context.themeToken.marginBlock}}),hideRemoveInSettings:!0,showFlowSettings:{showBackground:!1,showBorder:!1}},r))}const FlowRoute=()=>{const e=(0,import_react2.useRef)(null),t=(0,import_flow_engine.useFlowEngine)(),o=useCurrentRoute(),{refresh:r}=useAllAccessDesktopRoutes(),{isMobileLayout:i}=useMobileLayout(),n=(0,import_react2.useRef)(t.context.route.params.name),l=(0,import_react2.useRef)({}),a=(0,import_react2.useRef)([]),c=(0,import_react2.useRef)(!1),{designable:u}=useDesignable(),{active:d}=useKeepAlive(),m=(0,import_react2.useRef)(!1),p=(0,import_react2.useMemo)(()=>t.createModel({uid:n.current,use:"RouteModel"}),[t]);return(0,import_react2.useEffect)(()=>{p.context.defineProperty("pageActive",{value:import_flow_engine.observable.ref(!1),info:{description:"Whether current page route is active (keep-alive). This is an observable.ref<boolean> (use ctx.pageActive.value to read/write).",detail:"observable.ref<boolean>"}})},[p]),(0,import_react2.useEffect)(()=>{p.context.pageActive.value=d},[d,p]),(0,import_react2.useEffect)(()=>{t.context.defineProperty("isMobileLayout",{get:()=>i,info:{description:"Whether current layout is mobile layout.",detail:"boolean"}}),t.context.defineProperty("deviceType",{get:()=>import_react_device_detect.deviceType==="browser"?"computer":import_react_device_detect.deviceType,cache:!1,meta:{type:"string",title:t.translate("Current device type"),interface:"select",uiSchema:{enum:[{label:t.translate("Computer"),value:"computer"},{label:t.translate("Mobile"),value:"mobile"},{label:t.translate("Tablet"),value:"tablet"},{label:t.translate("SmartTv"),value:"smarttv"},{label:t.translate("Console"),value:"console"},{label:t.translate("Wearable"),value:"wearable"},{label:t.translate("Embedded"),value:"embedded"}],"x-component":"Select"}},info:{description:"Current device type (computer/mobile/tablet/...).",detail:"string"}})},[i,t]),(0,import_react2.useEffect)(()=>{i?t.flowSettings.disable():u&&t.flowSettings.enable()},[u,t,i]),(0,import_react2.useEffect)(()=>{e.current&&(t.context.defineProperty("layoutContentElement",{get:()=>e.current}),p.context.defineProperty("currentRoute",{get:()=>o}),t.context.defineProperty("currentRoute",{get:()=>o}),p.context.defineProperty("refreshDesktopRoutes",{get:()=>r}))},[p,o,r,t]),(0,import_react2.useEffect)(()=>{const h=(0,import_flow_engine.reaction)(()=>t.context.route,g=>{var f;if(g.params.name!==n.current){m.current=!0;return}try{m.current=!1;const _=(0,import_flow_engine.parsePathnameToViewParams)(g.pathname),v=resolveViewParamsToViewList(t,_,p);if(a.current.length===0&&v.length>1&&!c.current){const y=C=>{v[C]&&(C===0?new import_flow_engine.ViewNavigation(t.context,[]).navigateTo(v[C].params,{replace:!0}):new import_flow_engine.ViewNavigation(t.context,v.slice(0,C).map(S=>S.params)).navigateTo(v[C].params),y(C+1))};y(0),c.current=!0;return}const{viewsToClose:b,viewsToOpen:F}=getViewDiffAndUpdateHidden(a.current,v);if(console.log("[NocoBase] FlowRoute view diff:",{viewsToClose:b,viewsToOpen:F}),b.length&&(b.forEach(y=>{var C,S;(S=(C=l.current[getKey(y)])==null?void 0:C.destroy)==null||S.call(C,!0),delete l.current[getKey(y)]}),updateViewListHidden(v)),F.length&&L(void 0,null,function*(){const y=F.filter(S=>!S.model);if(y.length>0&&(yield Promise.all(y.map(S=>L(void 0,null,function*(){try{S.model=yield t.loadModel({uid:S.modelUid})}catch(P){console.error(`[NocoBase] Failed to load model ${S.modelUid}:`,P)}})))),m.current)return;updateViewListHidden(v);const C=S=>{if(!F[S])return;const P=F[S];if(!P.model)return;const j=import_react2.default.createRef(),I=import_react2.default.createRef(),T=getOpenViewStepParams(P.model),D=v.slice(0,P.index).map(w=>w.params.viewUid),E=new import_flow_engine.ViewNavigation(t.context,v.slice(0,P.index+1).map(w=>w.params));P.model.dispatchEvent("click",A(x({target:e.current,collectionName:T==null?void 0:T.collectionName,associationName:T==null?void 0:T.associationName,dataSourceKey:T==null?void 0:T.dataSourceKey,destroyRef:j,updateRef:I,openerUids:D},P.params),{navigation:E,onOpen(){C(S+1)},hidden:P.hidden,isMobileLayout:i,triggerByRouter:!0})),l.current[getKey(P)]={destroy:w=>{var k;return(k=j.current)==null?void 0:k.call(j)},update:w=>{var k;return(k=I.current)==null?void 0:k.call(I,w)},navigation:E}};C(0)}),b.length===0&&F.length===0){const y=v.at(-1);y&&((f=l.current[getKey(y)])==null||f.navigation.setViewStack(v.map(C=>C.params)))}a.current=[...v]}catch(_){console.error("[NocoBase] Failed to resolve view params to view list:",_)}},{fireImmediately:!0});return()=>{h==null||h(),a.current.forEach(g=>{var f;t.removeModelWithSubModels(g.params.viewUid),(f=l.current[getKey(g)])==null||f.destroy()})}},[t,i,p]),(0,import_jsx_runtime.jsx)("div",{ref:e})},FlowPage=import_react2.default.memo(e=>{const t=e,{pageModelClass:o="ChildPageModel",parentId:r,onModelLoaded:i,defaultTabTitle:n}=t,l=ee(t,["pageModelClass","parentId","onModelLoaded","defaultTabTitle"]),a=(0,import_flow_engine.useFlowEngine)(),c=(0,import_flow_engine.useFlowViewContext)(),{loading:u,data:d}=(0,import_ahooks.useRequest)(()=>L(void 0,null,function*(){var m;const p={async:!0,parentId:r,subKey:"page",subType:"object",use:o};if(o==="ChildPageModel"){const g=n||((m=a.translate)==null?void 0:m.call(a,"Details"));p.subModels={tabs:[{use:"ChildPageTabModel",stepParams:{pageTabSettings:{tab:{title:g}}}}]},p.stepParams={pageSettings:{general:{displayTitle:!1,enableTabs:!0}}}}const h=yield a.loadOrCreateModel(p,{skipSave:!a.context.flowSettingsEnabled});return h!=null&&h.uid&&i&&(h.context.addDelegate(c),h.removeParentDelegate(),i(h.uid,h)),h}),{refreshDeps:[r]});return u||!(d!=null&&d.uid)?(0,import_jsx_runtime.jsx)(SkeletonFallback,{style:{margin:c!=null&&c.isMobileLayout?8:c==null?void 0:c.themeToken.marginBlock}}):(0,import_jsx_runtime.jsx)(InternalFlowPage,x({uid:d.uid},l))});FlowPage.displayName="FlowPage";const RemoteFlowModelRenderer=e=>{const t=e,{uid:o,parentId:r,subKey:i}=t,n=ee(t,["uid","parentId","subKey"]),l=(0,import_flow_engine.useFlowEngine)(),{loading:a,data:c}=(0,import_ahooks.useRequest)(()=>L(void 0,null,function*(){return yield l.loadModel({uid:o,parentId:r,subKey:i})}),{refreshDeps:[o,r,i]});return a||!(c!=null&&c.uid)?(0,import_jsx_runtime.jsx)(SkeletonFallback,{style:{margin:16}}):(0,import_jsx_runtime.jsx)(InternalFlowPage,x({uid:c.uid},n))};function PageTabChildrenRenderer({ctx:e,options:t}){const{data:o,loading:r}=(0,import_ahooks.useRequest)(()=>L(this,null,function*(){const n=yield e.engine.loadOrCreateModel(t,{skipSave:!e.flowSettingsEnabled});return n.context.addDelegate(e),n}),{refreshDeps:[e.model.uid]}),i=e!=null&&e.isMobileLayout?8:e==null?void 0:e.themeToken.marginBlock;return r||!(o!=null&&o.uid)?(0,import_jsx_runtime.jsx)(SkeletonFallback,{style:{margin:i}}):(0,import_jsx_runtime.jsx)(import_flow_engine.FlowModelRenderer,{model:o,fallback:(0,import_jsx_runtime.jsx)(SkeletonFallback,{style:{margin:i}})})}function normalizePersistedRoute(e){if(Array.isArray(e))return e.find(t=>!!t&&typeof t=="object");if(e&&typeof e=="object")return e}class BasePageTabModel extends import_flow_engine.FlowModel{onInit(t){super.onInit(t),this.context.defineProperty("tabActive",{value:import_flow_engine.observable.ref(!0),info:{description:"Whether current tab is active (observable.ref).",detail:"observable.ref<boolean>"}})}getTabTitle(t="Untitled"){var o,r;const i=this.context.t(t,{ns:"client"});return this.context.t((r=(o=this.stepParams.pageTabSettings)==null?void 0:o.tab)==null?void 0:r.title,{ns:"lm-desktop-routes"})||i}getTabIcon(){var t,o;return(o=(t=this.stepParams.pageTabSettings)==null?void 0:t.tab)==null?void 0:o.icon}renderChildren(){return null}renderHiddenInConfig(){return(0,import_jsx_runtime.jsxs)("span",{style:{display:"inline-block",paddingTop:this.context.flowSettingsEnabled?10:0,opacity:.5},children:[(0,import_jsx_runtime.jsx)(Icon,{style:{marginRight:8},type:this.getTabIcon()}),this.getTabTitle()]})}render(){return(0,import_jsx_runtime.jsxs)("span",{style:{display:"inline-block",paddingTop:this.context.flowSettingsEnabled?10:0},children:[(0,import_jsx_runtime.jsx)(Icon,{style:{marginRight:8},type:this.getTabIcon()}),this.getTabTitle()]})}}BasePageTabModel.registerFlow({key:"pageTabSettings",title:(0,import_flow_engine.tExpr)("Tab settings"),steps:{tab:{title:(0,import_flow_engine.tExpr)("Edit tab"),preset:!0,uiSchema:{title:{title:(0,import_flow_engine.tExpr)("Tab name"),"x-component":"Input","x-decorator":"FormItem",required:!0},documentTitle:{type:"string",title:(0,import_flow_engine.tExpr)("Document title"),description:(0,import_flow_engine.tExpr)("Used as the browser tab title when this tab is active. Supports variables. Leave empty to use Tab name."),"x-decorator":"FormItem","x-component":TextAreaWithContextSelector,"x-component-props":{rows:1,maxRows:6}},icon:{title:(0,import_flow_engine.tExpr)("Icon"),"x-decorator":"FormItem","x-component":"IconPicker"}},handler(e,t){return L(this,null,function*(){var o;const r=typeof(e==null?void 0:e.t)=="function"?e.t.bind(e):n=>n;e.model.setProps("title",r(t.title,{ns:"lm-desktop-routes"})),e.model.setProps("icon",t.icon);const i=e.engine.getModel(e.model.parentId);(o=i==null?void 0:i.updateDocumentTitle)==null||o.call(i)})}}}});class RootPageTabModel extends BasePageTabModel{renderChildren(){return(0,import_jsx_runtime.jsx)(PageTabChildrenRenderer,{ctx:this.context,options:{parentId:this.uid,subKey:"grid",async:!0,subType:"object",use:"BlockGridModel"}})}saveStepParams(){return L(this,null,function*(){return this.save()})}save(){return L(this,null,function*(){var t,o,r,i,n;const l=this.serialize(),a=(r=(o=(t=this.stepParams)==null?void 0:t.pageTabSettings)==null?void 0:o.tab)==null?void 0:r.documentTitle,c=yield this.context.api.request({method:"post",url:"desktopRoutes:updateOrCreate",params:{filterKeys:["schemaUid"]},data:A(x({},this.props.route),{title:this.getTabTitle(""),icon:this.getTabIcon(),options:{flowRegistry:l.flowRegistry,documentTitle:a}})}),u=normalizePersistedRoute((i=c==null?void 0:c.data)==null?void 0:i.data);u&&this.setProps("route",A(x(x({},this.props.route),u),{options:x(x({},(n=this.props.route)==null?void 0:n.options),u.options)}))})}destroy(){return L(this,null,function*(){return this.observerDispose(),this.invalidateFlowCache("beforeRender",!0),this.flowEngine.removeModel(this.uid),yield this.context.api.request({method:"post",url:"desktopRoutes:destroy",params:{filter:{schemaUid:this.uid}},data:this.props.route}),!0})}}class ChildPageTabModel extends BasePageTabModel{renderChildren(){return(0,import_jsx_runtime.jsx)(PageTabChildrenRenderer,{ctx:this.context,options:{parentId:this.uid,subKey:"grid",async:!0,subType:"object",use:"BlockGridModel"}})}}class PageTabModel extends import_flow_engine.FlowModel{render(){return(0,import_jsx_runtime.jsx)("div",{children:(0,import_jsx_runtime.jsx)(RemoteFlowModelRenderer,{parentId:this.uid,subKey:"grid",showFlowSettings:!1})})}}class RootPageModel extends PageModel{constructor(){super(...arguments),R(this,"mounted",!1)}ensurePersistedRouteId(t){return L(this,null,function*(){var o,r,i,n;const l=(r=(o=t==null?void 0:t.props)==null?void 0:o.route)==null?void 0:r.id;return l??(typeof(t==null?void 0:t.save)=="function"&&(yield t.save()),(n=(i=t==null?void 0:t.props)==null?void 0:i.route)==null?void 0:n.id)})}onMount(){super.onMount(),(0,import_flow_engine.reaction)(()=>this.context.pageActive.value,()=>{var t,o;if(this.context.pageActive.value&&this.mounted){const r=(t=this.subModels.tabs)==null?void 0:t[0];r&&(this.setProps("tabActiveKey",r.uid),this.invokeTabModelLifecycleMethod(r.uid,"onActive",!0))}if(this.context.pageActive.value===!1)if(this.props.tabActiveKey)this.invokeTabModelLifecycleMethod(this.props.tabActiveKey,"onInactive");else{const r=(o=this.subModels.tabs)==null?void 0:o[0];r&&this.invokeTabModelLifecycleMethod(r.uid,"onInactive")}this.mounted=!0})}saveStepParams(){return L(this,null,function*(){yield Ne(RootPageModel.prototype,this,"saveStepParams").call(this),this.stepParams.pageSettings&&this.context.api.request({url:`desktopRoutes:update?filter[id]=${this.props.routeId}`,method:"post",data:{enableTabs:!!this.stepParams.pageSettings.general.enableTabs}})})}handleDragEnd(t){return L(this,null,function*(){var o,r;const i=this.flowEngine.getModel((o=t.active)==null?void 0:o.id),n=this.flowEngine.getModel((r=t.over)==null?void 0:r.id);if(!i||!n||i.uid===n.uid)return;const[l,a]=yield Promise.all([this.ensurePersistedRouteId(i),this.ensurePersistedRouteId(n)]);l==null||a==null||(yield this.context.api.request({url:"desktopRoutes:move",method:"post",params:{sourceId:l,targetId:a,sortField:"sort"}}),this.flowEngine.moveModel(i.uid,n.uid,{persist:!1}))})}}RootPageModel.registerFlow({key:"rootPageSettings",steps:{init:{handler(e,t){return L(this,null,function*(){var o,r;if(e.model.hasSubModel("tabs"))return;const i=e.routeRepository.getRouteBySchemaUid(e.model.parentId);e.model.setProps("routeId",i==null?void 0:i.id);const n=import_lodash.default.castArray(i==null?void 0:i.children);for(const l of n.sort((a,c)=>a.sort-c.sort)){if(l.hideInMenu)continue;const a=e.engine.createModel({parentId:e.model.uid,uid:l.schemaUid,subKey:"tabs",subType:"array",use:"RootPageTabModel",sortIndex:l.sort,props:{route:l},flowRegistry:(o=l.options)==null?void 0:o.flowRegistry,stepParams:{pageTabSettings:{tab:{title:l.title,icon:l.icon,documentTitle:(r=l.options)==null?void 0:r.documentTitle}}}});e.model.addSubModel("tabs",a)}})}}}});class SubPageModel extends OldPageModel{renderFirstTab(){var t;return(0,import_jsx_runtime.jsx)(import_flow_engine.FlowModelRenderer,{model:(t=this.subModels.tabs)==null?void 0:t[0]})}render(){return(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[this.props.displayTitle&&(0,import_jsx_runtime.jsx)(import_pro_layout.PageHeader,{title:this.props.title,style:this.props.headerStyle}),this.renderFirstTab()]})}}class PopupActionModel extends ActionModel{constructor(){super(...arguments),R(this,"defaultProps",{title:(0,import_flow_engine.tExpr)("Popup"),icon:"ExportOutlined"})}}PopupActionModel.define({label:(0,import_flow_engine.tExpr)("Popup")});PopupActionModel.registerFlow(openViewFlow);class RecordActionModel extends ActionModel{}RecordActionModel.define({children:e=>L(void 0,null,function*(){return(yield(0,import_flow_engine.buildSubModelItems)(ActionModel)(e)).filter(t=>e.engine.getModelClass(t.useModel)._isScene(ActionSceneEnum.record))})});class InputFieldModel extends FieldModel{render(){return(0,import_jsx_runtime.jsx)(import_antd.Input,x({},this.props))}}InputFieldModel.registerFlow({key:"defaultValueForNanoid",steps:{generateNanoid:{handler(e,t){var o,r;(r=(o=e.blockModel)==null?void 0:o.emitter)==null||r.on("onFieldReset",()=>{if(e.collectionField.interface==="nanoid"&&e.collectionField.options.autoFill!==!1){const{size:i,customAlphabet:n}=e.collectionField.options||{size:21};e.model.props.onChange((0,import_nanoid.customAlphabet)(n,i)())}})}}}});InputFieldModel.define({label:(0,import_flow_engine.tExpr)("Input")});import_flow_engine.EditableItemModel.bindModelToInterface("InputFieldModel",["input","email","phone","uuid","url","nanoid"],{isDefault:!0});import_flow_engine.FilterableItemModel.bindModelToInterface("InputFieldModel",["input","email","phone","uuid","url","nanoid","textarea","markdown","vditor","richText","password","color"],{isDefault:!0});const ARRAY_VALUE_OPERATORS=new Set(["$match","$notMatch","$anyOf","$noneOf","$childIn","$childNotIn","$in","$notIn"]);function isObjectWithType(e){return!!e&&typeof e=="object"&&!Array.isArray(e)&&"type"in e}function isEmptyScalar(e){return e===null||typeof e>"u"||typeof e=="string"&&e.trim()===""}function normalizeFilterValueByOperator(e,t){if(!e)return t;if(e==="$dateBetween"){if(t===null||typeof t>"u"||isObjectWithType(t))return t;if(Array.isArray(t)){if(t.length===0)return t;const o=t[0],r=t.length>1?t[1]:void 0,i=isEmptyScalar(o),n=isEmptyScalar(r);return t.length===1&&!i?[o,o]:!i&&n?[o,o]:i&&!n?[r,r]:t}return[t,t]}return ARRAY_VALUE_OPERATORS.has(e)?t===null||typeof t>"u"||Array.isArray(t)?t:typeof t=="string"&&t.trim()===""?[]:[t]:t}const stripTimeFromFormat=e=>e&&e.replace(/\s*HH?:mm(?::ss)?(?:\.SSS)?/g,"").trim();function getRawSingleValue(e,t){if(!t)return e;if(Array.isArray(e))return e[0]}function inferPickerFromRawValue(e,t){return typeof e=="string"?inferPickerType(e,t):t}function parseDateByFormat$1(e,t){const o=String(e||"").trim();if(!o)return null;if(/(?:Z|[+-]\d{2}:\d{2})$/i.test(o)){const i=(0,import_client.dayjs)(o);if(i.isValid())return i}if(t){const i=(0,import_client.dayjs)(o,t,!0);if(i.isValid())return i}const r=(0,import_client.dayjs)(o);if(r.isValid())return r;if(t){const i=(0,import_client.dayjs)(o,t);if(i.isValid())return i}return null}function parseDateFromRawValue$1(e,t){if(import_client.dayjs.isDayjs(e))return e;if(e instanceof Date){const o=(0,import_client.dayjs)(e);return o.isValid()?o:null}return typeof e=="string"?parseDateByFormat$1(e,t):null}function parseRangeValue(e,t){if(!Array.isArray(e))return null;const o=parseDateFromRawValue$1(e[0],t),r=parseDateFromRawValue$1(e[1],t);return!o||!r?null:[o,r]}const FieldAssignExactDatePicker=e=>{const{picker:t="date",format:o,showTime:r,timeFormat:i,value:n,isRange:l=!1,onChange:a,style:c}=e,u=(0,import_flow_engine.useFlowContext)(),d=u.model.translate.bind(u.model),m=(0,import_react2.useMemo)(()=>getRawSingleValue(n,l),[l,n]),[p,h]=(0,import_react2.useState)(()=>inferPickerFromRawValue(m,t)),g=S=>{const P=S===t&&o?o:(0,import_client.getPickerFormat)(S),j=S==="date"?stripTimeFromFormat(P):P;return(0,import_client.getDateTimeFormat)(S,j,r,i)},f=(0,import_react2.useMemo)(()=>g(p),[p,o,t,r,i]),_=(0,import_react2.useMemo)(()=>l?null:parseDateFromRawValue$1(n,f),[l,n,f]),v=(0,import_react2.useMemo)(()=>l?parseRangeValue(n,f):null,[l,n,f]),b=(0,import_react2.useMemo)(()=>[{label:d("Date"),value:"date"},{label:d("Month"),value:"month"},{label:d("Quarter"),value:"quarter"},{label:d("Year"),value:"year"}],[d]),F=S=>{if(h(S),!!a){if(l){v&&a(v);return}_&&a(_)}},y={utc:!0,underFilter:!0,format:f,picker:p,inputReadOnly:u.isMobileLayout,showTime:r?{defaultValue:(0,import_client.dayjs)("00:00:00","HH:mm:ss")}:!1,value:_,onChange:S=>{if(S&&import_client.dayjs.isDayjs(S)){a==null||a(S);return}a==null||a(null)},style:{flex:1}},C={utc:!0,underFilter:!0,format:f,picker:p,inputReadOnly:u.isMobileLayout,showTime:r?{defaultValue:[(0,import_client.dayjs)("00:00:00","HH:mm:ss"),(0,import_client.dayjs)("23:59:59","HH:mm:ss")]}:!1,value:v,onChange:S=>{if(Array.isArray(S)&&S[0]&&S[1]){a==null||a([S[0],S[1]]);return}a==null||a(null)},style:{flex:1}};return(0,import_jsx_runtime.jsxs)(import_antd.Space.Compact,{style:x({width:"100%"},c||{}),children:[(0,import_jsx_runtime.jsx)(import_antd.Select,{style:{width:100},popupMatchSelectWidth:!1,value:p,options:b,onChange:F}),l?(0,import_jsx_runtime.jsx)(import_antd.DatePicker.RangePicker,x({},C)):(0,import_jsx_runtime.jsx)(import_antd.DatePicker,x({},y))]})},DATE_FIELD_INTERFACES=new Set(["date","datetime","datetimeNoTz","createdAt","updatedAt","unixTimestamp"]),TZ_AWARE_DATE_INTERFACES=new Set(["datetime","createdAt","updatedAt","unixTimestamp"]),DATE_ONLY_OUTPUT_FORMAT="YYYY-MM-DD",DATETIME_NO_TZ_OUTPUT_FORMAT="YYYY-MM-DD HH:mm:ss",DATE_DYNAMIC_OPTION_KEYS=["exact","past","next","today","yesterday","tomorrow","thisWeek","lastWeek","nextWeek","thisMonth","lastMonth","nextMonth","thisQuarter","lastQuarter","nextQuarter","thisYear","lastYear","nextYear"],DATE_DYNAMIC_OPTION_LABELS={exact:"Exact day",past:"Past",next:"Next",today:"Today",yesterday:"Yesterday",tomorrow:"Tomorrow",thisWeek:"This Week",lastWeek:"Last Week",nextWeek:"Next Week",thisMonth:"This Month",lastMonth:"Last Month",nextMonth:"Next Month",thisQuarter:"This Quarter",lastQuarter:"Last Quarter",nextQuarter:"Next Quarter",thisYear:"This Year",lastYear:"Last Year",nextYear:"Next Year"};function buildDateDynamicOptions(e,t=!1){var o;const r=DATE_DYNAMIC_OPTION_KEYS.map(i=>{var n;return{value:i,label:(n=e==null?void 0:e(DATE_DYNAMIC_OPTION_LABELS[i]))!=null?n:DATE_DYNAMIC_OPTION_LABELS[i]}});return t&&r.splice(3,0,{value:"now",label:(o=e==null?void 0:e("Now"))!=null?o:"Now"}),r}function parseDateByFormat(e,t){const o=String(e||"").trim();if(!o)return null;if(/(?:Z|[+-]\d{2}:\d{2})$/i.test(o)){const i=(0,import_client.dayjs)(o);if(i.isValid())return i}if(t){const i=(0,import_client.dayjs)(o,t,!0);if(i.isValid())return i}const r=(0,import_client.dayjs)(o);if(r.isValid())return r;if(t){const i=(0,import_client.dayjs)(o,t);if(i.isValid())return i}return null}function parseDateFromRawValue(e,t){if(import_client.dayjs.isDayjs(e))return e;if(e instanceof Date){const o=(0,import_client.dayjs)(e);return o.isValid()?o:null}return typeof e=="string"?parseDateByFormat(e,t):null}function normalizeExactDateValue(e,t){const o=parseDateFromRawValue(e,t.format);if(!(o!=null&&o.isValid()))return e;switch(t.exactNormalizeMode){case"date":return o.format(DATE_ONLY_OUTPUT_FORMAT);case"datetimeNoTz":return o.format(t.showTime?DATETIME_NO_TZ_OUTPUT_FORMAT:DATE_ONLY_OUTPUT_FORMAT);case"iso":return o.toISOString();default:return e}}function toExactPickerSingleValue(e,t){const o=parseDateFromRawValue(e,t);return o!=null&&o.isValid()?o:null}function toExactPickerRangeValue(e,t){if(!Array.isArray(e))return null;const o=toExactPickerSingleValue(e[0],t),r=toExactPickerSingleValue(e[1],t);return!o||!r?null:[o,r]}function toExactPickerDisplayValue(e,t){return t.isRange?toExactPickerRangeValue(e,t.format):toExactPickerSingleValue(e,t.format)}function getDateVariableExactNormalizeMode(e){return e==="date"?"date":e==="datetimeNoTz"?"datetimeNoTz":TZ_AWARE_DATE_INTERFACES.has(e)?"iso":"none"}function normalizeDateVariableExactValue(e,t){return t.exactNormalizeMode==="none"?e:typeof e=="string"||import_client.dayjs.isDayjs(e)||e instanceof Date?normalizeExactDateValue(e,t):Array.isArray(e)?e.map(o=>typeof o=="string"||import_client.dayjs.isDayjs(o)||o instanceof Date?normalizeExactDateValue(o,t):o):e}function normalizeExactDatePickerMode(e){return e==="year"||e==="quarter"||e==="month"||e==="date"?e:"date"}const DEFAULT_DATE_VARIABLE_COMPONENT_PROPS={picker:"date",showTime:!1,timeFormat:"HH:mm:ss",format:"YYYY-MM-DD",exactNormalizeMode:"none"};function getFieldInterface(e){return typeof(e==null?void 0:e.interface)=="string"?e.interface:""}function getFieldComponentProps(e){var t;return(typeof(e==null?void 0:e.getComponentProps)=="function"?e.getComponentProps():null)||((t=e==null?void 0:e.uiSchema)==null?void 0:t["x-component-props"])||{}}function normalizeDateVariableOutput(e,t){if(e===null||(0,import_flow_engine.isRunJSValue)(e)||typeof e=="string"&&(0,import_flow_engine.isVariableExpression)(e)&&!(0,import_flow_engine.isCtxDateExpression)(e))return e;if(e===""||typeof e>"u")return"";const o=normalizeDateVariableExactValue(e,{exactNormalizeMode:t.exactNormalizeMode,format:t.format||"YYYY-MM-DD HH:mm:ss",showTime:t.showTime});return(0,import_flow_engine.serializeCtxDateValue)(o)||o}function isPlainObject$1(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function pickStyle(e){return isPlainObject$1(e)?e:void 0}function withFullWidthStyle(e){return A(x({},e),{width:"100%",minWidth:0})}function rewrapReactiveRender$1(e){var t;e&&(e._reactiveWrapperCache=void 0,(t=e.setupReactiveRender)==null||t.call(e))}function remapMetaTreePaths(e,t,o){const r=Array.isArray(e==null?void 0:e.paths)?e.paths.map(l=>String(l)):[];let i=r;t.length&&r.length>=t.length&&t.every((l,a)=>r[a]===l)&&(i=[...o,...r.slice(t.length)]);const n=l=>Array.isArray(l)?l.map(a=>remapMetaTreePaths(a,t,o)):typeof l=="function"?()=>L(this,null,function*(){const a=yield l();return Array.isArray(a)?a.map(c=>remapMetaTreePaths(c,t,o)):[]}):l;return A(x({},e),{paths:i,children:e!=null&&e.children?n(e.children):void 0})}function attachBaseItemAsParent(e,t){var o;if(!t)return e;const r=remapMetaTreePaths(t,["item"],["item","parentItem"]),i=A(x({},r),{name:"parentItem",title:((o=r.title)==null?void 0:o.replace("Current item","Parent item"))||"Parent item"}),n=l=>{const a=Array.isArray(l.children)?l.children:[];if(!a.some(u=>(u==null?void 0:u.name)==="parentItem"))return A(x({},l),{children:[...a,i]});const c=a.map(u=>(u==null?void 0:u.name)!=="parentItem"?u:n(u));return A(x({},l),{children:c})};return n(e)}function mergeItemMetaTreeForAssignValue(e,t){const o=Array.isArray(e)?e:[],r=Array.isArray(t)?t:[];if(!r.length)return o;const i=o.find(u=>(u==null?void 0:u.name)==="item"),n=r.find(u=>(u==null?void 0:u.name)==="item");if(!n)return o;const l=attachBaseItemAsParent(n,i),a=[];let c=!1;for(const u of o){if(!c&&(u==null?void 0:u.name)==="item"){a.push(l),c=!0;continue}a.push(u)}return c||a.push(l),a}function resolveAssignValueFieldPath(e){var t;if(!e)return;const o=((t=e==null?void 0:e.getStepParams)==null?void 0:t.call(e,"fieldSettings","init"))||{};return(o==null?void 0:o.fieldPath)||getFormItemPreferredFieldPath(e)}function resolveAssignValueFieldModelUse(e){var t,o,r;const{itemModel:i,fieldModelUse:n,preferFormItemFieldModel:l}=e;if(!i)return n;const a=(t=i==null?void 0:i.subModels)==null?void 0:t.field,c=a&&!Array.isArray(a)?a.use:void 0,u=((o=i==null?void 0:i.getStepParams)==null?void 0:o.call(i,"formItemSettings","fieldSettings"))||{},d=(u==null?void 0:u.fieldModel)||((r=i==null?void 0:i.customFieldModelInstance)==null?void 0:r.use);return l?c||d||n:n||c||d}const FieldAssignValueInput=({targetPath:e,value:t,onChange:o,placeholder:r,extraMetaTree:i,operator:n,operatorMetaList:l,preferFormItemFieldModel:a,associationFieldNamesOverride:c,enableDateVariableAsConstant:u=!1})=>{var d,m,p,h;const g=(0,import_flow_engine.useFlowContext)(),f=import_react2.default.useCallback(G=>{if(!G||typeof G!="object"||!("target"in G))return G;const Q=G.target;return!Q||typeof Q!="object"||!("value"in Q)?G:Q.value},[]),_=import_react2.default.useRef(i);import_react2.default.useEffect(()=>{_.current=i},[i]);const v=import_react2.default.useMemo(()=>e?findFormItemModelByFieldPath(g.model,e):null,[g.model,e]),b=import_react2.default.useCallback((G,Q)=>{var X;if(!G||typeof Q!="string"||!Q.includes("."))return null;const te=Q.split(".").filter(Boolean);if(te.length<2)return null;let ie=G;for(let re=0;re<te.length;re++){const ae=te[re],se=re===te.length-1,le=typeof(ie==null?void 0:ie.getField)=="function"?ie.getField(ae):void 0;if(!le)return null;if(se)return{collection:ie,fieldName:ae,collectionField:le};if(!((X=le==null?void 0:le.isAssociationField)!=null&&X.call(le))||!(le!=null&&le.targetCollection))return null;ie=le.targetCollection}return null},[]),F=import_react2.default.useMemo(()=>{var G,Q,X,te,ie,re,ae,se,le,ge,me,xe,pe,fe,de,ce,ne,ue;if(v){const Ce=v,De=v.context,{collection:Ee,dataSource:qe,blockModel:Ve}=De,we=((G=v==null?void 0:v.getStepParams)==null?void 0:G.call(v,"fieldSettings","init"))||{},Pe=((Q=v==null?void 0:v.context)==null?void 0:Q.dataSourceManager)||((te=(X=g.model)==null?void 0:X.context)==null?void 0:te.dataSourceManager),Me=getCollectionFromModel(g.model),Re=Ee||(we!=null&&we.dataSourceKey&&we!=null&&we.collectionName?(ie=Pe==null?void 0:Pe.getCollection)==null?void 0:ie.call(Pe,we.dataSourceKey,we.collectionName):void 0)||Me,ze=qe||(we!=null&&we.dataSourceKey?(re=Pe==null?void 0:Pe.getDataSource)==null?void 0:re.call(Pe,we.dataSourceKey):void 0)||(Re!=null&&Re.dataSourceKey?(ae=Pe==null?void 0:Pe.getDataSource)==null?void 0:ae.call(Pe,Re.dataSourceKey):void 0),je=resolveAssignValueFieldPath(v),Be=je==null?void 0:je.split(".").slice(-1)[0],Je=Be?(se=Re==null?void 0:Re.getField)==null?void 0:se.call(Re,Be):void 0,Te=(ge=(le=Ce==null?void 0:Ce.customFieldModelInstance)==null?void 0:le.context)==null?void 0:ge.collectionField;return{itemModel:v,collection:Re||null,dataSource:ze||null,blockModel:Ve,fieldPath:je||null,fieldName:Be||null,collectionField:Je||Te||null}}const he=getCollectionFromModel(g.model),_e=((xe=(me=g.model)==null?void 0:me.context)==null?void 0:xe.blockModel)||g.model,ve={itemModel:null,collection:null,dataSource:null,blockModel:_e,fieldPath:null,fieldName:null,collectionField:null},ye=typeof(he==null?void 0:he.getField)=="function"?he.getField(e):null;if(ye){const Ce=String((ye==null?void 0:ye.name)||e||""),De=(fe=(pe=g.model)==null?void 0:pe.context)==null?void 0:fe.dataSourceManager,Ee=(he!=null&&he.dataSourceKey?(de=De==null?void 0:De.getDataSource)==null?void 0:de.call(De,he.dataSourceKey):void 0)||null;return A(x({},ve),{collection:he,dataSource:Ee,blockModel:_e,fieldPath:Ce,fieldName:Ce,collectionField:ye||null})}const Ae=b(he,e);if(!Ae)return ve;const Ie=Ae.collection,Se=Ae.fieldName,be=(ne=(ce=g.model)==null?void 0:ce.context)==null?void 0:ne.dataSourceManager,ke=(Ie!=null&&Ie.dataSourceKey?(ue=be==null?void 0:be.getDataSource)==null?void 0:ue.call(be,Ie.dataSourceKey):void 0)||null;return A(x({},ve),{collection:Ie,dataSource:ke,blockModel:_e,fieldPath:Se,fieldName:Se,collectionField:Ae.collectionField||null})},[g.model,v,b,e]),{collection:y,dataSource:C,blockModel:S,fieldPath:P,fieldName:j,collectionField:I}=F,T=(m=(d=F==null?void 0:F.itemModel)==null?void 0:d.context)==null?void 0:m.collectionField,D=import_react2.default.useMemo(()=>getFieldInterface(I)||getFieldInterface(T),[I,T]),E=I||T,w=import_react2.default.useMemo(()=>{var G;if(isToManyAssociationField(I))return!0;const Q=getFieldInterface(I);return Q==="multipleSelect"||Q==="checkboxGroup"||((G=I==null?void 0:I.uiSchema)==null?void 0:G.type)==="array"},[I]),k=import_react2.default.useMemo(()=>{if(D&&DATE_FIELD_INTERFACES.has(D))return!0;const G=typeof j=="string"&&j||(typeof e=="string"?e.split(".").filter(Boolean).slice(-1)[0]:"");return G==="createdAt"||G==="updatedAt"},[j,D,e]),N=u&&k,B=import_react2.default.useMemo(()=>{if(!N)return DEFAULT_DATE_VARIABLE_COMPONENT_PROPS;const G=getFieldComponentProps(E),Q=normalizeExactDatePickerMode(G==null?void 0:G.picker),X=["datetime","datetimeNoTz","createdAt","updatedAt","unixTimestamp"].includes(D),te=typeof(G==null?void 0:G.showTime)=="boolean"?G.showTime:X,ie=typeof(G==null?void 0:G.dateFormat)=="string"&&G.dateFormat?G.dateFormat:typeof(G==null?void 0:G.format)=="string"&&G.format?G.format.split(" ")[0]:"YYYY-MM-DD",re=typeof(G==null?void 0:G.timeFormat)=="string"&&G.timeFormat?G.timeFormat:"HH:mm:ss",ae=typeof(G==null?void 0:G.format)=="string"&&G.format?G.format:te?`${ie} ${re}`:ie;return{picker:Q,showTime:te,timeFormat:re,format:ae,exactNormalizeMode:getDateVariableExactNormalizeMode(D)}},[E,D,N]),M=import_react2.default.useMemo(()=>ee(B,["exactNormalizeMode"]),[B]),$=import_react2.default.useRef(M);$.current=M;const q=import_react2.default.useRef(g.t);q.current=g.t;const O=import_react2.default.useCallback(G=>{let Q=G;if(n&&(Q=normalizeFilterValueByOperator(n,Q)),w){if(Q==null||Q==="")return[];if(!Array.isArray(Q))return[Q]}return Q},[w,n]),[V,z]=import_react2.default.useState(null);import_react2.default.useEffect(()=>{var G,Q,X,te,ie,re,ae,se,le,ge,me,xe,pe,fe,de,ce,ne,ue,he,_e,ve,ye,Ae,Ie,Se,be,ke,Ce,De,Ee,qe,Ve,we,Pe;if(!P||!j)return;const Me=v,Re=((Q=(G=F==null?void 0:F.itemModel)==null?void 0:G.context)==null?void 0:Q.engine)||((te=(X=g.model)==null?void 0:X.context)==null?void 0:te.engine);if(!Re)return;const ze=((ie=Me==null?void 0:Me.context)==null?void 0:ie.dataSourceManager)||((ae=(re=g.model)==null?void 0:re.context)==null?void 0:ae.dataSourceManager),je=y||getCollectionFromModel(Me)||getCollectionFromModel(g.model),Be=(Me==null?void 0:Me.customFieldModelInstance)||((se=Me==null?void 0:Me.subModels)==null?void 0:se.field),Je=(le=Be==null?void 0:Be.context)==null?void 0:le.collectionField,Te=I||Je||void 0,at=C||(je!=null&&je.dataSourceKey?(ge=ze==null?void 0:ze.getDataSource)==null?void 0:ge.call(ze,je.dataSourceKey):null),bt=(Be==null?void 0:Be.props)||{},yt=ee(bt,["value","defaultValue"]),st=(typeof(je==null?void 0:je.getFields)=="function"?je.getFields()||[]:[]).find($e=>($e==null?void 0:$e.name)===j)||(typeof(je==null?void 0:je.getField)=="function"?je.getField(j):void 0)||Te,ct=st?import_flow_engine.EditableItemModel.getDefaultBindingByField(((me=F==null?void 0:F.itemModel)==null?void 0:me.context)||((xe=g.model)==null?void 0:xe.context),st):null,St=ct==null?void 0:ct.modelName,ut=resolveAssignValueFieldModelUse({itemModel:v,fieldModelUse:St,preferFormItemFieldModel:a});if(!ut)return;const Ue=((pe=Me==null?void 0:Me.getStepParams)==null?void 0:pe.call(Me,"formItemSettings","fieldSettings"))||{},Ct=(Me==null?void 0:Me.customFieldProps)||(Ue==null?void 0:Ue.fieldModelProps)||{},Ft=typeof(Ue==null?void 0:Ue.name)=="string"?Ue.name:void 0,dt=P.startsWith(`${CUSTOM_FIELD_TARGET_PATH_PREFIX}:`)?Ft||j:P,He=x({},(Be==null?void 0:Be.stepParams)||{});je!=null&&je.name&&dt&&(He.fieldSettings=A(x({},He.fieldSettings||{}),{init:A(x({},((fe=He.fieldSettings)==null?void 0:fe.init)||{}),{dataSourceKey:je==null?void 0:je.dataSourceKey,collectionName:je==null?void 0:je.name,fieldPath:dt})}));const Le=(de=Re==null?void 0:Re.createModel)==null?void 0:de.call(Re,{use:"VariableFieldFormModel",subModels:{fields:[{use:(Be==null?void 0:Be.use)||ut,stepParams:He,props:x(x({placeholder:r},yt),Ct)}]}});if(!Le)return;je&&((ne=(ce=Le.context)==null?void 0:ce.defineProperty)==null||ne.call(ce,"collection",{value:je})),at&&((he=(ue=Le.context)==null?void 0:ue.defineProperty)==null||he.call(ue,"dataSource",{value:at})),Te&&((ve=(_e=Le.context)==null?void 0:_e.defineProperty)==null||ve.call(_e,"collectionField",{value:Te})),S&&((Ae=(ye=Le.context)==null?void 0:ye.defineProperty)==null||Ae.call(ye,"blockModel",{value:S})),Le.context&&Object.defineProperty(Le.context,"resource",{configurable:!0,enumerable:!0,get:()=>S==null?void 0:S.resource});const Fe=(Se=(Ie=Le==null?void 0:Le.subModels)==null?void 0:Ie.fields)==null?void 0:Se[0],Pt=isToManyAssociationField(Te),wt=withFullWidthStyle(pickStyle((be=Fe==null?void 0:Fe.props)==null?void 0:be.style)),mt=typeof(c==null?void 0:c.label)=="string"&&c.label?c.label:void 0;mt&&typeof(Fe==null?void 0:Fe.setStepParams)=="function"&&Fe.setStepParams("selectSettings","fieldNames",{label:mt}),(ke=Fe==null?void 0:Fe.setProps)==null||ke.call(Fe,{disabled:!1,readPretty:!1,pattern:"editable",updateAssociation:!1,multiple:Pt,style:wt}),(Ce=Fe==null?void 0:Fe.dispatchEvent)==null||Ce.call(Fe,"beforeRender",void 0,{sequential:!0,useCache:!0}),ensureOptionsFromUiSchemaEnumIfAbsent(Fe,Te);const Tt=typeof((De=Fe==null?void 0:Fe.props)==null?void 0:De.mode)<"u",Ye=(qe=(Ee=Te==null?void 0:Te.uiSchema)==null?void 0:Ee["x-component-props"])==null?void 0:qe.mode,pt=(Te==null?void 0:Te.interface)==="multipleSelect"?typeof Ye=="string"?Ye:"multiple":typeof Ye=="string"?Ye:void 0;if(!Tt&&pt&&((Ve=Fe==null?void 0:Fe.setProps)==null||Ve.call(Fe,{mode:pt})),Te!=null&&Te.targetCollection){const $e=Te.targetCollection,Oe=((we=Fe==null?void 0:Fe.props)==null?void 0:we.fieldNames)||{},it=typeof(c==null?void 0:c.value)=="string"&&c.value||typeof(Oe==null?void 0:Oe.value)=="string"&&Oe.value||(Te==null?void 0:Te.targetKey)||($e==null?void 0:$e.filterTargetKey)||"id",Bt=typeof(Oe==null?void 0:Oe.label)=="string"&&Oe.label?Oe.label:void 0,Nt=typeof($e==null?void 0:$e.titleField)=="string"?$e.titleField:void 0,ht=typeof(c==null?void 0:c.label)=="string"&&c.label||Bt||Nt;(Pe=Fe==null?void 0:Fe.setProps)==null||Pe.call(Fe,{fieldNames:A(x(x({},Oe),ht?{label:ht}:{}),{value:it})})}return z(Le),()=>{var $e,Oe;(Oe=($e=Le.subModels.fields).forEach)==null||Oe.call($e,it=>it.remove()),Le.remove()}},[y,C,S,P,j,g,r,F,I,v,a,c==null?void 0:c.label,c==null?void 0:c.value]),import_react2.default.useEffect(()=>{var G,Q,X,te,ie,re,ae,se;const le=(Q=(G=V==null?void 0:V.subModels)==null?void 0:G.fields)==null?void 0:Q[0];if(!le||!n||!Array.isArray(l)||l.length===0)return;const ge=l.find(fe=>(fe==null?void 0:fe.value)===n),me=(X=ge==null?void 0:ge.schema)==null?void 0:X["x-component-props"];if(me&&typeof(le==null?void 0:le.setProps)=="function"){const fe=withFullWidthStyle(pickStyle(me==null?void 0:me.style)||pickStyle((te=le==null?void 0:le.props)==null?void 0:te.style));le.setProps(A(x({},me),{style:fe}))}const xe=((re=(ie=F==null?void 0:F.itemModel)==null?void 0:ie.context)==null?void 0:re.app)||((se=(ae=g==null?void 0:g.model)==null?void 0:ae.context)==null?void 0:se.app),pe=resolveOperatorComponent(xe,n,l);if(pe&&le instanceof InputFieldModel){const fe=le.__originalRender||le.render;le.__originalRender=fe;const{Comp:de,props:ce}=pe;le.render=()=>{var ne;return(0,import_jsx_runtime.jsx)(de,A(x(x({},le.props),ce),{style:x(x({width:"100%"},(ne=le.props)==null?void 0:ne.style),ce==null?void 0:ce.style)}))},rewrapReactiveRender$1(le)}else typeof le.__originalRender=="function"&&(le.render=le.__originalRender,rewrapReactiveRender$1(le))},[n,l,V,g,F]);const U=import_react2.default.useMemo(()=>G=>{const Q=pickStyle(G==null?void 0:G.style);return import_react2.default.useEffect(()=>{var X,te,ie,re;const ae=O(G==null?void 0:G.value),se=ge=>{var me,xe,pe,fe,de;const ce=f(ge),ne=n?normalizeFilterValueByOperator(n,ce):ce,ue=O(ne);(me=V==null?void 0:V.setProps)==null||me.call(V,{value:ue});const he=(pe=(xe=V==null?void 0:V.subModels)==null?void 0:xe.fields)==null?void 0:pe[0];(fe=he==null?void 0:he.setProps)==null||fe.call(he,{value:ue}),(de=G==null?void 0:G.onChange)==null||de.call(G,ne)},le=(te=(X=V==null?void 0:V.subModels)==null?void 0:X.fields)==null?void 0:te[0];(ie=le==null?void 0:le.setProps)==null||ie.call(le,{value:ae,onChange:se,onCompositionStart:G==null?void 0:G.onCompositionStart,onCompositionUpdate:G==null?void 0:G.onCompositionUpdate,onCompositionEnd:G==null?void 0:G.onCompositionEnd}),(re=V==null?void 0:V.setProps)==null||re.call(V,A(x({},G),{value:ae,onChange:se}))},[G]),V?(0,import_jsx_runtime.jsx)("div",{style:A(x({},withFullWidthStyle(Q)),{flex:1}),children:(0,import_jsx_runtime.jsx)(import_flow_engine.FlowModelRenderer,{model:V,showFlowSettings:!1})}):(0,import_jsx_runtime.jsx)(import_antd.Input,{value:G==null?void 0:G.value,onChange:X=>{var te;return(te=G==null?void 0:G.onChange)==null?void 0:te.call(G,f(X))},placeholder:r,style:withFullWidthStyle(Q)})},[r,V,O,f]),K=import_react2.default.useMemo(()=>G=>{var Q,X,te,ie;const re=pickStyle(G==null?void 0:G.style),ae=G==null?void 0:G.value,se=(0,import_flow_engine.isCtxDateExpression)(ae)?(0,import_flow_engine.parseCtxDateExpression)(ae):ae,le=typeof se>"u"?void 0:se,{token:ge}=import_antd.theme.useToken(),[me,xe]=import_react2.default.useState(!1),pe=q.current,fe=$.current,de=import_react2.default.useMemo(()=>buildDateDynamicOptions(pe,!0),[pe]),ce=le&&typeof le=="object"&&!Array.isArray(le)?le==null?void 0:le.type:void 0,ne=typeof ce=="string"&&ce?ce:"exact",ue=Array.isArray(le),he=toExactPickerDisplayValue(le,{format:fe.format,isRange:!1}),_e=toExactPickerDisplayValue(le,{format:fe.format,isRange:!0}),ve=Se=>{var be,ke;if(xe(!1),Se==="exact"){(be=G==null?void 0:G.onChange)==null||be.call(G,"");return}const Ce={type:Se};(Se==="past"||Se==="next")&&(Ce.number=1,Ce.unit="day"),(ke=G==null?void 0:G.onChange)==null||ke.call(G,Ce)},ye=Se=>{var be;(be=G==null?void 0:G.onChange)==null||be.call(G,Se||"")},Ae=Se=>{var be;(be=G==null?void 0:G.onChange)==null||be.call(G,Se||"")},Ie=()=>{const Se=de.slice(0,3),be=de.slice(3),ke=import_css.css`
|
|
1774
1784
|
padding: 3px 10px;
|
|
1775
1785
|
cursor: pointer;
|
|
@@ -2278,7 +2288,7 @@ ctx.render(<JsItem />);
|
|
|
2278
2288
|
font-size: 90%;
|
|
2279
2289
|
background: none !important;
|
|
2280
2290
|
border: none !important;
|
|
2281
|
-
`,EllipsisJSON=({content:e,style:t,className:o})=>{const r=(0,import_react2.useRef)(null),[i,n]=(0,import_react2.useState)(!1);(0,import_react2.useEffect)(()=>{const a=r.current;a&&n(a.scrollWidth>a.clientWidth)},[e]);const l=(0,import_jsx_runtime.jsx)("div",{ref:r,style:A(x({},t),{whiteSpace:"nowrap",fontFamily:"Consolas, Monaco, monospace",overflow:"hidden",textOverflow:"ellipsis"}),children:e});return i?(0,import_jsx_runtime.jsx)(import_antd.Tooltip,{title:(0,import_jsx_runtime.jsx)("pre",{style:{margin:0,maxHeight:400},className:o,children:e}),overlayInnerStyle:{background:"#fff",color:"#000",boxShadow:"0 2px 8px rgba(0,0,0,0.15)",maxWidth:500},color:"#fff",overlayStyle:{maxWidth:500,whiteSpace:"pre-wrap"},children:l}):l};class DisplayJSONFieldModel extends DisplayTitleFieldModel{renderComponent(t){const{space:o,style:r,className:i,overflowMode:n}=this.props;let l="";if(t!=null)try{l=JSON.stringify(t,null,o??2)}catch{l=this.flowEngine.translate("Invalid JSON format")}return n==="ellipsis"?(0,import_jsx_runtime.jsx)(EllipsisJSON,{content:l,style:r,className:(0,import_css.cx)(i,JSONClassName)}):(0,import_jsx_runtime.jsx)("pre",{className:(0,import_css.cx)(i,JSONClassName),style:r,children:l})}}import_flow_engine.DisplayItemModel.bindModelToInterface("DisplayJSONFieldModel",["json"],{isDefault:!0});function countDecimalPlaces(e){const t=(0,import_lodash.toString)(e);return t.includes(".")?t.split(".")[1].replace(/0+$/,"").length:0}const separators={"0,0.00":{thousands:",",decimal:"."},"0.0,00":{thousands:".",decimal:","},"0 0,00":{thousands:" ",decimal:"."},"0.00":{thousands:"",decimal:"."}};function formatNumberWithSeparator(e,t="0.00",o=1,r){if(e>Number.MAX_SAFE_INTEGER||e<Number.MIN_SAFE_INTEGER)return formatBigNumberWithSeparator(e,t,o,r);let i=e;r&&(i=Number(e));let n="";if(separators[t]){const{thousands:l,decimal:a}=separators[t];n=i.toLocaleString("en-US",{style:"decimal",minimumFractionDigits:o,maximumFractionDigits:o}).replace(/,/g,"comma_placeholder").replace(/\./g,"dot_placeholder").replace(/comma_placeholder/g,l).replace(/dot_placeholder/g,a)}else n=i.toString();return n}function formatBigNumberWithSeparator(e,t="0.00",o=1,r){let i=e;r&&(i=new import_bignumber.default(e).toString());let n="";if(separators[t]){const{thousands:l,decimal:a}=separators[t],[c,u]=i.toString().split(".");let d=u;const m=c.replace(/\B(?=(\d{3})+(?!\d))/g,l);d&&o?(d=d.substring(0,o),n=`${m}${a}${d}`):n=m}else n=i.toString();return n}function formatUnitConversion(e,t="*",o){if(!o)return e;let r;if(t==="*")r=e*o;else if(t==="/")if(o!==0)r=e/o;else return console.error("Error: Division by zero."),null;else return console.error("Error: Invalid operator. Use '*' for multiplication or '/' for division."),null;return math.round(r,9)}function scientificNotation(e,t,o="."){return(0,import_d3_format.format)(`.${t}e`)(e).replace(".",o).replace(/e([+-]?\d+)/,(r,i)=>i.startsWith("+")?`×10<sup>${i.slice(1)}</sup>`:`×10<sup>-${i.slice(1)}</sup>`)}function formatNumber(e){var t;const{step:o,formatStyle:r="normal",value:i,unitConversion:n,unitConversionType:l,separator:a="0,0.00"}=e;if(!(0,import_shared.isValid)(i))return null;const c=formatUnitConversion(i,l,n),u=(0,import_client.toFixedByStep)(c,o);let d;return d=formatNumberWithSeparator(u,a,countDecimalPlaces(o),r),r==="scientifix"&&(d=scientificNotation(Number(c),countDecimalPlaces(o),(t=separators==null?void 0:separators[a])==null?void 0:t.decimal)),d==="NaN"&&(d=i),d}const getDisplayNumber=e=>{const{numberStep:t,formatStyle:o,value:r,unitConversion:i,unitConversionType:n,separator:l}=e;return formatNumber({step:t,formatStyle:o,value:r,unitConversion:i,unitConversionType:n,separator:l})};class DisplayNumberFieldModel extends ClickableFieldModel{renderComponent(t){const{addonBefore:o,addonAfter:r}=this.props,i=getDisplayNumber(A(x({},this.props),{value:t}));return i?(0,import_jsx_runtime.jsxs)("span",{children:[o,(0,import_jsx_runtime.jsx)("span",{dangerouslySetInnerHTML:{__html:i}}),r]}):null}}DisplayNumberFieldModel.define({label:(0,import_flow_engine.tExpr)("Number")});const UnitConversion$1=()=>{const e=(0,import_react.useForm)(),{unitConversionType:t}=e.values,{t:o}=(0,import_react_i18next.useTranslation)();return(0,import_jsx_runtime.jsxs)(import_antd.Select,{defaultValue:t||"*",style:{width:160},onChange:r=>{e.setValuesIn("unitConversionType",r)},children:[(0,import_jsx_runtime.jsx)(import_antd.Select.Option,{value:"*",children:o("Multiply by")}),(0,import_jsx_runtime.jsx)(import_antd.Select.Option,{value:"/",children:o("Divide by")})]})};DisplayNumberFieldModel.registerFlow({key:"numberSettings",sort:500,title:(0,import_flow_engine.tExpr)("Number settings"),steps:{format:{title:(0,import_flow_engine.tExpr)("Number format"),use:"numberFormat"}}});import_flow_engine.DisplayItemModel.bindModelToInterface("DisplayNumberFieldModel",["number","integer","id","snowflakeId"],{isDefault:!0});class DisplayPasswordFieldModel extends FieldModel{render(){const{value:t}=this.props;return t?(0,import_jsx_runtime.jsx)("div",{children:"********"}):(0,import_jsx_runtime.jsx)("div",{})}}import_flow_engine.DisplayItemModel.bindModelToInterface("DisplayPasswordFieldModel",["password"],{isDefault:!0});class DisplayPercentFieldModel extends ClickableFieldModel{renderComponent(t){const{addonBefore:o="",addonAfter:r="%",numberStep:i}=this.props,n=math.round(t*100,9);if(t==null)return;const l=getDisplayNumber(A(x({},this.props),{value:n,numberStep:i}));return l?(0,import_jsx_runtime.jsxs)("div",{children:[o,(0,import_jsx_runtime.jsx)("span",{dangerouslySetInnerHTML:{__html:l}}),r]}):null}}DisplayPercentFieldModel.registerFlow({key:"numberSettings",sort:500,title:(0,import_flow_engine.tExpr)("Number settings"),steps:{format:{title:(0,import_flow_engine.tExpr)("Number format"),uiSchema:e=>({formatStyle:{type:"string",enum:[{value:"normal",label:(0,import_flow_engine.tExpr)("Normal")},{value:"scientifix",label:(0,import_flow_engine.tExpr)("Scientifix notation")}],"x-decorator":"FormItem","x-component":"Select",title:"{{t('Style')}}"},unitConversion:{type:"number","x-decorator":"FormItem","x-component":"NumberPicker",title:"{{t('Unit conversion')}}","x-component-props":{style:{width:"100%"},addonBefore:(0,import_jsx_runtime.jsx)(UnitConversion$1,{})}},separator:{type:"string",enum:[{value:"0,0.00",label:"100,000.00"},{value:"0.0,00",label:"100.000,00"},{value:"0 0,00",label:"100 000.00"},{value:"0.00",label:"100000.00"}],"x-decorator":"FormItem","x-component":"Select",title:"{{t('Separator')}}"},numberStep:{type:"string",title:'{{t("Precision")}}',"x-component":"Select","x-decorator":"FormItem",enum:[{value:"1",label:"1"},{value:"0.1",label:"1.0"},{value:"0.01",label:"1.00"},{value:"0.001",label:"1.000"},{value:"0.0001",label:"1.0000"},{value:"0.00001",label:"1.00000"},{value:"0.000001",label:"1.000000"},{value:"0.0000001",label:"1.0000000"},{value:"0.00000001",label:"1.00000000"}]},addonBefore:{type:"string",title:'{{t("Prefix")}}',"x-component":"Input","x-decorator":"FormItem"},addonAfter:{type:"string",title:'{{t("Suffix")}}',"x-component":"Input","x-decorator":"FormItem","x-disabled":!0}}),defaultParams:e=>{const{formatStyle:t,unitConversion:o,unitConversionType:r,separator:i,step:n,addonBefore:l,addonAfter:a}=e.collectionField.getComponentProps();return{formatStyle:t||"normal",unitConversion:o,unitConversionType:r,separator:i||"0,0.00",numberStep:n||"1",addonBefore:l,addonAfter:a||"%"}},handler(e,t){const{formatStyle:o,unitConversion:r,unitConversionType:i,separator:n,numberStep:l,addonBefore:a,addonAfter:c}=t;e.model.setProps({formatStyle:o,unitConversion:r,unitConversionType:i,separator:n,numberStep:l,addonBefore:a,addonAfter:c})}}}});DisplayPercentFieldModel.define({label:(0,import_flow_engine.tExpr)("Percent")});import_flow_engine.DisplayItemModel.bindModelToInterface("DisplayPercentFieldModel",["percent"],{isDefault:!0});class DisplayTextFieldModel extends ClickableFieldModel{t(t){return t!=null&&t.startsWith("{{")&&t!=null&&t.endsWith("}}")?this.translate(t):t}renderComponent(t,o){const{prefix:r,suffix:i,overflowMode:n}=this.props;return(0,import_jsx_runtime.jsxs)("span",{style:{whiteSpace:n==="wrap"||o?"pre-line":"nowrap"},children:[r,this.t(t),i]})}}DisplayTextFieldModel.define({label:(0,import_flow_engine.tExpr)("Text")});import_flow_engine.DisplayItemModel.bindModelToInterface("DisplayTextFieldModel",["input","email","phone","uuid","textarea","nanoid"],{isDefault:!0});class DisplayURLFieldModel extends DisplayTitleFieldModel{renderComponent(t){return(0,import_jsx_runtime.jsx)(import_jsx_runtime.Fragment,{children:t&&(0,import_jsx_runtime.jsx)("a",{target:"_blank",rel:"noopener noreferrer",href:t,style:{overflowWrap:"anywhere"},children:t})})}}DisplayURLFieldModel.define({label:(0,import_flow_engine.tExpr)("URL")});import_flow_engine.DisplayItemModel.bindModelToInterface("DisplayURLFieldModel",["url"],{isDefault:!0,when:e=>!0});class DisplayTimeFieldModel extends ClickableFieldModel{renderComponent(t){const{prefix:o,suffix:r}=this.props,i=this.props.format||"HH:mm:ss",n=t&&(0,import_dayjs.default)(t,"HH:mm:ss").format(i);return(0,import_jsx_runtime.jsxs)("span",{children:[o,n,r]})}}DisplayTimeFieldModel.registerFlow({key:"timeSettings",sort:1e3,title:(0,import_flow_engine.tExpr)("Time settings"),steps:{dateFormat:{title:(0,import_flow_engine.tExpr)("Time format"),use:"dateDisplayFormat"}}});DisplayTimeFieldModel.define({label:(0,import_flow_engine.tExpr)("Time")});import_flow_engine.DisplayItemModel.bindModelToInterface("DisplayTimeFieldModel",["time"],{isDefault:!0});class DisplayCheckboxFieldModel extends FieldModel{render(){const{value:t,showUnchecked:o}=this.props;return t?(0,import_jsx_runtime.jsx)(import_icons.CheckOutlined,{style:{color:"#52c41a"}}):o?(0,import_jsx_runtime.jsx)(import_icons.CloseOutlined,{style:{color:"#ff4d4f"}}):(0,import_jsx_runtime.jsx)(import_antd.Checkbox,{disabled:!0})}}DisplayCheckboxFieldModel.define({label:(0,import_flow_engine.tExpr)("Checkbox")});import_flow_engine.DisplayItemModel.bindModelToInterface("DisplayCheckboxFieldModel",["checkbox"],{isDefault:!0});const models=Object.freeze(Object.defineProperty({__proto__:null,ActionGroupModel,ActionModel,ActionSceneEnum,ActionWithoutPermission,AddChildActionModel,AddNewActionModel,AssignFormGridModel,AssignFormItemModel,AssignFormModel,AssociationFieldGroupModel,AssociationFieldModel,BasePageTabModel,BlockGridModel,BlockModel,BlockSceneEnum,BulkDeleteActionModel,CascadeSelectFieldModel,CascadeSelectInnerFieldModel,CascadeSelectListFieldModel,CheckboxFieldModel,CheckboxGroupFieldModel,ChildPageModel,ChildPageTabModel,ClickableFieldModel,CollectionActionGroupModel,CollectionActionModel,CollectionBlockModel,CollectionSelectorFieldModel,ColorFieldModel,CommonItemModel,CreateContent,CreateFormModel,CustomWidth,DataBlockModel,DateOnlyFieldModel,DateOnlyFilterFieldModel,DateOnlyPicker,DateTimeFilterFieldModel,DateTimeNoTzFieldModel,DateTimeNoTzFilterFieldModel,DateTimeNoTzPicker,DateTimeTzFieldModel,DateTimeTzFilterFieldModel,DateTimeTzPicker,DeleteActionModel,DetailsAssociationFieldGroupModel,DetailsBlockModel,DetailsCustomItemModel,DetailsGridModel,DetailsItemModel,DetailsJSFieldItemModel,DisplayCheckboxFieldModel,DisplayColorFieldModel,DisplayDateTimeFieldModel,DisplayEnumFieldModel,DisplayHtmlFieldModel,DisplayIconFieldModel,DisplayJSONFieldModel,DisplayNumberFieldModel,DisplayPasswordFieldModel,DisplayPercentFieldModel,DisplaySubItemFieldModel,DisplaySubListFieldModel,DisplaySubTableFieldModel,DisplayTextFieldModel,DisplayTimeFieldModel,DisplayTitleFieldModel,DisplayURLFieldModel,DividerItemModel,EditActionModel,EditFormContent,EditFormModel,ExpandCollapseActionModel,FieldDeletePlaceholder,FieldModel,FieldModelSelect,FieldOperatorSelect,FilterActionModel,FilterBlockModel,FilterFormActionGroupModel,FilterFormActionModel,FilterFormBlockModel,FilterFormCollapseActionModel,FilterFormCustomFieldModel,FilterFormCustomItemModel,FilterFormCustomRecordSelectFieldModel,FilterFormFieldModel,FilterFormGridModel,FilterFormItemModel,FilterFormJSActionModel,FilterFormRecordSelectFieldModel,FilterFormResetActionModel,FilterFormSubmitActionModel,FilterManager,FormActionGroupModel,FormActionModel,FormAssociationFieldGroupModel,FormAssociationItemModel,FormBlockContent,FormBlockModel,FormComponent,FormCustomItemModel,FormGridModel,FormItemModel,FormJSFieldItemModel,FormModel,FormSubmitActionModel,GRID_FLOW_KEY,GRID_STEP,GridModel,IconFieldModel,InputFieldModel,InputNumberField,JSActionModel,JSBlockModel,JSCollectionActionModel,JSColumnModel,JSEditableFieldModel,JSFieldModel,JSFormActionModel,JSItemModel,JSRecordActionModel,get JsonFieldModel(){return JsonFieldModel},JsonInput,LinkActionModel,MainPageModel,MarkdownItemModel,NBColorPicker,NumberFieldModel,ObjectNester,PageModel,PageTabModel,PasswordFieldModel,PercentFieldModel,PercentInput,PopupActionModel,PopupCollectionActionModel,PopupSubTableActionGroupModel,PopupSubTableActionsColumnModel,PopupSubTableEditActionModel,PopupSubTableFieldModel,PopupSubTableFormActionGroupModel,PopupSubTableFormModel,PopupSubTableFormSubmitActionModel,PopupSubTableRemoveActionModel,QuickEditFormModel,RadioGroupFieldModel,RecordActionGroupModel,RecordActionModel,RecordPickerContent,RecordPickerFieldModel,RecordSelectFieldModel,RefreshActionModel,RichTextField,get RichTextFieldModel(){return RichTextFieldModel},RootPageModel,RootPageTabModel,RouteModel,SelectFieldModel,SourceCascader,SubFormFieldModel,SubFormListFieldModel,SubPageModel,SubTableColumnModel,SubTableFieldModel,SubTableRecordAction,TableActionsColumnModel,TableAssociationFieldGroupModel,TableBlockModel,TableColumnModel,TableCustomColumnModel,TableJSFieldItemModel,TableSelectModel,get TextareaFieldModel(){return TextareaFieldModel},TimeFieldModel,UnitConversion:UnitConversion$1,UpdateRecordActionModel,VariableFieldFormModel,ViewActionModel,buildDisplayPathFromValue,buildRecordPickerParentItemContext,collectAssociationHydrationCandidates,collectCascadeHydrationCandidate,connectFields,customizeFilterRender,defaultOperator,findOptionPathByTk,formatNumber,getAllDataModels,getDefaultOperator,getDisplayNumber,getValueWithIndex,injectRecordPickerPopupContext,isFilterValueEmpty,joinUrlSearch,markCascadeHydrationDone,operatorComponentProps,recalculateGridSizes,resolveCustomFieldOperatorList,resolveDefaultCustomFieldOperator,toOperatorSelectOptions,transformNestedData,transformRowsToSingleColumn},Symbol.toStringTag,{value:"Module"}));function collectDirtyFormModelUids(e){if(!e)return[];const t=new Set,o=[],r=i=>{var n;if(!(i!=null&&i.uid)||t.has(i.uid))return;t.add(i.uid);const l=(n=i.getUserModifiedFields)==null?void 0:n.call(i);l!=null&&l.size&&o.push(i.uid),Object.values(i.subModels||{}).forEach(a=>{import_lodash.default.castArray(a).forEach(c=>{c&&typeof c=="object"&&r(c)})})};return r(e),o}function createBeforeCloseDirtyState(e){const t=collectDirtyFormModelUids(e);return{hasDirtyForms:t.length>0,formModelUids:t}}function createViewBeforeCloseHandler(e){return t=>L(this,[t],function*({result:o,force:r}){if(r)return!0;const i=createBeforeCloseDirtyState(e);let n=!1;const l=yield e.dispatchEvent("close",{result:o,force:!1,dirty:i,controller:{prevent(){n=!0}}}),a=(l==null?void 0:l.__abortedByExitAll)===!0||(Array.isArray(l)?l.some(c=>c instanceof import_flow_engine.FlowExitAllException):!1);return!n&&!a})}const openView=(0,import_flow_engine.defineAction)({name:"openView",title:(0,import_flow_engine.tExpr)("Edit popup"),uiSchema:{mode:{type:"string",title:(0,import_flow_engine.tExpr)("Open mode"),enum:[{label:(0,import_flow_engine.tExpr)("Drawer"),value:"drawer"},{label:(0,import_flow_engine.tExpr)("Dialog"),value:"dialog"},{label:(0,import_flow_engine.tExpr)("Page"),value:"embed"}],"x-decorator":"FormItem","x-component":"Radio.Group"},size:{type:"string",title:(0,import_flow_engine.tExpr)("Popup size"),enum:[{label:(0,import_flow_engine.tExpr)("Small"),value:"small"},{label:(0,import_flow_engine.tExpr)("Medium"),value:"medium"},{label:(0,import_flow_engine.tExpr)("Large"),value:"large"}],"x-decorator":"FormItem","x-component":"Radio.Group","x-reactions":{dependencies:["mode"],fulfill:{state:{hidden:'{{$deps[0] === "embed"}}'}}}}},hideInSettings:e=>L(void 0,null,function*(){var t,o,r,i;if(!e.model.getFlow("displayFieldSettings"))return!1;const n=(r=(o=(t=e.model).getStepParams)==null?void 0:o.call(t,"displayFieldSettings","clickToOpen"))==null?void 0:r.clickToOpen;return n===void 0?!((i=e.collectionField)!=null&&i.isAssociationField()):n===!1}),defaultParams:e=>L(void 0,null,function*(){var t,o,r,i,n,l,a,c,u,d;const m=e.getPropertyMetaTree()||[],p=Array.isArray(m)&&m.some(b=>String(b==null?void 0:b.name)==="record");let h=((t=e.collection)==null?void 0:t.filterTargetKey)||"id";if((r=(o=e.blockModel)==null?void 0:o.resource)!=null&&r.resourceName){const b=e.collection.dataSource.collectionManager.getAssociation((n=(i=e.blockModel)==null?void 0:i.resource)==null?void 0:n.resourceName);(b==null?void 0:b.interface)!=="m2m"&&(h=(b==null?void 0:b.targetKey)||h)}const g=p?`{{ ctx.record.${h} }}`:void 0;let f;try{const b=(a=(l=e.resource)==null?void 0:l.getSourceId)==null?void 0:a.call(l);b!=null&&String(b)!==""&&(f="{{ ctx.resource.sourceId }}")}catch{}const _=(c=e.collection)==null?void 0:c.dataSourceKey,v=(u=e.collection)==null?void 0:u.name;return x(x(x(x({mode:"drawer",size:"medium",pageModelClass:"ChildPageModel",uid:(d=e.model)==null?void 0:d.uid},g?{filterByTk:g}:{}),f?{sourceId:f}:{}),_?{dataSourceKey:_}:{}),v?{collectionName:v}:{})}),beforeParamsSave(e,t){return L(this,null,function*(){if(t!=null&&t.uid){const o=e.engine;if(!(o.getModel(t.uid)||(yield o.loadModel({uid:t.uid}))))throw new Error(e.t("Popup UID not exists"))}})},handler(e,t){return L(this,null,function*(){var o,r,i,n,l,a,c,u,d,m,p,h,g,f,_,v,b,F,y,C,S,P,j;const I=e.inputArgs||{},T=(n=(i=I.defineProperties)!=null?i:(r=(o=e.model.context)==null?void 0:o.inputArgs)==null?void 0:r.defineProperties)!=null?n:void 0,D=(u=(c=I.defineMethods)!=null?c:(a=(l=e.model.context)==null?void 0:l.inputArgs)==null?void 0:a.defineMethods)!=null?u:void 0,E=((m=(d=e.model)==null?void 0:d.getInputArgs)==null?void 0:m.call(d))||{},w=(I==null?void 0:I.defaultInputKeys)||[],k=te=>{const ie=typeof(I==null?void 0:I[te])<"u",re=w.includes(te);return ie&&!re?I[te]:typeof(t==null?void 0:t[te])<"u"?t[te]:ie?I[te]:E==null?void 0:E[te]},N=(()=>{var te;const ie=k("filterByTk");return Array.isArray((te=e.collection)==null?void 0:te.filterTargetKey)&&e.collection.filterTargetKey.length===1&&ie!=null&&typeof ie!="object"?{[e.collection.filterTargetKey[0]]:ie}:ie})(),B=k("sourceId"),M=typeof(I==null?void 0:I.dataSourceKey)<"u"?I.dataSourceKey:t==null?void 0:t.dataSourceKey,$=typeof(I==null?void 0:I.collectionName)<"u"?I.collectionName:t==null?void 0:t.collectionName,q=typeof(I==null?void 0:I.associationName)<"u"?I.associationName:t==null?void 0:t.associationName,O=typeof I.tabUid<"u"?I.tabUid:t.tabUid,V=(p=e.inputArgs)!=null&&p.isMobileLayout?"embed":((h=e.inputArgs)==null?void 0:h.mode)||t.mode||"drawer";let z=typeof I.navigation<"u"?I.navigation:t.navigation;if((T||D)&&(z=!1),z!==!1&&e.isNavigationEnabled!==!1&&!e.inputArgs.navigation&&(g=e.view)!=null&&g.navigation){const te=V,ie=A(x({},e.inputArgs),{dataSourceKey:M,collectionName:$,associationName:q,filterByTk:N,sourceId:B,tabUid:O,viewUid:((_=(f=e.model.context)==null?void 0:f.inputArgs)==null?void 0:_.viewUid)||e.model.uid}),re={type:te,inputArgs:ie,navigation:(v=e.view)==null?void 0:v.navigation,preventClose:!!(t!=null&&t.preventClose),engineCtx:e.engine.context};e.model.context.defineProperty("view",{value:re});const ae={viewUid:((F=(b=e.model.context)==null?void 0:b.inputArgs)==null?void 0:F.viewUid)||e.model.uid,filterByTk:N,sourceId:B,tabUid:O};e.view.navigation.navigateTo(ae);return}if(t!=null&&t.uid&&t.uid!==e.model.uid){yield e.openView(t.uid,x(x(A(x(x({},I),t||{}),{navigation:z,target:e.inputArgs.target||e.layoutContentElement,dataSourceKey:M??E.dataSourceKey,collectionName:$??E.collectionName,associationName:q??E.associationName,filterByTk:N,sourceId:B,tabUid:O}),T?{defineProperties:T}:{}),D?{defineMethods:D}:{}));return}const U={drawer:{small:"30%",medium:"50%",large:"70%"},dialog:{small:"40%",medium:"50%",large:"80%"},embed:{}},K=e.inputArgs.pageModelClass||t.pageModelClass||"ChildPageModel",H=e.inputArgs.size||t.size||"medium";let Y=null,Z=null,W=e.model.uid;if(t.subModelKey){const te=yield e.engine.loadOrCreateModel({async:!0,parentId:e.model.uid,subKey:t.subModelKey,subType:"object",use:"FlowModel"},{skipSave:!e.flowSettingsEnabled});te!=null&&te.uid&&(W=te.uid)}const J=!!((y=e.inputArgs)!=null&&y.navigation),oe=((S=(C=e.view)==null?void 0:C.inputArgs)==null?void 0:S.openerUids)||I.openerUids||[],G=J?I.openerUids||oe:[...oe,((j=(P=e.model.context)==null?void 0:P.inputArgs)==null?void 0:j.viewUid)||e.model.uid],Q=typeof I.preventClose<"u"?!!I.preventClose:!!t.preventClose,X=A(x(x({viewUid:e.model.uid},e.inputArgs),I),{dataSourceKey:M,collectionName:$,associationName:q,tabUid:O,openerUids:G,pageActive:!0});X.filterByTk=N,X.sourceId=B,yield e.viewer.open({type:V,triggerByRouter:X.triggerByRouter,inputArgs:import_lodash.default.omit(X,"triggerByRouter"),preventClose:Q,destroyOnClose:!0,inheritContext:!1,target:e.inputArgs.target||e.layoutContentElement,width:U[V][H],content:te=>(e.inputArgs.destroyRef&&(e.inputArgs.destroyRef.current=te.destroy),e.inputArgs.updateRef&&(e.inputArgs.updateRef.current=te.update),(0,import_jsx_runtime.jsx)(FlowPage,{parentId:W,pageModelClass:K,onModelLoaded:(ie,re)=>{var ae,se,le,ge,me,xe,pe,fe;Y=ie;const de=re||e.engine.getModel(Y);if(Z=de||null,!de)return;te.beforeClose=createViewBeforeCloseHandler(de);const ce=(ge=(le=I.defineProperties)!=null?le:(se=(ae=e.model.context)==null?void 0:ae.inputArgs)==null?void 0:se.defineProperties)!=null?ge:{},ne=(fe=(pe=I.defineMethods)!=null?pe:(xe=(me=e.model.context)==null?void 0:me.inputArgs)==null?void 0:xe.defineMethods)!=null?fe:{};de.context.defineProperty("currentView",{get:()=>te}),de.context.defineProperty("flowSettingsEnabled",{get:()=>e.flowSettingsEnabled,cache:!1}),de.context.defineProperty("view",{get:()=>te}),de.context.defineProperty("closable",{get:()=>V!=="embed"}),de instanceof RootPageModel&&de.context.defineProperty("pageActive",{get:()=>e.pageActive}),Object.entries(ce).forEach(([ue,he])=>{de.context.defineProperty(ue,he)}),Object.entries(ne).forEach(([ue,he])=>{de.context.defineMethod(ue,he)}),de.invalidateFlowCache("beforeRender",!0),de._rerunLastAutoRun()},defaultTabTitle:e.model.defaultPopupTitle})),styles:{content:x({padding:0,backgroundColor:e.model.flowEngine.context.themeToken.colorBgLayout},V==="embed"?{position:"absolute",top:0,left:0,right:0,bottom:0}:{}),body:{padding:0}},onClose:()=>{if(Y){const te=Z||e.model.flowEngine.getModel(Y);te==null||te.invalidateFlowCache("beforeRender",!0)}},onOpen:e.inputArgs.onOpen})})}}),runjs=(0,import_flow_engine.defineAction)({name:"runjs",title:(0,import_flow_engine.tExpr)("Execute JavaScript"),scene:[import_flow_engine.ActionScene.DYNAMIC_EVENT_FLOW],sort:1e4,useRawParams:!0,uiSchema:{code:{type:"string","x-component":CodeEditor,"x-component-props":{enableLinter:!0,height:"200px",scene:"eventFlow"}}},handler(e,t){return L(this,null,function*(){var o;if((o=e.inputArgs)!=null&&o.navigation)return;const r=(0,import_flow_engine.createSafeNavigator)();return e.runjs(t.code,{window:(0,import_flow_engine.createSafeWindow)({navigator:r}),document:(0,import_flow_engine.createSafeDocument)(),navigator:r})})}}),DEFAULT_DURATION$1=3;function normalizeDuration$1(e,t=DEFAULT_DURATION$1){if(e===null||typeof e>"u")return t;const o=Number(e);return Number.isNaN(o)?t:Math.max(0,Math.trunc(o))}const showMessage=(0,import_flow_engine.defineAction)({name:"showMessage",title:(0,import_flow_engine.tExpr)("Show message"),scene:import_flow_engine.ActionScene.DYNAMIC_EVENT_FLOW,sort:500,uiSchema:{value:{type:"object","x-component":e=>{var t;const{value:o={},onChange:r}=e,i=(0,import_flow_engine.useFlowContext)(),n=i.model.translate.bind(i.model),l={type:(t=o.type)!=null?t:"info",content:o.content||"",duration:normalizeDuration$1(o.duration)},a=p=>{r(x(x({},l),p))},c=p=>{a({type:p.target.value})},u=p=>{a({content:p.target.value})},d=p=>{a({duration:normalizeDuration$1(p)})},m=p=>(0,import_jsx_runtime.jsx)("div",{style:{marginBottom:"4px",fontSize:"14px"},children:p});return(0,import_jsx_runtime.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"12px"},children:[(0,import_jsx_runtime.jsxs)("div",{children:[m(n("Message type")),(0,import_jsx_runtime.jsxs)(import_antd.Radio.Group,{value:l.type,onChange:c,children:[(0,import_jsx_runtime.jsx)(import_antd.Radio,{value:"success",children:n("Success")}),(0,import_jsx_runtime.jsx)(import_antd.Radio,{value:"error",children:n("Error")}),(0,import_jsx_runtime.jsx)(import_antd.Radio,{value:"info",children:n("Info")}),(0,import_jsx_runtime.jsx)(import_antd.Radio,{value:"warning",children:n("Warning")}),(0,import_jsx_runtime.jsx)(import_antd.Radio,{value:"loading",children:n("Loading")})]})]}),(0,import_jsx_runtime.jsxs)("div",{children:[m(n("Message content")),(0,import_jsx_runtime.jsx)(import_antd.Input.TextArea,{value:l.content,onChange:u,placeholder:n("Please input message content"),rows:3,style:{width:"100%"}})]}),(0,import_jsx_runtime.jsxs)("div",{children:[m(n("Duration (seconds, 0 = no auto close)")),(0,import_jsx_runtime.jsx)(import_antd.InputNumber,{value:l.duration,onChange:d,min:0,step:1,precision:0,style:{width:"100%"}})]})]})}}},handler:(e,t)=>L(void 0,[e,t],function*(o,{value:r}){const i=r||{type:"info",content:"",duration:DEFAULT_DURATION$1},{type:n="info",content:l,duration:a=DEFAULT_DURATION$1}=i,c=normalizeDuration$1(a);if(!l)return;const u=`flow-message-${(0,import_client.uid)()}`,d={key:u,type:n,content:c===0?(0,import_jsx_runtime.jsxs)("span",{style:{display:"inline-flex",alignItems:"center",gap:"8px"},children:[(0,import_jsx_runtime.jsx)("span",{children:l}),(0,import_jsx_runtime.jsx)(import_icons.CloseOutlined,{role:"button","aria-label":"close message",style:{color:"rgba(0, 0, 0, 0.45)",cursor:"pointer",fontSize:"12px"},onClick:()=>{var m,p;return(p=(m=o.message).destroy)==null?void 0:p.call(m,u)}})]}):l,duration:c};o.message.open(d)})}),DEFAULT_DURATION=5;function normalizeDuration(e,t=DEFAULT_DURATION){if(e===null||typeof e>"u")return t;const o=Number(e);return Number.isNaN(o)?t:Math.max(0,Math.trunc(o))}const showNotification=(0,import_flow_engine.defineAction)({name:"showNotification",title:(0,import_flow_engine.tExpr)("Show notification"),scene:import_flow_engine.ActionScene.DYNAMIC_EVENT_FLOW,sort:600,uiSchema:{value:{type:"object","x-component":e=>{var t,o;const{value:r={},onChange:i}=e,n=(0,import_flow_engine.useFlowContext)(),l=n.model.translate.bind(n.model),a={type:(t=r.type)!=null?t:"info",title:r.title||"",description:r.description||"",duration:normalizeDuration(r.duration),placement:(o=r.placement)!=null?o:"topRight"},c=_=>{i(x(x({},a),_))},u=_=>{c({type:_.target.value})},d=_=>{c({title:_.target.value})},m=_=>{c({description:_.target.value})},p=_=>{c({duration:normalizeDuration(_)})},h=_=>{c({placement:_})},g=[{label:l("Top left"),value:"topLeft"},{label:l("Top right"),value:"topRight"},{label:l("Bottom left"),value:"bottomLeft"},{label:l("Bottom right"),value:"bottomRight"}],f=_=>(0,import_jsx_runtime.jsx)("div",{style:{marginBottom:"4px",fontSize:"14px"},children:_});return(0,import_jsx_runtime.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"12px"},children:[(0,import_jsx_runtime.jsxs)("div",{children:[f(l("Notification type")),(0,import_jsx_runtime.jsxs)(import_antd.Radio.Group,{value:a.type,onChange:u,children:[(0,import_jsx_runtime.jsx)(import_antd.Radio,{value:"success",children:l("Success")}),(0,import_jsx_runtime.jsx)(import_antd.Radio,{value:"error",children:l("Error")}),(0,import_jsx_runtime.jsx)(import_antd.Radio,{value:"info",children:l("Info")}),(0,import_jsx_runtime.jsx)(import_antd.Radio,{value:"warning",children:l("Warning")})]})]}),(0,import_jsx_runtime.jsxs)("div",{children:[f(l("Notification title")),(0,import_jsx_runtime.jsx)(import_antd.Input,{value:a.title,onChange:d,placeholder:l("Please input notification title"),style:{width:"100%"}})]}),(0,import_jsx_runtime.jsxs)("div",{children:[f(l("Notification description")),(0,import_jsx_runtime.jsx)(import_antd.Input.TextArea,{value:a.description,onChange:m,placeholder:l("Please input notification description"),rows:3,style:{width:"100%"}})]}),(0,import_jsx_runtime.jsxs)("div",{children:[f(l("Placement")),(0,import_jsx_runtime.jsx)(import_antd.Select,{value:a.placement,onChange:h,options:g,style:{width:"100%"}})]}),(0,import_jsx_runtime.jsxs)("div",{children:[f(l("Duration (seconds, 0 = no auto close)")),(0,import_jsx_runtime.jsx)(import_antd.InputNumber,{value:a.duration,onChange:p,min:0,step:1,precision:0,style:{width:"100%"}})]})]})}}},handler:(e,t)=>L(void 0,[e,t],function*(o,{value:r}){const i=r||{type:"info",title:"",description:"",duration:DEFAULT_DURATION,placement:"topRight"},{type:n="info",title:l,description:a,duration:c=DEFAULT_DURATION,placement:u="topRight"}=i,d=normalizeDuration(c);!l&&!a||o.notification.open({type:n,message:l,description:a,duration:d,placement:u})})}),navigateToURL=(0,import_flow_engine.defineAction)({name:"navigateToURL",title:(0,import_flow_engine.tExpr)("Navigate to URL"),scene:import_flow_engine.ActionScene.DYNAMIC_EVENT_FLOW,sort:400,uiSchema:{value:{type:"object",properties:{url:{title:(0,import_flow_engine.tExpr)("URL"),type:"string","x-decorator":"FormItem","x-component":TextAreaWithContextSelector,description:'{{t("Do not concatenate search params in the URL")}}',required:!0},searchParams:{type:"array","x-component":"ArrayItems","x-decorator":"FormItem",title:'{{t("Search parameters")}}',items:{type:"object",properties:{space:{type:"void","x-component":"Space","x-component-props":{style:{flexWrap:"nowrap",maxWidth:"100%",display:"flex"},className:import_css.css`
|
|
2291
|
+
`,EllipsisJSON=({content:e,style:t,className:o})=>{const r=(0,import_react2.useRef)(null),[i,n]=(0,import_react2.useState)(!1);(0,import_react2.useEffect)(()=>{const a=r.current;a&&n(a.scrollWidth>a.clientWidth)},[e]);const l=(0,import_jsx_runtime.jsx)("div",{ref:r,style:A(x({},t),{whiteSpace:"nowrap",fontFamily:"Consolas, Monaco, monospace",overflow:"hidden",textOverflow:"ellipsis"}),children:e});return i?(0,import_jsx_runtime.jsx)(import_antd.Tooltip,{title:(0,import_jsx_runtime.jsx)("pre",{style:{margin:0,maxHeight:400},className:o,children:e}),overlayInnerStyle:{background:"#fff",color:"#000",boxShadow:"0 2px 8px rgba(0,0,0,0.15)",maxWidth:500},color:"#fff",overlayStyle:{maxWidth:500,whiteSpace:"pre-wrap"},children:l}):l};class DisplayJSONFieldModel extends DisplayTitleFieldModel{renderComponent(t){const{space:o,style:r,className:i,overflowMode:n}=this.props;let l="";if(t!=null)try{l=JSON.stringify(t,null,o??2)}catch{l=this.flowEngine.translate("Invalid JSON format")}return n==="ellipsis"?(0,import_jsx_runtime.jsx)(EllipsisJSON,{content:l,style:r,className:(0,import_css.cx)(i,JSONClassName)}):(0,import_jsx_runtime.jsx)("pre",{className:(0,import_css.cx)(i,JSONClassName),style:r,children:l})}}import_flow_engine.DisplayItemModel.bindModelToInterface("DisplayJSONFieldModel",["json"],{isDefault:!0});function countDecimalPlaces(e){const t=(0,import_lodash.toString)(e);return t.includes(".")?t.split(".")[1].replace(/0+$/,"").length:0}const separators={"0,0.00":{thousands:",",decimal:"."},"0.0,00":{thousands:".",decimal:","},"0 0,00":{thousands:" ",decimal:"."},"0.00":{thousands:"",decimal:"."}};function formatNumberWithSeparator(e,t="0.00",o=1,r){if(e>Number.MAX_SAFE_INTEGER||e<Number.MIN_SAFE_INTEGER)return formatBigNumberWithSeparator(e,t,o,r);let i=e;r&&(i=Number(e));let n="";if(separators[t]){const{thousands:l,decimal:a}=separators[t];n=i.toLocaleString("en-US",{style:"decimal",minimumFractionDigits:o,maximumFractionDigits:o}).replace(/,/g,"comma_placeholder").replace(/\./g,"dot_placeholder").replace(/comma_placeholder/g,l).replace(/dot_placeholder/g,a)}else n=i.toString();return n}function formatBigNumberWithSeparator(e,t="0.00",o=1,r){let i=e;r&&(i=new import_bignumber.default(e).toString());let n="";if(separators[t]){const{thousands:l,decimal:a}=separators[t],[c,u]=i.toString().split(".");let d=u;const m=c.replace(/\B(?=(\d{3})+(?!\d))/g,l);d&&o?(d=d.substring(0,o),n=`${m}${a}${d}`):n=m}else n=i.toString();return n}function formatUnitConversion(e,t="*",o){if(!o)return e;let r;if(t==="*")r=e*o;else if(t==="/")if(o!==0)r=e/o;else return console.error("Error: Division by zero."),null;else return console.error("Error: Invalid operator. Use '*' for multiplication or '/' for division."),null;return math.round(r,9)}function scientificNotation(e,t,o="."){return(0,import_d3_format.format)(`.${t}e`)(e).replace(".",o).replace(/e([+-]?\d+)/,(r,i)=>i.startsWith("+")?`×10<sup>${i.slice(1)}</sup>`:`×10<sup>-${i.slice(1)}</sup>`)}function formatNumber(e){var t;const{step:o,formatStyle:r="normal",value:i,unitConversion:n,unitConversionType:l,separator:a="0,0.00"}=e;if(!(0,import_shared.isValid)(i))return null;const c=formatUnitConversion(i,l,n),u=(0,import_client.toFixedByStep)(c,o);let d;return d=formatNumberWithSeparator(u,a,countDecimalPlaces(o),r),r==="scientifix"&&(d=scientificNotation(Number(c),countDecimalPlaces(o),(t=separators==null?void 0:separators[a])==null?void 0:t.decimal)),d==="NaN"&&(d=i),d}const getDisplayNumber=e=>{const{numberStep:t,formatStyle:o,value:r,unitConversion:i,unitConversionType:n,separator:l}=e;return formatNumber({step:t,formatStyle:o,value:r,unitConversion:i,unitConversionType:n,separator:l})};class DisplayNumberFieldModel extends ClickableFieldModel{renderComponent(t){const{addonBefore:o,addonAfter:r}=this.props,i=getDisplayNumber(A(x({},this.props),{value:t}));return i?(0,import_jsx_runtime.jsxs)("span",{children:[o,(0,import_jsx_runtime.jsx)("span",{dangerouslySetInnerHTML:{__html:i}}),r]}):null}}DisplayNumberFieldModel.define({label:(0,import_flow_engine.tExpr)("Number")});const UnitConversion$1=()=>{const e=(0,import_react.useForm)(),{unitConversionType:t}=e.values,{t:o}=(0,import_react_i18next.useTranslation)();return(0,import_jsx_runtime.jsxs)(import_antd.Select,{defaultValue:t||"*",style:{width:160},onChange:r=>{e.setValuesIn("unitConversionType",r)},children:[(0,import_jsx_runtime.jsx)(import_antd.Select.Option,{value:"*",children:o("Multiply by")}),(0,import_jsx_runtime.jsx)(import_antd.Select.Option,{value:"/",children:o("Divide by")})]})};DisplayNumberFieldModel.registerFlow({key:"numberSettings",sort:500,title:(0,import_flow_engine.tExpr)("Number settings"),steps:{format:{title:(0,import_flow_engine.tExpr)("Number format"),use:"numberFormat"}}});import_flow_engine.DisplayItemModel.bindModelToInterface("DisplayNumberFieldModel",["number","integer","id","snowflakeId"],{isDefault:!0});class DisplayPasswordFieldModel extends FieldModel{render(){const{value:t}=this.props;return t?(0,import_jsx_runtime.jsx)("div",{children:"********"}):(0,import_jsx_runtime.jsx)("div",{})}}import_flow_engine.DisplayItemModel.bindModelToInterface("DisplayPasswordFieldModel",["password"],{isDefault:!0});class DisplayPercentFieldModel extends ClickableFieldModel{renderComponent(t){const{addonBefore:o="",addonAfter:r="%",numberStep:i}=this.props,n=math.round(t*100,9);if(t==null)return;const l=getDisplayNumber(A(x({},this.props),{value:n,numberStep:i}));return l?(0,import_jsx_runtime.jsxs)("div",{children:[o,(0,import_jsx_runtime.jsx)("span",{dangerouslySetInnerHTML:{__html:l}}),r]}):null}}DisplayPercentFieldModel.registerFlow({key:"numberSettings",sort:500,title:(0,import_flow_engine.tExpr)("Number settings"),steps:{format:{title:(0,import_flow_engine.tExpr)("Number format"),uiSchema:e=>({formatStyle:{type:"string",enum:[{value:"normal",label:(0,import_flow_engine.tExpr)("Normal")},{value:"scientifix",label:(0,import_flow_engine.tExpr)("Scientifix notation")}],"x-decorator":"FormItem","x-component":"Select",title:"{{t('Style')}}"},unitConversion:{type:"number","x-decorator":"FormItem","x-component":"NumberPicker",title:"{{t('Unit conversion')}}","x-component-props":{style:{width:"100%"},addonBefore:(0,import_jsx_runtime.jsx)(UnitConversion$1,{})}},separator:{type:"string",enum:[{value:"0,0.00",label:"100,000.00"},{value:"0.0,00",label:"100.000,00"},{value:"0 0,00",label:"100 000.00"},{value:"0.00",label:"100000.00"}],"x-decorator":"FormItem","x-component":"Select",title:"{{t('Separator')}}"},numberStep:{type:"string",title:'{{t("Precision")}}',"x-component":"Select","x-decorator":"FormItem",enum:[{value:"1",label:"1"},{value:"0.1",label:"1.0"},{value:"0.01",label:"1.00"},{value:"0.001",label:"1.000"},{value:"0.0001",label:"1.0000"},{value:"0.00001",label:"1.00000"},{value:"0.000001",label:"1.000000"},{value:"0.0000001",label:"1.0000000"},{value:"0.00000001",label:"1.00000000"}]},addonBefore:{type:"string",title:'{{t("Prefix")}}',"x-component":"Input","x-decorator":"FormItem"},addonAfter:{type:"string",title:'{{t("Suffix")}}',"x-component":"Input","x-decorator":"FormItem","x-disabled":!0}}),defaultParams:e=>{const{formatStyle:t,unitConversion:o,unitConversionType:r,separator:i,step:n,addonBefore:l,addonAfter:a}=e.collectionField.getComponentProps();return{formatStyle:t||"normal",unitConversion:o,unitConversionType:r,separator:i||"0,0.00",numberStep:n||"1",addonBefore:l,addonAfter:a||"%"}},handler(e,t){const{formatStyle:o,unitConversion:r,unitConversionType:i,separator:n,numberStep:l,addonBefore:a,addonAfter:c}=t;e.model.setProps({formatStyle:o,unitConversion:r,unitConversionType:i,separator:n,numberStep:l,addonBefore:a,addonAfter:c})}}}});DisplayPercentFieldModel.define({label:(0,import_flow_engine.tExpr)("Percent")});import_flow_engine.DisplayItemModel.bindModelToInterface("DisplayPercentFieldModel",["percent"],{isDefault:!0});class DisplayTextFieldModel extends ClickableFieldModel{t(t){return typeof t!="string"?t:t.startsWith("{{")&&t.endsWith("}}")?this.translate(t):t}renderComponent(t,o){const{prefix:r,suffix:i,overflowMode:n}=this.props;return(0,import_jsx_runtime.jsxs)("span",{style:{whiteSpace:n==="wrap"||o?"pre-line":"nowrap"},children:[r,this.t(t),i]})}}DisplayTextFieldModel.define({label:(0,import_flow_engine.tExpr)("Text")});import_flow_engine.DisplayItemModel.bindModelToInterface("DisplayTextFieldModel",["input","email","phone","uuid","textarea","nanoid"],{isDefault:!0});class DisplayURLFieldModel extends DisplayTitleFieldModel{renderComponent(t){return(0,import_jsx_runtime.jsx)(import_jsx_runtime.Fragment,{children:t&&(0,import_jsx_runtime.jsx)("a",{target:"_blank",rel:"noopener noreferrer",href:t,style:{overflowWrap:"anywhere"},children:t})})}}DisplayURLFieldModel.define({label:(0,import_flow_engine.tExpr)("URL")});import_flow_engine.DisplayItemModel.bindModelToInterface("DisplayURLFieldModel",["url"],{isDefault:!0,when:e=>!0});class DisplayTimeFieldModel extends ClickableFieldModel{renderComponent(t){const{prefix:o,suffix:r}=this.props,i=this.props.format||"HH:mm:ss",n=t&&(0,import_dayjs.default)(t,"HH:mm:ss").format(i);return(0,import_jsx_runtime.jsxs)("span",{children:[o,n,r]})}}DisplayTimeFieldModel.registerFlow({key:"timeSettings",sort:1e3,title:(0,import_flow_engine.tExpr)("Time settings"),steps:{dateFormat:{title:(0,import_flow_engine.tExpr)("Time format"),use:"dateDisplayFormat"}}});DisplayTimeFieldModel.define({label:(0,import_flow_engine.tExpr)("Time")});import_flow_engine.DisplayItemModel.bindModelToInterface("DisplayTimeFieldModel",["time"],{isDefault:!0});class DisplayCheckboxFieldModel extends FieldModel{render(){const{value:t,showUnchecked:o}=this.props;return t?(0,import_jsx_runtime.jsx)(import_icons.CheckOutlined,{style:{color:"#52c41a"}}):o?(0,import_jsx_runtime.jsx)(import_icons.CloseOutlined,{style:{color:"#ff4d4f"}}):(0,import_jsx_runtime.jsx)(import_antd.Checkbox,{disabled:!0})}}DisplayCheckboxFieldModel.define({label:(0,import_flow_engine.tExpr)("Checkbox")});import_flow_engine.DisplayItemModel.bindModelToInterface("DisplayCheckboxFieldModel",["checkbox"],{isDefault:!0});const models=Object.freeze(Object.defineProperty({__proto__:null,ActionGroupModel,ActionModel,ActionSceneEnum,ActionWithoutPermission,AddChildActionModel,AddNewActionModel,AssignFormGridModel,AssignFormItemModel,AssignFormModel,AssociationFieldGroupModel,AssociationFieldModel,BasePageTabModel,BlockGridModel,BlockModel,BlockSceneEnum,BulkDeleteActionModel,CascadeSelectFieldModel,CascadeSelectInnerFieldModel,CascadeSelectListFieldModel,CheckboxFieldModel,CheckboxGroupFieldModel,ChildPageModel,ChildPageTabModel,ClickableFieldModel,CollectionActionGroupModel,CollectionActionModel,CollectionBlockModel,CollectionSelectorFieldModel,ColorFieldModel,CommonItemModel,CreateContent,CreateFormModel,CustomWidth,DataBlockModel,DateOnlyFieldModel,DateOnlyFilterFieldModel,DateOnlyPicker,DateTimeFilterFieldModel,DateTimeNoTzFieldModel,DateTimeNoTzFilterFieldModel,DateTimeNoTzPicker,DateTimeTzFieldModel,DateTimeTzFilterFieldModel,DateTimeTzPicker,DeleteActionModel,DetailsAssociationFieldGroupModel,DetailsBlockModel,DetailsCustomItemModel,DetailsGridModel,DetailsItemModel,DetailsJSFieldItemModel,DisplayCheckboxFieldModel,DisplayColorFieldModel,DisplayDateTimeFieldModel,DisplayEnumFieldModel,DisplayHtmlFieldModel,DisplayIconFieldModel,DisplayJSONFieldModel,DisplayNumberFieldModel,DisplayPasswordFieldModel,DisplayPercentFieldModel,DisplaySubItemFieldModel,DisplaySubListFieldModel,DisplaySubTableFieldModel,DisplayTextFieldModel,DisplayTimeFieldModel,DisplayTitleFieldModel,DisplayURLFieldModel,DividerItemModel,EditActionModel,EditFormContent,EditFormModel,ExpandCollapseActionModel,FieldDeletePlaceholder,FieldModel,FieldModelSelect,FieldOperatorSelect,FilterActionModel,FilterBlockModel,FilterFormActionGroupModel,FilterFormActionModel,FilterFormBlockModel,FilterFormCollapseActionModel,FilterFormCustomFieldModel,FilterFormCustomItemModel,FilterFormCustomRecordSelectFieldModel,FilterFormFieldModel,FilterFormGridModel,FilterFormItemModel,FilterFormJSActionModel,FilterFormRecordSelectFieldModel,FilterFormResetActionModel,FilterFormSubmitActionModel,FilterManager,FormActionGroupModel,FormActionModel,FormAssociationFieldGroupModel,FormAssociationItemModel,FormBlockContent,FormBlockModel,FormComponent,FormCustomItemModel,FormGridModel,FormItemModel,FormJSFieldItemModel,FormModel,FormSubmitActionModel,GRID_FLOW_KEY,GRID_STEP,GridModel,IconFieldModel,InputFieldModel,InputNumberField,JSActionModel,JSBlockModel,JSCollectionActionModel,JSColumnModel,JSEditableFieldModel,JSFieldModel,JSFormActionModel,JSItemModel,JSRecordActionModel,get JsonFieldModel(){return JsonFieldModel},JsonInput,LinkActionModel,MainPageModel,MarkdownItemModel,NBColorPicker,NumberFieldModel,ObjectNester,PageModel,PageTabModel,PasswordFieldModel,PercentFieldModel,PercentInput,PopupActionModel,PopupCollectionActionModel,PopupSubTableActionGroupModel,PopupSubTableActionsColumnModel,PopupSubTableEditActionModel,PopupSubTableFieldModel,PopupSubTableFormActionGroupModel,PopupSubTableFormModel,PopupSubTableFormSubmitActionModel,PopupSubTableRemoveActionModel,QuickEditFormModel,RadioGroupFieldModel,RecordActionGroupModel,RecordActionModel,RecordPickerContent,RecordPickerFieldModel,RecordSelectFieldModel,RefreshActionModel,RichTextField,get RichTextFieldModel(){return RichTextFieldModel},RootPageModel,RootPageTabModel,RouteModel,SelectFieldModel,SourceCascader,SubFormFieldModel,SubFormListFieldModel,SubPageModel,SubTableColumnModel,SubTableFieldModel,SubTableRecordAction,TableActionsColumnModel,TableAssociationFieldGroupModel,TableBlockModel,TableColumnModel,TableCustomColumnModel,TableJSFieldItemModel,TableSelectModel,get TextareaFieldModel(){return TextareaFieldModel},TimeFieldModel,UnitConversion:UnitConversion$1,UpdateRecordActionModel,VariableFieldFormModel,ViewActionModel,buildDisplayPathFromValue,buildRecordPickerParentItemContext,collectAssociationHydrationCandidates,collectCascadeHydrationCandidate,connectFields,customizeFilterRender,defaultOperator,findOptionPathByTk,formatNumber,getAllDataModels,getDefaultOperator,getDisplayNumber,getValueWithIndex,injectRecordPickerPopupContext,isFilterValueEmpty,joinUrlSearch,markCascadeHydrationDone,operatorComponentProps,recalculateGridSizes,resolveCustomFieldOperatorList,resolveDefaultCustomFieldOperator,toOperatorSelectOptions,transformNestedData,transformRowsToSingleColumn},Symbol.toStringTag,{value:"Module"}));function collectDirtyFormModelUids(e){if(!e)return[];const t=new Set,o=[],r=i=>{var n;if(!(i!=null&&i.uid)||t.has(i.uid))return;t.add(i.uid);const l=(n=i.getUserModifiedFields)==null?void 0:n.call(i);l!=null&&l.size&&o.push(i.uid),Object.values(i.subModels||{}).forEach(a=>{import_lodash.default.castArray(a).forEach(c=>{c&&typeof c=="object"&&r(c)})})};return r(e),o}function createBeforeCloseDirtyState(e){const t=collectDirtyFormModelUids(e);return{hasDirtyForms:t.length>0,formModelUids:t}}function createViewBeforeCloseHandler(e){return t=>L(this,[t],function*({result:o,force:r}){if(r)return!0;const i=createBeforeCloseDirtyState(e);let n=!1;const l=yield e.dispatchEvent("close",{result:o,force:!1,dirty:i,controller:{prevent(){n=!0}}}),a=(l==null?void 0:l.__abortedByExitAll)===!0||(Array.isArray(l)?l.some(c=>c instanceof import_flow_engine.FlowExitAllException):!1);return!n&&!a})}const openView=(0,import_flow_engine.defineAction)({name:"openView",title:(0,import_flow_engine.tExpr)("Edit popup"),uiSchema:{mode:{type:"string",title:(0,import_flow_engine.tExpr)("Open mode"),enum:[{label:(0,import_flow_engine.tExpr)("Drawer"),value:"drawer"},{label:(0,import_flow_engine.tExpr)("Dialog"),value:"dialog"},{label:(0,import_flow_engine.tExpr)("Page"),value:"embed"}],"x-decorator":"FormItem","x-component":"Radio.Group"},size:{type:"string",title:(0,import_flow_engine.tExpr)("Popup size"),enum:[{label:(0,import_flow_engine.tExpr)("Small"),value:"small"},{label:(0,import_flow_engine.tExpr)("Medium"),value:"medium"},{label:(0,import_flow_engine.tExpr)("Large"),value:"large"}],"x-decorator":"FormItem","x-component":"Radio.Group","x-reactions":{dependencies:["mode"],fulfill:{state:{hidden:'{{$deps[0] === "embed"}}'}}}}},hideInSettings:e=>L(void 0,null,function*(){var t,o,r,i;if(!e.model.getFlow("displayFieldSettings"))return!1;const n=(r=(o=(t=e.model).getStepParams)==null?void 0:o.call(t,"displayFieldSettings","clickToOpen"))==null?void 0:r.clickToOpen;return n===void 0?!((i=e.collectionField)!=null&&i.isAssociationField()):n===!1}),defaultParams:e=>L(void 0,null,function*(){var t,o,r,i,n,l,a,c,u,d;const m=e.getPropertyMetaTree()||[],p=Array.isArray(m)&&m.some(b=>String(b==null?void 0:b.name)==="record");let h=((t=e.collection)==null?void 0:t.filterTargetKey)||"id";if((r=(o=e.blockModel)==null?void 0:o.resource)!=null&&r.resourceName){const b=e.collection.dataSource.collectionManager.getAssociation((n=(i=e.blockModel)==null?void 0:i.resource)==null?void 0:n.resourceName);(b==null?void 0:b.interface)!=="m2m"&&(h=(b==null?void 0:b.targetKey)||h)}const g=p?`{{ ctx.record.${h} }}`:void 0;let f;try{const b=(a=(l=e.resource)==null?void 0:l.getSourceId)==null?void 0:a.call(l);b!=null&&String(b)!==""&&(f="{{ ctx.resource.sourceId }}")}catch{}const _=(c=e.collection)==null?void 0:c.dataSourceKey,v=(u=e.collection)==null?void 0:u.name;return x(x(x(x({mode:"drawer",size:"medium",pageModelClass:"ChildPageModel",uid:(d=e.model)==null?void 0:d.uid},g?{filterByTk:g}:{}),f?{sourceId:f}:{}),_?{dataSourceKey:_}:{}),v?{collectionName:v}:{})}),beforeParamsSave(e,t){return L(this,null,function*(){if(t!=null&&t.uid){const o=e.engine;if(!(o.getModel(t.uid)||(yield o.loadModel({uid:t.uid}))))throw new Error(e.t("Popup UID not exists"))}})},handler(e,t){return L(this,null,function*(){var o,r,i,n,l,a,c,u,d,m,p,h,g,f,_,v,b,F,y,C,S,P,j;const I=e.inputArgs||{},T=(n=(i=I.defineProperties)!=null?i:(r=(o=e.model.context)==null?void 0:o.inputArgs)==null?void 0:r.defineProperties)!=null?n:void 0,D=(u=(c=I.defineMethods)!=null?c:(a=(l=e.model.context)==null?void 0:l.inputArgs)==null?void 0:a.defineMethods)!=null?u:void 0,E=((m=(d=e.model)==null?void 0:d.getInputArgs)==null?void 0:m.call(d))||{},w=(I==null?void 0:I.defaultInputKeys)||[],k=te=>{const ie=typeof(I==null?void 0:I[te])<"u",re=w.includes(te);return ie&&!re?I[te]:typeof(t==null?void 0:t[te])<"u"?t[te]:ie?I[te]:E==null?void 0:E[te]},N=(()=>{var te;const ie=k("filterByTk");return Array.isArray((te=e.collection)==null?void 0:te.filterTargetKey)&&e.collection.filterTargetKey.length===1&&ie!=null&&typeof ie!="object"?{[e.collection.filterTargetKey[0]]:ie}:ie})(),B=k("sourceId"),M=typeof(I==null?void 0:I.dataSourceKey)<"u"?I.dataSourceKey:t==null?void 0:t.dataSourceKey,$=typeof(I==null?void 0:I.collectionName)<"u"?I.collectionName:t==null?void 0:t.collectionName,q=typeof(I==null?void 0:I.associationName)<"u"?I.associationName:t==null?void 0:t.associationName,O=typeof I.tabUid<"u"?I.tabUid:t.tabUid,V=(p=e.inputArgs)!=null&&p.isMobileLayout?"embed":((h=e.inputArgs)==null?void 0:h.mode)||t.mode||"drawer";let z=typeof I.navigation<"u"?I.navigation:t.navigation;if((T||D)&&(z=!1),z!==!1&&e.isNavigationEnabled!==!1&&!e.inputArgs.navigation&&(g=e.view)!=null&&g.navigation){const te=V,ie=A(x({},e.inputArgs),{dataSourceKey:M,collectionName:$,associationName:q,filterByTk:N,sourceId:B,tabUid:O,viewUid:((_=(f=e.model.context)==null?void 0:f.inputArgs)==null?void 0:_.viewUid)||e.model.uid}),re={type:te,inputArgs:ie,navigation:(v=e.view)==null?void 0:v.navigation,preventClose:!!(t!=null&&t.preventClose),engineCtx:e.engine.context};e.model.context.defineProperty("view",{value:re});const ae={viewUid:((F=(b=e.model.context)==null?void 0:b.inputArgs)==null?void 0:F.viewUid)||e.model.uid,filterByTk:N,sourceId:B,tabUid:O};e.view.navigation.navigateTo(ae);return}if(t!=null&&t.uid&&t.uid!==e.model.uid){yield e.openView(t.uid,x(x(A(x(x({},I),t||{}),{navigation:z,target:e.inputArgs.target||e.layoutContentElement,dataSourceKey:M??E.dataSourceKey,collectionName:$??E.collectionName,associationName:q??E.associationName,filterByTk:N,sourceId:B,tabUid:O}),T?{defineProperties:T}:{}),D?{defineMethods:D}:{}));return}const U={drawer:{small:"30%",medium:"50%",large:"70%"},dialog:{small:"40%",medium:"50%",large:"80%"},embed:{}},K=e.inputArgs.pageModelClass||t.pageModelClass||"ChildPageModel",H=e.inputArgs.size||t.size||"medium";let Y=null,Z=null,W=e.model.uid;if(t.subModelKey){const te=yield e.engine.loadOrCreateModel({async:!0,parentId:e.model.uid,subKey:t.subModelKey,subType:"object",use:"FlowModel"},{skipSave:!e.flowSettingsEnabled});te!=null&&te.uid&&(W=te.uid)}const J=!!((y=e.inputArgs)!=null&&y.navigation),oe=((S=(C=e.view)==null?void 0:C.inputArgs)==null?void 0:S.openerUids)||I.openerUids||[],G=J?I.openerUids||oe:[...oe,((j=(P=e.model.context)==null?void 0:P.inputArgs)==null?void 0:j.viewUid)||e.model.uid],Q=typeof I.preventClose<"u"?!!I.preventClose:!!t.preventClose,X=A(x(x({viewUid:e.model.uid},e.inputArgs),I),{dataSourceKey:M,collectionName:$,associationName:q,tabUid:O,openerUids:G,pageActive:!0});X.filterByTk=N,X.sourceId=B,yield e.viewer.open({type:V,triggerByRouter:X.triggerByRouter,inputArgs:import_lodash.default.omit(X,"triggerByRouter"),preventClose:Q,destroyOnClose:!0,inheritContext:!1,target:e.inputArgs.target||e.layoutContentElement,width:U[V][H],content:te=>(e.inputArgs.destroyRef&&(e.inputArgs.destroyRef.current=te.destroy),e.inputArgs.updateRef&&(e.inputArgs.updateRef.current=te.update),(0,import_jsx_runtime.jsx)(FlowPage,{parentId:W,pageModelClass:K,onModelLoaded:(ie,re)=>{var ae,se,le,ge,me,xe,pe,fe;Y=ie;const de=re||e.engine.getModel(Y);if(Z=de||null,!de)return;te.beforeClose=createViewBeforeCloseHandler(de);const ce=(ge=(le=I.defineProperties)!=null?le:(se=(ae=e.model.context)==null?void 0:ae.inputArgs)==null?void 0:se.defineProperties)!=null?ge:{},ne=(fe=(pe=I.defineMethods)!=null?pe:(xe=(me=e.model.context)==null?void 0:me.inputArgs)==null?void 0:xe.defineMethods)!=null?fe:{};de.context.defineProperty("currentView",{get:()=>te}),de.context.defineProperty("flowSettingsEnabled",{get:()=>e.flowSettingsEnabled,cache:!1}),de.context.defineProperty("view",{get:()=>te}),de.context.defineProperty("closable",{get:()=>V!=="embed"}),de instanceof RootPageModel&&de.context.defineProperty("pageActive",{get:()=>e.pageActive}),Object.entries(ce).forEach(([ue,he])=>{de.context.defineProperty(ue,he)}),Object.entries(ne).forEach(([ue,he])=>{de.context.defineMethod(ue,he)}),de.invalidateFlowCache("beforeRender",!0),de._rerunLastAutoRun()},defaultTabTitle:e.model.defaultPopupTitle})),styles:{content:x({padding:0,backgroundColor:e.model.flowEngine.context.themeToken.colorBgLayout},V==="embed"?{position:"absolute",top:0,left:0,right:0,bottom:0}:{}),body:{padding:0}},onClose:()=>{if(Y){const te=Z||e.model.flowEngine.getModel(Y);te==null||te.invalidateFlowCache("beforeRender",!0)}},onOpen:e.inputArgs.onOpen})})}}),runjs=(0,import_flow_engine.defineAction)({name:"runjs",title:(0,import_flow_engine.tExpr)("Execute JavaScript"),scene:[import_flow_engine.ActionScene.DYNAMIC_EVENT_FLOW],sort:1e4,useRawParams:!0,uiSchema:{code:{type:"string","x-component":CodeEditor,"x-component-props":{enableLinter:!0,height:"200px",scene:"eventFlow"}}},handler(e,t){return L(this,null,function*(){var o;if((o=e.inputArgs)!=null&&o.navigation)return;const r=(0,import_flow_engine.createSafeNavigator)();return e.runjs(t.code,{window:(0,import_flow_engine.createSafeWindow)({navigator:r}),document:(0,import_flow_engine.createSafeDocument)(),navigator:r})})}}),DEFAULT_DURATION$1=3;function normalizeDuration$1(e,t=DEFAULT_DURATION$1){if(e===null||typeof e>"u")return t;const o=Number(e);return Number.isNaN(o)?t:Math.max(0,Math.trunc(o))}const showMessage=(0,import_flow_engine.defineAction)({name:"showMessage",title:(0,import_flow_engine.tExpr)("Show message"),scene:import_flow_engine.ActionScene.DYNAMIC_EVENT_FLOW,sort:500,uiSchema:{value:{type:"object","x-component":e=>{var t;const{value:o={},onChange:r}=e,i=(0,import_flow_engine.useFlowContext)(),n=i.model.translate.bind(i.model),l={type:(t=o.type)!=null?t:"info",content:o.content||"",duration:normalizeDuration$1(o.duration)},a=p=>{r(x(x({},l),p))},c=p=>{a({type:p.target.value})},u=p=>{a({content:p.target.value})},d=p=>{a({duration:normalizeDuration$1(p)})},m=p=>(0,import_jsx_runtime.jsx)("div",{style:{marginBottom:"4px",fontSize:"14px"},children:p});return(0,import_jsx_runtime.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"12px"},children:[(0,import_jsx_runtime.jsxs)("div",{children:[m(n("Message type")),(0,import_jsx_runtime.jsxs)(import_antd.Radio.Group,{value:l.type,onChange:c,children:[(0,import_jsx_runtime.jsx)(import_antd.Radio,{value:"success",children:n("Success")}),(0,import_jsx_runtime.jsx)(import_antd.Radio,{value:"error",children:n("Error")}),(0,import_jsx_runtime.jsx)(import_antd.Radio,{value:"info",children:n("Info")}),(0,import_jsx_runtime.jsx)(import_antd.Radio,{value:"warning",children:n("Warning")}),(0,import_jsx_runtime.jsx)(import_antd.Radio,{value:"loading",children:n("Loading")})]})]}),(0,import_jsx_runtime.jsxs)("div",{children:[m(n("Message content")),(0,import_jsx_runtime.jsx)(import_antd.Input.TextArea,{value:l.content,onChange:u,placeholder:n("Please input message content"),rows:3,style:{width:"100%"}})]}),(0,import_jsx_runtime.jsxs)("div",{children:[m(n("Duration (seconds, 0 = no auto close)")),(0,import_jsx_runtime.jsx)(import_antd.InputNumber,{value:l.duration,onChange:d,min:0,step:1,precision:0,style:{width:"100%"}})]})]})}}},handler:(e,t)=>L(void 0,[e,t],function*(o,{value:r}){const i=r||{type:"info",content:"",duration:DEFAULT_DURATION$1},{type:n="info",content:l,duration:a=DEFAULT_DURATION$1}=i,c=normalizeDuration$1(a);if(!l)return;const u=`flow-message-${(0,import_client.uid)()}`,d={key:u,type:n,content:c===0?(0,import_jsx_runtime.jsxs)("span",{style:{display:"inline-flex",alignItems:"center",gap:"8px"},children:[(0,import_jsx_runtime.jsx)("span",{children:l}),(0,import_jsx_runtime.jsx)(import_icons.CloseOutlined,{role:"button","aria-label":"close message",style:{color:"rgba(0, 0, 0, 0.45)",cursor:"pointer",fontSize:"12px"},onClick:()=>{var m,p;return(p=(m=o.message).destroy)==null?void 0:p.call(m,u)}})]}):l,duration:c};o.message.open(d)})}),DEFAULT_DURATION=5;function normalizeDuration(e,t=DEFAULT_DURATION){if(e===null||typeof e>"u")return t;const o=Number(e);return Number.isNaN(o)?t:Math.max(0,Math.trunc(o))}const showNotification=(0,import_flow_engine.defineAction)({name:"showNotification",title:(0,import_flow_engine.tExpr)("Show notification"),scene:import_flow_engine.ActionScene.DYNAMIC_EVENT_FLOW,sort:600,uiSchema:{value:{type:"object","x-component":e=>{var t,o;const{value:r={},onChange:i}=e,n=(0,import_flow_engine.useFlowContext)(),l=n.model.translate.bind(n.model),a={type:(t=r.type)!=null?t:"info",title:r.title||"",description:r.description||"",duration:normalizeDuration(r.duration),placement:(o=r.placement)!=null?o:"topRight"},c=_=>{i(x(x({},a),_))},u=_=>{c({type:_.target.value})},d=_=>{c({title:_.target.value})},m=_=>{c({description:_.target.value})},p=_=>{c({duration:normalizeDuration(_)})},h=_=>{c({placement:_})},g=[{label:l("Top left"),value:"topLeft"},{label:l("Top right"),value:"topRight"},{label:l("Bottom left"),value:"bottomLeft"},{label:l("Bottom right"),value:"bottomRight"}],f=_=>(0,import_jsx_runtime.jsx)("div",{style:{marginBottom:"4px",fontSize:"14px"},children:_});return(0,import_jsx_runtime.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"12px"},children:[(0,import_jsx_runtime.jsxs)("div",{children:[f(l("Notification type")),(0,import_jsx_runtime.jsxs)(import_antd.Radio.Group,{value:a.type,onChange:u,children:[(0,import_jsx_runtime.jsx)(import_antd.Radio,{value:"success",children:l("Success")}),(0,import_jsx_runtime.jsx)(import_antd.Radio,{value:"error",children:l("Error")}),(0,import_jsx_runtime.jsx)(import_antd.Radio,{value:"info",children:l("Info")}),(0,import_jsx_runtime.jsx)(import_antd.Radio,{value:"warning",children:l("Warning")})]})]}),(0,import_jsx_runtime.jsxs)("div",{children:[f(l("Notification title")),(0,import_jsx_runtime.jsx)(import_antd.Input,{value:a.title,onChange:d,placeholder:l("Please input notification title"),style:{width:"100%"}})]}),(0,import_jsx_runtime.jsxs)("div",{children:[f(l("Notification description")),(0,import_jsx_runtime.jsx)(import_antd.Input.TextArea,{value:a.description,onChange:m,placeholder:l("Please input notification description"),rows:3,style:{width:"100%"}})]}),(0,import_jsx_runtime.jsxs)("div",{children:[f(l("Placement")),(0,import_jsx_runtime.jsx)(import_antd.Select,{value:a.placement,onChange:h,options:g,style:{width:"100%"}})]}),(0,import_jsx_runtime.jsxs)("div",{children:[f(l("Duration (seconds, 0 = no auto close)")),(0,import_jsx_runtime.jsx)(import_antd.InputNumber,{value:a.duration,onChange:p,min:0,step:1,precision:0,style:{width:"100%"}})]})]})}}},handler:(e,t)=>L(void 0,[e,t],function*(o,{value:r}){const i=r||{type:"info",title:"",description:"",duration:DEFAULT_DURATION,placement:"topRight"},{type:n="info",title:l,description:a,duration:c=DEFAULT_DURATION,placement:u="topRight"}=i,d=normalizeDuration(c);!l&&!a||o.notification.open({type:n,message:l,description:a,duration:d,placement:u})})}),navigateToURL=(0,import_flow_engine.defineAction)({name:"navigateToURL",title:(0,import_flow_engine.tExpr)("Navigate to URL"),scene:import_flow_engine.ActionScene.DYNAMIC_EVENT_FLOW,sort:400,uiSchema:{value:{type:"object",properties:{url:{title:(0,import_flow_engine.tExpr)("URL"),type:"string","x-decorator":"FormItem","x-component":TextAreaWithContextSelector,description:'{{t("Do not concatenate search params in the URL")}}',required:!0},searchParams:{type:"array","x-component":"ArrayItems","x-decorator":"FormItem",title:'{{t("Search parameters")}}',items:{type:"object",properties:{space:{type:"void","x-component":"Space","x-component-props":{style:{flexWrap:"nowrap",maxWidth:"100%",display:"flex"},className:import_css.css`
|
|
2282
2292
|
& > .ant-space-item:first-child {
|
|
2283
2293
|
flex: 3;
|
|
2284
2294
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nocobase/client",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.29",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"module": "es/index.mjs",
|
|
@@ -28,10 +28,10 @@
|
|
|
28
28
|
"@formily/reactive-react": "^2.2.27",
|
|
29
29
|
"@formily/shared": "^2.2.27",
|
|
30
30
|
"@formily/validator": "^2.2.27",
|
|
31
|
-
"@nocobase/evaluators": "2.0.
|
|
32
|
-
"@nocobase/flow-engine": "2.0.
|
|
33
|
-
"@nocobase/sdk": "2.0.
|
|
34
|
-
"@nocobase/utils": "2.0.
|
|
31
|
+
"@nocobase/evaluators": "2.0.29",
|
|
32
|
+
"@nocobase/flow-engine": "2.0.29",
|
|
33
|
+
"@nocobase/sdk": "2.0.29",
|
|
34
|
+
"@nocobase/utils": "2.0.29",
|
|
35
35
|
"@tanstack/react-table": "^8.21.3",
|
|
36
36
|
"@types/tabulator-tables": "^6.2.6",
|
|
37
37
|
"acorn-jsx": "^5.3.2",
|
|
@@ -96,5 +96,5 @@
|
|
|
96
96
|
"dumi": "2.2.14",
|
|
97
97
|
"dumi-theme-nocobase": "^0.2.32"
|
|
98
98
|
},
|
|
99
|
-
"gitHead": "
|
|
99
|
+
"gitHead": "c623e8be68bb2f8d730c30d2de6ab55e24d0861a"
|
|
100
100
|
}
|