@chief-editor/flow
Version:
Old核心数据流
1 lines • 4.96 kB
JavaScript
var __assign=this&&this.__assign||function(){return(__assign=Object.assign||function(e){for(var r,t=1,n=arguments.length;t<n;t++)for(var o in r=arguments[t])Object.prototype.hasOwnProperty.call(r,o)&&(e[o]=r[o]);return e}).apply(this,arguments)},__spreadArrays=this&&this.__spreadArrays||function(){for(var e=0,r=0,t=arguments.length;r<t;r++)e+=arguments[r].length;var n=Array(e),o=0;for(r=0;r<t;r++)for(var s=arguments[r],i=0,a=s.length;i<a;i++,o++)n[o]=s[i];return n};import{BindType}from"@chief-editor/base";import{transformExpression,transformJson}from"@co-hooks/interpolation";import{NestWatcher}from"@co-hooks/nest-watcher";import{guid}from"@co-hooks/util";import{getAbsoluteKey,getAbsoluteKeys,getRelativeKey}from"./keys";export var interpolationOptions={symbols:[{symbol:"models",direct:!1,level:!1},{symbol:"path",direct:!0,level:!1},{symbol:"brick",direct:!0,level:!1},{symbol:"datasource",direct:!0,level:!1},{symbol:"scope",direct:!1,level:!0},{symbol:"model",direct:!1,level:!0},{symbol:"root",direct:!1,level:!1},{symbol:"input",direct:!0,level:!1},{symbol:"context",direct:!1,level:!1},{symbol:"hooks",direct:!1,level:!1}],call:"hooks",dollar:"models",default:"scope"};export function wrapInterpolation(e,r){try{var t=transformExpression(e,interpolationOptions),n=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return r.getByExpression.apply(r,e)};return{watchers:t.watchers,func:function(o){try{return t.func.call(null,n,r,o)}catch(t){return console.error("execute interpolation failed:\n expr = "+e+"\n error = "+t.message+"\n path = "+getAbsoluteKey(r)+"\n relativePath = "+getRelativeKey(r)+"\n "),console.error(t),console.error(r),console.error("end execute interpolation failed"),null}}}}catch(t){return console.error("compile failed:\n expr = "+e+"\n error = "+t.message+"\n path = "+getAbsoluteKey(r)+"\n relativePath = "+getRelativeKey(r)+"\n "),console.error(t),console.error(r),console.error("end compile failed:"),{watchers:[],func:function(){return null}}}}export function wrapJson(e,r){var t={};try{var n=__assign(__assign({},interpolationOptions),{objectBinding:{key:"__bind__",process:function(e,n){if(e.bindType===BindType.CONST)return transformExpression(JSON.stringify(e.data),interpolationOptions);if(e.bindType===BindType.EXPRESSION)return transformExpression(e.bindJs,interpolationOptions);if(e.bindType===BindType.VAR)return transformExpression(e.bindKey,interpolationOptions);var o=e.func,s=e.async,i=e.watchKeys;if(!s)return transformExpression("$hooks."+o+"()",interpolationOptions);var a=r.getHook(o),l=guid();return null==a&&(console.error("invalid hook func name ",o),a=function(){}),t[l]={watchers:wrapWatcher(i.split("\n"),r),func:wrapFunction(a,r)},transformExpression("$input['"+l+"']",interpolationOptions)}}}),o=transformJson(e,n,[]),s=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return r.getByExpression.apply(r,e)};return{watchers:o.watchers,func:function(t){try{return o.func.call(null,s,r,t,r.datasource)}catch(t){return console.error("execute interpolation failed:\n data = "+JSON.stringify(e)+"\n error = "+t.message+"\n path = "+getAbsoluteKey(r)+"\n relativePath = "+getRelativeKey(r)+"\n "),console.error(t),console.error(r),console.error("end execute interpolation failed"),null}},asyncMap:t}}catch(n){return console.error("compile json failed:\n data = "+JSON.stringify(e)+"\n error = "+n.message+"\n path = "+getAbsoluteKey(r)+"\n relativePath = "+getRelativeKey(r)+"\n "),console.error(n),console.error(r),console.error("end compile json failed"),{watchers:[],func:function(){return null},asyncMap:t}}}export function wrapWatcher(e,r){e.map((function(e){return NestWatcher.splitKey(e)})).filter((function(e){return"hooks"!==e[0]&&"input"!==e[0]}));return e.forEach((function(e){/^\$/.test(e)&&(e=e.slice(1));var t=NestWatcher.splitKey(e),n=t[0];t.slice(1);if("context"===n)return e;if(/^scope(\d+)?/.test(n)){var o=getAbsoluteKeys(r.getNode().parentNode||r.getOwnerTemplate().getNode());return NestWatcher.combineKeys(__spreadArrays([r.getOwnerModel().name],o))}var s=r.getOwnerModel();if(/^model(\d+)?/.test(e[0])){var i=+RegExp.$1||0;s=s.getParentModel(i)}else{if("root"!==e[0])throw new Error("unexpect type:"+e[0]);s=s.getRootModel()}return[s.name].concat(e.slice(1)).join(".")})),[]}export function wrapFunction(e,r){return function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];try{var o=e.call.apply(e,__spreadArrays([r,t[0],r],t.slice(1)));return null!=o&&"object"==typeof o&&"function"==typeof o.then?o:Promise.resolve(o)}catch(e){return Promise.reject(e)}}}