likec4 1.59.2 → 1.59.4
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/__app__/src/chunks/AIChat.mjs +118 -123
- package/__app__/src/chunks/LikeC4Styles.mjs +828 -686
- package/__app__/src/chunks/ProjectsOverview.mjs +82 -82
- package/__app__/src/chunks/es.mjs +1 -1
- package/__app__/src/chunks/hooks.mjs +164 -135
- package/__app__/src/chunks/libs/@floating-ui.mjs +649 -335
- package/__app__/src/chunks/libs/@mantine.mjs +2934 -2040
- package/__app__/src/chunks/libs/@tanstack-ai.mjs +28 -28
- package/__app__/src/chunks/libs/@tanstack.mjs +46 -51
- package/__app__/src/chunks/libs/@xstate/react.mjs +59 -40
- package/__app__/src/chunks/libs/@xyflow/react.mjs +535 -448
- package/__app__/src/chunks/libs/bezier-js.mjs +10 -9
- package/__app__/src/chunks/libs/d3.mjs +20 -45
- package/__app__/src/chunks/libs/fast-equals.mjs +62 -50
- package/__app__/src/chunks/libs/framer.mjs +300 -279
- package/__app__/src/chunks/libs/zod.mjs +17 -14
- package/__app__/src/chunks/rolldown-runtime.mjs +2 -2
- package/__app__/src/chunks/styled-system.mjs +2580 -132
- package/__app__/src/main.mjs +24925 -23485
- package/__app__/src/style.css +1 -1
- package/config/schema.json +49 -0
- package/dist/app/render-view-client.css +1 -0
- package/dist/app/render-view-client.js +739 -0
- package/dist/chunks/enableServer.mjs +1 -1
- package/dist/chunks/filenames.mjs +7 -6
- package/dist/chunks/index.d.mts +18 -1
- package/dist/chunks/index2.d.mts +79 -26
- package/dist/chunks/libs/@chevrotain/gast.mjs +1 -1
- package/dist/chunks/libs/@chevrotain/regexp-to-ast.mjs +5 -5
- package/dist/chunks/libs/@chevrotain/types.d.mts +108 -0
- package/dist/chunks/libs/@logtape/logtape.mjs +4 -4
- package/dist/chunks/libs/@lume/kiwi.mjs +1 -1
- package/dist/chunks/libs/birpc.mjs +1 -1
- package/dist/chunks/libs/chevrotain-allstar.mjs +1 -1
- package/dist/chunks/libs/chevrotain.mjs +16 -16
- package/dist/chunks/libs/json5.mjs +3 -3
- package/dist/chunks/libs/langium.d.mts +1777 -16
- package/dist/chunks/libs/langium.mjs +11 -11
- package/dist/chunks/libs/merge-error-cause.mjs +2 -2
- package/dist/chunks/libs/p-queue.mjs +1 -1
- package/dist/chunks/libs/package-manager-detector.mjs +1 -1
- package/dist/chunks/libs/pako.mjs +2 -2
- package/dist/chunks/libs/picomatch.mjs +1 -1
- package/dist/chunks/libs/pretty-ms.mjs +1 -1
- package/dist/chunks/libs/remeda.mjs +1 -1
- package/dist/chunks/libs/ufo.mjs +1 -1
- package/dist/chunks/libs/unstorage.mjs +1 -1
- package/dist/chunks/libs/zod.d.mts +1717 -17
- package/dist/chunks/libs/zod.mjs +4 -4
- package/dist/chunks/node.mjs +68 -57
- package/dist/chunks/rolldown-runtime.mjs +1 -1
- package/dist/chunks/sequence-view.mjs +1 -1
- package/dist/chunks/vite-plugin.mjs +168 -54
- package/dist/cli/index.d.mts +1 -1
- package/dist/cli/index.mjs +291 -165
- package/dist/config/index.d.mts +7 -1
- package/dist/config/index.mjs +1 -1
- package/dist/index.d.mts +3 -3
- package/dist/index.mjs +1 -1
- package/dist/model/index.d.mts +4 -4
- package/dist/vite-plugin/index.d.mts +2 -2
- package/dist/vite-plugin/internal/index.d.mts +72 -35
- package/dist/vite-plugin/internal/index.mjs +125 -44
- package/package.json +47 -47
- package/react/index.d.mts +22767 -1432
- package/react/index.mjs +38152 -32309
- package/vite-plugin-modules.d.ts +21 -1
- package/dist/chunks/dist.mjs +0 -10
- package/dist/chunks/logger.mjs +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{createRequire as e}from"node:module";var t=Object.create,n=Object.defineProperty,__name=(e,t)=>n(e,`name`,{value:t,configurable:!0}),r=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,a=Object.getPrototypeOf,o=Object.prototype.hasOwnProperty,__esmMin=(e,t,n)=>()=>{if(n)throw n[0];try{return e&&(t=e(e=0)),t}catch(e){throw n=[e],e}},__commonJSMin=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),__exportAll=(e,t)=>{let r={};for(var i in e)n(r,i,{get:e[i],enumerable:!0});return t||n(r,Symbol.toStringTag,{value:`Module`}),r},__copyProps=(e,t,a,s)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var c=i(t),l=0,u=c.length,d;l<u;l++)d=c[l],!o.call(e,d)&&d!==a&&n(e,d,{get:(e=>t[e]).bind(null,d),enumerable:!(s=r(t,d))||s.enumerable});return e},__reExport=(e,t,n)=>(__copyProps(e,t,`default`),n&&__copyProps(n,t,`default`)),__toESM=(e,r,i)=>(i=e==null?{}:t(a(e)),__copyProps(r||!e||!e.__esModule?n(i,`default`,{value:e,enumerable:!0}):i,e)),__toCommonJS=e=>o.call(e,`module.exports`)?e[`module.exports`]:__copyProps(n({},`__esModule`,{value:!0}),e),s=e(import.meta.url);export{__reExport as a,__toESM as c,__name as i,__esmMin as n,s as o,__exportAll as r,__toCommonJS as s,__commonJSMin as t};
|
|
1
|
+
import{createRequire as e}from"node:module";var t=Object.create,n=Object.defineProperty,__name=(e,t)=>n(e,`name`,{value:t,configurable:!0}),r=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,a=Object.getPrototypeOf,o=Object.prototype.hasOwnProperty,__esmMin=(e,t,n)=>()=>{if(n)throw n[0];try{return e&&(t=e(e=0)),t}catch(e){throw n=[e],e}},__commonJSMin=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),__exportAll=(e,t)=>{let r={};for(var i in e)n(r,i,{get:e[i],enumerable:!0});return t||n(r,Symbol.toStringTag,{value:`Module`}),r},__copyProps=(e,t,a,s)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var c=i(t),l=0,u=c.length,d;l<u;l++)d=c[l],!o.call(e,d)&&d!==a&&n(e,d,{get:(e=>t[e]).bind(null,d),enumerable:!(s=r(t,d))||s.enumerable});return e},__reExport=(e,t,n)=>(__copyProps(e,t,`default`),n&&__copyProps(n,t,`default`)),__toESM=(e,r,i)=>(i=e==null?{}:t(a(e)),__copyProps(r||!e||!e.__esModule||!o.call(e,`default`)?n(i,`default`,{value:e,enumerable:!0}):i,e)),__toCommonJS=e=>o.call(e,`module.exports`)?e[`module.exports`]:__copyProps(n({},`__esModule`,{value:!0}),e),s=e(import.meta.url);export{__reExport as a,__toESM as c,__name as i,__esmMin as n,s as o,__exportAll as r,__toCommonJS as s,__commonJSMin as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./rolldown-runtime.mjs";import{$ as e,J as t,K as n,V as r,Z as i,b as a,m as o,q as s,t as c,tt as l,v as u,x as d}from"./libs/remeda.mjs";import{a as f,i as p,n as m,r as h,t as g}from"./libs/@lume/kiwi.mjs";import{dynamicViewFlow as _,flowGuards as v,parentFlow as y}from"@likec4/core/types";import{DefaultMap as b,Stack as x,invariant as S,isAncestor as C,nonNullable as w,nonexhaustive as T}from"@likec4/core/utils";function isPlainObject(e){if(typeof e!=`object`||!e)return!1;let t=Object.getPrototypeOf(e);return t!==null&&t!==Object.prototype&&Object.getPrototypeOf(t)!==null||Symbol.iterator in e?!1:Symbol.toStringTag in e?Object.prototype.toString.call(e)===`[object Module]`:!0}function _defu(e,t,n=`.`,r){if(!isPlainObject(t))return _defu(e,{},n,r);let i={...t};for(let t of Object.keys(e)){if(t===`__proto__`||t===`constructor`)continue;let a=e[t];a!=null&&(r&&r(i,t,a,n)||(Array.isArray(a)&&Array.isArray(i[t])?i[t]=[...a,...i[t]]:isPlainObject(a)&&isPlainObject(i[t])?i[t]=_defu(a,i[t],(n?`${n}.`:``)+t.toString(),r):i[t]=a))}return i}function createDefu(e){return(...t)=>t.reduce((t,n)=>_defu(t,n,``,e),{})}const E=createDefu(),paddingFromNumber=e=>({left:e,right:e,top:e,bottom:e});function normalizeSpacing(e=16){return typeof e==`number`?paddingFromNumber(e):{left:e?.left??e?.x??0,right:e?.right??e?.x??0,top:e?.top??e?.y??0,bottom:e?.bottom??e?.y??0}}function rectFromSteps(e){return S(e.length>0),e.reduce((e,t)=>{let n=[t.from.column,t.to.column],r=[t.from.row,t.to.row];return e.min.column=Math.min(e.min.column,...n),e.min.row=Math.min(e.min.row,...r),e.max.column=Math.max(e.max.column,...n),e.max.row=Math.max(e.max.row,...r),e},{min:{column:1/0,row:1/0},max:{column:-1/0,row:-1/0}})}function buildCompounds(e,t){if(e.length===0||e.length===t.length)return[];let getNode=e=>t.find(t=>t.id===e);function parentsLookup(e){let t=e.parent&&getNode(e.parent);return t?[t,...parentsLookup(t)]:[]}let n=new x,r=[];return e.forEach(e=>{let t=parentsLookup(e);if(t.length===0){n.clear();return}let i,a=t[0];for(;i=n.peek()?.node;){if(!a||i.id===a.id){t.length=0;break}if(!C(i.id,a.id)){n.pop();continue}break}for(;i=t.pop();){let t=n.peek();if(t&&(C(i.id,t.node.id)||i.id===t.node.id))continue;let a={node:i,from:e,to:e,nested:[]};t?t.nested.push(a):r.push(a),n.push(a)}n.forEach(t=>t.to=e)}),r}const D={required:p.required,strong:p.strong,medium:p.medium,soft:p.create(0,.8,1),weak:p.weak};var SequenceViewLayouter=class{#e;#t=new g;#n;#r=[];#i;#a;#o;#s=[];#c=new Map;constructor({actors:e,steps:t,compounds:n,flow:r,collapsedFlows:i}){this.#t.maxIterations=2e3,this.#e=r;let a=Math.max(...e.map(e=>e.height))+30;this.#o=this.newVar(a),this.constraint(this.#o,`==`,a,D.soft),this.constraint(this.#o,`>=`,a,D.weak),this.#i=this.newVar(0),this.#a=this.newVar(0),this.#n=this.addActors(e);for(let e of n){let t=this.addCompound(e),n=t[0];this.constraint(n.y1,`==`,0,D.strong),this.put(this.#o,D.strong).after(n.y2),this.#r.push(...t)}let[o,...s]=this.#n;this.constraint(o.offset.left,`==`,0,D.strong);let c=s.reduce((e,t)=>(this.put(t.x).after(e.right,80),this.put(e.offset.right,D.strong).before(t.offset.left,50),this.constraint(t.centerY,`==`,e.centerY,D.strong),t),o);for(let e of t)this.addStep(e);this.createSubflowAreas(t,new Set(i)),this.constraint(this.#i,`==`,c.offset.right);let l=d(this.#s)?.inner.bottom??this.#o;if(this.put(this.#a,D.strong).after(l,16),n.length>0)for(let e of this.#r){let t=e.from.column,n=e.to.column,r=Math.max(e.from.maxRow,e.to.maxRow);for(let e=t+1;e<n;e++){let t=this.actorBox(e);r=Math.max(r,t.maxRow)}let i=w(this.#s[r],`row ${r} not found`);this.put(e.bottom,D.strong).after(i.inner.bottom,10)}this.#t.updateVariables()}getSubflowAreas(){return[...this.#c.entries()].map(([e,{x1:t,y1:n,x2:r,y2:i}])=>({id:e,x:t.value(),y:n.value(),width:r.value()-t.value(),height:i.value()-n.value()}))}getActorBox(e){let t=this.actorBox(e);return{x:t.x.value(),y:t.y.value(),width:t.width,height:t.height}}getCompoundBoxes(){return this.#r.map(({node:e,depth:t,x1:n,y1:r,x2:i,bottom:a})=>({node:e,depth:t,x:n.value(),y:r.value(),width:i.value()-n.value(),height:a.value()-r.value()}))}getPortCenter(e,t){let{column:n,row:r}=t===`source`?e.from:e.to,i=this.actorBox(n).centerX,{rowTop:a}=w(this.#s[r]);return e.isSelfLoop&&t===`target`?{cx:i.value(),cy:a.value(),height:24}:{cx:i.value(),cy:a.value()+40+e.offset,height:t===`source`?40:24}}isStepCollapsed(e){if(e.from.row===e.to.row)return this.#s[e.from.row]?.collapsed??!1;let t=Math.min(e.from.row,e.to.row),n=Math.min(e.from.row,e.to.row),r=!0;for(let e=t;e<=n&&(r&&=this.#s[e]?.collapsed??!1,r);e++);return r}getViewBounds(){return{x:0,y:0,width:this.#i.value(),height:this.#a.value()}}actorBox(e){if(typeof e!=`number`){let t=typeof e==`string`?e:e.id;e=this.#n.findIndex(e=>e.actor.id===t),S(e>=0,`actor ${t} not found`)}return w(this.#n[e],`actor at index ${e} not found`)}addActors(e){let t=0;return a(e,(e,n)=>{let r=this.newVar(t);t+=e.width+80;let i=this.newVar(0),a={column:n,actor:e,x:r,y:i,centerX:r.plus(Math.round(e.width/2)),centerY:i.plus(Math.round(e.height/2)),width:e.width,height:e.height,right:r.plus(e.width),bottom:i.plus(e.height),minRow:1/0,maxRow:-1/0},o=this.newVar(0),s=this.newVar(0),c=this.newVar(0),l=this.newVar(0);return this.put(i,D.strong).after(o),this.put(r,D.strong).after(s),this.put(a.right,D.strong).before(c),this.put(a.bottom,D.strong).before(l),{...a,offset:{top:o,left:s,right:c,bottom:l}}})}addStep(e){let t=this.actorBox(e.source),n=this.actorBox(e.target);t.minRow=Math.min(t.minRow,e.from.row),t.maxRow=Math.max(t.maxRow,e.from.row),n.minRow=Math.min(n.minRow,e.to.row),n.maxRow=Math.max(n.maxRow,e.to.row);let[r,i]=t.column<=n.column?[t,n]:[n,t],a=(e.label?.width??100)+50;Math.abs(n.column-t.column)<=1&&(r===i?this.constraint(r.centerX.plus(a),`<=`,r.offset.right):this.constraint(r.centerX.plus(a),`<=`,i.centerX));let o=e.label?.height?e.label.height+50+24:100;return o=Math.max(o,100)+e.offset,this.ensureRow(e.from.row,o),e.to.row!==e.from.row&&this.ensureRow(e.to.row,24),this}addCompound(e){let t=[],n=e.nested.flatMap(e=>{let n=this.addCompound(e);return t.push(n[0]),n}),r=Math.max(...n.map(e=>e.depth+1),0),i=this.actorBox(e.from),a=this.actorBox(e.to),s=i.offset.left.minus(32);i.offset.left=s;let c=a.offset.right.plus(32);a.offset.right=c;let l=this.newVar(0),u=o(t),d,f;switch(!0){case!!u:d=u.y1.minus(40),f=u.y2.plus(32),this.put(u.bottom).before(l,32);break;case a===i:d=this.newVar(0),f=this.newVar(0),this.put(d).before(i.offset.top,52),this.put(i.offset.bottom).before(f,32),this.put(f).before(l);break;case t.length>0:d=this.newVar(0),f=this.newVar(0);for(let e of t)this.put(d).before(e.y1,32),this.put(e.y2).before(f,32),this.put(e.bottom).before(l,32);break;default:d=this.newVar(0),f=this.newVar(0);for(var p=i.column;p<=a.column;p++){let e=this.actorBox(p).offset;this.put(d).before(e.top,52),this.put(e.bottom).before(f,32)}this.put(f).before(l);break}for(var p=i.column;p<=a.column;p++){let e=this.actorBox(p).offset;e.top=d,e.bottom=f}return[{node:e.node,depth:r,from:i,to:a,x1:s,y1:d,x2:c,y2:f,bottom:l},...n]}ensureRow(e,t){for(;e>=this.#s.length;){let n=d(this.#s)?.outer.bottom||this.#o,r=this.newVar(n.value());this.put(r).after(n);let i=t;e!==this.#s.length&&(i=100);let a=new f;a.setValue(i),this.#t.addEditVariable(a,D.strong),this.#t.suggestValue(a,i);let o=this.newVar(r.value()+i);this.require(o).after(r),this.constraint(o.minus(r),`==`,a,D.strong);let s=this.newVar(o.value());this.put(s).after(o),this.#s.push({inner:{top:r,bottom:o},rowTop:r,outer:{top:n,bottom:s},height:a})}let n=w(this.#s[e]);return t>n.height.value()&&(n.height.setValue(t),this.#t.suggestValue(n.height,t)),n}collapseRect({min:e,max:t}){for(let n=e.row;n<=t.row;n++){let e=w(this.#s[n],`Row ${n} not found`);e.collapsed=!0,e.height.setValue(0),this.#t.suggestValue(e.height,0)}}getRectBounds({min:e,max:t}){let n=this.#s[e.row],r=this.#s[t.row];return S(n&&r,`Subflow box invalid minRow=${e.row} maxRow=${t.row}`),{x1:this.actorBox(e.column).centerX,x2:this.actorBox(t.column).centerX,get top(){return n.inner.top},set top(e){n.inner.top=e},get bottom(){return r.inner.bottom},set bottom(e){r.inner.bottom=e},minY:n.outer.top,maxY:r.outer.bottom}}wrapAroundRect(e,t){let n=normalizeSpacing(t??16),r=this.getRectBounds(e),i=this.newVar(0);this.put(i).before(r.x1,n.left);let a=this.newVar(0);this.put(a).after(r.x2,n.right);let o=this.newVar(r.minY.value());this.require(o).after(r.minY),this.put(o).before(r.top,n.top);let s=this.newVar(r.maxY.value());return this.put(s).after(r.bottom,n.bottom),this.require(s).before(r.maxY),r.top=o,r.bottom=s,{x1:i,y1:o,x2:a,y2:s}}createSubflowAreas(r,a){let selectSteps=e=>i(r,t=>t.id.startsWith(e)),o={top:30,right:40,bottom:10,left:90},fitSubflows=({area:r,visited:a,stretch:s=!1,padding:c})=>{let u=l(a,i(v.isSubFlow),n(e=>this.#c.get(e.id)??[]));if(!e(u,1))return;let f=E(c,o),p=t(u),m=d(u);p.min.row==r.min.row&&this.require(r.y1).before(p.y1,f.top),m.max.row==r.max.row&&this.require(m.y2).before(r.y2,f.bottom);for(let e of u)this.require(e.x1).after(r.x1,f.left),this.require(e.x2).before(r.x2,f.right),s&&(e.x1=f.left>0?r.x1.plus(f.left):r.x1,e.x2=f.right>0?r.x2.minus(f.right):r.x2)},createSubflowArea=e=>{let t=rectFromSteps(selectSteps(e.id)),n;switch(!0){case v.isAltOrTry(e):n=0;break;case a.has(e.id)&&v.isAltOrTryBranch(e):n={...o,top:36,bottom:0};break;case a.has(e.id):n={...o,top:24,bottom:0};break;default:n=o;break}let r={...this.wrapAroundRect(t,n),...t};return this.#c.set(e.id,r),r};this.#e.walk({subflow:({subflow:e,previous:t,parent:n})=>({next:a.has(e.id)?[]:e.flow,onLeave:({visited:r})=>{let i=createSubflowArea(e),o=v.isSubFlow(t)&&this.#c.get(t.id);switch(!v.isAltOrTryBranch(e)&&o&&this.put(o.y2).before(i.y1,32),!n&&i.min.column>0&&this.require(this.actorBox(i.min.column-1).centerX).before(i.x1,100),!0){case a.has(e.id):this.collapseRect(i);return;case v.isAltOrTry(e):return fitSubflows({area:i,visited:r,padding:{top:30,left:0,right:0},stretch:!0});case v.isAltOrTryBranch(e):return fitSubflows({area:i,visited:r,padding:{top:50,left:32,bottom:32,right:32}});default:return fitSubflows({area:i,visited:r,padding:{top:40,bottom:12,left:32,right:16}})}}})})}newVar(e){let t=new f;return this.#t.addEditVariable(t,D.weak),typeof e==`number`&&(t.setValue(e),this.#t.suggestValue(t,e)),t}require(...e){if(e.length==1){let[t]=e;return{before:(e,n=0)=>{let r=n?e.minus(n):e;return this.constraint(t,`<=`,r,D.required)},after:(e,n=0)=>{let r=n?e.plus(n):e;return this.constraint(t,`>=`,r,D.required)}}}let[t,n,r]=e,i=this.constraint(t,n,r,D.required);switch(n){case`<=`:case`>=`:this.constraint(t,`==`,r,D.weak);break;case`<= 0`:case`>= 0`:this.constraint(t,`== 0`,void 0,D.weak);break}return i}constraint(e,t,n=void 0,r=D.medium){let i;switch(t){case`==`:i=h.Eq;break;case`>=`:i=h.Ge;break;case`<=`:i=h.Le;break;case`== 0`:i=h.Eq,n=0;break;case`>= 0`:i=h.Ge,n=0;break;case`<= 0`:i=h.Le,n=0;break;default:T(t)}let a=new m(e,i,n??0,r);return this.#t.addConstraint(a),a}put(e,t=D.required){let n=t===D.required?D.soft:D.weak;return{before:(r,i)=>{i&&(r=r.minus(i)),this.constraint(e,`<=`,r,t),this.constraint(e,`==`,r,n)},after:(r,i)=>{i&&(r=r.plus(i)),this.constraint(e,`>=`,r,t),this.constraint(e,`==`,r,n)}}}};function calcSequenceLayout(t){let n=_(t),i=new Set,getNode=e=>w(t.nodes.find(t=>t.id===e)),o=[];for(let e of t.edges){let t=getNode(e.source),n=getNode(e.target);if(t.children.length||n.children.length){console.error(`Sequence view does not support nested actors`);continue}i.add(t),i.add(n),o.push({edge:e,source:t,target:n})}let d=t.nodes.filter(e=>i.has(e));S(e(d,1),`actors array must not be empty`);let f=new b(()=>[]),p=[],m=0,h;for(let{edge:e,source:t,target:n}of o){let r=d.indexOf(t),i=d.indexOf(n),a=t===n,o=r>i,s=y(e.id),c=!1;h&&h.target==t&&h.parent===s&&(c=h.isSelfLoop!==a||h.isBack===o),!c&&h&&m++;let l={id:e.id,from:{column:r,row:m},to:{column:i,row:a?++m:m},edge:e,isSelfLoop:a,isBack:o,parent:s,offset:c?(h?.offset??0)+22:0,source:t,target:n,label:e.labelBBox?{height:e.labelBBox.height+8+(e.navigateTo?20:0),width:e.labelBBox.width+16,text:e.label}:null};p.push(l),f.get(t).push({step:l,row:m,type:`source`,position:o&&!a?`left`:`right`}),f.get(n).push({step:l,row:m,type:`target`,position:o||a?`right`:`left`}),h=l}let g=new SequenceViewLayouter({actors:d,steps:p,compounds:buildCompounds(d,t.nodes),flow:n,collapsedFlows:[]}),v=g.getViewBounds(),x=l(g.getCompoundBoxes(),a(({node:e,...t})=>({...t,id:e.id,origin:e.id})),r(`id`),u((t,n)=>e(t,2)?a(t,(e,t)=>({...e,id:`${n}-${t+1}`})):t),c(),s());return{actors:d.map(e=>toSeqActor({actor:e,ports:f.get(e),layout:g})),compounds:x,steps:a(p,e=>({id:e.id,sourceHandle:e.id+`_source`,targetHandle:e.id+`_target`,...e.label&&{labelBBox:{width:e.label.width,height:e.label.height}}})),parallelAreas:[],subflows:g.getSubflowAreas(),bounds:v}}function toSeqActor({actor:e,ports:t,layout:n}){let{x:r,y:i,width:a,height:o}=n.getActorBox(e);return{id:e.id,x:r,y:i,width:a,height:o,ports:t.map(e=>{let t=n.getPortCenter(e.step,e.type);return{id:`${e.step.id}_${e.type}`,cx:t.cx-r,cy:t.cy-i,height:t.height,type:e.type,position:e.position}})}}export{E as n,calcSequenceLayout as t};
|
|
1
|
+
import"./rolldown-runtime.mjs";import{$ as e,J as t,K as n,V as r,Z as i,b as a,m as o,q as s,t as c,tt as l,v as u,x as d}from"./libs/remeda.mjs";import{a as f,i as p,n as m,r as h,t as g}from"./libs/@lume/kiwi.mjs";import{dynamicViewFlow as _,flowGuards as v,parentFlow as y}from"@likec4/core/types";import{DefaultMap as b,Stack as x,invariant as S,isAncestor as C,nonNullable as w,nonexhaustive as T}from"@likec4/core/utils";function isPlainObject(e){if(typeof e!=`object`||!e)return!1;let t=Object.getPrototypeOf(e);return t!==null&&t!==Object.prototype&&Object.getPrototypeOf(t)!==null||Symbol.iterator in e?!1:Symbol.toStringTag in e?Object.prototype.toString.call(e)===`[object Module]`:!0}function _defu(e,t,n=`.`,r){if(!isPlainObject(t))return _defu(e,{},n,r);let i={...t};for(let t of Object.keys(e)){if(t===`__proto__`||t===`constructor`)continue;let a=e[t];a!=null&&(r&&r(i,t,a,n)||(i[t]=Array.isArray(a)&&Array.isArray(i[t])?[...a,...i[t]]:isPlainObject(a)&&isPlainObject(i[t])?_defu(a,i[t],(n?`${n}.`:``)+t.toString(),r):a))}return i}function createDefu(e){return(...t)=>t.reduce((t,n)=>_defu(t,n,``,e),{})}const E=createDefu(),paddingFromNumber=e=>({left:e,right:e,top:e,bottom:e});function normalizeSpacing(e=16){return typeof e==`number`?paddingFromNumber(e):{left:e?.left??e?.x??0,right:e?.right??e?.x??0,top:e?.top??e?.y??0,bottom:e?.bottom??e?.y??0}}function rectFromSteps(e){return S(e.length>0),e.reduce((e,t)=>{let n=[t.from.column,t.to.column],r=[t.from.row,t.to.row];return e.min.column=Math.min(e.min.column,...n),e.min.row=Math.min(e.min.row,...r),e.max.column=Math.max(e.max.column,...n),e.max.row=Math.max(e.max.row,...r),e},{min:{column:1/0,row:1/0},max:{column:-1/0,row:-1/0}})}function buildCompounds(e,t){if(e.length===0||e.length===t.length)return[];let getNode=e=>t.find(t=>t.id===e);function parentsLookup(e){let t=e.parent&&getNode(e.parent);return t?[t,...parentsLookup(t)]:[]}let n=new x,r=[];return e.forEach(e=>{let t=parentsLookup(e);if(t.length===0){n.clear();return}let i,a=t[0];for(;i=n.peek()?.node;){if(!a||i.id===a.id){t.length=0;break}if(!C(i.id,a.id)){n.pop();continue}break}for(;i=t.pop();){let t=n.peek();if(t&&(C(i.id,t.node.id)||i.id===t.node.id))continue;let a={node:i,from:e,to:e,nested:[]};t?t.nested.push(a):r.push(a),n.push(a)}n.forEach(t=>t.to=e)}),r}const D={required:p.required,strong:p.strong,medium:p.medium,soft:p.create(0,.8,1),weak:p.weak};var SequenceViewLayouter=class{#e;#t=new g;#n;#r=[];#i;#a;#o;#s=[];#c=new Map;constructor({actors:e,steps:t,compounds:n,flow:r,collapsedFlows:i}){this.#t.maxIterations=2e3,this.#e=r;let a=Math.max(...e.map(e=>e.height))+30;this.#o=this.newVar(a),this.constraint(this.#o,`==`,a,D.soft),this.constraint(this.#o,`>=`,a,D.weak),this.#i=this.newVar(0),this.#a=this.newVar(0),this.#n=this.addActors(e);for(let e of n){let t=this.addCompound(e),n=t[0];this.constraint(n.y1,`==`,0,D.strong),this.put(this.#o,D.strong).after(n.y2),this.#r.push(...t)}let[o,...s]=this.#n;this.constraint(o.offset.left,`==`,0,D.strong);let c=s.reduce((e,t)=>(this.put(t.x).after(e.right,80),this.put(e.offset.right,D.strong).before(t.offset.left,50),this.constraint(t.centerY,`==`,e.centerY,D.strong),t),o);for(let e of t)this.addStep(e);this.createSubflowAreas(t,new Set(i)),this.constraint(this.#i,`==`,c.offset.right);let l=d(this.#s)?.inner.bottom??this.#o;if(this.put(this.#a,D.strong).after(l,16),n.length>0)for(let e of this.#r){let t=e.from.column,n=e.to.column,r=Math.max(e.from.maxRow,e.to.maxRow);for(let e=t+1;e<n;e++){let t=this.actorBox(e);r=Math.max(r,t.maxRow)}let i=w(this.#s[r],`row ${r} not found`);this.put(e.bottom,D.strong).after(i.inner.bottom,10)}this.#t.updateVariables()}getSubflowAreas(){return[...this.#c.entries()].map(([e,{x1:t,y1:n,x2:r,y2:i}])=>({id:e,x:t.value(),y:n.value(),width:r.value()-t.value(),height:i.value()-n.value()}))}getActorBox(e){let t=this.actorBox(e);return{x:t.x.value(),y:t.y.value(),width:t.width,height:t.height}}getCompoundBoxes(){return this.#r.map(({node:e,depth:t,x1:n,y1:r,x2:i,bottom:a})=>({node:e,depth:t,x:n.value(),y:r.value(),width:i.value()-n.value(),height:a.value()-r.value()}))}getPortCenter(e,t){let{column:n,row:r}=t===`source`?e.from:e.to,i=this.actorBox(n).centerX,{rowTop:a}=w(this.#s[r]);return e.isSelfLoop&&t===`target`?{cx:i.value(),cy:a.value(),height:24}:{cx:i.value(),cy:a.value()+40+e.offset,height:t===`source`?40:24}}isStepCollapsed(e){if(e.from.row===e.to.row)return this.#s[e.from.row]?.collapsed??!1;let t=Math.min(e.from.row,e.to.row),n=Math.min(e.from.row,e.to.row),r=!0;for(let e=t;e<=n&&(r&&=this.#s[e]?.collapsed??!1,r);e++);return r}getViewBounds(){return{x:0,y:0,width:this.#i.value(),height:this.#a.value()}}actorBox(e){if(typeof e!=`number`){let t=typeof e==`string`?e:e.id;e=this.#n.findIndex(e=>e.actor.id===t),S(e>=0,`actor ${t} not found`)}return w(this.#n[e],`actor at index ${e} not found`)}addActors(e){let t=0;return a(e,(e,n)=>{let r=this.newVar(t);t+=e.width+80;let i=this.newVar(0),a={column:n,actor:e,x:r,y:i,centerX:r.plus(Math.round(e.width/2)),centerY:i.plus(Math.round(e.height/2)),width:e.width,height:e.height,right:r.plus(e.width),bottom:i.plus(e.height),minRow:1/0,maxRow:-1/0},o=this.newVar(0),s=this.newVar(0),c=this.newVar(0),l=this.newVar(0);return this.put(i,D.strong).after(o),this.put(r,D.strong).after(s),this.put(a.right,D.strong).before(c),this.put(a.bottom,D.strong).before(l),{...a,offset:{top:o,left:s,right:c,bottom:l}}})}addStep(e){let t=this.actorBox(e.source),n=this.actorBox(e.target);t.minRow=Math.min(t.minRow,e.from.row),t.maxRow=Math.max(t.maxRow,e.from.row),n.minRow=Math.min(n.minRow,e.to.row),n.maxRow=Math.max(n.maxRow,e.to.row);let[r,i]=t.column<=n.column?[t,n]:[n,t],a=(e.label?.width??100)+50;Math.abs(n.column-t.column)<=1&&(r===i?this.constraint(r.centerX.plus(a),`<=`,r.offset.right):this.constraint(r.centerX.plus(a),`<=`,i.centerX));let o=e.label?.height?e.label.height+50+24:100;return o=Math.max(o,100)+e.offset,this.ensureRow(e.from.row,o),e.to.row!==e.from.row&&this.ensureRow(e.to.row,24),this}addCompound(e){let t=[],n=e.nested.flatMap(e=>{let n=this.addCompound(e);return t.push(n[0]),n}),r=Math.max(...n.map(e=>e.depth+1),0),i=this.actorBox(e.from),a=this.actorBox(e.to),s=i.offset.left.minus(32);i.offset.left=s;let c=a.offset.right.plus(32);a.offset.right=c;let l=this.newVar(0),u=o(t),d,f;switch(!0){case!!u:d=u.y1.minus(40),f=u.y2.plus(32),this.put(u.bottom).before(l,32);break;case a===i:d=this.newVar(0),f=this.newVar(0),this.put(d).before(i.offset.top,52),this.put(i.offset.bottom).before(f,32),this.put(f).before(l);break;case t.length>0:d=this.newVar(0),f=this.newVar(0);for(let e of t)this.put(d).before(e.y1,32),this.put(e.y2).before(f,32),this.put(e.bottom).before(l,32);break;default:d=this.newVar(0),f=this.newVar(0);for(var p=i.column;p<=a.column;p++){let e=this.actorBox(p).offset;this.put(d).before(e.top,52),this.put(e.bottom).before(f,32)}this.put(f).before(l)}for(var p=i.column;p<=a.column;p++){let e=this.actorBox(p).offset;e.top=d,e.bottom=f}return[{node:e.node,depth:r,from:i,to:a,x1:s,y1:d,x2:c,y2:f,bottom:l},...n]}ensureRow(e,t){for(;e>=this.#s.length;){let n=d(this.#s)?.outer.bottom||this.#o,r=this.newVar(n.value());this.put(r).after(n);let i=t;e!==this.#s.length&&(i=100);let a=new f;a.setValue(i),this.#t.addEditVariable(a,D.strong),this.#t.suggestValue(a,i);let o=this.newVar(r.value()+i);this.require(o).after(r),this.constraint(o.minus(r),`==`,a,D.strong);let s=this.newVar(o.value());this.put(s).after(o),this.#s.push({inner:{top:r,bottom:o},rowTop:r,outer:{top:n,bottom:s},height:a})}let n=w(this.#s[e]);return t>n.height.value()&&(n.height.setValue(t),this.#t.suggestValue(n.height,t)),n}collapseRect({min:e,max:t}){for(let n=e.row;n<=t.row;n++){let e=w(this.#s[n],`Row ${n} not found`);e.collapsed=!0,e.height.setValue(0),this.#t.suggestValue(e.height,0)}}getRectBounds({min:e,max:t}){let n=this.#s[e.row],r=this.#s[t.row];return S(n&&r,`Subflow box invalid minRow=${e.row} maxRow=${t.row}`),{x1:this.actorBox(e.column).centerX,x2:this.actorBox(t.column).centerX,get top(){return n.inner.top},set top(e){n.inner.top=e},get bottom(){return r.inner.bottom},set bottom(e){r.inner.bottom=e},minY:n.outer.top,maxY:r.outer.bottom}}wrapAroundRect(e,t){let n=normalizeSpacing(t??16),r=this.getRectBounds(e),i=this.newVar(0);this.put(i).before(r.x1,n.left);let a=this.newVar(0);this.put(a).after(r.x2,n.right);let o=this.newVar(r.minY.value());this.require(o).after(r.minY),this.put(o).before(r.top,n.top);let s=this.newVar(r.maxY.value());return this.put(s).after(r.bottom,n.bottom),this.require(s).before(r.maxY),r.top=o,r.bottom=s,{x1:i,y1:o,x2:a,y2:s}}createSubflowAreas(r,a){let selectSteps=e=>i(r,t=>t.id.startsWith(e)),o={top:30,right:40,bottom:10,left:90},fitSubflows=({area:r,visited:a,stretch:s=!1,padding:c})=>{let u=l(a,i(v.isSubFlow),n(e=>this.#c.get(e.id)??[]));if(!e(u,1))return;let f=E(c,o),p=t(u),m=d(u);p.min.row==r.min.row&&this.require(r.y1).before(p.y1,f.top),m.max.row==r.max.row&&this.require(m.y2).before(r.y2,f.bottom);for(let e of u)this.require(e.x1).after(r.x1,f.left),this.require(e.x2).before(r.x2,f.right),s&&(e.x1=f.left>0?r.x1.plus(f.left):r.x1,e.x2=f.right>0?r.x2.minus(f.right):r.x2)},createSubflowArea=e=>{let t=rectFromSteps(selectSteps(e.id)),n;switch(!0){case v.isAltOrTry(e):n=0;break;case a.has(e.id)&&v.isAltOrTryBranch(e):n={...o,top:36,bottom:0};break;case a.has(e.id):n={...o,top:24,bottom:0};break;default:n=o}let r={...this.wrapAroundRect(t,n),...t};return this.#c.set(e.id,r),r};this.#e.walk({subflow:({subflow:e,previous:t,parent:n})=>({next:a.has(e.id)?[]:e.flow,onLeave:({visited:r})=>{let i=createSubflowArea(e),o=v.isSubFlow(t)&&this.#c.get(t.id);switch(!v.isAltOrTryBranch(e)&&o&&this.put(o.y2).before(i.y1,32),!n&&i.min.column>0&&this.require(this.actorBox(i.min.column-1).centerX).before(i.x1,100),!0){case a.has(e.id):this.collapseRect(i);return;case v.isAltOrTry(e):return fitSubflows({area:i,visited:r,padding:{top:30,left:0,right:0},stretch:!0});case v.isAltOrTryBranch(e):return fitSubflows({area:i,visited:r,padding:{top:50,left:32,bottom:32,right:32}});default:return fitSubflows({area:i,visited:r,padding:{top:40,bottom:12,left:32,right:16}})}}})})}newVar(e){let t=new f;return this.#t.addEditVariable(t,D.weak),typeof e==`number`&&(t.setValue(e),this.#t.suggestValue(t,e)),t}require(...e){if(e.length==1){let[t]=e;return{before:(e,n=0)=>{let r=n?e.minus(n):e;return this.constraint(t,`<=`,r,D.required)},after:(e,n=0)=>{let r=n?e.plus(n):e;return this.constraint(t,`>=`,r,D.required)}}}let[t,n,r]=e,i=this.constraint(t,n,r,D.required);switch(n){case`<=`:case`>=`:this.constraint(t,`==`,r,D.weak);break;case`<= 0`:case`>= 0`:this.constraint(t,`== 0`,void 0,D.weak)}return i}constraint(e,t,n=void 0,r=D.medium){let i;switch(t){case`==`:i=h.Eq;break;case`>=`:i=h.Ge;break;case`<=`:i=h.Le;break;case`== 0`:i=h.Eq,n=0;break;case`>= 0`:i=h.Ge,n=0;break;case`<= 0`:i=h.Le,n=0;break;default:T(t)}let a=new m(e,i,n??0,r);return this.#t.addConstraint(a),a}put(e,t=D.required){let n=t===D.required?D.soft:D.weak;return{before:(r,i)=>{i&&(r=r.minus(i)),this.constraint(e,`<=`,r,t),this.constraint(e,`==`,r,n)},after:(r,i)=>{i&&(r=r.plus(i)),this.constraint(e,`>=`,r,t),this.constraint(e,`==`,r,n)}}}};function calcSequenceLayout(t){let n=_(t),i=new Set,getNode=e=>w(t.nodes.find(t=>t.id===e)),o=[];for(let e of t.edges){let t=getNode(e.source),n=getNode(e.target);if(t.children.length||n.children.length){console.error(`Sequence view does not support nested actors`);continue}i.add(t),i.add(n),o.push({edge:e,source:t,target:n})}let d=t.nodes.filter(e=>i.has(e));S(e(d,1),`actors array must not be empty`);let f=new b(()=>[]),p=[],m=0,h;for(let{edge:e,source:t,target:n}of o){let r=d.indexOf(t),i=d.indexOf(n),a=t===n,o=r>i,s=y(e.id),c=!1;h&&h.target==t&&h.parent===s&&(c=h.isSelfLoop!==a||h.isBack===o),!c&&h&&m++;let l={id:e.id,from:{column:r,row:m},to:{column:i,row:a?++m:m},edge:e,isSelfLoop:a,isBack:o,parent:s,offset:c?(h?.offset??0)+22:0,source:t,target:n,label:e.labelBBox?{height:e.labelBBox.height+8+(e.navigateTo?20:0),width:e.labelBBox.width+16,text:e.label}:null};p.push(l),f.get(t).push({step:l,row:m,type:`source`,position:o&&!a?`left`:`right`}),f.get(n).push({step:l,row:m,type:`target`,position:o||a?`right`:`left`}),h=l}let g=new SequenceViewLayouter({actors:d,steps:p,compounds:buildCompounds(d,t.nodes),flow:n,collapsedFlows:[]}),v=g.getViewBounds(),x=l(g.getCompoundBoxes(),a(({node:e,...t})=>({...t,id:e.id,origin:e.id})),r(`id`),u((t,n)=>e(t,2)?a(t,(e,t)=>({...e,id:`${n}-${t+1}`})):t),c(),s());return{actors:d.map(e=>toSeqActor({actor:e,ports:f.get(e),layout:g})),compounds:x,steps:a(p,e=>({id:e.id,sourceHandle:e.id+`_source`,targetHandle:e.id+`_target`,...e.label&&{labelBBox:{width:e.label.width,height:e.label.height}}})),parallelAreas:[],subflows:g.getSubflowAreas(),bounds:v}}function toSeqActor({actor:e,ports:t,layout:n}){let{x:r,y:i,width:a,height:o}=n.getActorBox(e);return{id:e.id,x:r,y:i,width:a,height:o,ports:t.map(e=>{let t=n.getPortCenter(e.step,e.type);return{id:`${e.step.id}_${e.type}`,cx:t.cx-r,cy:t.cy-i,height:t.height,type:e.type,position:e.position}})}}export{E as n,calcSequenceLayout as t};
|