likec4 1.59.4 → 1.61.0
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/README.md +2 -0
- package/__app__/codegen/react.mjs +4 -10
- package/__app__/codegen/webcomponent.mjs +6 -131
- package/__app__/index.html +15 -15
- package/__app__/src/aichat/index.mjs +11 -7
- package/__app__/src/chunks/AIChat.mjs +1355 -739
- package/__app__/src/chunks/ErrorComponent.mjs +444 -0
- package/__app__/src/chunks/Header.mjs +269 -0
- package/__app__/src/chunks/ViewReact.mjs +438 -0
- package/__app__/src/chunks/find.mjs +38 -0
- package/__app__/src/chunks/hooks.mjs +158 -472
- package/__app__/src/chunks/libs/@tabler/icons-react.mjs +340 -0
- package/__app__/src/chunks/libs/@tanstack-ai.mjs +11841 -1417
- package/__app__/src/chunks/libs/@tanstack.mjs +5110 -2404
- package/__app__/src/chunks/libs/fast-equals.mjs +507 -214
- package/__app__/src/chunks/libs/html-to-image.mjs +613 -0
- package/__app__/src/chunks/libs/nanostores.mjs +170 -0
- package/__app__/src/chunks/libs/react-resizable-panels.mjs +2792 -0
- package/__app__/src/chunks/react.mjs +22 -0
- package/__app__/src/chunks/rolldown-runtime.mjs +16 -29
- package/__app__/src/chunks/router.mjs +106 -0
- package/__app__/src/chunks/scope.mjs +106 -0
- package/__app__/src/chunks/searchParams.mjs +29 -0
- package/__app__/src/chunks/single-index.mjs +465 -0
- package/__app__/src/chunks/styled-system.mjs +1826 -2528
- package/__app__/src/chunks/useAsync.mjs +69 -0
- package/__app__/src/chunks/useSyncedRef.mjs +16 -0
- package/__app__/src/components/ColorSchemeToggle.mjs +124 -0
- package/__app__/src/components/CopyToClipboard.mjs +53 -0
- package/__app__/src/components/ErrorComponent.mjs +1 -0
- package/__app__/src/components/NavigationPanel.mjs +63 -0
- package/__app__/src/components/NotFound.mjs +155 -0
- package/__app__/src/components/ViewOutlet.mjs +9 -0
- package/__app__/src/components/model-diff/CompareModelProvider.mjs +44 -0
- package/__app__/src/components/model-diff/ModelDiffPanel.mjs +179 -0
- package/__app__/src/components/model-diff/compare-model.mjs +76 -0
- package/__app__/src/components/model-diff/state.mjs +45 -0
- package/__app__/src/components/search/OverviewSearch.mjs +92 -0
- package/__app__/src/components/search/OverviewSearchAdapter.mjs +94 -0
- package/__app__/src/components/sidebar/DiagramTree.css.mjs +48 -0
- package/__app__/src/components/sidebar/DiagramsTree.mjs +304 -0
- package/__app__/src/components/sidebar/Drawer.mjs +178 -0
- package/__app__/src/components/sidebar/SidebarBurger.mjs +28 -0
- package/__app__/src/components/sidebar/data.mjs +94 -0
- package/__app__/src/components/sidebar/state.mjs +16 -0
- package/__app__/src/components/view-page/Header.mjs +1 -0
- package/__app__/src/components/view-page/SelectProject.mjs +258 -0
- package/__app__/src/components/view-page/ShareModal.mjs +111 -0
- package/__app__/src/components/view-page/share-modal/AlertLocalhost.mjs +31 -0
- package/__app__/src/components/view-page/share-modal/CopyButtonChild.mjs +36 -0
- package/__app__/src/components/view-page/share-modal/EmbedPanel.mjs +100 -0
- package/__app__/src/components/view-page/share-modal/WebcomponentsPanel.mjs +264 -0
- package/__app__/src/components/view-page/state.mjs +17 -0
- package/__app__/src/context/LikeC4CustomizationContext.mjs +26 -0
- package/__app__/src/context/LikeC4IconRendererContext.mjs +29 -0
- package/__app__/src/context/LikeC4ModelContext.mjs +34 -0
- package/__app__/src/context/LikeC4ProjectsContext.mjs +40 -0
- package/__app__/src/context/ModelDiffsContext.mjs +33 -0
- package/__app__/src/context/safeCtx.mjs +14 -0
- package/__app__/src/fonts.css +112 -1
- package/__app__/src/hooks.mjs +1 -0
- package/__app__/src/main.mjs +6 -29151
- package/__app__/src/pages/EmbedPage.mjs +93 -0
- package/__app__/src/pages/ExportPage.mjs +691 -0
- package/__app__/src/pages/ProjectsOverview.mjs +23 -0
- package/__app__/src/pages/ViewAsD2.mjs +105 -0
- package/__app__/src/pages/ViewAsDot.mjs +65 -0
- package/__app__/src/pages/ViewAsMmd.mjs +109 -0
- package/__app__/src/pages/ViewAsPuml.mjs +105 -0
- package/__app__/src/pages/ViewEditor.mjs +220 -0
- package/__app__/src/pages/ViewReact.mjs +1 -0
- package/__app__/src/pages/export-layout.mjs +95 -0
- package/__app__/src/pages/export-page-params.mjs +9 -0
- package/__app__/src/pages/styles.css.mjs +23 -0
- package/__app__/src/routeTree.gen.mjs +105 -0
- package/__app__/src/router.mjs +1 -0
- package/__app__/src/routes/__root.mjs +65 -0
- package/__app__/src/routes/index.css.mjs +29 -0
- package/__app__/src/routes/index.mjs +32 -0
- package/__app__/src/routes/project._projectId/-components.mjs +100 -0
- package/__app__/src/routes/project._projectId/embed._viewId.mjs +5 -0
- package/__app__/src/routes/project._projectId/export._viewId.mjs +24 -0
- package/__app__/src/routes/project._projectId/index.mjs +14 -0
- package/__app__/src/routes/project._projectId/route.mjs +93 -0
- package/__app__/src/routes/project._projectId/view._viewId.d2.mjs +34 -0
- package/__app__/src/routes/project._projectId/view._viewId.dot.mjs +41 -0
- package/__app__/src/routes/project._projectId/view._viewId.index.mjs +7 -0
- package/__app__/src/routes/project._projectId/view._viewId.mjs +23 -0
- package/__app__/src/routes/project._projectId/view._viewId.mmd.mjs +39 -0
- package/__app__/src/routes/project._projectId/view._viewId.puml.mjs +34 -0
- package/__app__/src/routes/projects.mjs +36 -0
- package/__app__/src/routes/single-index.mjs +1 -0
- package/__app__/src/routes/webcomponent._.mjs +94 -0
- package/__app__/src/style.css +18497 -1
- package/config/schema.json +146 -97
- package/dist/app/render-view-client.css +1 -1
- package/dist/app/render-view-client.js +394 -238
- package/dist/chunks/enableServer.mjs +1 -1
- package/dist/chunks/filenames.mjs +25 -17
- package/dist/chunks/generate-likec4.mjs +5 -0
- package/dist/chunks/index.d.mts +255 -194
- package/dist/chunks/index2.d.mts +8246 -3610
- package/dist/chunks/libs/@chenglou/pretext.mjs +9 -0
- package/dist/chunks/libs/@chevrotain/gast.mjs +27 -1
- package/dist/chunks/libs/@chevrotain/regexp-to-ast.mjs +81 -9
- package/dist/chunks/libs/@logtape/logtape.mjs +5 -4
- package/dist/chunks/libs/@lume/kiwi.mjs +1 -1
- package/dist/chunks/libs/@ts-graphviz/common.d.mts +2 -4
- package/dist/chunks/libs/@ts-graphviz/core.mjs +1 -1
- package/dist/chunks/libs/birpc.mjs +1 -1
- package/dist/chunks/libs/chevrotain-allstar.mjs +2 -2
- package/dist/chunks/libs/chevrotain.mjs +88 -36
- package/dist/chunks/libs/clone.mjs +1 -0
- package/dist/chunks/libs/eventemitter3.mjs +1 -1
- package/dist/chunks/libs/fast-equals.mjs +1 -0
- package/dist/chunks/libs/fontkit.mjs +1 -0
- package/dist/chunks/libs/json5.mjs +4 -4
- package/dist/chunks/libs/langium.d.mts +6707 -6715
- package/dist/chunks/libs/langium.mjs +16 -24
- package/dist/chunks/libs/merge-error-cause.mjs +1 -1
- package/dist/chunks/libs/p-limit.mjs +1 -0
- 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 +1 -1
- package/dist/chunks/libs/pathe.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/which.mjs +1 -1
- package/dist/chunks/node.mjs +111 -77
- package/dist/chunks/rolldown-runtime.mjs +1 -1
- package/dist/chunks/sequence-view.mjs +1 -1
- package/dist/chunks/vite-plugin.mjs +185 -166
- package/dist/cli/index.mjs +254 -1306
- package/dist/config/index.d.mts +66 -5
- package/dist/config/index.mjs +1 -1
- package/dist/generators/likec4.d.mts +6530 -0
- package/dist/generators/likec4.mjs +1 -0
- package/dist/index.d.mts +2 -4
- package/dist/model/index.d.mts +0 -7
- package/dist/vite-plugin/index.d.mts +83 -58
- package/dist/vite-plugin/index.mjs +1 -1
- package/dist/vite-plugin/internal/chunks/rolldown-runtime.mjs +8 -0
- package/dist/vite-plugin/internal/index.d.mts +92 -17
- package/dist/vite-plugin/internal/index.mjs +225 -126
- package/generators/likec4/package.json +4 -0
- package/package.json +134 -122
- package/react/index.d.mts +7496 -26659
- package/react/index.mjs +533 -63936
- package/react/rolldown-runtime-CfRud99p.js +1 -0
- package/skills/likec4-dsl/SKILL.md +474 -0
- package/skills/likec4-dsl/evals/evals-public.json +207 -0
- package/skills/likec4-dsl/evals/grading-spec.json +603 -0
- package/skills/likec4-dsl/references/bridge-leanix-drawio.md +42 -0
- package/skills/likec4-dsl/references/cli.md +168 -0
- package/skills/likec4-dsl/references/configuration.md +266 -0
- package/skills/likec4-dsl/references/deployment.md +160 -0
- package/skills/likec4-dsl/references/diffs.md +52 -0
- package/skills/likec4-dsl/references/dynamic-views.md +455 -0
- package/skills/likec4-dsl/references/examples.md +370 -0
- package/skills/likec4-dsl/references/identifier-validity.md +90 -0
- package/skills/likec4-dsl/references/include-predicates-wildcards.md +180 -0
- package/skills/likec4-dsl/references/model.md +182 -0
- package/skills/likec4-dsl/references/predicates.md +123 -0
- package/skills/likec4-dsl/references/relationships-bidirectional.md +176 -0
- package/skills/likec4-dsl/references/specification.md +79 -0
- package/skills/likec4-dsl/references/style-tokens-colors.md +150 -0
- package/skills/likec4-dsl/references/troubleshooting.md +101 -0
- package/skills/likec4-dsl/references/views.md +329 -0
- package/vite-plugin-modules.d.ts +126 -51
- package/__app__/src/chunks/LikeC4Styles.mjs +0 -2306
- package/__app__/src/chunks/ProjectsOverview.mjs +0 -537
- package/__app__/src/chunks/es.mjs +0 -439
- package/__app__/src/chunks/libs/@floating-ui.mjs +0 -2532
- package/__app__/src/chunks/libs/@mantine.mjs +0 -13868
- package/__app__/src/chunks/libs/@xstate/react.mjs +0 -2015
- package/__app__/src/chunks/libs/@xyflow/react.mjs +0 -5367
- package/__app__/src/chunks/libs/bezier-js.mjs +0 -1007
- package/__app__/src/chunks/libs/d3.mjs +0 -2817
- package/__app__/src/chunks/libs/framer.mjs +0 -5926
- package/__app__/src/chunks/libs/zod.mjs +0 -3176
- package/dist/chunks/libs/@chevrotain/types.d.mts +0 -108
- package/dist/chunks/libs/picomatch.mjs +0 -1
- package/dist/chunks/libs/zod.d.mts +0 -3840
- package/dist/chunks/libs/zod.mjs +0 -65
|
@@ -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},
|
|
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,t.exports),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},__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=/* @__PURE__ */ e(import.meta.url);export{s as a,__name as i,__esmMin as n,__toCommonJS as o,__exportAll as r,__toESM 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)||(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};
|
|
1
|
+
import"./rolldown-runtime.mjs";import{$ as e,J as t,S as n,U as r,X as i,Y as a,f as o,h as s,t as c,tt as l,x as u,y 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();else 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=/* @__PURE__ */ new Map;constructor({actors:e,steps:t,compounds:r,flow:i,collapsedFlows:a}){this.#t.maxIterations=2e3,this.#e=i;let o=Math.max(...e.map(e=>e.height))+30;this.#o=this.newVar(o),this.constraint(this.#o,`==`,o,D.soft),this.constraint(this.#o,`>=`,o,D.weak),this.#i=this.newVar(0),this.#a=this.newVar(0),this.#n=this.addActors(e);for(let e of r){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[s,...c]=this.#n;this.constraint(s.offset.left,`==`,0,D.strong);let l=c.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),s);for(let e of t)this.addStep(e);this.createSubflowAreas(t,new Set(a)),this.constraint(this.#i,`==`,l.offset.right);let u=n(this.#s)?.inner.bottom??this.#o;if(this.put(this.#a,D.strong).after(u,16),r.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 u(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),o=i.offset.left.minus(32);i.offset.left=o;let c=a.offset.right.plus(32);a.offset.right=c;let l=this.newVar(0),u=s(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:o,y1:d,x2:c,y2:f,bottom:l},...n]}ensureRow(e,t){for(;e>=this.#s.length;){let r=n(this.#s)?.outer.bottom||this.#o,i=this.newVar(r.value());this.put(i).after(r);let a=t;e!==this.#s.length&&(a=100);let o=new f;o.setValue(a),this.#t.addEditVariable(o,D.strong),this.#t.suggestValue(o,a);let s=this.newVar(i.value()+a);this.require(s).after(i),this.constraint(s.minus(i),`==`,o,D.strong);let c=this.newVar(s.value());this.put(c).after(s),this.#s.push({inner:{top:i,bottom:s},rowTop:i,outer:{top:r,bottom:c},height:o})}let r=w(this.#s[e]);return t>r.height.value()&&(r.height.setValue(t),this.#t.suggestValue(r.height,t)),r}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=t=>e(r,e=>e.id.startsWith(t)),s={top:30,right:40,bottom:10,left:90},fitSubflows=({area:r,visited:a,stretch:c=!1,padding:u})=>{let d=o(a,e(v.isSubFlow),t(e=>this.#c.get(e.id)??[]));if(!l(d,1))return;let f=E(u,s),p=i(d),m=n(d);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 d)this.require(e.x1).after(r.x1,f.left),this.require(e.x2).before(r.x2,f.right),c&&(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={...s,top:36,bottom:0};break;case a.has(e.id):n={...s,top:24,bottom:0};break;default:n=s}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(e){let t=_(e),n=/* @__PURE__ */ new Set,getNode=t=>w(e.nodes.find(e=>e.id===t)),i=[];for(let t of e.edges){let e=getNode(t.source),r=getNode(t.target);e.children.length||r.children.length?console.error(`Sequence view does not support nested actors`):(n.add(e),n.add(r),i.push({edge:t,source:e,target:r}))}let s=e.nodes.filter(e=>n.has(e));if(S(s.length===n.size,`actors array must match actorNodes size`),i.length===0||!l(s,1))return{actors:[],steps:[],compounds:[],parallelAreas:[],subflows:[],bounds:{x:0,y:0,width:0,height:0}};let f=new b(()=>[]),p=[],m=0,h;for(let{edge:e,source:t,target:n}of i){let r=s.indexOf(t),i=s.indexOf(n),a=t===n,o=r>i,c=y(e.id),l=!1;h&&h.target==t&&h.parent===c&&(l=h.isSelfLoop!==a||h.isBack===o),!l&&h&&m++;let u={id:e.id,from:{column:r,row:m},to:{column:i,row:a?++m:m},edge:e,isSelfLoop:a,isBack:o,parent:c,offset:l?(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(u),f.get(t).push({step:u,row:m,type:`source`,position:o&&!a?`left`:`right`}),f.get(n).push({step:u,row:m,type:`target`,position:o||a?`right`:`left`}),h=u}let g=new SequenceViewLayouter({actors:s,steps:p,compounds:buildCompounds(s,e.nodes),flow:t,collapsedFlows:[]}),v=g.getViewBounds(),x=o(g.getCompoundBoxes(),u(({node:e,...t})=>({...t,id:e.id,origin:e.id})),r(`id`),d((e,t)=>l(e,2)?u(e,(e,n)=>({...e,id:`${t}-${n+1}`})):e),c(),a());return{actors:s.map(e=>toSeqActor({actor:e,ports:f.get(e),layout:g})),compounds:x,steps:u(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};
|