ice-entity-designer 0.3.2 → 0.4.1

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/dist/react.mjs CHANGED
@@ -22,4 +22,4 @@
22
22
  * SOFTWARE.
23
23
  */
24
24
 
25
- import{createContext as e,createElement as t,useContext as n,forwardRef as r,useRef as i,useState as o,useEffect as s,useImperativeHandle as a,Fragment as l}from"react";import{ICEGroup as u,ICEText as c,ICERect as h,ICEPolyLine as d,ICEVisioLink as p,toIsoTime as f,ICEPath as y,Serializer as m,Deserializer as g,exportSvg as _,ICE as b}from"ice-render";const v=e(null);function EntityDesignerProvider(e){return t(v.Provider,{value:e.designer},e.children)}function useEntityDesigner(){return n(v)}const k=e(null);function FlowDesignerProvider(e){return t(k.Provider,{value:e.designer},e.children)}function useFlowDesigner(){return n(k)}var w,C,S="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function getDefaultExportFromCjs(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var T,I,q,j,x,E,$,P,M,O,D,A,N,B,F,z,L,R,H,W,V,U,K,G,J,Q,Z,X,Y,ee,te,ne,re,ie,oe,se,ae,le,ue,ce,he,de,pe,fe,ye,me,ge,_e,be,ve,ke,we,Ce,Se,Te,Ie,qe,je,xe,Ee,$e,Pe,Me,Oe,De,Ae,Ne,Be,Fe,ze,Le,Re,He,We,Ve,Ue,Ke,Ge,Je,Qe,Ze,Xe,Ye,et,tt,nt,rt,it,ot,st,at,lt,ut,ct,ht,dt,pt,ft,yt=getDefaultExportFromCjs(function requireIsNil(){return C?w:(C=1,w=function isNil(e){return null==e})}());function requireEq(){if(j)return q;return j=1,q=function eq(e,t){return e===t||e!=e&&t!=t}}function require_assocIndexOf(){if(E)return x;E=1;var e=requireEq();return x=function assocIndexOf(t,n){for(var r=t.length;r--;)if(e(t[r][0],n))return r;return-1}}function require_ListCache(){if(z)return F;z=1;var e=function require_listCacheClear(){return I?T:(I=1,T=function listCacheClear(){this.__data__=[],this.size=0})}(),t=function require_listCacheDelete(){if(P)return $;P=1;var e=require_assocIndexOf(),t=Array.prototype.splice;return $=function listCacheDelete(n){var r=this.__data__,i=e(r,n);return!(i<0||(i==r.length-1?r.pop():t.call(r,i,1),--this.size,0))}}(),n=function require_listCacheGet(){if(O)return M;O=1;var e=require_assocIndexOf();return M=function listCacheGet(t){var n=this.__data__,r=e(n,t);return r<0?void 0:n[r][1]}}(),r=function require_listCacheHas(){if(A)return D;A=1;var e=require_assocIndexOf();return D=function listCacheHas(t){return e(this.__data__,t)>-1}}(),i=function require_listCacheSet(){if(B)return N;B=1;var e=require_assocIndexOf();return N=function listCacheSet(t,n){var r=this.__data__,i=e(r,t);return i<0?(++this.size,r.push([t,n])):r[i][1]=n,this}}();function ListCache(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}return ListCache.prototype.clear=e,ListCache.prototype.delete=t,ListCache.prototype.get=n,ListCache.prototype.has=r,ListCache.prototype.set=i,F=ListCache}function require_freeGlobal(){if(Q)return J;Q=1;var e="object"==typeof S&&S&&S.Object===Object&&S;return J=e}function require_root(){if(X)return Z;X=1;var e=require_freeGlobal(),t="object"==typeof self&&self&&self.Object===Object&&self,n=e||t||Function("return this")();return Z=n}function require_Symbol(){if(ee)return Y;ee=1;var e=require_root().Symbol;return Y=e}function require_baseGetTag(){if(se)return oe;se=1;var e=require_Symbol(),t=function require_getRawTag(){if(ne)return te;ne=1;var e=require_Symbol(),t=Object.prototype,n=t.hasOwnProperty,r=t.toString,i=e?e.toStringTag:void 0;return te=function getRawTag(e){var t=n.call(e,i),o=e[i];try{e[i]=void 0;var s=!0}catch(e){}var a=r.call(e);return s&&(t?e[i]=o:delete e[i]),a}}(),n=function require_objectToString(){if(ie)return re;ie=1;var e=Object.prototype.toString;return re=function objectToString(t){return e.call(t)}}(),r=e?e.toStringTag:void 0;return oe=function baseGetTag(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":r&&r in Object(e)?t(e):n(e)}}function requireIsObject(){if(le)return ae;return le=1,ae=function isObject(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}}function requireIsFunction(){if(ce)return ue;ce=1;var e=require_baseGetTag(),t=requireIsObject();return ue=function isFunction(n){if(!t(n))return!1;var r=e(n);return"[object Function]"==r||"[object GeneratorFunction]"==r||"[object AsyncFunction]"==r||"[object Proxy]"==r}}function require_isMasked(){if(fe)return pe;fe=1;var e,t=function require_coreJsData(){if(de)return he;de=1;var e=require_root()["__core-js_shared__"];return he=e}(),n=(e=/[^.]+$/.exec(t&&t.keys&&t.keys.IE_PROTO||""))?"Symbol(src)_1."+e:"";return pe=function isMasked(e){return!!n&&n in e}}function require_baseIsNative(){if(_e)return ge;_e=1;var e=requireIsFunction(),t=require_isMasked(),n=requireIsObject(),r=function require_toSource(){if(me)return ye;me=1;var e=Function.prototype.toString;return ye=function toSource(t){if(null!=t){try{return e.call(t)}catch(e){}try{return t+""}catch(e){}}return""}}(),i=/^\[object .+?Constructor\]$/,o=Function.prototype,s=Object.prototype,a=o.toString,l=s.hasOwnProperty,u=RegExp("^"+a.call(l).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");return ge=function baseIsNative(o){return!(!n(o)||t(o))&&(e(o)?u:i).test(r(o))}}function require_getNative(){if(we)return ke;we=1;var e=require_baseIsNative(),t=function require_getValue(){return ve?be:(ve=1,be=function getValue(e,t){return null==e?void 0:e[t]})}();return ke=function getNative(n,r){var i=t(n,r);return e(i)?i:void 0}}function require_Map(){if(Se)return Ce;Se=1;var e=require_getNative()(require_root(),"Map");return Ce=e}function require_nativeCreate(){if(Ie)return Te;Ie=1;var e=require_getNative()(Object,"create");return Te=e}function require_Hash(){if(Be)return Ne;Be=1;var e=function require_hashClear(){if(je)return qe;je=1;var e=require_nativeCreate();return qe=function hashClear(){this.__data__=e?e(null):{},this.size=0}}(),t=function require_hashDelete(){return Ee?xe:(Ee=1,xe=function hashDelete(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t})}(),n=function require_hashGet(){if(Pe)return $e;Pe=1;var e=require_nativeCreate(),t=Object.prototype.hasOwnProperty;return $e=function hashGet(n){var r=this.__data__;if(e){var i=r[n];return"__lodash_hash_undefined__"===i?void 0:i}return t.call(r,n)?r[n]:void 0}}(),r=function require_hashHas(){if(Oe)return Me;Oe=1;var e=require_nativeCreate(),t=Object.prototype.hasOwnProperty;return Me=function hashHas(n){var r=this.__data__;return e?void 0!==r[n]:t.call(r,n)}}(),i=function require_hashSet(){if(Ae)return De;Ae=1;var e=require_nativeCreate();return De=function hashSet(t,n){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=e&&void 0===n?"__lodash_hash_undefined__":n,this}}();function Hash(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}return Hash.prototype.clear=e,Hash.prototype.delete=t,Hash.prototype.get=n,Hash.prototype.has=r,Hash.prototype.set=i,Ne=Hash}function require_getMapData(){if(We)return He;We=1;var e=function require_isKeyable(){return Re?Le:(Re=1,Le=function isKeyable(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e})}();return He=function getMapData(t,n){var r=t.__data__;return e(n)?r["string"==typeof n?"string":"hash"]:r.map}}function require_MapCache(){if(et)return Ye;et=1;var e=function require_mapCacheClear(){if(ze)return Fe;ze=1;var e=require_Hash(),t=require_ListCache(),n=require_Map();return Fe=function mapCacheClear(){this.size=0,this.__data__={hash:new e,map:new(n||t),string:new e}}}(),t=function require_mapCacheDelete(){if(Ue)return Ve;Ue=1;var e=require_getMapData();return Ve=function mapCacheDelete(t){var n=e(this,t).delete(t);return this.size-=n?1:0,n}}(),n=function require_mapCacheGet(){if(Ge)return Ke;Ge=1;var e=require_getMapData();return Ke=function mapCacheGet(t){return e(this,t).get(t)}}(),r=function require_mapCacheHas(){if(Qe)return Je;Qe=1;var e=require_getMapData();return Je=function mapCacheHas(t){return e(this,t).has(t)}}(),i=function require_mapCacheSet(){if(Xe)return Ze;Xe=1;var e=require_getMapData();return Ze=function mapCacheSet(t,n){var r=e(this,t),i=r.size;return r.set(t,n),this.size+=r.size==i?0:1,this}}();function MapCache(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}return MapCache.prototype.clear=e,MapCache.prototype.delete=t,MapCache.prototype.get=n,MapCache.prototype.has=r,MapCache.prototype.set=i,Ye=MapCache}function require_Stack(){if(it)return rt;it=1;var e=require_ListCache(),t=function require_stackClear(){if(R)return L;R=1;var e=require_ListCache();return L=function stackClear(){this.__data__=new e,this.size=0}}(),n=function require_stackDelete(){return W?H:(W=1,H=function stackDelete(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n})}(),r=function require_stackGet(){return U?V:(U=1,V=function stackGet(e){return this.__data__.get(e)})}(),i=function require_stackHas(){return G?K:(G=1,K=function stackHas(e){return this.__data__.has(e)})}(),o=function require_stackSet(){if(nt)return tt;nt=1;var e=require_ListCache(),t=require_Map(),n=require_MapCache();return tt=function stackSet(r,i){var o=this.__data__;if(o instanceof e){var s=o.__data__;if(!t||s.length<199)return s.push([r,i]),this.size=++o.size,this;o=this.__data__=new n(s)}return o.set(r,i),this.size=o.size,this}}();function Stack(t){var n=this.__data__=new e(t);this.size=n.size}return Stack.prototype.clear=t,Stack.prototype.delete=n,Stack.prototype.get=r,Stack.prototype.has=i,Stack.prototype.set=o,rt=Stack}function require_defineProperty(){if(st)return ot;st=1;var e=require_getNative(),t=function(){try{var t=e(Object,"defineProperty");return t({},"",{}),t}catch(e){}}();return ot=t}function require_baseAssignValue(){if(lt)return at;lt=1;var e=require_defineProperty();return at=function baseAssignValue(t,n,r){"__proto__"==n&&e?e(t,n,{configurable:!0,enumerable:!0,value:r,writable:!0}):t[n]=r}}function require_assignMergeValue(){if(ct)return ut;ct=1;var e=require_baseAssignValue(),t=requireEq();return ut=function assignMergeValue(n,r,i){(void 0!==i&&!t(n[r],i)||void 0===i&&!(r in n))&&e(n,r,i)}}function require_baseFor(){if(ft)return pt;ft=1;var e=function require_createBaseFor(){return dt?ht:(dt=1,ht=function createBaseFor(e){return function(t,n,r){for(var i=-1,o=Object(t),s=r(t),a=s.length;a--;){var l=s[e?a:++i];if(!1===n(o[l],l,o))break}return t}})}()();return pt=e}var mt,gt,_t,bt,vt,kt,wt,Ct,St,Tt,It,qt,jt,xt,Et,$t,Pt,Mt,Ot,Dt,At,Nt,Bt,Ft,zt,Lt,Rt,Ht,Wt,Vt,Ut,Kt,Gt,Jt={exports:{}};function require_cloneArrayBuffer(){if(vt)return bt;vt=1;var e=function require_Uint8Array(){if(_t)return gt;_t=1;var e=require_root().Uint8Array;return gt=e}();return bt=function cloneArrayBuffer(t){var n=new t.constructor(t.byteLength);return new e(n).set(new e(t)),n}}function require_getPrototype(){if(Et)return xt;Et=1;var e=function require_overArg(){return jt?qt:(jt=1,qt=function overArg(e,t){return function(n){return e(t(n))}})}()(Object.getPrototypeOf,Object);return xt=e}function require_isPrototype(){if(Pt)return $t;Pt=1;var e=Object.prototype;return $t=function isPrototype(t){var n=t&&t.constructor;return t===("function"==typeof n&&n.prototype||e)}}function require_initCloneObject(){if(Ot)return Mt;Ot=1;var e=function require_baseCreate(){if(It)return Tt;It=1;var e=requireIsObject(),t=Object.create,n=function(){function object(){}return function(n){if(!e(n))return{};if(t)return t(n);object.prototype=n;var r=new object;return object.prototype=void 0,r}}();return Tt=n}(),t=require_getPrototype(),n=require_isPrototype();return Mt=function initCloneObject(r){return"function"!=typeof r.constructor||n(r)?{}:e(t(r))}}function requireIsObjectLike(){if(At)return Dt;return At=1,Dt=function isObjectLike(e){return null!=e&&"object"==typeof e}}function requireIsArguments(){if(zt)return Ft;zt=1;var e=function require_baseIsArguments(){if(Bt)return Nt;Bt=1;var e=require_baseGetTag(),t=requireIsObjectLike();return Nt=function baseIsArguments(n){return t(n)&&"[object Arguments]"==e(n)}}(),t=requireIsObjectLike(),n=Object.prototype,r=n.hasOwnProperty,i=n.propertyIsEnumerable,o=e(function(){return arguments}())?e:function(e){return t(e)&&r.call(e,"callee")&&!i.call(e,"callee")};return Ft=o}function requireIsArray(){if(Rt)return Lt;Rt=1;var e=Array.isArray;return Lt=e}function requireIsLength(){if(Wt)return Ht;Wt=1;return Ht=function isLength(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}}function requireIsArrayLike(){if(Ut)return Vt;Ut=1;var e=requireIsFunction(),t=requireIsLength();return Vt=function isArrayLike(n){return null!=n&&t(n.length)&&!e(n)}}var Qt,Zt,Xt,Yt,en,tn,nn,rn,on,sn={exports:{}};function requireIsBuffer(){return Xt||(Xt=1,function(e,t){var n=require_root(),r=function requireStubFalse(){return Zt?Qt:(Zt=1,Qt=function stubFalse(){return!1})}(),i=t&&!t.nodeType&&t,o=i&&e&&!e.nodeType&&e,s=o&&o.exports===i?n.Buffer:void 0,a=(s?s.isBuffer:void 0)||r;e.exports=a}(sn,sn.exports)),sn.exports}var an,ln,un,cn,hn,dn,pn,fn,yn,mn,gn,_n,bn,vn,kn,wn,Cn,Sn,Tn,In,qn,jn,xn,En,$n,Pn,Mn,On,Dn,An,Nn,Bn,Fn,zn,Ln,Rn,Hn,Wn,Vn,Un,Kn,Gn,Jn,Qn,Zn,Xn,Yn,er,tr,nr={exports:{}};function requireIsTypedArray(){if(un)return ln;un=1;var e=function require_baseIsTypedArray(){if(nn)return tn;nn=1;var e=require_baseGetTag(),t=requireIsLength(),n=requireIsObjectLike(),r={};return r["[object Float32Array]"]=r["[object Float64Array]"]=r["[object Int8Array]"]=r["[object Int16Array]"]=r["[object Int32Array]"]=r["[object Uint8Array]"]=r["[object Uint8ClampedArray]"]=r["[object Uint16Array]"]=r["[object Uint32Array]"]=!0,r["[object Arguments]"]=r["[object Array]"]=r["[object ArrayBuffer]"]=r["[object Boolean]"]=r["[object DataView]"]=r["[object Date]"]=r["[object Error]"]=r["[object Function]"]=r["[object Map]"]=r["[object Number]"]=r["[object Object]"]=r["[object RegExp]"]=r["[object Set]"]=r["[object String]"]=r["[object WeakMap]"]=!1,tn=function baseIsTypedArray(i){return n(i)&&t(i.length)&&!!r[e(i)]}}(),t=function require_baseUnary(){return on?rn:(on=1,rn=function baseUnary(e){return function(t){return e(t)}})}(),n=function require_nodeUtil(){return an||(an=1,e=nr,t=nr.exports,n=require_freeGlobal(),r=t&&!t.nodeType&&t,i=r&&e&&!e.nodeType&&e,o=i&&i.exports===r&&n.process,s=function(){try{return i&&i.require&&i.require("util").types||o&&o.binding&&o.binding("util")}catch(e){}}(),e.exports=s),nr.exports;var e,t,n,r,i,o,s}(),r=n&&n.isTypedArray,i=r?t(r):e;return ln=i}function require_safeGet(){if(hn)return cn;return hn=1,cn=function safeGet(e,t){if(("constructor"!==t||"function"!=typeof e[t])&&"__proto__"!=t)return e[t]}}function require_copyObject(){if(yn)return fn;yn=1;var e=function require_assignValue(){if(pn)return dn;pn=1;var e=require_baseAssignValue(),t=requireEq(),n=Object.prototype.hasOwnProperty;return dn=function assignValue(r,i,o){var s=r[i];n.call(r,i)&&t(s,o)&&(void 0!==o||i in r)||e(r,i,o)}}(),t=require_baseAssignValue();return fn=function copyObject(n,r,i,o){var s=!i;i||(i={});for(var a=-1,l=r.length;++a<l;){var u=r[a],c=o?o(i[u],n[u],u,i,n):void 0;void 0===c&&(c=n[u]),s?t(i,u,c):e(i,u,c)}return i}}function require_isIndex(){if(bn)return _n;bn=1;var e=/^(?:0|[1-9]\d*)$/;return _n=function isIndex(t,n){var r=typeof t;return!!(n=null==n?9007199254740991:n)&&("number"==r||"symbol"!=r&&e.test(t))&&t>-1&&t%1==0&&t<n}}function require_arrayLikeKeys(){if(kn)return vn;kn=1;var e=function require_baseTimes(){return gn?mn:(gn=1,mn=function baseTimes(e,t){for(var n=-1,r=Array(e);++n<e;)r[n]=t(n);return r})}(),t=requireIsArguments(),n=requireIsArray(),r=requireIsBuffer(),i=require_isIndex(),o=requireIsTypedArray(),s=Object.prototype.hasOwnProperty;return vn=function arrayLikeKeys(a,l){var u=n(a),c=!u&&t(a),h=!u&&!c&&r(a),d=!u&&!c&&!h&&o(a),p=u||c||h||d,f=p?e(a.length,String):[],y=f.length;for(var m in a)!l&&!s.call(a,m)||p&&("length"==m||h&&("offset"==m||"parent"==m)||d&&("buffer"==m||"byteLength"==m||"byteOffset"==m)||i(m,y))||f.push(m);return f}}function require_baseKeysIn(){if(Tn)return Sn;Tn=1;var e=requireIsObject(),t=require_isPrototype(),n=function require_nativeKeysIn(){return Cn?wn:(Cn=1,wn=function nativeKeysIn(e){var t=[];if(null!=e)for(var n in Object(e))t.push(n);return t})}(),r=Object.prototype.hasOwnProperty;return Sn=function baseKeysIn(i){if(!e(i))return n(i);var o=t(i),s=[];for(var a in i)("constructor"!=a||!o&&r.call(i,a))&&s.push(a);return s}}function requireKeysIn(){if(qn)return In;qn=1;var e=require_arrayLikeKeys(),t=require_baseKeysIn(),n=requireIsArrayLike();return In=function keysIn(r){return n(r)?e(r,!0):t(r)}}function require_baseMergeDeep(){if($n)return En;$n=1;var e=require_assignMergeValue(),t=function require_cloneBuffer(){return mt||(mt=1,e=Jt,t=Jt.exports,n=require_root(),r=t&&!t.nodeType&&t,i=r&&e&&!e.nodeType&&e,o=i&&i.exports===r?n.Buffer:void 0,s=o?o.allocUnsafe:void 0,e.exports=function cloneBuffer(e,t){if(t)return e.slice();var n=e.length,r=s?s(n):new e.constructor(n);return e.copy(r),r}),Jt.exports;var e,t,n,r,i,o,s}(),n=function require_cloneTypedArray(){if(wt)return kt;wt=1;var e=require_cloneArrayBuffer();return kt=function cloneTypedArray(t,n){var r=n?e(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.length)}}(),r=function require_copyArray(){return St?Ct:(St=1,Ct=function copyArray(e,t){var n=-1,r=e.length;for(t||(t=Array(r));++n<r;)t[n]=e[n];return t})}(),i=require_initCloneObject(),o=requireIsArguments(),s=requireIsArray(),a=function requireIsArrayLikeObject(){if(Gt)return Kt;Gt=1;var e=requireIsArrayLike(),t=requireIsObjectLike();return Kt=function isArrayLikeObject(n){return t(n)&&e(n)}}(),l=requireIsBuffer(),u=requireIsFunction(),c=requireIsObject(),h=function requireIsPlainObject(){if(en)return Yt;en=1;var e=require_baseGetTag(),t=require_getPrototype(),n=requireIsObjectLike(),r=Function.prototype,i=Object.prototype,o=r.toString,s=i.hasOwnProperty,a=o.call(Object);return Yt=function isPlainObject(r){if(!n(r)||"[object Object]"!=e(r))return!1;var i=t(r);if(null===i)return!0;var l=s.call(i,"constructor")&&i.constructor;return"function"==typeof l&&l instanceof l&&o.call(l)==a}}(),d=requireIsTypedArray(),p=require_safeGet(),f=function requireToPlainObject(){if(xn)return jn;xn=1;var e=require_copyObject(),t=requireKeysIn();return jn=function toPlainObject(n){return e(n,t(n))}}();return En=function baseMergeDeep(y,m,g,_,b,v,k){var w=p(y,g),C=p(m,g),S=k.get(C);if(S)e(y,g,S);else{var T=v?v(w,C,g+"",y,m,k):void 0,I=void 0===T;if(I){var q=s(C),j=!q&&l(C),x=!q&&!j&&d(C);T=C,q||j||x?s(w)?T=w:a(w)?T=r(w):j?(I=!1,T=t(C,!0)):x?(I=!1,T=n(C,!0)):T=[]:h(C)||o(C)?(T=w,o(w)?T=f(w):c(w)&&!u(w)||(T=i(C))):I=!1}I&&(k.set(C,T),b(T,C,_,v,k),k.delete(C)),e(y,g,T)}}}function requireIdentity(){if(Dn)return On;return Dn=1,On=function identity(e){return e}}function require_overRest(){if(Fn)return Bn;Fn=1;var e=function require_apply(){return Nn?An:(Nn=1,An=function apply(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)})}(),t=Math.max;return Bn=function overRest(n,r,i){return r=t(void 0===r?n.length-1:r,0),function(){for(var o=arguments,s=-1,a=t(o.length-r,0),l=Array(a);++s<a;)l[s]=o[r+s];s=-1;for(var u=Array(r+1);++s<r;)u[s]=o[s];return u[r]=i(l),e(n,this,u)}},Bn}function require_baseSetToString(){if(Hn)return Rn;Hn=1;var e=function requireConstant(){return Ln?zn:(Ln=1,zn=function constant(e){return function(){return e}})}(),t=require_defineProperty(),n=requireIdentity();return Rn=t?function(n,r){return t(n,"toString",{configurable:!0,enumerable:!1,value:e(r),writable:!0})}:n}function require_setToString(){if(Kn)return Un;Kn=1;var e=require_baseSetToString(),t=function require_shortOut(){if(Vn)return Wn;Vn=1;var e=Date.now;return Wn=function shortOut(t){var n=0,r=0;return function(){var i=e(),o=16-(i-r);if(r=i,o>0){if(++n>=800)return arguments[0]}else n=0;return t.apply(void 0,arguments)}},Wn}(),n=t(e);return Un=n}function require_createAssigner(){if(Yn)return Xn;Yn=1;var e=function require_baseRest(){if(Jn)return Gn;Jn=1;var e=requireIdentity(),t=require_overRest(),n=require_setToString();return Gn=function baseRest(r,i){return n(t(r,i,e),r+"")}}(),t=function require_isIterateeCall(){if(Zn)return Qn;Zn=1;var e=requireEq(),t=requireIsArrayLike(),n=require_isIndex(),r=requireIsObject();return Qn=function isIterateeCall(i,o,s){if(!r(s))return!1;var a=typeof o;return!!("number"==a?t(s)&&n(o,s.length):"string"==a&&o in s)&&e(s[o],i)}}();return Xn=function createAssigner(n){return e(function(e,r){var i=-1,o=r.length,s=o>1?r[o-1]:void 0,a=o>2?r[2]:void 0;for(s=n.length>3&&"function"==typeof s?(o--,s):void 0,a&&t(r[0],r[1],a)&&(s=o<3?void 0:s,o=1),e=Object(e);++i<o;){var l=r[i];l&&n(e,l,i,s)}return e})}}var rr=function requireMerge(){if(tr)return er;tr=1;var e=function require_baseMerge(){if(Mn)return Pn;Mn=1;var e=require_Stack(),t=require_assignMergeValue(),n=require_baseFor(),r=require_baseMergeDeep(),i=requireIsObject(),o=requireKeysIn(),s=require_safeGet();return Pn=function baseMerge(a,l,u,c,h){a!==l&&n(l,function(n,o){if(h||(h=new e),i(n))r(a,l,o,u,baseMerge,c,h);else{var d=c?c(s(a,o),n,o+"",a,l,h):void 0;void 0===d&&(d=n),t(a,o,d)}},o)},Pn}(),t=require_createAssigner()(function(t,n,r){e(t,n,r)});return er=t}(),ir=getDefaultExportFromCjs(rr);class Entity extends u{static typeId="ice-entity-designer:Entity";hasDerivedChildren(){return!0}entityFieldsComponent=[];constructor(e){super(Entity.arrangeParam(e)),this.syncEntityNameAndFields()}static arrangeParam(e){const t=ir({entityName:"Entity Name",fields:[],style:{strokeStyle:"#334155",fillStyle:"#ffffff",radius:8,lineWidth:1.5},headerStyle:{textColor:"#0f172a",backgroundColor:"#f1f5f9",fontSize:18,fontWeight:"bold",paddingTop:12,paddingLeft:14,paddingRight:14,paddingBottom:12},fieldStyle:{textColor:"#334155",fontSize:16,fontWeight:"normal",paddingTop:9,paddingLeft:14,paddingRight:14},dividerStyle:{strokeStyle:"#cbd5e1",fillStyle:"#cbd5e1",lineWidth:1}},e,{transformable:!1});return yt(t.entityName)&&(t.entityName="Entity Name"),yt(t.fields)&&(t.fields=[]),t}syncEntityNameAndFields(){if(this.entityNameComponent&&(this.removeChild(this.entityNameComponent),this.entityNameComponent=null),this.headerBackgroundComponent&&(this.removeChild(this.headerBackgroundComponent),this.headerBackgroundComponent=null),this.deviderLine&&(this.removeChild(this.deviderLine),this.deviderLine=null),this.entityFieldsComponent.length&&(this.removeChildren(this.entityFieldsComponent),this.entityFieldsComponent.length=0),this.state.entityName){if(this.entityNameComponent=new c({left:0,top:0,text:this.state.entityName,style:{strokeStyle:this.state.headerStyle.textColor,fillStyle:this.state.headerStyle.textColor,fontSize:this.state.headerStyle.fontSize,fontWeight:this.state.headerStyle.fontWeight,paddingTop:this.state.headerStyle.paddingTop,paddingLeft:this.state.headerStyle.paddingLeft,paddingRight:this.state.headerStyle.paddingRight,paddingBottom:this.state.headerStyle.paddingBottom},interactive:!1,linkable:!1,stroke:!1,showMinBoundingBox:!1,showMaxBoundingBox:!1}),this.state.headerStyle.backgroundColor&&"none"!==this.state.headerStyle.backgroundColor){const e=this.state.style.lineWidth||1.5,t=e/2;this.headerBackgroundComponent=new h({left:t,top:t,width:Math.max(this.state.width-e,0),height:Math.max(this.entityNameComponent.state.height-t,0),zIndex:this.entityNameComponent.state.zIndex-1,origin:"top-left",style:{fillStyle:this.state.headerStyle.backgroundColor,radius:Math.max((this.state.style.radius||0)-t,0),lineWidth:0},interactive:!1,linkable:!1,stroke:!1,showMinBoundingBox:!1,showMaxBoundingBox:!1}),this.addChild(this.headerBackgroundComponent)}this.addChild(this.entityNameComponent),this.deviderLine=new d({left:0,top:0,points:[[0,0],[this.state.width,0]],style:{strokeStyle:this.state.dividerStyle.strokeStyle,fillStyle:this.state.dividerStyle.fillStyle,lineWidth:this.state.dividerStyle.lineWidth},interactive:!1,linkable:!1}),this.addChild(this.deviderLine)}if(!yt(this.state.fields)){const e=this.state.fields.length;for(let t=0;t<e;t++){const n=this.state.fields[t],r=this.fieldDisplay(n),i=new c({left:0,top:0,text:r.text,style:{strokeStyle:this.state.fieldStyle.textColor,fillStyle:this.state.fieldStyle.textColor,fontSize:this.state.fieldStyle.fontSize,fontWeight:this.state.fieldStyle.fontWeight,paddingTop:this.state.fieldStyle.paddingTop,paddingLeft:this.state.fieldStyle.paddingLeft,paddingRight:this.state.fieldStyle.paddingRight,paddingBottom:t===e-1?12:0},interactive:!1,linkable:!1,stroke:!1,showMinBoundingBox:!1,showMaxBoundingBox:!1});this.entityFieldsComponent.push(i)}this.addChildren(this.entityFieldsComponent)}}fieldDisplay(e){const t=[];e.primary&&t.push("PK"),e.foreignKey&&t.push("FK");const n=[];e.unique&&n.push("UQ"),e.autoIncrement&&n.push("AI"),!1===e.nullable&&n.push("NN");const r=t.length?`${t.join(" ")} `:"",i=e.type?`${e.type}${e.length?`(${e.length})`:""}`:"",o=n.length?` ${n.join(" ")}`:"",s=void 0!==e.default?` = ${e.default}`:"",a=e.comment?` // ${e.comment}`:"";return{text:`${r}${e.name}${i?` ${i}`:""}${o}${s}${a}`}}calcComponentParams(){let e=this.state.width,t=0,n=0,r=0;this.entityNameComponent&&(r=this.entityNameComponent.state.height,t=r,e=Math.max(e,this.entityNameComponent.state.width),t+=this.deviderLine.state.height,n=t);for(let n=0;n<this.entityFieldsComponent.length;n++){const r=this.entityFieldsComponent[n];r.state.left=0,r.state.top=t,t+=r.state.height,e=Math.max(e,r.state.width)}if(this.deviderLine&&(this.deviderLine.state.points=[[0,n],[e,n]]),this.headerBackgroundComponent){const t=this.state.style.lineWidth||1.5,n=t/2;this.headerBackgroundComponent.state.left=n,this.headerBackgroundComponent.state.top=n,this.headerBackgroundComponent.state.width=Math.max(e-t,0),this.headerBackgroundComponent.state.height=Math.max(r-n,0)}const i=e,o=Math.max(t,this.state.height);return this.state.width=i,this.state.height=o,{width:i,height:o}}toEntityObject(){const e={name:this.state.entityName,columns:{}};return this.state.fields.forEach(t=>{const n={};void 0!==t.type&&(n.type=t.type),void 0!==t.length&&(n.length=t.length),t.primary&&(n.primary=!0),t.generated&&(n.generated=!0),t.autoIncrement&&(n.generated=!0,n.strategy="increment"),!1===t.nullable&&(n.nullable=!1),t.unique&&(n.unique=!0),void 0!==t.default&&(n.default=t.default),void 0!==t.comment&&(n.comment=t.comment),t.index&&(n.index=!0),e.columns[t.name]=n}),e}setState(e){const t=!yt(e.fields)||!yt(e.entityName);super.setState(e),t&&this.syncEntityNameAndFields()}addField(e){const t=[...this.state.fields||[],e];return this.setFields(t),this}removeField(e){const t=(this.state.fields||[]).filter(t=>t.name!==e);return this.setFields(t),this}setFields(e){return this.setState({fields:e}),this}}class Relation extends p{static typeId="ice-entity-designer:Relation";hasDerivedChildren(){return!0}constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const t=Relation.normalizeLinks(e||{}),n=t.relationType||"one-to-one",r=Relation.composeLabel(t,n);super({title:"Relation",transformable:!1,relationType:n,referencedColumnName:"id",sourceField:"id",targetField:"id",arrow:t.arrow||Relation.defaultArrow(n),...t,label:r,style:{...t.style||{},label:{fontSize:14,fillStyle:"#334155",backgroundColor:"#ffffff",...t.labelStyle||{},...(t.style||{}).label||{}}}})}static defaultArrow(e){switch(e){case"one-to-many":return"end";case"many-to-one":return"start";default:return"none"}}static normalizeLinks(e){if(!e||!e.links)return e||{};const t={top:"T",right:"R",bottom:"B",left:"L",center:"C"},n={...e.links};return n.start&&t[n.start.position]&&(n.start={...n.start,position:t[n.start.position]}),n.end&&t[n.end.position]&&(n.end={...n.end,position:t[n.end.position]}),{...e,links:n}}static cardinalityLabel(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const n={"one-to-many":["1","N"],"many-to-one":["N","1"],"many-to-many":["N","N"],"one-to-one":["1","1"]},[r,i]=n[e]||n["one-to-one"];return`${t.sourceCardinality||r} : ${t.targetCardinality||i}`}static composeLabel(e,t){return e.label?e.label:Relation.buildLabel(e,t)}static buildLabel(e,t){const n=[];e.onDelete&&n.push(`ON DELETE ${e.onDelete}`),e.onUpdate&&n.push(`ON UPDATE ${e.onUpdate}`);const r=Relation.cardinalityLabel(t,e);return n.length?`${r} (${n.join(", ")})`:r}toEntityObject(){const{title:e,relationType:t,referencedColumnName:n,sourceField:r,targetField:i,nullable:o,onDelete:s,onUpdate:a,joinTableName:l,fromKey:u,toKey:c}=this.state;let h,d,p,f,y,m;this.state.links&&this.state.links.start&&this.state.links.start.id&&(p=this.state.links.start.id,h=this.ice.findComponent(p),f=h.state.entityName),this.state.links&&this.state.links.end&&this.state.links.end.id&&(y=this.state.links.end.id,d=this.ice.findComponent(y),m=d.state.entityName);return{title:e,fromId:p,fromName:f,toId:y,toName:m,relationType:t,referencedColumnName:n,sourceField:r,targetField:i,nullable:!1!==o&&void 0,onDelete:s,onUpdate:a,joinTableName:l,fromKey:u,toKey:c}}}function applyDesignerChrome(e){if(!e||"function"!=typeof e.setChrome)return e;const t="function"==typeof e.getTheme?e.getTheme():null;return e.setChrome(function designerChromeFromTheme(e){const t=e&&e.semantic||{},n=t.primary||"#0D6EFD",r=t.success||"#198754",i=t.warning||"#FFC107";return{selection:{stroke:n,fill:withAlpha(n,.12),lineWidth:1,lineDash:[]},handle:{fill:n,stroke:"#ffffff",activeFill:i,lineWidth:1},linkHook:{fill:r,stroke:"#ffffff",lineWidth:1},slot:{fill:r,stroke:"#ffffff",hoverFill:i,lineWidth:1},guide:{color:n,lineWidth:1},textSelection:{color:withAlpha(n,.28)}}}(t)),e}function withAlpha(e,t){if("string"!=typeof e)return e;const n=e.trim();if("#"===n.charAt(0)){let e=n.slice(1);if(3===e.length&&(e=e[0]+e[0]+e[1]+e[1]+e[2]+e[2]),6!==e.length)return n;return`rgba(${parseInt(e.slice(0,2),16)},${parseInt(e.slice(2,4),16)},${parseInt(e.slice(4,6),16)},${t})`}return 0===n.indexOf("rgb(")?n.replace("rgb(","rgba(").replace(")",`,${t})`):n}function typeIdOf(e){const t=e&&e.constructor;return t&&"string"==typeof t.typeId?t.typeId:void 0}function isEntity(e){return typeIdOf(e)===Entity.typeId}function isRelation(e){return typeIdOf(e)===Relation.typeId}const or="data",sr=[{key:"display",type:"boolean"},{key:"zIndex",type:"number"},{key:"opacity",type:"number",doc:"子树不透明度(引擎 1.3 起)"},{key:"transform",type:"object"},{key:"origin",type:"string"},{key:"originX",type:"number"},{key:"originY",type:"number"},{key:"lineDash",type:"array"},{key:"lineDashOffset",type:"number"},{key:"lineDashFlow",type:"boolean"},{key:"lineDashFlowSpeed",type:"number"},{key:"lineBorder",type:"boolean"},{key:"lineBorderWidth",type:"number"},{key:"lineBorderColor",type:"string"},{key:"fill",type:"boolean"},{key:"stroke",type:"boolean"},{key:"linkable",type:"boolean"},{key:"linkEditable",type:"boolean"},{key:"transformable",type:"boolean"},{key:"animations",type:"object"}],ar=[{key:"id",type:"string",required:!0},{key:"typeId",type:"string"},{key:"left",type:"number"},{key:"top",type:"number"},{key:"width",type:"number"},{key:"height",type:"number"},{key:"relationType",type:"string"},{key:"referencedColumnName",type:"string"},{key:"sourceField",type:"string"},{key:"targetField",type:"string"},{key:"nullable",type:"boolean"},{key:"onDelete",type:"string"},{key:"onUpdate",type:"string"},{key:"joinTableName",type:"string"},{key:"fromKey",type:"string"},{key:"toKey",type:"string"},{key:"sourceCardinality",type:"string"},{key:"targetCardinality",type:"string"},{key:"label",type:"string"},{key:"style.label",type:"object",doc:"标签外观(引擎 2.4 起归到 style.label)"},{key:"style",type:"object"},{key:"arrow",type:"string"},{key:"lineType",type:"string"},{key:"escapeDistance",type:"number"},{key:"routeType",type:"string"},{key:"routeOffset",type:"number"},{key:"curveType",type:"string"},{key:"linkShape",type:"string",doc:"连线形态(visio/bezier)"},{key:"lineDash",type:"array"},{key:"lineWidth",type:"number"},{key:"arrowLength",type:"number"},{key:"arrowAngel",type:"number"},{key:"arrowStyle",type:"string"},{key:"startPoint",type:"array"},{key:"endPoint",type:"array"},{key:"links",type:"object",validate:function validateLinks(e,t,n){["start","end"].forEach(r=>{const i=e[r];void 0!==i&&(i&&"object"==typeof i&&!Array.isArray(i)?(void 0!==i.id&&"string"!=typeof i.id&&n.push(`${t}.${r}.id must be a string when present`),void 0!==i.position&&"string"!=typeof i.position&&n.push(`${t}.${r}.position must be a string when present`)):n.push(`${t}.${r} must be an object when present`))})}},{key:"sourceId",type:"string",doc:"连线起点宿主 id(与 links.start.id 同步)"},{key:"targetId",type:"string",doc:"连线终点宿主 id(与 links.end.id 同步)"},{key:"draggable",type:"boolean"},{key:"interactive",type:"boolean"},{key:"showMinBoundingBox",type:"boolean"},{key:"showMaxBoundingBox",type:"boolean"}],lr=[...[{key:"id",type:"string",required:!0},{key:"typeId",type:"string"},{key:"left",type:"number"},{key:"top",type:"number"},{key:"width",type:"number"},{key:"height",type:"number"},{key:"entityName",type:"string",required:!0},{key:"fields",type:"array",validate:function validateFields(e,t,n){e.forEach((e,r)=>{e&&"object"==typeof e&&!Array.isArray(e)?void 0!==e.name&&"string"!=typeof e.name&&n.push(`${t}[${r}].name must be a string when present`):n.push(`${t}[${r}] must be an object`)})}},{key:"style",type:"object"},{key:"headerStyle",type:"object"},{key:"fieldStyle",type:"object"},{key:"dividerStyle",type:"object"},{key:"draggable",type:"boolean"},{key:"interactive",type:"boolean"},{key:"showMinBoundingBox",type:"boolean"},{key:"showMaxBoundingBox",type:"boolean"}],...sr],ur=[...ar,...sr];function pickDocumentNode(e,t){const n={};t.forEach(t=>{const r=e?e[t.key]:void 0;void 0!==r&&(n[t.key]=r)});const r=e?e[or]:void 0;return void 0!==r&&(n[or]=r),n}function validateDocumentNode(e,t,n,r){e&&"object"==typeof e&&!Array.isArray(e)?n.forEach(n=>{const i=e[n.key];void 0!==i?!function typeMatches(e,t){switch(t){case void 0:case"any":return!0;case"array":return Array.isArray(e);case"object":return!!e&&"object"==typeof e&&!Array.isArray(e);case"number":return"number"==typeof e;case"boolean":return"boolean"==typeof e;default:return"string"==typeof e}}(i,n.type)?r.push(`${t}.${n.key} must be a ${n.type} when present`):n.validate&&n.validate(i,`${t}.${n.key}`,r):n.required&&r.push(`${t}.${n.key} is required`)}):r.push(`${t} must be an object`)}const cr=[{key:"id",type:"string",required:!0},{key:"typeId",type:"string"}];function validateNode(e,t,n,r){if(!e||"object"!=typeof e||Array.isArray(e))return void r.push(`${t} must be an object`);const i=void 0===e.typeId?n:e.typeId;!function isEntityTypeId(e){return e===Entity.typeId}(i)?!function isRelationTypeId(e){return e===Relation.typeId}(i)?validateDocumentNode(e,t,cr,r):validateDocumentNode(e,t,ur,r):validateDocumentNode(e,t,lr,r)}function validateSchema(e){const t=[],n=e.filter(isEntity),r=e.filter(isRelation),i=new Map;return n.forEach(e=>{const n=(e.state.entityName||"").trim();if(!n)return void t.push({level:"error",message:"存在未命名的 Entity",componentId:e.state.id});i.has(n)||i.set(n,[]),i.get(n).push(e);const r=e.state.fields||[];0===r.length&&t.push({level:"warning",message:`Entity "${n}" 没有任何字段`,componentId:e.state.id});const o=new Set;r.forEach(r=>{const i=(r.name||"").trim();i?o.has(i)?t.push({level:"error",message:`Entity "${n}" 存在重复字段 "${i}"`,componentId:e.state.id}):o.add(i):t.push({level:"error",message:`Entity "${n}" 存在未命名字段`,componentId:e.state.id}),r.type||t.push({level:"warning",message:`Entity "${n}" 的字段 "${i||"(未命名)"}" 未设置类型`,componentId:e.state.id})})}),i.forEach((e,n)=>{e.length>1&&t.push({level:"error",message:`存在重复的 Entity 名称 "${n}"`})}),r.forEach(e=>{const r=e.state.links||{},i=r.start&&r.start.id,o=r.end&&r.end.id,s=e.state.relationType;if(!i||!o)return void t.push({level:"error",message:"存在没有完整起点/终点的 Relation",componentId:e.state.id});const a=n.some(e=>e.state.id===i),l=n.some(e=>e.state.id===o);a&&l||t.push({level:"error",message:"Relation 连接到了不存在的 Entity",componentId:e.state.id}),s?"many-to-many"!==s||e.state.joinTableName||t.push({level:"warning",message:"many-to-many 关系建议设置 joinTableName",componentId:e.state.id}):t.push({level:"error",message:"Relation 未设置关系类型",componentId:e.state.id})}),t}function toWords(e){return function convertToString(e){const t=e||"";return"string"==typeof t?t:String(t)}(e).match(/[A-Z\xC0-\xD6\xD8-\xDE]?[a-z\xDF-\xF6\xF8-\xFF]+|[A-Z\xC0-\xD6\xD8-\xDE]+(?![a-z\xDF-\xF6\xF8-\xFF])|\d+/g)||[]}function camelCase(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return function toCamelCase(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n="";for(let r=0,i=e.length;r<i;r++){let i=e[r].toLowerCase();(t||0!==r)&&(i=i.substr(0,1).toUpperCase()+i.substr(1)),n+=i}return n}(toWords(e),t)}var hr=[],dr=[],pr={},fr={},yr={};function sanitizeRule(e){return"string"==typeof e?new RegExp("^"+e+"$","i"):e}function restoreCase(e,t){return e===t?t:e===e.toLowerCase()?t.toLowerCase():e===e.toUpperCase()?t.toUpperCase():e[0]===e[0].toUpperCase()?t.charAt(0).toUpperCase()+t.substr(1).toLowerCase():t.toLowerCase()}function replace(e,t){return e.replace(t[0],function(n,r){var i=function interpolate(e,t){return e.replace(/\$(\d{1,2})/g,function(e,n){return t[n]||""})}(t[1],arguments);return restoreCase(""===n?e[r-1]:n,i)})}function sanitizeWord(e,t,n){if(!e.length||pr.hasOwnProperty(e))return t;for(var r=n.length;r--;){var i=n[r];if(i[0].test(t))return replace(t,i)}return t}function replaceWord(e,t,n){return function(r){var i=r.toLowerCase();return t.hasOwnProperty(i)?restoreCase(r,i):e.hasOwnProperty(i)?restoreCase(r,e[i]):sanitizeWord(i,r,n)}}function checkWord(e,t,n){return function(r){var i=r.toLowerCase();return!!t.hasOwnProperty(i)||!e.hasOwnProperty(i)&&sanitizeWord(i,i,n)===i}}function pluralize(e,t,n){return(n?t+" ":"")+(1===t?pluralize.singular(e):pluralize.plural(e))}pluralize.plural=replaceWord(yr,fr,hr),pluralize.isPlural=checkWord(yr,fr,hr),pluralize.singular=replaceWord(fr,yr,dr),pluralize.isSingular=checkWord(fr,yr,dr),pluralize.addPluralRule=function(e,t){hr.push([sanitizeRule(e),t])},pluralize.addSingularRule=function(e,t){dr.push([sanitizeRule(e),t])},pluralize.addUncountableRule=function(e){"string"!=typeof e?(pluralize.addPluralRule(e,"$0"),pluralize.addSingularRule(e,"$0")):pr[e.toLowerCase()]=!0},pluralize.addIrregularRule=function(e,t){t=t.toLowerCase(),e=e.toLowerCase(),yr[e]=t,fr[t]=e},[["I","we"],["me","us"],["he","they"],["she","they"],["them","them"],["myself","ourselves"],["yourself","yourselves"],["itself","themselves"],["herself","themselves"],["himself","themselves"],["themself","themselves"],["is","are"],["was","were"],["has","have"],["this","these"],["that","those"],["echo","echoes"],["dingo","dingoes"],["volcano","volcanoes"],["tornado","tornadoes"],["torpedo","torpedoes"],["genus","genera"],["viscus","viscera"],["stigma","stigmata"],["stoma","stomata"],["dogma","dogmata"],["lemma","lemmata"],["schema","schemata"],["anathema","anathemata"],["ox","oxen"],["axe","axes"],["die","dice"],["yes","yeses"],["foot","feet"],["eave","eaves"],["goose","geese"],["tooth","teeth"],["quiz","quizzes"],["human","humans"],["proof","proofs"],["carve","carves"],["valve","valves"],["looey","looies"],["thief","thieves"],["groove","grooves"],["pickaxe","pickaxes"],["passerby","passersby"]].forEach(function(e){return pluralize.addIrregularRule(e[0],e[1])}),[[/s?$/i,"s"],[/[^\u0000-\u007F]$/i,"$0"],[/([^aeiou]ese)$/i,"$1"],[/(ax|test)is$/i,"$1es"],[/(alias|[^aou]us|t[lm]as|gas|ris)$/i,"$1es"],[/(e[mn]u)s?$/i,"$1s"],[/([^l]ias|[aeiou]las|[ejzr]as|[iu]am)$/i,"$1"],[/(alumn|syllab|vir|radi|nucle|fung|cact|stimul|termin|bacill|foc|uter|loc|strat)(?:us|i)$/i,"$1i"],[/(alumn|alg|vertebr)(?:a|ae)$/i,"$1ae"],[/(seraph|cherub)(?:im)?$/i,"$1im"],[/(her|at|gr)o$/i,"$1oes"],[/(agend|addend|millenni|dat|extrem|bacteri|desiderat|strat|candelabr|errat|ov|symposi|curricul|automat|quor)(?:a|um)$/i,"$1a"],[/(apheli|hyperbat|periheli|asyndet|noumen|phenomen|criteri|organ|prolegomen|hedr|automat)(?:a|on)$/i,"$1a"],[/sis$/i,"ses"],[/(?:(kni|wi|li)fe|(ar|l|ea|eo|oa|hoo)f)$/i,"$1$2ves"],[/([^aeiouy]|qu)y$/i,"$1ies"],[/([^ch][ieo][ln])ey$/i,"$1ies"],[/(x|ch|ss|sh|zz)$/i,"$1es"],[/(matr|cod|mur|sil|vert|ind|append)(?:ix|ex)$/i,"$1ices"],[/\b((?:tit)?m|l)(?:ice|ouse)$/i,"$1ice"],[/(pe)(?:rson|ople)$/i,"$1ople"],[/(child)(?:ren)?$/i,"$1ren"],[/eaux$/i,"$0"],[/m[ae]n$/i,"men"],["thou","you"]].forEach(function(e){return pluralize.addPluralRule(e[0],e[1])}),[[/s$/i,""],[/(ss)$/i,"$1"],[/(wi|kni|(?:after|half|high|low|mid|non|night|[^\w]|^)li)ves$/i,"$1fe"],[/(ar|(?:wo|[ae])l|[eo][ao])ves$/i,"$1f"],[/ies$/i,"y"],[/\b([pl]|zomb|(?:neck|cross)?t|coll|faer|food|gen|goon|group|lass|talk|goal|cut)ies$/i,"$1ie"],[/\b(mon|smil)ies$/i,"$1ey"],[/\b((?:tit)?m|l)ice$/i,"$1ouse"],[/(seraph|cherub)im$/i,"$1"],[/(x|ch|ss|sh|zz|tto|go|cho|alias|[^aou]us|t[lm]as|gas|(?:her|at|gr)o|[aeiou]ris)(?:es)?$/i,"$1"],[/(analy|diagno|parenthe|progno|synop|the|empha|cri|ne)(?:sis|ses)$/i,"$1sis"],[/(movie|twelve|abuse|e[mn]u)s$/i,"$1"],[/(test)(?:is|es)$/i,"$1is"],[/(alumn|syllab|vir|radi|nucle|fung|cact|stimul|termin|bacill|foc|uter|loc|strat)(?:us|i)$/i,"$1us"],[/(agend|addend|millenni|dat|extrem|bacteri|desiderat|strat|candelabr|errat|ov|symposi|curricul|quor)a$/i,"$1um"],[/(apheli|hyperbat|periheli|asyndet|noumen|phenomen|criteri|organ|prolegomen|hedr|automat)a$/i,"$1on"],[/(alumn|alg|vertebr)ae$/i,"$1a"],[/(cod|mur|sil|vert|ind)ices$/i,"$1ex"],[/(matr|append)ices$/i,"$1ix"],[/(pe)(rson|ople)$/i,"$1rson"],[/(child)ren$/i,"$1"],[/(eau)x?$/i,"$1"],[/men$/i,"man"]].forEach(function(e){return pluralize.addSingularRule(e[0],e[1])}),["adulthood","advice","agenda","aid","aircraft","alcohol","ammo","analytics","anime","athletics","audio","bison","blood","bream","buffalo","butter","carp","cash","chassis","chess","clothing","cod","commerce","cooperation","corps","debris","diabetes","digestion","elk","energy","equipment","excretion","expertise","firmware","flounder","fun","gallows","garbage","graffiti","hardware","headquarters","health","herpes","highjinks","homework","housework","information","jeans","justice","kudos","labour","literature","machinery","mackerel","mail","media","mews","moose","music","mud","manga","news","only","personnel","pike","plankton","pliers","police","pollution","premises","rain","research","rice","salmon","scissors","series","sewage","shambles","shrimp","software","species","staff","swine","tennis","traffic","transportation","trout","tuna","wealth","welfare","whiting","wildebeest","wildlife","you",/pok[eé]mon$/i,/[^aeiou]ese$/i,/deer$/i,/fish$/i,/measles$/i,/o[iu]s$/i,/pox$/i,/sheep$/i].forEach(pluralize.addUncountableRule);const mr={number:"int",int:"int",integer:"int",smallint:"smallint",bigint:"bigint",float:"float",double:"double",real:"real",decimal:"decimal",numeric:"numeric",string:"varchar",varchar:"varchar",char:"char",text:"text",boolean:"boolean",bool:"boolean",date:"date",datetime:"datetime",timestamp:"timestamp",time:"time",json:"json",jsonb:"jsonb",uuid:"uuid",enum:"enum",blob:"blob",binary:"blob","simple-array":"simple-array","simple-json":"simple-json"},gr=["varchar","char","nvarchar","nchar","text","uuid"];function normalizeColumn(e){const t={},n=function mapColumnType(e){if(null==e||""===e)return;const t=String(e).toLowerCase();return mr[t]||String(e)}(e.type);if(void 0!==n&&(t.type=n),void 0!==e.length&&null!==e.length&&""!==e.length){const r=String(e.length).trim();if("decimal"===n||"numeric"===n){const[e,n]=r.split(",").map(e=>e.trim());e&&(t.precision=Number(e)),n&&(t.scale=Number(n))}else n&&gr.indexOf(n)>=0&&(t.length=e.length)}return e.primary&&(t.primary=!0),e.generated&&(t.generated=!0),e.autoIncrement&&(t.generated=!0,t.strategy="increment"),void 0!==e.strategy&&(t.strategy=e.strategy),!1===e.nullable&&(t.nullable=!1),e.unique&&(t.unique=!0),void 0!==e.default&&(t.default=e.default),void 0!==e.comment&&(t.comment=e.comment),e.index&&(t.index=!0),t}function normalizeColumns(e){const t={};return Object.keys(e||{}).forEach(n=>{t[n]=normalizeColumn(e[n])}),t}function buildJoinColumn(e,t){return{name:e||t||"id",referencedColumnName:t||"id"}}function toSchemaObject(e){const t=[...e],n=[],r={};for(let e=0;e<t.length;e++){const i=t[e];if(isRelation(i))n.push(i);else if(isEntity(i)){const e=i.toEntityObject();e.columns=normalizeColumns(e.columns),r[i.state.id]=e}}for(let e=0;e<n.length;e++){const t=n[e],{fromId:i,fromName:o,toId:s,toName:a,relationType:l,referencedColumnName:u,sourceField:c,targetField:h,nullable:d,onDelete:p,onUpdate:f,joinTableName:y,fromKey:m,toKey:g}=t.toEntityObject(),_=r[i],b=r[s];if(!_||!b)continue;_.relations||(_.relations={}),b.relations||(b.relations={});const v=m||camelCase(a),k=g||camelCase(o),w={};!1===d&&(w.nullable=!1),p&&(w.onDelete=p),f&&(w.onUpdate=f),"one-to-one"===l?(b.relations[k]={type:l,target:o,joinColumn:buildJoinColumn(h||u,c||u),...w},_.relations[v]={type:l,target:a,inverseSide:k}):"one-to-many"===l?(_.relations[v]={type:l,target:a,inverseSide:k},b.relations[k]={type:"many-to-one",target:o,joinColumn:buildJoinColumn(h||u,c||u),...w}):"many-to-one"===l?(_.relations[v]={type:l,target:a,joinColumn:buildJoinColumn(c||u,h||u),...w},b.relations[k]={type:"one-to-many",target:o,inverseSide:v}):"many-to-many"===l&&(_.relations[`${pluralize(v)}`]={type:l,target:a,joinTable:!y||{name:y}},b.relations[`${pluralize(k)}`]={type:l,target:o,inverseSide:`${pluralize(v)}`})}const i=[];for(const e in r)i.push(r[e]);return i}function toSchemaString(e){return JSON.stringify(toSchemaObject(e))}function registerIEDType(e,t){e.registerType(t.typeId,t)}class EntityDesigner{selectedId=null;__changeListeners=[];__mousedownHandler=e=>this.__handleMouseDown(e);__undoStack=[];__redoStack=[];__historyEnabled=!0;__maxHistory=100;constructor(e){this.ice=e,applyDesignerChrome(this.ice),registerIEDType(this.ice,Entity),registerIEDType(this.ice,Relation),this.ice.evtBus.on("mousedown",this.__mousedownHandler,this)}get entities(){return this.ice.childNodes.filter(e=>isEntity(e))}get relations(){return this.ice.childNodes.filter(e=>isRelation(e))}get selected(){return this.selectedId?this.ice.findComponent(this.selectedId):null}select(e){return this.selectedId=e,this}createEntity(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.captureHistory();const t=this.entities.length,n=new Entity({left:120+t%4*220,top:120+260*Math.floor(t/4),entityName:"NewEntity",fields:[],...e});return this.ice.addChild(n),this.select(n.state.id),this.__emitChange(),n}createRelation(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.captureHistory();const t=e.links||{start:{id:e.sourceId||e.fromId,position:e.startPosition||"R"},end:{id:e.targetId||e.toId,position:e.endPosition||"L"}},n=e.sourceId||e.fromId||t.start&&t.start.id,r=e.targetId||e.toId||t.end&&t.end.id,i=t.start&&t.start.position||e.startPosition||"R",o=t.end&&t.end.position||e.endPosition||"L",s=n?this.ice.findComponent(n):null,a=r?this.ice.findComponent(r):null,l=s?this.__slotPoint(s,i):null,u=a?this.__slotPoint(a,o):null,c=new Relation({relationType:e.relationType||"one-to-many",sourceField:e.sourceField||"id",targetField:e.targetField||"id",links:t,startPoint:l||[0,0],endPoint:u||[10,10],...e});return this.ice.addChild(c),this.select(c.state.id),this.__emitChange(),c}updateEntity(e,t){const n=this.ice.findComponent(e);return isEntity(n)&&(this.captureHistory(),n.setState(t),this.__emitChange()),n}updateRelation(e,t){const n=this.ice.findComponent(e);if(isRelation(n)){this.captureHistory();const e={...n.state,...t},r=Relation.buildLabel(e,e.relationType||"one-to-one");n.setState({...t,label:r}),this.__emitChange()}return n}removeComponent(e){const t=this.ice.findComponent(e);if(t){if(this.captureHistory(),isEntity(t)){this.relations.filter(t=>{const n=t.state.links||{};return n.start&&n.start.id===e||n.end&&n.end.id===e}).forEach(e=>this.ice.removeChild(e))}this.ice.removeChild(t),this.selectedId===e&&(this.selectedId=null),this.__emitChange()}}toSchemaObject(){return toSchemaObject(this.ice.childNodes)}toSchemaString(){return toSchemaString(this.ice.childNodes)}validate(){return validateSchema(this.ice.childNodes)}serializeProject(){const e={version:1,schemaVersion:1,createTime:f(this.ice&&this.ice.documentMeta&&this.ice.documentMeta.createTime)||this.__rememberCreateTime(void 0),entities:this.entities.map(e=>this.__entitySnapshot(e)),relations:this.relations.map(e=>this.__relationSnapshot(e))};return JSON.stringify(e)}__rememberCreateTime(e){const t=this.ice;t&&"object"==typeof t&&(t.documentMeta&&"object"==typeof t.documentMeta||(t.documentMeta={}));const n=f(e);if(n)return t&&t.documentMeta&&(t.documentMeta.createTime=n),n;const r=(new Date).toISOString();return t&&t.documentMeta&&(t.documentMeta.createTime=r),r}loadProject(e){if(!e)return{loaded:!1,entities:0,relations:0,unknownTypes:[],skipped:[]};const t=this.__parseProject(e);if(!t)return{loaded:!1,entities:0,relations:0,unknownTypes:[],skipped:[]};this.captureHistory();const n=this.__applySnapshot(t);return this.__emitChange(),n}__entitySnapshot(e){return pickDocumentNode({...e.state||{},typeId:Entity.typeId},lr)}__slotPoint(e,t){const n=e.getMinBoundingBox(!0),r=n.center[0],i=n.center[1];switch(t){case"T":return[r,n.tl[1]];case"B":return[r,n.br[1]];case"L":return[n.tl[0],i];case"R":return[n.tr[0],i];default:return[r,i]}}__relationSnapshot(e){return pickDocumentNode({...e.state||{},typeId:Relation.typeId},ur)}__parseProject(e){const t=JSON.parse(e);if(!t||!Array.isArray(t.entities))return null;if(void 0!==t.schemaVersion&&1!==t.schemaVersion)throw new Error(`Unsupported project schemaVersion: ${t.schemaVersion}`);const n=function validateProjectSnapshot(e){const t=[];return!e||"object"!=typeof e||Array.isArray(e)?{valid:!1,errors:["root must be an object"]}:(void 0!==e.schemaVersion&&"number"!=typeof e.schemaVersion&&t.push("schemaVersion must be a number when present"),void 0!==e.createTime&&"string"!=typeof e.createTime&&t.push("createTime must be a string when present"),Array.isArray(e.entities)?e.entities.forEach((e,n)=>{validateNode(e,`entities[${n}]`,Entity.typeId,t)}):t.push("entities must be an array"),void 0===e.relations||Array.isArray(e.relations)?Array.isArray(e.relations)&&e.relations.forEach((e,n)=>{validateNode(e,`relations[${n}]`,Relation.typeId,t)}):t.push("relations must be an array when present"),{valid:0===t.length,errors:t})}(t);if(!n.valid)throw new Error(`Invalid project snapshot:\n${n.errors.join("\n")}`);return t}__applyProject(e){const t=this.__parseProject(e);t&&this.__applySnapshot(t)}__resolveTypeId(e,t){return e&&"string"==typeof e.typeId&&e.typeId?e.typeId:"entities"===t?Entity.typeId:Relation.typeId}__resolveComponentClass(e){const t=this.ice;if("function"==typeof t.getType){const n=t.getType(e);if("function"==typeof n)return n}else if(t.typeMapping&&"function"==typeof t.typeMapping[e])return t.typeMapping[e];return e===Entity.typeId?Entity:e===Relation.typeId?Relation:null}__recordUnknownType(e,t,n,r,i){-1===e.unknownTypes.indexOf(r)&&e.unknownTypes.push(r);const o=i&&"string"==typeof i.id?i.id:void 0;e.skipped.push(void 0===o?{bucket:t,index:n,typeId:r}:{bucket:t,index:n,typeId:r,id:o})}__applySnapshot(e){const t=this.ice.renderer;t&&t.stop();const n={loaded:!0,entities:0,relations:0,unknownTypes:[],skipped:[]};try{this.ice.clearAll(),this.__rememberCreateTime(e&&e.createTime),this.ice.ctx&&"function"==typeof this.ice.ctx.clearRect&&(this.ice.ctx.setTransform(1,0,0,1,0,0),this.ice.ctx.clearRect(0,0,this.ice.canvasWidth||0,this.ice.canvasHeight||0));const createNode=(e,t,r)=>{const i=this.__resolveTypeId(e,t),o=this.__resolveComponentClass(i);if("function"!=typeof o)return this.__recordUnknownType(n,t,r,i,e),null;const s=new o(e);return delete s.state.typeId,delete s.props.typeId,this.ice.addChild(s),s},collect=(e,t,r)=>{const i=createNode(e,t,r);isEntity(i)?n.entities+=1:isRelation(i)&&(n.relations+=1)};e.entities.forEach((e,t)=>collect(e,"entities",t)),(e.relations||[]).forEach((e,t)=>collect(e,"relations",t)),this.selectedId=null}finally{if(t){const e=t.getRenderMode();t.setRenderMode("full"),t.start(),this.ice.dirty=!0,setTimeout(()=>{t.setRenderMode(e)},50)}}return n}__applyHistorySnapshot(e){this.__historyEnabled=!1;try{this.__applyProject(e),this.selectedId=null}finally{this.__historyEnabled=!0}}canUndo(){return this.__undoStack.length>0}canRedo(){return this.__redoStack.length>0}captureHistory(){this.__historyEnabled&&(this.__undoStack.push(this.serializeProject()),this.__undoStack.length>this.__maxHistory&&this.__undoStack.shift(),this.__redoStack.length=0)}undo(){if(!this.canUndo())return;const e=this.serializeProject(),t=this.__undoStack.pop();try{this.__applyHistorySnapshot(t)}catch(e){throw this.__undoStack.push(t),e}this.__redoStack.push(e),this.__emitChange()}redo(){if(!this.canRedo())return;const e=this.serializeProject(),t=this.__redoStack.pop();try{this.__applyHistorySnapshot(t)}catch(e){throw this.__redoStack.push(t),e}this.__undoStack.push(e),this.__emitChange()}subscribe(e){return"function"!=typeof e?()=>{}:(this.__changeListeners.push(e),()=>{const t=this.__changeListeners.indexOf(e);-1!==t&&this.__changeListeners.splice(t,1)})}__emitChange(){if(!this.__changeListeners.length)return;const e=this.serializeProject();this.__changeListeners.slice().forEach(t=>t(e))}dispose(){this.ice.evtBus.off("mousedown",this.__mousedownHandler,this)}__handleMouseDown(e){const t=e&&e.param&&e.param.component;if(!t)return;let n=t;for(;n.parentNode;)n=n.parentNode;(isEntity(n)||isRelation(n))&&this.select(n.state.id)}}function createEmptyPath$1(e){const t=e.path2D&&e.path2D.constructor;return t?new t:null}function createEmptyPath(e){const t=e.path2D&&e.path2D.constructor;return t?new t:null}function localBox(e){return{w:e.state.width,h:e.state.height,x:0-e.state.localOrigin[0],y:0-e.state.localOrigin[1]}}class BpmnTaskIcon extends y{static typeId="ice-entity-designer:BpmnTaskIcon";createPathObject(){const{w:e,h:t,x:n,y:r}=localBox(this),i=createEmptyPath(this);if(!i)return this.path2D;const o=n+e/2,s=r+t/2,a=Math.min(e,t)/2,l=this.state.taskType||"none";if("user"===l)i.moveTo(o,s-a),i.arc(o,s-.35*a,.34*a,0,2*Math.PI),i.moveTo(o-.62*a,s+.72*a),i.arc(o,s+.72*a,.62*a,Math.PI,0);else if("service"===l){const e=8;for(let t=0;t<e;t++){const n=t*Math.PI*2/e,r=o+Math.cos(n)*a*.55,l=s+Math.sin(n)*a*.55,u=o+Math.cos(n)*a,c=s+Math.sin(n)*a;i.moveTo(r,l),i.lineTo(u,c)}i.moveTo(o+.34*a,s),i.arc(o,s,.34*a,0,2*Math.PI)}else"script"===l?(i.moveTo(o-.7*a,s-.85*a),i.lineTo(o+.7*a,s-.85*a),i.lineTo(o+.7*a,s+.5*a),i.moveTo(o-.7*a,s-.85*a),i.lineTo(o-.7*a,s+.5*a),i.moveTo(o-.7*a,s+.6*a),i.lineTo(o-.25*a,s+.85*a),i.lineTo(o+.25*a,s+.6*a),i.lineTo(o+.7*a,s+.85*a)):"send"===l?(i.moveTo(o-.85*a,s-.55*a),i.lineTo(o+.85*a,s-.55*a),i.lineTo(o+.85*a,s+.55*a),i.lineTo(o-.85*a,s+.55*a),i.closePath(),i.moveTo(o-.85*a,s-.55*a),i.lineTo(o,s+.12*a),i.lineTo(o+.85*a,s-.55*a)):"receive"===l?(i.moveTo(o-.85*a,s-.55*a),i.lineTo(o+.85*a,s-.55*a),i.lineTo(o+.85*a,s+.55*a),i.lineTo(o-.85*a,s+.55*a),i.closePath()):"manual"===l&&(i.moveTo(o-.7*a,s+.6*a),i.lineTo(o-.45*a,s-.5*a),i.lineTo(o+.45*a,s-.5*a),i.lineTo(o+.7*a,s+.6*a),i.closePath());return this.path2D=i,this.path2D}}class BpmnSubprocessMarker extends y{static typeId="ice-entity-designer:BpmnSubprocessMarker";createPathObject(){const{w:e,h:t,x:n,y:r}=localBox(this),i=createEmptyPath(this);return i?(i.moveTo(n,r),i.lineTo(n+e,r),i.lineTo(n+e,r+t),i.lineTo(n,r+t),i.closePath(),i.moveTo(n+e/2,r+.22*t),i.lineTo(n+e/2,r+.78*t),i.moveTo(n+.22*e,r+t/2),i.lineTo(n+.78*e,r+t/2),this.path2D=i,this.path2D):this.path2D}}const _r={terminator:{label:"开始 / 结束",width:180,height:60,fill:"#dcfce7",stroke:"#16a34a",radius:30,shape:"rect"},process:{label:"处理",width:220,height:80,fill:"#e0e7ff",stroke:"#4f46e5",radius:10,shape:"rect"},decision:{label:"判定",width:200,height:120,fill:"#fef3c7",stroke:"#d97706",shape:"diamond"},io:{label:"输入 / 输出",width:220,height:80,fill:"#e0f2fe",stroke:"#0284c7",shape:"parallelogram"},bpmnEvent:{label:"事件",width:56,height:56,fill:"#ffffff",stroke:"#475569",shape:"event",lineWidth:1.4,eventKind:"start",trigger:"none",labelPlacement:"top-left"},bpmnTask:{label:"任务",width:180,height:90,fill:"#ffffff",stroke:"#64748b",radius:10,shape:"rect",taskType:"none",labelPlacement:"center"},bpmnGateway:{label:"网关",width:70,height:70,fill:"#ffffff",stroke:"#64748b",shape:"gateway",gatewayType:"exclusive",labelPlacement:"top-left"},bpmnSubprocess:{label:"子流程",width:200,height:110,fill:"#ffffff",stroke:"#64748b",radius:10,shape:"rect",labelPlacement:"center"},bpmnDataObject:{label:"数据对象",width:130,height:80,fill:"#ffffff",stroke:"#64748b",shape:"dataObject",labelPlacement:"center"},bpmnAnnotation:{label:"注释",width:200,height:80,fill:"#ffffff",stroke:"#64748b",shape:"annotation",lineDash:[],labelPlacement:"center"},bpmnPool:{label:"池",width:900,height:260,fill:"#f8fafc",stroke:"#94a3b8",shape:"lane",band:"top",bandSize:32,labelPlacement:"top-left"},bpmnLane:{label:"泳道",width:900,height:130,fill:"#ffffff",stroke:"#cbd5e1",shape:"lane",band:"left",bandSize:32,labelPlacement:"top-left",transparent:!0}},br=["bpmnPool","bpmnLane","bpmnAnnotation","bpmnDataObject"],vr={rect:h,diamond:class FlowDiamond extends y{static typeId="ice-entity-designer:FlowDiamond";createPathObject(){const e=this.state.width,t=this.state.height,n=0-this.state.localOrigin[0],r=0-this.state.localOrigin[1],i=createEmptyPath$1(this);return i?(i.moveTo(n+e/2,r),i.lineTo(n+e,r+t/2),i.lineTo(n+e/2,r+t),i.lineTo(n,r+t/2),i.closePath(),this.path2D=i,this.path2D):this.path2D}},parallelogram:class FlowParallelogram extends y{static typeId="ice-entity-designer:FlowParallelogram";createPathObject(){const e=this.state.width,t=this.state.height,n=Math.min(28,.18*e),r=0-this.state.localOrigin[0],i=0-this.state.localOrigin[1],o=createEmptyPath$1(this);return o?(o.moveTo(r+n,i),o.lineTo(r+e,i),o.lineTo(r+e-n,i+t),o.lineTo(r,i+t),o.closePath(),this.path2D=o,this.path2D):this.path2D}},event:class BpmnEventShape extends y{static typeId="ice-entity-designer:BpmnEventShape";createPathObject(){const{w:e,h:t,x:n,y:r}=localBox(this),i=createEmptyPath(this);if(!i)return this.path2D;const o=n+e/2,s=r+t/2,a=Math.min(e,t)/2,l=this.state.eventKind||"start";i.arc(o,s,a,0,2*Math.PI),"intermediate"!==l&&"end"!==l||(i.moveTo(o+.84*a,s),i.arc(o,s,.84*a,0,2*Math.PI));const u=this.state.trigger||"none";if("message"===u){const e=1.1*a,t=.78*a;i.moveTo(o-e/2,s-t/2),i.lineTo(o+e/2,s-t/2),i.lineTo(o+e/2,s+t/2),i.lineTo(o-e/2,s+t/2),i.closePath(),i.moveTo(o-e/2,s-t/2),i.lineTo(o,s+.08*t),i.lineTo(o+e/2,s-t/2)}else if("timer"===u){const e=.52*a;i.moveTo(o+e,s),i.arc(o,s,e,0,2*Math.PI),i.moveTo(o,s),i.lineTo(o,s-.62*e),i.moveTo(o,s),i.lineTo(o+.5*e,s)}else"error"===u?(i.moveTo(o+.34*a,s-.62*a),i.lineTo(o-.42*a,s+.06*a),i.lineTo(o-.02*a,s+.06*a),i.lineTo(o-.3*a,s+.66*a),i.lineTo(o+.44*a,s-.02*a),i.lineTo(o+.04*a,s-.02*a),i.closePath()):"terminate"===u&&(i.moveTo(o+.5*a,s),i.arc(o,s,.5*a,0,2*Math.PI));return this.path2D=i,this.path2D}},gateway:class BpmnGatewayShape extends y{static typeId="ice-entity-designer:BpmnGatewayShape";createPathObject(){const{w:e,h:t,x:n,y:r}=localBox(this),i=createEmptyPath(this);if(!i)return this.path2D;const o=n+e/2,s=r+t/2,a=e/2,l=t/2;i.moveTo(o,s-l),i.lineTo(o+a,s),i.lineTo(o,s+l),i.lineTo(o-a,s),i.closePath();const u=this.state.gatewayType||"exclusive",c=.42*Math.min(a,l);if("exclusive"===u)i.moveTo(o-c,s-c),i.lineTo(o+c,s+c),i.moveTo(o+c,s-c),i.lineTo(o-c,s+c);else if("parallel"===u)i.moveTo(o-c,s),i.lineTo(o+c,s),i.moveTo(o,s-c),i.lineTo(o,s+c);else if("inclusive"===u)i.moveTo(o+c,s),i.arc(o,s,c,0,2*Math.PI);else if("event"===u){const e=1.15*c;for(let t=0;t<5;t++){const n=-Math.PI/2+t*Math.PI*2/5,r=o+Math.cos(n)*e,a=s+Math.sin(n)*e;0===t?i.moveTo(r,a):i.lineTo(r,a)}i.closePath()}return this.path2D=i,this.path2D}},dataObject:class BpmnDataObjectShape extends y{static typeId="ice-entity-designer:BpmnDataObjectShape";createPathObject(){const{w:e,h:t,x:n,y:r}=localBox(this),i=createEmptyPath(this);if(!i)return this.path2D;const o=Math.min(14,.22*e,.32*t);return i.moveTo(n,r),i.lineTo(n+e-o,r),i.lineTo(n+e,r+o),i.lineTo(n+e,r+t),i.lineTo(n,r+t),i.closePath(),i.moveTo(n+e-o,r),i.lineTo(n+e-o,r+o),i.lineTo(n+e,r+o),this.path2D=i,this.path2D}},annotation:class BpmnAnnotationShape extends y{static typeId="ice-entity-designer:BpmnAnnotationShape";createPathObject(){const{w:e,h:t,x:n,y:r}=localBox(this),i=createEmptyPath(this);if(!i)return this.path2D;const o=Math.min(16,.3*e);return i.moveTo(n,r),i.lineTo(n+e,r),i.lineTo(n+e,r+t),i.lineTo(n,r+t),i.closePath(),i.moveTo(n+o,r),i.lineTo(n,r),i.lineTo(n,r+t),i.lineTo(n+o,r+t),this.path2D=i,this.path2D}},lane:class BpmnLaneShape extends y{static typeId="ice-entity-designer:BpmnLaneShape";createPathObject(){const{w:e,h:t,x:n,y:r}=localBox(this),i=createEmptyPath(this);if(!i)return this.path2D;const o=Math.min(this.state.bandSize||30,.4*e,.4*t);return i.moveTo(n,r),i.lineTo(n+e,r),i.lineTo(n+e,r+t),i.lineTo(n,r+t),i.closePath(),"top"===(this.state.band||"left")?(i.moveTo(n,r+o),i.lineTo(n+e,r+o)):(i.moveTo(n+o,r),i.lineTo(n+o,r+t)),this.path2D=i,this.path2D}}},kr="#0f172a";class FlowNode extends u{static typeId="ice-entity-designer:FlowNode";shapeComponent=null;labelComponent=null;decorationComponents=[];hasDerivedChildren(){return!0}getSerializableChildren(){const e=[this.shapeComponent,this.labelComponent,...this.decorationComponents||[]];return this.childNodes.filter(t=>-1===e.indexOf(t))}constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const t=_r[e.kind]?e.kind:"process",n=_r[t];super({kind:t,title:n.label,fillColor:n.fill,strokeColor:n.stroke,textColor:kr,fontSize:14,width:n.width,height:n.height,fill:!1,stroke:!1,draggable:!0,interactive:!0,transformable:!1,linkable:-1===br.indexOf(t),...e}),this.__buildShape()}__buildShape(){this.shapeComponent&&this.removeChild(this.shapeComponent),this.labelComponent&&this.removeChild(this.labelComponent),this.decorationComponents&&this.decorationComponents.length&&(this.removeChildren(this.decorationComponents),this.decorationComponents.length=0);const e=_r[this.state.kind]||_r.process,t=vr[e.shape]||h;this.shapeComponent=new t({left:0,top:0,width:this.state.width,height:this.state.height,radius:e.radius||0,lineWidth:e.lineWidth||1.5,lineDash:this.state.lineDash||e.lineDash||[],eventKind:this.state.eventKind||e.eventKind,trigger:this.state.trigger||e.trigger,gatewayType:this.state.gatewayType||e.gatewayType,taskType:this.state.taskType||e.taskType,band:e.band,bandSize:e.bandSize,fill:!e.transparent,interactive:!1,linkable:!1,showMinBoundingBox:!1,showMaxBoundingBox:!1,style:{fillStyle:this.state.fillColor||e.fill,strokeStyle:this.state.strokeColor||e.stroke,lineWidth:e.lineWidth||1.5}}),this.__buildDecorations(e);const n="top-left"===e.labelPlacement,r="lane"===e.shape&&"left"===e.band,i=r?Math.min(Number(e.bandSize)||30,.4*this.state.width,.4*this.state.height):0,o=r?Math.max(this.state.height-8,i):0;this.labelComponent=new c(r?{left:i/2-o/2,top:this.state.height/2-i/2,width:o,height:i,text:String(this.state.title||""),wrap:!0,maxLines:1,ellipsis:"…",transform:{rotate:-90},interactive:!1,linkable:!1,stroke:!1,showMinBoundingBox:!1,showMaxBoundingBox:!1,style:{fontSize:this.state.fontSize||13,fillStyle:this.state.textColor||kr,textAlign:"center",textBaseline:"middle",fontWeight:"bold"}}:{left:n?10:0,top:n?"top"===e.band?18:16:0,width:n?Math.max(this.state.width-20,20):this.state.width,height:n?18:this.state.height,text:String(this.state.title||""),wrap:!n,maxLines:2,interactive:!1,linkable:!1,stroke:!1,showMinBoundingBox:!1,showMaxBoundingBox:!1,style:{fontSize:this.state.fontSize||(n?13:14),fillStyle:this.state.textColor||kr,textAlign:n?"left":"center",textBaseline:"middle",fontWeight:n?"bold":"normal",paddingLeft:n?0:12,paddingRight:n?0:12}}),this.addChild(this.shapeComponent),this.addChild(this.labelComponent)}__buildDecorations(e){const t=this.state.kind,n=[],r=this.state.strokeColor||e.stroke;if("bpmnTask"===t||"bpmnSubprocess"===t){const t=this.state.taskType||e.taskType||"none";"none"!==t&&n.push(new BpmnTaskIcon({left:8,top:8,width:14,height:14,stroke:!0,fill:!1,interactive:!1,linkable:!1,showMinBoundingBox:!1,showMaxBoundingBox:!1,taskType:t,style:{strokeStyle:r,lineWidth:1.4}}))}"bpmnSubprocess"===t&&n.push(new BpmnSubprocessMarker({left:(this.state.width-14)/2,top:this.state.height-20,width:14,height:14,stroke:!0,fill:!1,interactive:!1,linkable:!1,showMinBoundingBox:!1,showMaxBoundingBox:!1,style:{strokeStyle:r,lineWidth:1.4}})),n.length&&(n.forEach(e=>this.addChild(e)),this.decorationComponents=n)}applyPatch(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const t=void 0!==e.kind||void 0!==e.fillColor||void 0!==e.strokeColor||void 0!==e.textColor||void 0!==e.fontSize||void 0!==e.eventKind||void 0!==e.trigger||void 0!==e.gatewayType||void 0!==e.taskType||void 0!==e.width||void 0!==e.height;return this.setState(e),t?this.__buildShape():this.labelComponent&&this.labelComponent.setState({text:String(this.state.title||"")}),this.dirty=!0,this}}class FlowEdge extends p{static typeId="ice-entity-designer:FlowEdge";hasDerivedChildren(){return!0}constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};super({title:"Edge",arrow:"end",linkShape:"visio",lineType:"solid",linkable:!1,draggable:!1,interactive:!0,transformable:!1,startPoint:[0,0],endPoint:[10,10],label:"",...e,style:{strokeStyle:"#64748b",fillStyle:"#64748b",lineWidth:1.4,...e.style||{},label:{fontSize:12,fillStyle:"#334155",backgroundColor:"#ffffff",paddingLeft:4,paddingRight:4,...e.labelStyle||{},...(e.style||{}).label||{}}}}),this.applyPatch({flowType:this.state.flowType,condition:this.state.condition,isDefault:this.state.isDefault})}applyPatch(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};e&&e.labelStyle&&(e={...e,style:{...this.state.style||{},...e.style||{},label:{...e.labelStyle||{},...(e.style||{}).label||{}}}},delete e.labelStyle);const t={...this.state,...e},n=t.flowType||"sequence",r="message"===n?{lineDash:[7,4],arrowStyle:"hollow",lineWidth:t.lineWidth||1.4}:"association"===n?{lineDash:[2,3],arrow:"none",arrowStyle:"hollow",lineWidth:t.lineWidth||1.2}:{arrow:t.arrow||"end",arrowStyle:"filled",lineDash:[],lineWidth:t.lineWidth||1.4};return this.setState({...e,...r}),this.dirty=!0,this}}class FlowDesigner{selectedId=null;__undoStack=[];__redoStack=[];__historyEnabled=!0;__maxHistory=100;__listeners=[];__mousedownHandler=e=>this.__handleMouseDown(e);__moveSession=!1;__moveEmitQueued=!1;__beforeMoveHandler=()=>this.__onBeforeMove();__afterMoveHandler=()=>this.__onAfterMove();__mouseupHandler=()=>this.__endMoveSession();constructor(e){applyDesignerChrome(e),this.ice=e,registerIEDType(this.ice,FlowNode),registerIEDType(this.ice,FlowEdge),this.ice.evtBus.on("mousedown",this.__mousedownHandler,this),this.ice.evtBus.on("mouseup",this.__mouseupHandler,this)}get nodes(){return this.__flatten().filter(e=>e.constructor&&e.constructor.typeId===FlowNode.typeId)}get edges(){return this.__flatten().filter(e=>e.constructor&&e.constructor.typeId===FlowEdge.typeId)}__flatten(){const e=[],walk=t=>{t.forEach(t=>{e.push(t),t.childNodes&&t.childNodes.length&&walk(t.childNodes)})};return walk(this.ice.childNodes||[]),e}get selected(){return this.selectedId?this.ice.findComponent(this.selectedId):null}subscribe(e){return"function"!=typeof e?()=>{}:(this.__listeners.push(e),()=>{const t=this.__listeners.indexOf(e);-1!==t&&this.__listeners.splice(t,1)})}__emitChange(){if(!this.__listeners.length)return;const e=this.serialize();this.__listeners.slice().forEach(t=>t(e,this))}__attachNodeListeners(e){e&&"function"==typeof e.on&&(e.on("BEFORE_MOVE",this.__beforeMoveHandler,this),e.on("AFTER_MOVE",this.__afterMoveHandler,this))}__detachNodeListeners(e){e&&"function"==typeof e.off&&(e.off("BEFORE_MOVE",this.__beforeMoveHandler,this),e.off("AFTER_MOVE",this.__afterMoveHandler,this))}__onBeforeMove(){this.__moveSession||(this.__moveSession=!0,this.__captureHistory())}__onAfterMove(){if(this.__moveEmitQueued)return;this.__moveEmitQueued=!0;const flush=()=>{this.__moveEmitQueued=!1,this.__emitChange()};"function"==typeof requestAnimationFrame?requestAnimationFrame(flush):setTimeout(flush,16)}__endMoveSession(){this.__moveSession=!1}select(e){return this.selectedId=e,this.__emitChange(),this}__defaultPlacement(e,t){const n=this.nodes;if(!n.length)return{left:120,top:120};let r=1/0,i=-1/0;n.forEach(e=>{const t=e.getMinBoundingBox(!0);r=Math.min(r,t.tl[0]),i=Math.max(i,t.br[1])});const o=n.length;return{left:r+o%4*280,top:i+80+Math.floor(o/4)*(t+90)}}createNode(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.__captureHistory();const n=new FlowNode({kind:e,...t});if(void 0===t.left||void 0===t.top){const e=this.__defaultPlacement(n.state.width,n.state.height);n.setState({left:void 0===t.left?e.left:t.left,top:void 0===t.top?e.top:t.top})}return this.ice.addChild(n),this.__attachNodeListeners(n),this.selectedId=n.state.id,this.__emitChange(),n}__slotPoint(e,t){const n=e.getMinBoundingBox(!0);switch(t){case"T":return[...n.tc];case"R":return[...n.rc];case"B":return[...n.bc];case"L":return[...n.lc];default:return[...n.center]}}createEdge(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const t=e.sourceId?this.ice.findComponent(e.sourceId):null,n=e.targetId?this.ice.findComponent(e.targetId):null;if(!t||!n)throw new Error("连接两端必须是已存在的节点");this.__captureHistory();const r=e.sourcePort||"B",i=e.targetPort||"T",o=new FlowEdge({id:e.id,links:{start:{id:e.sourceId,position:r},end:{id:e.targetId,position:i}},startPoint:this.__slotPoint(t,r),endPoint:this.__slotPoint(n,i),label:e.label||"",linkShape:e.linkShape||"visio",flowType:e.flowType||"sequence",condition:e.condition||"",isDefault:!!e.isDefault,style:{...e.style||{},...e.labelStyle?{label:e.labelStyle}:{}}});return this.ice.addChild(o),this.selectedId=o.state.id,this.__emitChange(),o}updateNode(e,t){const n=this.ice.findComponent(e);return n&&n.constructor.typeId===FlowNode.typeId&&(this.__captureHistory(),n.applyPatch(t),this.__emitChange()),n}updateEdge(e,t){const n=this.ice.findComponent(e);return n&&n.constructor.typeId===FlowEdge.typeId&&(this.__captureHistory(),"function"==typeof n.applyPatch?n.applyPatch(t):(n.setState(t),n.dirty=!0),this.__emitChange()),n}remove(e){const t=this.ice.findComponent(e);t&&(this.__captureHistory(),-1!==this.nodes.indexOf(t)&&(this.__detachNodeListeners(t),this.edges.filter(t=>{const n=t.state.links||{};return n.start&&n.start.id===e||n.end&&n.end.id===e}).forEach(e=>this.ice.removeChild(e))),t.parentNode&&"function"==typeof t.parentNode.removeChild?t.parentNode.removeChild(t):this.ice.removeChild(t),this.selectedId===e&&(this.selectedId=null),this.__emitChange())}clear(){this.__captureHistory(),this.ice.clearAll(),this.selectedId=null,this.__emitChange()}serialize(){return JSON.stringify(this.toSnapshot())}toSnapshot(){const e=this.__serializer().toJSONObject();return{version:2,kind:"flowchart",createTime:e.createTime,scene:{version:e.version,childNodes:e.childNodes}}}__serializer(){const e=this.ice;return e.serializer||new m(e)}__deserializer(){const e=this.ice;return e.deserializer||new g(e)}load(e){if(!e)return{loaded:!1,nodes:0,edges:0,skipped:[]};let t;try{t=JSON.parse(e)}catch(e){throw new Error(`Invalid flow snapshot: 不是合法 JSON(${e instanceof Error?e.message:String(e)})`)}if(!t||"object"!=typeof t)return{loaded:!1,nodes:0,edges:0,skipped:[]};const n=!!t.scene;if(!n&&!Array.isArray(t.nodes))return{loaded:!1,nodes:0,edges:0,skipped:[]};const r=function validateFlowSnapshot(e){const t=[];return!e||"object"!=typeof e||Array.isArray(e)?{valid:!1,errors:["root must be an object"]}:void 0!==e.scene?(!e.scene||"object"!=typeof e.scene||Array.isArray(e.scene)?t.push("scene must be an object when present"):Array.isArray(e.scene.childNodes)||t.push("scene.childNodes must be an array"),{valid:0===t.length,errors:t}):(Array.isArray(e.nodes)?e.nodes.forEach((e,n)=>{const r=`nodes[${n}]`;e&&"object"==typeof e&&!Array.isArray(e)?("string"!=typeof e.id&&t.push(`${r}.id must be a string`),void 0!==e.kind&&"string"!=typeof e.kind&&t.push(`${r}.kind must be a string when present`),void 0!==e.left&&"number"!=typeof e.left&&t.push(`${r}.left must be a number when present`),void 0!==e.top&&"number"!=typeof e.top&&t.push(`${r}.top must be a number when present`)):t.push(`${r} must be an object`)}):t.push("nodes must be an array"),void 0===e.edges||Array.isArray(e.edges)?Array.isArray(e.edges)&&e.edges.forEach((e,n)=>{const r=`edges[${n}]`;e&&"object"==typeof e&&!Array.isArray(e)?(["sourceId","targetId"].forEach(n=>{void 0!==e[n]&&null!==e[n]&&"string"!=typeof e[n]&&t.push(`${r}.${n} must be a string or null when present`)}),void 0!==e.label&&"string"!=typeof e.label&&t.push(`${r}.label must be a string when present`),void 0!==e.linkShape&&"visio"!==e.linkShape&&"bezier"!==e.linkShape&&t.push(`${r}.linkShape must be "visio" or "bezier" when present`)):t.push(`${r} must be an object`)}):t.push("edges must be an array when present"),{valid:0===t.length,errors:t})}(t);if(!r.valid)throw new Error(`Invalid flow snapshot:\n${r.errors.join("\n")}`);this.__captureHistory();const i=n?this.__applyEngineScene(t.scene,t.createTime):this.__clearAndBuild(t);return this.__emitChange(),i}__applyEngineScene(e,t){this.ice.clearAll(),this.selectedId=null;const n=this.__deserializer();n.fromJSONObject({version:e.version,createTime:t,childNodes:e.childNodes});const r={loaded:!0,nodes:this.nodes.length,edges:this.edges.length,skipped:[...n.unknownTypes||[]]};return this.nodes.forEach(e=>this.__attachNodeListeners(e)),r}__clearAndBuild(e){this.ice.clearAll(),this.selectedId=null;const t={loaded:!0,nodes:0,edges:0,skipped:[]};return(e.nodes||[]).forEach(e=>{if(void 0!==e.typeId&&this.ice.getType(e.typeId)!==FlowNode)return void t.skipped.push(String(e.typeId));const n=new FlowNode(e);delete n.state.typeId,this.ice.addChild(n),this.__attachNodeListeners(n),t.nodes+=1}),(e.edges||[]).forEach(e=>{if(void 0!==e.typeId&&this.ice.getType(e.typeId)!==FlowEdge)return void t.skipped.push(String(e.typeId));const n=e.sourceId||e.links&&e.links.start&&e.links.start.id||null,r=e.targetId||e.links&&e.links.end&&e.links.end.id||null,i=e.sourcePort||e.links&&e.links.start&&e.links.start.position||"B",o=e.targetPort||e.links&&e.links.end&&e.links.end.position||"T",s=n&&r?{start:{id:n,position:i},end:{id:r,position:o}}:e.links,a=new FlowEdge({...e,links:s,startPoint:e.startPoint||[0,0],endPoint:e.endPoint||[10,10]});delete a.state.typeId,this.ice.addChild(a),t.edges+=1}),t}contentComponents(){return this.nodes}fitViewportAlign="center";fitViewport(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:80;const t=this.contentComponents(),n=this.ice.canvasWidth||0,r=this.ice.canvasHeight||0;if(!t.length||!n||!r)return;let i=1/0,o=1/0,s=-1/0,a=-1/0;t.forEach(e=>{const t=e.getMinBoundingBox(!0);i=Math.min(i,t.tl[0]),o=Math.min(o,t.tl[1]),s=Math.max(s,t.br[0]),a=Math.max(a,t.br[1])});const l=Math.max(s-i,1),u=Math.max(a-o,1),c=Math.min((n-2*e)/l,(r-2*e)/u,1.25),h=(n-l*c)/2-i*c,d="start"===this.fitViewportAlign?e-o*c:(r-u*c)/2-o*c;this.ice.setViewport(c,h,d)}canUndo(){return this.__undoStack.length>0}toSvg(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return _(this.ice,e)}canRedo(){return this.__redoStack.length>0}captureHistory(){this.__captureHistory()}resetHistory(){this.__undoStack.length=0,this.__redoStack.length=0}__captureHistory(){this.__historyEnabled&&(this.__undoStack.push(this.serialize()),this.__undoStack.length>this.__maxHistory&&this.__undoStack.shift(),this.__redoStack.length=0)}__applySnapshot(e){const t=JSON.parse(e);t&&t.scene?this.__applyEngineScene(t.scene):this.__clearAndBuild(t)}undo(){if(!this.canUndo())return;const e=this.serialize(),t=this.__undoStack.pop();this.__redoStack.push(e),this.__historyEnabled=!1;try{this.__applySnapshot(t)}catch(e){throw this.__redoStack.pop(),this.__undoStack.push(t),e}finally{this.__historyEnabled=!0}this.__emitChange()}redo(){if(!this.canRedo())return;const e=this.serialize(),t=this.__redoStack.pop();this.__undoStack.push(e),this.__historyEnabled=!1;try{this.__applySnapshot(t)}catch(e){throw this.__undoStack.pop(),this.__redoStack.push(t),e}finally{this.__historyEnabled=!0}this.__emitChange()}__handleMouseDown(e){const t=e&&e.param&&e.param.component;if(!t)return;let n=t;for(;n;){const e=n.constructor&&n.constructor.typeId;if(e===FlowNode.typeId||e===FlowEdge.typeId)return void this.select(n.state.id);n=n.parentNode}}dispose(){this.ice.evtBus.off("mousedown",this.__mousedownHandler,this),this.ice.evtBus.off("mouseup",this.__mouseupHandler,this),this.nodes.forEach(e=>this.__detachNodeListeners(e))}}function createDesignerSession(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const n=new b;n.init(e,{renderMode:"full"===t.renderMode?"full":"dirty-rect"});const r=new EntityDesigner(n),i=t.onChange?r.subscribe(t.onChange):null;t.initialProject&&r.loadProject(t.initialProject);let o=!1;return{ice:n,designer:r,destroy(){o||(o=!0,i&&i(),r.dispose(),n.destroy())}}}function shouldApplyControlledValue(e,t){return void 0!==e&&e!==t}function createFlowSession(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const n=new b;n.init(e,{renderMode:"full"===t.renderMode?"full":"dirty-rect"});const r=new FlowDesigner(n),i=t.onChange,o=i?r.subscribe(e=>i(e)):null;t.initialFlow&&r.load(t.initialFlow);let s=!1;return{ice:n,designer:r,destroy(){s||(s=!0,o&&o(),r.dispose(),n.destroy())}}}function reportLoadError(e,t,n,r){const i=r instanceof Error?r:new Error(String(r));e&&e({phase:t,snapshot:n,error:i})}function createHandle$1(e){const t=e?e.designer:null;return{ice:e?e.ice:null,designer:t,addEntity:e=>t?t.createEntity(e):null,connect:e=>t?t.createRelation(e):null,updateEntity:(e,n)=>t?t.updateEntity(e,n):null,updateRelation:(e,n)=>t?t.updateRelation(e,n):null,remove:e=>{t&&t.removeComponent(e)},loadProject:e=>t?t.loadProject(e):{loaded:!1,entities:0,relations:0,unknownTypes:[],skipped:[]},undo:()=>{t&&t.undo()},redo:()=>{t&&t.redo()},toSchemaObject:()=>t?t.toSchemaObject():[],toSchemaString:()=>t?t.toSchemaString():"[]",validate:()=>t?t.validate():[],serializeProject:()=>t?t.serializeProject():""}}const wr=r(function EntityDesignerCanvas(e,n){const r=i(null),u=i(null),[c,h]=o(null),d=i(e.onChange);d.current=e.onChange;const p=i(e.onReady);p.current=e.onReady;const f=i(e.onError);f.current=e.onError;const y=i(null),m=e.width||1200,g=e.height||800,_=void 0!==e.value?e.value:e.defaultValue;return s(()=>{const t=r.current;if(!t)return;const n=createDesignerSession(t,{renderMode:e.renderMode,onChange:e=>{y.current=e;const t=d.current,n=u.current;t&&n&&t({snapshot:e,schema:n.designer.toSchemaObject()})}});if(u.current=n,void 0!==_){y.current=_;try{n.designer.loadProject(_)}catch(e){reportLoadError(f.current,"load-initial",_,e)}}else y.current=null;return h(n.designer),p.current&&p.current(createHandle$1(n)),()=>{n.destroy(),u.current=null,h(null)}},[]),s(()=>{if(!c)return;if(!shouldApplyControlledValue(e.value,y.current))return;const t=e.value;y.current=t;try{c.loadProject(t)}catch(e){reportLoadError(f.current,"load-controlled",t,e)}},[e.value,c]),a(n,()=>createHandle$1(u.current),[c]),t(l,null,t("div",{className:e.className,style:{position:"relative",width:m,height:g,...e.style||{}}},t("canvas",{ref:r,width:m,height:g,style:{display:"block"}})),t(EntityDesignerProvider,{designer:c,children:e.children}))}),Cr='{"version":1,"kind":"flowchart","nodes":[],"edges":[]}';function createHandle(e){const t=e?e.designer:null;return{ice:e?e.ice:null,designer:t,addNode:(e,n)=>t?t.createNode(e,n):null,connect:e=>t?t.createEdge(e):null,updateNode:(e,n)=>t?t.updateNode(e,n):null,updateEdge:(e,n)=>t?t.updateEdge(e,n):null,remove:e=>{t&&t.remove(e)},load:e=>t?t.load(e):{loaded:!1,nodes:0,edges:0,skipped:[]},undo:()=>{t&&t.undo()},redo:()=>{t&&t.redo()},serialize:()=>t?t.serialize():Cr,toSnapshot:()=>t?t.toSnapshot():JSON.parse(Cr),fitViewport:e=>{t&&t.fitViewport(e)}}}const Sr=r(function FlowDesignerCanvas(e,n){const r=i(null),u=i(null),[c,h]=o(null),d=i(e.onChange);d.current=e.onChange;const p=i(e.onReady);p.current=e.onReady;const f=i(e.onError);f.current=e.onError;const y=i(null),m=e.width||1200,g=e.height||800,_=void 0!==e.value?e.value:e.defaultValue;return s(()=>{const t=r.current;if(!t)return;const n=createFlowSession(t,{renderMode:e.renderMode,onChange:e=>{y.current=e;const t=d.current,n=u.current;t&&n&&t({snapshot:e,counts:{nodes:n.designer.nodes.length,edges:n.designer.edges.length}})}});if(u.current=n,void 0!==_){y.current=_;try{n.designer.load(_)}catch(e){reportLoadError(f.current,"load-initial",_,e)}}else y.current=null;return h(n.designer),p.current&&p.current(createHandle(n)),()=>{n.destroy(),u.current=null,h(null)}},[]),s(()=>{if(!c)return;if(!shouldApplyControlledValue(e.value,y.current))return;const t=e.value;y.current=t;try{c.load(t)}catch(e){reportLoadError(f.current,"load-controlled",t,e)}},[e.value,c]),a(n,()=>createHandle(u.current),[c]),t(l,null,t("div",{className:e.className,style:{position:"relative",width:m,height:g,...e.style||{}}},t("canvas",{ref:r,width:m,height:g,style:{display:"block"}})),t(FlowDesignerProvider,{designer:c,children:e.children}))});export{Entity,wr as EntityDesignerCanvas,v as EntityDesignerContext,EntityDesignerProvider,_r as FLOW_NODE_KINDS,FlowDesigner,Sr as FlowDesignerCanvas,k as FlowDesignerContext,FlowDesignerProvider,FlowEdge,FlowNode,Relation,createDesignerSession,createFlowSession,shouldApplyControlledValue,toSchemaObject,toSchemaString,useEntityDesigner,useFlowDesigner,validateSchema};
25
+ import{createContext as e,createElement as t,useContext as n,forwardRef as r,useRef as i,useState as o,useEffect as s,useImperativeHandle as a,Fragment as l}from"react";import{ICEGroup as u,ICEText as c,ICERect as h,ICEPolyLine as d,ICEVisioLink as p,toIsoTime as f,ICEPath as y,Serializer as m,Deserializer as g,exportSvg as _,ICE as b}from"ice-render";const v=e(null);function EntityDesignerProvider(e){return t(v.Provider,{value:e.designer},e.children)}function useEntityDesigner(){return n(v)}const k=e(null);function FlowDesignerProvider(e){return t(k.Provider,{value:e.designer},e.children)}function useFlowDesigner(){return n(k)}var w,C,S="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function getDefaultExportFromCjs(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var T,I,q,j,x,E,$,P,M,O,D,A,N,B,F,z,L,R,H,W,V,U,G,K,J,Q,Z,X,Y,ee,te,ne,re,ie,oe,se,ae,le,ue,ce,he,de,pe,fe,ye,me,ge,_e,be,ve,ke,we,Ce,Se,Te,Ie,qe,je,xe,Ee,$e,Pe,Me,Oe,De,Ae,Ne,Be,Fe,ze,Le,Re,He,We,Ve,Ue,Ge,Ke,Je,Qe,Ze,Xe,Ye,et,tt,nt,rt,it,ot,st,at,lt,ut,ct,ht,dt,pt,ft,yt=getDefaultExportFromCjs(function requireIsNil(){return C?w:(C=1,w=function isNil(e){return null==e})}());function requireEq(){if(j)return q;return j=1,q=function eq(e,t){return e===t||e!=e&&t!=t}}function require_assocIndexOf(){if(E)return x;E=1;var e=requireEq();return x=function assocIndexOf(t,n){for(var r=t.length;r--;)if(e(t[r][0],n))return r;return-1}}function require_ListCache(){if(z)return F;z=1;var e=function require_listCacheClear(){return I?T:(I=1,T=function listCacheClear(){this.__data__=[],this.size=0})}(),t=function require_listCacheDelete(){if(P)return $;P=1;var e=require_assocIndexOf(),t=Array.prototype.splice;return $=function listCacheDelete(n){var r=this.__data__,i=e(r,n);return!(i<0||(i==r.length-1?r.pop():t.call(r,i,1),--this.size,0))}}(),n=function require_listCacheGet(){if(O)return M;O=1;var e=require_assocIndexOf();return M=function listCacheGet(t){var n=this.__data__,r=e(n,t);return r<0?void 0:n[r][1]}}(),r=function require_listCacheHas(){if(A)return D;A=1;var e=require_assocIndexOf();return D=function listCacheHas(t){return e(this.__data__,t)>-1}}(),i=function require_listCacheSet(){if(B)return N;B=1;var e=require_assocIndexOf();return N=function listCacheSet(t,n){var r=this.__data__,i=e(r,t);return i<0?(++this.size,r.push([t,n])):r[i][1]=n,this}}();function ListCache(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}return ListCache.prototype.clear=e,ListCache.prototype.delete=t,ListCache.prototype.get=n,ListCache.prototype.has=r,ListCache.prototype.set=i,F=ListCache}function require_freeGlobal(){if(Q)return J;Q=1;var e="object"==typeof S&&S&&S.Object===Object&&S;return J=e}function require_root(){if(X)return Z;X=1;var e=require_freeGlobal(),t="object"==typeof self&&self&&self.Object===Object&&self,n=e||t||Function("return this")();return Z=n}function require_Symbol(){if(ee)return Y;ee=1;var e=require_root().Symbol;return Y=e}function require_baseGetTag(){if(se)return oe;se=1;var e=require_Symbol(),t=function require_getRawTag(){if(ne)return te;ne=1;var e=require_Symbol(),t=Object.prototype,n=t.hasOwnProperty,r=t.toString,i=e?e.toStringTag:void 0;return te=function getRawTag(e){var t=n.call(e,i),o=e[i];try{e[i]=void 0;var s=!0}catch(e){}var a=r.call(e);return s&&(t?e[i]=o:delete e[i]),a}}(),n=function require_objectToString(){if(ie)return re;ie=1;var e=Object.prototype.toString;return re=function objectToString(t){return e.call(t)}}(),r=e?e.toStringTag:void 0;return oe=function baseGetTag(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":r&&r in Object(e)?t(e):n(e)}}function requireIsObject(){if(le)return ae;return le=1,ae=function isObject(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}}function requireIsFunction(){if(ce)return ue;ce=1;var e=require_baseGetTag(),t=requireIsObject();return ue=function isFunction(n){if(!t(n))return!1;var r=e(n);return"[object Function]"==r||"[object GeneratorFunction]"==r||"[object AsyncFunction]"==r||"[object Proxy]"==r}}function require_isMasked(){if(fe)return pe;fe=1;var e,t=function require_coreJsData(){if(de)return he;de=1;var e=require_root()["__core-js_shared__"];return he=e}(),n=(e=/[^.]+$/.exec(t&&t.keys&&t.keys.IE_PROTO||""))?"Symbol(src)_1."+e:"";return pe=function isMasked(e){return!!n&&n in e}}function require_baseIsNative(){if(_e)return ge;_e=1;var e=requireIsFunction(),t=require_isMasked(),n=requireIsObject(),r=function require_toSource(){if(me)return ye;me=1;var e=Function.prototype.toString;return ye=function toSource(t){if(null!=t){try{return e.call(t)}catch(e){}try{return t+""}catch(e){}}return""}}(),i=/^\[object .+?Constructor\]$/,o=Function.prototype,s=Object.prototype,a=o.toString,l=s.hasOwnProperty,u=RegExp("^"+a.call(l).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");return ge=function baseIsNative(o){return!(!n(o)||t(o))&&(e(o)?u:i).test(r(o))}}function require_getNative(){if(we)return ke;we=1;var e=require_baseIsNative(),t=function require_getValue(){return ve?be:(ve=1,be=function getValue(e,t){return null==e?void 0:e[t]})}();return ke=function getNative(n,r){var i=t(n,r);return e(i)?i:void 0}}function require_Map(){if(Se)return Ce;Se=1;var e=require_getNative()(require_root(),"Map");return Ce=e}function require_nativeCreate(){if(Ie)return Te;Ie=1;var e=require_getNative()(Object,"create");return Te=e}function require_Hash(){if(Be)return Ne;Be=1;var e=function require_hashClear(){if(je)return qe;je=1;var e=require_nativeCreate();return qe=function hashClear(){this.__data__=e?e(null):{},this.size=0}}(),t=function require_hashDelete(){return Ee?xe:(Ee=1,xe=function hashDelete(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t})}(),n=function require_hashGet(){if(Pe)return $e;Pe=1;var e=require_nativeCreate(),t=Object.prototype.hasOwnProperty;return $e=function hashGet(n){var r=this.__data__;if(e){var i=r[n];return"__lodash_hash_undefined__"===i?void 0:i}return t.call(r,n)?r[n]:void 0}}(),r=function require_hashHas(){if(Oe)return Me;Oe=1;var e=require_nativeCreate(),t=Object.prototype.hasOwnProperty;return Me=function hashHas(n){var r=this.__data__;return e?void 0!==r[n]:t.call(r,n)}}(),i=function require_hashSet(){if(Ae)return De;Ae=1;var e=require_nativeCreate();return De=function hashSet(t,n){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=e&&void 0===n?"__lodash_hash_undefined__":n,this}}();function Hash(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}return Hash.prototype.clear=e,Hash.prototype.delete=t,Hash.prototype.get=n,Hash.prototype.has=r,Hash.prototype.set=i,Ne=Hash}function require_getMapData(){if(We)return He;We=1;var e=function require_isKeyable(){return Re?Le:(Re=1,Le=function isKeyable(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e})}();return He=function getMapData(t,n){var r=t.__data__;return e(n)?r["string"==typeof n?"string":"hash"]:r.map}}function require_MapCache(){if(et)return Ye;et=1;var e=function require_mapCacheClear(){if(ze)return Fe;ze=1;var e=require_Hash(),t=require_ListCache(),n=require_Map();return Fe=function mapCacheClear(){this.size=0,this.__data__={hash:new e,map:new(n||t),string:new e}}}(),t=function require_mapCacheDelete(){if(Ue)return Ve;Ue=1;var e=require_getMapData();return Ve=function mapCacheDelete(t){var n=e(this,t).delete(t);return this.size-=n?1:0,n}}(),n=function require_mapCacheGet(){if(Ke)return Ge;Ke=1;var e=require_getMapData();return Ge=function mapCacheGet(t){return e(this,t).get(t)}}(),r=function require_mapCacheHas(){if(Qe)return Je;Qe=1;var e=require_getMapData();return Je=function mapCacheHas(t){return e(this,t).has(t)}}(),i=function require_mapCacheSet(){if(Xe)return Ze;Xe=1;var e=require_getMapData();return Ze=function mapCacheSet(t,n){var r=e(this,t),i=r.size;return r.set(t,n),this.size+=r.size==i?0:1,this}}();function MapCache(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}return MapCache.prototype.clear=e,MapCache.prototype.delete=t,MapCache.prototype.get=n,MapCache.prototype.has=r,MapCache.prototype.set=i,Ye=MapCache}function require_Stack(){if(it)return rt;it=1;var e=require_ListCache(),t=function require_stackClear(){if(R)return L;R=1;var e=require_ListCache();return L=function stackClear(){this.__data__=new e,this.size=0}}(),n=function require_stackDelete(){return W?H:(W=1,H=function stackDelete(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n})}(),r=function require_stackGet(){return U?V:(U=1,V=function stackGet(e){return this.__data__.get(e)})}(),i=function require_stackHas(){return K?G:(K=1,G=function stackHas(e){return this.__data__.has(e)})}(),o=function require_stackSet(){if(nt)return tt;nt=1;var e=require_ListCache(),t=require_Map(),n=require_MapCache();return tt=function stackSet(r,i){var o=this.__data__;if(o instanceof e){var s=o.__data__;if(!t||s.length<199)return s.push([r,i]),this.size=++o.size,this;o=this.__data__=new n(s)}return o.set(r,i),this.size=o.size,this}}();function Stack(t){var n=this.__data__=new e(t);this.size=n.size}return Stack.prototype.clear=t,Stack.prototype.delete=n,Stack.prototype.get=r,Stack.prototype.has=i,Stack.prototype.set=o,rt=Stack}function require_defineProperty(){if(st)return ot;st=1;var e=require_getNative(),t=function(){try{var t=e(Object,"defineProperty");return t({},"",{}),t}catch(e){}}();return ot=t}function require_baseAssignValue(){if(lt)return at;lt=1;var e=require_defineProperty();return at=function baseAssignValue(t,n,r){"__proto__"==n&&e?e(t,n,{configurable:!0,enumerable:!0,value:r,writable:!0}):t[n]=r}}function require_assignMergeValue(){if(ct)return ut;ct=1;var e=require_baseAssignValue(),t=requireEq();return ut=function assignMergeValue(n,r,i){(void 0!==i&&!t(n[r],i)||void 0===i&&!(r in n))&&e(n,r,i)}}function require_baseFor(){if(ft)return pt;ft=1;var e=function require_createBaseFor(){return dt?ht:(dt=1,ht=function createBaseFor(e){return function(t,n,r){for(var i=-1,o=Object(t),s=r(t),a=s.length;a--;){var l=s[e?a:++i];if(!1===n(o[l],l,o))break}return t}})}()();return pt=e}var mt,gt,_t,bt,vt,kt,wt,Ct,St,Tt,It,qt,jt,xt,Et,$t,Pt,Mt,Ot,Dt,At,Nt,Bt,Ft,zt,Lt,Rt,Ht,Wt,Vt,Ut,Gt,Kt,Jt={exports:{}};function require_cloneArrayBuffer(){if(vt)return bt;vt=1;var e=function require_Uint8Array(){if(_t)return gt;_t=1;var e=require_root().Uint8Array;return gt=e}();return bt=function cloneArrayBuffer(t){var n=new t.constructor(t.byteLength);return new e(n).set(new e(t)),n}}function require_getPrototype(){if(Et)return xt;Et=1;var e=function require_overArg(){return jt?qt:(jt=1,qt=function overArg(e,t){return function(n){return e(t(n))}})}()(Object.getPrototypeOf,Object);return xt=e}function require_isPrototype(){if(Pt)return $t;Pt=1;var e=Object.prototype;return $t=function isPrototype(t){var n=t&&t.constructor;return t===("function"==typeof n&&n.prototype||e)}}function require_initCloneObject(){if(Ot)return Mt;Ot=1;var e=function require_baseCreate(){if(It)return Tt;It=1;var e=requireIsObject(),t=Object.create,n=function(){function object(){}return function(n){if(!e(n))return{};if(t)return t(n);object.prototype=n;var r=new object;return object.prototype=void 0,r}}();return Tt=n}(),t=require_getPrototype(),n=require_isPrototype();return Mt=function initCloneObject(r){return"function"!=typeof r.constructor||n(r)?{}:e(t(r))}}function requireIsObjectLike(){if(At)return Dt;return At=1,Dt=function isObjectLike(e){return null!=e&&"object"==typeof e}}function requireIsArguments(){if(zt)return Ft;zt=1;var e=function require_baseIsArguments(){if(Bt)return Nt;Bt=1;var e=require_baseGetTag(),t=requireIsObjectLike();return Nt=function baseIsArguments(n){return t(n)&&"[object Arguments]"==e(n)}}(),t=requireIsObjectLike(),n=Object.prototype,r=n.hasOwnProperty,i=n.propertyIsEnumerable,o=e(function(){return arguments}())?e:function(e){return t(e)&&r.call(e,"callee")&&!i.call(e,"callee")};return Ft=o}function requireIsArray(){if(Rt)return Lt;Rt=1;var e=Array.isArray;return Lt=e}function requireIsLength(){if(Wt)return Ht;Wt=1;return Ht=function isLength(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}}function requireIsArrayLike(){if(Ut)return Vt;Ut=1;var e=requireIsFunction(),t=requireIsLength();return Vt=function isArrayLike(n){return null!=n&&t(n.length)&&!e(n)}}var Qt,Zt,Xt,Yt,en,tn,nn,rn,on,sn={exports:{}};function requireIsBuffer(){return Xt||(Xt=1,function(e,t){var n=require_root(),r=function requireStubFalse(){return Zt?Qt:(Zt=1,Qt=function stubFalse(){return!1})}(),i=t&&!t.nodeType&&t,o=i&&e&&!e.nodeType&&e,s=o&&o.exports===i?n.Buffer:void 0,a=(s?s.isBuffer:void 0)||r;e.exports=a}(sn,sn.exports)),sn.exports}var an,ln,un,cn,hn,dn,pn,fn,yn,mn,gn,_n,bn,vn,kn,wn,Cn,Sn,Tn,In,qn,jn,xn,En,$n,Pn,Mn,On,Dn,An,Nn,Bn,Fn,zn,Ln,Rn,Hn,Wn,Vn,Un,Gn,Kn,Jn,Qn,Zn,Xn,Yn,er,tr,nr={exports:{}};function requireIsTypedArray(){if(un)return ln;un=1;var e=function require_baseIsTypedArray(){if(nn)return tn;nn=1;var e=require_baseGetTag(),t=requireIsLength(),n=requireIsObjectLike(),r={};return r["[object Float32Array]"]=r["[object Float64Array]"]=r["[object Int8Array]"]=r["[object Int16Array]"]=r["[object Int32Array]"]=r["[object Uint8Array]"]=r["[object Uint8ClampedArray]"]=r["[object Uint16Array]"]=r["[object Uint32Array]"]=!0,r["[object Arguments]"]=r["[object Array]"]=r["[object ArrayBuffer]"]=r["[object Boolean]"]=r["[object DataView]"]=r["[object Date]"]=r["[object Error]"]=r["[object Function]"]=r["[object Map]"]=r["[object Number]"]=r["[object Object]"]=r["[object RegExp]"]=r["[object Set]"]=r["[object String]"]=r["[object WeakMap]"]=!1,tn=function baseIsTypedArray(i){return n(i)&&t(i.length)&&!!r[e(i)]}}(),t=function require_baseUnary(){return on?rn:(on=1,rn=function baseUnary(e){return function(t){return e(t)}})}(),n=function require_nodeUtil(){return an||(an=1,e=nr,t=nr.exports,n=require_freeGlobal(),r=t&&!t.nodeType&&t,i=r&&e&&!e.nodeType&&e,o=i&&i.exports===r&&n.process,s=function(){try{return i&&i.require&&i.require("util").types||o&&o.binding&&o.binding("util")}catch(e){}}(),e.exports=s),nr.exports;var e,t,n,r,i,o,s}(),r=n&&n.isTypedArray,i=r?t(r):e;return ln=i}function require_safeGet(){if(hn)return cn;return hn=1,cn=function safeGet(e,t){if(("constructor"!==t||"function"!=typeof e[t])&&"__proto__"!=t)return e[t]}}function require_copyObject(){if(yn)return fn;yn=1;var e=function require_assignValue(){if(pn)return dn;pn=1;var e=require_baseAssignValue(),t=requireEq(),n=Object.prototype.hasOwnProperty;return dn=function assignValue(r,i,o){var s=r[i];n.call(r,i)&&t(s,o)&&(void 0!==o||i in r)||e(r,i,o)}}(),t=require_baseAssignValue();return fn=function copyObject(n,r,i,o){var s=!i;i||(i={});for(var a=-1,l=r.length;++a<l;){var u=r[a],c=o?o(i[u],n[u],u,i,n):void 0;void 0===c&&(c=n[u]),s?t(i,u,c):e(i,u,c)}return i}}function require_isIndex(){if(bn)return _n;bn=1;var e=/^(?:0|[1-9]\d*)$/;return _n=function isIndex(t,n){var r=typeof t;return!!(n=null==n?9007199254740991:n)&&("number"==r||"symbol"!=r&&e.test(t))&&t>-1&&t%1==0&&t<n}}function require_arrayLikeKeys(){if(kn)return vn;kn=1;var e=function require_baseTimes(){return gn?mn:(gn=1,mn=function baseTimes(e,t){for(var n=-1,r=Array(e);++n<e;)r[n]=t(n);return r})}(),t=requireIsArguments(),n=requireIsArray(),r=requireIsBuffer(),i=require_isIndex(),o=requireIsTypedArray(),s=Object.prototype.hasOwnProperty;return vn=function arrayLikeKeys(a,l){var u=n(a),c=!u&&t(a),h=!u&&!c&&r(a),d=!u&&!c&&!h&&o(a),p=u||c||h||d,f=p?e(a.length,String):[],y=f.length;for(var m in a)!l&&!s.call(a,m)||p&&("length"==m||h&&("offset"==m||"parent"==m)||d&&("buffer"==m||"byteLength"==m||"byteOffset"==m)||i(m,y))||f.push(m);return f}}function require_baseKeysIn(){if(Tn)return Sn;Tn=1;var e=requireIsObject(),t=require_isPrototype(),n=function require_nativeKeysIn(){return Cn?wn:(Cn=1,wn=function nativeKeysIn(e){var t=[];if(null!=e)for(var n in Object(e))t.push(n);return t})}(),r=Object.prototype.hasOwnProperty;return Sn=function baseKeysIn(i){if(!e(i))return n(i);var o=t(i),s=[];for(var a in i)("constructor"!=a||!o&&r.call(i,a))&&s.push(a);return s}}function requireKeysIn(){if(qn)return In;qn=1;var e=require_arrayLikeKeys(),t=require_baseKeysIn(),n=requireIsArrayLike();return In=function keysIn(r){return n(r)?e(r,!0):t(r)}}function require_baseMergeDeep(){if($n)return En;$n=1;var e=require_assignMergeValue(),t=function require_cloneBuffer(){return mt||(mt=1,e=Jt,t=Jt.exports,n=require_root(),r=t&&!t.nodeType&&t,i=r&&e&&!e.nodeType&&e,o=i&&i.exports===r?n.Buffer:void 0,s=o?o.allocUnsafe:void 0,e.exports=function cloneBuffer(e,t){if(t)return e.slice();var n=e.length,r=s?s(n):new e.constructor(n);return e.copy(r),r}),Jt.exports;var e,t,n,r,i,o,s}(),n=function require_cloneTypedArray(){if(wt)return kt;wt=1;var e=require_cloneArrayBuffer();return kt=function cloneTypedArray(t,n){var r=n?e(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.length)}}(),r=function require_copyArray(){return St?Ct:(St=1,Ct=function copyArray(e,t){var n=-1,r=e.length;for(t||(t=Array(r));++n<r;)t[n]=e[n];return t})}(),i=require_initCloneObject(),o=requireIsArguments(),s=requireIsArray(),a=function requireIsArrayLikeObject(){if(Kt)return Gt;Kt=1;var e=requireIsArrayLike(),t=requireIsObjectLike();return Gt=function isArrayLikeObject(n){return t(n)&&e(n)}}(),l=requireIsBuffer(),u=requireIsFunction(),c=requireIsObject(),h=function requireIsPlainObject(){if(en)return Yt;en=1;var e=require_baseGetTag(),t=require_getPrototype(),n=requireIsObjectLike(),r=Function.prototype,i=Object.prototype,o=r.toString,s=i.hasOwnProperty,a=o.call(Object);return Yt=function isPlainObject(r){if(!n(r)||"[object Object]"!=e(r))return!1;var i=t(r);if(null===i)return!0;var l=s.call(i,"constructor")&&i.constructor;return"function"==typeof l&&l instanceof l&&o.call(l)==a}}(),d=requireIsTypedArray(),p=require_safeGet(),f=function requireToPlainObject(){if(xn)return jn;xn=1;var e=require_copyObject(),t=requireKeysIn();return jn=function toPlainObject(n){return e(n,t(n))}}();return En=function baseMergeDeep(y,m,g,_,b,v,k){var w=p(y,g),C=p(m,g),S=k.get(C);if(S)e(y,g,S);else{var T=v?v(w,C,g+"",y,m,k):void 0,I=void 0===T;if(I){var q=s(C),j=!q&&l(C),x=!q&&!j&&d(C);T=C,q||j||x?s(w)?T=w:a(w)?T=r(w):j?(I=!1,T=t(C,!0)):x?(I=!1,T=n(C,!0)):T=[]:h(C)||o(C)?(T=w,o(w)?T=f(w):c(w)&&!u(w)||(T=i(C))):I=!1}I&&(k.set(C,T),b(T,C,_,v,k),k.delete(C)),e(y,g,T)}}}function requireIdentity(){if(Dn)return On;return Dn=1,On=function identity(e){return e}}function require_overRest(){if(Fn)return Bn;Fn=1;var e=function require_apply(){return Nn?An:(Nn=1,An=function apply(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)})}(),t=Math.max;return Bn=function overRest(n,r,i){return r=t(void 0===r?n.length-1:r,0),function(){for(var o=arguments,s=-1,a=t(o.length-r,0),l=Array(a);++s<a;)l[s]=o[r+s];s=-1;for(var u=Array(r+1);++s<r;)u[s]=o[s];return u[r]=i(l),e(n,this,u)}},Bn}function require_baseSetToString(){if(Hn)return Rn;Hn=1;var e=function requireConstant(){return Ln?zn:(Ln=1,zn=function constant(e){return function(){return e}})}(),t=require_defineProperty(),n=requireIdentity();return Rn=t?function(n,r){return t(n,"toString",{configurable:!0,enumerable:!1,value:e(r),writable:!0})}:n}function require_setToString(){if(Gn)return Un;Gn=1;var e=require_baseSetToString(),t=function require_shortOut(){if(Vn)return Wn;Vn=1;var e=Date.now;return Wn=function shortOut(t){var n=0,r=0;return function(){var i=e(),o=16-(i-r);if(r=i,o>0){if(++n>=800)return arguments[0]}else n=0;return t.apply(void 0,arguments)}},Wn}(),n=t(e);return Un=n}function require_createAssigner(){if(Yn)return Xn;Yn=1;var e=function require_baseRest(){if(Jn)return Kn;Jn=1;var e=requireIdentity(),t=require_overRest(),n=require_setToString();return Kn=function baseRest(r,i){return n(t(r,i,e),r+"")}}(),t=function require_isIterateeCall(){if(Zn)return Qn;Zn=1;var e=requireEq(),t=requireIsArrayLike(),n=require_isIndex(),r=requireIsObject();return Qn=function isIterateeCall(i,o,s){if(!r(s))return!1;var a=typeof o;return!!("number"==a?t(s)&&n(o,s.length):"string"==a&&o in s)&&e(s[o],i)}}();return Xn=function createAssigner(n){return e(function(e,r){var i=-1,o=r.length,s=o>1?r[o-1]:void 0,a=o>2?r[2]:void 0;for(s=n.length>3&&"function"==typeof s?(o--,s):void 0,a&&t(r[0],r[1],a)&&(s=o<3?void 0:s,o=1),e=Object(e);++i<o;){var l=r[i];l&&n(e,l,i,s)}return e})}}var rr=function requireMerge(){if(tr)return er;tr=1;var e=function require_baseMerge(){if(Mn)return Pn;Mn=1;var e=require_Stack(),t=require_assignMergeValue(),n=require_baseFor(),r=require_baseMergeDeep(),i=requireIsObject(),o=requireKeysIn(),s=require_safeGet();return Pn=function baseMerge(a,l,u,c,h){a!==l&&n(l,function(n,o){if(h||(h=new e),i(n))r(a,l,o,u,baseMerge,c,h);else{var d=c?c(s(a,o),n,o+"",a,l,h):void 0;void 0===d&&(d=n),t(a,o,d)}},o)},Pn}(),t=require_createAssigner()(function(t,n,r){e(t,n,r)});return er=t}(),ir=getDefaultExportFromCjs(rr);class Entity extends u{static typeId="ice-entity-designer:Entity";hasDerivedChildren(){return!0}entityFieldsComponent=[];constructor(e){super(Entity.arrangeParam(e)),this.syncEntityNameAndFields()}static arrangeParam(e){const t=ir({entityName:"Entity Name",fields:[],style:{strokeStyle:"#334155",fillStyle:"#ffffff",radius:8,lineWidth:1.5},headerStyle:{textColor:"#0f172a",backgroundColor:"#f1f5f9",fontSize:18,fontWeight:"bold",paddingTop:12,paddingLeft:14,paddingRight:14,paddingBottom:12},fieldStyle:{textColor:"#334155",fontSize:16,fontWeight:"normal",paddingTop:9,paddingLeft:14,paddingRight:14},dividerStyle:{strokeStyle:"#cbd5e1",fillStyle:"#cbd5e1",lineWidth:1}},e,{transformable:!1});return yt(t.entityName)&&(t.entityName="Entity Name"),yt(t.fields)&&(t.fields=[]),t}syncEntityNameAndFields(){if(this.entityNameComponent&&(this.removeChild(this.entityNameComponent),this.entityNameComponent=null),this.headerBackgroundComponent&&(this.removeChild(this.headerBackgroundComponent),this.headerBackgroundComponent=null),this.deviderLine&&(this.removeChild(this.deviderLine),this.deviderLine=null),this.entityFieldsComponent.length&&(this.removeChildren(this.entityFieldsComponent),this.entityFieldsComponent.length=0),this.state.entityName){if(this.entityNameComponent=new c({left:0,top:0,text:this.state.entityName,style:{strokeStyle:this.state.headerStyle.textColor,fillStyle:this.state.headerStyle.textColor,fontSize:this.state.headerStyle.fontSize,fontWeight:this.state.headerStyle.fontWeight,paddingTop:this.state.headerStyle.paddingTop,paddingLeft:this.state.headerStyle.paddingLeft,paddingRight:this.state.headerStyle.paddingRight,paddingBottom:this.state.headerStyle.paddingBottom},interactive:!1,linkable:!1,stroke:!1,showMinBoundingBox:!1,showMaxBoundingBox:!1}),this.state.headerStyle.backgroundColor&&"none"!==this.state.headerStyle.backgroundColor){const e=this.state.style.lineWidth||1.5,t=e/2;this.headerBackgroundComponent=new h({left:t,top:t,width:Math.max(this.state.width-e,0),height:Math.max(this.entityNameComponent.state.height-t,0),zIndex:this.entityNameComponent.state.zIndex-1,origin:"top-left",style:{fillStyle:this.state.headerStyle.backgroundColor,radius:Math.max((this.state.style.radius||0)-t,0),lineWidth:0},interactive:!1,linkable:!1,stroke:!1,showMinBoundingBox:!1,showMaxBoundingBox:!1}),this.addChild(this.headerBackgroundComponent)}this.addChild(this.entityNameComponent),this.deviderLine=new d({left:0,top:0,points:[[0,0],[this.state.width,0]],style:{strokeStyle:this.state.dividerStyle.strokeStyle,fillStyle:this.state.dividerStyle.fillStyle,lineWidth:this.state.dividerStyle.lineWidth},interactive:!1,linkable:!1}),this.addChild(this.deviderLine)}if(!yt(this.state.fields)){const e=this.state.fields.length;for(let t=0;t<e;t++){const n=this.state.fields[t],r=this.fieldDisplay(n),i=new c({left:0,top:0,text:r.text,style:{strokeStyle:this.state.fieldStyle.textColor,fillStyle:this.state.fieldStyle.textColor,fontSize:this.state.fieldStyle.fontSize,fontWeight:this.state.fieldStyle.fontWeight,paddingTop:this.state.fieldStyle.paddingTop,paddingLeft:this.state.fieldStyle.paddingLeft,paddingRight:this.state.fieldStyle.paddingRight,paddingBottom:t===e-1?12:0},interactive:!1,linkable:!1,stroke:!1,showMinBoundingBox:!1,showMaxBoundingBox:!1});this.entityFieldsComponent.push(i)}this.addChildren(this.entityFieldsComponent)}}fieldDisplay(e){const t=[];e.primary&&t.push("PK"),e.foreignKey&&t.push("FK");const n=[];e.unique&&n.push("UQ"),e.autoIncrement&&n.push("AI"),!1===e.nullable&&n.push("NN");const r=t.length?`${t.join(" ")} `:"",i=e.type?`${e.type}${e.length?`(${e.length})`:""}`:"",o=n.length?` ${n.join(" ")}`:"",s=void 0!==e.default?` = ${e.default}`:"",a=e.comment?` // ${e.comment}`:"";return{text:`${r}${e.name}${i?` ${i}`:""}${o}${s}${a}`}}calcComponentParams(){let e=this.state.width,t=0,n=0,r=0;this.entityNameComponent&&(r=this.entityNameComponent.state.height,t=r,e=Math.max(e,this.entityNameComponent.state.width),t+=this.deviderLine.state.height,n=t);for(let n=0;n<this.entityFieldsComponent.length;n++){const r=this.entityFieldsComponent[n];r.state.left=0,r.state.top=t,t+=r.state.height,e=Math.max(e,r.state.width)}if(this.deviderLine&&(this.deviderLine.state.points=[[0,n],[e,n]]),this.headerBackgroundComponent){const t=this.state.style.lineWidth||1.5,n=t/2;this.headerBackgroundComponent.state.left=n,this.headerBackgroundComponent.state.top=n,this.headerBackgroundComponent.state.width=Math.max(e-t,0),this.headerBackgroundComponent.state.height=Math.max(r-n,0)}const i=e,o=Math.max(t,this.state.height);return this.state.width=i,this.state.height=o,{width:i,height:o}}toEntityObject(){const e={name:this.state.entityName,columns:{}};return this.state.fields.forEach(t=>{const n={};void 0!==t.type&&(n.type=t.type),void 0!==t.length&&(n.length=t.length),t.primary&&(n.primary=!0),t.generated&&(n.generated=!0),t.autoIncrement&&(n.generated=!0,n.strategy="increment"),!1===t.nullable&&(n.nullable=!1),t.unique&&(n.unique=!0),void 0!==t.default&&(n.default=t.default),void 0!==t.comment&&(n.comment=t.comment),t.index&&(n.index=!0),e.columns[t.name]=n}),e}setState(e){const t=!yt(e.fields)||!yt(e.entityName);super.setState(e),t&&this.syncEntityNameAndFields()}addField(e){const t=[...this.state.fields||[],e];return this.setFields(t),this}removeField(e){const t=(this.state.fields||[]).filter(t=>t.name!==e);return this.setFields(t),this}setFields(e){return this.setState({fields:e}),this}}class Relation extends p{static typeId="ice-entity-designer:Relation";hasDerivedChildren(){return!0}constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const t=Relation.normalizeLinks(e||{}),n=t.relationType||"one-to-one",r=Relation.composeLabel(t,n);super({title:"Relation",transformable:!1,relationType:n,referencedColumnName:"id",sourceField:"id",targetField:"id",arrow:t.arrow||Relation.defaultArrow(n),...t,label:r,style:{...t.style||{},label:{fontSize:14,fillStyle:"#334155",backgroundColor:"#ffffff",...t.labelStyle||{},...(t.style||{}).label||{}}}})}static defaultArrow(e){switch(e){case"one-to-many":return"end";case"many-to-one":return"start";default:return"none"}}static normalizeLinks(e){if(!e||!e.links)return e||{};const t={top:"T",right:"R",bottom:"B",left:"L",center:"C"},n={...e.links};return n.start&&t[n.start.position]&&(n.start={...n.start,position:t[n.start.position]}),n.end&&t[n.end.position]&&(n.end={...n.end,position:t[n.end.position]}),{...e,links:n}}static cardinalityLabel(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const n={"one-to-many":["1","N"],"many-to-one":["N","1"],"many-to-many":["N","N"],"one-to-one":["1","1"]},[r,i]=n[e]||n["one-to-one"];return`${t.sourceCardinality||r} : ${t.targetCardinality||i}`}static composeLabel(e,t){return e.label?e.label:Relation.buildLabel(e,t)}static buildLabel(e,t){const n=[];e.onDelete&&n.push(`ON DELETE ${e.onDelete}`),e.onUpdate&&n.push(`ON UPDATE ${e.onUpdate}`);const r=Relation.cardinalityLabel(t,e);return n.length?`${r} (${n.join(", ")})`:r}toEntityObject(){const{title:e,relationType:t,referencedColumnName:n,sourceField:r,targetField:i,nullable:o,onDelete:s,onUpdate:a,joinTableName:l,fromKey:u,toKey:c}=this.state;let h,d,p,f,y,m;this.state.links&&this.state.links.start&&this.state.links.start.id&&(p=this.state.links.start.id,h=this.ice.findComponent(p),f=h.state.entityName),this.state.links&&this.state.links.end&&this.state.links.end.id&&(y=this.state.links.end.id,d=this.ice.findComponent(y),m=d.state.entityName);return{title:e,fromId:p,fromName:f,toId:y,toName:m,relationType:t,referencedColumnName:n,sourceField:r,targetField:i,nullable:!1!==o&&void 0,onDelete:s,onUpdate:a,joinTableName:l,fromKey:u,toKey:c}}}function applyDesignerChrome(e){if(!e||"function"!=typeof e.setChrome)return e;const t="function"==typeof e.getTheme?e.getTheme():null;return e.setChrome(function designerChromeFromTheme(e){const t=e&&e.semantic||{},n=t.primary||"#0D6EFD",r=t.success||"#198754",i=t.warning||"#FFC107";return{selection:{stroke:n,fill:withAlpha(n,.12),lineWidth:1,lineDash:[]},handle:{fill:n,stroke:"#ffffff",activeFill:i,lineWidth:1},linkHook:{fill:r,stroke:"#ffffff",lineWidth:1},slot:{fill:r,stroke:"#ffffff",hoverFill:i,lineWidth:1},guide:{color:n,lineWidth:1},textSelection:{color:withAlpha(n,.28)}}}(t)),e}function withAlpha(e,t){if("string"!=typeof e)return e;const n=e.trim();if("#"===n.charAt(0)){let e=n.slice(1);if(3===e.length&&(e=e[0]+e[0]+e[1]+e[1]+e[2]+e[2]),6!==e.length)return n;return`rgba(${parseInt(e.slice(0,2),16)},${parseInt(e.slice(2,4),16)},${parseInt(e.slice(4,6),16)},${t})`}return 0===n.indexOf("rgb(")?n.replace("rgb(","rgba(").replace(")",`,${t})`):n}function enableDesignerAlignmentGuides(e){return e&&e.alignmentGuide&&"function"==typeof e.alignmentGuide.enable?(e.alignmentGuide.enable({threshold:2}),e):e}function typeIdOf(e){const t=e&&e.constructor;return t&&"string"==typeof t.typeId?t.typeId:void 0}function isEntity(e){return typeIdOf(e)===Entity.typeId}function isRelation(e){return typeIdOf(e)===Relation.typeId}const or="data",sr=[{key:"display",type:"boolean"},{key:"zIndex",type:"number"},{key:"opacity",type:"number",doc:"子树不透明度(引擎 1.3 起)"},{key:"transform",type:"object"},{key:"origin",type:"string"},{key:"originX",type:"number"},{key:"originY",type:"number"},{key:"lineDash",type:"array"},{key:"lineDashOffset",type:"number"},{key:"lineDashFlow",type:"boolean"},{key:"lineDashFlowSpeed",type:"number"},{key:"lineBorder",type:"boolean"},{key:"lineBorderWidth",type:"number"},{key:"lineBorderColor",type:"string"},{key:"fill",type:"boolean"},{key:"stroke",type:"boolean"},{key:"linkable",type:"boolean"},{key:"linkEditable",type:"boolean"},{key:"transformable",type:"boolean"},{key:"animations",type:"object"}],ar=[{key:"id",type:"string",required:!0},{key:"typeId",type:"string"},{key:"left",type:"number"},{key:"top",type:"number"},{key:"width",type:"number"},{key:"height",type:"number"},{key:"relationType",type:"string"},{key:"referencedColumnName",type:"string"},{key:"sourceField",type:"string"},{key:"targetField",type:"string"},{key:"nullable",type:"boolean"},{key:"onDelete",type:"string"},{key:"onUpdate",type:"string"},{key:"joinTableName",type:"string"},{key:"fromKey",type:"string"},{key:"toKey",type:"string"},{key:"sourceCardinality",type:"string"},{key:"targetCardinality",type:"string"},{key:"label",type:"string"},{key:"style.label",type:"object",doc:"标签外观(引擎 2.4 起归到 style.label)"},{key:"style",type:"object"},{key:"arrow",type:"string"},{key:"lineType",type:"string"},{key:"escapeDistance",type:"number"},{key:"routeType",type:"string"},{key:"routeOffset",type:"number"},{key:"curveType",type:"string"},{key:"linkShape",type:"string",doc:"连线形态(visio/bezier)"},{key:"lineDash",type:"array"},{key:"lineWidth",type:"number"},{key:"arrowLength",type:"number"},{key:"arrowAngel",type:"number"},{key:"arrowStyle",type:"string"},{key:"startPoint",type:"array"},{key:"endPoint",type:"array"},{key:"links",type:"object",validate:function validateLinks(e,t,n){["start","end"].forEach(r=>{const i=e[r];void 0!==i&&(i&&"object"==typeof i&&!Array.isArray(i)?(void 0!==i.id&&"string"!=typeof i.id&&n.push(`${t}.${r}.id must be a string when present`),void 0!==i.position&&"string"!=typeof i.position&&n.push(`${t}.${r}.position must be a string when present`)):n.push(`${t}.${r} must be an object when present`))})}},{key:"sourceId",type:"string",doc:"连线起点宿主 id(与 links.start.id 同步)"},{key:"targetId",type:"string",doc:"连线终点宿主 id(与 links.end.id 同步)"},{key:"draggable",type:"boolean"},{key:"interactive",type:"boolean"},{key:"showMinBoundingBox",type:"boolean"},{key:"showMaxBoundingBox",type:"boolean"}],lr=[...[{key:"id",type:"string",required:!0},{key:"typeId",type:"string"},{key:"left",type:"number"},{key:"top",type:"number"},{key:"width",type:"number"},{key:"height",type:"number"},{key:"entityName",type:"string",required:!0},{key:"fields",type:"array",validate:function validateFields(e,t,n){e.forEach((e,r)=>{e&&"object"==typeof e&&!Array.isArray(e)?void 0!==e.name&&"string"!=typeof e.name&&n.push(`${t}[${r}].name must be a string when present`):n.push(`${t}[${r}] must be an object`)})}},{key:"style",type:"object"},{key:"headerStyle",type:"object"},{key:"fieldStyle",type:"object"},{key:"dividerStyle",type:"object"},{key:"draggable",type:"boolean"},{key:"interactive",type:"boolean"},{key:"showMinBoundingBox",type:"boolean"},{key:"showMaxBoundingBox",type:"boolean"}],...sr],ur=[...ar,...sr];function pickDocumentNode(e,t){const n={};t.forEach(t=>{const r=e?e[t.key]:void 0;void 0!==r&&(n[t.key]=r)});const r=e?e[or]:void 0;return void 0!==r&&(n[or]=r),n}function validateDocumentNode(e,t,n,r){e&&"object"==typeof e&&!Array.isArray(e)?n.forEach(n=>{const i=e[n.key];void 0!==i?!function typeMatches(e,t){switch(t){case void 0:case"any":return!0;case"array":return Array.isArray(e);case"object":return!!e&&"object"==typeof e&&!Array.isArray(e);case"number":return"number"==typeof e;case"boolean":return"boolean"==typeof e;default:return"string"==typeof e}}(i,n.type)?r.push(`${t}.${n.key} must be a ${n.type} when present`):n.validate&&n.validate(i,`${t}.${n.key}`,r):n.required&&r.push(`${t}.${n.key} is required`)}):r.push(`${t} must be an object`)}const cr=[{key:"id",type:"string",required:!0},{key:"typeId",type:"string"}];function validateNode(e,t,n,r){if(!e||"object"!=typeof e||Array.isArray(e))return void r.push(`${t} must be an object`);const i=void 0===e.typeId?n:e.typeId;!function isEntityTypeId(e){return e===Entity.typeId}(i)?!function isRelationTypeId(e){return e===Relation.typeId}(i)?validateDocumentNode(e,t,cr,r):validateDocumentNode(e,t,ur,r):validateDocumentNode(e,t,lr,r)}function validateSchema(e){const t=[],n=e.filter(isEntity),r=e.filter(isRelation),i=new Map;return n.forEach(e=>{const n=(e.state.entityName||"").trim();if(!n)return void t.push({level:"error",message:"存在未命名的 Entity",componentId:e.state.id});i.has(n)||i.set(n,[]),i.get(n).push(e);const r=e.state.fields||[];0===r.length&&t.push({level:"warning",message:`Entity "${n}" 没有任何字段`,componentId:e.state.id});const o=new Set;r.forEach(r=>{const i=(r.name||"").trim();i?o.has(i)?t.push({level:"error",message:`Entity "${n}" 存在重复字段 "${i}"`,componentId:e.state.id}):o.add(i):t.push({level:"error",message:`Entity "${n}" 存在未命名字段`,componentId:e.state.id}),r.type||t.push({level:"warning",message:`Entity "${n}" 的字段 "${i||"(未命名)"}" 未设置类型`,componentId:e.state.id})})}),i.forEach((e,n)=>{e.length>1&&t.push({level:"error",message:`存在重复的 Entity 名称 "${n}"`})}),r.forEach(e=>{const r=e.state.links||{},i=r.start&&r.start.id,o=r.end&&r.end.id,s=e.state.relationType;if(!i||!o)return void t.push({level:"error",message:"存在没有完整起点/终点的 Relation",componentId:e.state.id});const a=n.some(e=>e.state.id===i),l=n.some(e=>e.state.id===o);a&&l||t.push({level:"error",message:"Relation 连接到了不存在的 Entity",componentId:e.state.id}),s?"many-to-many"!==s||e.state.joinTableName||t.push({level:"warning",message:"many-to-many 关系建议设置 joinTableName",componentId:e.state.id}):t.push({level:"error",message:"Relation 未设置关系类型",componentId:e.state.id})}),t}function toWords(e){return function convertToString(e){const t=e||"";return"string"==typeof t?t:String(t)}(e).match(/[A-Z\xC0-\xD6\xD8-\xDE]?[a-z\xDF-\xF6\xF8-\xFF]+|[A-Z\xC0-\xD6\xD8-\xDE]+(?![a-z\xDF-\xF6\xF8-\xFF])|\d+/g)||[]}function camelCase(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return function toCamelCase(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n="";for(let r=0,i=e.length;r<i;r++){let i=e[r].toLowerCase();(t||0!==r)&&(i=i.substr(0,1).toUpperCase()+i.substr(1)),n+=i}return n}(toWords(e),t)}var hr=[],dr=[],pr={},fr={},yr={};function sanitizeRule(e){return"string"==typeof e?new RegExp("^"+e+"$","i"):e}function restoreCase(e,t){return e===t?t:e===e.toLowerCase()?t.toLowerCase():e===e.toUpperCase()?t.toUpperCase():e[0]===e[0].toUpperCase()?t.charAt(0).toUpperCase()+t.substr(1).toLowerCase():t.toLowerCase()}function replace(e,t){return e.replace(t[0],function(n,r){var i=function interpolate(e,t){return e.replace(/\$(\d{1,2})/g,function(e,n){return t[n]||""})}(t[1],arguments);return restoreCase(""===n?e[r-1]:n,i)})}function sanitizeWord(e,t,n){if(!e.length||pr.hasOwnProperty(e))return t;for(var r=n.length;r--;){var i=n[r];if(i[0].test(t))return replace(t,i)}return t}function replaceWord(e,t,n){return function(r){var i=r.toLowerCase();return t.hasOwnProperty(i)?restoreCase(r,i):e.hasOwnProperty(i)?restoreCase(r,e[i]):sanitizeWord(i,r,n)}}function checkWord(e,t,n){return function(r){var i=r.toLowerCase();return!!t.hasOwnProperty(i)||!e.hasOwnProperty(i)&&sanitizeWord(i,i,n)===i}}function pluralize(e,t,n){return(n?t+" ":"")+(1===t?pluralize.singular(e):pluralize.plural(e))}pluralize.plural=replaceWord(yr,fr,hr),pluralize.isPlural=checkWord(yr,fr,hr),pluralize.singular=replaceWord(fr,yr,dr),pluralize.isSingular=checkWord(fr,yr,dr),pluralize.addPluralRule=function(e,t){hr.push([sanitizeRule(e),t])},pluralize.addSingularRule=function(e,t){dr.push([sanitizeRule(e),t])},pluralize.addUncountableRule=function(e){"string"!=typeof e?(pluralize.addPluralRule(e,"$0"),pluralize.addSingularRule(e,"$0")):pr[e.toLowerCase()]=!0},pluralize.addIrregularRule=function(e,t){t=t.toLowerCase(),e=e.toLowerCase(),yr[e]=t,fr[t]=e},[["I","we"],["me","us"],["he","they"],["she","they"],["them","them"],["myself","ourselves"],["yourself","yourselves"],["itself","themselves"],["herself","themselves"],["himself","themselves"],["themself","themselves"],["is","are"],["was","were"],["has","have"],["this","these"],["that","those"],["echo","echoes"],["dingo","dingoes"],["volcano","volcanoes"],["tornado","tornadoes"],["torpedo","torpedoes"],["genus","genera"],["viscus","viscera"],["stigma","stigmata"],["stoma","stomata"],["dogma","dogmata"],["lemma","lemmata"],["schema","schemata"],["anathema","anathemata"],["ox","oxen"],["axe","axes"],["die","dice"],["yes","yeses"],["foot","feet"],["eave","eaves"],["goose","geese"],["tooth","teeth"],["quiz","quizzes"],["human","humans"],["proof","proofs"],["carve","carves"],["valve","valves"],["looey","looies"],["thief","thieves"],["groove","grooves"],["pickaxe","pickaxes"],["passerby","passersby"]].forEach(function(e){return pluralize.addIrregularRule(e[0],e[1])}),[[/s?$/i,"s"],[/[^\u0000-\u007F]$/i,"$0"],[/([^aeiou]ese)$/i,"$1"],[/(ax|test)is$/i,"$1es"],[/(alias|[^aou]us|t[lm]as|gas|ris)$/i,"$1es"],[/(e[mn]u)s?$/i,"$1s"],[/([^l]ias|[aeiou]las|[ejzr]as|[iu]am)$/i,"$1"],[/(alumn|syllab|vir|radi|nucle|fung|cact|stimul|termin|bacill|foc|uter|loc|strat)(?:us|i)$/i,"$1i"],[/(alumn|alg|vertebr)(?:a|ae)$/i,"$1ae"],[/(seraph|cherub)(?:im)?$/i,"$1im"],[/(her|at|gr)o$/i,"$1oes"],[/(agend|addend|millenni|dat|extrem|bacteri|desiderat|strat|candelabr|errat|ov|symposi|curricul|automat|quor)(?:a|um)$/i,"$1a"],[/(apheli|hyperbat|periheli|asyndet|noumen|phenomen|criteri|organ|prolegomen|hedr|automat)(?:a|on)$/i,"$1a"],[/sis$/i,"ses"],[/(?:(kni|wi|li)fe|(ar|l|ea|eo|oa|hoo)f)$/i,"$1$2ves"],[/([^aeiouy]|qu)y$/i,"$1ies"],[/([^ch][ieo][ln])ey$/i,"$1ies"],[/(x|ch|ss|sh|zz)$/i,"$1es"],[/(matr|cod|mur|sil|vert|ind|append)(?:ix|ex)$/i,"$1ices"],[/\b((?:tit)?m|l)(?:ice|ouse)$/i,"$1ice"],[/(pe)(?:rson|ople)$/i,"$1ople"],[/(child)(?:ren)?$/i,"$1ren"],[/eaux$/i,"$0"],[/m[ae]n$/i,"men"],["thou","you"]].forEach(function(e){return pluralize.addPluralRule(e[0],e[1])}),[[/s$/i,""],[/(ss)$/i,"$1"],[/(wi|kni|(?:after|half|high|low|mid|non|night|[^\w]|^)li)ves$/i,"$1fe"],[/(ar|(?:wo|[ae])l|[eo][ao])ves$/i,"$1f"],[/ies$/i,"y"],[/\b([pl]|zomb|(?:neck|cross)?t|coll|faer|food|gen|goon|group|lass|talk|goal|cut)ies$/i,"$1ie"],[/\b(mon|smil)ies$/i,"$1ey"],[/\b((?:tit)?m|l)ice$/i,"$1ouse"],[/(seraph|cherub)im$/i,"$1"],[/(x|ch|ss|sh|zz|tto|go|cho|alias|[^aou]us|t[lm]as|gas|(?:her|at|gr)o|[aeiou]ris)(?:es)?$/i,"$1"],[/(analy|diagno|parenthe|progno|synop|the|empha|cri|ne)(?:sis|ses)$/i,"$1sis"],[/(movie|twelve|abuse|e[mn]u)s$/i,"$1"],[/(test)(?:is|es)$/i,"$1is"],[/(alumn|syllab|vir|radi|nucle|fung|cact|stimul|termin|bacill|foc|uter|loc|strat)(?:us|i)$/i,"$1us"],[/(agend|addend|millenni|dat|extrem|bacteri|desiderat|strat|candelabr|errat|ov|symposi|curricul|quor)a$/i,"$1um"],[/(apheli|hyperbat|periheli|asyndet|noumen|phenomen|criteri|organ|prolegomen|hedr|automat)a$/i,"$1on"],[/(alumn|alg|vertebr)ae$/i,"$1a"],[/(cod|mur|sil|vert|ind)ices$/i,"$1ex"],[/(matr|append)ices$/i,"$1ix"],[/(pe)(rson|ople)$/i,"$1rson"],[/(child)ren$/i,"$1"],[/(eau)x?$/i,"$1"],[/men$/i,"man"]].forEach(function(e){return pluralize.addSingularRule(e[0],e[1])}),["adulthood","advice","agenda","aid","aircraft","alcohol","ammo","analytics","anime","athletics","audio","bison","blood","bream","buffalo","butter","carp","cash","chassis","chess","clothing","cod","commerce","cooperation","corps","debris","diabetes","digestion","elk","energy","equipment","excretion","expertise","firmware","flounder","fun","gallows","garbage","graffiti","hardware","headquarters","health","herpes","highjinks","homework","housework","information","jeans","justice","kudos","labour","literature","machinery","mackerel","mail","media","mews","moose","music","mud","manga","news","only","personnel","pike","plankton","pliers","police","pollution","premises","rain","research","rice","salmon","scissors","series","sewage","shambles","shrimp","software","species","staff","swine","tennis","traffic","transportation","trout","tuna","wealth","welfare","whiting","wildebeest","wildlife","you",/pok[eé]mon$/i,/[^aeiou]ese$/i,/deer$/i,/fish$/i,/measles$/i,/o[iu]s$/i,/pox$/i,/sheep$/i].forEach(pluralize.addUncountableRule);const mr={number:"int",int:"int",integer:"int",smallint:"smallint",bigint:"bigint",float:"float",double:"double",real:"real",decimal:"decimal",numeric:"numeric",string:"varchar",varchar:"varchar",char:"char",text:"text",boolean:"boolean",bool:"boolean",date:"date",datetime:"datetime",timestamp:"timestamp",time:"time",json:"json",jsonb:"jsonb",uuid:"uuid",enum:"enum",blob:"blob",binary:"blob","simple-array":"simple-array","simple-json":"simple-json"},gr=["varchar","char","nvarchar","nchar","text","uuid"];function normalizeColumn(e){const t={},n=function mapColumnType(e){if(null==e||""===e)return;const t=String(e).toLowerCase();return mr[t]||String(e)}(e.type);if(void 0!==n&&(t.type=n),void 0!==e.length&&null!==e.length&&""!==e.length){const r=String(e.length).trim();if("decimal"===n||"numeric"===n){const[e,n]=r.split(",").map(e=>e.trim());e&&(t.precision=Number(e)),n&&(t.scale=Number(n))}else n&&gr.indexOf(n)>=0&&(t.length=e.length)}return e.primary&&(t.primary=!0),e.generated&&(t.generated=!0),e.autoIncrement&&(t.generated=!0,t.strategy="increment"),void 0!==e.strategy&&(t.strategy=e.strategy),!1===e.nullable&&(t.nullable=!1),e.unique&&(t.unique=!0),void 0!==e.default&&(t.default=e.default),void 0!==e.comment&&(t.comment=e.comment),e.index&&(t.index=!0),t}function normalizeColumns(e){const t={};return Object.keys(e||{}).forEach(n=>{t[n]=normalizeColumn(e[n])}),t}function buildJoinColumn(e,t){return{name:e||t||"id",referencedColumnName:t||"id"}}function toSchemaObject(e){const t=[...e],n=[],r={};for(let e=0;e<t.length;e++){const i=t[e];if(isRelation(i))n.push(i);else if(isEntity(i)){const e=i.toEntityObject();e.columns=normalizeColumns(e.columns),r[i.state.id]=e}}for(let e=0;e<n.length;e++){const t=n[e],{fromId:i,fromName:o,toId:s,toName:a,relationType:l,referencedColumnName:u,sourceField:c,targetField:h,nullable:d,onDelete:p,onUpdate:f,joinTableName:y,fromKey:m,toKey:g}=t.toEntityObject(),_=r[i],b=r[s];if(!_||!b)continue;_.relations||(_.relations={}),b.relations||(b.relations={});const v=m||camelCase(a),k=g||camelCase(o),w={};!1===d&&(w.nullable=!1),p&&(w.onDelete=p),f&&(w.onUpdate=f),"one-to-one"===l?(b.relations[k]={type:l,target:o,joinColumn:buildJoinColumn(h||u,c||u),...w},_.relations[v]={type:l,target:a,inverseSide:k}):"one-to-many"===l?(_.relations[v]={type:l,target:a,inverseSide:k},b.relations[k]={type:"many-to-one",target:o,joinColumn:buildJoinColumn(h||u,c||u),...w}):"many-to-one"===l?(_.relations[v]={type:l,target:a,joinColumn:buildJoinColumn(c||u,h||u),...w},b.relations[k]={type:"one-to-many",target:o,inverseSide:v}):"many-to-many"===l&&(_.relations[`${pluralize(v)}`]={type:l,target:a,joinTable:!y||{name:y}},b.relations[`${pluralize(k)}`]={type:l,target:o,inverseSide:`${pluralize(v)}`})}const i=[];for(const e in r)i.push(r[e]);return i}function toSchemaString(e){return JSON.stringify(toSchemaObject(e))}function registerIEDType(e,t){e.registerType(t.typeId,t)}class EntityDesigner{selectedId=null;__changeListeners=[];__mousedownHandler=e=>this.__handleMouseDown(e);__undoStack=[];__redoStack=[];__historyEnabled=!0;__maxHistory=100;constructor(e){this.ice=e,applyDesignerChrome(this.ice),enableDesignerAlignmentGuides(this.ice),registerIEDType(this.ice,Entity),registerIEDType(this.ice,Relation),this.ice.evtBus.on("mousedown",this.__mousedownHandler,this)}get entities(){return this.ice.childNodes.filter(e=>isEntity(e))}get relations(){return this.ice.childNodes.filter(e=>isRelation(e))}get selected(){return this.selectedId?this.ice.findComponent(this.selectedId):null}select(e){return this.selectedId=e,this}createEntity(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.captureHistory();const t=this.entities.length,n=new Entity({left:120+t%4*220,top:120+260*Math.floor(t/4),entityName:"NewEntity",fields:[],...e});return this.ice.addChild(n),this.select(n.state.id),this.__emitChange(),n}createRelation(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.captureHistory();const t=e.links||{start:{id:e.sourceId||e.fromId,position:e.startPosition||"R"},end:{id:e.targetId||e.toId,position:e.endPosition||"L"}},n=e.sourceId||e.fromId||t.start&&t.start.id,r=e.targetId||e.toId||t.end&&t.end.id,i=t.start&&t.start.position||e.startPosition||"R",o=t.end&&t.end.position||e.endPosition||"L",s=n?this.ice.findComponent(n):null,a=r?this.ice.findComponent(r):null,l=s?this.__slotPoint(s,i):null,u=a?this.__slotPoint(a,o):null,c=new Relation({relationType:e.relationType||"one-to-many",sourceField:e.sourceField||"id",targetField:e.targetField||"id",links:t,startPoint:l||[0,0],endPoint:u||[10,10],...e});return this.ice.addChild(c),this.select(c.state.id),this.__emitChange(),c}updateEntity(e,t){const n=this.ice.findComponent(e);return isEntity(n)&&(this.captureHistory(),n.setState(t),this.__emitChange()),n}updateRelation(e,t){const n=this.ice.findComponent(e);if(isRelation(n)){this.captureHistory();const e={...n.state,...t},r=Relation.buildLabel(e,e.relationType||"one-to-one");n.setState({...t,label:r}),this.__emitChange()}return n}removeComponent(e){const t=this.ice.findComponent(e);if(t){if(this.captureHistory(),isEntity(t)){this.relations.filter(t=>{const n=t.state.links||{};return n.start&&n.start.id===e||n.end&&n.end.id===e}).forEach(e=>this.ice.removeChild(e))}this.ice.removeChild(t),this.selectedId===e&&(this.selectedId=null),this.__emitChange()}}toSchemaObject(){return toSchemaObject(this.ice.childNodes)}toSchemaString(){return toSchemaString(this.ice.childNodes)}validate(){return validateSchema(this.ice.childNodes)}serializeProject(){const e={version:1,schemaVersion:1,createTime:f(this.ice&&this.ice.documentMeta&&this.ice.documentMeta.createTime)||this.__rememberCreateTime(void 0),entities:this.entities.map(e=>this.__entitySnapshot(e)),relations:this.relations.map(e=>this.__relationSnapshot(e))};return JSON.stringify(e)}__rememberCreateTime(e){const t=this.ice;t&&"object"==typeof t&&(t.documentMeta&&"object"==typeof t.documentMeta||(t.documentMeta={}));const n=f(e);if(n)return t&&t.documentMeta&&(t.documentMeta.createTime=n),n;const r=(new Date).toISOString();return t&&t.documentMeta&&(t.documentMeta.createTime=r),r}loadProject(e){if(!e)return{loaded:!1,entities:0,relations:0,unknownTypes:[],skipped:[]};const t=this.__parseProject(e);if(!t)return{loaded:!1,entities:0,relations:0,unknownTypes:[],skipped:[]};this.captureHistory();const n=this.__applySnapshot(t);return this.__emitChange(),n}__entitySnapshot(e){return pickDocumentNode({...e.state||{},typeId:Entity.typeId},lr)}__slotPoint(e,t){const n=e.getMinBoundingBox(!0),r=n.center[0],i=n.center[1];switch(t){case"T":return[r,n.tl[1]];case"B":return[r,n.br[1]];case"L":return[n.tl[0],i];case"R":return[n.tr[0],i];default:return[r,i]}}__relationSnapshot(e){return pickDocumentNode({...e.state||{},typeId:Relation.typeId},ur)}__parseProject(e){const t=JSON.parse(e);if(!t||!Array.isArray(t.entities))return null;if(void 0!==t.schemaVersion&&1!==t.schemaVersion)throw new Error(`Unsupported project schemaVersion: ${t.schemaVersion}`);const n=function validateProjectSnapshot(e){const t=[];return!e||"object"!=typeof e||Array.isArray(e)?{valid:!1,errors:["root must be an object"]}:(void 0!==e.schemaVersion&&"number"!=typeof e.schemaVersion&&t.push("schemaVersion must be a number when present"),void 0!==e.createTime&&"string"!=typeof e.createTime&&t.push("createTime must be a string when present"),Array.isArray(e.entities)?e.entities.forEach((e,n)=>{validateNode(e,`entities[${n}]`,Entity.typeId,t)}):t.push("entities must be an array"),void 0===e.relations||Array.isArray(e.relations)?Array.isArray(e.relations)&&e.relations.forEach((e,n)=>{validateNode(e,`relations[${n}]`,Relation.typeId,t)}):t.push("relations must be an array when present"),{valid:0===t.length,errors:t})}(t);if(!n.valid)throw new Error(`Invalid project snapshot:\n${n.errors.join("\n")}`);return t}__applyProject(e){const t=this.__parseProject(e);t&&this.__applySnapshot(t)}__resolveTypeId(e,t){return e&&"string"==typeof e.typeId&&e.typeId?e.typeId:"entities"===t?Entity.typeId:Relation.typeId}__resolveComponentClass(e){const t=this.ice;if("function"==typeof t.getType){const n=t.getType(e);if("function"==typeof n)return n}else if(t.typeMapping&&"function"==typeof t.typeMapping[e])return t.typeMapping[e];return e===Entity.typeId?Entity:e===Relation.typeId?Relation:null}__recordUnknownType(e,t,n,r,i){-1===e.unknownTypes.indexOf(r)&&e.unknownTypes.push(r);const o=i&&"string"==typeof i.id?i.id:void 0;e.skipped.push(void 0===o?{bucket:t,index:n,typeId:r}:{bucket:t,index:n,typeId:r,id:o})}__applySnapshot(e){const t=this.ice.renderer;t&&t.stop();const n={loaded:!0,entities:0,relations:0,unknownTypes:[],skipped:[]};try{this.ice.clearAll(),this.__rememberCreateTime(e&&e.createTime),this.ice.ctx&&"function"==typeof this.ice.ctx.clearRect&&(this.ice.ctx.setTransform(1,0,0,1,0,0),this.ice.ctx.clearRect(0,0,this.ice.canvasWidth||0,this.ice.canvasHeight||0));const createNode=(e,t,r)=>{const i=this.__resolveTypeId(e,t),o=this.__resolveComponentClass(i);if("function"!=typeof o)return this.__recordUnknownType(n,t,r,i,e),null;const s=new o(e);return delete s.state.typeId,delete s.props.typeId,this.ice.addChild(s),s},collect=(e,t,r)=>{const i=createNode(e,t,r);isEntity(i)?n.entities+=1:isRelation(i)&&(n.relations+=1)};e.entities.forEach((e,t)=>collect(e,"entities",t)),(e.relations||[]).forEach((e,t)=>collect(e,"relations",t)),this.selectedId=null}finally{if(t){const e=t.getRenderMode();t.setRenderMode("full"),t.start(),this.ice.dirty=!0,setTimeout(()=>{t.setRenderMode(e)},50)}}return n}__applyHistorySnapshot(e){this.__historyEnabled=!1;try{this.__applyProject(e),this.selectedId=null}finally{this.__historyEnabled=!0}}canUndo(){return this.__undoStack.length>0}canRedo(){return this.__redoStack.length>0}captureHistory(){this.__historyEnabled&&(this.__undoStack.push(this.serializeProject()),this.__undoStack.length>this.__maxHistory&&this.__undoStack.shift(),this.__redoStack.length=0)}undo(){if(!this.canUndo())return;const e=this.serializeProject(),t=this.__undoStack.pop();try{this.__applyHistorySnapshot(t)}catch(e){throw this.__undoStack.push(t),e}this.__redoStack.push(e),this.__emitChange()}redo(){if(!this.canRedo())return;const e=this.serializeProject(),t=this.__redoStack.pop();try{this.__applyHistorySnapshot(t)}catch(e){throw this.__redoStack.push(t),e}this.__undoStack.push(e),this.__emitChange()}subscribe(e){return"function"!=typeof e?()=>{}:(this.__changeListeners.push(e),()=>{const t=this.__changeListeners.indexOf(e);-1!==t&&this.__changeListeners.splice(t,1)})}__emitChange(){if(!this.__changeListeners.length)return;const e=this.serializeProject();this.__changeListeners.slice().forEach(t=>t(e))}dispose(){this.ice.evtBus.off("mousedown",this.__mousedownHandler,this)}__handleMouseDown(e){const t=e&&e.param&&e.param.component;if(!t)return;let n=t;for(;n.parentNode;)n=n.parentNode;(isEntity(n)||isRelation(n))&&this.select(n.state.id)}}function createEmptyPath$1(e){const t=e.path2D&&e.path2D.constructor;return t?new t:null}function createEmptyPath(e){const t=e.path2D&&e.path2D.constructor;return t?new t:null}function localBox(e){return{w:e.state.width,h:e.state.height,x:0-e.state.localOrigin[0],y:0-e.state.localOrigin[1]}}class BpmnTaskIcon extends y{static typeId="ice-entity-designer:BpmnTaskIcon";createPathObject(){const{w:e,h:t,x:n,y:r}=localBox(this),i=createEmptyPath(this);if(!i)return this.path2D;const o=n+e/2,s=r+t/2,a=Math.min(e,t)/2,l=this.state.taskType||"none";if("user"===l)i.moveTo(o,s-a),i.arc(o,s-.35*a,.34*a,0,2*Math.PI),i.moveTo(o-.62*a,s+.72*a),i.arc(o,s+.72*a,.62*a,Math.PI,0);else if("service"===l){const e=8;for(let t=0;t<e;t++){const n=t*Math.PI*2/e,r=o+Math.cos(n)*a*.55,l=s+Math.sin(n)*a*.55,u=o+Math.cos(n)*a,c=s+Math.sin(n)*a;i.moveTo(r,l),i.lineTo(u,c)}i.moveTo(o+.34*a,s),i.arc(o,s,.34*a,0,2*Math.PI)}else"script"===l?(i.moveTo(o-.7*a,s-.85*a),i.lineTo(o+.7*a,s-.85*a),i.lineTo(o+.7*a,s+.5*a),i.moveTo(o-.7*a,s-.85*a),i.lineTo(o-.7*a,s+.5*a),i.moveTo(o-.7*a,s+.6*a),i.lineTo(o-.25*a,s+.85*a),i.lineTo(o+.25*a,s+.6*a),i.lineTo(o+.7*a,s+.85*a)):"send"===l?(i.moveTo(o-.85*a,s-.55*a),i.lineTo(o+.85*a,s-.55*a),i.lineTo(o+.85*a,s+.55*a),i.lineTo(o-.85*a,s+.55*a),i.closePath(),i.moveTo(o-.85*a,s-.55*a),i.lineTo(o,s+.12*a),i.lineTo(o+.85*a,s-.55*a)):"receive"===l?(i.moveTo(o-.85*a,s-.55*a),i.lineTo(o+.85*a,s-.55*a),i.lineTo(o+.85*a,s+.55*a),i.lineTo(o-.85*a,s+.55*a),i.closePath()):"manual"===l&&(i.moveTo(o-.7*a,s+.6*a),i.lineTo(o-.45*a,s-.5*a),i.lineTo(o+.45*a,s-.5*a),i.lineTo(o+.7*a,s+.6*a),i.closePath());return this.path2D=i,this.path2D}}class BpmnSubprocessMarker extends y{static typeId="ice-entity-designer:BpmnSubprocessMarker";createPathObject(){const{w:e,h:t,x:n,y:r}=localBox(this),i=createEmptyPath(this);return i?(i.moveTo(n,r),i.lineTo(n+e,r),i.lineTo(n+e,r+t),i.lineTo(n,r+t),i.closePath(),i.moveTo(n+e/2,r+.22*t),i.lineTo(n+e/2,r+.78*t),i.moveTo(n+.22*e,r+t/2),i.lineTo(n+.78*e,r+t/2),this.path2D=i,this.path2D):this.path2D}}const _r={terminator:{label:"开始 / 结束",width:180,height:60,fill:"#dcfce7",stroke:"#16a34a",radius:30,shape:"rect"},process:{label:"处理",width:220,height:80,fill:"#e0e7ff",stroke:"#4f46e5",radius:10,shape:"rect"},decision:{label:"判定",width:200,height:120,fill:"#fef3c7",stroke:"#d97706",shape:"diamond"},io:{label:"输入 / 输出",width:220,height:80,fill:"#e0f2fe",stroke:"#0284c7",shape:"parallelogram"},bpmnEvent:{label:"事件",width:56,height:56,fill:"#ffffff",stroke:"#475569",shape:"event",lineWidth:1.4,eventKind:"start",trigger:"none",labelPlacement:"top-left"},bpmnTask:{label:"任务",width:180,height:90,fill:"#ffffff",stroke:"#64748b",radius:10,shape:"rect",taskType:"none",labelPlacement:"center"},bpmnGateway:{label:"网关",width:70,height:70,fill:"#ffffff",stroke:"#64748b",shape:"gateway",gatewayType:"exclusive",labelPlacement:"top-left"},bpmnSubprocess:{label:"子流程",width:200,height:110,fill:"#ffffff",stroke:"#64748b",radius:10,shape:"rect",labelPlacement:"center"},bpmnDataObject:{label:"数据对象",width:130,height:80,fill:"#ffffff",stroke:"#64748b",shape:"dataObject",labelPlacement:"center"},bpmnAnnotation:{label:"注释",width:200,height:80,fill:"#ffffff",stroke:"#64748b",shape:"annotation",lineDash:[],labelPlacement:"center"},bpmnPool:{label:"池",width:900,height:260,fill:"#f8fafc",stroke:"#94a3b8",shape:"lane",band:"top",bandSize:32,labelPlacement:"top-left"},bpmnLane:{label:"泳道",width:900,height:130,fill:"#ffffff",stroke:"#cbd5e1",shape:"lane",band:"left",bandSize:32,labelPlacement:"top-left",transparent:!0}},br=["bpmnPool","bpmnLane","bpmnAnnotation","bpmnDataObject"],vr={rect:h,diamond:class FlowDiamond extends y{static typeId="ice-entity-designer:FlowDiamond";createPathObject(){const e=this.state.width,t=this.state.height,n=0-this.state.localOrigin[0],r=0-this.state.localOrigin[1],i=createEmptyPath$1(this);return i?(i.moveTo(n+e/2,r),i.lineTo(n+e,r+t/2),i.lineTo(n+e/2,r+t),i.lineTo(n,r+t/2),i.closePath(),this.path2D=i,this.path2D):this.path2D}},parallelogram:class FlowParallelogram extends y{static typeId="ice-entity-designer:FlowParallelogram";createPathObject(){const e=this.state.width,t=this.state.height,n=Math.min(28,.18*e),r=0-this.state.localOrigin[0],i=0-this.state.localOrigin[1],o=createEmptyPath$1(this);return o?(o.moveTo(r+n,i),o.lineTo(r+e,i),o.lineTo(r+e-n,i+t),o.lineTo(r,i+t),o.closePath(),this.path2D=o,this.path2D):this.path2D}},event:class BpmnEventShape extends y{static typeId="ice-entity-designer:BpmnEventShape";createPathObject(){const{w:e,h:t,x:n,y:r}=localBox(this),i=createEmptyPath(this);if(!i)return this.path2D;const o=n+e/2,s=r+t/2,a=Math.min(e,t)/2,l=this.state.eventKind||"start";i.arc(o,s,a,0,2*Math.PI),"intermediate"!==l&&"end"!==l||(i.moveTo(o+.84*a,s),i.arc(o,s,.84*a,0,2*Math.PI));const u=this.state.trigger||"none";if("message"===u){const e=1.1*a,t=.78*a;i.moveTo(o-e/2,s-t/2),i.lineTo(o+e/2,s-t/2),i.lineTo(o+e/2,s+t/2),i.lineTo(o-e/2,s+t/2),i.closePath(),i.moveTo(o-e/2,s-t/2),i.lineTo(o,s+.08*t),i.lineTo(o+e/2,s-t/2)}else if("timer"===u){const e=.52*a;i.moveTo(o+e,s),i.arc(o,s,e,0,2*Math.PI),i.moveTo(o,s),i.lineTo(o,s-.62*e),i.moveTo(o,s),i.lineTo(o+.5*e,s)}else"error"===u?(i.moveTo(o+.34*a,s-.62*a),i.lineTo(o-.42*a,s+.06*a),i.lineTo(o-.02*a,s+.06*a),i.lineTo(o-.3*a,s+.66*a),i.lineTo(o+.44*a,s-.02*a),i.lineTo(o+.04*a,s-.02*a),i.closePath()):"terminate"===u&&(i.moveTo(o+.5*a,s),i.arc(o,s,.5*a,0,2*Math.PI));return this.path2D=i,this.path2D}},gateway:class BpmnGatewayShape extends y{static typeId="ice-entity-designer:BpmnGatewayShape";createPathObject(){const{w:e,h:t,x:n,y:r}=localBox(this),i=createEmptyPath(this);if(!i)return this.path2D;const o=n+e/2,s=r+t/2,a=e/2,l=t/2;i.moveTo(o,s-l),i.lineTo(o+a,s),i.lineTo(o,s+l),i.lineTo(o-a,s),i.closePath();const u=this.state.gatewayType||"exclusive",c=.42*Math.min(a,l);if("exclusive"===u)i.moveTo(o-c,s-c),i.lineTo(o+c,s+c),i.moveTo(o+c,s-c),i.lineTo(o-c,s+c);else if("parallel"===u)i.moveTo(o-c,s),i.lineTo(o+c,s),i.moveTo(o,s-c),i.lineTo(o,s+c);else if("inclusive"===u)i.moveTo(o+c,s),i.arc(o,s,c,0,2*Math.PI);else if("event"===u){const e=1.15*c;for(let t=0;t<5;t++){const n=-Math.PI/2+t*Math.PI*2/5,r=o+Math.cos(n)*e,a=s+Math.sin(n)*e;0===t?i.moveTo(r,a):i.lineTo(r,a)}i.closePath()}return this.path2D=i,this.path2D}},dataObject:class BpmnDataObjectShape extends y{static typeId="ice-entity-designer:BpmnDataObjectShape";createPathObject(){const{w:e,h:t,x:n,y:r}=localBox(this),i=createEmptyPath(this);if(!i)return this.path2D;const o=Math.min(14,.22*e,.32*t);return i.moveTo(n,r),i.lineTo(n+e-o,r),i.lineTo(n+e,r+o),i.lineTo(n+e,r+t),i.lineTo(n,r+t),i.closePath(),i.moveTo(n+e-o,r),i.lineTo(n+e-o,r+o),i.lineTo(n+e,r+o),this.path2D=i,this.path2D}},annotation:class BpmnAnnotationShape extends y{static typeId="ice-entity-designer:BpmnAnnotationShape";createPathObject(){const{w:e,h:t,x:n,y:r}=localBox(this),i=createEmptyPath(this);if(!i)return this.path2D;const o=Math.min(16,.3*e);return i.moveTo(n,r),i.lineTo(n+e,r),i.lineTo(n+e,r+t),i.lineTo(n,r+t),i.closePath(),i.moveTo(n+o,r),i.lineTo(n,r),i.lineTo(n,r+t),i.lineTo(n+o,r+t),this.path2D=i,this.path2D}},lane:class BpmnLaneShape extends y{static typeId="ice-entity-designer:BpmnLaneShape";createPathObject(){const{w:e,h:t,x:n,y:r}=localBox(this),i=createEmptyPath(this);if(!i)return this.path2D;const o=Math.min(this.state.bandSize||30,.4*e,.4*t);return i.moveTo(n,r),i.lineTo(n+e,r),i.lineTo(n+e,r+t),i.lineTo(n,r+t),i.closePath(),"top"===(this.state.band||"left")?(i.moveTo(n,r+o),i.lineTo(n+e,r+o)):(i.moveTo(n+o,r),i.lineTo(n+o,r+t)),this.path2D=i,this.path2D}}},kr="#0f172a";class FlowNode extends u{static typeId="ice-entity-designer:FlowNode";shapeComponent=null;labelComponent=null;decorationComponents=[];hasDerivedChildren(){return!0}getSerializableChildren(){const e=[this.shapeComponent,this.labelComponent,...this.decorationComponents||[]];return this.childNodes.filter(t=>-1===e.indexOf(t))}constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const t=_r[e.kind]?e.kind:"process",n=_r[t];super({kind:t,title:n.label,fillColor:n.fill,strokeColor:n.stroke,textColor:kr,fontSize:14,width:n.width,height:n.height,fill:!1,stroke:!1,draggable:!0,interactive:!0,transformable:!1,linkable:-1===br.indexOf(t),...e}),this.__buildShape()}__buildShape(){this.shapeComponent&&this.removeChild(this.shapeComponent),this.labelComponent&&this.removeChild(this.labelComponent),this.decorationComponents&&this.decorationComponents.length&&(this.removeChildren(this.decorationComponents),this.decorationComponents.length=0);const e=_r[this.state.kind]||_r.process,t=vr[e.shape]||h;this.shapeComponent=new t({left:0,top:0,width:this.state.width,height:this.state.height,radius:e.radius||0,lineWidth:e.lineWidth||1.5,lineDash:this.state.lineDash||e.lineDash||[],eventKind:this.state.eventKind||e.eventKind,trigger:this.state.trigger||e.trigger,gatewayType:this.state.gatewayType||e.gatewayType,taskType:this.state.taskType||e.taskType,band:e.band,bandSize:e.bandSize,fill:!e.transparent,interactive:!1,linkable:!1,showMinBoundingBox:!1,showMaxBoundingBox:!1,style:{fillStyle:this.state.fillColor||e.fill,strokeStyle:this.state.strokeColor||e.stroke,lineWidth:e.lineWidth||1.5}}),this.__buildDecorations(e);const n="top-left"===e.labelPlacement,r="lane"===e.shape&&"left"===e.band,i=r?Math.min(Number(e.bandSize)||30,.4*this.state.width,.4*this.state.height):0,o=r?Math.max(this.state.height-8,i):0;this.labelComponent=new c(r?{left:i/2-o/2,top:this.state.height/2-i/2,width:o,height:i,text:String(this.state.title||""),wrap:!0,maxLines:1,ellipsis:"…",transform:{rotate:-90},interactive:!1,linkable:!1,stroke:!1,showMinBoundingBox:!1,showMaxBoundingBox:!1,style:{fontSize:this.state.fontSize||13,fillStyle:this.state.textColor||kr,textAlign:"center",textBaseline:"middle",fontWeight:"bold"}}:{left:n?10:0,top:n?"top"===e.band?18:16:0,width:n?Math.max(this.state.width-20,20):this.state.width,height:n?18:this.state.height,text:String(this.state.title||""),wrap:!n,maxLines:2,interactive:!1,linkable:!1,stroke:!1,showMinBoundingBox:!1,showMaxBoundingBox:!1,style:{fontSize:this.state.fontSize||(n?13:14),fillStyle:this.state.textColor||kr,textAlign:n?"left":"center",textBaseline:"middle",fontWeight:n?"bold":"normal",paddingLeft:n?0:12,paddingRight:n?0:12}}),this.addChild(this.shapeComponent),this.addChild(this.labelComponent)}__buildDecorations(e){const t=this.state.kind,n=[],r=this.state.strokeColor||e.stroke;if("bpmnTask"===t||"bpmnSubprocess"===t){const t=this.state.taskType||e.taskType||"none";"none"!==t&&n.push(new BpmnTaskIcon({left:8,top:8,width:14,height:14,stroke:!0,fill:!1,interactive:!1,linkable:!1,showMinBoundingBox:!1,showMaxBoundingBox:!1,taskType:t,style:{strokeStyle:r,lineWidth:1.4}}))}"bpmnSubprocess"===t&&n.push(new BpmnSubprocessMarker({left:(this.state.width-14)/2,top:this.state.height-20,width:14,height:14,stroke:!0,fill:!1,interactive:!1,linkable:!1,showMinBoundingBox:!1,showMaxBoundingBox:!1,style:{strokeStyle:r,lineWidth:1.4}})),n.length&&(n.forEach(e=>this.addChild(e)),this.decorationComponents=n)}applyPatch(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const t=void 0!==e.kind||void 0!==e.fillColor||void 0!==e.strokeColor||void 0!==e.textColor||void 0!==e.fontSize||void 0!==e.eventKind||void 0!==e.trigger||void 0!==e.gatewayType||void 0!==e.taskType||void 0!==e.width||void 0!==e.height;return this.setState(e),t?this.__buildShape():this.labelComponent&&this.labelComponent.setState({text:String(this.state.title||"")}),this.dirty=!0,this}}class FlowEdge extends p{static typeId="ice-entity-designer:FlowEdge";hasDerivedChildren(){return!0}constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};super({title:"Edge",arrow:"end",linkShape:"visio",lineType:"solid",linkable:!1,draggable:!1,interactive:!0,transformable:!1,startPoint:[0,0],endPoint:[10,10],label:"",...e,style:{strokeStyle:"#64748b",fillStyle:"#64748b",lineWidth:1.4,...e.style||{},label:{fontSize:12,fillStyle:"#334155",backgroundColor:"#ffffff",paddingLeft:4,paddingRight:4,...e.labelStyle||{},...(e.style||{}).label||{}}}}),this.applyPatch({flowType:this.state.flowType,condition:this.state.condition,isDefault:this.state.isDefault})}applyPatch(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};e&&e.labelStyle&&(e={...e,style:{...this.state.style||{},...e.style||{},label:{...e.labelStyle||{},...(e.style||{}).label||{}}}},delete e.labelStyle);const t={...this.state,...e},n=t.flowType||"sequence",r="message"===n?{lineDash:[7,4],arrowStyle:"hollow",lineWidth:t.lineWidth||1.4}:"association"===n?{lineDash:[2,3],arrow:"none",arrowStyle:"hollow",lineWidth:t.lineWidth||1.2}:{arrow:t.arrow||"end",arrowStyle:"filled",lineDash:[],lineWidth:t.lineWidth||1.4};return this.setState({...e,...r}),this.dirty=!0,this}}class FlowDesigner{selectedId=null;__undoStack=[];__redoStack=[];__historyEnabled=!0;__maxHistory=100;__listeners=[];__mousedownHandler=e=>this.__handleMouseDown(e);__moveSession=!1;__moveEmitQueued=!1;__beforeMoveHandler=()=>this.__onBeforeMove();__afterMoveHandler=()=>this.__onAfterMove();__mouseupHandler=()=>this.__endMoveSession();constructor(e){applyDesignerChrome(e),enableDesignerAlignmentGuides(e),this.ice=e,registerIEDType(this.ice,FlowNode),registerIEDType(this.ice,FlowEdge),this.ice.evtBus.on("mousedown",this.__mousedownHandler,this),this.ice.evtBus.on("mouseup",this.__mouseupHandler,this)}get nodes(){return this.__flatten().filter(e=>e.constructor&&e.constructor.typeId===FlowNode.typeId)}get edges(){return this.__flatten().filter(e=>e.constructor&&e.constructor.typeId===FlowEdge.typeId)}__flatten(){const e=[],walk=t=>{t.forEach(t=>{e.push(t),t.childNodes&&t.childNodes.length&&walk(t.childNodes)})};return walk(this.ice.childNodes||[]),e}get selected(){return this.selectedId?this.ice.findComponent(this.selectedId):null}subscribe(e){return"function"!=typeof e?()=>{}:(this.__listeners.push(e),()=>{const t=this.__listeners.indexOf(e);-1!==t&&this.__listeners.splice(t,1)})}__emitChange(){if(!this.__listeners.length)return;const e=this.serialize();this.__listeners.slice().forEach(t=>t(e,this))}__attachNodeListeners(e){e&&"function"==typeof e.on&&(e.on("BEFORE_MOVE",this.__beforeMoveHandler,this),e.on("AFTER_MOVE",this.__afterMoveHandler,this))}__detachNodeListeners(e){e&&"function"==typeof e.off&&(e.off("BEFORE_MOVE",this.__beforeMoveHandler,this),e.off("AFTER_MOVE",this.__afterMoveHandler,this))}__onBeforeMove(){this.__moveSession||(this.__moveSession=!0,this.__captureHistory())}__onAfterMove(){if(this.__moveEmitQueued)return;this.__moveEmitQueued=!0;const flush=()=>{this.__moveEmitQueued=!1,this.__emitChange()};"function"==typeof requestAnimationFrame?requestAnimationFrame(flush):setTimeout(flush,16)}__endMoveSession(){this.__moveSession=!1}select(e){return this.selectedId=e,this.__emitChange(),this}__defaultPlacement(e,t){const n=this.nodes;if(!n.length)return{left:120,top:120};let r=1/0,i=-1/0;n.forEach(e=>{const t=e.getMinBoundingBox(!0);r=Math.min(r,t.tl[0]),i=Math.max(i,t.br[1])});const o=n.length;return{left:r+o%4*280,top:i+80+Math.floor(o/4)*(t+90)}}createNode(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.__captureHistory();const n=new FlowNode({kind:e,...t});if(void 0===t.left||void 0===t.top){const e=this.__defaultPlacement(n.state.width,n.state.height);n.setState({left:void 0===t.left?e.left:t.left,top:void 0===t.top?e.top:t.top})}return this.ice.addChild(n),this.__attachNodeListeners(n),this.selectedId=n.state.id,this.__emitChange(),n}__slotPoint(e,t){const n=e.getMinBoundingBox(!0);switch(t){case"T":return[...n.tc];case"R":return[...n.rc];case"B":return[...n.bc];case"L":return[...n.lc];default:return[...n.center]}}createEdge(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const t=e.sourceId?this.ice.findComponent(e.sourceId):null,n=e.targetId?this.ice.findComponent(e.targetId):null;if(!t||!n)throw new Error("连接两端必须是已存在的节点");this.__captureHistory();const r=e.sourcePort||"B",i=e.targetPort||"T",o=new FlowEdge({id:e.id,links:{start:{id:e.sourceId,position:r},end:{id:e.targetId,position:i}},startPoint:this.__slotPoint(t,r),endPoint:this.__slotPoint(n,i),label:e.label||"",linkShape:e.linkShape||"visio",flowType:e.flowType||"sequence",condition:e.condition||"",isDefault:!!e.isDefault,style:{...e.style||{},...e.labelStyle?{label:e.labelStyle}:{}}});return this.ice.addChild(o),this.selectedId=o.state.id,this.__emitChange(),o}updateNode(e,t){const n=this.ice.findComponent(e);return n&&n.constructor.typeId===FlowNode.typeId&&(this.__captureHistory(),n.applyPatch(t),this.__emitChange()),n}updateEdge(e,t){const n=this.ice.findComponent(e);return n&&n.constructor.typeId===FlowEdge.typeId&&(this.__captureHistory(),"function"==typeof n.applyPatch?n.applyPatch(t):(n.setState(t),n.dirty=!0),this.__emitChange()),n}remove(e){const t=this.ice.findComponent(e);t&&(this.__captureHistory(),-1!==this.nodes.indexOf(t)&&(this.__detachNodeListeners(t),this.edges.filter(t=>{const n=t.state.links||{};return n.start&&n.start.id===e||n.end&&n.end.id===e}).forEach(e=>this.ice.removeChild(e))),t.parentNode&&"function"==typeof t.parentNode.removeChild?t.parentNode.removeChild(t):this.ice.removeChild(t),this.selectedId===e&&(this.selectedId=null),this.__emitChange())}clear(){this.__captureHistory(),this.ice.clearAll(),this.selectedId=null,this.__emitChange()}serialize(){return JSON.stringify(this.toSnapshot())}toSnapshot(){const e=this.__serializer().toJSONObject();return{version:2,kind:"flowchart",createTime:e.createTime,scene:{version:e.version,childNodes:e.childNodes}}}__serializer(){const e=this.ice;return e.serializer||new m(e)}__deserializer(){const e=this.ice;return e.deserializer||new g(e)}load(e){if(!e)return{loaded:!1,nodes:0,edges:0,skipped:[]};let t;try{t=JSON.parse(e)}catch(e){throw new Error(`Invalid flow snapshot: 不是合法 JSON(${e instanceof Error?e.message:String(e)})`)}if(!t||"object"!=typeof t)return{loaded:!1,nodes:0,edges:0,skipped:[]};const n=!!t.scene;if(!n&&!Array.isArray(t.nodes))return{loaded:!1,nodes:0,edges:0,skipped:[]};const r=function validateFlowSnapshot(e){const t=[];return!e||"object"!=typeof e||Array.isArray(e)?{valid:!1,errors:["root must be an object"]}:void 0!==e.scene?(!e.scene||"object"!=typeof e.scene||Array.isArray(e.scene)?t.push("scene must be an object when present"):Array.isArray(e.scene.childNodes)||t.push("scene.childNodes must be an array"),{valid:0===t.length,errors:t}):(Array.isArray(e.nodes)?e.nodes.forEach((e,n)=>{const r=`nodes[${n}]`;e&&"object"==typeof e&&!Array.isArray(e)?("string"!=typeof e.id&&t.push(`${r}.id must be a string`),void 0!==e.kind&&"string"!=typeof e.kind&&t.push(`${r}.kind must be a string when present`),void 0!==e.left&&"number"!=typeof e.left&&t.push(`${r}.left must be a number when present`),void 0!==e.top&&"number"!=typeof e.top&&t.push(`${r}.top must be a number when present`)):t.push(`${r} must be an object`)}):t.push("nodes must be an array"),void 0===e.edges||Array.isArray(e.edges)?Array.isArray(e.edges)&&e.edges.forEach((e,n)=>{const r=`edges[${n}]`;e&&"object"==typeof e&&!Array.isArray(e)?(["sourceId","targetId"].forEach(n=>{void 0!==e[n]&&null!==e[n]&&"string"!=typeof e[n]&&t.push(`${r}.${n} must be a string or null when present`)}),void 0!==e.label&&"string"!=typeof e.label&&t.push(`${r}.label must be a string when present`),void 0!==e.linkShape&&"visio"!==e.linkShape&&"bezier"!==e.linkShape&&t.push(`${r}.linkShape must be "visio" or "bezier" when present`)):t.push(`${r} must be an object`)}):t.push("edges must be an array when present"),{valid:0===t.length,errors:t})}(t);if(!r.valid)throw new Error(`Invalid flow snapshot:\n${r.errors.join("\n")}`);this.__captureHistory();const i=n?this.__applyEngineScene(t.scene,t.createTime):this.__clearAndBuild(t);return this.__emitChange(),i}__applyEngineScene(e,t){this.ice.clearAll(),this.selectedId=null;const n=this.__deserializer();n.fromJSONObject({version:e.version,createTime:t,childNodes:e.childNodes});const r={loaded:!0,nodes:this.nodes.length,edges:this.edges.length,skipped:[...n.unknownTypes||[]]};return this.nodes.forEach(e=>this.__attachNodeListeners(e)),r}__clearAndBuild(e){this.ice.clearAll(),this.selectedId=null;const t={loaded:!0,nodes:0,edges:0,skipped:[]};return(e.nodes||[]).forEach(e=>{if(void 0!==e.typeId&&this.ice.getType(e.typeId)!==FlowNode)return void t.skipped.push(String(e.typeId));const n=new FlowNode(e);delete n.state.typeId,this.ice.addChild(n),this.__attachNodeListeners(n),t.nodes+=1}),(e.edges||[]).forEach(e=>{if(void 0!==e.typeId&&this.ice.getType(e.typeId)!==FlowEdge)return void t.skipped.push(String(e.typeId));const n=e.sourceId||e.links&&e.links.start&&e.links.start.id||null,r=e.targetId||e.links&&e.links.end&&e.links.end.id||null,i=e.sourcePort||e.links&&e.links.start&&e.links.start.position||"B",o=e.targetPort||e.links&&e.links.end&&e.links.end.position||"T",s=n&&r?{start:{id:n,position:i},end:{id:r,position:o}}:e.links,a=new FlowEdge({...e,links:s,startPoint:e.startPoint||[0,0],endPoint:e.endPoint||[10,10]});delete a.state.typeId,this.ice.addChild(a),t.edges+=1}),t}contentComponents(){return this.nodes}fitViewportAlign="center";fitViewport(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:80;const t=this.contentComponents(),n=this.ice.canvasWidth||0,r=this.ice.canvasHeight||0;if(!t.length||!n||!r)return;let i=1/0,o=1/0,s=-1/0,a=-1/0;t.forEach(e=>{const t=e.getMinBoundingBox(!0);i=Math.min(i,t.tl[0]),o=Math.min(o,t.tl[1]),s=Math.max(s,t.br[0]),a=Math.max(a,t.br[1])});const l=Math.max(s-i,1),u=Math.max(a-o,1),c=Math.min((n-2*e)/l,(r-2*e)/u,1.25),h=(n-l*c)/2-i*c,d="start"===this.fitViewportAlign?e-o*c:(r-u*c)/2-o*c;this.ice.setViewport(c,h,d)}canUndo(){return this.__undoStack.length>0}toSvg(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return _(this.ice,e)}canRedo(){return this.__redoStack.length>0}captureHistory(){this.__captureHistory()}resetHistory(){this.__undoStack.length=0,this.__redoStack.length=0}__captureHistory(){this.__historyEnabled&&(this.__undoStack.push(this.serialize()),this.__undoStack.length>this.__maxHistory&&this.__undoStack.shift(),this.__redoStack.length=0)}__applySnapshot(e){const t=JSON.parse(e);t&&t.scene?this.__applyEngineScene(t.scene):this.__clearAndBuild(t)}undo(){if(!this.canUndo())return;const e=this.serialize(),t=this.__undoStack.pop();this.__redoStack.push(e),this.__historyEnabled=!1;try{this.__applySnapshot(t)}catch(e){throw this.__redoStack.pop(),this.__undoStack.push(t),e}finally{this.__historyEnabled=!0}this.__emitChange()}redo(){if(!this.canRedo())return;const e=this.serialize(),t=this.__redoStack.pop();this.__undoStack.push(e),this.__historyEnabled=!1;try{this.__applySnapshot(t)}catch(e){throw this.__undoStack.pop(),this.__redoStack.push(t),e}finally{this.__historyEnabled=!0}this.__emitChange()}__handleMouseDown(e){const t=e&&e.param&&e.param.component;if(!t)return;let n=t;for(;n;){const e=n.constructor&&n.constructor.typeId;if(e===FlowNode.typeId||e===FlowEdge.typeId)return void this.select(n.state.id);n=n.parentNode}}dispose(){this.ice.evtBus.off("mousedown",this.__mousedownHandler,this),this.ice.evtBus.off("mouseup",this.__mouseupHandler,this),this.nodes.forEach(e=>this.__detachNodeListeners(e))}}function createDesignerSession(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const n=new b;n.init(e,{renderMode:"full"===t.renderMode?"full":"dirty-rect"});const r=new EntityDesigner(n),i=t.onChange?r.subscribe(t.onChange):null;t.initialProject&&r.loadProject(t.initialProject);let o=!1;return{ice:n,designer:r,destroy(){o||(o=!0,i&&i(),r.dispose(),n.destroy())}}}function shouldApplyControlledValue(e,t){return void 0!==e&&e!==t}function createFlowSession(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const n=new b;n.init(e,{renderMode:"full"===t.renderMode?"full":"dirty-rect"});const r=new FlowDesigner(n),i=t.onChange,o=i?r.subscribe(e=>i(e)):null;t.initialFlow&&r.load(t.initialFlow);let s=!1;return{ice:n,designer:r,destroy(){s||(s=!0,o&&o(),r.dispose(),n.destroy())}}}function reportLoadError(e,t,n,r){const i=r instanceof Error?r:new Error(String(r));e&&e({phase:t,snapshot:n,error:i})}function createHandle$1(e){const t=e?e.designer:null;return{ice:e?e.ice:null,designer:t,addEntity:e=>t?t.createEntity(e):null,connect:e=>t?t.createRelation(e):null,updateEntity:(e,n)=>t?t.updateEntity(e,n):null,updateRelation:(e,n)=>t?t.updateRelation(e,n):null,remove:e=>{t&&t.removeComponent(e)},loadProject:e=>t?t.loadProject(e):{loaded:!1,entities:0,relations:0,unknownTypes:[],skipped:[]},undo:()=>{t&&t.undo()},redo:()=>{t&&t.redo()},toSchemaObject:()=>t?t.toSchemaObject():[],toSchemaString:()=>t?t.toSchemaString():"[]",validate:()=>t?t.validate():[],serializeProject:()=>t?t.serializeProject():""}}const wr=r(function EntityDesignerCanvas(e,n){const r=i(null),u=i(null),[c,h]=o(null),d=i(e.onChange);d.current=e.onChange;const p=i(e.onReady);p.current=e.onReady;const f=i(e.onError);f.current=e.onError;const y=i(null),m=e.width||1200,g=e.height||800,_=void 0!==e.value?e.value:e.defaultValue;return s(()=>{const t=r.current;if(!t)return;const n=createDesignerSession(t,{renderMode:e.renderMode,onChange:e=>{y.current=e;const t=d.current,n=u.current;t&&n&&t({snapshot:e,schema:n.designer.toSchemaObject()})}});if(u.current=n,void 0!==_){y.current=_;try{n.designer.loadProject(_)}catch(e){reportLoadError(f.current,"load-initial",_,e)}}else y.current=null;return h(n.designer),p.current&&p.current(createHandle$1(n)),()=>{n.destroy(),u.current=null,h(null)}},[]),s(()=>{if(!c)return;if(!shouldApplyControlledValue(e.value,y.current))return;const t=e.value;y.current=t;try{c.loadProject(t)}catch(e){reportLoadError(f.current,"load-controlled",t,e)}},[e.value,c]),a(n,()=>createHandle$1(u.current),[c]),t(l,null,t("div",{className:e.className,style:{position:"relative",width:m,height:g,...e.style||{}}},t("canvas",{ref:r,width:m,height:g,style:{display:"block"}})),t(EntityDesignerProvider,{designer:c,children:e.children}))}),Cr='{"version":1,"kind":"flowchart","nodes":[],"edges":[]}';function createHandle(e){const t=e?e.designer:null;return{ice:e?e.ice:null,designer:t,addNode:(e,n)=>t?t.createNode(e,n):null,connect:e=>t?t.createEdge(e):null,updateNode:(e,n)=>t?t.updateNode(e,n):null,updateEdge:(e,n)=>t?t.updateEdge(e,n):null,remove:e=>{t&&t.remove(e)},load:e=>t?t.load(e):{loaded:!1,nodes:0,edges:0,skipped:[]},undo:()=>{t&&t.undo()},redo:()=>{t&&t.redo()},serialize:()=>t?t.serialize():Cr,toSnapshot:()=>t?t.toSnapshot():JSON.parse(Cr),fitViewport:e=>{t&&t.fitViewport(e)}}}const Sr=r(function FlowDesignerCanvas(e,n){const r=i(null),u=i(null),[c,h]=o(null),d=i(e.onChange);d.current=e.onChange;const p=i(e.onReady);p.current=e.onReady;const f=i(e.onError);f.current=e.onError;const y=i(null),m=e.width||1200,g=e.height||800,_=void 0!==e.value?e.value:e.defaultValue;return s(()=>{const t=r.current;if(!t)return;const n=createFlowSession(t,{renderMode:e.renderMode,onChange:e=>{y.current=e;const t=d.current,n=u.current;t&&n&&t({snapshot:e,counts:{nodes:n.designer.nodes.length,edges:n.designer.edges.length}})}});if(u.current=n,void 0!==_){y.current=_;try{n.designer.load(_)}catch(e){reportLoadError(f.current,"load-initial",_,e)}}else y.current=null;return h(n.designer),p.current&&p.current(createHandle(n)),()=>{n.destroy(),u.current=null,h(null)}},[]),s(()=>{if(!c)return;if(!shouldApplyControlledValue(e.value,y.current))return;const t=e.value;y.current=t;try{c.load(t)}catch(e){reportLoadError(f.current,"load-controlled",t,e)}},[e.value,c]),a(n,()=>createHandle(u.current),[c]),t(l,null,t("div",{className:e.className,style:{position:"relative",width:m,height:g,...e.style||{}}},t("canvas",{ref:r,width:m,height:g,style:{display:"block"}})),t(FlowDesignerProvider,{designer:c,children:e.children}))});export{Entity,wr as EntityDesignerCanvas,v as EntityDesignerContext,EntityDesignerProvider,_r as FLOW_NODE_KINDS,FlowDesigner,Sr as FlowDesignerCanvas,k as FlowDesignerContext,FlowDesignerProvider,FlowEdge,FlowNode,Relation,createDesignerSession,createFlowSession,shouldApplyControlledValue,toSchemaObject,toSchemaString,useEntityDesigner,useFlowDesigner,validateSchema};
@@ -0,0 +1,28 @@
1
+ /**
2
+ * 设计器的「拖拽对齐引导线」默认开关。
3
+ *
4
+ * 为什么由**设计器**打开、而不是各页面自己记着调:
5
+ * 设计器里的图元位置**就是数据**,没有布局可以约束它(用户想拖到哪就拖到哪)。
6
+ * 没有对齐引导时,"看着对齐了、实际差 3px"的卡片与"端点差 5px"的连线会越拖越多,
7
+ * 一张图很快就乱了 —— 所以这不是可选装饰,而是编辑器的基础能力。
8
+ *
9
+ * 边界:**引擎**把 `alignmentGuide` 默认关掉是对的(引擎不知道宿主是不是编辑器,
10
+ * 也不知道宿主有没有自己的对齐方案);设计器是应用层,正是该打开它的那一层。
11
+ * 之前每个示例各写一行 `ice.alignmentGuide.enable(...)`,于是新页面很容易漏掉
12
+ * (流程图与水务示例就漏了),现在统一收在这里。
13
+ *
14
+ * **阈值取 2(比引擎默认的 3 更紧)**(2026-09-15 实测):阈值就是吸附半径,它必须明显小于
15
+ * "候选线沿拖动路径的间距"。本仓的领域图都是**密集版面**(水务工艺图 34 个单元,候选线沿路径
16
+ * 间距约 14 世界 px),而此前示例里用的 `threshold: 6` 在 0.5× 缩放下是 12 世界 px ——
17
+ * 等于指针处处都在吸附带里:拖动时图元被一颗颗"钉子"挨个吸住(实测 24 步里 19 步在吸附、
18
+ * 相邻步位移变化最大 18px,肉眼就是"引导线和图元乱跳")。收到 2 之后:11/24 步吸附、
19
+ * 单步位移变化 ≤6 世界 px(≈3 屏幕 px),且命中期间锁在同一条线不再改主意。
20
+ *
21
+ * 宿主想改阈值或关掉:
22
+ * ```ts
23
+ * const designer = new EntityDesigner(ice);
24
+ * ice.alignmentGuide.setOptions({ threshold: 10 }); // 更"黏"一点
25
+ * ice.alignmentGuide.disable(); // 或完全关掉
26
+ * ```
27
+ */
28
+ export declare function enableDesignerAlignmentGuides(ice: any): any;
@@ -0,0 +1,28 @@
1
+ /**
2
+ * 设计器的「拖拽对齐引导线」默认开关。
3
+ *
4
+ * 为什么由**设计器**打开、而不是各页面自己记着调:
5
+ * 设计器里的图元位置**就是数据**,没有布局可以约束它(用户想拖到哪就拖到哪)。
6
+ * 没有对齐引导时,"看着对齐了、实际差 3px"的卡片与"端点差 5px"的连线会越拖越多,
7
+ * 一张图很快就乱了 —— 所以这不是可选装饰,而是编辑器的基础能力。
8
+ *
9
+ * 边界:**引擎**把 `alignmentGuide` 默认关掉是对的(引擎不知道宿主是不是编辑器,
10
+ * 也不知道宿主有没有自己的对齐方案);设计器是应用层,正是该打开它的那一层。
11
+ * 之前每个示例各写一行 `ice.alignmentGuide.enable(...)`,于是新页面很容易漏掉
12
+ * (流程图与水务示例就漏了),现在统一收在这里。
13
+ *
14
+ * **阈值取 2(比引擎默认的 3 更紧)**(2026-09-15 实测):阈值就是吸附半径,它必须明显小于
15
+ * "候选线沿拖动路径的间距"。本仓的领域图都是**密集版面**(水务工艺图 34 个单元,候选线沿路径
16
+ * 间距约 14 世界 px),而此前示例里用的 `threshold: 6` 在 0.5× 缩放下是 12 世界 px ——
17
+ * 等于指针处处都在吸附带里:拖动时图元被一颗颗"钉子"挨个吸住(实测 24 步里 19 步在吸附、
18
+ * 相邻步位移变化最大 18px,肉眼就是"引导线和图元乱跳")。收到 2 之后:11/24 步吸附、
19
+ * 单步位移变化 ≤6 世界 px(≈3 屏幕 px),且命中期间锁在同一条线不再改主意。
20
+ *
21
+ * 宿主想改阈值或关掉:
22
+ * ```ts
23
+ * const designer = new EntityDesigner(ice);
24
+ * ice.alignmentGuide.setOptions({ threshold: 10 }); // 更"黏"一点
25
+ * ice.alignmentGuide.disable(); // 或完全关掉
26
+ * ```
27
+ */
28
+ export declare function enableDesignerAlignmentGuides(ice: any): any;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "author": "大漠穷秋",
3
3
  "name": "ice-entity-designer",
4
- "version": "0.3.2",
4
+ "version": "0.4.1",
5
5
  "description": "An entity designer based on ice-render.",
6
6
  "repository": {
7
7
  "type": "git",
@@ -101,7 +101,7 @@
101
101
  "eslint-plugin-react-hooks": "4.6.0",
102
102
  "http-server": "14.1.1",
103
103
  "husky": "8.0.3",
104
- "ice-render": "^2.10.0",
104
+ "ice-render": "^2.11.1",
105
105
  "jest": "29.7.0",
106
106
  "jest-environment-jsdom": "29.7.0",
107
107
  "lint-staged": "15.5.2",