@nocobase/plugin-block-reference
Version:
The plugin is experimental. Please use it with caution in production environments.
10 lines (9 loc) • 18.5 kB
JavaScript
/**
* This file is part of the NocoBase (R) project.
* Copyright (c) 2020-2024 NocoBase Co., Ltd.
* Authors: NocoBase Team.
*
* This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
* For more information, please refer to: https://www.nocobase.com/agreement.
*/
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("react"),require("@nocobase/flow-engine"),require("@nocobase/client"),require("lodash"),require("antd")):"function"==typeof define&&define.amd?define("@nocobase/plugin-block-reference",["react","@nocobase/flow-engine","@nocobase/client","lodash","antd"],t):"object"==typeof exports?exports["@nocobase/plugin-block-reference"]=t(require("react"),require("@nocobase/flow-engine"),require("@nocobase/client"),require("lodash"),require("antd")):e["@nocobase/plugin-block-reference"]=t(e.react,e["@nocobase/flow-engine"],e["@nocobase/client"],e.lodash,e.antd)}(self,function(e,t,r,n,o){return function(){"use strict";var i={772:function(e){e.exports=r},667:function(e){e.exports=t},721:function(e){e.exports=o},467:function(e){e.exports=n},156:function(t){t.exports=e}},l={};function u(e){var t=l[e];if(void 0!==t)return t.exports;var r=l[e]={exports:{}};return i[e](r,r.exports,u),r.exports}u.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return u.d(t,{a:t}),t},u.d=function(e,t){for(var r in t)u.o(t,r)&&!u.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},u.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},u.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var a={};return!function(){u.r(a),u.d(a,{default:function(){return j},PluginBlockReferenceClient:function(){return R}});var e=u(772),t=u(156),r=u.n(t),n=u(467),o=u.n(n),i=u(721),l=u(667),c=JSON.parse('{"u2":"@nocobase/plugin-block-reference"}'),s=c.u2;function f(e){return"{{t(".concat(JSON.stringify(e),", { ns: ['").concat(c.u2,"', 'client'], nsMode: 'fallback' })}}")}function d(e,t,r,n,o,i,l){try{var u=e[i](l),a=u.value}catch(e){r(e);return}u.done?t(a):Promise.resolve(a).then(n,o)}function p(e){return function(){var t=this,r=arguments;return new Promise(function(n,o){var i=e.apply(t,r);function l(e){d(i,n,o,l,u,"next",e)}function u(e){d(i,n,o,l,u,"throw",e)}l(void 0)})}}function y(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function b(e,t,r){return(b="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(e,t,r){var n=function(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=v(e)););return e}(e,t);if(n){var o=Object.getOwnPropertyDescriptor(n,t);return o.get?o.get.call(r||e):o.value}})(e,t,r||e)}function v(e){return(v=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function g(e,t){if(t&&("object"===h(t)||"function"==typeof t))return t;if(void 0===e)throw ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function m(e,t){return(m=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function h(e){return e&&"undefined"!=typeof Symbol&&e.constructor===Symbol?"symbol":typeof e}function w(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(w=function(){return!!e})()}function O(e,t){var r,n,o,i,l={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){var a=[i,u];if(r)throw TypeError("Generator is already executing.");for(;l;)try{if(r=1,n&&(o=2&a[0]?n.return:a[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,a[1])).done)return o;switch(n=0,o&&(a=[2&a[0],o.value]),a[0]){case 0:case 1:o=a;break;case 4:return l.label++,{value:a[1],done:!1};case 5:l.label++,n=a[1],a=[0];continue;case 7:a=l.ops.pop(),l.trys.pop();continue;default:if(!(o=(o=l.trys).length>0&&o[o.length-1])&&(6===a[0]||2===a[0])){l=0;continue}if(3===a[0]&&(!o||a[1]>o[0]&&a[1]<o[3])){l.label=a[1];break}if(6===a[0]&&l.label<o[1]){l.label=o[1],o=a;break}if(o&&l.label<o[2]){l.label=o[2],l.ops.push(a);break}o[2]&&l.ops.pop(),l.trys.pop();continue}a=t.call(e,l)}catch(e){a=[6,e],n=0}finally{r=o=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}}}var S=function(e){var t;if("function"!=typeof e&&null!==e)throw TypeError("Super expression must either be null or a function");function n(e){if(!(this instanceof n))throw TypeError("Cannot call a class as a function");t=n,r=[e],t=v(t),y(o=g(this,w()?Reflect.construct(t,r||[],v(this).constructor):t.apply(this,r)),"settingsMenuLevel",2),y(o,"_scopedEngine",void 0),y(o,"_targetModel",void 0),y(o,"_resolvedTargetUid",void 0);var t,r,o,i=new Proxy(o,{get:function(e,t,r){if("__isReferenceProxy"===t)return!0;if(t in e){var n=Reflect.get(e,t,e);return"function"==typeof n&&"constructor"!==t?n.bind(e):n}var o=e._targetModel;if(o){var i=Reflect.get(o,t,o);if("function"==typeof i&&"constructor"!==t)return i.bind(o);if(void 0!==i)return i}},set:function(e,t,r,n){if(t in e)return Reflect.set(e,t,r,e);var o=e._targetModel;return o&&t in o?Reflect.set(o,t,r,o):Reflect.set(e,t,r,e)},has:function(e,t){if(t in e)return!0;var r=e._targetModel;return!!r&&t in r},ownKeys:function(e){var t=new Set(Reflect.ownKeys(e)),r=e._targetModel;if(r){var n=!0,o=!1,i=void 0;try{for(var l,u=Reflect.ownKeys(r)[Symbol.iterator]();!(n=(l=u.next()).done);n=!0){var a=l.value;t.add(a)}}catch(e){o=!0,i=e}finally{try{n||null==u.return||u.return()}finally{if(o)throw i}}}return Array.from(t)},getOwnPropertyDescriptor:function(e,t){var r=Reflect.getOwnPropertyDescriptor(e,t);if(r)return r;var n=e._targetModel;if(n)return Object.getOwnPropertyDescriptor(n,t)||void 0}});return g(o,i)}return n.prototype=Object.create(e&&e.prototype,{constructor:{value:n,writable:!0,configurable:!0}}),e&&m(n,e),t=[{key:"title",get:function(){var e;if(null==(e=this._targetModel)?void 0:e.title){var t,r=(null==(t=this.translate)?void 0:t.call(this,"Reference",{ns:[s,"client"]}))||"Reference";return"".concat(this._targetModel.title," (").concat(r,")")}return b(v(n.prototype),"title",this)}},{key:"_getTargetUidFromParams",value:function(){var e=this.getStepParams("referenceSettings","target")||{};return((null==e?void 0:e.targetUid)||"").trim()||void 0}},{key:"_ensureScopedEngine",value:function(){return this._scopedEngine||(this._scopedEngine=(0,l.createBlockScopedEngine)(this.flowEngine)),this._scopedEngine}},{key:"_resolveFinalTarget",value:function(e){var t=this;return p(function(){var r,n,o,i,l,u,a;return O(this,function(c){switch(c.label){case 0:r=t._ensureScopedEngine(),n=new Set,o=e,i=0,c.label=1;case 1:if(!(i<20))return[3,4];if(!o||n.has(o)||o===t.uid)return[2,null];return n.add(o),[4,r.loadModel({uid:o})];case 2:if(!(u=c.sent()))return[2,null];if("ReferenceBlockModel"!==u.constructor.name)return[2,u];if(!(a=null==(l=u.getStepParams("referenceSettings","target"))?void 0:l.targetUid)||"string"!=typeof a||!a.trim())return[2,null];o=String(a).trim(),c.label=3;case 3:return i++,[3,1];case 4:return[2,null]}})})()}},{key:"onDispatchEventStart",value:function(e){var t=this;return p(function(){var r,n,o,i,l,u,a,c,s,f,d,p,y,b,v,g,m;return O(this,function(h){switch(h.label){case 0:if("beforeRender"!==e)return[2];if(!(i=((null==(o=(null==(r=(n=t).getStepParams)?void 0:r.call(n,"referenceSettings","target"))||{})?void 0:o.targetUid)||"").trim()||void 0))return(l=t.subModels.target)&&(null==(a=t.emitter)||null==(u=a.emit)||u.call(a,"onSubModelRemoved",l),null==(c=t._scopedEngine)||c.removeModel(l.uid)),t._targetModel=void 0,t._resolvedTargetUid=void 0,t.subModels.target=void 0,[2];if(t._resolvedTargetUid===i&&t._targetModel)return[2];return[4,t._resolveFinalTarget(i)];case 1:if(!(s=h.sent()))return(f=t.subModels.target)&&(null==(p=t.emitter)||null==(d=p.emit)||d.call(p,"onSubModelRemoved",f),null==(y=t._scopedEngine)||y.removeModel(f.uid)),t._targetModel=void 0,t._resolvedTargetUid=void 0,t.subModels.target=void 0,[2];return s.setParent(t),(null==(b=t.subModels.target)?void 0:b.uid)!==s.uid?(t.setSubModel("target",s),b&&(null==(v=t._scopedEngine)||v.removeModel(b.uid))):(t.subModels.target=s,null==(m=t.emitter)||null==(g=m.emit)||g.call(m,"onSubModelReplaced",{oldModel:b,newModel:s})),t._targetModel=s,t._resolvedTargetUid=i,t.rerender(),[2]}})})()}},{key:"destroy",value:function(){var e=this,t=this;return p(function(){var r,o;return O(this,function(i){switch(i.label){case 0:return null==(o=t._scopedEngine)||null==(r=o.unlinkFromStack)||r.call(o),t._scopedEngine=void 0,[4,b(v(n.prototype),"destroy",e).call(t)];case 1:return[2,i.sent()]}})})()}},{key:"renderComponent",value:function(){var e,t,n,o=null==(e=this.subModels)?void 0:e.target,u=this._getTargetUidFromParams();if(!o)return u?r().createElement(i.Card,null,r().createElement("div",{style:{padding:24}},r().createElement(i.Result,{status:"error",subTitle:(null==(t=this.translate)?void 0:t.call(this,"Target block is invalid",{ns:[s,"client"]}))||"Target block is invalid"}))):r().createElement(i.Card,null,r().createElement("div",{style:{padding:24}},r().createElement(i.Empty,{image:i.Empty.PRESENTED_IMAGE_SIMPLE,description:(null==(n=this.translate)?void 0:n.call(this,"Please configure target block",{ns:[s,"client"]}))||"Please configure target block"})));var a=this._ensureScopedEngine();return r().createElement(l.FlowEngineProvider,{engine:a},r().createElement(l.FlowModelRenderer,{key:o.uid,model:o,showFlowSettings:!1,showErrorFallback:!0}))}},{key:"render",value:function(){return r().createElement("div",{ref:this.context.ref},this.renderComponent())}}],function(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}(n.prototype,t),n}(e.BlockModel);function M(e,t,r,n,o,i,l){try{var u=e[i](l),a=u.value}catch(e){r(e);return}u.done?t(a):Promise.resolve(a).then(n,o)}function _(e,t,r){return(_=E()?Reflect.construct:function(e,t,r){var n=[null];n.push.apply(n,t);var o=new(Function.bind.apply(e,n));return r&&k(o,r.prototype),o}).apply(null,arguments)}S.registerFlow({key:"referenceSettings",sort:-999,title:f("Reference block"),steps:{target:{preset:!0,title:f("Reference settings"),uiSchema:function(e){var t,r=e.model||{},n=(null==(t=r.getStepParams)?void 0:t.call(r,"referenceSettings","target"))||{},o=((null==n?void 0:n.targetUid)||"").trim(),i=!!r.isNew,l=r._resolvedTargetUid,u=r._targetModel,a=!i&&!!o&&!!u&&l===o;return{targetUid:{title:f("Block UID"),"x-component":"Input","x-decorator":"FormItem","x-decorator-props":{tooltip:a?f("Block UID is already set and cannot be modified"):void 0},"x-component-props":{disabled:a},"x-validator":[{format:"string",required:!0}]},mode:{title:f("Reference mode"),"x-component":"Radio.Group","x-decorator":"FormItem",enum:[{label:f("Reference"),value:"reference"},{label:f("Copy"),value:"copy"}]},copyNotice:{type:"void","x-decorator":"FormItem","x-component":"Alert","x-component-props":{type:"warning",showIcon:!0,message:f("Some configurations using uid may need to be reconfigured")},"x-reactions":{dependencies:["mode"],fulfill:{state:{hidden:'{{$deps[0] !== "copy"}}'}}}}}},defaultParams:function(){return{mode:"reference"}},beforeParamsSave:function(e,t){return p(function(){var r,n,i,l,u,a,c,s,f,d,p,b,v,g,m,w,S,M,_,P,k,x,E,R,j,T,A,F,U,D,B,I,q,N;return O(this,function(O){switch(O.label){case 0:if(r=((null==t?void 0:t.targetUid)||"").trim(),"copy"!==((null==t?void 0:t.mode)||"reference")||!r)return[2];return[4,(n=e.engine).duplicateModel(r)];case 1:var C,K;if(!(i=O.sent()))return[2];if(u=(l=e.model).parent,a=l.subKey,c=l.subType,!u||!a)return e.exit(),[2];if(s=-1,"array"===c&&(s=Array.isArray(f=u.subModels[a]||[])?f.findIndex(function(e){return(null==e?void 0:e.uid)===l.uid}):-1)<0&&(s=f.length),C=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){y(e,t,r[t])})}return e}({},i),K=K={parentId:u.uid,subKey:a,subType:c},Object.getOwnPropertyDescriptors?Object.defineProperties(C,Object.getOwnPropertyDescriptors(K)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(K)).forEach(function(e){Object.defineProperty(C,e,Object.getOwnPropertyDescriptor(K,e))}),d=C,(p=n.createModel(d)).isNew=!0,p.setParent(u),!l.isNew)return[3,17];if("array"!==c)return[3,3];return u.addSubModel(a,p),[4,null==(S=p.afterAddAsSubModel)?void 0:S.call(p)];case 2:return O.sent(),[3,5];case 3:return u.setSubModel(a,p),[4,null==(M=p.afterAddAsSubModel)?void 0:M.call(p)];case 4:O.sent(),O.label=5;case 5:return[4,null==(v=n.modelRepository)||null==(b=v.findOne)?void 0:b.call(v,{uid:u.uid})];case 6:if(O.sent())return[3,8];return[4,u.save()];case 7:O.sent(),O.label=8;case 8:return[4,null==(m=n.modelRepository)||null==(g=m.findOne)?void 0:g.call(m,{uid:l.uid})];case 9:if(O.sent())return[3,11];return[4,null==(_=l.save)?void 0:_.call(l)];case 10:O.sent(),O.label=11;case 11:return[4,p.save()];case 12:if(O.sent(),p.isNew=!1,!("array"===c&&(null==(w=n.modelRepository)?void 0:w.move)))return[3,14];return[4,n.modelRepository.move(p.uid,l.uid,"before")];case 13:O.sent(),O.label=14;case 14:return[4,n.destroyModel(l.uid)];case 15:return O.sent(),[4,u.saveStepParams()];case 16:return O.sent(),[3,28];case 17:if("array"!==c)return[3,19];if(Array.isArray(k=u.subModels[a])||(u.subModels[a]=[],k=u.subModels[a]),x=Math.min(Math.max(s,0),k.length),k.splice(x,0,p),k.forEach(function(e,t){return e.sortIndex=t}),(null==(E=u.getStepParams("gridSettings","grid")||{})?void 0:E.rows)&&"object"===h(E.rows)){R=o().cloneDeep(E.rows),j=!0,T=!1,A=void 0;try{for(F=Object.keys(R)[Symbol.iterator]();!(j=(U=F.next()).done);j=!0)if(D=R[U.value],Array.isArray(D)){for(B=0;B<D.length;B++)if(I=D[B],Array.isArray(I))for(q=0;q<I.length;q++)I[q]===l.uid&&(I[q]=p.uid)}}catch(e){T=!0,A=e}finally{try{j||null==F.return||F.return()}finally{if(T)throw A}}u.setStepParams("gridSettings","grid",{rows:R,sizes:E.sizes||{}}),u.setProps("rows",R)}return[4,null==(P=p.afterAddAsSubModel)?void 0:P.call(p)];case 18:return O.sent(),[3,21];case 19:return u.setSubModel(a,p),[4,null==(N=p.afterAddAsSubModel)?void 0:N.call(p)];case 20:O.sent(),O.label=21;case 21:return[4,p.save()];case 22:if(O.sent(),p.isNew=!1,!("array"===c&&n.modelRepository))return[3,25];return[4,n.modelRepository.findOne({uid:l.uid})];case 23:if(!(O.sent()&&"function"==typeof n.modelRepository.move))return[3,25];return[4,n.modelRepository.move(p.uid,l.uid,"before")];case 24:O.sent(),O.label=25;case 25:return[4,n.destroyModel(l.uid)];case 26:return O.sent(),[4,u.saveStepParams()];case 27:O.sent(),O.label=28;case 28:return e.exit(),[2]}})})()}}}}),S.registerFlow({key:"cardSettings",steps:{}}),S.define({label:f("Reference block"),group:(0,l.escapeT)("Other blocks"),createModelOptions:{use:"ReferenceBlockModel"},sort:900});function P(e){return(P=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function k(e,t){return(k=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function x(e){var t="function"==typeof Map?new Map:void 0;return(x=function(e){if(null===e||-1===Function.toString.call(e).indexOf("[native code]"))return e;if("function"!=typeof e)throw TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,r)}function r(){return _(e,arguments,P(this).constructor)}return r.prototype=Object.create(e.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),k(r,e)})(e)}function E(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(E=function(){return!!e})()}var R=function(e){var t;if("function"!=typeof e&&null!==e)throw TypeError("Super expression must either be null or a function");function r(){var e,t;if(!(this instanceof r))throw TypeError("Cannot call a class as a function");return e=r,t=arguments,e=P(e),function(e,t){var r;if(t&&("object"==((r=t)&&"undefined"!=typeof Symbol&&r.constructor===Symbol?"symbol":typeof r)||"function"==typeof t))return t;if(void 0===e)throw ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(this,E()?Reflect.construct(e,t||[],P(this).constructor):e.apply(this,t))}return r.prototype=Object.create(e&&e.prototype,{constructor:{value:r,writable:!0,configurable:!0}}),e&&k(r,e),t=[{key:"load",value:function(){var e,t=this;return(e=function(){return function(e,t){var r,n,o,i,l={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){var a=[i,u];if(r)throw TypeError("Generator is already executing.");for(;l;)try{if(r=1,n&&(o=2&a[0]?n.return:a[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,a[1])).done)return o;switch(n=0,o&&(a=[2&a[0],o.value]),a[0]){case 0:case 1:o=a;break;case 4:return l.label++,{value:a[1],done:!1};case 5:l.label++,n=a[1],a=[0];continue;case 7:a=l.ops.pop(),l.trys.pop();continue;default:if(!(o=(o=l.trys).length>0&&o[o.length-1])&&(6===a[0]||2===a[0])){l=0;continue}if(3===a[0]&&(!o||a[1]>o[0]&&a[1]<o[3])){l.label=a[1];break}if(6===a[0]&&l.label<o[1]){l.label=o[1],o=a;break}if(o&&l.label<o[2]){l.label=o[2],l.ops.push(a);break}o[2]&&l.ops.pop(),l.trys.pop();continue}a=t.call(e,l)}catch(e){a=[6,e],n=0}finally{r=o=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}}}(this,function(e){return t.flowEngine.registerModels({ReferenceBlockModel:S}),[2]})},function(){var t=this,r=arguments;return new Promise(function(n,o){var i=e.apply(t,r);function l(e){M(i,n,o,l,u,"next",e)}function u(e){M(i,n,o,l,u,"throw",e)}l(void 0)})})()}}],function(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}(r.prototype,t),r}(x(e.Plugin)),j=R}(),a}()});