UNPKG

neo-register

Version:

neo自定义组件注册器(支持 react 和 vue2.0 技术栈),主要用于注册 neo 自定义组件、neo-editor 自定义组件模型。

2 lines 6.57 kB
/*! For license information please see index.umd.js.LICENSE.txt */ !function(e,o){"object"==typeof exports&&"object"==typeof module?module.exports=o():"function"==typeof define&&define.amd?define([],o):"object"==typeof exports?exports.neoRegister=o():e.neoRegister=o()}(this,function(){return function(){"use strict";var e={n:function(o){var r=o&&o.__esModule?function(){return o.default}:function(){return o};return e.d(r,{a:r}),r},d:function(o,r){for(var t in r)e.o(r,t)&&!e.o(o,t)&&Object.defineProperty(o,t,{enumerable:!0,get:r[t]})},o:function(e,o){return Object.prototype.hasOwnProperty.call(e,o)},r:function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},o={};e.r(o),e.d(o,{createVue2Component:function(){return y},registerNeoCmp:function(){return b},registerNeoEditorModel:function(){return u}});var r=require("@babel/runtime/helpers/extends"),t=e.n(r);function n(e,o,r){void 0===r&&(r=!0);var t=function(e,o){void 0===o&&(o=!0);var r=e&&e.__super?Object.create(e.__super,{__super:{value:e.__super,writable:!1,enumerable:!1}}):Object.create(Object.prototype);return o&&e&&Object.keys(e).forEach(function(o){return r[o]=e[o]}),r}(e,r);return o&&Object.keys(o).forEach(function(e){return t[e]=o[e]}),t}var i,s,c="[neo-register]";function u(e,o){if(e&&function(e){var o=!1;if(!e)return!1;var r=new e;return r.label?r.tags?Array.isArray(r.tags)?(r.icon||Object.assign(e.prototype,{icon:"https://neo-widgets.bj.bcebos.com/custom-widget.svg"}),o=!0):console.error(c+" / registerNeoEditorModel: 自定义组件注册失败,组件分类(tags)格式异常。"):console.error(c+" / registerNeoEditorModel: 自定义组件注册失败,组件分类(tags)不能为空。"):console.error(c+" / registerNeoEditorModel: 自定义组件注册失败,名称(label)不能为空。"),o}(e)){var r,t,n=o||(new e).cmpType;n||console.error(c+" / registerNeoEditorModel: 自定义组件注册失败,cmpType 不能为空。");var i=new e;if(Object.assign(e.prototype,{custom:!0,exposedToDesigner:null==(r=i.exposedToDesigner)||r,namespace:null!=(t=i.namespace)?t:"neo-cmp-cli",cmpType:n}),window&&window.postMessage){var s=function(e,o){return window&&!window.NEOEditorCustomModels&&(window.NEOEditorCustomModels={}),window.NEOEditorCustomModels[e]?(console.error(c+"注册自定义组件模型失败,已存在重名插件("+e+")。"),null):(window.NEOEditorCustomModels[e]=o,e)}(n,e);s&&(console.info(c+"触发注册自定义组件模型("+n+")事件"),window.postMessage({type:"neo-model-register-event",eventMsg:c+"注册一个 neo-editor 自定义组件模型",cmpType:n},"*"))}}}!function(e){e.renderer="renderer",e.formitem="formitem"}(i||(i={})),function(e){e.react="react",e.vue2="vue2",e.vue3="vue3",e.jquery="jquery"}(s||(s={}));var a=require("@babel/runtime/helpers/objectWithoutPropertiesLoose"),p=e.n(a),f=require("@babel/runtime/helpers/inheritsLoose"),d=e.n(f),m=require("react"),l=e.n(m),v=require("vue"),w=e.n(v),g=["data"];function y(e){if(e&&("function"==typeof e||"object"==typeof e))return function(o){function r(e,r){var t;return(t=o.call(this,e)||this).domRef=void 0,t.vm=void 0,t.isUnmount=void 0,t.domRef=l().createRef(),t.isUnmount=!1,t.resolveNeoProps=t.resolveNeoProps.bind(t),t}d()(r,o);var i=r.prototype;return i.componentDidMount=function(){var o=this,r=this.resolveNeoProps(),i=r.neoData,s=r.neoMSTData,c=r.neoFunc,u=e="function"==typeof e?new e:e,a=u.data,f=p()(u,g),d=n("function"==typeof a?a():a,i);this.vm=new(w())(t()({},f,{data:function(){return d},props:n(c,t()({},f.props||{},s))})),Object.keys(c).forEach(function(e){o.vm.$props[e]=c[e]}),this.domRef.current&&this.domRef.current.appendChild(this.vm.$mount().$el)},i.componentDidUpdate=function(){var e=this;if(!this.isUnmount){var o=this.resolveNeoProps().neoData;this.vm&&(Object.keys(o).forEach(function(r){e.vm[r]=o[r]}),this.vm.$forceUpdate())}},i.componentWillUnmount=function(){this.isUnmount=!0,this.vm&&this.vm.$destroy()},i.resolveNeoProps=function(){var e=this,o={},r={},t={};return Object.keys(this.props).forEach(function(n){var i,s=e.props[n];"function"==typeof s?o[n]=s:(i=s)&&(i.$treenode||i.$mstObservable||i.$modelType||i.$modelId||"[object Proxy]"===Object.prototype.toString.call(i))?t[n]=s:r[n]=s}),{neoData:r,neoMSTData:t,neoFunc:o}},i.reload=function(){this.vm&&this.vm.reload?this.vm.reload():console.warn("自定义组件暂不支持reload动作。")},i.doAction=function(e,o){this.vm&&this.vm.doAction?this.vm.doAction(e,o):console.warn("自定义组件中不存在 doAction。")},i.render=function(){return l().createElement("div",{ref:this.domRef})},r}(l().Component)}function b(e,o){if(e){var r,t={cmpType:"",usage:i.renderer,weight:0};if(o&&(r=o,"String"===Object.prototype.toString.call(r).slice(8,-1))?Object.assign(t,{cmpType:o}):Object.assign(t,o),t&&!t.cmpType)console.error(c+" / registerNeoCmp: 自定义组件注册失败,cmpType 不能为空。");else{t.framework=t.framework?function(e){var o=s.react;if(!e)return o;var r=e.toLowerCase().trim();switch(r){case"jquery":case"jq":r=s.jquery;break;case"vue2":case"vue 2":case"vue2.0":case"vue 2.0":r=s.vue2;break;case"vue":case"vue3":case"vue 3":case"vue3.0":case"vue 3.0":r=s.vue3,console.error(c+" 暂不支持 vue3.0 技术栈。");break;default:r=s.react}return r}(t.framework):"object"==typeof(f=e)&&(f._compiled&&f.components||f.__file&&f.__file.endsWith(".vue"))?"vue2":"react",t.usage=function(e){var o=i.renderer;if(!e)return o;var r=e.toLowerCase().trim();switch(r){case"renderer":case"renderers":default:r=i.renderer;break;case"formitem":case"form-item":case"form item":r=i.formitem}return r}(t.usage);var n={react:function(e){return e},vue2:y,vue3:y}[t.framework](e);if({renderer:function(){},formitem:function(){}}[t.usage]){if(window&&window.postMessage){var u=(a=t.cmpType,p={cmpType:t.cmpType,weight:t.weight,usage:t.usage,framework:t.framework,component:n,config:t},window&&!window.NeoCustomCmps&&(window.NeoCustomCmps={}),window.NeoCustomCmps[a]?(console.error(c+" / registerNeoCmp: 自定义组件注册失败,已存在重名渲染器("+a+")。"),null):(window.NeoCustomCmps[a]=p,a));u&&(console.info(c+"触发注册自定义组件("+u+")事件"),window.postMessage({type:"neo-cmp-register-event",eventMsg:c+"注册一个自定义组件",neoRenderer:{cmpType:u,weight:t.weight,usage:t.usage,config:t}},"*"))}}else console.error(c+" / registerNeoCmp: 自定义组件注册失败,暂不支持 "+t.usage+" 组件类型。")}}var a,p,f}return o}()});