UNPKG

epic-designer

Version:

基于vue3的设计器,可视化开发页面表单

2 lines (1 loc) 2.32 kB
"use strict";var b=Object.defineProperty;var g=(n,r,e)=>r in n?b(n,r,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[r]=e;var f=(n,r,e)=>g(n,typeof r!="symbol"?r+"":r,e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const N=require("../../../git/epic/epic-designer/node_modules/.pnpm/jsep@1.4.0/node_modules/jsep/dist/jsep.cjs"),h={ABS:n=>Math.abs(n),AVERAGE:(...n)=>h.SUM(...n)/(n.length||1),IF:(n,r,e)=>n?r:e,MAX:(...n)=>Math.max(...n),MIN:(...n)=>Math.min(...n),MU_TO_SQM:n=>n*666.67,SUM:(...n)=>n.reduce((r,e)=>(Number(r)||0)+(Number(e)||0),0)};class v{constructor(r={}){f(this,"context");this.context=r}calculate(r,e={}){if(!r||typeof r!="string")return null;const t={event:{...this.context.event,...e.event},formData:{...this.context.formData,...e.formData},vars:{...this.context.vars,...e.vars}};try{const s=N.default(r);return this._execute(s,t)}catch(s){return console.error("[Epic: 公式解析错误]",s),null}}_applyOperator(r,e,t){switch(r){case"!=":case"!==":return e!==t;case"*":return e*t;case"+":return(Number(e)||0)+(Number(t)||0);case"-":return e-t;case"/":return t===0?0:e/t;case"<":return e<t;case"<=":return e<=t;case"==":case"===":return e===t;case">":return e>t;case">=":return e>=t;default:return 0}}_execute(r,e){switch(r.type){case"BinaryExpression":{const t=r,s=this._execute(t.left,e),a=this._execute(t.right,e);return this._applyOperator(t.operator,s,a)}case"CallExpression":{const t=r,a=t.callee.name.toUpperCase(),l=t.arguments.map(u=>this._execute(u,e)),o=h[a];return o?o(...l):(console.warn(`Function not found: ${a}`),0)}case"Literal":return r.value;case"LogicalExpression":{const t=r,s=this._execute(t.left,e),a=this._execute(t.right,e);return t.operator==="&&"?s&&a:s||a}case"MemberExpression":{const t=r,s=t.property,a=s.name||s.value,l={$event:e.event||{},$formData:e.formData||{},$vars:e.vars||{}};let o=t.object;const u=[a];let p="";for(;o;)if(o.type==="Identifier"){p=o.name;break}else if(o.type==="MemberExpression"){const i=o,m=i.property,y=m.name||m.value;u.unshift(y),o=i.object}else break;let c=l[p]||{};for(const i of u){if(c===null){c=0;break}c=c[i]}return c}case"UnaryExpression":{const t=r,s=this._execute(t.argument,e);return t.operator==="-"?-s:s}default:return console.warn(`Unsupported node type: ${r.type}`),0}}}exports.FormulaEngine=v;