@nocobase/client-v2 2.3.0-beta.13 → 2.3.0-beta.14
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 +2 -2
- package/lib/index.js +2 -2
- package/package.json +7 -7
- package/src/flow/models/actions/JSItemActionModel.tsx +19 -3
- package/src/flow/models/actions/__tests__/JSItemActionModel.test.tsx +47 -1
- package/src/flow/models/blocks/js-block/JSBlock.tsx +5 -1
- package/src/flow/models/blocks/js-block/__tests__/JSBlockModel.test.tsx +23 -1
package/es/index.mjs
CHANGED
|
@@ -822,7 +822,7 @@ function JsItem() {
|
|
|
822
822
|
}
|
|
823
823
|
|
|
824
824
|
ctx.render(<JsItem />);
|
|
825
|
-
`;class dF extends aQ.S0{render(){return(0,m.jsx)("div",{ref:this.context.ref,style:{display:"inline-flex",minHeight:22,alignItems:"center"}})}renderHiddenInConfig(){return(0,m.jsx)("div",{ref:this.context.ref,style:{display:"inline-flex",minHeight:22,alignItems:"center",opacity:.3}})}onMount(){var e;let t=this.context.resource;if(t){let e=()=>{this.applyFlow("jsSettings")};t.on("refresh",e),this._offResourceRefresh=()=>{t.off("refresh",e)}}this._mountedOnce&&(null==(e=this.context.ref)?void 0:e.current)&&this.applyFlow("jsSettings"),this._mountedOnce=!0}onUnmount(){var e,t;null==(e=(t=this)._offResourceRefresh)||e.call(t),this._offResourceRefresh=void 0}constructor(...e){super(...e),this._mountedOnce=!1}}dF.scene=aQ.s5.all,dF.define({label:(0,f.tExpr)("JS item"),sort:9998,createModelOptions:{use:"JSItemActionModel"}}),dF.registerFlow({key:"buttonSettings",title:(0,f.tExpr)("Button settings"),sort:-999,steps:{linkageRules:{use:"actionLinkageRules"}}}),dF.registerFlow({key:"jsSettings",title:(0,f.tExpr)("JavaScript settings"),steps:{runJs:{title:(0,f.tExpr)("Write JavaScript"),useRawParams:!0,uiSchema:{code:{type:"string","x-decorator":"FormItem","x-component":dm.BY,"x-component-props":{minHeight:"320px",theme:"light",enableLinter:!0,wrapperStyle:{position:"fixed",inset:8}}}},uiMode:{type:"embed",props:{styles:{body:{transform:"translateX(0)"}}}},defaultParams:()=>({version:"v2",code:dk.trim()}),async handler(e,t){let{code:l,version:o}=dh(e,t);e.onRefReady(e.ref,async t=>{e.defineProperty("element",{get:()=>new f.ElementProxy(t)}),await e.runjs(l,void 0,{version:o})})}}}}),aJ.registerActionModels({JSItemActionModel:dF}),aX.registerActionModels({JSItemActionModel:dF}),dx.registerActionModels({JSItemActionModel:dF}),dS.registerActionModels({JSItemActionModel:dF});class dC extends s2.L{constructor(...e){super(...e),this.defaultProps={type:"link",title:(0,f.tExpr)("JS action"),icon:"JavaScriptOutlined"}}}dC.scene=aQ.s5.record,dC.define({label:(0,f.tExpr)("JS action"),sort:9999,createModelOptions:{use:"JSRecordActionModel"}}),dC.registerFlow({key:"clickSettings",on:"click",title:(0,f.tExpr)("Click settings"),steps:{runJs:{title:(0,f.tExpr)("Write JavaScript"),useRawParams:!0,uiSchema:{code:{type:"string","x-component":dm.BY,"x-component-props":{minHeight:"320px",theme:"light",enableLinter:!0,wrapperStyle:{position:"fixed",inset:8}}}},uiMode:{type:"embed",props:{styles:{body:{transform:"translateX(0)"}}}},defaultParams:e=>({version:"v2",code:`
|
|
825
|
+
`;class dF extends aQ.S0{render(){var e;return(0,m.jsx)("div",{ref:this.context.ref,style:{display:"inline-flex",minHeight:22,minWidth:this.context.flowSettingsEnabled?(null==(e=this.context.themeToken)?void 0:e.controlHeightLG)??40:void 0,alignItems:"center"}})}renderHiddenInConfig(){var e;return(0,m.jsx)("div",{ref:this.context.ref,style:{display:"inline-flex",minHeight:22,minWidth:(null==(e=this.context.themeToken)?void 0:e.controlHeightLG)??40,alignItems:"center",opacity:.3}})}onMount(){var e;let t=this.context.resource;if(t){let e=()=>{this.applyFlow("jsSettings")};t.on("refresh",e),this._offResourceRefresh=()=>{t.off("refresh",e)}}this._mountedOnce&&(null==(e=this.context.ref)?void 0:e.current)&&this.applyFlow("jsSettings"),this._mountedOnce=!0}onUnmount(){var e,t;null==(e=(t=this)._offResourceRefresh)||e.call(t),this._offResourceRefresh=void 0}constructor(...e){super(...e),this._mountedOnce=!1}}dF.scene=aQ.s5.all,dF.define({label:(0,f.tExpr)("JS item"),sort:9998,createModelOptions:{use:"JSItemActionModel"}}),dF.registerFlow({key:"buttonSettings",title:(0,f.tExpr)("Button settings"),sort:-999,steps:{linkageRules:{use:"actionLinkageRules"}}}),dF.registerFlow({key:"jsSettings",title:(0,f.tExpr)("JavaScript settings"),steps:{runJs:{title:(0,f.tExpr)("Write JavaScript"),useRawParams:!0,uiSchema:{code:{type:"string","x-decorator":"FormItem","x-component":dm.BY,"x-component-props":{minHeight:"320px",theme:"light",enableLinter:!0,wrapperStyle:{position:"fixed",inset:8}}}},uiMode:{type:"embed",props:{styles:{body:{transform:"translateX(0)"}}}},defaultParams:()=>({version:"v2",code:dk.trim()}),async handler(e,t){let{code:l,version:o}=dh(e,t);e.onRefReady(e.ref,async t=>{e.defineProperty("element",{get:()=>new f.ElementProxy(t)}),await e.runjs(l,void 0,{version:o})})}}}}),aJ.registerActionModels({JSItemActionModel:dF}),aX.registerActionModels({JSItemActionModel:dF}),dx.registerActionModels({JSItemActionModel:dF}),dS.registerActionModels({JSItemActionModel:dF});class dC extends s2.L{constructor(...e){super(...e),this.defaultProps={type:"link",title:(0,f.tExpr)("JS action"),icon:"JavaScriptOutlined"}}}dC.scene=aQ.s5.record,dC.define({label:(0,f.tExpr)("JS action"),sort:9999,createModelOptions:{use:"JSRecordActionModel"}}),dC.registerFlow({key:"clickSettings",on:"click",title:(0,f.tExpr)("Click settings"),steps:{runJs:{title:(0,f.tExpr)("Write JavaScript"),useRawParams:!0,uiSchema:{code:{type:"string","x-component":dm.BY,"x-component-props":{minHeight:"320px",theme:"light",enableLinter:!0,wrapperStyle:{position:"fixed",inset:8}}}},uiMode:{type:"embed",props:{styles:{body:{transform:"translateX(0)"}}}},defaultParams:e=>({version:"v2",code:`
|
|
826
826
|
if (!ctx.record) {
|
|
827
827
|
ctx.message.error('No record');
|
|
828
828
|
} else {
|
|
@@ -898,7 +898,7 @@ if (!ctx.record) {
|
|
|
898
898
|
`);i.default.useEffect(()=>{o(e.options||[])},[n]);let a=i.default.useMemo(()=>new Set((Array.isArray(e.value)?e.value:[]).map(e=>e.join("."))),[e.value]),s=(t,l)=>{var o,n;let i=null==t||null==(o=t.meta)?void 0:o.fullPath;if(!i)return;let r=new Set(a);l?r.add(i):r.delete(i);let s=Array.from(r).map(e=>e.split("."));null==(n=e.onChange)||n.call(e,s)},d=e=>{var t;let l=null==e||null==(t=e.meta)?void 0:t.fullPath,o=!!(null==e?void 0:e.isLeaf),n=!!l&&a.has(l);return(0,m.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:"12px"},children:[(0,m.jsx)("span",{children:e.label}),o?(0,m.jsx)(b.Switch,{size:"small",checked:n,onClick:(e,t)=>{var l;return null==t||null==(l=t.stopPropagation)?void 0:l.call(t)},onChange:(t,l)=>{var o;null==l||null==(o=l.stopPropagation)||o.call(l),s(e,t)}}):null]})},u=e.displayRender||((e,t)=>{var l;let o=null==t?void 0:t[t.length-1],n=null==o||null==(l=o.meta)?void 0:l.fullLabel;return n||e.join(" / ")}),c=async e=>{var l,n,i,r;let a=e[e.length-1];if(!a||(null==(l=a.children)?void 0:l.length))return;let s=a.meta||{},d=s.field,u=s.fullPath;if(!d||!u){a.isLeaf=!0,o(e=>[...e]);return}let c=(null==(n=d.filterable)?void 0:n.children)||[],p=[];if(c.length?p=c:d.targetCollection&&(p=(null==(i=(r=d.targetCollection).getFields)?void 0:i.call(r))||[]),!p.length){a.isLeaf=!0,o(e=>[...e]);return}a.children=pW(t,p,u,[],s.fullLabel||a.label,s.associationDepth||0),o(e=>[...e])};return(0,m.jsx)(b.Cascader,{allowClear:!0,...e,options:l,loadData:c,displayRender:u,optionRender:d,popupClassName:r})}let pQ=(0,f.defineAction)({name:"defaultOperator",title:(0,f.tExpr)("Default operator"),uiMode:e=>({type:"select",key:"value",props:{options:pZ(e.model)}}),defaultParams(e){let t=pZ(e.model);return{value:t.length>0?t[0].value:""}},handler(e,t){e.model.operator=t.value}});function pZ(e){let t=e.context.collectionField||e.context.filterField;return a9(e).filter(e=>!e.visible||e.visible(t)).map(t=>({...t,label:"string"==typeof t.label?e.translate(t.label):t.label}))}var p0=__webpack_require__(7720);function p1(e){var t;let l=e.operator,o=null==(t=e.subModels)?void 0:t.field;if(!o)return;if(e.setProps({key:`${e.uid}-${l||""}`}),!l)return void(0,p0.i2)(o);let n=a9(e);(0,p0.sI)({app:e.context.app,fieldModel:o,operator:l,operators:n,propsPriority:"field"})}let p2=(0,f.defineAction)({name:"customizeFilterRender",handler(e){p1(e.model)}});function p5(e){var t,l;let o=a7(e,e.operator);if(!o)return;let n=null==o||null==(t=o.schema)?void 0:t["x-component-props"];if(!n)return;let i=null==(l=e.subModels)?void 0:l.field;(null==i?void 0:i.setProps)&&i.setProps(n)}let p8=(0,f.defineAction)({name:"operatorComponentProps",handler(e){p5(e.model)}});var p4=__webpack_require__(4084);class p3 extends dG.F4{createResource(e,t){let l=this.context.createResource(f.SingleRecordResource);return l.isNewRecord=!0,l}getAclActionName(){return"create"}async submitHandler(e,t,l){await (0,p4.submitHandler)(e,t,l)}async submit(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0;await (0,p4.submitHandler)(this.context,e,t)}renderComponent(){let{colon:e,labelAlign:t,labelWidth:l,labelWrap:o,layout:n}=this.props,i=!!this.context.flowSettingsEnabled,{heightMode:r,height:a}=this.decoratorProps;return(0,m.jsx)(dG.JU,{model:this,gridModel:this.subModels.grid,layoutProps:{colon:e,labelAlign:t,labelWidth:l,labelWrap:o,layout:n},heightMode:r,height:a,grid:(0,m.jsx)(f.FlowModelRenderer,{model:this.subModels.grid,showFlowSettings:!1}),actions:(0,m.jsx)(f.DndProvider,{children:(0,m.jsxs)(b.Space,{wrap:!0,children:[this.mapSubModels("actions",e=>{if(!e.hidden||i)return(0,m.jsx)(f.Droppable,{model:e,children:(0,m.jsx)(f.MemoFlowModelRenderer,{model:e,showFlowSettings:!!this.context.flowSettingsEnabled&&this.actionFlowSettings,extraToolbarItems:this.actionExtraToolbarItems},e.uid)},e.uid)}),this.renderConfigureActions()]})})})}constructor(...e){super(...e),this.actionFlowSettings={showBackground:!1,showBorder:!1,toolbarPosition:"above"},this.actionExtraToolbarItems=[{key:"drag-handler",component:f.DragHandler,sort:1}]}}p3.scene=sC.P.new,p3.blockCapabilityActionName="create",p3.registerFlow({key:"formSettings",title:(0,f.tExpr)("Form settings"),steps:{init:{async handler(e){if(!e.resource)throw Error("Resource is not initialized")}},refresh:{}}}),p3.define({label:(0,f.tExpr)("Form (Add new)"),searchable:!0,searchPlaceholder:(0,f.tExpr)("Search"),createModelOptions:{use:"CreateFormModel",subModels:{grid:{use:"FormGridModel"}}},sort:350});class p6 extends f.FlowModel{static defineChildren(e){let t=e.engine.filterModelClassByParent("CommonItemModel"),l=e.engine.filterModelClassByParent("FormCustomItemModel"),o=t=>Array.from(t.entries()).map(t=>{var l,o,n,i,r;let[a,s]=t,d="function"==typeof s.defineChildren||!!(null==(l=s.meta)?void 0:l.children),u={key:a,label:e.t(s.meta.label),sort:s.meta.sort??999,searchable:!!(null==(o=s.meta)?void 0:o.searchable),searchPlaceholder:null==(n=s.meta)?void 0:n.searchPlaceholder,hide:null==(i=s.meta)?void 0:i.hide};return d?u.children=e=>{var t;return"function"==typeof s.defineChildren?s.defineChildren(e):(null==(t=s.meta)?void 0:t.children)||[]}:u.createModelOptions=(null==(r=s.meta)?void 0:r.createModelOptions)||{use:a},u});return g.default.sortBy([...o(t),...o(l)],"sort")}}p6.renderMode=f.ModelRenderMode.RenderFunction,p6.define({hide:!0,label:(0,f.tExpr)("Others")});class p9 extends f.FlowModel{static defineChildren(e){return uS(e,{useModel:"FormItemModel",fieldUseModel:"JSEditableFieldModel",associationPathName:e.prefixFieldPath,refreshTargets:["FormItemModel","FilterFormItemModel"]})}}p9.define({label:(0,f.tExpr)("JS field"),searchable:!0,searchPlaceholder:(0,f.tExpr)("Search fields"),menuType:"submenu",sort:110});class p7 extends d_{}p7.define({label:(0,f.tExpr)("JS action"),sort:9999}),p7.registerFlow({key:"clickSettings",on:"click",title:(0,f.tExpr)("Click settings"),steps:{runJs:{title:(0,f.tExpr)("Write JavaScript"),useRawParams:!0,uiSchema:{code:{type:"string","x-component":dm.BY,"x-component-props":{minHeight:"320px",theme:"light",enableLinter:!0,wrapperStyle:{position:"fixed",inset:8}}}},uiMode:{type:"embed",props:{styles:{body:{transform:"translateX(0)"}}}},defaultParams:e=>({version:"v2",code:`
|
|
899
899
|
const values = ctx.form?.getFieldsValue?.() || {};
|
|
900
900
|
ctx.message.success('Current form values: ' + JSON.stringify(values));
|
|
901
|
-
`}),async handler(e,t){let{code:l,version:o}=dh(e,t);e.defineMethod("refresh",async()=>{var t,l,o;(null==(l=e.blockModel)||null==(t=l.resource)?void 0:t.refresh)?await e.blockModel.resource.refresh():(null==(o=e.resource)?void 0:o.refresh)&&await e.resource.refresh()}),await e.runjs(l,void 0,{version:o})}}}});let me="dataScope",mt="tableColumnSettings",ml="quickEditDataScope";function mo(e){var t,l;let o=null==e||null==(l=e.globalFlowRegistry)||null==(t=l.getFlows)?void 0:t.call(l);if(!o)return null;for(let[e,t]of o)for(let[l,o]of Object.entries((null==t?void 0:t.steps)||{}))if((null==o?void 0:o.use)===me)return{flowKey:e,stepKey:l};return null}function mn(e,t){var l,o,n;if(!(null==t||null==(l=t.isAssociationField)?void 0:l.call(t)))return null;let i=un.getDefaultBindingByField(e,t);return(null==i?void 0:i.modelName)?mo(null==(n=e.engine)||null==(o=n.getModelClass)?void 0:o.call(n,i.modelName)):null}function mi(e){return!e||!Array.isArray(e.items)||0===e.items.length}function mr(e){var t;let l=null==e?void 0:e.parent,o=null==l||null==(t=l.getStepParams)?void 0:t.call(l,mt,ml),n=null==o?void 0:o.filter;return mi(n)?void 0:n}function ma(e){let t=e.context.collectionField,l=()=>(null==t?void 0:t.targetCollection)??null,o=()=>e.context.collection??null;return(0,f.createEphemeralContext)(e.context,{defineProperties:{collection:{get:l,meta:(0,f.createCollectionContextMeta)(l,"Current collection")},record:{get:()=>void 0,meta:(0,f.createCurrentRecordMetaFactory)(e.context,o)}}})}function ms(e){let[t,l]=(0,i.useState)(null);return(0,i.useEffect)(()=>{let t=!1;return(async()=>{let o=await ma(e);t||l(new Proxy(e,{get(e,t,l){if("context"===t)return o;let n=Reflect.get(e,t,l);return"function"==typeof n?n.bind(e):n}}))})(),()=>{t=!0}},[e]),t}function md(e){let t=ms((0,f.useFlowSettingsContext)().model),l=(0,i.useCallback)(()=>(null==t?void 0:t.context.getPropertyMetaTree())??[],[t]);return t?(0,m.jsx)(rO.I8,{value:e.value,FilterItem:e=>(0,m.jsx)(rO.Et,{...e,model:t,rightAsVariable:!0,rightMetaTree:l})}):(0,m.jsx)(b.Skeleton.Input,{active:!0,size:"small"})}let mu="calc(100vh - 96px)",mc="calc(100vh - 160px)",mp="min(480px, calc(100vh - 320px))",mm="50vh",mh="calc(50vh - var(--nb-mobile-page-header-height, 40px) - 132px)",mf="8px var(--nb-mobile-page-tabs-content-padding, 12px) 0",mg="8px var(--nb-mobile-page-tabs-content-padding, 12px) calc(80px + env(safe-area-inset-bottom, 0px))",mv="(max-width: 768px)",my=["SelectFieldModel","RecordSelectFieldModel","CascadeSelectFieldModel","CascadeSelectListFieldModel"];function m_(e,t){let l={...e.getComponentProps(),...t||{}};return["markdown","vditor"].includes(e.interface)&&null==l.height&&(l.height=mp),l}function mb(e,t){var l,o;let n=null==t||null==(l=t.context)?void 0:l.isMobileLayout;if("boolean"==typeof n)return{isMobileLayout:n,inheritsMobileContext:n};let i=null==(o=e.context)?void 0:o.isMobileLayout;return"boolean"==typeof i?{isMobileLayout:i,inheritsMobileContext:i}:"u"<typeof window||"function"!=typeof window.matchMedia?{isMobileLayout:!1,inheritsMobileContext:!1}:{isMobileLayout:window.matchMedia(mv).matches,inheritsMobileContext:!1}}function mx(e,t,l,o,n,i){var r,a;let s=null==n||null==(a=n.parent)||null==(r=a.props)?void 0:r.title;if(s)return s;let d=null==i?void 0:i.title;if(d)return d;let u=e.context.dataSourceManager.getCollectionField(`${t}.${l}.${o}`);return(null==u?void 0:u.title)||o}function mM(e){let t=!1,l=e.beforeClose,o=async e=>(!t||!!(null==e?void 0:e.force))&&!1!==await (null==l?void 0:l(e));return e.beforeClose=o,{...e,close:(t,l)=>e.close(t,l),update(l){var o;return Object.prototype.hasOwnProperty.call(l,"preventClose")&&(t=!!l.preventClose),null==(o=e.update)?void 0:o.call(e,l)},get beforeClose(){return e.beforeClose},set beforeClose(value){l=value,e.beforeClose=o}}}class mw extends f.FlowModel{get form(){return this.context.form}useHooksBeforeRender(){let[e]=b.Form.useForm();this.context.defineProperty("form",{get:()=>e})}static async open(e){let{flowEngine:t,target:l,dataSourceKey:o,collectionName:n,fieldPath:i,filterByTk:r,record:a,onSuccess:s,fieldProps:d,onOk:u,sourceFieldModelUid:c}=e,p=c?t.getModel(c):void 0,h=t.createModel({use:"QuickEditFormModel",stepParams:{quickEditFormSettings:{init:{dataSourceKey:o,collectionName:n,fieldPath:i}}}},p?{delegate:p.context}:void 0);h._dataScopeFilter=mr(p);let g={maxHeight:mu,overflowY:"auto",overscrollBehavior:"contain"},v={...g,maxHeight:mm},y=(e,t)=>{if(_.isMobileLayout){var l;null==t||null==(l=t.defineProperty)||l.call(t,"isMobileLayout",{value:!0})}return h.viewContainer=mM(e),h.__onSubmitSuccess=s,h._fieldProps=d,h._onOk=u,(0,m.jsx)(f.FlowModelRenderer,{fallback:(0,m.jsx)(b.Skeleton.Input,{size:"small"}),model:h,inputArgs:{filterByTk:r,record:a,sourceFieldModelUid:c}})},_=mb(t,p);if(_.isMobileLayout){var x;h.context.defineProperty("isMobileLayout",{value:!0});let e=(null==p||null==(x=p.context)?void 0:x.viewer)||t.context.viewer,l=mx(t,o,n,i,p,d);await e.open({type:"drawer",title:l,closable:!0,placement:"bottom",inputArgs:{isMobileLayout:!0},styles:{body:v},content:y});return}await t.context.viewer.open({type:"popover",target:l,placement:"rightTop",styles:{body:{width:420,...g}},content:y})}onInit(e){super.onInit(e),this.context.defineProperty("blockModel",{value:this});let t=(0,f.createCurrentRecordMetaFactory)(this.context,()=>this.collection);this.context.defineProperty("record",{get:()=>this.resource.getData(),cache:!1,resolveOnServer:(0,f.createRecordResolveOnServerWithLocal)(()=>this.collection,()=>this.resource.getData()),meta:t}),this.context.defineProperty("collection",{get:()=>this.collection})}addAppends(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],l=this.context.dataSourceManager.getCollectionField(`${this.collection.dataSourceKey}.${this.collection.name}.${e}`);!l||l.isAssociationField()&&(this.resource.addAppends(e),t&&this.resource.refresh())}render(){let e=this.context.isMobileLayout;return(0,m.jsxs)(dG.s2,{model:this,children:[(0,m.jsx)("div",{style:{minHeight:0,overflowY:"auto",maxHeight:e?mh:mc,padding:e?mf:void 0},children:this.mapSubModels("fields",e=>{var t;return(0,m.jsx)(f.FormItem,{showLabel:!1,name:this.fieldPath,initialValue:null==(t=this.context.record)?void 0:t[this.fieldPath],...this.props,children:(0,m.jsx)(f.FieldModelRenderer,{model:e,fallback:(0,m.jsx)(b.Skeleton.Input,{size:"small"})})},e.uid)})}),(0,m.jsxs)(b.Space,{style:{display:"flex",justifyContent:"flex-end",flexShrink:0,padding:e?mg:void 0},children:[(0,m.jsx)(b.Button,{onClick:()=>{this.viewContainer.close()},children:this.context.t("Cancel")}),(0,m.jsx)(b.Button,{type:"primary",htmlType:"submit",onClick:async()=>{var e,t,l,o,n;let i=this.form.getFieldsValue();await this.form.submit();let r={...i},a={[this.fieldPath]:null==(e=this.resource.getData())?void 0:e[this.fieldPath]};if(this._onOk)this._onOk(r),this.viewContainer.close();else try{await this.resource.save(r,{refresh:!1}),null==(t=(l=this).__onSubmitSuccess)||t.call(l,r),this.viewContainer.close(),this.context.message.success(this.context.t("Saved successfully"))}catch(e){console.error("Failed to save form data:",e),this.context.message.error(this.context.t("Failed to save form data")),null==(o=(n=this).__onSubmitSuccess)||o.call(n,a)}},children:this.context.t("Submit")})]})]})}}mw.registerFlow({key:"quickEditFormSettings",sort:100,steps:{init:{async handler(e,t){let{dataSourceKey:l,collectionName:o,fieldPath:n}=t;if(!l||!o||!n)throw Error("dataSourceKey, collectionName and fieldPath are required parameters");e.model.fieldPath=n,e.model.collection=e.dataSourceManager.getCollection(l,o);let i=e.createResource(f.SingleRecordResource);i.setDataSourceKey(l),i.setResourceName(o),e.model.resource=i,(e.inputArgs.filterByTk||e.inputArgs.record)&&(i.setFilterByTk(e.inputArgs.filterByTk),i.setData(e.inputArgs.record));let r=e.model.collection.getField(n);if(r){let t=un.getDefaultBindingByField(e,r);if(!t)return;let i=t.modelName,a={fieldSettings:{init:{dataSourceKey:l,collectionName:o,fieldPath:n}}},s=e.model._dataScopeFilter;if(s){let t=mo(e.engine.getModelClass(i));t&&(a[t.flowKey]={...a[t.flowKey],[t.stepKey]:{filter:s}})}let d=e.model.addSubModel("fields",{use:i,props:"function"==typeof t.defaultProps?t.defaultProps(e,r):t.defaultProps,stepParams:a});d.setProps(m_(r,e.model._fieldProps)),d.setProps({sourceFieldModelUid:e.inputArgs.sourceFieldModelUid}),!e.model.context.isMobileLayout&&my.includes(i)&&null==d.props.placement&&d.setProps({placement:"topLeft"}),e.model.context.defineProperty("collectionField",{get:()=>r}),e.model.addAppends(n),await d.dispatchEvent("beforeRender")}if(e.inputArgs.filterByTk||e.inputArgs.record){var a;null==(a=e.model.form)||a.setFieldsValue(i.getData())}}}}}),mw.define({hide:!0});class mS extends aZ{}mS.itemModelName="FormAssociationItemModel",mS.define({label:'{{t("Display association fields")}}'});let mk=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],l=(0,f.useFlowContext)();return(0,nB.useRequest)(async()=>await l.resolveJsonTemplate(e),{refreshDeps:t})},mF=2;function mC(e,t){if(!t)return e;let l=[...e];return t.forEach(e=>{let[t,o]=e.split(":");if(l.includes(t)){let e=l.indexOf(t),n=Number(o);l.splice(e+1,0,Number.isFinite(n)?n:o)}}),l}function mA(e,t){if(null==e)return e;let l=typeof e;if("string"===l||"number"===l||"boolean"===l)return e;if("bigint"===l)return String(e);if(Array.isArray(e))return e.map(e=>{let l=mA(e,t);return null==l?"":String(l)}).join(",");if("object"===l){let l=(0,g.castArray)(t).filter(Boolean);if(1===l.length){let t=mA((0,g.get)(e,l[0]));if(void 0!==t)return t}if(l.length>1)return JSON.stringify(l.map(t=>mA((0,g.get)(e,t))??null));let o=e.id??e.value??e.key;if("string"==typeof o||"number"==typeof o)return o;if("bigint"==typeof o)return String(o)}}let mP=e=>{let t=e.underSubForm?"ctx.item.value":"ctx.formValues",l=`{{${t}.${e.fieldPath}}}`,{data:o,loading:n,error:i}=mk(l,[l,e.refreshKey]);return n?(0,m.jsx)("div",{children:"Loading..."}):i?(0,m.jsxs)("div",{children:["Error: ",i.message]}):(0,m.jsx)(f.FieldModelRenderer,{...e.mergedProps,model:e.modelForRender,value:o||e.value})};class mT extends f.DisplayItemModel{static defineChildren(e){let t=e.collection,l=e.prefixFieldPath?e.prefixFieldPath.split(".").filter(Boolean).length:0;return t.getFields().map(o=>{var n;if(l>=mF&&((null==(n=o.isAssociationField)?void 0:n.call(o))||o.target||o.targetCollection))return null;let i=this.getDefaultBindingByField(e,o,{fallbackToTargetTitleField:!0});if(!i)return null;let r=i.modelName,a=e.prefixFieldPath?`${e.prefixFieldPath}.${o.name}`:o.name;return{key:a,label:o.title,refreshTargets:["DetailsCustomItemModel/DetailsJSFieldItemModel"],toggleable:e=>{var t;return(null==(t=e.getStepParams("fieldSettings","init"))?void 0:t.fieldPath)===a},useModel:"FormAssociationItemModel",createModelOptions:()=>({use:"FormAssociationItemModel",stepParams:{fieldSettings:{init:{dataSourceKey:t.dataSourceKey,collectionName:e.model.context.blockModel.collection.name,fieldPath:a}}},subModels:{field:{use:r,props:"function"==typeof i.defaultProps?i.defaultProps(e,o):i.defaultProps}}})}}).filter(Boolean)}onInit(e){super.onInit(e),this.context.defineProperty("actionName",{get:()=>"view",cache:!1})}renderItem(){let e=this.subModels.field,t=this.context.fieldIndex,l=this.context.record,o=this.context.currentObject,n=null!=t?(()=>{let n=e.createFork({},`${t}`);return n.context.defineProperty("fieldIndex",{get:()=>t}),n.context.defineProperty("record",{get:()=>l,cache:!1}),n.context.defineProperty("currentObject",{get:()=>o,cache:!1}),this.context.pattern&&n.context.defineProperty("pattern",{get:()=>this.context.pattern}),n})():e,i=this.collectionField.name,r=this.fieldPath.replace(RegExp(`\\.${i}$`),""),a=mC((0,g.castArray)(r.split(".")),t),s=this.context.prefixFieldPath;return(0,m.jsx)(f.FormItem,{...this.props,shouldUpdate:(e,t)=>{let l=a.length>1&&!(0,g.get)(e,[...a])?a.slice(0,-1):a;return JSON.stringify((0,g.get)(e,[...l]))!==JSON.stringify((0,g.get)(t,[...l]))},children:()=>{var e,t,l,o;let i=mA(null==(t=this.context.form)||null==(e=t.getFieldValue)?void 0:e.call(t,a),null==(o=this.collectionField)||null==(l=o.collection)?void 0:l.filterTargetKey)||(0,io.uid)();return(0,m.jsx)(mP,{modelForRender:n,fieldPath:this.fieldPath.replace(RegExp(`^${s}\\.`),""),refreshKey:i,mergedProps:this.props,underSubForm:!!s})}})}}mT.define({label:(0,f.tExpr)("Display fields"),sort:100}),mT.registerFlow({key:"detailItemSettings",sort:300,title:(0,f.tExpr)("Detail item settings"),steps:{showLabel:{title:(0,f.tExpr)("Show label"),uiMode:{type:"switch",key:"showLabel"},defaultParams:{showLabel:!0},handler(e,t){e.model.setProps({showLabel:t.showLabel})}},label:{title:(0,f.tExpr)("Label"),uiSchema:e=>({title:{"x-component":"Input","x-decorator":"FormItem","x-reactions":t=>{var l;let o=e.model,n=null==(l=o.collectionField)?void 0:l.title;t.decoratorProps={...t.decoratorProps,extra:o.context.t("Original field title: ")+(o.context.t(n)??"")}}}}),defaultParams:e=>{var t;return{title:null==(t=e.collectionField)?void 0:t.title}},handler(e,t){e.model.setProps({label:e.t(t.title,{ns:"lm-flow-engine"})})}},aclCheck:{use:"aclCheck"},init:{async handler(e){let{collectionField:t}=e.model;t&&e.model.setProps(t.getComponentProps())}},tooltip:{title:(0,f.tExpr)("Tooltip"),uiSchema:{tooltip:{"x-component":"Input.TextArea","x-decorator":"FormItem"}},handler(e,t){e.model.setProps({tooltip:e.t(t.tooltip,{ns:"lm-flow-engine"})})}},description:{title:(0,f.tExpr)("Description"),uiSchema:{description:{"x-component":"Input.TextArea","x-decorator":"FormItem"}},handler(e,t){e.model.setProps({extra:e.t(t.description,{ns:"lm-flow-engine"})})}},model:{title:(0,f.tExpr)("Field component"),use:"displayFieldComponent"},fieldNames:{use:"titleField",title:(0,f.tExpr)("Title field"),beforeParamsSave:async(e,t,l)=>{if(!e.collectionField||!e.collectionField.isAssociationField())return null;if(t.label!==l.label){var o,n;e.model.setProps({titleField:t.label,...null==(n=e.collectionField.targetCollection)||null==(o=n.getField(t.label))?void 0:o.getComponentProps()});let l=e.collectionField.targetCollection.getField(t.label),i=f.DisplayItemModel.getDefaultBindingByField(e,l),r=i.modelName;await d2({parentModel:e.model,targetUse:r,defaultProps:"function"==typeof(null==i?void 0:i.defaultProps)?i.defaultProps(e,e.collectionField):null==i?void 0:i.defaultProps,pattern:e.model.getProps().pattern})}},async handler(e,t){var l,o;if(!e.collectionField||e.model.subModels.field.disableTitleField)return;e.model.setProps({titleField:t.label,...null==(o=e.collectionField.targetCollection)||null==(l=o.getField(t.label))?void 0:l.getComponentProps()});let n=e.collectionField.targetCollection;if(n){let l=n.getField(t.label),o=f.DisplayItemModel.getDefaultBindingByField(e,l).modelName;o!==e.model.subModels.field.use&&e.model.setStepParams(e.flowKey,"model",{use:o})}},hideInSettings:async e=>!e.collectionField||!e.collectionField.isAssociationField()||e.model.subModels.field.disableTitleField}}}),mT.registerFlow({key:"paginationChange",on:"paginationChange",steps:{aclCheckRefresh:{use:"aclCheckRefresh"}}});var mj=__webpack_require__(8563);let mI="client",mL=e=>e&&(e.closest(".nb-block-grid")||e.closest(".nb-page-wrapper")||e.closest(".nb-page"))||document.documentElement,mR=e=>{if(!e)return 0;let t=e.getBoundingClientRect(),l=window.getComputedStyle(e),o=parseFloat(l.marginTop)||0,n=parseFloat(l.marginBottom)||0;return t.height+o+n},mD=e=>{if(!e||e===document.documentElement)return{top:0,bottom:0};let t=window.getComputedStyle(e);return{top:parseFloat(t.paddingTop)||0,bottom:parseFloat(t.paddingBottom)||0}},mE=e=>{let t=e.closest(".nb-page");return t?t.querySelector(".ant-page-header")||t.querySelector(".pageHeaderCss"):null},mY=e=>{let t=e.querySelector("[data-flow-add-block]");return t?t.parentElement||t:null};function mN(e,t){let l=t>0;return e>0?e:l?t:0}let mO=e=>{let{height:t,heightMode:l,hostRef:o,marginBlock:n}=e,[r,a]=i.default.useState(),s=i.default.useCallback(()=>{if("fullHeight"!==l||"u"<typeof window)return void a(e=>void 0===e?e:void 0);let e=o.current;if(!e)return;let t=mL(e),i=e.getBoundingClientRect(),r=t===document.documentElement?{top:0}:t.getBoundingClientRect(),s=mD(t),d=mY(t),u=r.top+s.top,c=Math.max(0,i.top-u),p=s.bottom+n;d&&(p=n+mR(d)+s.bottom);let m=Math.max(0,Math.floor(window.innerHeight-mN(u,110)-c-p-1));a(e=>e===m?e:m)},[l,o,n]);return(i.default.useLayoutEffect(()=>{s()},[s]),i.default.useEffect(()=>{if("fullHeight"!==l||"u"<typeof window)return;let e=o.current;if(!e||"u"<typeof ResizeObserver)return;let t=mL(e),n=mE(t),i=mY(t),r=new ResizeObserver(()=>s());return r.observe(e),t instanceof HTMLElement&&r.observe(t),n&&r.observe(n),i&&r.observe(i),window.addEventListener("resize",s),()=>{r.disconnect(),window.removeEventListener("resize",s)}},[l,o,s]),"specifyValue"===l)?t:"fullHeight"===l?r:null},mB=e=>{let{uid:t,className:l,heightMode:o,height:n,style:r,beforeContent:a,afterContent:s,contentRef:d,marginBlock:u,...c}=e,p=i.default.useRef(null),h=mO({height:n,heightMode:o,hostRef:p,marginBlock:u});return(0,m.jsxs)("div",{...c,ref:p,id:`model-${t}`,className:l,style:{display:"flex",flexDirection:"column",height:h??void 0,minHeight:0,overflow:"auto",...r||{}},children:[a,(0,m.jsx)("div",{ref:d}),s]})};class mV extends sC.z{get showBlockCard(){var e;return(null==(e=this.getStepParams("jsSettings","showBlockCard"))?void 0:e.showBlockCard)!==!1}renderComponent(){return(0,m.jsx)("div",{ref:this.context.ref})}render(){let{className:e,id:t,title:l,description:o,showCard:n,heightMode:i,height:r,style:a,beforeContent:s,afterContent:d,...u}=this.decoratorProps||{},c=["code-block",e].filter(Boolean).join(" ");if(!this.showBlockCard){var p;return(0,m.jsx)(mB,{...u,uid:this.uid,className:c,heightMode:i,height:r,style:a,beforeContent:s,afterContent:d,contentRef:this.context.ref,marginBlock:(null==(p=this.context.themeToken)?void 0:p.marginBlock)??0})}let h={...u,height:r,...void 0===a?{}:{style:a},...void 0===s?{}:{beforeContent:s},...void 0===d?{}:{afterContent:d}};return(0,m.jsx)(mj.tn,{id:`model-${this.uid}`,className:c,title:l,description:o,heightMode:i,...h,children:(0,m.jsx)("div",{ref:this.context.ref})})}onMount(){this._mountedOnce&&this.context.ref.current&&this.rerender(),this._mountedOnce=!0}constructor(...e){super(...e),this._mountedOnce=!1}}mV.define({label:(0,f.tExpr)("JS block"),createModelOptions:{use:"JSBlockModel"}}),mV.registerFlow({key:"jsSettings",title:"JavaScript settings",steps:{showBlockCard:{title:(0,f.tExpr)("Show block card"),uiMode:{type:"switch",key:"showBlockCard"},defaultParams:{showBlockCard:!0}},runJs:{title:(0,f.tExpr)("Write JavaScript"),useRawParams:!0,uiSchema:{code:{type:"string","x-decorator":"FormItem","x-component":dm.BY,"x-component-props":{minHeight:"320px",theme:"light",enableLinter:!0,wrapperStyle:{position:"fixed",inset:8}}}},uiMode:{type:"embed",props:{styles:{body:{transform:"translateX(0)"}}}},defaultParams:e=>({version:"v2",code:`// Welcome to the JS block
|
|
901
|
+
`}),async handler(e,t){let{code:l,version:o}=dh(e,t);e.defineMethod("refresh",async()=>{var t,l,o;(null==(l=e.blockModel)||null==(t=l.resource)?void 0:t.refresh)?await e.blockModel.resource.refresh():(null==(o=e.resource)?void 0:o.refresh)&&await e.resource.refresh()}),await e.runjs(l,void 0,{version:o})}}}});let me="dataScope",mt="tableColumnSettings",ml="quickEditDataScope";function mo(e){var t,l;let o=null==e||null==(l=e.globalFlowRegistry)||null==(t=l.getFlows)?void 0:t.call(l);if(!o)return null;for(let[e,t]of o)for(let[l,o]of Object.entries((null==t?void 0:t.steps)||{}))if((null==o?void 0:o.use)===me)return{flowKey:e,stepKey:l};return null}function mn(e,t){var l,o,n;if(!(null==t||null==(l=t.isAssociationField)?void 0:l.call(t)))return null;let i=un.getDefaultBindingByField(e,t);return(null==i?void 0:i.modelName)?mo(null==(n=e.engine)||null==(o=n.getModelClass)?void 0:o.call(n,i.modelName)):null}function mi(e){return!e||!Array.isArray(e.items)||0===e.items.length}function mr(e){var t;let l=null==e?void 0:e.parent,o=null==l||null==(t=l.getStepParams)?void 0:t.call(l,mt,ml),n=null==o?void 0:o.filter;return mi(n)?void 0:n}function ma(e){let t=e.context.collectionField,l=()=>(null==t?void 0:t.targetCollection)??null,o=()=>e.context.collection??null;return(0,f.createEphemeralContext)(e.context,{defineProperties:{collection:{get:l,meta:(0,f.createCollectionContextMeta)(l,"Current collection")},record:{get:()=>void 0,meta:(0,f.createCurrentRecordMetaFactory)(e.context,o)}}})}function ms(e){let[t,l]=(0,i.useState)(null);return(0,i.useEffect)(()=>{let t=!1;return(async()=>{let o=await ma(e);t||l(new Proxy(e,{get(e,t,l){if("context"===t)return o;let n=Reflect.get(e,t,l);return"function"==typeof n?n.bind(e):n}}))})(),()=>{t=!0}},[e]),t}function md(e){let t=ms((0,f.useFlowSettingsContext)().model),l=(0,i.useCallback)(()=>(null==t?void 0:t.context.getPropertyMetaTree())??[],[t]);return t?(0,m.jsx)(rO.I8,{value:e.value,FilterItem:e=>(0,m.jsx)(rO.Et,{...e,model:t,rightAsVariable:!0,rightMetaTree:l})}):(0,m.jsx)(b.Skeleton.Input,{active:!0,size:"small"})}let mu="calc(100vh - 96px)",mc="calc(100vh - 160px)",mp="min(480px, calc(100vh - 320px))",mm="50vh",mh="calc(50vh - var(--nb-mobile-page-header-height, 40px) - 132px)",mf="8px var(--nb-mobile-page-tabs-content-padding, 12px) 0",mg="8px var(--nb-mobile-page-tabs-content-padding, 12px) calc(80px + env(safe-area-inset-bottom, 0px))",mv="(max-width: 768px)",my=["SelectFieldModel","RecordSelectFieldModel","CascadeSelectFieldModel","CascadeSelectListFieldModel"];function m_(e,t){let l={...e.getComponentProps(),...t||{}};return["markdown","vditor"].includes(e.interface)&&null==l.height&&(l.height=mp),l}function mb(e,t){var l,o;let n=null==t||null==(l=t.context)?void 0:l.isMobileLayout;if("boolean"==typeof n)return{isMobileLayout:n,inheritsMobileContext:n};let i=null==(o=e.context)?void 0:o.isMobileLayout;return"boolean"==typeof i?{isMobileLayout:i,inheritsMobileContext:i}:"u"<typeof window||"function"!=typeof window.matchMedia?{isMobileLayout:!1,inheritsMobileContext:!1}:{isMobileLayout:window.matchMedia(mv).matches,inheritsMobileContext:!1}}function mx(e,t,l,o,n,i){var r,a;let s=null==n||null==(a=n.parent)||null==(r=a.props)?void 0:r.title;if(s)return s;let d=null==i?void 0:i.title;if(d)return d;let u=e.context.dataSourceManager.getCollectionField(`${t}.${l}.${o}`);return(null==u?void 0:u.title)||o}function mM(e){let t=!1,l=e.beforeClose,o=async e=>(!t||!!(null==e?void 0:e.force))&&!1!==await (null==l?void 0:l(e));return e.beforeClose=o,{...e,close:(t,l)=>e.close(t,l),update(l){var o;return Object.prototype.hasOwnProperty.call(l,"preventClose")&&(t=!!l.preventClose),null==(o=e.update)?void 0:o.call(e,l)},get beforeClose(){return e.beforeClose},set beforeClose(value){l=value,e.beforeClose=o}}}class mw extends f.FlowModel{get form(){return this.context.form}useHooksBeforeRender(){let[e]=b.Form.useForm();this.context.defineProperty("form",{get:()=>e})}static async open(e){let{flowEngine:t,target:l,dataSourceKey:o,collectionName:n,fieldPath:i,filterByTk:r,record:a,onSuccess:s,fieldProps:d,onOk:u,sourceFieldModelUid:c}=e,p=c?t.getModel(c):void 0,h=t.createModel({use:"QuickEditFormModel",stepParams:{quickEditFormSettings:{init:{dataSourceKey:o,collectionName:n,fieldPath:i}}}},p?{delegate:p.context}:void 0);h._dataScopeFilter=mr(p);let g={maxHeight:mu,overflowY:"auto",overscrollBehavior:"contain"},v={...g,maxHeight:mm},y=(e,t)=>{if(_.isMobileLayout){var l;null==t||null==(l=t.defineProperty)||l.call(t,"isMobileLayout",{value:!0})}return h.viewContainer=mM(e),h.__onSubmitSuccess=s,h._fieldProps=d,h._onOk=u,(0,m.jsx)(f.FlowModelRenderer,{fallback:(0,m.jsx)(b.Skeleton.Input,{size:"small"}),model:h,inputArgs:{filterByTk:r,record:a,sourceFieldModelUid:c}})},_=mb(t,p);if(_.isMobileLayout){var x;h.context.defineProperty("isMobileLayout",{value:!0});let e=(null==p||null==(x=p.context)?void 0:x.viewer)||t.context.viewer,l=mx(t,o,n,i,p,d);await e.open({type:"drawer",title:l,closable:!0,placement:"bottom",inputArgs:{isMobileLayout:!0},styles:{body:v},content:y});return}await t.context.viewer.open({type:"popover",target:l,placement:"rightTop",styles:{body:{width:420,...g}},content:y})}onInit(e){super.onInit(e),this.context.defineProperty("blockModel",{value:this});let t=(0,f.createCurrentRecordMetaFactory)(this.context,()=>this.collection);this.context.defineProperty("record",{get:()=>this.resource.getData(),cache:!1,resolveOnServer:(0,f.createRecordResolveOnServerWithLocal)(()=>this.collection,()=>this.resource.getData()),meta:t}),this.context.defineProperty("collection",{get:()=>this.collection})}addAppends(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],l=this.context.dataSourceManager.getCollectionField(`${this.collection.dataSourceKey}.${this.collection.name}.${e}`);!l||l.isAssociationField()&&(this.resource.addAppends(e),t&&this.resource.refresh())}render(){let e=this.context.isMobileLayout;return(0,m.jsxs)(dG.s2,{model:this,children:[(0,m.jsx)("div",{style:{minHeight:0,overflowY:"auto",maxHeight:e?mh:mc,padding:e?mf:void 0},children:this.mapSubModels("fields",e=>{var t;return(0,m.jsx)(f.FormItem,{showLabel:!1,name:this.fieldPath,initialValue:null==(t=this.context.record)?void 0:t[this.fieldPath],...this.props,children:(0,m.jsx)(f.FieldModelRenderer,{model:e,fallback:(0,m.jsx)(b.Skeleton.Input,{size:"small"})})},e.uid)})}),(0,m.jsxs)(b.Space,{style:{display:"flex",justifyContent:"flex-end",flexShrink:0,padding:e?mg:void 0},children:[(0,m.jsx)(b.Button,{onClick:()=>{this.viewContainer.close()},children:this.context.t("Cancel")}),(0,m.jsx)(b.Button,{type:"primary",htmlType:"submit",onClick:async()=>{var e,t,l,o,n;let i=this.form.getFieldsValue();await this.form.submit();let r={...i},a={[this.fieldPath]:null==(e=this.resource.getData())?void 0:e[this.fieldPath]};if(this._onOk)this._onOk(r),this.viewContainer.close();else try{await this.resource.save(r,{refresh:!1}),null==(t=(l=this).__onSubmitSuccess)||t.call(l,r),this.viewContainer.close(),this.context.message.success(this.context.t("Saved successfully"))}catch(e){console.error("Failed to save form data:",e),this.context.message.error(this.context.t("Failed to save form data")),null==(o=(n=this).__onSubmitSuccess)||o.call(n,a)}},children:this.context.t("Submit")})]})]})}}mw.registerFlow({key:"quickEditFormSettings",sort:100,steps:{init:{async handler(e,t){let{dataSourceKey:l,collectionName:o,fieldPath:n}=t;if(!l||!o||!n)throw Error("dataSourceKey, collectionName and fieldPath are required parameters");e.model.fieldPath=n,e.model.collection=e.dataSourceManager.getCollection(l,o);let i=e.createResource(f.SingleRecordResource);i.setDataSourceKey(l),i.setResourceName(o),e.model.resource=i,(e.inputArgs.filterByTk||e.inputArgs.record)&&(i.setFilterByTk(e.inputArgs.filterByTk),i.setData(e.inputArgs.record));let r=e.model.collection.getField(n);if(r){let t=un.getDefaultBindingByField(e,r);if(!t)return;let i=t.modelName,a={fieldSettings:{init:{dataSourceKey:l,collectionName:o,fieldPath:n}}},s=e.model._dataScopeFilter;if(s){let t=mo(e.engine.getModelClass(i));t&&(a[t.flowKey]={...a[t.flowKey],[t.stepKey]:{filter:s}})}let d=e.model.addSubModel("fields",{use:i,props:"function"==typeof t.defaultProps?t.defaultProps(e,r):t.defaultProps,stepParams:a});d.setProps(m_(r,e.model._fieldProps)),d.setProps({sourceFieldModelUid:e.inputArgs.sourceFieldModelUid}),!e.model.context.isMobileLayout&&my.includes(i)&&null==d.props.placement&&d.setProps({placement:"topLeft"}),e.model.context.defineProperty("collectionField",{get:()=>r}),e.model.addAppends(n),await d.dispatchEvent("beforeRender")}if(e.inputArgs.filterByTk||e.inputArgs.record){var a;null==(a=e.model.form)||a.setFieldsValue(i.getData())}}}}}),mw.define({hide:!0});class mS extends aZ{}mS.itemModelName="FormAssociationItemModel",mS.define({label:'{{t("Display association fields")}}'});let mk=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],l=(0,f.useFlowContext)();return(0,nB.useRequest)(async()=>await l.resolveJsonTemplate(e),{refreshDeps:t})},mF=2;function mC(e,t){if(!t)return e;let l=[...e];return t.forEach(e=>{let[t,o]=e.split(":");if(l.includes(t)){let e=l.indexOf(t),n=Number(o);l.splice(e+1,0,Number.isFinite(n)?n:o)}}),l}function mA(e,t){if(null==e)return e;let l=typeof e;if("string"===l||"number"===l||"boolean"===l)return e;if("bigint"===l)return String(e);if(Array.isArray(e))return e.map(e=>{let l=mA(e,t);return null==l?"":String(l)}).join(",");if("object"===l){let l=(0,g.castArray)(t).filter(Boolean);if(1===l.length){let t=mA((0,g.get)(e,l[0]));if(void 0!==t)return t}if(l.length>1)return JSON.stringify(l.map(t=>mA((0,g.get)(e,t))??null));let o=e.id??e.value??e.key;if("string"==typeof o||"number"==typeof o)return o;if("bigint"==typeof o)return String(o)}}let mP=e=>{let t=e.underSubForm?"ctx.item.value":"ctx.formValues",l=`{{${t}.${e.fieldPath}}}`,{data:o,loading:n,error:i}=mk(l,[l,e.refreshKey]);return n?(0,m.jsx)("div",{children:"Loading..."}):i?(0,m.jsxs)("div",{children:["Error: ",i.message]}):(0,m.jsx)(f.FieldModelRenderer,{...e.mergedProps,model:e.modelForRender,value:o||e.value})};class mT extends f.DisplayItemModel{static defineChildren(e){let t=e.collection,l=e.prefixFieldPath?e.prefixFieldPath.split(".").filter(Boolean).length:0;return t.getFields().map(o=>{var n;if(l>=mF&&((null==(n=o.isAssociationField)?void 0:n.call(o))||o.target||o.targetCollection))return null;let i=this.getDefaultBindingByField(e,o,{fallbackToTargetTitleField:!0});if(!i)return null;let r=i.modelName,a=e.prefixFieldPath?`${e.prefixFieldPath}.${o.name}`:o.name;return{key:a,label:o.title,refreshTargets:["DetailsCustomItemModel/DetailsJSFieldItemModel"],toggleable:e=>{var t;return(null==(t=e.getStepParams("fieldSettings","init"))?void 0:t.fieldPath)===a},useModel:"FormAssociationItemModel",createModelOptions:()=>({use:"FormAssociationItemModel",stepParams:{fieldSettings:{init:{dataSourceKey:t.dataSourceKey,collectionName:e.model.context.blockModel.collection.name,fieldPath:a}}},subModels:{field:{use:r,props:"function"==typeof i.defaultProps?i.defaultProps(e,o):i.defaultProps}}})}}).filter(Boolean)}onInit(e){super.onInit(e),this.context.defineProperty("actionName",{get:()=>"view",cache:!1})}renderItem(){let e=this.subModels.field,t=this.context.fieldIndex,l=this.context.record,o=this.context.currentObject,n=null!=t?(()=>{let n=e.createFork({},`${t}`);return n.context.defineProperty("fieldIndex",{get:()=>t}),n.context.defineProperty("record",{get:()=>l,cache:!1}),n.context.defineProperty("currentObject",{get:()=>o,cache:!1}),this.context.pattern&&n.context.defineProperty("pattern",{get:()=>this.context.pattern}),n})():e,i=this.collectionField.name,r=this.fieldPath.replace(RegExp(`\\.${i}$`),""),a=mC((0,g.castArray)(r.split(".")),t),s=this.context.prefixFieldPath;return(0,m.jsx)(f.FormItem,{...this.props,shouldUpdate:(e,t)=>{let l=a.length>1&&!(0,g.get)(e,[...a])?a.slice(0,-1):a;return JSON.stringify((0,g.get)(e,[...l]))!==JSON.stringify((0,g.get)(t,[...l]))},children:()=>{var e,t,l,o;let i=mA(null==(t=this.context.form)||null==(e=t.getFieldValue)?void 0:e.call(t,a),null==(o=this.collectionField)||null==(l=o.collection)?void 0:l.filterTargetKey)||(0,io.uid)();return(0,m.jsx)(mP,{modelForRender:n,fieldPath:this.fieldPath.replace(RegExp(`^${s}\\.`),""),refreshKey:i,mergedProps:this.props,underSubForm:!!s})}})}}mT.define({label:(0,f.tExpr)("Display fields"),sort:100}),mT.registerFlow({key:"detailItemSettings",sort:300,title:(0,f.tExpr)("Detail item settings"),steps:{showLabel:{title:(0,f.tExpr)("Show label"),uiMode:{type:"switch",key:"showLabel"},defaultParams:{showLabel:!0},handler(e,t){e.model.setProps({showLabel:t.showLabel})}},label:{title:(0,f.tExpr)("Label"),uiSchema:e=>({title:{"x-component":"Input","x-decorator":"FormItem","x-reactions":t=>{var l;let o=e.model,n=null==(l=o.collectionField)?void 0:l.title;t.decoratorProps={...t.decoratorProps,extra:o.context.t("Original field title: ")+(o.context.t(n)??"")}}}}),defaultParams:e=>{var t;return{title:null==(t=e.collectionField)?void 0:t.title}},handler(e,t){e.model.setProps({label:e.t(t.title,{ns:"lm-flow-engine"})})}},aclCheck:{use:"aclCheck"},init:{async handler(e){let{collectionField:t}=e.model;t&&e.model.setProps(t.getComponentProps())}},tooltip:{title:(0,f.tExpr)("Tooltip"),uiSchema:{tooltip:{"x-component":"Input.TextArea","x-decorator":"FormItem"}},handler(e,t){e.model.setProps({tooltip:e.t(t.tooltip,{ns:"lm-flow-engine"})})}},description:{title:(0,f.tExpr)("Description"),uiSchema:{description:{"x-component":"Input.TextArea","x-decorator":"FormItem"}},handler(e,t){e.model.setProps({extra:e.t(t.description,{ns:"lm-flow-engine"})})}},model:{title:(0,f.tExpr)("Field component"),use:"displayFieldComponent"},fieldNames:{use:"titleField",title:(0,f.tExpr)("Title field"),beforeParamsSave:async(e,t,l)=>{if(!e.collectionField||!e.collectionField.isAssociationField())return null;if(t.label!==l.label){var o,n;e.model.setProps({titleField:t.label,...null==(n=e.collectionField.targetCollection)||null==(o=n.getField(t.label))?void 0:o.getComponentProps()});let l=e.collectionField.targetCollection.getField(t.label),i=f.DisplayItemModel.getDefaultBindingByField(e,l),r=i.modelName;await d2({parentModel:e.model,targetUse:r,defaultProps:"function"==typeof(null==i?void 0:i.defaultProps)?i.defaultProps(e,e.collectionField):null==i?void 0:i.defaultProps,pattern:e.model.getProps().pattern})}},async handler(e,t){var l,o;if(!e.collectionField||e.model.subModels.field.disableTitleField)return;e.model.setProps({titleField:t.label,...null==(o=e.collectionField.targetCollection)||null==(l=o.getField(t.label))?void 0:l.getComponentProps()});let n=e.collectionField.targetCollection;if(n){let l=n.getField(t.label),o=f.DisplayItemModel.getDefaultBindingByField(e,l).modelName;o!==e.model.subModels.field.use&&e.model.setStepParams(e.flowKey,"model",{use:o})}},hideInSettings:async e=>!e.collectionField||!e.collectionField.isAssociationField()||e.model.subModels.field.disableTitleField}}}),mT.registerFlow({key:"paginationChange",on:"paginationChange",steps:{aclCheckRefresh:{use:"aclCheckRefresh"}}});var mj=__webpack_require__(8563);let mI="client",mL=e=>e&&(e.closest(".nb-block-grid")||e.closest(".nb-page-wrapper")||e.closest(".nb-page"))||document.documentElement,mR=e=>{if(!e)return 0;let t=e.getBoundingClientRect(),l=window.getComputedStyle(e),o=parseFloat(l.marginTop)||0,n=parseFloat(l.marginBottom)||0;return t.height+o+n},mD=e=>{if(!e||e===document.documentElement)return{top:0,bottom:0};let t=window.getComputedStyle(e);return{top:parseFloat(t.paddingTop)||0,bottom:parseFloat(t.paddingBottom)||0}},mE=e=>{let t=e.closest(".nb-page");return t?t.querySelector(".ant-page-header")||t.querySelector(".pageHeaderCss"):null},mY=e=>{let t=e.querySelector("[data-flow-add-block]");return t?t.parentElement||t:null};function mN(e,t){let l=t>0;return e>0?e:l?t:0}let mO=e=>{let{height:t,heightMode:l,hostRef:o,marginBlock:n}=e,[r,a]=i.default.useState(),s=i.default.useCallback(()=>{if("fullHeight"!==l||"u"<typeof window)return void a(e=>void 0===e?e:void 0);let e=o.current;if(!e)return;let t=mL(e),i=e.getBoundingClientRect(),r=t===document.documentElement?{top:0}:t.getBoundingClientRect(),s=mD(t),d=mY(t),u=r.top+s.top,c=Math.max(0,i.top-u),p=s.bottom+n;d&&(p=n+mR(d)+s.bottom);let m=Math.max(0,Math.floor(window.innerHeight-mN(u,110)-c-p-1));a(e=>e===m?e:m)},[l,o,n]);return(i.default.useLayoutEffect(()=>{s()},[s]),i.default.useEffect(()=>{if("fullHeight"!==l||"u"<typeof window)return;let e=o.current;if(!e||"u"<typeof ResizeObserver)return;let t=mL(e),n=mE(t),i=mY(t),r=new ResizeObserver(()=>s());return r.observe(e),t instanceof HTMLElement&&r.observe(t),n&&r.observe(n),i&&r.observe(i),window.addEventListener("resize",s),()=>{r.disconnect(),window.removeEventListener("resize",s)}},[l,o,s]),"specifyValue"===l)?t:"fullHeight"===l?r:null},mB=e=>{let{uid:t,className:l,heightMode:o,height:n,style:r,beforeContent:a,afterContent:s,contentRef:d,marginBlock:u,minHeight:c,...p}=e,h=i.default.useRef(null),f=mO({height:n,heightMode:o,hostRef:h,marginBlock:u});return(0,m.jsxs)("div",{...p,ref:h,id:`model-${t}`,className:l,style:{display:"flex",flexDirection:"column",height:f??void 0,minHeight:c,overflow:"auto",...r||{}},children:[a,(0,m.jsx)("div",{ref:d}),s]})};class mV extends sC.z{get showBlockCard(){var e;return(null==(e=this.getStepParams("jsSettings","showBlockCard"))?void 0:e.showBlockCard)!==!1}renderComponent(){return(0,m.jsx)("div",{ref:this.context.ref})}render(){let{className:e,id:t,title:l,description:o,showCard:n,heightMode:i,height:r,style:a,beforeContent:s,afterContent:d,...u}=this.decoratorProps||{},c=["code-block",e].filter(Boolean).join(" ");if(!this.showBlockCard){var p,h;return(0,m.jsx)(mB,{...u,uid:this.uid,className:c,heightMode:i,height:r,style:a,beforeContent:s,afterContent:d,contentRef:this.context.ref,marginBlock:(null==(p=this.context.themeToken)?void 0:p.marginBlock)??0,minHeight:this.context.flowSettingsEnabled?(null==(h=this.context.themeToken)?void 0:h.controlHeightLG)??40:0})}let f={...u,height:r,...void 0===a?{}:{style:a},...void 0===s?{}:{beforeContent:s},...void 0===d?{}:{afterContent:d}};return(0,m.jsx)(mj.tn,{id:`model-${this.uid}`,className:c,title:l,description:o,heightMode:i,...f,children:(0,m.jsx)("div",{ref:this.context.ref})})}onMount(){this._mountedOnce&&this.context.ref.current&&this.rerender(),this._mountedOnce=!0}constructor(...e){super(...e),this._mountedOnce=!1}}mV.define({label:(0,f.tExpr)("JS block"),createModelOptions:{use:"JSBlockModel"}}),mV.registerFlow({key:"jsSettings",title:"JavaScript settings",steps:{showBlockCard:{title:(0,f.tExpr)("Show block card"),uiMode:{type:"switch",key:"showBlockCard"},defaultParams:{showBlockCard:!0}},runJs:{title:(0,f.tExpr)("Write JavaScript"),useRawParams:!0,uiSchema:{code:{type:"string","x-decorator":"FormItem","x-component":dm.BY,"x-component-props":{minHeight:"320px",theme:"light",enableLinter:!0,wrapperStyle:{position:"fixed",inset:8}}}},uiMode:{type:"embed",props:{styles:{body:{transform:"translateX(0)"}}}},defaultParams:e=>({version:"v2",code:`// Welcome to the JS block
|
|
902
902
|
// Create powerful interactive components with JavaScript
|
|
903
903
|
ctx.render(\`
|
|
904
904
|
<div style="padding: 24px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; line-height: 1.6; max-width: 600px;">
|
package/lib/index.js
CHANGED
|
@@ -822,7 +822,7 @@ function JsItem() {
|
|
|
822
822
|
}
|
|
823
823
|
|
|
824
824
|
ctx.render(<JsItem />);
|
|
825
|
-
`;class dk extends aQ.S0{render(){return(0,m.jsx)("div",{ref:this.context.ref,style:{display:"inline-flex",minHeight:22,alignItems:"center"}})}renderHiddenInConfig(){return(0,m.jsx)("div",{ref:this.context.ref,style:{display:"inline-flex",minHeight:22,alignItems:"center",opacity:.3}})}onMount(){var e;let t=this.context.resource;if(t){let e=()=>{this.applyFlow("jsSettings")};t.on("refresh",e),this._offResourceRefresh=()=>{t.off("refresh",e)}}this._mountedOnce&&(null==(e=this.context.ref)?void 0:e.current)&&this.applyFlow("jsSettings"),this._mountedOnce=!0}onUnmount(){var e,t;null==(e=(t=this)._offResourceRefresh)||e.call(t),this._offResourceRefresh=void 0}constructor(...e){super(...e),this._mountedOnce=!1}}dk.scene=aQ.s5.all,dk.define({label:(0,f.tExpr)("JS item"),sort:9998,createModelOptions:{use:"JSItemActionModel"}}),dk.registerFlow({key:"buttonSettings",title:(0,f.tExpr)("Button settings"),sort:-999,steps:{linkageRules:{use:"actionLinkageRules"}}}),dk.registerFlow({key:"jsSettings",title:(0,f.tExpr)("JavaScript settings"),steps:{runJs:{title:(0,f.tExpr)("Write JavaScript"),useRawParams:!0,uiSchema:{code:{type:"string","x-decorator":"FormItem","x-component":dm.BY,"x-component-props":{minHeight:"320px",theme:"light",enableLinter:!0,wrapperStyle:{position:"fixed",inset:8}}}},uiMode:{type:"embed",props:{styles:{body:{transform:"translateX(0)"}}}},defaultParams:()=>({version:"v2",code:dF.trim()}),async handler(e,t){let{code:l,version:o}=dh(e,t);e.onRefReady(e.ref,async t=>{e.defineProperty("element",{get:()=>new f.ElementProxy(t)}),await e.runjs(l,void 0,{version:o})})}}}}),aJ.registerActionModels({JSItemActionModel:dk}),aX.registerActionModels({JSItemActionModel:dk}),dM.registerActionModels({JSItemActionModel:dk}),dw.registerActionModels({JSItemActionModel:dk});class dC extends s2.L{constructor(...e){super(...e),this.defaultProps={type:"link",title:(0,f.tExpr)("JS action"),icon:"JavaScriptOutlined"}}}dC.scene=aQ.s5.record,dC.define({label:(0,f.tExpr)("JS action"),sort:9999,createModelOptions:{use:"JSRecordActionModel"}}),dC.registerFlow({key:"clickSettings",on:"click",title:(0,f.tExpr)("Click settings"),steps:{runJs:{title:(0,f.tExpr)("Write JavaScript"),useRawParams:!0,uiSchema:{code:{type:"string","x-component":dm.BY,"x-component-props":{minHeight:"320px",theme:"light",enableLinter:!0,wrapperStyle:{position:"fixed",inset:8}}}},uiMode:{type:"embed",props:{styles:{body:{transform:"translateX(0)"}}}},defaultParams:e=>({version:"v2",code:`
|
|
825
|
+
`;class dk extends aQ.S0{render(){var e;return(0,m.jsx)("div",{ref:this.context.ref,style:{display:"inline-flex",minHeight:22,minWidth:this.context.flowSettingsEnabled?(null==(e=this.context.themeToken)?void 0:e.controlHeightLG)??40:void 0,alignItems:"center"}})}renderHiddenInConfig(){var e;return(0,m.jsx)("div",{ref:this.context.ref,style:{display:"inline-flex",minHeight:22,minWidth:(null==(e=this.context.themeToken)?void 0:e.controlHeightLG)??40,alignItems:"center",opacity:.3}})}onMount(){var e;let t=this.context.resource;if(t){let e=()=>{this.applyFlow("jsSettings")};t.on("refresh",e),this._offResourceRefresh=()=>{t.off("refresh",e)}}this._mountedOnce&&(null==(e=this.context.ref)?void 0:e.current)&&this.applyFlow("jsSettings"),this._mountedOnce=!0}onUnmount(){var e,t;null==(e=(t=this)._offResourceRefresh)||e.call(t),this._offResourceRefresh=void 0}constructor(...e){super(...e),this._mountedOnce=!1}}dk.scene=aQ.s5.all,dk.define({label:(0,f.tExpr)("JS item"),sort:9998,createModelOptions:{use:"JSItemActionModel"}}),dk.registerFlow({key:"buttonSettings",title:(0,f.tExpr)("Button settings"),sort:-999,steps:{linkageRules:{use:"actionLinkageRules"}}}),dk.registerFlow({key:"jsSettings",title:(0,f.tExpr)("JavaScript settings"),steps:{runJs:{title:(0,f.tExpr)("Write JavaScript"),useRawParams:!0,uiSchema:{code:{type:"string","x-decorator":"FormItem","x-component":dm.BY,"x-component-props":{minHeight:"320px",theme:"light",enableLinter:!0,wrapperStyle:{position:"fixed",inset:8}}}},uiMode:{type:"embed",props:{styles:{body:{transform:"translateX(0)"}}}},defaultParams:()=>({version:"v2",code:dF.trim()}),async handler(e,t){let{code:l,version:o}=dh(e,t);e.onRefReady(e.ref,async t=>{e.defineProperty("element",{get:()=>new f.ElementProxy(t)}),await e.runjs(l,void 0,{version:o})})}}}}),aJ.registerActionModels({JSItemActionModel:dk}),aX.registerActionModels({JSItemActionModel:dk}),dM.registerActionModels({JSItemActionModel:dk}),dw.registerActionModels({JSItemActionModel:dk});class dC extends s2.L{constructor(...e){super(...e),this.defaultProps={type:"link",title:(0,f.tExpr)("JS action"),icon:"JavaScriptOutlined"}}}dC.scene=aQ.s5.record,dC.define({label:(0,f.tExpr)("JS action"),sort:9999,createModelOptions:{use:"JSRecordActionModel"}}),dC.registerFlow({key:"clickSettings",on:"click",title:(0,f.tExpr)("Click settings"),steps:{runJs:{title:(0,f.tExpr)("Write JavaScript"),useRawParams:!0,uiSchema:{code:{type:"string","x-component":dm.BY,"x-component-props":{minHeight:"320px",theme:"light",enableLinter:!0,wrapperStyle:{position:"fixed",inset:8}}}},uiMode:{type:"embed",props:{styles:{body:{transform:"translateX(0)"}}}},defaultParams:e=>({version:"v2",code:`
|
|
826
826
|
if (!ctx.record) {
|
|
827
827
|
ctx.message.error('No record');
|
|
828
828
|
} else {
|
|
@@ -898,7 +898,7 @@ if (!ctx.record) {
|
|
|
898
898
|
`);n.default.useEffect(()=>{o(e.options||[])},[i]);let a=n.default.useMemo(()=>new Set((Array.isArray(e.value)?e.value:[]).map(e=>e.join("."))),[e.value]),s=(t,l)=>{var o,i;let n=null==t||null==(o=t.meta)?void 0:o.fullPath;if(!n)return;let r=new Set(a);l?r.add(n):r.delete(n);let s=Array.from(r).map(e=>e.split("."));null==(i=e.onChange)||i.call(e,s)},d=e=>{var t;let l=null==e||null==(t=e.meta)?void 0:t.fullPath,o=!!(null==e?void 0:e.isLeaf),i=!!l&&a.has(l);return(0,m.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:"12px"},children:[(0,m.jsx)("span",{children:e.label}),o?(0,m.jsx)(x.Switch,{size:"small",checked:i,onClick:(e,t)=>{var l;return null==t||null==(l=t.stopPropagation)?void 0:l.call(t)},onChange:(t,l)=>{var o;null==l||null==(o=l.stopPropagation)||o.call(l),s(e,t)}}):null]})},u=e.displayRender||((e,t)=>{var l;let o=null==t?void 0:t[t.length-1];return(null==o||null==(l=o.meta)?void 0:l.fullLabel)||e.join(" / ")}),c=async e=>{var l,i,n,r;let a=e[e.length-1];if(!a||(null==(l=a.children)?void 0:l.length))return;let s=a.meta||{},d=s.field,u=s.fullPath;if(!d||!u){a.isLeaf=!0,o(e=>[...e]);return}let c=(null==(i=d.filterable)?void 0:i.children)||[],p=[];if(c.length?p=c:d.targetCollection&&(p=(null==(n=(r=d.targetCollection).getFields)?void 0:n.call(r))||[]),!p.length){a.isLeaf=!0,o(e=>[...e]);return}a.children=pW(t,p,u,[],s.fullLabel||a.label,s.associationDepth||0),o(e=>[...e])};return(0,m.jsx)(x.Cascader,{allowClear:!0,...e,options:l,loadData:c,displayRender:u,optionRender:d,popupClassName:r})}let pQ=(0,f.defineAction)({name:"defaultOperator",title:(0,f.tExpr)("Default operator"),uiMode:e=>({type:"select",key:"value",props:{options:pZ(e.model)}}),defaultParams(e){let t=pZ(e.model);return{value:t.length>0?t[0].value:""}},handler(e,t){e.model.operator=t.value}});function pZ(e){let t=e.context.collectionField||e.context.filterField;return a9(e).filter(e=>!e.visible||e.visible(t)).map(t=>({...t,label:"string"==typeof t.label?e.translate(t.label):t.label}))}var p0=__nested_rspack_require_1264766__(7720);function p1(e){var t;let l=e.operator,o=null==(t=e.subModels)?void 0:t.field;if(!o)return;if(e.setProps({key:`${e.uid}-${l||""}`}),!l)return void(0,p0.i2)(o);let i=a9(e);(0,p0.sI)({app:e.context.app,fieldModel:o,operator:l,operators:i,propsPriority:"field"})}let p2=(0,f.defineAction)({name:"customizeFilterRender",handler(e){p1(e.model)}});function p5(e){var t,l;let o=a7(e,e.operator);if(!o)return;let i=null==o||null==(t=o.schema)?void 0:t["x-component-props"];if(!i)return;let n=null==(l=e.subModels)?void 0:l.field;(null==n?void 0:n.setProps)&&n.setProps(i)}let p8=(0,f.defineAction)({name:"operatorComponentProps",handler(e){p5(e.model)}});var p4=__nested_rspack_require_1264766__(4084);class p3 extends dG.F4{createResource(e,t){let l=this.context.createResource(f.SingleRecordResource);return l.isNewRecord=!0,l}getAclActionName(){return"create"}async submitHandler(e,t,l){await (0,p4.submitHandler)(e,t,l)}async submit(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0;await (0,p4.submitHandler)(this.context,e,t)}renderComponent(){let{colon:e,labelAlign:t,labelWidth:l,labelWrap:o,layout:i}=this.props,n=!!this.context.flowSettingsEnabled,{heightMode:r,height:a}=this.decoratorProps;return(0,m.jsx)(dG.JU,{model:this,gridModel:this.subModels.grid,layoutProps:{colon:e,labelAlign:t,labelWidth:l,labelWrap:o,layout:i},heightMode:r,height:a,grid:(0,m.jsx)(f.FlowModelRenderer,{model:this.subModels.grid,showFlowSettings:!1}),actions:(0,m.jsx)(f.DndProvider,{children:(0,m.jsxs)(x.Space,{wrap:!0,children:[this.mapSubModels("actions",e=>{if(!e.hidden||n)return(0,m.jsx)(f.Droppable,{model:e,children:(0,m.jsx)(f.MemoFlowModelRenderer,{model:e,showFlowSettings:!!this.context.flowSettingsEnabled&&this.actionFlowSettings,extraToolbarItems:this.actionExtraToolbarItems},e.uid)},e.uid)}),this.renderConfigureActions()]})})})}constructor(...e){super(...e),this.actionFlowSettings={showBackground:!1,showBorder:!1,toolbarPosition:"above"},this.actionExtraToolbarItems=[{key:"drag-handler",component:f.DragHandler,sort:1}]}}p3.scene=sC.P.new,p3.blockCapabilityActionName="create",p3.registerFlow({key:"formSettings",title:(0,f.tExpr)("Form settings"),steps:{init:{async handler(e){if(!e.resource)throw Error("Resource is not initialized")}},refresh:{}}}),p3.define({label:(0,f.tExpr)("Form (Add new)"),searchable:!0,searchPlaceholder:(0,f.tExpr)("Search"),createModelOptions:{use:"CreateFormModel",subModels:{grid:{use:"FormGridModel"}}},sort:350});class p6 extends f.FlowModel{static defineChildren(e){let t=e.engine.filterModelClassByParent("CommonItemModel"),l=e.engine.filterModelClassByParent("FormCustomItemModel"),o=t=>Array.from(t.entries()).map(t=>{var l,o,i,n,r;let[a,s]=t,d="function"==typeof s.defineChildren||!!(null==(l=s.meta)?void 0:l.children),u={key:a,label:e.t(s.meta.label),sort:s.meta.sort??999,searchable:!!(null==(o=s.meta)?void 0:o.searchable),searchPlaceholder:null==(i=s.meta)?void 0:i.searchPlaceholder,hide:null==(n=s.meta)?void 0:n.hide};return d?u.children=e=>{var t;return"function"==typeof s.defineChildren?s.defineChildren(e):(null==(t=s.meta)?void 0:t.children)||[]}:u.createModelOptions=(null==(r=s.meta)?void 0:r.createModelOptions)||{use:a},u});return g.default.sortBy([...o(t),...o(l)],"sort")}}p6.renderMode=f.ModelRenderMode.RenderFunction,p6.define({hide:!0,label:(0,f.tExpr)("Others")});class p9 extends f.FlowModel{static defineChildren(e){return uw(e,{useModel:"FormItemModel",fieldUseModel:"JSEditableFieldModel",associationPathName:e.prefixFieldPath,refreshTargets:["FormItemModel","FilterFormItemModel"]})}}p9.define({label:(0,f.tExpr)("JS field"),searchable:!0,searchPlaceholder:(0,f.tExpr)("Search fields"),menuType:"submenu",sort:110});class p7 extends db{}p7.define({label:(0,f.tExpr)("JS action"),sort:9999}),p7.registerFlow({key:"clickSettings",on:"click",title:(0,f.tExpr)("Click settings"),steps:{runJs:{title:(0,f.tExpr)("Write JavaScript"),useRawParams:!0,uiSchema:{code:{type:"string","x-component":dm.BY,"x-component-props":{minHeight:"320px",theme:"light",enableLinter:!0,wrapperStyle:{position:"fixed",inset:8}}}},uiMode:{type:"embed",props:{styles:{body:{transform:"translateX(0)"}}}},defaultParams:e=>({version:"v2",code:`
|
|
899
899
|
const values = ctx.form?.getFieldsValue?.() || {};
|
|
900
900
|
ctx.message.success('Current form values: ' + JSON.stringify(values));
|
|
901
|
-
`}),async handler(e,t){let{code:l,version:o}=dh(e,t);e.defineMethod("refresh",async()=>{var t,l,o;(null==(l=e.blockModel)||null==(t=l.resource)?void 0:t.refresh)?await e.blockModel.resource.refresh():(null==(o=e.resource)?void 0:o.refresh)&&await e.resource.refresh()}),await e.runjs(l,void 0,{version:o})}}}});let me="dataScope",mt="tableColumnSettings",ml="quickEditDataScope";function mo(e){var t,l;let o=null==e||null==(l=e.globalFlowRegistry)||null==(t=l.getFlows)?void 0:t.call(l);if(!o)return null;for(let[e,t]of o)for(let[l,o]of Object.entries((null==t?void 0:t.steps)||{}))if((null==o?void 0:o.use)===me)return{flowKey:e,stepKey:l};return null}function mi(e,t){var l,o,i;if(!(null==t||null==(l=t.isAssociationField)?void 0:l.call(t)))return null;let n=ui.getDefaultBindingByField(e,t);return(null==n?void 0:n.modelName)?mo(null==(i=e.engine)||null==(o=i.getModelClass)?void 0:o.call(i,n.modelName)):null}function mn(e){return!e||!Array.isArray(e.items)||0===e.items.length}function mr(e){var t;let l=null==e?void 0:e.parent,o=null==l||null==(t=l.getStepParams)?void 0:t.call(l,mt,ml),i=null==o?void 0:o.filter;return mn(i)?void 0:i}function ma(e){let t=e.context.collectionField,l=()=>(null==t?void 0:t.targetCollection)??null,o=()=>e.context.collection??null;return(0,f.createEphemeralContext)(e.context,{defineProperties:{collection:{get:l,meta:(0,f.createCollectionContextMeta)(l,"Current collection")},record:{get:()=>void 0,meta:(0,f.createCurrentRecordMetaFactory)(e.context,o)}}})}function ms(e){let[t,l]=(0,n.useState)(null);return(0,n.useEffect)(()=>{let t=!1;return(async()=>{let o=await ma(e);t||l(new Proxy(e,{get(e,t,l){if("context"===t)return o;let i=Reflect.get(e,t,l);return"function"==typeof i?i.bind(e):i}}))})(),()=>{t=!0}},[e]),t}function md(e){let t=ms((0,f.useFlowSettingsContext)().model),l=(0,n.useCallback)(()=>(null==t?void 0:t.context.getPropertyMetaTree())??[],[t]);return t?(0,m.jsx)(rO.I8,{value:e.value,FilterItem:e=>(0,m.jsx)(rO.Et,{...e,model:t,rightAsVariable:!0,rightMetaTree:l})}):(0,m.jsx)(x.Skeleton.Input,{active:!0,size:"small"})}let mu="calc(100vh - 96px)",mc="calc(100vh - 160px)",mp="min(480px, calc(100vh - 320px))",mm="50vh",mh="calc(50vh - var(--nb-mobile-page-header-height, 40px) - 132px)",mf="8px var(--nb-mobile-page-tabs-content-padding, 12px) 0",mg="8px var(--nb-mobile-page-tabs-content-padding, 12px) calc(80px + env(safe-area-inset-bottom, 0px))",mv="(max-width: 768px)",my=["SelectFieldModel","RecordSelectFieldModel","CascadeSelectFieldModel","CascadeSelectListFieldModel"];function mb(e,t){let l={...e.getComponentProps(),...t||{}};return["markdown","vditor"].includes(e.interface)&&null==l.height&&(l.height=mp),l}function mx(e,t){var l,o;let i=null==t||null==(l=t.context)?void 0:l.isMobileLayout;if("boolean"==typeof i)return{isMobileLayout:i,inheritsMobileContext:i};let n=null==(o=e.context)?void 0:o.isMobileLayout;return"boolean"==typeof n?{isMobileLayout:n,inheritsMobileContext:n}:"u"<typeof window||"function"!=typeof window.matchMedia?{isMobileLayout:!1,inheritsMobileContext:!1}:{isMobileLayout:window.matchMedia(mv).matches,inheritsMobileContext:!1}}function mM(e,t,l,o,i,n){var r,a;let s=null==i||null==(a=i.parent)||null==(r=a.props)?void 0:r.title;if(s)return s;let d=null==n?void 0:n.title;if(d)return d;let u=e.context.dataSourceManager.getCollectionField(`${t}.${l}.${o}`);return(null==u?void 0:u.title)||o}function m_(e){let t=!1,l=e.beforeClose,o=async e=>(!t||!!(null==e?void 0:e.force))&&!1!==await (null==l?void 0:l(e));return e.beforeClose=o,{...e,close:(t,l)=>e.close(t,l),update(l){var o;return Object.prototype.hasOwnProperty.call(l,"preventClose")&&(t=!!l.preventClose),null==(o=e.update)?void 0:o.call(e,l)},get beforeClose(){return e.beforeClose},set beforeClose(value){l=value,e.beforeClose=o}}}class mS extends f.FlowModel{get form(){return this.context.form}useHooksBeforeRender(){let[e]=x.Form.useForm();this.context.defineProperty("form",{get:()=>e})}static async open(e){let{flowEngine:t,target:l,dataSourceKey:o,collectionName:i,fieldPath:n,filterByTk:r,record:a,onSuccess:s,fieldProps:d,onOk:u,sourceFieldModelUid:c}=e,p=c?t.getModel(c):void 0,h=t.createModel({use:"QuickEditFormModel",stepParams:{quickEditFormSettings:{init:{dataSourceKey:o,collectionName:i,fieldPath:n}}}},p?{delegate:p.context}:void 0);h._dataScopeFilter=mr(p);let g={maxHeight:mu,overflowY:"auto",overscrollBehavior:"contain"},v={...g,maxHeight:mm},y=(e,t)=>{if(b.isMobileLayout){var l;null==t||null==(l=t.defineProperty)||l.call(t,"isMobileLayout",{value:!0})}return h.viewContainer=m_(e),h.__onSubmitSuccess=s,h._fieldProps=d,h._onOk=u,(0,m.jsx)(f.FlowModelRenderer,{fallback:(0,m.jsx)(x.Skeleton.Input,{size:"small"}),model:h,inputArgs:{filterByTk:r,record:a,sourceFieldModelUid:c}})},b=mx(t,p);if(b.isMobileLayout){var M;h.context.defineProperty("isMobileLayout",{value:!0});let e=(null==p||null==(M=p.context)?void 0:M.viewer)||t.context.viewer,l=mM(t,o,i,n,p,d);await e.open({type:"drawer",title:l,closable:!0,placement:"bottom",inputArgs:{isMobileLayout:!0},styles:{body:v},content:y});return}await t.context.viewer.open({type:"popover",target:l,placement:"rightTop",styles:{body:{width:420,...g}},content:y})}onInit(e){super.onInit(e),this.context.defineProperty("blockModel",{value:this});let t=(0,f.createCurrentRecordMetaFactory)(this.context,()=>this.collection);this.context.defineProperty("record",{get:()=>this.resource.getData(),cache:!1,resolveOnServer:(0,f.createRecordResolveOnServerWithLocal)(()=>this.collection,()=>this.resource.getData()),meta:t}),this.context.defineProperty("collection",{get:()=>this.collection})}addAppends(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],l=this.context.dataSourceManager.getCollectionField(`${this.collection.dataSourceKey}.${this.collection.name}.${e}`);!l||l.isAssociationField()&&(this.resource.addAppends(e),t&&this.resource.refresh())}render(){let e=this.context.isMobileLayout;return(0,m.jsxs)(dG.s2,{model:this,children:[(0,m.jsx)("div",{style:{minHeight:0,overflowY:"auto",maxHeight:e?mh:mc,padding:e?mf:void 0},children:this.mapSubModels("fields",e=>{var t;return(0,m.jsx)(f.FormItem,{showLabel:!1,name:this.fieldPath,initialValue:null==(t=this.context.record)?void 0:t[this.fieldPath],...this.props,children:(0,m.jsx)(f.FieldModelRenderer,{model:e,fallback:(0,m.jsx)(x.Skeleton.Input,{size:"small"})})},e.uid)})}),(0,m.jsxs)(x.Space,{style:{display:"flex",justifyContent:"flex-end",flexShrink:0,padding:e?mg:void 0},children:[(0,m.jsx)(x.Button,{onClick:()=>{this.viewContainer.close()},children:this.context.t("Cancel")}),(0,m.jsx)(x.Button,{type:"primary",htmlType:"submit",onClick:async()=>{var e,t,l,o,i;let n=this.form.getFieldsValue();await this.form.submit();let r={...n},a={[this.fieldPath]:null==(e=this.resource.getData())?void 0:e[this.fieldPath]};if(this._onOk)this._onOk(r),this.viewContainer.close();else try{await this.resource.save(r,{refresh:!1}),null==(t=(l=this).__onSubmitSuccess)||t.call(l,r),this.viewContainer.close(),this.context.message.success(this.context.t("Saved successfully"))}catch(e){console.error("Failed to save form data:",e),this.context.message.error(this.context.t("Failed to save form data")),null==(o=(i=this).__onSubmitSuccess)||o.call(i,a)}},children:this.context.t("Submit")})]})]})}}mS.registerFlow({key:"quickEditFormSettings",sort:100,steps:{init:{async handler(e,t){let{dataSourceKey:l,collectionName:o,fieldPath:i}=t;if(!l||!o||!i)throw Error("dataSourceKey, collectionName and fieldPath are required parameters");e.model.fieldPath=i,e.model.collection=e.dataSourceManager.getCollection(l,o);let n=e.createResource(f.SingleRecordResource);n.setDataSourceKey(l),n.setResourceName(o),e.model.resource=n,(e.inputArgs.filterByTk||e.inputArgs.record)&&(n.setFilterByTk(e.inputArgs.filterByTk),n.setData(e.inputArgs.record));let r=e.model.collection.getField(i);if(r){let t=ui.getDefaultBindingByField(e,r);if(!t)return;let n=t.modelName,a={fieldSettings:{init:{dataSourceKey:l,collectionName:o,fieldPath:i}}},s=e.model._dataScopeFilter;if(s){let t=mo(e.engine.getModelClass(n));t&&(a[t.flowKey]={...a[t.flowKey],[t.stepKey]:{filter:s}})}let d=e.model.addSubModel("fields",{use:n,props:"function"==typeof t.defaultProps?t.defaultProps(e,r):t.defaultProps,stepParams:a});d.setProps(mb(r,e.model._fieldProps)),d.setProps({sourceFieldModelUid:e.inputArgs.sourceFieldModelUid}),!e.model.context.isMobileLayout&&my.includes(n)&&null==d.props.placement&&d.setProps({placement:"topLeft"}),e.model.context.defineProperty("collectionField",{get:()=>r}),e.model.addAppends(i),await d.dispatchEvent("beforeRender")}if(e.inputArgs.filterByTk||e.inputArgs.record){var a;null==(a=e.model.form)||a.setFieldsValue(n.getData())}}}}}),mS.define({hide:!0});class mw extends aZ{}mw.itemModelName="FormAssociationItemModel",mw.define({label:'{{t("Display association fields")}}'});let mF=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],l=(0,f.useFlowContext)();return(0,iH.useRequest)(async()=>await l.resolveJsonTemplate(e),{refreshDeps:t})},mk=2;function mC(e,t){if(!t)return e;let l=[...e];return t.forEach(e=>{let[t,o]=e.split(":");if(l.includes(t)){let e=l.indexOf(t),i=Number(o);l.splice(e+1,0,Number.isFinite(i)?i:o)}}),l}function mA(e,t){if(null==e)return e;let l=typeof e;if("string"===l||"number"===l||"boolean"===l)return e;if("bigint"===l)return String(e);if(Array.isArray(e))return e.map(e=>{let l=mA(e,t);return null==l?"":String(l)}).join(",");if("object"===l){let l=(0,g.castArray)(t).filter(Boolean);if(1===l.length){let t=mA((0,g.get)(e,l[0]));if(void 0!==t)return t}if(l.length>1)return JSON.stringify(l.map(t=>mA((0,g.get)(e,t))??null));let o=e.id??e.value??e.key;if("string"==typeof o||"number"==typeof o)return o;if("bigint"==typeof o)return String(o)}}let mP=e=>{let t=e.underSubForm?"ctx.item.value":"ctx.formValues",l=`{{${t}.${e.fieldPath}}}`,{data:o,loading:i,error:n}=mF(l,[l,e.refreshKey]);return i?(0,m.jsx)("div",{children:"Loading..."}):n?(0,m.jsxs)("div",{children:["Error: ",n.message]}):(0,m.jsx)(f.FieldModelRenderer,{...e.mergedProps,model:e.modelForRender,value:o||e.value})};class mT extends f.DisplayItemModel{static defineChildren(e){let t=e.collection,l=e.prefixFieldPath?e.prefixFieldPath.split(".").filter(Boolean).length:0;return t.getFields().map(o=>{var i;if(l>=mk&&((null==(i=o.isAssociationField)?void 0:i.call(o))||o.target||o.targetCollection))return null;let n=this.getDefaultBindingByField(e,o,{fallbackToTargetTitleField:!0});if(!n)return null;let r=n.modelName,a=e.prefixFieldPath?`${e.prefixFieldPath}.${o.name}`:o.name;return{key:a,label:o.title,refreshTargets:["DetailsCustomItemModel/DetailsJSFieldItemModel"],toggleable:e=>{var t;return(null==(t=e.getStepParams("fieldSettings","init"))?void 0:t.fieldPath)===a},useModel:"FormAssociationItemModel",createModelOptions:()=>({use:"FormAssociationItemModel",stepParams:{fieldSettings:{init:{dataSourceKey:t.dataSourceKey,collectionName:e.model.context.blockModel.collection.name,fieldPath:a}}},subModels:{field:{use:r,props:"function"==typeof n.defaultProps?n.defaultProps(e,o):n.defaultProps}}})}}).filter(Boolean)}onInit(e){super.onInit(e),this.context.defineProperty("actionName",{get:()=>"view",cache:!1})}renderItem(){let e=this.subModels.field,t=this.context.fieldIndex,l=this.context.record,o=this.context.currentObject,i=null!=t?(()=>{let i=e.createFork({},`${t}`);return i.context.defineProperty("fieldIndex",{get:()=>t}),i.context.defineProperty("record",{get:()=>l,cache:!1}),i.context.defineProperty("currentObject",{get:()=>o,cache:!1}),this.context.pattern&&i.context.defineProperty("pattern",{get:()=>this.context.pattern}),i})():e,n=this.collectionField.name,r=this.fieldPath.replace(RegExp(`\\.${n}$`),""),a=mC((0,g.castArray)(r.split(".")),t),s=this.context.prefixFieldPath;return(0,m.jsx)(f.FormItem,{...this.props,shouldUpdate:(e,t)=>{let l=a.length>1&&!(0,g.get)(e,[...a])?a.slice(0,-1):a;return JSON.stringify((0,g.get)(e,[...l]))!==JSON.stringify((0,g.get)(t,[...l]))},children:()=>{var e,t,l,o;let n=mA(null==(t=this.context.form)||null==(e=t.getFieldValue)?void 0:e.call(t,a),null==(o=this.collectionField)||null==(l=o.collection)?void 0:l.filterTargetKey)||(0,nn.uid)();return(0,m.jsx)(mP,{modelForRender:i,fieldPath:this.fieldPath.replace(RegExp(`^${s}\\.`),""),refreshKey:n,mergedProps:this.props,underSubForm:!!s})}})}}mT.define({label:(0,f.tExpr)("Display fields"),sort:100}),mT.registerFlow({key:"detailItemSettings",sort:300,title:(0,f.tExpr)("Detail item settings"),steps:{showLabel:{title:(0,f.tExpr)("Show label"),uiMode:{type:"switch",key:"showLabel"},defaultParams:{showLabel:!0},handler(e,t){e.model.setProps({showLabel:t.showLabel})}},label:{title:(0,f.tExpr)("Label"),uiSchema:e=>({title:{"x-component":"Input","x-decorator":"FormItem","x-reactions":t=>{var l;let o=e.model,i=null==(l=o.collectionField)?void 0:l.title;t.decoratorProps={...t.decoratorProps,extra:o.context.t("Original field title: ")+(o.context.t(i)??"")}}}}),defaultParams:e=>{var t;return{title:null==(t=e.collectionField)?void 0:t.title}},handler(e,t){e.model.setProps({label:e.t(t.title,{ns:"lm-flow-engine"})})}},aclCheck:{use:"aclCheck"},init:{async handler(e){let{collectionField:t}=e.model;t&&e.model.setProps(t.getComponentProps())}},tooltip:{title:(0,f.tExpr)("Tooltip"),uiSchema:{tooltip:{"x-component":"Input.TextArea","x-decorator":"FormItem"}},handler(e,t){e.model.setProps({tooltip:e.t(t.tooltip,{ns:"lm-flow-engine"})})}},description:{title:(0,f.tExpr)("Description"),uiSchema:{description:{"x-component":"Input.TextArea","x-decorator":"FormItem"}},handler(e,t){e.model.setProps({extra:e.t(t.description,{ns:"lm-flow-engine"})})}},model:{title:(0,f.tExpr)("Field component"),use:"displayFieldComponent"},fieldNames:{use:"titleField",title:(0,f.tExpr)("Title field"),beforeParamsSave:async(e,t,l)=>{if(!e.collectionField||!e.collectionField.isAssociationField())return null;if(t.label!==l.label){var o,i;e.model.setProps({titleField:t.label,...null==(i=e.collectionField.targetCollection)||null==(o=i.getField(t.label))?void 0:o.getComponentProps()});let l=e.collectionField.targetCollection.getField(t.label),n=f.DisplayItemModel.getDefaultBindingByField(e,l),r=n.modelName;await d2({parentModel:e.model,targetUse:r,defaultProps:"function"==typeof(null==n?void 0:n.defaultProps)?n.defaultProps(e,e.collectionField):null==n?void 0:n.defaultProps,pattern:e.model.getProps().pattern})}},async handler(e,t){var l,o;if(!e.collectionField||e.model.subModels.field.disableTitleField)return;e.model.setProps({titleField:t.label,...null==(o=e.collectionField.targetCollection)||null==(l=o.getField(t.label))?void 0:l.getComponentProps()});let i=e.collectionField.targetCollection;if(i){let l=i.getField(t.label),o=f.DisplayItemModel.getDefaultBindingByField(e,l).modelName;o!==e.model.subModels.field.use&&e.model.setStepParams(e.flowKey,"model",{use:o})}},hideInSettings:async e=>!e.collectionField||!e.collectionField.isAssociationField()||e.model.subModels.field.disableTitleField}}}),mT.registerFlow({key:"paginationChange",on:"paginationChange",steps:{aclCheckRefresh:{use:"aclCheckRefresh"}}});var mI=__nested_rspack_require_1264766__(8563);let mL="client",mR=e=>e&&(e.closest(".nb-block-grid")||e.closest(".nb-page-wrapper")||e.closest(".nb-page"))||document.documentElement,mj=e=>{if(!e)return 0;let t=e.getBoundingClientRect(),l=window.getComputedStyle(e),o=parseFloat(l.marginTop)||0,i=parseFloat(l.marginBottom)||0;return t.height+o+i},mD=e=>{if(!e||e===document.documentElement)return{top:0,bottom:0};let t=window.getComputedStyle(e);return{top:parseFloat(t.paddingTop)||0,bottom:parseFloat(t.paddingBottom)||0}},mE=e=>{let t=e.closest(".nb-page");return t?t.querySelector(".ant-page-header")||t.querySelector(".pageHeaderCss"):null},mY=e=>{let t=e.querySelector("[data-flow-add-block]");return t?t.parentElement||t:null};function mN(e,t){let l=t>0;return e>0?e:l?t:0}let mO=e=>{let{height:t,heightMode:l,hostRef:o,marginBlock:i}=e,[r,a]=n.default.useState(),s=n.default.useCallback(()=>{if("fullHeight"!==l||"u"<typeof window)return void a(e=>void 0===e?e:void 0);let e=o.current;if(!e)return;let t=mR(e),n=e.getBoundingClientRect(),r=t===document.documentElement?{top:0}:t.getBoundingClientRect(),s=mD(t),d=mY(t),u=r.top+s.top,c=Math.max(0,n.top-u),p=s.bottom+i;d&&(p=i+mj(d)+s.bottom);let m=Math.max(0,Math.floor(window.innerHeight-mN(u,110)-c-p-1));a(e=>e===m?e:m)},[l,o,i]);return(n.default.useLayoutEffect(()=>{s()},[s]),n.default.useEffect(()=>{if("fullHeight"!==l||"u"<typeof window)return;let e=o.current;if(!e||"u"<typeof ResizeObserver)return;let t=mR(e),i=mE(t),n=mY(t),r=new ResizeObserver(()=>s());return r.observe(e),t instanceof HTMLElement&&r.observe(t),i&&r.observe(i),n&&r.observe(n),window.addEventListener("resize",s),()=>{r.disconnect(),window.removeEventListener("resize",s)}},[l,o,s]),"specifyValue"===l)?t:"fullHeight"===l?r:null},mB=e=>{let{uid:t,className:l,heightMode:o,height:i,style:r,beforeContent:a,afterContent:s,contentRef:d,marginBlock:u,...c}=e,p=n.default.useRef(null),h=mO({height:i,heightMode:o,hostRef:p,marginBlock:u});return(0,m.jsxs)("div",{...c,ref:p,id:`model-${t}`,className:l,style:{display:"flex",flexDirection:"column",height:h??void 0,minHeight:0,overflow:"auto",...r||{}},children:[a,(0,m.jsx)("div",{ref:d}),s]})};class mV extends sC.z{get showBlockCard(){var e;return(null==(e=this.getStepParams("jsSettings","showBlockCard"))?void 0:e.showBlockCard)!==!1}renderComponent(){return(0,m.jsx)("div",{ref:this.context.ref})}render(){let{className:e,id:t,title:l,description:o,showCard:i,heightMode:n,height:r,style:a,beforeContent:s,afterContent:d,...u}=this.decoratorProps||{},c=["code-block",e].filter(Boolean).join(" ");if(!this.showBlockCard){var p;return(0,m.jsx)(mB,{...u,uid:this.uid,className:c,heightMode:n,height:r,style:a,beforeContent:s,afterContent:d,contentRef:this.context.ref,marginBlock:(null==(p=this.context.themeToken)?void 0:p.marginBlock)??0})}let h={...u,height:r,...void 0===a?{}:{style:a},...void 0===s?{}:{beforeContent:s},...void 0===d?{}:{afterContent:d}};return(0,m.jsx)(mI.tn,{id:`model-${this.uid}`,className:c,title:l,description:o,heightMode:n,...h,children:(0,m.jsx)("div",{ref:this.context.ref})})}onMount(){this._mountedOnce&&this.context.ref.current&&this.rerender(),this._mountedOnce=!0}constructor(...e){super(...e),this._mountedOnce=!1}}mV.define({label:(0,f.tExpr)("JS block"),createModelOptions:{use:"JSBlockModel"}}),mV.registerFlow({key:"jsSettings",title:"JavaScript settings",steps:{showBlockCard:{title:(0,f.tExpr)("Show block card"),uiMode:{type:"switch",key:"showBlockCard"},defaultParams:{showBlockCard:!0}},runJs:{title:(0,f.tExpr)("Write JavaScript"),useRawParams:!0,uiSchema:{code:{type:"string","x-decorator":"FormItem","x-component":dm.BY,"x-component-props":{minHeight:"320px",theme:"light",enableLinter:!0,wrapperStyle:{position:"fixed",inset:8}}}},uiMode:{type:"embed",props:{styles:{body:{transform:"translateX(0)"}}}},defaultParams:e=>({version:"v2",code:`// Welcome to the JS block
|
|
901
|
+
`}),async handler(e,t){let{code:l,version:o}=dh(e,t);e.defineMethod("refresh",async()=>{var t,l,o;(null==(l=e.blockModel)||null==(t=l.resource)?void 0:t.refresh)?await e.blockModel.resource.refresh():(null==(o=e.resource)?void 0:o.refresh)&&await e.resource.refresh()}),await e.runjs(l,void 0,{version:o})}}}});let me="dataScope",mt="tableColumnSettings",ml="quickEditDataScope";function mo(e){var t,l;let o=null==e||null==(l=e.globalFlowRegistry)||null==(t=l.getFlows)?void 0:t.call(l);if(!o)return null;for(let[e,t]of o)for(let[l,o]of Object.entries((null==t?void 0:t.steps)||{}))if((null==o?void 0:o.use)===me)return{flowKey:e,stepKey:l};return null}function mi(e,t){var l,o,i;if(!(null==t||null==(l=t.isAssociationField)?void 0:l.call(t)))return null;let n=ui.getDefaultBindingByField(e,t);return(null==n?void 0:n.modelName)?mo(null==(i=e.engine)||null==(o=i.getModelClass)?void 0:o.call(i,n.modelName)):null}function mn(e){return!e||!Array.isArray(e.items)||0===e.items.length}function mr(e){var t;let l=null==e?void 0:e.parent,o=null==l||null==(t=l.getStepParams)?void 0:t.call(l,mt,ml),i=null==o?void 0:o.filter;return mn(i)?void 0:i}function ma(e){let t=e.context.collectionField,l=()=>(null==t?void 0:t.targetCollection)??null,o=()=>e.context.collection??null;return(0,f.createEphemeralContext)(e.context,{defineProperties:{collection:{get:l,meta:(0,f.createCollectionContextMeta)(l,"Current collection")},record:{get:()=>void 0,meta:(0,f.createCurrentRecordMetaFactory)(e.context,o)}}})}function ms(e){let[t,l]=(0,n.useState)(null);return(0,n.useEffect)(()=>{let t=!1;return(async()=>{let o=await ma(e);t||l(new Proxy(e,{get(e,t,l){if("context"===t)return o;let i=Reflect.get(e,t,l);return"function"==typeof i?i.bind(e):i}}))})(),()=>{t=!0}},[e]),t}function md(e){let t=ms((0,f.useFlowSettingsContext)().model),l=(0,n.useCallback)(()=>(null==t?void 0:t.context.getPropertyMetaTree())??[],[t]);return t?(0,m.jsx)(rO.I8,{value:e.value,FilterItem:e=>(0,m.jsx)(rO.Et,{...e,model:t,rightAsVariable:!0,rightMetaTree:l})}):(0,m.jsx)(x.Skeleton.Input,{active:!0,size:"small"})}let mu="calc(100vh - 96px)",mc="calc(100vh - 160px)",mp="min(480px, calc(100vh - 320px))",mm="50vh",mh="calc(50vh - var(--nb-mobile-page-header-height, 40px) - 132px)",mf="8px var(--nb-mobile-page-tabs-content-padding, 12px) 0",mg="8px var(--nb-mobile-page-tabs-content-padding, 12px) calc(80px + env(safe-area-inset-bottom, 0px))",mv="(max-width: 768px)",my=["SelectFieldModel","RecordSelectFieldModel","CascadeSelectFieldModel","CascadeSelectListFieldModel"];function mb(e,t){let l={...e.getComponentProps(),...t||{}};return["markdown","vditor"].includes(e.interface)&&null==l.height&&(l.height=mp),l}function mx(e,t){var l,o;let i=null==t||null==(l=t.context)?void 0:l.isMobileLayout;if("boolean"==typeof i)return{isMobileLayout:i,inheritsMobileContext:i};let n=null==(o=e.context)?void 0:o.isMobileLayout;return"boolean"==typeof n?{isMobileLayout:n,inheritsMobileContext:n}:"u"<typeof window||"function"!=typeof window.matchMedia?{isMobileLayout:!1,inheritsMobileContext:!1}:{isMobileLayout:window.matchMedia(mv).matches,inheritsMobileContext:!1}}function mM(e,t,l,o,i,n){var r,a;let s=null==i||null==(a=i.parent)||null==(r=a.props)?void 0:r.title;if(s)return s;let d=null==n?void 0:n.title;if(d)return d;let u=e.context.dataSourceManager.getCollectionField(`${t}.${l}.${o}`);return(null==u?void 0:u.title)||o}function m_(e){let t=!1,l=e.beforeClose,o=async e=>(!t||!!(null==e?void 0:e.force))&&!1!==await (null==l?void 0:l(e));return e.beforeClose=o,{...e,close:(t,l)=>e.close(t,l),update(l){var o;return Object.prototype.hasOwnProperty.call(l,"preventClose")&&(t=!!l.preventClose),null==(o=e.update)?void 0:o.call(e,l)},get beforeClose(){return e.beforeClose},set beforeClose(value){l=value,e.beforeClose=o}}}class mS extends f.FlowModel{get form(){return this.context.form}useHooksBeforeRender(){let[e]=x.Form.useForm();this.context.defineProperty("form",{get:()=>e})}static async open(e){let{flowEngine:t,target:l,dataSourceKey:o,collectionName:i,fieldPath:n,filterByTk:r,record:a,onSuccess:s,fieldProps:d,onOk:u,sourceFieldModelUid:c}=e,p=c?t.getModel(c):void 0,h=t.createModel({use:"QuickEditFormModel",stepParams:{quickEditFormSettings:{init:{dataSourceKey:o,collectionName:i,fieldPath:n}}}},p?{delegate:p.context}:void 0);h._dataScopeFilter=mr(p);let g={maxHeight:mu,overflowY:"auto",overscrollBehavior:"contain"},v={...g,maxHeight:mm},y=(e,t)=>{if(b.isMobileLayout){var l;null==t||null==(l=t.defineProperty)||l.call(t,"isMobileLayout",{value:!0})}return h.viewContainer=m_(e),h.__onSubmitSuccess=s,h._fieldProps=d,h._onOk=u,(0,m.jsx)(f.FlowModelRenderer,{fallback:(0,m.jsx)(x.Skeleton.Input,{size:"small"}),model:h,inputArgs:{filterByTk:r,record:a,sourceFieldModelUid:c}})},b=mx(t,p);if(b.isMobileLayout){var M;h.context.defineProperty("isMobileLayout",{value:!0});let e=(null==p||null==(M=p.context)?void 0:M.viewer)||t.context.viewer,l=mM(t,o,i,n,p,d);await e.open({type:"drawer",title:l,closable:!0,placement:"bottom",inputArgs:{isMobileLayout:!0},styles:{body:v},content:y});return}await t.context.viewer.open({type:"popover",target:l,placement:"rightTop",styles:{body:{width:420,...g}},content:y})}onInit(e){super.onInit(e),this.context.defineProperty("blockModel",{value:this});let t=(0,f.createCurrentRecordMetaFactory)(this.context,()=>this.collection);this.context.defineProperty("record",{get:()=>this.resource.getData(),cache:!1,resolveOnServer:(0,f.createRecordResolveOnServerWithLocal)(()=>this.collection,()=>this.resource.getData()),meta:t}),this.context.defineProperty("collection",{get:()=>this.collection})}addAppends(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],l=this.context.dataSourceManager.getCollectionField(`${this.collection.dataSourceKey}.${this.collection.name}.${e}`);!l||l.isAssociationField()&&(this.resource.addAppends(e),t&&this.resource.refresh())}render(){let e=this.context.isMobileLayout;return(0,m.jsxs)(dG.s2,{model:this,children:[(0,m.jsx)("div",{style:{minHeight:0,overflowY:"auto",maxHeight:e?mh:mc,padding:e?mf:void 0},children:this.mapSubModels("fields",e=>{var t;return(0,m.jsx)(f.FormItem,{showLabel:!1,name:this.fieldPath,initialValue:null==(t=this.context.record)?void 0:t[this.fieldPath],...this.props,children:(0,m.jsx)(f.FieldModelRenderer,{model:e,fallback:(0,m.jsx)(x.Skeleton.Input,{size:"small"})})},e.uid)})}),(0,m.jsxs)(x.Space,{style:{display:"flex",justifyContent:"flex-end",flexShrink:0,padding:e?mg:void 0},children:[(0,m.jsx)(x.Button,{onClick:()=>{this.viewContainer.close()},children:this.context.t("Cancel")}),(0,m.jsx)(x.Button,{type:"primary",htmlType:"submit",onClick:async()=>{var e,t,l,o,i;let n=this.form.getFieldsValue();await this.form.submit();let r={...n},a={[this.fieldPath]:null==(e=this.resource.getData())?void 0:e[this.fieldPath]};if(this._onOk)this._onOk(r),this.viewContainer.close();else try{await this.resource.save(r,{refresh:!1}),null==(t=(l=this).__onSubmitSuccess)||t.call(l,r),this.viewContainer.close(),this.context.message.success(this.context.t("Saved successfully"))}catch(e){console.error("Failed to save form data:",e),this.context.message.error(this.context.t("Failed to save form data")),null==(o=(i=this).__onSubmitSuccess)||o.call(i,a)}},children:this.context.t("Submit")})]})]})}}mS.registerFlow({key:"quickEditFormSettings",sort:100,steps:{init:{async handler(e,t){let{dataSourceKey:l,collectionName:o,fieldPath:i}=t;if(!l||!o||!i)throw Error("dataSourceKey, collectionName and fieldPath are required parameters");e.model.fieldPath=i,e.model.collection=e.dataSourceManager.getCollection(l,o);let n=e.createResource(f.SingleRecordResource);n.setDataSourceKey(l),n.setResourceName(o),e.model.resource=n,(e.inputArgs.filterByTk||e.inputArgs.record)&&(n.setFilterByTk(e.inputArgs.filterByTk),n.setData(e.inputArgs.record));let r=e.model.collection.getField(i);if(r){let t=ui.getDefaultBindingByField(e,r);if(!t)return;let n=t.modelName,a={fieldSettings:{init:{dataSourceKey:l,collectionName:o,fieldPath:i}}},s=e.model._dataScopeFilter;if(s){let t=mo(e.engine.getModelClass(n));t&&(a[t.flowKey]={...a[t.flowKey],[t.stepKey]:{filter:s}})}let d=e.model.addSubModel("fields",{use:n,props:"function"==typeof t.defaultProps?t.defaultProps(e,r):t.defaultProps,stepParams:a});d.setProps(mb(r,e.model._fieldProps)),d.setProps({sourceFieldModelUid:e.inputArgs.sourceFieldModelUid}),!e.model.context.isMobileLayout&&my.includes(n)&&null==d.props.placement&&d.setProps({placement:"topLeft"}),e.model.context.defineProperty("collectionField",{get:()=>r}),e.model.addAppends(i),await d.dispatchEvent("beforeRender")}if(e.inputArgs.filterByTk||e.inputArgs.record){var a;null==(a=e.model.form)||a.setFieldsValue(n.getData())}}}}}),mS.define({hide:!0});class mw extends aZ{}mw.itemModelName="FormAssociationItemModel",mw.define({label:'{{t("Display association fields")}}'});let mF=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],l=(0,f.useFlowContext)();return(0,iH.useRequest)(async()=>await l.resolveJsonTemplate(e),{refreshDeps:t})},mk=2;function mC(e,t){if(!t)return e;let l=[...e];return t.forEach(e=>{let[t,o]=e.split(":");if(l.includes(t)){let e=l.indexOf(t),i=Number(o);l.splice(e+1,0,Number.isFinite(i)?i:o)}}),l}function mA(e,t){if(null==e)return e;let l=typeof e;if("string"===l||"number"===l||"boolean"===l)return e;if("bigint"===l)return String(e);if(Array.isArray(e))return e.map(e=>{let l=mA(e,t);return null==l?"":String(l)}).join(",");if("object"===l){let l=(0,g.castArray)(t).filter(Boolean);if(1===l.length){let t=mA((0,g.get)(e,l[0]));if(void 0!==t)return t}if(l.length>1)return JSON.stringify(l.map(t=>mA((0,g.get)(e,t))??null));let o=e.id??e.value??e.key;if("string"==typeof o||"number"==typeof o)return o;if("bigint"==typeof o)return String(o)}}let mP=e=>{let t=e.underSubForm?"ctx.item.value":"ctx.formValues",l=`{{${t}.${e.fieldPath}}}`,{data:o,loading:i,error:n}=mF(l,[l,e.refreshKey]);return i?(0,m.jsx)("div",{children:"Loading..."}):n?(0,m.jsxs)("div",{children:["Error: ",n.message]}):(0,m.jsx)(f.FieldModelRenderer,{...e.mergedProps,model:e.modelForRender,value:o||e.value})};class mT extends f.DisplayItemModel{static defineChildren(e){let t=e.collection,l=e.prefixFieldPath?e.prefixFieldPath.split(".").filter(Boolean).length:0;return t.getFields().map(o=>{var i;if(l>=mk&&((null==(i=o.isAssociationField)?void 0:i.call(o))||o.target||o.targetCollection))return null;let n=this.getDefaultBindingByField(e,o,{fallbackToTargetTitleField:!0});if(!n)return null;let r=n.modelName,a=e.prefixFieldPath?`${e.prefixFieldPath}.${o.name}`:o.name;return{key:a,label:o.title,refreshTargets:["DetailsCustomItemModel/DetailsJSFieldItemModel"],toggleable:e=>{var t;return(null==(t=e.getStepParams("fieldSettings","init"))?void 0:t.fieldPath)===a},useModel:"FormAssociationItemModel",createModelOptions:()=>({use:"FormAssociationItemModel",stepParams:{fieldSettings:{init:{dataSourceKey:t.dataSourceKey,collectionName:e.model.context.blockModel.collection.name,fieldPath:a}}},subModels:{field:{use:r,props:"function"==typeof n.defaultProps?n.defaultProps(e,o):n.defaultProps}}})}}).filter(Boolean)}onInit(e){super.onInit(e),this.context.defineProperty("actionName",{get:()=>"view",cache:!1})}renderItem(){let e=this.subModels.field,t=this.context.fieldIndex,l=this.context.record,o=this.context.currentObject,i=null!=t?(()=>{let i=e.createFork({},`${t}`);return i.context.defineProperty("fieldIndex",{get:()=>t}),i.context.defineProperty("record",{get:()=>l,cache:!1}),i.context.defineProperty("currentObject",{get:()=>o,cache:!1}),this.context.pattern&&i.context.defineProperty("pattern",{get:()=>this.context.pattern}),i})():e,n=this.collectionField.name,r=this.fieldPath.replace(RegExp(`\\.${n}$`),""),a=mC((0,g.castArray)(r.split(".")),t),s=this.context.prefixFieldPath;return(0,m.jsx)(f.FormItem,{...this.props,shouldUpdate:(e,t)=>{let l=a.length>1&&!(0,g.get)(e,[...a])?a.slice(0,-1):a;return JSON.stringify((0,g.get)(e,[...l]))!==JSON.stringify((0,g.get)(t,[...l]))},children:()=>{var e,t,l,o;let n=mA(null==(t=this.context.form)||null==(e=t.getFieldValue)?void 0:e.call(t,a),null==(o=this.collectionField)||null==(l=o.collection)?void 0:l.filterTargetKey)||(0,nn.uid)();return(0,m.jsx)(mP,{modelForRender:i,fieldPath:this.fieldPath.replace(RegExp(`^${s}\\.`),""),refreshKey:n,mergedProps:this.props,underSubForm:!!s})}})}}mT.define({label:(0,f.tExpr)("Display fields"),sort:100}),mT.registerFlow({key:"detailItemSettings",sort:300,title:(0,f.tExpr)("Detail item settings"),steps:{showLabel:{title:(0,f.tExpr)("Show label"),uiMode:{type:"switch",key:"showLabel"},defaultParams:{showLabel:!0},handler(e,t){e.model.setProps({showLabel:t.showLabel})}},label:{title:(0,f.tExpr)("Label"),uiSchema:e=>({title:{"x-component":"Input","x-decorator":"FormItem","x-reactions":t=>{var l;let o=e.model,i=null==(l=o.collectionField)?void 0:l.title;t.decoratorProps={...t.decoratorProps,extra:o.context.t("Original field title: ")+(o.context.t(i)??"")}}}}),defaultParams:e=>{var t;return{title:null==(t=e.collectionField)?void 0:t.title}},handler(e,t){e.model.setProps({label:e.t(t.title,{ns:"lm-flow-engine"})})}},aclCheck:{use:"aclCheck"},init:{async handler(e){let{collectionField:t}=e.model;t&&e.model.setProps(t.getComponentProps())}},tooltip:{title:(0,f.tExpr)("Tooltip"),uiSchema:{tooltip:{"x-component":"Input.TextArea","x-decorator":"FormItem"}},handler(e,t){e.model.setProps({tooltip:e.t(t.tooltip,{ns:"lm-flow-engine"})})}},description:{title:(0,f.tExpr)("Description"),uiSchema:{description:{"x-component":"Input.TextArea","x-decorator":"FormItem"}},handler(e,t){e.model.setProps({extra:e.t(t.description,{ns:"lm-flow-engine"})})}},model:{title:(0,f.tExpr)("Field component"),use:"displayFieldComponent"},fieldNames:{use:"titleField",title:(0,f.tExpr)("Title field"),beforeParamsSave:async(e,t,l)=>{if(!e.collectionField||!e.collectionField.isAssociationField())return null;if(t.label!==l.label){var o,i;e.model.setProps({titleField:t.label,...null==(i=e.collectionField.targetCollection)||null==(o=i.getField(t.label))?void 0:o.getComponentProps()});let l=e.collectionField.targetCollection.getField(t.label),n=f.DisplayItemModel.getDefaultBindingByField(e,l),r=n.modelName;await d2({parentModel:e.model,targetUse:r,defaultProps:"function"==typeof(null==n?void 0:n.defaultProps)?n.defaultProps(e,e.collectionField):null==n?void 0:n.defaultProps,pattern:e.model.getProps().pattern})}},async handler(e,t){var l,o;if(!e.collectionField||e.model.subModels.field.disableTitleField)return;e.model.setProps({titleField:t.label,...null==(o=e.collectionField.targetCollection)||null==(l=o.getField(t.label))?void 0:l.getComponentProps()});let i=e.collectionField.targetCollection;if(i){let l=i.getField(t.label),o=f.DisplayItemModel.getDefaultBindingByField(e,l).modelName;o!==e.model.subModels.field.use&&e.model.setStepParams(e.flowKey,"model",{use:o})}},hideInSettings:async e=>!e.collectionField||!e.collectionField.isAssociationField()||e.model.subModels.field.disableTitleField}}}),mT.registerFlow({key:"paginationChange",on:"paginationChange",steps:{aclCheckRefresh:{use:"aclCheckRefresh"}}});var mI=__nested_rspack_require_1264766__(8563);let mL="client",mR=e=>e&&(e.closest(".nb-block-grid")||e.closest(".nb-page-wrapper")||e.closest(".nb-page"))||document.documentElement,mj=e=>{if(!e)return 0;let t=e.getBoundingClientRect(),l=window.getComputedStyle(e),o=parseFloat(l.marginTop)||0,i=parseFloat(l.marginBottom)||0;return t.height+o+i},mD=e=>{if(!e||e===document.documentElement)return{top:0,bottom:0};let t=window.getComputedStyle(e);return{top:parseFloat(t.paddingTop)||0,bottom:parseFloat(t.paddingBottom)||0}},mE=e=>{let t=e.closest(".nb-page");return t?t.querySelector(".ant-page-header")||t.querySelector(".pageHeaderCss"):null},mY=e=>{let t=e.querySelector("[data-flow-add-block]");return t?t.parentElement||t:null};function mN(e,t){let l=t>0;return e>0?e:l?t:0}let mO=e=>{let{height:t,heightMode:l,hostRef:o,marginBlock:i}=e,[r,a]=n.default.useState(),s=n.default.useCallback(()=>{if("fullHeight"!==l||"u"<typeof window)return void a(e=>void 0===e?e:void 0);let e=o.current;if(!e)return;let t=mR(e),n=e.getBoundingClientRect(),r=t===document.documentElement?{top:0}:t.getBoundingClientRect(),s=mD(t),d=mY(t),u=r.top+s.top,c=Math.max(0,n.top-u),p=s.bottom+i;d&&(p=i+mj(d)+s.bottom);let m=Math.max(0,Math.floor(window.innerHeight-mN(u,110)-c-p-1));a(e=>e===m?e:m)},[l,o,i]);return(n.default.useLayoutEffect(()=>{s()},[s]),n.default.useEffect(()=>{if("fullHeight"!==l||"u"<typeof window)return;let e=o.current;if(!e||"u"<typeof ResizeObserver)return;let t=mR(e),i=mE(t),n=mY(t),r=new ResizeObserver(()=>s());return r.observe(e),t instanceof HTMLElement&&r.observe(t),i&&r.observe(i),n&&r.observe(n),window.addEventListener("resize",s),()=>{r.disconnect(),window.removeEventListener("resize",s)}},[l,o,s]),"specifyValue"===l)?t:"fullHeight"===l?r:null},mB=e=>{let{uid:t,className:l,heightMode:o,height:i,style:r,beforeContent:a,afterContent:s,contentRef:d,marginBlock:u,minHeight:c,...p}=e,h=n.default.useRef(null),f=mO({height:i,heightMode:o,hostRef:h,marginBlock:u});return(0,m.jsxs)("div",{...p,ref:h,id:`model-${t}`,className:l,style:{display:"flex",flexDirection:"column",height:f??void 0,minHeight:c,overflow:"auto",...r||{}},children:[a,(0,m.jsx)("div",{ref:d}),s]})};class mV extends sC.z{get showBlockCard(){var e;return(null==(e=this.getStepParams("jsSettings","showBlockCard"))?void 0:e.showBlockCard)!==!1}renderComponent(){return(0,m.jsx)("div",{ref:this.context.ref})}render(){let{className:e,id:t,title:l,description:o,showCard:i,heightMode:n,height:r,style:a,beforeContent:s,afterContent:d,...u}=this.decoratorProps||{},c=["code-block",e].filter(Boolean).join(" ");if(!this.showBlockCard){var p,h;return(0,m.jsx)(mB,{...u,uid:this.uid,className:c,heightMode:n,height:r,style:a,beforeContent:s,afterContent:d,contentRef:this.context.ref,marginBlock:(null==(p=this.context.themeToken)?void 0:p.marginBlock)??0,minHeight:this.context.flowSettingsEnabled?(null==(h=this.context.themeToken)?void 0:h.controlHeightLG)??40:0})}let f={...u,height:r,...void 0===a?{}:{style:a},...void 0===s?{}:{beforeContent:s},...void 0===d?{}:{afterContent:d}};return(0,m.jsx)(mI.tn,{id:`model-${this.uid}`,className:c,title:l,description:o,heightMode:n,...f,children:(0,m.jsx)("div",{ref:this.context.ref})})}onMount(){this._mountedOnce&&this.context.ref.current&&this.rerender(),this._mountedOnce=!0}constructor(...e){super(...e),this._mountedOnce=!1}}mV.define({label:(0,f.tExpr)("JS block"),createModelOptions:{use:"JSBlockModel"}}),mV.registerFlow({key:"jsSettings",title:"JavaScript settings",steps:{showBlockCard:{title:(0,f.tExpr)("Show block card"),uiMode:{type:"switch",key:"showBlockCard"},defaultParams:{showBlockCard:!0}},runJs:{title:(0,f.tExpr)("Write JavaScript"),useRawParams:!0,uiSchema:{code:{type:"string","x-decorator":"FormItem","x-component":dm.BY,"x-component-props":{minHeight:"320px",theme:"light",enableLinter:!0,wrapperStyle:{position:"fixed",inset:8}}}},uiMode:{type:"embed",props:{styles:{body:{transform:"translateX(0)"}}}},defaultParams:e=>({version:"v2",code:`// Welcome to the JS block
|
|
902
902
|
// Create powerful interactive components with JavaScript
|
|
903
903
|
ctx.render(\`
|
|
904
904
|
<div style="padding: 24px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; line-height: 1.6; max-width: 600px;">
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nocobase/client-v2",
|
|
3
|
-
"version": "2.3.0-beta.
|
|
3
|
+
"version": "2.3.0-beta.14",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"module": "es/index.mjs",
|
|
@@ -27,11 +27,11 @@
|
|
|
27
27
|
"@formily/antd-v5": "1.2.3",
|
|
28
28
|
"@formily/react": "^2.2.27",
|
|
29
29
|
"@formily/shared": "^2.2.27",
|
|
30
|
-
"@nocobase/evaluators": "2.3.0-beta.
|
|
31
|
-
"@nocobase/flow-engine": "2.3.0-beta.
|
|
32
|
-
"@nocobase/sdk": "2.3.0-beta.
|
|
33
|
-
"@nocobase/shared": "2.3.0-beta.
|
|
34
|
-
"@nocobase/utils": "2.3.0-beta.
|
|
30
|
+
"@nocobase/evaluators": "2.3.0-beta.14",
|
|
31
|
+
"@nocobase/flow-engine": "2.3.0-beta.14",
|
|
32
|
+
"@nocobase/sdk": "2.3.0-beta.14",
|
|
33
|
+
"@nocobase/shared": "2.3.0-beta.14",
|
|
34
|
+
"@nocobase/utils": "2.3.0-beta.14",
|
|
35
35
|
"ahooks": "^3.7.2",
|
|
36
36
|
"antd": "5.24.2",
|
|
37
37
|
"antd-style": "3.7.1",
|
|
@@ -49,5 +49,5 @@
|
|
|
49
49
|
"react-router-dom": "^6.30.1",
|
|
50
50
|
"zxing-wasm": "^3.1.3"
|
|
51
51
|
},
|
|
52
|
-
"gitHead": "
|
|
52
|
+
"gitHead": "2e19a2924cd2452eaacb99c5ca3419e656ed89bc"
|
|
53
53
|
}
|
|
@@ -37,14 +37,30 @@ export class JSItemActionModel extends ActionModel {
|
|
|
37
37
|
static scene = ActionSceneEnum.all;
|
|
38
38
|
|
|
39
39
|
render() {
|
|
40
|
-
return
|
|
40
|
+
return (
|
|
41
|
+
<div
|
|
42
|
+
ref={this.context.ref}
|
|
43
|
+
style={{
|
|
44
|
+
display: 'inline-flex',
|
|
45
|
+
minHeight: 22,
|
|
46
|
+
minWidth: this.context.flowSettingsEnabled ? this.context.themeToken?.controlHeightLG ?? 40 : undefined,
|
|
47
|
+
alignItems: 'center',
|
|
48
|
+
}}
|
|
49
|
+
/>
|
|
50
|
+
);
|
|
41
51
|
}
|
|
42
52
|
|
|
43
53
|
renderHiddenInConfig(): React.ReactNode | undefined {
|
|
44
54
|
return (
|
|
45
55
|
<div
|
|
46
56
|
ref={this.context.ref}
|
|
47
|
-
style={{
|
|
57
|
+
style={{
|
|
58
|
+
display: 'inline-flex',
|
|
59
|
+
minHeight: 22,
|
|
60
|
+
minWidth: this.context.themeToken?.controlHeightLG ?? 40,
|
|
61
|
+
alignItems: 'center',
|
|
62
|
+
opacity: 0.3,
|
|
63
|
+
}}
|
|
48
64
|
/>
|
|
49
65
|
);
|
|
50
66
|
}
|
|
@@ -62,7 +78,7 @@ export class JSItemActionModel extends ActionModel {
|
|
|
62
78
|
}
|
|
63
79
|
|
|
64
80
|
if (this._mountedOnce && this.context.ref?.current) {
|
|
65
|
-
|
|
81
|
+
this.applyFlow('jsSettings');
|
|
66
82
|
}
|
|
67
83
|
this._mountedOnce = true;
|
|
68
84
|
}
|
|
@@ -8,13 +8,59 @@
|
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
import React from 'react';
|
|
11
|
-
import { render, screen, waitFor } from '@nocobase/test/client';
|
|
11
|
+
import { act, render, screen, waitFor } from '@nocobase/test/client';
|
|
12
12
|
import { App, ConfigProvider } from 'antd';
|
|
13
13
|
import { describe, expect, it } from 'vitest';
|
|
14
14
|
import { FlowEngine, FlowEngineProvider, FlowModelRenderer } from '@nocobase/flow-engine';
|
|
15
15
|
import { JSItemActionModel } from '../JSItemActionModel';
|
|
16
16
|
|
|
17
17
|
describe('JSItemActionModel', () => {
|
|
18
|
+
it('keeps empty items reachable in configuration mode without replacing rendered content', async () => {
|
|
19
|
+
const engine = new FlowEngine();
|
|
20
|
+
engine.registerModels({ JSItemActionModel });
|
|
21
|
+
const model = engine.createModel<JSItemActionModel>({ use: 'JSItemActionModel' });
|
|
22
|
+
await engine.flowSettings.disable();
|
|
23
|
+
|
|
24
|
+
render(model.render());
|
|
25
|
+
const host = model.context.ref.current;
|
|
26
|
+
expect(host).toBeInstanceOf(HTMLDivElement);
|
|
27
|
+
expect(host.style.minWidth).toBe('');
|
|
28
|
+
expect(host.textContent).toBe('');
|
|
29
|
+
|
|
30
|
+
await act(async () => {
|
|
31
|
+
await engine.flowSettings.enable();
|
|
32
|
+
});
|
|
33
|
+
await waitFor(() => expect(host.style.minWidth).toBe('40px'));
|
|
34
|
+
|
|
35
|
+
const content = document.createElement('button');
|
|
36
|
+
content.textContent = 'Custom action';
|
|
37
|
+
host.appendChild(content);
|
|
38
|
+
|
|
39
|
+
await act(async () => {
|
|
40
|
+
await engine.flowSettings.disable();
|
|
41
|
+
});
|
|
42
|
+
await waitFor(() => expect(host.style.minWidth).toBe(''));
|
|
43
|
+
expect(model.context.ref.current).toBe(host);
|
|
44
|
+
expect(host.firstElementChild).toBe(content);
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
it('keeps hidden empty items configurable and removes them outside configuration mode', async () => {
|
|
48
|
+
const engine = new FlowEngine();
|
|
49
|
+
engine.registerModels({ JSItemActionModel });
|
|
50
|
+
const model = engine.createModel<JSItemActionModel>({ use: 'JSItemActionModel' });
|
|
51
|
+
model.setHidden(true);
|
|
52
|
+
await engine.flowSettings.enable();
|
|
53
|
+
|
|
54
|
+
const { container } = render(model.render());
|
|
55
|
+
expect(model.context.ref.current.style.minWidth).toBe('40px');
|
|
56
|
+
expect(model.context.ref.current.style.opacity).toBe('0.3');
|
|
57
|
+
|
|
58
|
+
await act(async () => {
|
|
59
|
+
await engine.flowSettings.disable();
|
|
60
|
+
});
|
|
61
|
+
await waitFor(() => expect(container).toBeEmptyDOMElement());
|
|
62
|
+
});
|
|
63
|
+
|
|
18
64
|
it('renders collection-level custom content', async () => {
|
|
19
65
|
const engine = new FlowEngine();
|
|
20
66
|
engine.registerModels({ JSItemActionModel });
|
|
@@ -152,6 +152,7 @@ const JSBlockPlainHost = ({
|
|
|
152
152
|
afterContent,
|
|
153
153
|
contentRef,
|
|
154
154
|
marginBlock,
|
|
155
|
+
minHeight,
|
|
155
156
|
...rest
|
|
156
157
|
}: React.HTMLAttributes<HTMLDivElement> & {
|
|
157
158
|
uid: string;
|
|
@@ -161,6 +162,7 @@ const JSBlockPlainHost = ({
|
|
|
161
162
|
afterContent?: React.ReactNode;
|
|
162
163
|
contentRef: React.RefObject<HTMLDivElement>;
|
|
163
164
|
marginBlock: number;
|
|
165
|
+
minHeight: number;
|
|
164
166
|
}) => {
|
|
165
167
|
const hostRef = React.useRef<HTMLDivElement | null>(null);
|
|
166
168
|
const resolvedHeight = usePlainHostHeight({ height, heightMode, hostRef, marginBlock });
|
|
@@ -175,7 +177,7 @@ const JSBlockPlainHost = ({
|
|
|
175
177
|
display: 'flex',
|
|
176
178
|
flexDirection: 'column',
|
|
177
179
|
height: resolvedHeight ?? undefined,
|
|
178
|
-
minHeight
|
|
180
|
+
minHeight,
|
|
179
181
|
overflow: 'auto',
|
|
180
182
|
...(style || {}),
|
|
181
183
|
}}
|
|
@@ -228,6 +230,8 @@ export class JSBlockModel extends BlockModel {
|
|
|
228
230
|
afterContent={afterContent}
|
|
229
231
|
contentRef={this.context.ref}
|
|
230
232
|
marginBlock={this.context.themeToken?.marginBlock ?? 0}
|
|
233
|
+
// Keep empty blocks reachable by the settings overlay while the UI editor is active.
|
|
234
|
+
minHeight={this.context.flowSettingsEnabled ? this.context.themeToken?.controlHeightLG ?? 40 : 0}
|
|
231
235
|
/>
|
|
232
236
|
);
|
|
233
237
|
}
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
|
|
10
10
|
import React from 'react';
|
|
11
11
|
import { App, ConfigProvider } from 'antd';
|
|
12
|
-
import { render } from '@nocobase/test/client';
|
|
12
|
+
import { act, render, waitFor } from '@nocobase/test/client';
|
|
13
13
|
import { describe, expect, it, vi } from 'vitest';
|
|
14
14
|
import { FlowEngine, FlowEngineProvider } from '@nocobase/flow-engine';
|
|
15
15
|
import { JSBlockModel } from '../JSBlock';
|
|
@@ -78,6 +78,28 @@ describe('JSBlockModel', () => {
|
|
|
78
78
|
expect(model.context.ref.current).toBe(host?.firstElementChild);
|
|
79
79
|
});
|
|
80
80
|
|
|
81
|
+
it('keeps an empty cardless block reachable only while the UI editor is active', async () => {
|
|
82
|
+
const { engine, model } = createJSBlock('js-block-empty-without-card', false, { style: undefined });
|
|
83
|
+
await engine.flowSettings.disable();
|
|
84
|
+
const { container } = renderBlock(engine, model);
|
|
85
|
+
const host = container.querySelector('#model-js-block-empty-without-card') as HTMLElement;
|
|
86
|
+
const content = model.context.ref.current;
|
|
87
|
+
|
|
88
|
+
expect(host.style.minHeight).toBe('0');
|
|
89
|
+
await act(async () => {
|
|
90
|
+
await engine.flowSettings.enable();
|
|
91
|
+
});
|
|
92
|
+
await waitFor(() => expect(host.style.minHeight).toBe('40px'));
|
|
93
|
+
expect(model.context.ref.current).toBe(content);
|
|
94
|
+
expect(container.querySelector('.ant-card')).toBeNull();
|
|
95
|
+
|
|
96
|
+
await act(async () => {
|
|
97
|
+
await engine.flowSettings.disable();
|
|
98
|
+
});
|
|
99
|
+
await waitFor(() => expect(host.style.minHeight).toBe('0'));
|
|
100
|
+
expect(model.context.ref.current).toBe(content);
|
|
101
|
+
});
|
|
102
|
+
|
|
81
103
|
it('keeps cardless specified-height content scrollable inside the plain host', () => {
|
|
82
104
|
const { engine, model } = createJSBlock('js-block-without-card-height', false, {
|
|
83
105
|
heightMode: 'specifyValue',
|