@memoarchitect/architect 0.11.2 → 0.11.3
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/assets/{AiWorkspace-GFHs046m.js → AiWorkspace-DRN1NVMU.js} +1 -1
- package/dist/assets/{AnalysisWorkspace-BfZ4GYza.js → AnalysisWorkspace-BGdkl3PU.js} +1 -1
- package/dist/assets/{ComplianceWizard-CYBizPbC.js → ComplianceWizard-BktwMgJe.js} +1 -1
- package/dist/assets/{DSMView-BsjhUbpW.js → DSMView-Em0sO2Uj.js} +1 -1
- package/dist/assets/{Dashboard-rdbfFJYx.js → Dashboard-CXbU-BFU.js} +1 -1
- package/dist/assets/{DhfDashboard-BdhBA4OL.js → DhfDashboard-DcZw_zNy.js} +1 -1
- package/dist/assets/{DhfWorkbench-tnIpEFmu.js → DhfWorkbench-ClLIypQX.js} +3 -3
- package/dist/assets/DiagramCanvas-wDamEqea.js +4 -0
- package/dist/assets/{DiagramEditor-icnDwdxM.js → DiagramEditor-BSJuk0w6.js} +2 -2
- package/dist/assets/{ElementDetailView-Crpltlrz.js → ElementDetailView-BMgTV4b7.js} +1 -1
- package/dist/assets/{ExplorerTreeRow-DG8T31JS.js → ExplorerTreeRow-CX2kYnaJ.js} +1 -1
- package/dist/assets/{ImportView-1vrZ1CGB.js → ImportView-Dwl7KYVo.js} +1 -1
- package/dist/assets/{LayerGrid-DnP2smgG.js → LayerGrid-wfRIaj8M.js} +1 -1
- package/dist/assets/{LayerTable-97qPfMD3.js → LayerTable-DUhcLrAE.js} +1 -1
- package/dist/assets/{MaxGraphCanvas-BJss9LYp.js → MaxGraphCanvas-zFgc11zx.js} +1 -1
- package/dist/assets/{ModelDiff-H5nxOavB.js → ModelDiff-Br7XLC74.js} +1 -1
- package/dist/assets/{OntologyDecompositionDiagram-D0G3A7-R.js → OntologyDecompositionDiagram-BbpIVZLr.js} +1 -1
- package/dist/assets/{OntologyViewer-0BJ2jMZ8.js → OntologyViewer-610n8iwf.js} +2 -2
- package/dist/assets/{ReviewDashboard-Dl-YTC4_.js → ReviewDashboard-aDWpLpkb.js} +1 -1
- package/dist/assets/{ScenarioEditor-CiHaTvVY.js → ScenarioEditor-cLJenHgj.js} +1 -1
- package/dist/assets/{StatisticsDashboard-w2dtCD94.js → StatisticsDashboard-DOJHl1sB.js} +1 -1
- package/dist/assets/{TabularView-CFy0PK1L.js → TabularView-C-bodzPd.js} +1 -1
- package/dist/assets/{TraceabilityMatrix-DDoHYsCP.js → TraceabilityMatrix-Bp0KSjVP.js} +1 -1
- package/dist/assets/UiScreensWorkspace-CcV0r4cA.js +1 -0
- package/dist/assets/{WorkflowWizard-Br1zPSLC.js → WorkflowWizard-St0tA37H.js} +1 -1
- package/dist/assets/{index-DEVvBtNh.js → index-BYfHEpXT.js} +68 -68
- package/dist/assets/{index-BVySIRo1.css → index-X7EXuNCl.css} +1 -1
- package/dist/assets/{index.es-D0WykKwq.js → index.es-D_igLMWe.js} +1 -1
- package/dist/assets/{jspdf.es.min-DZ4wvU_9.js → jspdf.es.min-B7e0_lrE.js} +3 -3
- package/dist/assets/notation-scene-BLpi6R_E.js +1 -0
- package/dist/index.html +2 -2
- package/dist-standalone/index.html +184 -184
- package/package.json +1 -1
- package/dist/assets/DiagramCanvas-BmVByLcM.js +0 -4
- package/dist/assets/UiScreensWorkspace-DOxjCMG9.js +0 -1
- package/dist/assets/notation-scene-HbscVJH5.js +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ScenarioEditor-
|
|
2
|
-
import{r as
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ScenarioEditor-cLJenHgj.js","assets/reactflow-C9OlmOYw.js","assets/zustand-CrhqMOHB.js","assets/DiagramEditor-BSJuk0w6.js","assets/DiagramToolbarControls-XMGLx08e.js","assets/DSMView-Em0sO2Uj.js","assets/OntologyViewer-610n8iwf.js","assets/TraceabilityMatrix-Bp0KSjVP.js","assets/ModelDiff-Br7XLC74.js","assets/ComplianceWizard-BktwMgJe.js","assets/StatisticsDashboard-DOJHl1sB.js","assets/DhfDashboard-DcZw_zNy.js","assets/DhfWorkbench-ClLIypQX.js","assets/AiWorkspace-DRN1NVMU.js","assets/ElementDetailView-BMgTV4b7.js","assets/Dashboard-CXbU-BFU.js","assets/ReviewDashboard-aDWpLpkb.js","assets/WorkflowWizard-St0tA37H.js","assets/TabularView-C-bodzPd.js","assets/ImportView-Dwl7KYVo.js","assets/AnalysisWorkspace-BGdkl3PU.js","assets/UiScreensWorkspace-CcV0r4cA.js","assets/ExplorerTreeRow-CX2kYnaJ.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{r as Lo,j as t}from"./reactflow-C9OlmOYw.js";import{a as p,b as Lr,W as qo}from"./zustand-CrhqMOHB.js";(function(){const r=document.createElement("link").relList;if(r&&r.supports&&r.supports("modulepreload"))return;for(const a of document.querySelectorAll('link[rel="modulepreload"]'))o(a);new MutationObserver(a=>{for(const s of a)if(s.type==="childList")for(const i of s.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&o(i)}).observe(document,{childList:!0,subtree:!0});function n(a){const s={};return a.integrity&&(s.integrity=a.integrity),a.referrerPolicy&&(s.referrerPolicy=a.referrerPolicy),a.crossOrigin==="use-credentials"?s.credentials="include":a.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function o(a){if(a.ep)return;a.ep=!0;const s=n(a);fetch(a.href,s)}})();var Ct={},Gn;function $o(){if(Gn)return Ct;Gn=1;var e=Lo();return Ct.createRoot=e.createRoot,Ct.hydrateRoot=e.hydrateRoot,Ct}var Vo=$o();/**
|
|
3
3
|
* react-router v7.13.2
|
|
4
4
|
*
|
|
5
5
|
* Copyright (c) Remix Software Inc.
|
|
@@ -8,12 +8,12 @@ import{r as zo,j as t}from"./reactflow-C9OlmOYw.js";import{a as p,b as Lr,W as U
|
|
|
8
8
|
* LICENSE.md file in the root directory of this source tree.
|
|
9
9
|
*
|
|
10
10
|
* @license MIT
|
|
11
|
-
*/var Jn="popstate";function Xn(e){return typeof e=="object"&&e!=null&&"pathname"in e&&"search"in e&&"hash"in e&&"state"in e&&"key"in e}function $o(e={}){function r(o,a){var d;let s=(d=a.state)==null?void 0:d.masked,{pathname:i,search:l,hash:c}=s||o.location;return qt("",{pathname:i,search:l,hash:c},a.state&&a.state.usr||null,a.state&&a.state.key||"default",s?{pathname:o.location.pathname,search:o.location.search,hash:o.location.hash}:void 0)}function n(o,a){return typeof a=="string"?a:Ge(a)}return qr(r,n,null,e)}function Vo(e={}){function r(a,s){let{pathname:i="/",search:l="",hash:c=""}=qe(a.location.hash.substring(1));return!i.startsWith("/")&&!i.startsWith(".")&&(i="/"+i),qt("",{pathname:i,search:l,hash:c},s.state&&s.state.usr||null,s.state&&s.state.key||"default")}function n(a,s){let i=a.document.querySelector("base"),l="";if(i&&i.getAttribute("href")){let c=a.location.href,d=c.indexOf("#");l=d===-1?c:c.slice(0,d)}return l+"#"+(typeof s=="string"?s:Ge(s))}function o(a,s){Se(a.pathname.charAt(0)==="/",`relative pathnames are not supported in hash history.push(${JSON.stringify(s)})`)}return qr(r,n,o,e)}function se(e,r){if(e===!1||e===null||typeof e>"u")throw new Error(r)}function Se(e,r){if(!e){typeof console<"u"&&console.warn(r);try{throw new Error(r)}catch{}}}function Wo(){return Math.random().toString(36).substring(2,10)}function Qn(e,r){return{usr:e.state,key:e.key,idx:r,masked:e.unstable_mask?{pathname:e.pathname,search:e.search,hash:e.hash}:void 0}}function qt(e,r,n=null,o,a){return{pathname:typeof e=="string"?e:e.pathname,search:"",hash:"",...typeof r=="string"?qe(r):r,state:n,key:r&&r.key||o||Wo(),unstable_mask:a}}function Ge({pathname:e="/",search:r="",hash:n=""}){return r&&r!=="?"&&(e+=r.charAt(0)==="?"?r:"?"+r),n&&n!=="#"&&(e+=n.charAt(0)==="#"?n:"#"+n),e}function qe(e){let r={};if(e){let n=e.indexOf("#");n>=0&&(r.hash=e.substring(n),e=e.substring(0,n));let o=e.indexOf("?");o>=0&&(r.search=e.substring(o),e=e.substring(0,o)),e&&(r.pathname=e)}return r}function qr(e,r,n,o={}){let{window:a=document.defaultView,v5Compat:s=!1}=o,i=a.history,l="POP",c=null,d=u();d==null&&(d=0,i.replaceState({...i.state,idx:d},""));function u(){return(i.state||{idx:null}).idx}function m(){l="POP";let h=u(),y=h==null?null:h-d;d=h,c&&c({action:l,location:g.location,delta:y})}function b(h,y){l="PUSH";let B=Xn(h)?h:qt(g.location,h,y);n&&n(B,h),d=u()+1;let N=Qn(B,d),D=g.createHref(B.unstable_mask||B);try{i.pushState(N,"",D)}catch(A){if(A instanceof DOMException&&A.name==="DataCloneError")throw A;a.location.assign(D)}s&&c&&c({action:l,location:g.location,delta:1})}function v(h,y){l="REPLACE";let B=Xn(h)?h:qt(g.location,h,y);n&&n(B,h),d=u();let N=Qn(B,d),D=g.createHref(B.unstable_mask||B);i.replaceState(N,"",D),s&&c&&c({action:l,location:g.location,delta:0})}function w(h){return Ho(h)}let g={get action(){return l},get location(){return e(a,i)},listen(h){if(c)throw new Error("A history only accepts one active listener");return a.addEventListener(Jn,m),c=h,()=>{a.removeEventListener(Jn,m),c=null}},createHref(h){return r(a,h)},createURL:w,encodeLocation(h){let y=w(h);return{pathname:y.pathname,search:y.search,hash:y.hash}},push:b,replace:v,go(h){return i.go(h)}};return g}function Ho(e,r=!1){let n="http://localhost";typeof window<"u"&&(n=window.location.origin!=="null"?window.location.origin:window.location.href),se(n,"No window.location.(origin|href) available to create URL");let o=typeof e=="string"?e:Ge(e);return o=o.replace(/ $/,"%20"),!r&&o.startsWith("//")&&(o=n+o),new URL(o,n)}function $r(e,r,n="/"){return Ko(e,r,n,!1)}function Ko(e,r,n,o){let a=typeof r=="string"?qe(r):r,s=Ie(a.pathname||"/",n);if(s==null)return null;let i=Vr(e);Go(i);let l=null;for(let c=0;l==null&&c<i.length;++c){let d=aa(s);l=ra(i[c],d,o)}return l}function Vr(e,r=[],n=[],o="",a=!1){let s=(i,l,c=a,d)=>{let u={relativePath:d===void 0?i.path||"":d,caseSensitive:i.caseSensitive===!0,childrenIndex:l,route:i};if(u.relativePath.startsWith("/")){if(!u.relativePath.startsWith(o)&&c)return;se(u.relativePath.startsWith(o),`Absolute route path "${u.relativePath}" nested under path "${o}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),u.relativePath=u.relativePath.slice(o.length)}let m=je([o,u.relativePath]),b=n.concat(u);i.children&&i.children.length>0&&(se(i.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${m}".`),Vr(i.children,r,b,m,c)),!(i.path==null&&!i.index)&&r.push({path:m,score:ta(m,i.index),routesMeta:b})};return e.forEach((i,l)=>{var c;if(i.path===""||!((c=i.path)!=null&&c.includes("?")))s(i,l);else for(let d of Wr(i.path))s(i,l,!0,d)}),r}function Wr(e){let r=e.split("/");if(r.length===0)return[];let[n,...o]=r,a=n.endsWith("?"),s=n.replace(/\?$/,"");if(o.length===0)return a?[s,""]:[s];let i=Wr(o.join("/")),l=[];return l.push(...i.map(c=>c===""?s:[s,c].join("/"))),a&&l.push(...i),l.map(c=>e.startsWith("/")&&c===""?"/":c)}function Go(e){e.sort((r,n)=>r.score!==n.score?n.score-r.score:na(r.routesMeta.map(o=>o.childrenIndex),n.routesMeta.map(o=>o.childrenIndex)))}var Yo=/^:[\w-]+$/,Jo=3,Xo=2,Qo=1,Zo=10,ea=-2,Zn=e=>e==="*";function ta(e,r){let n=e.split("/"),o=n.length;return n.some(Zn)&&(o+=ea),r&&(o+=Xo),n.filter(a=>!Zn(a)).reduce((a,s)=>a+(Yo.test(s)?Jo:s===""?Qo:Zo),o)}function na(e,r){return e.length===r.length&&e.slice(0,-1).every((o,a)=>o===r[a])?e[e.length-1]-r[r.length-1]:0}function ra(e,r,n=!1){let{routesMeta:o}=e,a={},s="/",i=[];for(let l=0;l<o.length;++l){let c=o[l],d=l===o.length-1,u=s==="/"?r:r.slice(s.length)||"/",m=$t({path:c.relativePath,caseSensitive:c.caseSensitive,end:d},u),b=c.route;if(!m&&d&&n&&!o[o.length-1].route.index&&(m=$t({path:c.relativePath,caseSensitive:c.caseSensitive,end:!1},u)),!m)return null;Object.assign(a,m.params),i.push({params:a,pathname:je([s,m.pathname]),pathnameBase:da(je([s,m.pathnameBase])),route:b}),m.pathnameBase!=="/"&&(s=je([s,m.pathnameBase]))}return i}function $t(e,r){typeof e=="string"&&(e={path:e,caseSensitive:!1,end:!0});let[n,o]=oa(e.path,e.caseSensitive,e.end),a=r.match(n);if(!a)return null;let s=a[0],i=s.replace(/(.)\/+$/,"$1"),l=a.slice(1);return{params:o.reduce((d,{paramName:u,isOptional:m},b)=>{if(u==="*"){let w=l[b]||"";i=s.slice(0,s.length-w.length).replace(/(.)\/+$/,"$1")}const v=l[b];return m&&!v?d[u]=void 0:d[u]=(v||"").replace(/%2F/g,"/"),d},{}),pathname:s,pathnameBase:i,pattern:e}}function oa(e,r=!1,n=!0){Se(e==="*"||!e.endsWith("*")||e.endsWith("/*"),`Route path "${e}" will be treated as if it were "${e.replace(/\*$/,"/*")}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${e.replace(/\*$/,"/*")}".`);let o=[],a="^"+e.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(i,l,c,d,u)=>{if(o.push({paramName:l,isOptional:c!=null}),c){let m=u.charAt(d+i.length);return m&&m!=="/"?"/([^\\/]*)":"(?:/([^\\/]*))?"}return"/([^\\/]+)"}).replace(/\/([\w-]+)\?(\/|$)/g,"(/$1)?$2");return e.endsWith("*")?(o.push({paramName:"*"}),a+=e==="*"||e==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):n?a+="\\/*$":e!==""&&e!=="/"&&(a+="(?:(?=\\/|$))"),[new RegExp(a,r?void 0:"i"),o]}function aa(e){try{return e.split("/").map(r=>decodeURIComponent(r).replace(/\//g,"%2F")).join("/")}catch(r){return Se(!1,`The URL path "${e}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${r}).`),e}}function Ie(e,r){if(r==="/")return e;if(!e.toLowerCase().startsWith(r.toLowerCase()))return null;let n=r.endsWith("/")?r.length-1:r.length,o=e.charAt(n);return o&&o!=="/"?null:e.slice(n)||"/"}var sa=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i;function ia(e,r="/"){let{pathname:n,search:o="",hash:a=""}=typeof e=="string"?qe(e):e,s;return n?(n=n.replace(/\/\/+/g,"/"),n.startsWith("/")?s=er(n.substring(1),"/"):s=er(n,r)):s=r,{pathname:s,search:ca(o),hash:ua(a)}}function er(e,r){let n=r.replace(/\/+$/,"").split("/");return e.split("/").forEach(a=>{a===".."?n.length>1&&n.pop():a!=="."&&n.push(a)}),n.length>1?n.join("/"):"/"}function en(e,r,n,o){return`Cannot include a '${e}' character in a manually specified \`to.${r}\` field [${JSON.stringify(o)}]. Please separate it out to the \`to.${n}\` field. Alternatively you may provide the full path as a string in <Link to="..."> and the router will parse it for you.`}function la(e){return e.filter((r,n)=>n===0||r.route.path&&r.route.path.length>0)}function Hr(e){let r=la(e);return r.map((n,o)=>o===r.length-1?n.pathname:n.pathnameBase)}function Nn(e,r,n,o=!1){let a;typeof e=="string"?a=qe(e):(a={...e},se(!a.pathname||!a.pathname.includes("?"),en("?","pathname","search",a)),se(!a.pathname||!a.pathname.includes("#"),en("#","pathname","hash",a)),se(!a.search||!a.search.includes("#"),en("#","search","hash",a)));let s=e===""||a.pathname==="",i=s?"/":a.pathname,l;if(i==null)l=n;else{let m=r.length-1;if(!o&&i.startsWith("..")){let b=i.split("/");for(;b[0]==="..";)b.shift(),m-=1;a.pathname=b.join("/")}l=m>=0?r[m]:"/"}let c=ia(a,l),d=i&&i!=="/"&&i.endsWith("/"),u=(s||i===".")&&n.endsWith("/");return!c.pathname.endsWith("/")&&(d||u)&&(c.pathname+="/"),c}var je=e=>e.join("/").replace(/\/\/+/g,"/"),da=e=>e.replace(/\/+$/,"").replace(/^\/*/,"/"),ca=e=>!e||e==="?"?"":e.startsWith("?")?e:"?"+e,ua=e=>!e||e==="#"?"":e.startsWith("#")?e:"#"+e,pa=class{constructor(e,r,n,o=!1){this.status=e,this.statusText=r||"",this.internal=o,n instanceof Error?(this.data=n.toString(),this.error=n):this.data=n}};function ma(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.internal=="boolean"&&"data"in e}function fa(e){return e.map(r=>r.route.path).filter(Boolean).join("/").replace(/\/\/*/g,"/")||"/"}var Kr=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function Gr(e,r){let n=e;if(typeof n!="string"||!sa.test(n))return{absoluteURL:void 0,isExternal:!1,to:n};let o=n,a=!1;if(Kr)try{let s=new URL(window.location.href),i=n.startsWith("//")?new URL(s.protocol+n):new URL(n),l=Ie(i.pathname,r);i.origin===s.origin&&l!=null?n=l+i.search+i.hash:a=!0}catch{Se(!1,`<Link to="${n}"> contains an invalid URL which will probably break when clicked - please update to a valid URL path.`)}return{absoluteURL:o,isExternal:a,to:n}}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");var Yr=["POST","PUT","PATCH","DELETE"];new Set(Yr);var ha=["GET",...Yr];new Set(ha);var Qe=p.createContext(null);Qe.displayName="DataRouter";var Gt=p.createContext(null);Gt.displayName="DataRouterState";var ya=p.createContext(!1),Jr=p.createContext({isTransitioning:!1});Jr.displayName="ViewTransition";var ga=p.createContext(new Map);ga.displayName="Fetchers";var xa=p.createContext(null);xa.displayName="Await";var ye=p.createContext(null);ye.displayName="Navigation";var Ze=p.createContext(null);Ze.displayName="Location";var De=p.createContext({outlet:null,matches:[],isDataRoute:!1});De.displayName="Route";var Tn=p.createContext(null);Tn.displayName="RouteError";var Xr="REACT_ROUTER_ERROR",ba="REDIRECT",va="ROUTE_ERROR_RESPONSE";function wa(e){if(e.startsWith(`${Xr}:${ba}:{`))try{let r=JSON.parse(e.slice(28));if(typeof r=="object"&&r&&typeof r.status=="number"&&typeof r.statusText=="string"&&typeof r.location=="string"&&typeof r.reloadDocument=="boolean"&&typeof r.replace=="boolean")return r}catch{}}function ka(e){if(e.startsWith(`${Xr}:${va}:{`))try{let r=JSON.parse(e.slice(40));if(typeof r=="object"&&r&&typeof r.status=="number"&&typeof r.statusText=="string")return new pa(r.status,r.statusText,r.data)}catch{}}function Sa(e,{relative:r}={}){se(bt(),"useHref() may be used only in the context of a <Router> component.");let{basename:n,navigator:o}=p.useContext(ye),{hash:a,pathname:s,search:i}=vt(e,{relative:r}),l=s;return n!=="/"&&(l=s==="/"?n:je([n,s])),o.createHref({pathname:l,search:i,hash:a})}function bt(){return p.useContext(Ze)!=null}function Be(){return se(bt(),"useLocation() may be used only in the context of a <Router> component."),p.useContext(Ze).location}function Ca(){return p.useContext(Ze).navigationType}var Qr="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function Zr(e){p.useContext(ye).static||p.useLayoutEffect(e)}function Ce(){let{isDataRoute:e}=p.useContext(De);return e?Pa():Ea()}function Ea(){se(bt(),"useNavigate() may be used only in the context of a <Router> component.");let e=p.useContext(Qe),{basename:r,navigator:n}=p.useContext(ye),{matches:o}=p.useContext(De),{pathname:a}=Be(),s=JSON.stringify(Hr(o)),i=p.useRef(!1);return Zr(()=>{i.current=!0}),p.useCallback((c,d={})=>{if(Se(i.current,Qr),!i.current)return;if(typeof c=="number"){n.go(c);return}let u=Nn(c,JSON.parse(s),a,d.relative==="path");e==null&&r!=="/"&&(u.pathname=u.pathname==="/"?r:je([r,u.pathname])),(d.replace?n.replace:n.push)(u,d.state,d)},[r,n,s,a,e])}p.createContext(null);function Rn(){let{matches:e}=p.useContext(De),r=e[e.length-1];return r?r.params:{}}function vt(e,{relative:r}={}){let{matches:n}=p.useContext(De),{pathname:o}=Be(),a=JSON.stringify(Hr(n));return p.useMemo(()=>Nn(e,JSON.parse(a),o,r==="path"),[e,a,o,r])}function ja(e,r){return eo(e,r)}function eo(e,r,n){var h;se(bt(),"useRoutes() may be used only in the context of a <Router> component.");let{navigator:o}=p.useContext(ye),{matches:a}=p.useContext(De),s=a[a.length-1],i=s?s.params:{},l=s?s.pathname:"/",c=s?s.pathnameBase:"/",d=s&&s.route;{let y=d&&d.path||"";no(l,!d||y.endsWith("*")||y.endsWith("*?"),`You rendered descendant <Routes> (or called \`useRoutes()\`) at "${l}" (under <Route path="${y}">) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render.
|
|
11
|
+
*/var Yn="popstate";function Jn(e){return typeof e=="object"&&e!=null&&"pathname"in e&&"search"in e&&"hash"in e&&"state"in e&&"key"in e}function Wo(e={}){function r(o,a){var d;let s=(d=a.state)==null?void 0:d.masked,{pathname:i,search:l,hash:c}=s||o.location;return $t("",{pathname:i,search:l,hash:c},a.state&&a.state.usr||null,a.state&&a.state.key||"default",s?{pathname:o.location.pathname,search:o.location.search,hash:o.location.hash}:void 0)}function n(o,a){return typeof a=="string"?a:Ge(a)}return qr(r,n,null,e)}function Ho(e={}){function r(a,s){let{pathname:i="/",search:l="",hash:c=""}=qe(a.location.hash.substring(1));return!i.startsWith("/")&&!i.startsWith(".")&&(i="/"+i),$t("",{pathname:i,search:l,hash:c},s.state&&s.state.usr||null,s.state&&s.state.key||"default")}function n(a,s){let i=a.document.querySelector("base"),l="";if(i&&i.getAttribute("href")){let c=a.location.href,d=c.indexOf("#");l=d===-1?c:c.slice(0,d)}return l+"#"+(typeof s=="string"?s:Ge(s))}function o(a,s){Ee(a.pathname.charAt(0)==="/",`relative pathnames are not supported in hash history.push(${JSON.stringify(s)})`)}return qr(r,n,o,e)}function le(e,r){if(e===!1||e===null||typeof e>"u")throw new Error(r)}function Ee(e,r){if(!e){typeof console<"u"&&console.warn(r);try{throw new Error(r)}catch{}}}function Ko(){return Math.random().toString(36).substring(2,10)}function Xn(e,r){return{usr:e.state,key:e.key,idx:r,masked:e.unstable_mask?{pathname:e.pathname,search:e.search,hash:e.hash}:void 0}}function $t(e,r,n=null,o,a){return{pathname:typeof e=="string"?e:e.pathname,search:"",hash:"",...typeof r=="string"?qe(r):r,state:n,key:r&&r.key||o||Ko(),unstable_mask:a}}function Ge({pathname:e="/",search:r="",hash:n=""}){return r&&r!=="?"&&(e+=r.charAt(0)==="?"?r:"?"+r),n&&n!=="#"&&(e+=n.charAt(0)==="#"?n:"#"+n),e}function qe(e){let r={};if(e){let n=e.indexOf("#");n>=0&&(r.hash=e.substring(n),e=e.substring(0,n));let o=e.indexOf("?");o>=0&&(r.search=e.substring(o),e=e.substring(0,o)),e&&(r.pathname=e)}return r}function qr(e,r,n,o={}){let{window:a=document.defaultView,v5Compat:s=!1}=o,i=a.history,l="POP",c=null,d=u();d==null&&(d=0,i.replaceState({...i.state,idx:d},""));function u(){return(i.state||{idx:null}).idx}function m(){l="POP";let h=u(),y=h==null?null:h-d;d=h,c&&c({action:l,location:g.location,delta:y})}function b(h,y){l="PUSH";let N=Jn(h)?h:$t(g.location,h,y);n&&n(N,h),d=u()+1;let R=Xn(N,d),A=g.createHref(N.unstable_mask||N);try{i.pushState(R,"",A)}catch(T){if(T instanceof DOMException&&T.name==="DataCloneError")throw T;a.location.assign(A)}s&&c&&c({action:l,location:g.location,delta:1})}function v(h,y){l="REPLACE";let N=Jn(h)?h:$t(g.location,h,y);n&&n(N,h),d=u();let R=Xn(N,d),A=g.createHref(N.unstable_mask||N);i.replaceState(R,"",A),s&&c&&c({action:l,location:g.location,delta:0})}function w(h){return Go(h)}let g={get action(){return l},get location(){return e(a,i)},listen(h){if(c)throw new Error("A history only accepts one active listener");return a.addEventListener(Yn,m),c=h,()=>{a.removeEventListener(Yn,m),c=null}},createHref(h){return r(a,h)},createURL:w,encodeLocation(h){let y=w(h);return{pathname:y.pathname,search:y.search,hash:y.hash}},push:b,replace:v,go(h){return i.go(h)}};return g}function Go(e,r=!1){let n="http://localhost";typeof window<"u"&&(n=window.location.origin!=="null"?window.location.origin:window.location.href),le(n,"No window.location.(origin|href) available to create URL");let o=typeof e=="string"?e:Ge(e);return o=o.replace(/ $/,"%20"),!r&&o.startsWith("//")&&(o=n+o),new URL(o,n)}function $r(e,r,n="/"){return Yo(e,r,n,!1)}function Yo(e,r,n,o){let a=typeof r=="string"?qe(r):r,s=Me(a.pathname||"/",n);if(s==null)return null;let i=Vr(e);Jo(i);let l=null;for(let c=0;l==null&&c<i.length;++c){let d=ia(s);l=aa(i[c],d,o)}return l}function Vr(e,r=[],n=[],o="",a=!1){let s=(i,l,c=a,d)=>{let u={relativePath:d===void 0?i.path||"":d,caseSensitive:i.caseSensitive===!0,childrenIndex:l,route:i};if(u.relativePath.startsWith("/")){if(!u.relativePath.startsWith(o)&&c)return;le(u.relativePath.startsWith(o),`Absolute route path "${u.relativePath}" nested under path "${o}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),u.relativePath=u.relativePath.slice(o.length)}let m=De([o,u.relativePath]),b=n.concat(u);i.children&&i.children.length>0&&(le(i.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${m}".`),Vr(i.children,r,b,m,c)),!(i.path==null&&!i.index)&&r.push({path:m,score:ra(m,i.index),routesMeta:b})};return e.forEach((i,l)=>{var c;if(i.path===""||!((c=i.path)!=null&&c.includes("?")))s(i,l);else for(let d of Wr(i.path))s(i,l,!0,d)}),r}function Wr(e){let r=e.split("/");if(r.length===0)return[];let[n,...o]=r,a=n.endsWith("?"),s=n.replace(/\?$/,"");if(o.length===0)return a?[s,""]:[s];let i=Wr(o.join("/")),l=[];return l.push(...i.map(c=>c===""?s:[s,c].join("/"))),a&&l.push(...i),l.map(c=>e.startsWith("/")&&c===""?"/":c)}function Jo(e){e.sort((r,n)=>r.score!==n.score?n.score-r.score:oa(r.routesMeta.map(o=>o.childrenIndex),n.routesMeta.map(o=>o.childrenIndex)))}var Xo=/^:[\w-]+$/,Qo=3,Zo=2,ea=1,ta=10,na=-2,Qn=e=>e==="*";function ra(e,r){let n=e.split("/"),o=n.length;return n.some(Qn)&&(o+=na),r&&(o+=Zo),n.filter(a=>!Qn(a)).reduce((a,s)=>a+(Xo.test(s)?Qo:s===""?ea:ta),o)}function oa(e,r){return e.length===r.length&&e.slice(0,-1).every((o,a)=>o===r[a])?e[e.length-1]-r[r.length-1]:0}function aa(e,r,n=!1){let{routesMeta:o}=e,a={},s="/",i=[];for(let l=0;l<o.length;++l){let c=o[l],d=l===o.length-1,u=s==="/"?r:r.slice(s.length)||"/",m=Vt({path:c.relativePath,caseSensitive:c.caseSensitive,end:d},u),b=c.route;if(!m&&d&&n&&!o[o.length-1].route.index&&(m=Vt({path:c.relativePath,caseSensitive:c.caseSensitive,end:!1},u)),!m)return null;Object.assign(a,m.params),i.push({params:a,pathname:De([s,m.pathname]),pathnameBase:ua(De([s,m.pathnameBase])),route:b}),m.pathnameBase!=="/"&&(s=De([s,m.pathnameBase]))}return i}function Vt(e,r){typeof e=="string"&&(e={path:e,caseSensitive:!1,end:!0});let[n,o]=sa(e.path,e.caseSensitive,e.end),a=r.match(n);if(!a)return null;let s=a[0],i=s.replace(/(.)\/+$/,"$1"),l=a.slice(1);return{params:o.reduce((d,{paramName:u,isOptional:m},b)=>{if(u==="*"){let w=l[b]||"";i=s.slice(0,s.length-w.length).replace(/(.)\/+$/,"$1")}const v=l[b];return m&&!v?d[u]=void 0:d[u]=(v||"").replace(/%2F/g,"/"),d},{}),pathname:s,pathnameBase:i,pattern:e}}function sa(e,r=!1,n=!0){Ee(e==="*"||!e.endsWith("*")||e.endsWith("/*"),`Route path "${e}" will be treated as if it were "${e.replace(/\*$/,"/*")}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${e.replace(/\*$/,"/*")}".`);let o=[],a="^"+e.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(i,l,c,d,u)=>{if(o.push({paramName:l,isOptional:c!=null}),c){let m=u.charAt(d+i.length);return m&&m!=="/"?"/([^\\/]*)":"(?:/([^\\/]*))?"}return"/([^\\/]+)"}).replace(/\/([\w-]+)\?(\/|$)/g,"(/$1)?$2");return e.endsWith("*")?(o.push({paramName:"*"}),a+=e==="*"||e==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):n?a+="\\/*$":e!==""&&e!=="/"&&(a+="(?:(?=\\/|$))"),[new RegExp(a,r?void 0:"i"),o]}function ia(e){try{return e.split("/").map(r=>decodeURIComponent(r).replace(/\//g,"%2F")).join("/")}catch(r){return Ee(!1,`The URL path "${e}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${r}).`),e}}function Me(e,r){if(r==="/")return e;if(!e.toLowerCase().startsWith(r.toLowerCase()))return null;let n=r.endsWith("/")?r.length-1:r.length,o=e.charAt(n);return o&&o!=="/"?null:e.slice(n)||"/"}var la=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i;function da(e,r="/"){let{pathname:n,search:o="",hash:a=""}=typeof e=="string"?qe(e):e,s;return n?(n=n.replace(/\/\/+/g,"/"),n.startsWith("/")?s=Zn(n.substring(1),"/"):s=Zn(n,r)):s=r,{pathname:s,search:pa(o),hash:ma(a)}}function Zn(e,r){let n=r.replace(/\/+$/,"").split("/");return e.split("/").forEach(a=>{a===".."?n.length>1&&n.pop():a!=="."&&n.push(a)}),n.length>1?n.join("/"):"/"}function tn(e,r,n,o){return`Cannot include a '${e}' character in a manually specified \`to.${r}\` field [${JSON.stringify(o)}]. Please separate it out to the \`to.${n}\` field. Alternatively you may provide the full path as a string in <Link to="..."> and the router will parse it for you.`}function ca(e){return e.filter((r,n)=>n===0||r.route.path&&r.route.path.length>0)}function Hr(e){let r=ca(e);return r.map((n,o)=>o===r.length-1?n.pathname:n.pathnameBase)}function Tn(e,r,n,o=!1){let a;typeof e=="string"?a=qe(e):(a={...e},le(!a.pathname||!a.pathname.includes("?"),tn("?","pathname","search",a)),le(!a.pathname||!a.pathname.includes("#"),tn("#","pathname","hash",a)),le(!a.search||!a.search.includes("#"),tn("#","search","hash",a)));let s=e===""||a.pathname==="",i=s?"/":a.pathname,l;if(i==null)l=n;else{let m=r.length-1;if(!o&&i.startsWith("..")){let b=i.split("/");for(;b[0]==="..";)b.shift(),m-=1;a.pathname=b.join("/")}l=m>=0?r[m]:"/"}let c=da(a,l),d=i&&i!=="/"&&i.endsWith("/"),u=(s||i===".")&&n.endsWith("/");return!c.pathname.endsWith("/")&&(d||u)&&(c.pathname+="/"),c}var De=e=>e.join("/").replace(/\/\/+/g,"/"),ua=e=>e.replace(/\/+$/,"").replace(/^\/*/,"/"),pa=e=>!e||e==="?"?"":e.startsWith("?")?e:"?"+e,ma=e=>!e||e==="#"?"":e.startsWith("#")?e:"#"+e,fa=class{constructor(e,r,n,o=!1){this.status=e,this.statusText=r||"",this.internal=o,n instanceof Error?(this.data=n.toString(),this.error=n):this.data=n}};function ha(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.internal=="boolean"&&"data"in e}function ya(e){return e.map(r=>r.route.path).filter(Boolean).join("/").replace(/\/\/*/g,"/")||"/"}var Kr=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function Gr(e,r){let n=e;if(typeof n!="string"||!la.test(n))return{absoluteURL:void 0,isExternal:!1,to:n};let o=n,a=!1;if(Kr)try{let s=new URL(window.location.href),i=n.startsWith("//")?new URL(s.protocol+n):new URL(n),l=Me(i.pathname,r);i.origin===s.origin&&l!=null?n=l+i.search+i.hash:a=!0}catch{Ee(!1,`<Link to="${n}"> contains an invalid URL which will probably break when clicked - please update to a valid URL path.`)}return{absoluteURL:o,isExternal:a,to:n}}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");var Yr=["POST","PUT","PATCH","DELETE"];new Set(Yr);var ga=["GET",...Yr];new Set(ga);var Qe=p.createContext(null);Qe.displayName="DataRouter";var Yt=p.createContext(null);Yt.displayName="DataRouterState";var xa=p.createContext(!1),Jr=p.createContext({isTransitioning:!1});Jr.displayName="ViewTransition";var ba=p.createContext(new Map);ba.displayName="Fetchers";var va=p.createContext(null);va.displayName="Await";var be=p.createContext(null);be.displayName="Navigation";var Ze=p.createContext(null);Ze.displayName="Location";var Be=p.createContext({outlet:null,matches:[],isDataRoute:!1});Be.displayName="Route";var Rn=p.createContext(null);Rn.displayName="RouteError";var Xr="REACT_ROUTER_ERROR",wa="REDIRECT",ka="ROUTE_ERROR_RESPONSE";function Sa(e){if(e.startsWith(`${Xr}:${wa}:{`))try{let r=JSON.parse(e.slice(28));if(typeof r=="object"&&r&&typeof r.status=="number"&&typeof r.statusText=="string"&&typeof r.location=="string"&&typeof r.reloadDocument=="boolean"&&typeof r.replace=="boolean")return r}catch{}}function Ca(e){if(e.startsWith(`${Xr}:${ka}:{`))try{let r=JSON.parse(e.slice(40));if(typeof r=="object"&&r&&typeof r.status=="number"&&typeof r.statusText=="string")return new fa(r.status,r.statusText,r.data)}catch{}}function Ea(e,{relative:r}={}){le(vt(),"useHref() may be used only in the context of a <Router> component.");let{basename:n,navigator:o}=p.useContext(be),{hash:a,pathname:s,search:i}=wt(e,{relative:r}),l=s;return n!=="/"&&(l=s==="/"?n:De([n,s])),o.createHref({pathname:l,search:i,hash:a})}function vt(){return p.useContext(Ze)!=null}function Fe(){return le(vt(),"useLocation() may be used only in the context of a <Router> component."),p.useContext(Ze).location}function ja(){return p.useContext(Ze).navigationType}var Qr="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function Zr(e){p.useContext(be).static||p.useLayoutEffect(e)}function je(){let{isDataRoute:e}=p.useContext(Be);return e?za():Da()}function Da(){le(vt(),"useNavigate() may be used only in the context of a <Router> component.");let e=p.useContext(Qe),{basename:r,navigator:n}=p.useContext(be),{matches:o}=p.useContext(Be),{pathname:a}=Fe(),s=JSON.stringify(Hr(o)),i=p.useRef(!1);return Zr(()=>{i.current=!0}),p.useCallback((c,d={})=>{if(Ee(i.current,Qr),!i.current)return;if(typeof c=="number"){n.go(c);return}let u=Tn(c,JSON.parse(s),a,d.relative==="path");e==null&&r!=="/"&&(u.pathname=u.pathname==="/"?r:De([r,u.pathname])),(d.replace?n.replace:n.push)(u,d.state,d)},[r,n,s,a,e])}p.createContext(null);function In(){let{matches:e}=p.useContext(Be),r=e[e.length-1];return r?r.params:{}}function wt(e,{relative:r}={}){let{matches:n}=p.useContext(Be),{pathname:o}=Fe(),a=JSON.stringify(Hr(n));return p.useMemo(()=>Tn(e,JSON.parse(a),o,r==="path"),[e,a,o,r])}function Ba(e,r){return eo(e,r)}function eo(e,r,n){var h;le(vt(),"useRoutes() may be used only in the context of a <Router> component.");let{navigator:o}=p.useContext(be),{matches:a}=p.useContext(Be),s=a[a.length-1],i=s?s.params:{},l=s?s.pathname:"/",c=s?s.pathnameBase:"/",d=s&&s.route;{let y=d&&d.path||"";no(l,!d||y.endsWith("*")||y.endsWith("*?"),`You rendered descendant <Routes> (or called \`useRoutes()\`) at "${l}" (under <Route path="${y}">) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render.
|
|
12
12
|
|
|
13
|
-
Please change the parent <Route path="${y}"> to <Route path="${y==="/"?"*":`${y}/*`}">.`)}let u=Be(),m;if(r){let y=typeof r=="string"?qe(r):r;se(c==="/"||((h=y.pathname)==null?void 0:h.startsWith(c)),`When overriding the location using \`<Routes location>\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${c}" but pathname "${y.pathname}" was given in the \`location\` prop.`),m=y}else m=u;let b=m.pathname||"/",v=b;if(c!=="/"){let y=c.replace(/^\//,"").split("/");v="/"+b.replace(/^\//,"").split("/").slice(y.length).join("/")}let w=$r(e,{pathname:v});Se(d||w!=null,`No routes matched location "${m.pathname}${m.search}${m.hash}" `),Se(w==null||w[w.length-1].route.element!==void 0||w[w.length-1].route.Component!==void 0||w[w.length-1].route.lazy!==void 0,`Matched leaf route at location "${m.pathname}${m.search}${m.hash}" does not have an element or Component. This means it will render an <Outlet /> with a null value by default resulting in an "empty" page.`);let g=Na(w&&w.map(y=>Object.assign({},y,{params:Object.assign({},i,y.params),pathname:je([c,o.encodeLocation?o.encodeLocation(y.pathname.replace(/%/g,"%25").replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:y.pathname]),pathnameBase:y.pathnameBase==="/"?c:je([c,o.encodeLocation?o.encodeLocation(y.pathnameBase.replace(/%/g,"%25").replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:y.pathnameBase])})),a,n);return r&&g?p.createElement(Ze.Provider,{value:{location:{pathname:"/",search:"",hash:"",state:null,key:"default",unstable_mask:void 0,...m},navigationType:"POP"}},g):g}function Da(){let e=_a(),r=ma(e)?`${e.status} ${e.statusText}`:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,o="rgba(200,200,200, 0.5)",a={padding:"0.5rem",backgroundColor:o},s={padding:"2px 4px",backgroundColor:o},i=null;return console.error("Error handled by React Router default ErrorBoundary:",e),i=p.createElement(p.Fragment,null,p.createElement("p",null,"💿 Hey developer 👋"),p.createElement("p",null,"You can provide a way better UX than this when your app throws errors by providing your own ",p.createElement("code",{style:s},"ErrorBoundary")," or"," ",p.createElement("code",{style:s},"errorElement")," prop on your route.")),p.createElement(p.Fragment,null,p.createElement("h2",null,"Unexpected Application Error!"),p.createElement("h3",{style:{fontStyle:"italic"}},r),n?p.createElement("pre",{style:a},n):null,i)}var Ba=p.createElement(Da,null),to=class extends p.Component{constructor(e){super(e),this.state={location:e.location,revalidation:e.revalidation,error:e.error}}static getDerivedStateFromError(e){return{error:e}}static getDerivedStateFromProps(e,r){return r.location!==e.location||r.revalidation!=="idle"&&e.revalidation==="idle"?{error:e.error,location:e.location,revalidation:e.revalidation}:{error:e.error!==void 0?e.error:r.error,location:r.location,revalidation:e.revalidation||r.revalidation}}componentDidCatch(e,r){this.props.onError?this.props.onError(e,r):console.error("React Router caught the following error during render",e)}render(){let e=this.state.error;if(this.context&&typeof e=="object"&&e&&"digest"in e&&typeof e.digest=="string"){const n=ka(e.digest);n&&(e=n)}let r=e!==void 0?p.createElement(De.Provider,{value:this.props.routeContext},p.createElement(Tn.Provider,{value:e,children:this.props.component})):this.props.children;return this.context?p.createElement(Fa,{error:e},r):r}};to.contextType=ya;var tn=new WeakMap;function Fa({children:e,error:r}){let{basename:n}=p.useContext(ye);if(typeof r=="object"&&r&&"digest"in r&&typeof r.digest=="string"){let o=wa(r.digest);if(o){let a=tn.get(r);if(a)throw a;let s=Gr(o.location,n);if(Kr&&!tn.get(r))if(s.isExternal||o.reloadDocument)window.location.href=s.absoluteURL||s.to;else{const i=Promise.resolve().then(()=>window.__reactRouterDataRouter.navigate(s.to,{replace:o.replace}));throw tn.set(r,i),i}return p.createElement("meta",{httpEquiv:"refresh",content:`0;url=${s.absoluteURL||s.to}`})}}return e}function Aa({routeContext:e,match:r,children:n}){let o=p.useContext(Qe);return o&&o.static&&o.staticContext&&(r.route.errorElement||r.route.ErrorBoundary)&&(o.staticContext._deepestRenderedBoundaryId=r.route.id),p.createElement(De.Provider,{value:e},n)}function Na(e,r=[],n){let o=n==null?void 0:n.state;if(e==null){if(!o)return null;if(o.errors)e=o.matches;else if(r.length===0&&!o.initialized&&o.matches.length>0)e=o.matches;else return null}let a=e,s=o==null?void 0:o.errors;if(s!=null){let u=a.findIndex(m=>m.route.id&&(s==null?void 0:s[m.route.id])!==void 0);se(u>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(s).join(",")}`),a=a.slice(0,Math.min(a.length,u+1))}let i=!1,l=-1;if(n&&o){i=o.renderFallback;for(let u=0;u<a.length;u++){let m=a[u];if((m.route.HydrateFallback||m.route.hydrateFallbackElement)&&(l=u),m.route.id){let{loaderData:b,errors:v}=o,w=m.route.loader&&!b.hasOwnProperty(m.route.id)&&(!v||v[m.route.id]===void 0);if(m.route.lazy||w){n.isStatic&&(i=!0),l>=0?a=a.slice(0,l+1):a=[a[0]];break}}}}let c=n==null?void 0:n.onError,d=o&&c?(u,m)=>{var b,v;c(u,{location:o.location,params:((v=(b=o.matches)==null?void 0:b[0])==null?void 0:v.params)??{},unstable_pattern:fa(o.matches),errorInfo:m})}:void 0;return a.reduceRight((u,m,b)=>{let v,w=!1,g=null,h=null;o&&(v=s&&m.route.id?s[m.route.id]:void 0,g=m.route.errorElement||Ba,i&&(l<0&&b===0?(no("route-fallback",!1,"No `HydrateFallback` element provided to render during initial hydration"),w=!0,h=null):l===b&&(w=!0,h=m.route.hydrateFallbackElement||null)));let y=r.concat(a.slice(0,b+1)),B=()=>{let N;return v?N=g:w?N=h:m.route.Component?N=p.createElement(m.route.Component,null):m.route.element?N=m.route.element:N=u,p.createElement(Aa,{match:m,routeContext:{outlet:u,matches:y,isDataRoute:o!=null},children:N})};return o&&(m.route.ErrorBoundary||m.route.errorElement||b===0)?p.createElement(to,{location:o.location,revalidation:o.revalidation,component:g,error:v,children:B(),routeContext:{outlet:null,matches:y,isDataRoute:!0},onError:d}):B()},null)}function In(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function Ta(e){let r=p.useContext(Qe);return se(r,In(e)),r}function Ra(e){let r=p.useContext(Gt);return se(r,In(e)),r}function Ia(e){let r=p.useContext(De);return se(r,In(e)),r}function Mn(e){let r=Ia(e),n=r.matches[r.matches.length-1];return se(n.route.id,`${e} can only be used on routes that contain a unique "id"`),n.route.id}function Ma(){return Mn("useRouteId")}function _a(){var o;let e=p.useContext(Tn),r=Ra("useRouteError"),n=Mn("useRouteError");return e!==void 0?e:(o=r.errors)==null?void 0:o[n]}function Pa(){let{router:e}=Ta("useNavigate"),r=Mn("useNavigate"),n=p.useRef(!1);return Zr(()=>{n.current=!0}),p.useCallback(async(a,s={})=>{Se(n.current,Qr),n.current&&(typeof a=="number"?await e.navigate(a):await e.navigate(a,{fromRouteId:r,...s}))},[e,r])}var tr={};function no(e,r,n){!r&&!tr[e]&&(tr[e]=!0,Se(!1,n))}p.memo(Oa);function Oa({routes:e,future:r,state:n,isStatic:o,onError:a}){return eo(e,void 0,{state:n,isStatic:o,onError:a})}function be(e){se(!1,"A <Route> is only ever to be used as the child of <Routes> element, never rendered directly. Please wrap your <Route> in a <Routes>.")}function ro({basename:e="/",children:r=null,location:n,navigationType:o="POP",navigator:a,static:s=!1,unstable_useTransitions:i}){se(!bt(),"You cannot render a <Router> inside another <Router>. You should never have more than one in your app.");let l=e.replace(/^\/*/,"/"),c=p.useMemo(()=>({basename:l,navigator:a,static:s,unstable_useTransitions:i,future:{}}),[l,a,s,i]);typeof n=="string"&&(n=qe(n));let{pathname:d="/",search:u="",hash:m="",state:b=null,key:v="default",unstable_mask:w}=n,g=p.useMemo(()=>{let h=Ie(d,l);return h==null?null:{location:{pathname:h,search:u,hash:m,state:b,key:v,unstable_mask:w},navigationType:o}},[l,d,u,m,b,v,o,w]);return Se(g!=null,`<Router basename="${l}"> is not able to match the URL "${d}${u}${m}" because it does not start with the basename, so the <Router> won't render anything.`),g==null?null:p.createElement(ye.Provider,{value:c},p.createElement(Ze.Provider,{children:r,value:g}))}function za({children:e,location:r}){return ja(wn(e),r)}function wn(e,r=[]){let n=[];return p.Children.forEach(e,(o,a)=>{if(!p.isValidElement(o))return;let s=[...r,a];if(o.type===p.Fragment){n.push.apply(n,wn(o.props.children,s));return}se(o.type===be,`[${typeof o.type=="string"?o.type:o.type.name}] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>`),se(!o.props.index||!o.props.children,"An index route cannot have child routes.");let i={id:o.props.id||s.join("-"),caseSensitive:o.props.caseSensitive,element:o.props.element,Component:o.props.Component,index:o.props.index,path:o.props.path,middleware:o.props.middleware,loader:o.props.loader,action:o.props.action,hydrateFallbackElement:o.props.hydrateFallbackElement,HydrateFallback:o.props.HydrateFallback,errorElement:o.props.errorElement,ErrorBoundary:o.props.ErrorBoundary,hasErrorBoundary:o.props.hasErrorBoundary===!0||o.props.ErrorBoundary!=null||o.props.errorElement!=null,shouldRevalidate:o.props.shouldRevalidate,handle:o.props.handle,lazy:o.props.lazy};o.props.children&&(i.children=wn(o.props.children,s)),n.push(i)}),n}var _t="get",Pt="application/x-www-form-urlencoded";function Yt(e){return typeof HTMLElement<"u"&&e instanceof HTMLElement}function Ua(e){return Yt(e)&&e.tagName.toLowerCase()==="button"}function La(e){return Yt(e)&&e.tagName.toLowerCase()==="form"}function qa(e){return Yt(e)&&e.tagName.toLowerCase()==="input"}function $a(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function Va(e,r){return e.button===0&&(!r||r==="_self")&&!$a(e)}var Ct=null;function Wa(){if(Ct===null)try{new FormData(document.createElement("form"),0),Ct=!1}catch{Ct=!0}return Ct}var Ha=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function nn(e){return e!=null&&!Ha.has(e)?(Se(!1,`"${e}" is not a valid \`encType\` for \`<Form>\`/\`<fetcher.Form>\` and will default to "${Pt}"`),null):e}function Ka(e,r){let n,o,a,s,i;if(La(e)){let l=e.getAttribute("action");o=l?Ie(l,r):null,n=e.getAttribute("method")||_t,a=nn(e.getAttribute("enctype"))||Pt,s=new FormData(e)}else if(Ua(e)||qa(e)&&(e.type==="submit"||e.type==="image")){let l=e.form;if(l==null)throw new Error('Cannot submit a <button> or <input type="submit"> without a <form>');let c=e.getAttribute("formaction")||l.getAttribute("action");if(o=c?Ie(c,r):null,n=e.getAttribute("formmethod")||l.getAttribute("method")||_t,a=nn(e.getAttribute("formenctype"))||nn(l.getAttribute("enctype"))||Pt,s=new FormData(l,e),!Wa()){let{name:d,type:u,value:m}=e;if(u==="image"){let b=d?`${d}.`:"";s.append(`${b}x`,"0"),s.append(`${b}y`,"0")}else d&&s.append(d,m)}}else{if(Yt(e))throw new Error('Cannot submit element that is not <form>, <button>, or <input type="submit|image">');n=_t,o=null,a=Pt,i=e}return s&&a==="text/plain"&&(i=s,s=void 0),{action:o,method:n.toLowerCase(),encType:a,formData:s,body:i}}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");function _n(e,r){if(e===!1||e===null||typeof e>"u")throw new Error(r)}function Ga(e,r,n,o){let a=typeof e=="string"?new URL(e,typeof window>"u"?"server://singlefetch/":window.location.origin):e;return n?a.pathname.endsWith("/")?a.pathname=`${a.pathname}_.${o}`:a.pathname=`${a.pathname}.${o}`:a.pathname==="/"?a.pathname=`_root.${o}`:r&&Ie(a.pathname,r)==="/"?a.pathname=`${r.replace(/\/$/,"")}/_root.${o}`:a.pathname=`${a.pathname.replace(/\/$/,"")}.${o}`,a}async function Ya(e,r){if(e.id in r)return r[e.id];try{let n=await import(e.module);return r[e.id]=n,n}catch(n){return console.error(`Error loading route module \`${e.module}\`, reloading page...`),console.error(n),window.__reactRouterContext&&window.__reactRouterContext.isSpaMode,window.location.reload(),new Promise(()=>{})}}function Ja(e){return e==null?!1:e.href==null?e.rel==="preload"&&typeof e.imageSrcSet=="string"&&typeof e.imageSizes=="string":typeof e.rel=="string"&&typeof e.href=="string"}async function Xa(e,r,n){let o=await Promise.all(e.map(async a=>{let s=r.routes[a.route.id];if(s){let i=await Ya(s,n);return i.links?i.links():[]}return[]}));return ts(o.flat(1).filter(Ja).filter(a=>a.rel==="stylesheet"||a.rel==="preload").map(a=>a.rel==="stylesheet"?{...a,rel:"prefetch",as:"style"}:{...a,rel:"prefetch"}))}function nr(e,r,n,o,a,s){let i=(c,d)=>n[d]?c.route.id!==n[d].route.id:!0,l=(c,d)=>{var u;return n[d].pathname!==c.pathname||((u=n[d].route.path)==null?void 0:u.endsWith("*"))&&n[d].params["*"]!==c.params["*"]};return s==="assets"?r.filter((c,d)=>i(c,d)||l(c,d)):s==="data"?r.filter((c,d)=>{var m;let u=o.routes[c.route.id];if(!u||!u.hasLoader)return!1;if(i(c,d)||l(c,d))return!0;if(c.route.shouldRevalidate){let b=c.route.shouldRevalidate({currentUrl:new URL(a.pathname+a.search+a.hash,window.origin),currentParams:((m=n[0])==null?void 0:m.params)||{},nextUrl:new URL(e,window.origin),nextParams:c.params,defaultShouldRevalidate:!0});if(typeof b=="boolean")return b}return!0}):[]}function Qa(e,r,{includeHydrateFallback:n}={}){return Za(e.map(o=>{let a=r.routes[o.route.id];if(!a)return[];let s=[a.module];return a.clientActionModule&&(s=s.concat(a.clientActionModule)),a.clientLoaderModule&&(s=s.concat(a.clientLoaderModule)),n&&a.hydrateFallbackModule&&(s=s.concat(a.hydrateFallbackModule)),a.imports&&(s=s.concat(a.imports)),s}).flat(1))}function Za(e){return[...new Set(e)]}function es(e){let r={},n=Object.keys(e).sort();for(let o of n)r[o]=e[o];return r}function ts(e,r){let n=new Set;return new Set(r),e.reduce((o,a)=>{let s=JSON.stringify(es(a));return n.has(s)||(n.add(s),o.push({key:s,link:a})),o},[])}function oo(){let e=p.useContext(Qe);return _n(e,"You must render this element inside a <DataRouterContext.Provider> element"),e}function ns(){let e=p.useContext(Gt);return _n(e,"You must render this element inside a <DataRouterStateContext.Provider> element"),e}var Pn=p.createContext(void 0);Pn.displayName="FrameworkContext";function ao(){let e=p.useContext(Pn);return _n(e,"You must render this element inside a <HydratedRouter> element"),e}function rs(e,r){let n=p.useContext(Pn),[o,a]=p.useState(!1),[s,i]=p.useState(!1),{onFocus:l,onBlur:c,onMouseEnter:d,onMouseLeave:u,onTouchStart:m}=r,b=p.useRef(null);p.useEffect(()=>{if(e==="render"&&i(!0),e==="viewport"){let g=y=>{y.forEach(B=>{i(B.isIntersecting)})},h=new IntersectionObserver(g,{threshold:.5});return b.current&&h.observe(b.current),()=>{h.disconnect()}}},[e]),p.useEffect(()=>{if(o){let g=setTimeout(()=>{i(!0)},100);return()=>{clearTimeout(g)}}},[o]);let v=()=>{a(!0)},w=()=>{a(!1),i(!1)};return n?e!=="intent"?[s,b,{}]:[s,b,{onFocus:tt(l,v),onBlur:tt(c,w),onMouseEnter:tt(d,v),onMouseLeave:tt(u,w),onTouchStart:tt(m,v)}]:[!1,b,{}]}function tt(e,r){return n=>{e&&e(n),n.defaultPrevented||r(n)}}function os({page:e,...r}){let{router:n}=oo(),o=p.useMemo(()=>$r(n.routes,e,n.basename),[n.routes,e,n.basename]);return o?p.createElement(ss,{page:e,matches:o,...r}):null}function as(e){let{manifest:r,routeModules:n}=ao(),[o,a]=p.useState([]);return p.useEffect(()=>{let s=!1;return Xa(e,r,n).then(i=>{s||a(i)}),()=>{s=!0}},[e,r,n]),o}function ss({page:e,matches:r,...n}){let o=Be(),{future:a,manifest:s,routeModules:i}=ao(),{basename:l}=oo(),{loaderData:c,matches:d}=ns(),u=p.useMemo(()=>nr(e,r,d,s,o,"data"),[e,r,d,s,o]),m=p.useMemo(()=>nr(e,r,d,s,o,"assets"),[e,r,d,s,o]),b=p.useMemo(()=>{if(e===o.pathname+o.search+o.hash)return[];let g=new Set,h=!1;if(r.forEach(B=>{var D;let N=s.routes[B.route.id];!N||!N.hasLoader||(!u.some(A=>A.route.id===B.route.id)&&B.route.id in c&&((D=i[B.route.id])!=null&&D.shouldRevalidate)||N.hasClientLoader?h=!0:g.add(B.route.id))}),g.size===0)return[];let y=Ga(e,l,a.unstable_trailingSlashAwareDataRequests,"data");return h&&g.size>0&&y.searchParams.set("_routes",r.filter(B=>g.has(B.route.id)).map(B=>B.route.id).join(",")),[y.pathname+y.search]},[l,a.unstable_trailingSlashAwareDataRequests,c,o,s,u,r,e,i]),v=p.useMemo(()=>Qa(m,s),[m,s]),w=as(m);return p.createElement(p.Fragment,null,b.map(g=>p.createElement("link",{key:g,rel:"prefetch",as:"fetch",href:g,...n})),v.map(g=>p.createElement("link",{key:g,rel:"modulepreload",href:g,...n})),w.map(({key:g,link:h})=>p.createElement("link",{key:g,nonce:n.nonce,...h,crossOrigin:h.crossOrigin??n.crossOrigin})))}function is(...e){return r=>{e.forEach(n=>{typeof n=="function"?n(r):n!=null&&(n.current=r)})}}var ls=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";try{ls&&(window.__reactRouterVersion="7.13.2")}catch{}function ds({basename:e,children:r,unstable_useTransitions:n,window:o}){let a=p.useRef();a.current==null&&(a.current=$o({window:o,v5Compat:!0}));let s=a.current,[i,l]=p.useState({action:s.action,location:s.location}),c=p.useCallback(d=>{n===!1?l(d):p.startTransition(()=>l(d))},[n]);return p.useLayoutEffect(()=>s.listen(c),[s,c]),p.createElement(ro,{basename:e,children:r,location:i.location,navigationType:i.action,navigator:s,unstable_useTransitions:n})}function cs({basename:e,children:r,unstable_useTransitions:n,window:o}){let a=p.useRef();a.current==null&&(a.current=Vo({window:o,v5Compat:!0}));let s=a.current,[i,l]=p.useState({action:s.action,location:s.location}),c=p.useCallback(d=>{n===!1?l(d):p.startTransition(()=>l(d))},[n]);return p.useLayoutEffect(()=>s.listen(c),[s,c]),p.createElement(ro,{basename:e,children:r,location:i.location,navigationType:i.action,navigator:s,unstable_useTransitions:n})}var so=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,io=p.forwardRef(function({onClick:r,discover:n="render",prefetch:o="none",relative:a,reloadDocument:s,replace:i,unstable_mask:l,state:c,target:d,to:u,preventScrollReset:m,viewTransition:b,unstable_defaultShouldRevalidate:v,...w},g){let{basename:h,navigator:y,unstable_useTransitions:B}=p.useContext(ye),N=typeof u=="string"&&so.test(u),D=Gr(u,h);u=D.to;let A=Sa(u,{relative:a}),F=Be(),C=null;if(l){let O=Nn(l,[],F.unstable_mask?F.unstable_mask.pathname:"/",!0);h!=="/"&&(O.pathname=O.pathname==="/"?h:je([h,O.pathname])),C=y.createHref(O)}let[k,T,z]=rs(o,w),_=fs(u,{replace:i,unstable_mask:l,state:c,target:d,preventScrollReset:m,relative:a,viewTransition:b,unstable_defaultShouldRevalidate:v,unstable_useTransitions:B});function j(O){r&&r(O),O.defaultPrevented||_(O)}let L=!(D.isExternal||s),E=p.createElement("a",{...w,...z,href:(L?C:void 0)||D.absoluteURL||A,onClick:L?j:r,ref:is(g,T),target:d,"data-discover":!N&&n==="render"?"true":void 0});return k&&!N?p.createElement(p.Fragment,null,E,p.createElement(os,{page:A})):E});io.displayName="Link";var us=p.forwardRef(function({"aria-current":r="page",caseSensitive:n=!1,className:o="",end:a=!1,style:s,to:i,viewTransition:l,children:c,...d},u){let m=vt(i,{relative:d.relative}),b=Be(),v=p.useContext(Gt),{navigator:w,basename:g}=p.useContext(ye),h=v!=null&&bs(m)&&l===!0,y=w.encodeLocation?w.encodeLocation(m).pathname:m.pathname,B=b.pathname,N=v&&v.navigation&&v.navigation.location?v.navigation.location.pathname:null;n||(B=B.toLowerCase(),N=N?N.toLowerCase():null,y=y.toLowerCase()),N&&g&&(N=Ie(N,g)||N);const D=y!=="/"&&y.endsWith("/")?y.length-1:y.length;let A=B===y||!a&&B.startsWith(y)&&B.charAt(D)==="/",F=N!=null&&(N===y||!a&&N.startsWith(y)&&N.charAt(y.length)==="/"),C={isActive:A,isPending:F,isTransitioning:h},k=A?r:void 0,T;typeof o=="function"?T=o(C):T=[o,A?"active":null,F?"pending":null,h?"transitioning":null].filter(Boolean).join(" ");let z=typeof s=="function"?s(C):s;return p.createElement(io,{...d,"aria-current":k,className:T,ref:u,style:z,to:i,viewTransition:l},typeof c=="function"?c(C):c)});us.displayName="NavLink";var ps=p.forwardRef(({discover:e="render",fetcherKey:r,navigate:n,reloadDocument:o,replace:a,state:s,method:i=_t,action:l,onSubmit:c,relative:d,preventScrollReset:u,viewTransition:m,unstable_defaultShouldRevalidate:b,...v},w)=>{let{unstable_useTransitions:g}=p.useContext(ye),h=gs(),y=xs(l,{relative:d}),B=i.toLowerCase()==="get"?"get":"post",N=typeof l=="string"&&so.test(l),D=A=>{if(c&&c(A),A.defaultPrevented)return;A.preventDefault();let F=A.nativeEvent.submitter,C=(F==null?void 0:F.getAttribute("formmethod"))||i,k=()=>h(F||A.currentTarget,{fetcherKey:r,method:C,navigate:n,replace:a,state:s,relative:d,preventScrollReset:u,viewTransition:m,unstable_defaultShouldRevalidate:b});g&&n!==!1?p.startTransition(()=>k()):k()};return p.createElement("form",{ref:w,method:B,action:y,onSubmit:o?c:D,...v,"data-discover":!N&&e==="render"?"true":void 0})});ps.displayName="Form";function ms(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function lo(e){let r=p.useContext(Qe);return se(r,ms(e)),r}function fs(e,{target:r,replace:n,unstable_mask:o,state:a,preventScrollReset:s,relative:i,viewTransition:l,unstable_defaultShouldRevalidate:c,unstable_useTransitions:d}={}){let u=Ce(),m=Be(),b=vt(e,{relative:i});return p.useCallback(v=>{if(Va(v,r)){v.preventDefault();let w=n!==void 0?n:Ge(m)===Ge(b),g=()=>u(e,{replace:w,unstable_mask:o,state:a,preventScrollReset:s,relative:i,viewTransition:l,unstable_defaultShouldRevalidate:c});d?p.startTransition(()=>g()):g()}},[m,u,b,n,o,a,r,e,s,i,l,c,d])}var hs=0,ys=()=>`__${String(++hs)}__`;function gs(){let{router:e}=lo("useSubmit"),{basename:r}=p.useContext(ye),n=Ma(),o=e.fetch,a=e.navigate;return p.useCallback(async(s,i={})=>{let{action:l,method:c,encType:d,formData:u,body:m}=Ka(s,r);if(i.navigate===!1){let b=i.fetcherKey||ys();await o(b,n,i.action||l,{unstable_defaultShouldRevalidate:i.unstable_defaultShouldRevalidate,preventScrollReset:i.preventScrollReset,formData:u,body:m,formMethod:i.method||c,formEncType:i.encType||d,flushSync:i.flushSync})}else await a(i.action||l,{unstable_defaultShouldRevalidate:i.unstable_defaultShouldRevalidate,preventScrollReset:i.preventScrollReset,formData:u,body:m,formMethod:i.method||c,formEncType:i.encType||d,replace:i.replace,state:i.state,fromRouteId:n,flushSync:i.flushSync,viewTransition:i.viewTransition})},[o,a,r,n])}function xs(e,{relative:r}={}){let{basename:n}=p.useContext(ye),o=p.useContext(De);se(o,"useFormAction must be used inside a RouteContext");let[a]=o.matches.slice(-1),s={...vt(e||".",{relative:r})},i=Be();if(e==null){s.search=i.search;let l=new URLSearchParams(s.search),c=l.getAll("index");if(c.some(u=>u==="")){l.delete("index"),c.filter(m=>m).forEach(m=>l.append("index",m));let u=l.toString();s.search=u?`?${u}`:""}}return(!e||e===".")&&a.route.index&&(s.search=s.search?s.search.replace(/^\?/,"?index&"):"?index"),n!=="/"&&(s.pathname=s.pathname==="/"?n:je([n,s.pathname])),Ge(s)}function bs(e,{relative:r}={}){let n=p.useContext(Jr);se(n!=null,"`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`. Did you accidentally import `RouterProvider` from `react-router`?");let{basename:o}=lo("useViewTransitionState"),a=vt(e,{relative:r});if(!n.isTransitioning)return!1;let s=Ie(n.currentLocation.pathname,o)||n.currentLocation.pathname,i=Ie(n.nextLocation.pathname,o)||n.nextLocation.pathname;return $t(a.pathname,i)!=null||$t(a.pathname,s)!=null}const vs="modulepreload",ws=function(e){return"/"+e},rr={},de=function(r,n,o){let a=Promise.resolve();if(n&&n.length>0){let i=function(d){return Promise.all(d.map(u=>Promise.resolve(u).then(m=>({status:"fulfilled",value:m}),m=>({status:"rejected",reason:m}))))};document.getElementsByTagName("link");const l=document.querySelector("meta[property=csp-nonce]"),c=(l==null?void 0:l.nonce)||(l==null?void 0:l.getAttribute("nonce"));a=i(n.map(d=>{if(d=ws(d),d in rr)return;rr[d]=!0;const u=d.endsWith(".css"),m=u?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${d}"]${m}`))return;const b=document.createElement("link");if(b.rel=u?"stylesheet":vs,u||(b.as="script"),b.crossOrigin="",b.href=d,c&&b.setAttribute("nonce",c),document.head.appendChild(b),u)return new Promise((v,w)=>{b.addEventListener("load",v),b.addEventListener("error",()=>w(new Error(`Unable to preload CSS for ${d}`)))})}))}function s(i){const l=new Event("vite:preloadError",{cancelable:!0});if(l.payload=i,window.dispatchEvent(l),!l.defaultPrevented)throw i}return a.then(i=>{for(const l of i||[])l.status==="rejected"&&s(l.reason);return r().catch(s)})},ks={dependsOn:{}};function Ss(e,r){return new Set([e,...(r??ks).dependsOn[e]??[]])}function Cs(e,r){const n=r instanceof Set?r:new Set(r);return n.size===0?!1:e.some(o=>n.has(o))}function or(e){return(e.sourceEnd.type?1:0)+(e.targetEnd.type?1:0)}function Es(e,r){return or(r)-or(e)||e.label.localeCompare(r.label)}function co(e){return new Map(e.map(r=>[r.name,r]))}function On(e,r){if(e)return r.relationships.find(n=>n.name===e||n.sysmlName===e)}function Et(e,r,n){var i;if(!r)return!0;if(!e)return!1;if(e===r)return!0;const o=Array.isArray(n)?co(n):n;let a=e;const s=new Set;for(;a&&!s.has(a);){if(a===r)return!0;s.add(a),a=(i=o.get(a))==null?void 0:i.superType}return!1}function Ye(e,r,n){const o=co(n.kinds),a=[];for(const s of n.relationships)s.isAbstract||(Et(e.kind,s.sourceEnd.type,o)&&Et(r.kind,s.targetEnd.type,o)&&a.push({definition:s,direction:"outgoing",sourceId:e.id,targetId:r.id}),Et(r.kind,s.sourceEnd.type,o)&&Et(e.kind,s.targetEnd.type,o)&&a.push({definition:s,direction:"incoming",sourceId:r.id,targetId:e.id}));return a.sort((s,i)=>Es(s.definition,i.definition))}const kn={AcceptActionUsage:{name:"AcceptActionUsage",abstract:!1,superTypes:["ActionUsage"],features:{payloadArgument:{name:"payloadArgument",ecoreName:"payloadArgument",kind:"reference",type:"Expression",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},payloadParameter:{name:"payloadParameter",ecoreName:"payloadParameter",kind:"reference",type:"ReferenceUsage",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Usage/nestedReference","Step/parameter"],hasDerivation:!0},receiverArgument:{name:"receiverArgument",ecoreName:"receiverArgument",kind:"reference",type:"Expression",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0}},operations:[{name:"isTriggerAction",type:"boolean",lowerBound:1,upperBound:1,parameters:[],hasBody:!0}]},ActionDefinition:{name:"ActionDefinition",abstract:!1,superTypes:["OccurrenceDefinition","Behavior"],features:{action:{name:"action",ecoreName:"action",kind:"reference",type:"ActionUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Behavior/step","Definition/usage"],hasDerivation:!0}},operations:[]},ActionUsage:{name:"ActionUsage",abstract:!1,superTypes:["OccurrenceUsage","Step"],features:{actionDefinition:{name:"actionDefinition",ecoreName:"actionDefinition",kind:"reference",type:"Behavior",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,redefines:["Step/behavior","OccurrenceUsage/occurrenceDefinition"]}},operations:[{name:"argument",type:"Expression",lowerBound:0,upperBound:1,parameters:[{name:"i",type:"number",many:!1}],hasBody:!0},{name:"inputParameter",type:"Feature",lowerBound:0,upperBound:1,parameters:[{name:"i",type:"number",many:!1}],hasBody:!0},{name:"inputParameters",type:"Feature",lowerBound:0,upperBound:-1,parameters:[],hasBody:!0},{name:"isSubactionUsage",type:"boolean",lowerBound:1,upperBound:1,parameters:[],hasBody:!0}]},ActorMembership:{name:"ActorMembership",abstract:!1,superTypes:["ParameterMembership"],features:{ownedActorParameter:{name:"ownedActorParameter",ecoreName:"ownedActorParameter",kind:"reference",type:"PartUsage",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["ParameterMembership/ownedMemberParameter"]}},operations:[]},AllocationDefinition:{name:"AllocationDefinition",abstract:!1,superTypes:["ConnectionDefinition"],features:{allocation:{name:"allocation",ecoreName:"allocation",kind:"reference",type:"AllocationUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Definition/usage"],hasDerivation:!0}},operations:[]},AllocationUsage:{name:"AllocationUsage",abstract:!1,superTypes:["ConnectionUsage"],features:{allocationDefinition:{name:"allocationDefinition",ecoreName:"allocationDefinition",kind:"reference",type:"AllocationDefinition",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,redefines:["ConnectionUsage/connectionDefinition"]}},operations:[]},AnalysisCaseDefinition:{name:"AnalysisCaseDefinition",abstract:!1,superTypes:["CaseDefinition"],features:{resultExpression:{name:"resultExpression",ecoreName:"resultExpression",kind:"reference",type:"Expression",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Function/expression","Type/ownedFeature"],hasDerivation:!0}},operations:[]},AnalysisCaseUsage:{name:"AnalysisCaseUsage",abstract:!1,superTypes:["CaseUsage"],features:{analysisCaseDefinition:{name:"analysisCaseDefinition",ecoreName:"analysisCaseDefinition",kind:"reference",type:"AnalysisCaseDefinition",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["CaseUsage/caseDefinition"]},resultExpression:{name:"resultExpression",ecoreName:"resultExpression",kind:"reference",type:"Expression",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Type/ownedFeature"],hasDerivation:!0}},operations:[]},AnnotatingElement:{name:"AnnotatingElement",abstract:!1,superTypes:["Element"],features:{annotatedElement:{name:"annotatedElement",ecoreName:"annotatedElement",kind:"reference",type:"Element",lowerBound:1,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},annotation:{name:"annotation",ecoreName:"annotation",kind:"reference",type:"Annotation",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,opposite:"Annotation/annotatingElement",hasDerivation:!0},ownedAnnotatingRelationship:{name:"ownedAnnotatingRelationship",ecoreName:"ownedAnnotatingRelationship",kind:"reference",type:"Annotation",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,opposite:"Annotation/owningAnnotatingElement",subsets:["AnnotatingElement/annotation","Element/ownedRelationship"],hasDerivation:!0},owningAnnotatingRelationship:{name:"owningAnnotatingRelationship",ecoreName:"owningAnnotatingRelationship",kind:"reference",type:"Annotation",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"Annotation/ownedAnnotatingElement",subsets:["Element/owningRelationship","AnnotatingElement/annotation"]}},operations:[]},Annotation:{name:"Annotation",abstract:!1,superTypes:["Relationship"],features:{annotatedElement:{name:"annotatedElement",ecoreName:"annotatedElement",kind:"reference",type:"Element",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1,redefines:["Relationship/target"]},annotatingElement:{name:"annotatingElement",ecoreName:"annotatingElement",kind:"reference",type:"AnnotatingElement",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"AnnotatingElement/annotation",redefines:["Relationship/source"],hasDerivation:!0},ownedAnnotatingElement:{name:"ownedAnnotatingElement",ecoreName:"ownedAnnotatingElement",kind:"reference",type:"AnnotatingElement",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"AnnotatingElement/owningAnnotatingRelationship",subsets:["Annotation/annotatingElement","Relationship/ownedRelatedElement"],hasDerivation:!0},owningAnnotatedElement:{name:"owningAnnotatedElement",ecoreName:"owningAnnotatedElement",kind:"reference",type:"Element",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"Element/ownedAnnotation",subsets:["Annotation/annotatedElement","Relationship/owningRelatedElement"]},owningAnnotatingElement:{name:"owningAnnotatingElement",ecoreName:"owningAnnotatingElement",kind:"reference",type:"AnnotatingElement",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"AnnotatingElement/ownedAnnotatingRelationship",subsets:["Annotation/annotatingElement","Relationship/owningRelatedElement"]}},operations:[]},AssertConstraintUsage:{name:"AssertConstraintUsage",abstract:!1,superTypes:["ConstraintUsage","Invariant"],features:{assertedConstraint:{name:"assertedConstraint",ecoreName:"assertedConstraint",kind:"reference",type:"ConstraintUsage",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0}},operations:[]},AssignmentActionUsage:{name:"AssignmentActionUsage",abstract:!1,superTypes:["ActionUsage"],features:{referent:{name:"referent",ecoreName:"referent",kind:"reference",type:"Feature",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Namespace/member"],hasDerivation:!0},targetArgument:{name:"targetArgument",ecoreName:"targetArgument",kind:"reference",type:"Expression",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},valueExpression:{name:"valueExpression",ecoreName:"valueExpression",kind:"reference",type:"Expression",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0}},operations:[]},Association:{name:"Association",abstract:!1,superTypes:["Classifier","Relationship"],features:{associationEnd:{name:"associationEnd",ecoreName:"associationEnd",kind:"reference",type:"Feature",lowerBound:0,upperBound:-1,many:!0,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["Type/endFeature"]},relatedType:{name:"relatedType",ecoreName:"relatedType",kind:"reference",type:"Type",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,redefines:["Relationship/relatedElement"],hasDerivation:!0},sourceType:{name:"sourceType",ecoreName:"sourceType",kind:"reference",type:"Type",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Association/relatedType"],redefines:["Relationship/source"],hasDerivation:!0},targetType:{name:"targetType",ecoreName:"targetType",kind:"reference",type:"Type",lowerBound:0,upperBound:-1,many:!0,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Association/relatedType"],redefines:["Relationship/target"],hasDerivation:!0}},operations:[]},AssociationStructure:{name:"AssociationStructure",abstract:!1,superTypes:["Association","Structure"],features:{},operations:[]},AttributeDefinition:{name:"AttributeDefinition",abstract:!1,superTypes:["Definition","DataType"],features:{},operations:[]},AttributeUsage:{name:"AttributeUsage",abstract:!1,superTypes:["Usage"],features:{attributeDefinition:{name:"attributeDefinition",ecoreName:"attributeDefinition",kind:"reference",type:"DataType",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,redefines:["Usage/definition"]}},operations:[]},Behavior:{name:"Behavior",abstract:!1,superTypes:["Class"],features:{parameter:{name:"parameter",ecoreName:"parameter",kind:"reference",type:"Feature",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,redefines:["Type/directedFeature"]},step:{name:"step",ecoreName:"step",kind:"reference",type:"Step",lowerBound:0,upperBound:-1,many:!0,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Type/feature"],hasDerivation:!0}},operations:[]},BindingConnector:{name:"BindingConnector",abstract:!1,superTypes:["Connector"],features:{},operations:[]},BindingConnectorAsUsage:{name:"BindingConnectorAsUsage",abstract:!1,superTypes:["ConnectorAsUsage","BindingConnector"],features:{},operations:[]},BooleanExpression:{name:"BooleanExpression",abstract:!1,superTypes:["Expression"],features:{predicate:{name:"predicate",ecoreName:"predicate",kind:"reference",type:"Predicate",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["Expression/function"]}},operations:[]},CalculationDefinition:{name:"CalculationDefinition",abstract:!1,superTypes:["ActionDefinition","Function"],features:{calculation:{name:"calculation",ecoreName:"calculation",kind:"reference",type:"CalculationUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["ActionDefinition/action","Function/expression"],hasDerivation:!0}},operations:[]},CalculationUsage:{name:"CalculationUsage",abstract:!1,superTypes:["ActionUsage","Expression"],features:{calculationDefinition:{name:"calculationDefinition",ecoreName:"calculationDefinition",kind:"reference",type:"Function",lowerBound:0,upperBound:1,many:!1,ordered:!0,containment:!1,derived:!0,volatile:!0,redefines:["Expression/function","ActionUsage/actionDefinition"]}},operations:[]},CaseDefinition:{name:"CaseDefinition",abstract:!1,superTypes:["CalculationDefinition"],features:{actorParameter:{name:"actorParameter",ecoreName:"actorParameter",kind:"reference",type:"PartUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Behavior/parameter","Definition/usage"],hasDerivation:!0},objectiveRequirement:{name:"objectiveRequirement",ecoreName:"objectiveRequirement",kind:"reference",type:"RequirementUsage",lowerBound:0,upperBound:1,many:!1,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Definition/usage"],hasDerivation:!0},subjectParameter:{name:"subjectParameter",ecoreName:"subjectParameter",kind:"reference",type:"Usage",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Behavior/parameter","Definition/usage"],hasDerivation:!0}},operations:[]},CaseUsage:{name:"CaseUsage",abstract:!1,superTypes:["CalculationUsage"],features:{actorParameter:{name:"actorParameter",ecoreName:"actorParameter",kind:"reference",type:"PartUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Step/parameter","Usage/usage"],hasDerivation:!0},caseDefinition:{name:"caseDefinition",ecoreName:"caseDefinition",kind:"reference",type:"CaseDefinition",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["CalculationUsage/calculationDefinition"]},objectiveRequirement:{name:"objectiveRequirement",ecoreName:"objectiveRequirement",kind:"reference",type:"RequirementUsage",lowerBound:0,upperBound:1,many:!1,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Usage/usage"],hasDerivation:!0},subjectParameter:{name:"subjectParameter",ecoreName:"subjectParameter",kind:"reference",type:"Usage",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Step/parameter","Usage/usage"],hasDerivation:!0}},operations:[]},Class:{name:"Class",abstract:!1,superTypes:["Classifier"],features:{},operations:[]},Classifier:{name:"Classifier",abstract:!1,superTypes:["Type"],features:{ownedSubclassification:{name:"ownedSubclassification",ecoreName:"ownedSubclassification",kind:"reference",type:"Subclassification",lowerBound:0,upperBound:-1,many:!0,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"Subclassification/owningClassifier",subsets:["Type/ownedSpecialization"],hasDerivation:!0}},operations:[]},CollectExpression:{name:"CollectExpression",abstract:!1,superTypes:["OperatorExpression"],features:{},operations:[]},Comment:{name:"Comment",abstract:!1,superTypes:["AnnotatingElement"],features:{body:{name:"body",ecoreName:"body",kind:"attribute",type:"EString",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1},locale:{name:"locale",ecoreName:"locale",kind:"attribute",type:"EString",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1}},operations:[]},ConcernDefinition:{name:"ConcernDefinition",abstract:!1,superTypes:["RequirementDefinition"],features:{},operations:[]},ConcernUsage:{name:"ConcernUsage",abstract:!1,superTypes:["RequirementUsage"],features:{concernDefinition:{name:"concernDefinition",ecoreName:"concernDefinition",kind:"reference",type:"ConcernDefinition",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["RequirementUsage/requirementDefinition"]}},operations:[]},ConjugatedPortDefinition:{name:"ConjugatedPortDefinition",abstract:!1,superTypes:["PortDefinition"],features:{originalPortDefinition:{name:"originalPortDefinition",ecoreName:"originalPortDefinition",kind:"reference",type:"PortDefinition",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"PortDefinition/conjugatedPortDefinition",redefines:["Element/owningNamespace"]},ownedPortConjugator:{name:"ownedPortConjugator",ecoreName:"ownedPortConjugator",kind:"reference",type:"PortConjugation",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"PortConjugation/conjugatedPortDefinition",redefines:["Type/ownedConjugator"]}},operations:[]},ConjugatedPortTyping:{name:"ConjugatedPortTyping",abstract:!1,superTypes:["FeatureTyping"],features:{conjugatedPortDefinition:{name:"conjugatedPortDefinition",ecoreName:"conjugatedPortDefinition",kind:"reference",type:"ConjugatedPortDefinition",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1,redefines:["FeatureTyping/type"]},portDefinition:{name:"portDefinition",ecoreName:"portDefinition",kind:"reference",type:"PortDefinition",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0}},operations:[]},Conjugation:{name:"Conjugation",abstract:!1,superTypes:["Relationship"],features:{conjugatedType:{name:"conjugatedType",ecoreName:"conjugatedType",kind:"reference",type:"Type",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1,redefines:["Relationship/source"]},originalType:{name:"originalType",ecoreName:"originalType",kind:"reference",type:"Type",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1,redefines:["Relationship/target"]},owningType:{name:"owningType",ecoreName:"owningType",kind:"reference",type:"Type",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"Type/ownedConjugator",subsets:["Conjugation/conjugatedType","Relationship/owningRelatedElement"]}},operations:[]},ConnectionDefinition:{name:"ConnectionDefinition",abstract:!1,superTypes:["PartDefinition","AssociationStructure"],features:{connectionEnd:{name:"connectionEnd",ecoreName:"connectionEnd",kind:"reference",type:"Usage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,redefines:["Association/associationEnd"]}},operations:[]},ConnectionUsage:{name:"ConnectionUsage",abstract:!1,superTypes:["ConnectorAsUsage","PartUsage"],features:{connectionDefinition:{name:"connectionDefinition",ecoreName:"connectionDefinition",kind:"reference",type:"AssociationStructure",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["ItemUsage/itemDefinition"],redefines:["Connector/association"]}},operations:[]},Connector:{name:"Connector",abstract:!1,superTypes:["Feature","Relationship"],features:{association:{name:"association",ecoreName:"association",kind:"reference",type:"Association",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,redefines:["Feature/type"]},connectorEnd:{name:"connectorEnd",ecoreName:"connectorEnd",kind:"reference",type:"Feature",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,redefines:["Type/endFeature"]},defaultFeaturingType:{name:"defaultFeaturingType",ecoreName:"defaultFeaturingType",kind:"reference",type:"Type",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0},relatedFeature:{name:"relatedFeature",ecoreName:"relatedFeature",kind:"reference",type:"Feature",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,redefines:["Relationship/relatedElement"],hasDerivation:!0},sourceFeature:{name:"sourceFeature",ecoreName:"sourceFeature",kind:"reference",type:"Feature",lowerBound:0,upperBound:1,many:!1,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Connector/relatedFeature"],redefines:["Relationship/source"],hasDerivation:!0},targetFeature:{name:"targetFeature",ecoreName:"targetFeature",kind:"reference",type:"Feature",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Connector/relatedFeature"],redefines:["Relationship/target"],hasDerivation:!0}},operations:[]},ConnectorAsUsage:{name:"ConnectorAsUsage",abstract:!0,superTypes:["Usage","Connector"],features:{},operations:[]},ConstraintDefinition:{name:"ConstraintDefinition",abstract:!1,superTypes:["OccurrenceDefinition","Predicate"],features:{},operations:[]},ConstraintUsage:{name:"ConstraintUsage",abstract:!1,superTypes:["OccurrenceUsage","BooleanExpression"],features:{constraintDefinition:{name:"constraintDefinition",ecoreName:"constraintDefinition",kind:"reference",type:"Predicate",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["BooleanExpression/predicate"]}},operations:[]},ConstructorExpression:{name:"ConstructorExpression",abstract:!1,superTypes:["InstantiationExpression"],features:{},operations:[]},ControlNode:{name:"ControlNode",abstract:!0,superTypes:["ActionUsage"],features:{},operations:[{name:"multiplicityHasBounds",type:"boolean",lowerBound:1,upperBound:1,parameters:[{name:"mult",type:"Multiplicity",many:!1},{name:"lower",type:"number",many:!1},{name:"upper",type:"number",many:!1}],hasBody:!0}]},CrossSubsetting:{name:"CrossSubsetting",abstract:!1,superTypes:["Subsetting"],features:{crossedFeature:{name:"crossedFeature",ecoreName:"crossedFeature",kind:"reference",type:"Feature",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1,redefines:["Subsetting/subsettedFeature"]},crossingFeature:{name:"crossingFeature",ecoreName:"crossingFeature",kind:"reference",type:"Feature",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"Feature/ownedCrossSubsetting",redefines:["Subsetting/owningFeature","Subsetting/subsettingFeature"]}},operations:[]},DataType:{name:"DataType",abstract:!1,superTypes:["Classifier"],features:{},operations:[]},DecisionNode:{name:"DecisionNode",abstract:!1,superTypes:["ControlNode"],features:{},operations:[]},Definition:{name:"Definition",abstract:!1,superTypes:["Classifier"],features:{directedUsage:{name:"directedUsage",ecoreName:"directedUsage",kind:"reference",type:"Usage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Type/directedFeature","Definition/usage"],hasDerivation:!0},isVariation:{name:"isVariation",ecoreName:"isVariation",kind:"attribute",type:"EBoolean",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1},ownedAction:{name:"ownedAction",ecoreName:"ownedAction",kind:"reference",type:"ActionUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Definition/ownedOccurrence"],hasDerivation:!0},ownedAllocation:{name:"ownedAllocation",ecoreName:"ownedAllocation",kind:"reference",type:"AllocationUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Definition/ownedConnection"],hasDerivation:!0},ownedAnalysisCase:{name:"ownedAnalysisCase",ecoreName:"ownedAnalysisCase",kind:"reference",type:"AnalysisCaseUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Definition/ownedCase"],hasDerivation:!0},ownedAttribute:{name:"ownedAttribute",ecoreName:"ownedAttribute",kind:"reference",type:"AttributeUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Definition/ownedUsage"],hasDerivation:!0},ownedCalculation:{name:"ownedCalculation",ecoreName:"ownedCalculation",kind:"reference",type:"CalculationUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Definition/ownedAction"],hasDerivation:!0},ownedCase:{name:"ownedCase",ecoreName:"ownedCase",kind:"reference",type:"CaseUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Definition/ownedCalculation"],hasDerivation:!0},ownedConcern:{name:"ownedConcern",ecoreName:"ownedConcern",kind:"reference",type:"ConcernUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Definition/ownedRequirement"],hasDerivation:!0},ownedConnection:{name:"ownedConnection",ecoreName:"ownedConnection",kind:"reference",type:"ConnectorAsUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Definition/ownedUsage"],hasDerivation:!0},ownedConstraint:{name:"ownedConstraint",ecoreName:"ownedConstraint",kind:"reference",type:"ConstraintUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Definition/ownedOccurrence"],hasDerivation:!0},ownedEnumeration:{name:"ownedEnumeration",ecoreName:"ownedEnumeration",kind:"reference",type:"EnumerationUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Definition/ownedAttribute"],hasDerivation:!0},ownedFlow:{name:"ownedFlow",ecoreName:"ownedFlow",kind:"reference",type:"FlowUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Definition/ownedConnection"],hasDerivation:!0},ownedInterface:{name:"ownedInterface",ecoreName:"ownedInterface",kind:"reference",type:"InterfaceUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Definition/ownedConnection"],hasDerivation:!0},ownedItem:{name:"ownedItem",ecoreName:"ownedItem",kind:"reference",type:"ItemUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Definition/ownedOccurrence"],hasDerivation:!0},ownedMetadata:{name:"ownedMetadata",ecoreName:"ownedMetadata",kind:"reference",type:"MetadataUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Definition/ownedItem"],hasDerivation:!0},ownedOccurrence:{name:"ownedOccurrence",ecoreName:"ownedOccurrence",kind:"reference",type:"OccurrenceUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Definition/ownedUsage"],hasDerivation:!0},ownedPart:{name:"ownedPart",ecoreName:"ownedPart",kind:"reference",type:"PartUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Definition/ownedItem"],hasDerivation:!0},ownedPort:{name:"ownedPort",ecoreName:"ownedPort",kind:"reference",type:"PortUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Definition/ownedUsage"],hasDerivation:!0},ownedReference:{name:"ownedReference",ecoreName:"ownedReference",kind:"reference",type:"ReferenceUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Definition/ownedUsage"],hasDerivation:!0},ownedRendering:{name:"ownedRendering",ecoreName:"ownedRendering",kind:"reference",type:"RenderingUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Definition/ownedPart"],hasDerivation:!0},ownedRequirement:{name:"ownedRequirement",ecoreName:"ownedRequirement",kind:"reference",type:"RequirementUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Definition/ownedConstraint"],hasDerivation:!0},ownedState:{name:"ownedState",ecoreName:"ownedState",kind:"reference",type:"StateUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Definition/ownedAction"],hasDerivation:!0},ownedTransition:{name:"ownedTransition",ecoreName:"ownedTransition",kind:"reference",type:"TransitionUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Definition/ownedUsage"],hasDerivation:!0},ownedUsage:{name:"ownedUsage",ecoreName:"ownedUsage",kind:"reference",type:"Usage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,opposite:"Usage/owningDefinition",subsets:["Type/ownedFeature","Definition/usage"],hasDerivation:!0},ownedUseCase:{name:"ownedUseCase",ecoreName:"ownedUseCase",kind:"reference",type:"UseCaseUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Definition/ownedCase"],hasDerivation:!0},ownedVerificationCase:{name:"ownedVerificationCase",ecoreName:"ownedVerificationCase",kind:"reference",type:"VerificationCaseUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Definition/ownedCase"],hasDerivation:!0},ownedView:{name:"ownedView",ecoreName:"ownedView",kind:"reference",type:"ViewUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Definition/ownedPart"],hasDerivation:!0},ownedViewpoint:{name:"ownedViewpoint",ecoreName:"ownedViewpoint",kind:"reference",type:"ViewpointUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Definition/ownedRequirement"],hasDerivation:!0},usage:{name:"usage",ecoreName:"usage",kind:"reference",type:"Usage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Type/feature"],hasDerivation:!0},variant:{name:"variant",ecoreName:"variant",kind:"reference",type:"Usage",lowerBound:0,upperBound:-1,many:!0,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Namespace/ownedMember"],hasDerivation:!0},variantMembership:{name:"variantMembership",ecoreName:"variantMembership",kind:"reference",type:"VariantMembership",lowerBound:0,upperBound:-1,many:!0,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Namespace/ownedMembership"],hasDerivation:!0}},operations:[]},Dependency:{name:"Dependency",abstract:!1,superTypes:["Relationship"],features:{client:{name:"client",ecoreName:"client",kind:"reference",type:"Element",lowerBound:1,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!1,volatile:!1,redefines:["Relationship/source"]},supplier:{name:"supplier",ecoreName:"supplier",kind:"reference",type:"Element",lowerBound:1,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!1,volatile:!1,redefines:["Relationship/target"]}},operations:[]},Differencing:{name:"Differencing",abstract:!1,superTypes:["Relationship"],features:{differencingType:{name:"differencingType",ecoreName:"differencingType",kind:"reference",type:"Type",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1,redefines:["Relationship/target"]},typeDifferenced:{name:"typeDifferenced",ecoreName:"typeDifferenced",kind:"reference",type:"Type",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"Type/ownedDifferencing",subsets:["Relationship/owningRelatedElement"],redefines:["Relationship/source"]}},operations:[]},Disjoining:{name:"Disjoining",abstract:!1,superTypes:["Relationship"],features:{disjoiningType:{name:"disjoiningType",ecoreName:"disjoiningType",kind:"reference",type:"Type",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1,redefines:["Relationship/target"]},owningType:{name:"owningType",ecoreName:"owningType",kind:"reference",type:"Type",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"Type/ownedDisjoining",subsets:["Relationship/owningRelatedElement","Disjoining/typeDisjoined"]},typeDisjoined:{name:"typeDisjoined",ecoreName:"typeDisjoined",kind:"reference",type:"Type",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1,redefines:["Relationship/source"]}},operations:[]},Documentation:{name:"Documentation",abstract:!1,superTypes:["Comment"],features:{documentedElement:{name:"documentedElement",ecoreName:"documentedElement",kind:"reference",type:"Element",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"Element/documentation",subsets:["Element/owner"],redefines:["AnnotatingElement/annotatedElement"]}},operations:[]},Element:{name:"Element",abstract:!0,superTypes:[],features:{aliasIds:{name:"aliasIds",ecoreName:"aliasIds",kind:"attribute",type:"EString",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!1,volatile:!1},declaredName:{name:"declaredName",ecoreName:"declaredName",kind:"attribute",type:"EString",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1},declaredShortName:{name:"declaredShortName",ecoreName:"declaredShortName",kind:"attribute",type:"EString",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1},documentation:{name:"documentation",ecoreName:"documentation",kind:"reference",type:"Documentation",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,opposite:"Documentation/documentedElement",subsets:["Element/ownedElement"],hasDerivation:!0},elementId:{name:"elementId",ecoreName:"elementId",kind:"attribute",type:"EString",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1},isImpliedIncluded:{name:"isImpliedIncluded",ecoreName:"isImpliedIncluded",kind:"attribute",type:"EBoolean",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1},isLibraryElement:{name:"isLibraryElement",ecoreName:"isLibraryElement",kind:"attribute",type:"EBoolean",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},name:{name:"name",ecoreName:"name",kind:"attribute",type:"EString",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},ownedAnnotation:{name:"ownedAnnotation",ecoreName:"ownedAnnotation",kind:"reference",type:"Annotation",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,opposite:"Annotation/owningAnnotatedElement",subsets:["Element/ownedRelationship"],hasDerivation:!0},ownedElement:{name:"ownedElement",ecoreName:"ownedElement",kind:"reference",type:"Element",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,opposite:"Element/owner",hasDerivation:!0},ownedRelationship:{name:"ownedRelationship",ecoreName:"ownedRelationship",kind:"reference",type:"Relationship",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!0,derived:!1,volatile:!1,opposite:"Relationship/owningRelatedElement"},owner:{name:"owner",ecoreName:"owner",kind:"reference",type:"Element",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"Element/ownedElement",hasDerivation:!0},owningMembership:{name:"owningMembership",ecoreName:"owningMembership",kind:"reference",type:"OwningMembership",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"OwningMembership/ownedMemberElement",subsets:["Element/owningRelationship"]},owningNamespace:{name:"owningNamespace",ecoreName:"owningNamespace",kind:"reference",type:"Namespace",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"Namespace/ownedMember",hasDerivation:!0},owningRelationship:{name:"owningRelationship",ecoreName:"owningRelationship",kind:"reference",type:"Relationship",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1,opposite:"Relationship/ownedRelatedElement"},qualifiedName:{name:"qualifiedName",ecoreName:"qualifiedName",kind:"attribute",type:"EString",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},shortName:{name:"shortName",ecoreName:"shortName",kind:"attribute",type:"EString",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},textualRepresentation:{name:"textualRepresentation",ecoreName:"textualRepresentation",kind:"reference",type:"TextualRepresentation",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,opposite:"TextualRepresentation/representedElement",subsets:["Element/ownedElement"],hasDerivation:!0}},operations:[{name:"effectiveName",type:"string",lowerBound:0,upperBound:1,parameters:[],hasBody:!0},{name:"effectiveShortName",type:"string",lowerBound:0,upperBound:1,parameters:[],hasBody:!0},{name:"escapedName",type:"string",lowerBound:0,upperBound:1,parameters:[]},{name:"libraryNamespace",type:"Namespace",lowerBound:0,upperBound:1,parameters:[],hasBody:!0},{name:"path",type:"string",lowerBound:1,upperBound:1,parameters:[],hasBody:!0}]},ElementFilterMembership:{name:"ElementFilterMembership",abstract:!1,superTypes:["OwningMembership"],features:{condition:{name:"condition",ecoreName:"condition",kind:"reference",type:"Expression",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["OwningMembership/ownedMemberElement"]}},operations:[]},EndFeatureMembership:{name:"EndFeatureMembership",abstract:!1,superTypes:["FeatureMembership"],features:{},operations:[]},EnumerationDefinition:{name:"EnumerationDefinition",abstract:!1,superTypes:["AttributeDefinition"],features:{enumeratedValue:{name:"enumeratedValue",ecoreName:"enumeratedValue",kind:"reference",type:"EnumerationUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,redefines:["Definition/variant"]}},operations:[]},EnumerationUsage:{name:"EnumerationUsage",abstract:!1,superTypes:["AttributeUsage"],features:{enumerationDefinition:{name:"enumerationDefinition",ecoreName:"enumerationDefinition",kind:"reference",type:"EnumerationDefinition",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["AttributeUsage/attributeDefinition"]}},operations:[]},EventOccurrenceUsage:{name:"EventOccurrenceUsage",abstract:!1,superTypes:["OccurrenceUsage"],features:{eventOccurrence:{name:"eventOccurrence",ecoreName:"eventOccurrence",kind:"reference",type:"OccurrenceUsage",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0}},operations:[]},ExhibitStateUsage:{name:"ExhibitStateUsage",abstract:!1,superTypes:["StateUsage","PerformActionUsage"],features:{exhibitedState:{name:"exhibitedState",ecoreName:"exhibitedState",kind:"reference",type:"StateUsage",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["PerformActionUsage/performedAction"]}},operations:[]},Expose:{name:"Expose",abstract:!0,superTypes:["Import"],features:{},operations:[]},Expression:{name:"Expression",abstract:!1,superTypes:["Step"],features:{function:{name:"function",ecoreName:"function",kind:"reference",type:"Function",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["Step/behavior"]},isModelLevelEvaluable:{name:"isModelLevelEvaluable",ecoreName:"isModelLevelEvaluable",kind:"attribute",type:"EBoolean",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},result:{name:"result",ecoreName:"result",kind:"reference",type:"Feature",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Type/output","Step/parameter"],hasDerivation:!0}},operations:[{name:"checkCondition",type:"boolean",lowerBound:1,upperBound:1,parameters:[{name:"target",type:"Element",many:!1}],hasBody:!0},{name:"evaluate",type:"Element",lowerBound:0,upperBound:-1,parameters:[{name:"target",type:"Element",many:!1}],hasBody:!0},{name:"modelLevelEvaluable",type:"boolean",lowerBound:1,upperBound:1,parameters:[{name:"visited",type:"Feature",many:!0}],hasBody:!0}]},Feature:{name:"Feature",abstract:!1,superTypes:["Type"],features:{chainingFeature:{name:"chainingFeature",ecoreName:"chainingFeature",kind:"reference",type:"Feature",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},crossFeature:{name:"crossFeature",ecoreName:"crossFeature",kind:"reference",type:"Feature",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},direction:{name:"direction",ecoreName:"direction",kind:"attribute",type:"FeatureDirectionKind",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1},endOwningType:{name:"endOwningType",ecoreName:"endOwningType",kind:"reference",type:"Type",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"Type/ownedEndFeature",subsets:["Feature/owningType"]},featureTarget:{name:"featureTarget",ecoreName:"featureTarget",kind:"reference",type:"Feature",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},featuringType:{name:"featuringType",ecoreName:"featuringType",kind:"reference",type:"Type",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},isComposite:{name:"isComposite",ecoreName:"isComposite",kind:"attribute",type:"EBoolean",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1},isConstant:{name:"isConstant",ecoreName:"isConstant",kind:"attribute",type:"EBoolean",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1},isDerived:{name:"isDerived",ecoreName:"isDerived",kind:"attribute",type:"EBoolean",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1},isEnd:{name:"isEnd",ecoreName:"isEnd",kind:"attribute",type:"EBoolean",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1},isOrdered:{name:"isOrdered",ecoreName:"isOrdered",kind:"attribute",type:"EBoolean",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1},isPortion:{name:"isPortion",ecoreName:"isPortion",kind:"attribute",type:"EBoolean",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1},isUnique:{name:"isUnique",ecoreName:"isUnique",kind:"attribute",type:"EBoolean",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1},isVariable:{name:"isVariable",ecoreName:"isVariable",kind:"attribute",type:"EBoolean",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1},ownedCrossSubsetting:{name:"ownedCrossSubsetting",ecoreName:"ownedCrossSubsetting",kind:"reference",type:"CrossSubsetting",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"CrossSubsetting/crossingFeature",subsets:["Feature/ownedSubsetting"],hasDerivation:!0},ownedFeatureChaining:{name:"ownedFeatureChaining",ecoreName:"ownedFeatureChaining",kind:"reference",type:"FeatureChaining",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,opposite:"FeatureChaining/featureChained",subsets:["Element/ownedRelationship"],hasDerivation:!0},ownedFeatureInverting:{name:"ownedFeatureInverting",ecoreName:"ownedFeatureInverting",kind:"reference",type:"FeatureInverting",lowerBound:0,upperBound:-1,many:!0,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"FeatureInverting/owningFeature",subsets:["Element/ownedRelationship"],hasDerivation:!0},ownedRedefinition:{name:"ownedRedefinition",ecoreName:"ownedRedefinition",kind:"reference",type:"Redefinition",lowerBound:0,upperBound:-1,many:!0,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Feature/ownedSubsetting"],hasDerivation:!0},ownedReferenceSubsetting:{name:"ownedReferenceSubsetting",ecoreName:"ownedReferenceSubsetting",kind:"reference",type:"ReferenceSubsetting",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"ReferenceSubsetting/referencingFeature",subsets:["Feature/ownedSubsetting"],hasDerivation:!0},ownedSubsetting:{name:"ownedSubsetting",ecoreName:"ownedSubsetting",kind:"reference",type:"Subsetting",lowerBound:0,upperBound:-1,many:!0,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"Subsetting/owningFeature",subsets:["Type/ownedSpecialization"],hasDerivation:!0},ownedTypeFeaturing:{name:"ownedTypeFeaturing",ecoreName:"ownedTypeFeaturing",kind:"reference",type:"TypeFeaturing",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,opposite:"TypeFeaturing/owningFeatureOfType",subsets:["Element/ownedRelationship"],hasDerivation:!0},ownedTyping:{name:"ownedTyping",ecoreName:"ownedTyping",kind:"reference",type:"FeatureTyping",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,opposite:"FeatureTyping/owningFeature",subsets:["Type/ownedSpecialization"],hasDerivation:!0},owningFeatureMembership:{name:"owningFeatureMembership",ecoreName:"owningFeatureMembership",kind:"reference",type:"FeatureMembership",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"FeatureMembership/ownedMemberFeature",subsets:["Element/owningMembership"]},owningType:{name:"owningType",ecoreName:"owningType",kind:"reference",type:"Type",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"Type/ownedFeature",subsets:["Element/owningNamespace","Feature/featuringType"]},type:{name:"type",ecoreName:"type",kind:"reference",type:"Type",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,hasDerivation:!0}},operations:[{name:"allRedefinedFeatures",type:"Feature",lowerBound:0,upperBound:-1,parameters:[],hasBody:!0},{name:"asCartesianProduct",type:"Type",lowerBound:0,upperBound:-1,parameters:[],hasBody:!0},{name:"canAccess",type:"boolean",lowerBound:1,upperBound:1,parameters:[{name:"feature",type:"Feature",many:!1}],hasBody:!0},{name:"directionFor",type:"FeatureDirectionKind",lowerBound:0,upperBound:1,parameters:[{name:"type",type:"Type",many:!1}],hasBody:!0},{name:"isCartesianProduct",type:"boolean",lowerBound:1,upperBound:1,parameters:[],hasBody:!0},{name:"isFeaturedWithin",type:"boolean",lowerBound:1,upperBound:1,parameters:[{name:"type",type:"Type",many:!1}],hasBody:!0},{name:"isFeaturingType",type:"boolean",lowerBound:1,upperBound:1,parameters:[{name:"type",type:"Type",many:!1}],hasBody:!0},{name:"isOwnedCrossFeature",type:"boolean",lowerBound:1,upperBound:1,parameters:[],hasBody:!0},{name:"namingFeature",type:"Feature",lowerBound:0,upperBound:1,parameters:[],hasBody:!0},{name:"ownedCrossFeature",type:"Feature",lowerBound:0,upperBound:1,parameters:[],hasBody:!0},{name:"redefines",type:"boolean",lowerBound:1,upperBound:1,parameters:[{name:"redefinedFeature",type:"Feature",many:!1}],hasBody:!0},{name:"redefinesFromLibrary",type:"boolean",lowerBound:1,upperBound:1,parameters:[{name:"libraryFeatureName",type:"string",many:!1}],hasBody:!0},{name:"subsetsChain",type:"boolean",lowerBound:1,upperBound:1,parameters:[{name:"first",type:"Feature",many:!1},{name:"second",type:"Feature",many:!1}],hasBody:!0},{name:"typingFeatures",type:"Feature",lowerBound:0,upperBound:-1,parameters:[],hasBody:!0}]},FeatureChainExpression:{name:"FeatureChainExpression",abstract:!1,superTypes:["OperatorExpression"],features:{targetFeature:{name:"targetFeature",ecoreName:"targetFeature",kind:"reference",type:"Feature",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Namespace/member"],hasDerivation:!0}},operations:[{name:"sourceTargetFeature",type:"Feature",lowerBound:0,upperBound:1,parameters:[],hasBody:!0}]},FeatureChaining:{name:"FeatureChaining",abstract:!1,superTypes:["Relationship"],features:{chainingFeature:{name:"chainingFeature",ecoreName:"chainingFeature",kind:"reference",type:"Feature",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1,redefines:["Relationship/target"]},featureChained:{name:"featureChained",ecoreName:"featureChained",kind:"reference",type:"Feature",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"Feature/ownedFeatureChaining",subsets:["Relationship/owningRelatedElement"],redefines:["Relationship/source"]}},operations:[]},FeatureInverting:{name:"FeatureInverting",abstract:!1,superTypes:["Relationship"],features:{featureInverted:{name:"featureInverted",ecoreName:"featureInverted",kind:"reference",type:"Feature",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1,redefines:["Relationship/source"]},invertingFeature:{name:"invertingFeature",ecoreName:"invertingFeature",kind:"reference",type:"Feature",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1,redefines:["Relationship/target"]},owningFeature:{name:"owningFeature",ecoreName:"owningFeature",kind:"reference",type:"Feature",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"Feature/ownedFeatureInverting",subsets:["FeatureInverting/featureInverted","Relationship/owningRelatedElement"]}},operations:[]},FeatureMembership:{name:"FeatureMembership",abstract:!1,superTypes:["OwningMembership"],features:{ownedMemberFeature:{name:"ownedMemberFeature",ecoreName:"ownedMemberFeature",kind:"reference",type:"Feature",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"Feature/owningFeatureMembership",redefines:["OwningMembership/ownedMemberElement"]},owningType:{name:"owningType",ecoreName:"owningType",kind:"reference",type:"Type",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"Type/ownedFeatureMembership",redefines:["Membership/membershipOwningNamespace"]}},operations:[]},FeatureReferenceExpression:{name:"FeatureReferenceExpression",abstract:!1,superTypes:["Expression"],features:{referent:{name:"referent",ecoreName:"referent",kind:"reference",type:"Feature",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Namespace/member"],hasDerivation:!0}},operations:[]},FeatureTyping:{name:"FeatureTyping",abstract:!1,superTypes:["Specialization"],features:{owningFeature:{name:"owningFeature",ecoreName:"owningFeature",kind:"reference",type:"Feature",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"Feature/ownedTyping",subsets:["FeatureTyping/typedFeature"],redefines:["Specialization/owningType"]},type:{name:"type",ecoreName:"type",kind:"reference",type:"Type",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1,redefines:["Specialization/general"]},typedFeature:{name:"typedFeature",ecoreName:"typedFeature",kind:"reference",type:"Feature",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1,redefines:["Specialization/specific"]}},operations:[]},FeatureValue:{name:"FeatureValue",abstract:!1,superTypes:["OwningMembership"],features:{featureWithValue:{name:"featureWithValue",ecoreName:"featureWithValue",kind:"reference",type:"Feature",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Membership/membershipOwningNamespace"]},isDefault:{name:"isDefault",ecoreName:"isDefault",kind:"attribute",type:"EBoolean",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1},isInitial:{name:"isInitial",ecoreName:"isInitial",kind:"attribute",type:"EBoolean",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1},value:{name:"value",ecoreName:"value",kind:"reference",type:"Expression",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["OwningMembership/ownedMemberElement"]}},operations:[]},Flow:{name:"Flow",abstract:!1,superTypes:["Connector","Step"],features:{flowEnd:{name:"flowEnd",ecoreName:"flowEnd",kind:"reference",type:"FlowEnd",lowerBound:0,upperBound:2,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Connector/connectorEnd"],hasDerivation:!0},interaction:{name:"interaction",ecoreName:"interaction",kind:"reference",type:"Interaction",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,redefines:["Connector/association","Step/behavior"]},payloadFeature:{name:"payloadFeature",ecoreName:"payloadFeature",kind:"reference",type:"PayloadFeature",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Type/ownedFeature"],hasDerivation:!0},payloadType:{name:"payloadType",ecoreName:"payloadType",kind:"reference",type:"Classifier",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},sourceOutputFeature:{name:"sourceOutputFeature",ecoreName:"sourceOutputFeature",kind:"reference",type:"Feature",lowerBound:0,upperBound:1,many:!1,ordered:!0,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},targetInputFeature:{name:"targetInputFeature",ecoreName:"targetInputFeature",kind:"reference",type:"Feature",lowerBound:0,upperBound:1,many:!1,ordered:!0,containment:!1,derived:!0,volatile:!0,hasDerivation:!0}},operations:[]},FlowDefinition:{name:"FlowDefinition",abstract:!1,superTypes:["ActionDefinition","Interaction"],features:{flowEnd:{name:"flowEnd",ecoreName:"flowEnd",kind:"reference",type:"Usage",lowerBound:0,upperBound:-1,many:!0,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["Association/associationEnd"]}},operations:[]},FlowEnd:{name:"FlowEnd",abstract:!1,superTypes:["Feature"],features:{},operations:[]},FlowUsage:{name:"FlowUsage",abstract:!1,superTypes:["ConnectorAsUsage","ActionUsage","Flow"],features:{flowDefinition:{name:"flowDefinition",ecoreName:"flowDefinition",kind:"reference",type:"Interaction",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,redefines:["ActionUsage/actionDefinition","Flow/interaction"]}},operations:[]},ForLoopActionUsage:{name:"ForLoopActionUsage",abstract:!1,superTypes:["LoopActionUsage"],features:{loopVariable:{name:"loopVariable",ecoreName:"loopVariable",kind:"reference",type:"ReferenceUsage",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},seqArgument:{name:"seqArgument",ecoreName:"seqArgument",kind:"reference",type:"Expression",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0}},operations:[]},ForkNode:{name:"ForkNode",abstract:!1,superTypes:["ControlNode"],features:{},operations:[]},FramedConcernMembership:{name:"FramedConcernMembership",abstract:!1,superTypes:["RequirementConstraintMembership"],features:{ownedConcern:{name:"ownedConcern",ecoreName:"ownedConcern",kind:"reference",type:"ConcernUsage",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["RequirementConstraintMembership/ownedConstraint"]},referencedConcern:{name:"referencedConcern",ecoreName:"referencedConcern",kind:"reference",type:"ConcernUsage",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["RequirementConstraintMembership/referencedConstraint"]}},operations:[]},Function:{name:"Function",abstract:!1,superTypes:["Behavior"],features:{expression:{name:"expression",ecoreName:"expression",kind:"reference",type:"Expression",lowerBound:0,upperBound:-1,many:!0,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Behavior/step"]},isModelLevelEvaluable:{name:"isModelLevelEvaluable",ecoreName:"isModelLevelEvaluable",kind:"attribute",type:"EBoolean",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0},result:{name:"result",ecoreName:"result",kind:"reference",type:"Feature",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Type/output","Behavior/parameter"],hasDerivation:!0}},operations:[]},IfActionUsage:{name:"IfActionUsage",abstract:!1,superTypes:["ActionUsage"],features:{elseAction:{name:"elseAction",ecoreName:"elseAction",kind:"reference",type:"ActionUsage",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},ifArgument:{name:"ifArgument",ecoreName:"ifArgument",kind:"reference",type:"Expression",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},thenAction:{name:"thenAction",ecoreName:"thenAction",kind:"reference",type:"ActionUsage",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0}},operations:[]},Import:{name:"Import",abstract:!0,superTypes:["Relationship"],features:{importOwningNamespace:{name:"importOwningNamespace",ecoreName:"importOwningNamespace",kind:"reference",type:"Namespace",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"Namespace/ownedImport",subsets:["Relationship/owningRelatedElement"],redefines:["Relationship/source"]},importedElement:{name:"importedElement",ecoreName:"importedElement",kind:"reference",type:"Element",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0},isImportAll:{name:"isImportAll",ecoreName:"isImportAll",kind:"attribute",type:"EBoolean",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1},isRecursive:{name:"isRecursive",ecoreName:"isRecursive",kind:"attribute",type:"EBoolean",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1},visibility:{name:"visibility",ecoreName:"visibility",kind:"attribute",type:"VisibilityKind",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1}},operations:[{name:"importedMemberships",type:"Membership",lowerBound:0,upperBound:-1,parameters:[{name:"excluded",type:"Namespace",many:!0}]}]},IncludeUseCaseUsage:{name:"IncludeUseCaseUsage",abstract:!1,superTypes:["UseCaseUsage","PerformActionUsage"],features:{useCaseIncluded:{name:"useCaseIncluded",ecoreName:"useCaseIncluded",kind:"reference",type:"UseCaseUsage",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["PerformActionUsage/performedAction"]}},operations:[]},IndexExpression:{name:"IndexExpression",abstract:!1,superTypes:["OperatorExpression"],features:{},operations:[]},InstantiationExpression:{name:"InstantiationExpression",abstract:!0,superTypes:["Expression"],features:{argument:{name:"argument",ecoreName:"argument",kind:"reference",type:"Expression",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0},instantiatedType:{name:"instantiatedType",ecoreName:"instantiatedType",kind:"reference",type:"Type",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Namespace/member"],hasDerivation:!0}},operations:[{name:"instantiatedType",type:"Type",lowerBound:0,upperBound:1,parameters:[],hasBody:!0}]},Interaction:{name:"Interaction",abstract:!1,superTypes:["Association","Behavior"],features:{},operations:[]},InterfaceDefinition:{name:"InterfaceDefinition",abstract:!1,superTypes:["ConnectionDefinition"],features:{interfaceEnd:{name:"interfaceEnd",ecoreName:"interfaceEnd",kind:"reference",type:"PortUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,redefines:["ConnectionDefinition/connectionEnd"]}},operations:[]},InterfaceUsage:{name:"InterfaceUsage",abstract:!1,superTypes:["ConnectionUsage"],features:{interfaceDefinition:{name:"interfaceDefinition",ecoreName:"interfaceDefinition",kind:"reference",type:"InterfaceDefinition",lowerBound:0,upperBound:-1,many:!0,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["ConnectionUsage/connectionDefinition"]}},operations:[]},Intersecting:{name:"Intersecting",abstract:!1,superTypes:["Relationship"],features:{intersectingType:{name:"intersectingType",ecoreName:"intersectingType",kind:"reference",type:"Type",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1,redefines:["Relationship/target"]},typeIntersected:{name:"typeIntersected",ecoreName:"typeIntersected",kind:"reference",type:"Type",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"Type/ownedIntersecting",subsets:["Relationship/owningRelatedElement"],redefines:["Relationship/source"]}},operations:[]},Invariant:{name:"Invariant",abstract:!1,superTypes:["BooleanExpression"],features:{isNegated:{name:"isNegated",ecoreName:"isNegated",kind:"attribute",type:"EBoolean",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1}},operations:[]},InvocationExpression:{name:"InvocationExpression",abstract:!1,superTypes:["InstantiationExpression"],features:{operand:{name:"operand",ecoreName:"operand",kind:"reference",type:"Expression",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!0,derived:!0,volatile:!0}},operations:[]},ItemDefinition:{name:"ItemDefinition",abstract:!1,superTypes:["OccurrenceDefinition","Structure"],features:{},operations:[]},ItemUsage:{name:"ItemUsage",abstract:!1,superTypes:["OccurrenceUsage"],features:{itemDefinition:{name:"itemDefinition",ecoreName:"itemDefinition",kind:"reference",type:"Structure",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["OccurrenceUsage/occurrenceDefinition"],hasDerivation:!0}},operations:[]},JoinNode:{name:"JoinNode",abstract:!1,superTypes:["ControlNode"],features:{},operations:[]},LibraryPackage:{name:"LibraryPackage",abstract:!1,superTypes:["Package"],features:{isStandard:{name:"isStandard",ecoreName:"isStandard",kind:"attribute",type:"EBoolean",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1}},operations:[]},LiteralBoolean:{name:"LiteralBoolean",abstract:!1,superTypes:["LiteralExpression"],features:{value:{name:"value",ecoreName:"value",kind:"attribute",type:"EBoolean",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1}},operations:[]},LiteralExpression:{name:"LiteralExpression",abstract:!1,superTypes:["Expression"],features:{},operations:[]},LiteralInfinity:{name:"LiteralInfinity",abstract:!1,superTypes:["LiteralExpression"],features:{},operations:[]},LiteralInteger:{name:"LiteralInteger",abstract:!1,superTypes:["LiteralExpression"],features:{value:{name:"value",ecoreName:"value",kind:"attribute",type:"EInt",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1}},operations:[]},LiteralRational:{name:"LiteralRational",abstract:!1,superTypes:["LiteralExpression"],features:{value:{name:"value",ecoreName:"value",kind:"attribute",type:"EDouble",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1}},operations:[]},LiteralString:{name:"LiteralString",abstract:!1,superTypes:["LiteralExpression"],features:{value:{name:"value",ecoreName:"value",kind:"attribute",type:"EString",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1}},operations:[]},LoopActionUsage:{name:"LoopActionUsage",abstract:!0,superTypes:["ActionUsage"],features:{bodyAction:{name:"bodyAction",ecoreName:"bodyAction",kind:"reference",type:"ActionUsage",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0}},operations:[]},Membership:{name:"Membership",abstract:!1,superTypes:["Relationship"],features:{memberElement:{name:"memberElement",ecoreName:"memberElement",kind:"reference",type:"Element",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1,redefines:["Relationship/target"]},memberElementId:{name:"memberElementId",ecoreName:"memberElementId",kind:"attribute",type:"EString",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},memberName:{name:"memberName",ecoreName:"memberName",kind:"attribute",type:"EString",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1},memberShortName:{name:"memberShortName",ecoreName:"memberShortName",kind:"attribute",type:"EString",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1},membershipOwningNamespace:{name:"membershipOwningNamespace",ecoreName:"membershipOwningNamespace",kind:"reference",type:"Namespace",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"Namespace/ownedMembership",subsets:["Relationship/owningRelatedElement"],redefines:["Relationship/source"]},visibility:{name:"visibility",ecoreName:"visibility",kind:"attribute",type:"VisibilityKind",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1}},operations:[{name:"isDistinguishableFrom",type:"boolean",lowerBound:1,upperBound:1,parameters:[{name:"other",type:"Membership",many:!1}],hasBody:!0}]},MembershipExpose:{name:"MembershipExpose",abstract:!1,superTypes:["MembershipImport","Expose"],features:{},operations:[]},MembershipImport:{name:"MembershipImport",abstract:!1,superTypes:["Import"],features:{importedMembership:{name:"importedMembership",ecoreName:"importedMembership",kind:"reference",type:"Membership",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1,redefines:["Relationship/target"]}},operations:[]},MergeNode:{name:"MergeNode",abstract:!1,superTypes:["ControlNode"],features:{},operations:[]},Metaclass:{name:"Metaclass",abstract:!1,superTypes:["Structure"],features:{},operations:[]},MetadataAccessExpression:{name:"MetadataAccessExpression",abstract:!1,superTypes:["Expression"],features:{referencedElement:{name:"referencedElement",ecoreName:"referencedElement",kind:"reference",type:"Element",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Namespace/member"],hasDerivation:!0}},operations:[{name:"metaclassFeature",type:"MetadataFeature",lowerBound:1,upperBound:1,parameters:[]}]},MetadataDefinition:{name:"MetadataDefinition",abstract:!1,superTypes:["ItemDefinition","Metaclass"],features:{},operations:[]},MetadataFeature:{name:"MetadataFeature",abstract:!1,superTypes:["Feature","AnnotatingElement"],features:{metaclass:{name:"metaclass",ecoreName:"metaclass",kind:"reference",type:"Metaclass",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Feature/type"],hasDerivation:!0}},operations:[{name:"evaluateFeature",type:"Element",lowerBound:0,upperBound:-1,parameters:[{name:"baseFeature",type:"Feature",many:!1}],hasBody:!0},{name:"isSemantic",type:"boolean",lowerBound:1,upperBound:1,parameters:[],hasBody:!0},{name:"isSyntactic",type:"boolean",lowerBound:1,upperBound:1,parameters:[],hasBody:!0},{name:"syntaxElement",type:"Element",lowerBound:0,upperBound:1,parameters:[]}]},MetadataUsage:{name:"MetadataUsage",abstract:!1,superTypes:["ItemUsage","MetadataFeature"],features:{metadataDefinition:{name:"metadataDefinition",ecoreName:"metadataDefinition",kind:"reference",type:"Metaclass",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["ItemUsage/itemDefinition","MetadataFeature/metaclass"]}},operations:[]},Multiplicity:{name:"Multiplicity",abstract:!1,superTypes:["Feature"],features:{},operations:[]},MultiplicityRange:{name:"MultiplicityRange",abstract:!1,superTypes:["Multiplicity"],features:{bound:{name:"bound",ecoreName:"bound",kind:"reference",type:"Expression",lowerBound:1,upperBound:2,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Namespace/ownedMember"],hasDerivation:!0},lowerBound:{name:"lowerBound",ecoreName:"lowerBound",kind:"reference",type:"Expression",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["MultiplicityRange/bound"],hasDerivation:!0},upperBound:{name:"upperBound",ecoreName:"upperBound",kind:"reference",type:"Expression",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["MultiplicityRange/bound"],hasDerivation:!0}},operations:[{name:"hasBounds",type:"boolean",lowerBound:1,upperBound:1,parameters:[{name:"lower",type:"number",many:!1},{name:"upper",type:"number",many:!1}],hasBody:!0},{name:"valueOf",type:"number",lowerBound:0,upperBound:1,parameters:[{name:"bound",type:"Expression",many:!1}],hasBody:!0}]},Namespace:{name:"Namespace",abstract:!1,superTypes:["Element"],features:{importedMembership:{name:"importedMembership",ecoreName:"importedMembership",kind:"reference",type:"Membership",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Namespace/membership"],hasDerivation:!0},member:{name:"member",ecoreName:"member",kind:"reference",type:"Element",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},membership:{name:"membership",ecoreName:"membership",kind:"reference",type:"Membership",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,union:!0},ownedImport:{name:"ownedImport",ecoreName:"ownedImport",kind:"reference",type:"Import",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,opposite:"Import/importOwningNamespace",subsets:["Element/ownedRelationship"],hasDerivation:!0},ownedMember:{name:"ownedMember",ecoreName:"ownedMember",kind:"reference",type:"Element",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,opposite:"Element/owningNamespace",subsets:["Namespace/member"],hasDerivation:!0},ownedMembership:{name:"ownedMembership",ecoreName:"ownedMembership",kind:"reference",type:"Membership",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,opposite:"Membership/membershipOwningNamespace",subsets:["Namespace/membership","Element/ownedRelationship"],hasDerivation:!0}},operations:[{name:"importedMemberships",type:"Membership",lowerBound:0,upperBound:-1,parameters:[{name:"excluded",type:"Namespace",many:!0}],hasBody:!0},{name:"membershipsOfVisibility",type:"Membership",lowerBound:0,upperBound:-1,parameters:[{name:"visibility",type:"VisibilityKind",many:!1},{name:"excluded",type:"Namespace",many:!0}],hasBody:!0},{name:"namesOf",type:"string",lowerBound:0,upperBound:-1,parameters:[{name:"element",type:"Element",many:!1}],hasBody:!0},{name:"qualificationOf",type:"string",lowerBound:0,upperBound:1,parameters:[{name:"qualifiedName",type:"string",many:!1}]},{name:"resolve",type:"Membership",lowerBound:0,upperBound:1,parameters:[{name:"qualifiedName",type:"string",many:!1}],hasBody:!0},{name:"resolveGlobal",type:"Membership",lowerBound:0,upperBound:1,parameters:[{name:"qualifiedName",type:"string",many:!1}]},{name:"resolveLocal",type:"Membership",lowerBound:0,upperBound:1,parameters:[{name:"name",type:"string",many:!1}],hasBody:!0},{name:"resolveVisible",type:"Membership",lowerBound:0,upperBound:1,parameters:[{name:"name",type:"string",many:!1}],hasBody:!0},{name:"unqualifiedNameOf",type:"string",lowerBound:1,upperBound:1,parameters:[{name:"qualifiedName",type:"string",many:!1}]},{name:"visibilityOf",type:"VisibilityKind",lowerBound:1,upperBound:1,parameters:[{name:"mem",type:"Membership",many:!1}],hasBody:!0},{name:"visibleMemberships",type:"Membership",lowerBound:0,upperBound:-1,parameters:[{name:"excluded",type:"Namespace",many:!0},{name:"isRecursive",type:"boolean",many:!1},{name:"includeAll",type:"boolean",many:!1}],hasBody:!0}]},NamespaceExpose:{name:"NamespaceExpose",abstract:!1,superTypes:["NamespaceImport","Expose"],features:{},operations:[]},NamespaceImport:{name:"NamespaceImport",abstract:!1,superTypes:["Import"],features:{importedNamespace:{name:"importedNamespace",ecoreName:"importedNamespace",kind:"reference",type:"Namespace",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1,redefines:["Relationship/target"]}},operations:[]},NullExpression:{name:"NullExpression",abstract:!1,superTypes:["Expression"],features:{},operations:[]},ObjectiveMembership:{name:"ObjectiveMembership",abstract:!1,superTypes:["FeatureMembership"],features:{ownedObjectiveRequirement:{name:"ownedObjectiveRequirement",ecoreName:"ownedObjectiveRequirement",kind:"reference",type:"RequirementUsage",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["FeatureMembership/ownedMemberFeature"]}},operations:[]},OccurrenceDefinition:{name:"OccurrenceDefinition",abstract:!1,superTypes:["Definition","Class"],features:{isIndividual:{name:"isIndividual",ecoreName:"isIndividual",kind:"attribute",type:"EBoolean",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1}},operations:[]},OccurrenceUsage:{name:"OccurrenceUsage",abstract:!1,superTypes:["Usage"],features:{individualDefinition:{name:"individualDefinition",ecoreName:"individualDefinition",kind:"reference",type:"OccurrenceDefinition",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["OccurrenceUsage/occurrenceDefinition"],hasDerivation:!0},isIndividual:{name:"isIndividual",ecoreName:"isIndividual",kind:"attribute",type:"EBoolean",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1},occurrenceDefinition:{name:"occurrenceDefinition",ecoreName:"occurrenceDefinition",kind:"reference",type:"Class",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,redefines:["Usage/definition"]},portionKind:{name:"portionKind",ecoreName:"portionKind",kind:"attribute",type:"PortionKind",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1}},operations:[]},OperatorExpression:{name:"OperatorExpression",abstract:!1,superTypes:["InvocationExpression"],features:{operator:{name:"operator",ecoreName:"operator",kind:"attribute",type:"EString",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1}},operations:[]},OwningMembership:{name:"OwningMembership",abstract:!1,superTypes:["Membership"],features:{ownedMemberElement:{name:"ownedMemberElement",ecoreName:"ownedMemberElement",kind:"reference",type:"Element",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"Element/owningMembership",subsets:["Relationship/ownedRelatedElement"],redefines:["Membership/memberElement"]},ownedMemberElementId:{name:"ownedMemberElementId",ecoreName:"ownedMemberElementId",kind:"attribute",type:"EString",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["Membership/memberElementId"]},ownedMemberName:{name:"ownedMemberName",ecoreName:"ownedMemberName",kind:"attribute",type:"EString",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["Membership/memberName"],hasDerivation:!0},ownedMemberShortName:{name:"ownedMemberShortName",ecoreName:"ownedMemberShortName",kind:"attribute",type:"EString",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["Membership/memberShortName"],hasDerivation:!0}},operations:[]},Package:{name:"Package",abstract:!1,superTypes:["Namespace"],features:{filterCondition:{name:"filterCondition",ecoreName:"filterCondition",kind:"reference",type:"Expression",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Namespace/ownedMember"],hasDerivation:!0}},operations:[{name:"includeAsMember",type:"boolean",lowerBound:1,upperBound:1,parameters:[{name:"element",type:"Element",many:!1}],hasBody:!0}]},ParameterMembership:{name:"ParameterMembership",abstract:!1,superTypes:["FeatureMembership"],features:{ownedMemberParameter:{name:"ownedMemberParameter",ecoreName:"ownedMemberParameter",kind:"reference",type:"Feature",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["FeatureMembership/ownedMemberFeature"]}},operations:[{name:"parameterDirection",type:"FeatureDirectionKind",lowerBound:1,upperBound:1,parameters:[],hasBody:!0}]},PartDefinition:{name:"PartDefinition",abstract:!1,superTypes:["ItemDefinition"],features:{},operations:[]},PartUsage:{name:"PartUsage",abstract:!1,superTypes:["ItemUsage"],features:{partDefinition:{name:"partDefinition",ecoreName:"partDefinition",kind:"reference",type:"PartDefinition",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["ItemUsage/itemDefinition"]}},operations:[]},PayloadFeature:{name:"PayloadFeature",abstract:!1,superTypes:["Feature"],features:{},operations:[]},PerformActionUsage:{name:"PerformActionUsage",abstract:!1,superTypes:["ActionUsage","EventOccurrenceUsage"],features:{performedAction:{name:"performedAction",ecoreName:"performedAction",kind:"reference",type:"ActionUsage",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["EventOccurrenceUsage/eventOccurrence"]}},operations:[]},PortConjugation:{name:"PortConjugation",abstract:!1,superTypes:["Conjugation"],features:{conjugatedPortDefinition:{name:"conjugatedPortDefinition",ecoreName:"conjugatedPortDefinition",kind:"reference",type:"ConjugatedPortDefinition",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"ConjugatedPortDefinition/ownedPortConjugator",redefines:["Conjugation/owningType"]},originalPortDefinition:{name:"originalPortDefinition",ecoreName:"originalPortDefinition",kind:"reference",type:"PortDefinition",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1,redefines:["Conjugation/originalType"]}},operations:[]},PortDefinition:{name:"PortDefinition",abstract:!1,superTypes:["OccurrenceDefinition","Structure"],features:{conjugatedPortDefinition:{name:"conjugatedPortDefinition",ecoreName:"conjugatedPortDefinition",kind:"reference",type:"ConjugatedPortDefinition",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"ConjugatedPortDefinition/originalPortDefinition",subsets:["Namespace/ownedMember"],hasDerivation:!0}},operations:[]},PortUsage:{name:"PortUsage",abstract:!1,superTypes:["OccurrenceUsage"],features:{portDefinition:{name:"portDefinition",ecoreName:"portDefinition",kind:"reference",type:"PortDefinition",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,redefines:["OccurrenceUsage/occurrenceDefinition"]}},operations:[]},Predicate:{name:"Predicate",abstract:!1,superTypes:["Function"],features:{},operations:[]},Redefinition:{name:"Redefinition",abstract:!1,superTypes:["Subsetting"],features:{redefinedFeature:{name:"redefinedFeature",ecoreName:"redefinedFeature",kind:"reference",type:"Feature",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1,redefines:["Subsetting/subsettedFeature"]},redefiningFeature:{name:"redefiningFeature",ecoreName:"redefiningFeature",kind:"reference",type:"Feature",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1,redefines:["Subsetting/subsettingFeature"]}},operations:[]},ReferenceSubsetting:{name:"ReferenceSubsetting",abstract:!1,superTypes:["Subsetting"],features:{referencedFeature:{name:"referencedFeature",ecoreName:"referencedFeature",kind:"reference",type:"Feature",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1,redefines:["Subsetting/subsettedFeature"]},referencingFeature:{name:"referencingFeature",ecoreName:"referencingFeature",kind:"reference",type:"Feature",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"Feature/ownedReferenceSubsetting",redefines:["Subsetting/owningFeature","Subsetting/subsettingFeature"]}},operations:[]},ReferenceUsage:{name:"ReferenceUsage",abstract:!1,superTypes:["Usage"],features:{},operations:[]},Relationship:{name:"Relationship",abstract:!0,superTypes:["Element"],features:{isImplied:{name:"isImplied",ecoreName:"isImplied",kind:"attribute",type:"EBoolean",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1},ownedRelatedElement:{name:"ownedRelatedElement",ecoreName:"ownedRelatedElement",kind:"reference",type:"Element",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!0,derived:!1,volatile:!1,opposite:"Element/owningRelationship",subsets:["Relationship/relatedElement"]},owningRelatedElement:{name:"owningRelatedElement",ecoreName:"owningRelatedElement",kind:"reference",type:"Element",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1,opposite:"Element/ownedRelationship",subsets:["Relationship/relatedElement"]},relatedElement:{name:"relatedElement",ecoreName:"relatedElement",kind:"reference",type:"Element",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},source:{name:"source",ecoreName:"source",kind:"reference",type:"Element",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!1,volatile:!1,subsets:["Relationship/relatedElement"]},target:{name:"target",ecoreName:"target",kind:"reference",type:"Element",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!1,volatile:!1,subsets:["Relationship/relatedElement"]}},operations:[]},RenderingDefinition:{name:"RenderingDefinition",abstract:!1,superTypes:["PartDefinition"],features:{rendering:{name:"rendering",ecoreName:"rendering",kind:"reference",type:"RenderingUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Definition/usage"],hasDerivation:!0}},operations:[]},RenderingUsage:{name:"RenderingUsage",abstract:!1,superTypes:["PartUsage"],features:{renderingDefinition:{name:"renderingDefinition",ecoreName:"renderingDefinition",kind:"reference",type:"RenderingDefinition",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["PartUsage/partDefinition"]}},operations:[]},RequirementConstraintMembership:{name:"RequirementConstraintMembership",abstract:!1,superTypes:["FeatureMembership"],features:{kind:{name:"kind",ecoreName:"kind",kind:"attribute",type:"RequirementConstraintKind",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1},ownedConstraint:{name:"ownedConstraint",ecoreName:"ownedConstraint",kind:"reference",type:"ConstraintUsage",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["FeatureMembership/ownedMemberFeature"]},referencedConstraint:{name:"referencedConstraint",ecoreName:"referencedConstraint",kind:"reference",type:"ConstraintUsage",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0}},operations:[]},RequirementDefinition:{name:"RequirementDefinition",abstract:!1,superTypes:["ConstraintDefinition"],features:{actorParameter:{name:"actorParameter",ecoreName:"actorParameter",kind:"reference",type:"PartUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Behavior/parameter","Definition/usage"],hasDerivation:!0},assumedConstraint:{name:"assumedConstraint",ecoreName:"assumedConstraint",kind:"reference",type:"ConstraintUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Type/ownedFeature"],hasDerivation:!0},framedConcern:{name:"framedConcern",ecoreName:"framedConcern",kind:"reference",type:"ConcernUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["RequirementDefinition/requiredConstraint"],hasDerivation:!0},reqId:{name:"reqId",ecoreName:"reqId",kind:"attribute",type:"EString",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1,redefines:["Element/declaredShortName"]},requiredConstraint:{name:"requiredConstraint",ecoreName:"requiredConstraint",kind:"reference",type:"ConstraintUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Type/ownedFeature"],hasDerivation:!0},stakeholderParameter:{name:"stakeholderParameter",ecoreName:"stakeholderParameter",kind:"reference",type:"PartUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Behavior/parameter","Definition/usage"],hasDerivation:!0},subjectParameter:{name:"subjectParameter",ecoreName:"subjectParameter",kind:"reference",type:"Usage",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Behavior/parameter","Definition/usage"],hasDerivation:!0},text:{name:"text",ecoreName:"text",kind:"attribute",type:"EString",lowerBound:0,upperBound:-1,many:!0,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0}},operations:[]},RequirementUsage:{name:"RequirementUsage",abstract:!1,superTypes:["ConstraintUsage"],features:{actorParameter:{name:"actorParameter",ecoreName:"actorParameter",kind:"reference",type:"PartUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Step/parameter","Usage/usage"],hasDerivation:!0},assumedConstraint:{name:"assumedConstraint",ecoreName:"assumedConstraint",kind:"reference",type:"ConstraintUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Type/ownedFeature"],hasDerivation:!0},framedConcern:{name:"framedConcern",ecoreName:"framedConcern",kind:"reference",type:"ConcernUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["RequirementUsage/requiredConstraint"],hasDerivation:!0},reqId:{name:"reqId",ecoreName:"reqId",kind:"attribute",type:"EString",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1,redefines:["Element/declaredShortName"]},requiredConstraint:{name:"requiredConstraint",ecoreName:"requiredConstraint",kind:"reference",type:"ConstraintUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Type/ownedFeature"],hasDerivation:!0},requirementDefinition:{name:"requirementDefinition",ecoreName:"requirementDefinition",kind:"reference",type:"RequirementDefinition",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["ConstraintUsage/constraintDefinition"]},stakeholderParameter:{name:"stakeholderParameter",ecoreName:"stakeholderParameter",kind:"reference",type:"PartUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Step/parameter","Usage/usage"],hasDerivation:!0},subjectParameter:{name:"subjectParameter",ecoreName:"subjectParameter",kind:"reference",type:"Usage",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Step/parameter","Usage/usage"],hasDerivation:!0},text:{name:"text",ecoreName:"text",kind:"attribute",type:"EString",lowerBound:0,upperBound:-1,many:!0,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0}},operations:[]},RequirementVerificationMembership:{name:"RequirementVerificationMembership",abstract:!1,superTypes:["RequirementConstraintMembership"],features:{ownedRequirement:{name:"ownedRequirement",ecoreName:"ownedRequirement",kind:"reference",type:"RequirementUsage",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["RequirementConstraintMembership/ownedConstraint"]},verifiedRequirement:{name:"verifiedRequirement",ecoreName:"verifiedRequirement",kind:"reference",type:"RequirementUsage",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["RequirementConstraintMembership/referencedConstraint"]}},operations:[]},ResultExpressionMembership:{name:"ResultExpressionMembership",abstract:!1,superTypes:["FeatureMembership"],features:{ownedResultExpression:{name:"ownedResultExpression",ecoreName:"ownedResultExpression",kind:"reference",type:"Expression",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["FeatureMembership/ownedMemberFeature"]}},operations:[]},ReturnParameterMembership:{name:"ReturnParameterMembership",abstract:!1,superTypes:["ParameterMembership"],features:{},operations:[]},SatisfyRequirementUsage:{name:"SatisfyRequirementUsage",abstract:!1,superTypes:["RequirementUsage","AssertConstraintUsage"],features:{satisfiedRequirement:{name:"satisfiedRequirement",ecoreName:"satisfiedRequirement",kind:"reference",type:"RequirementUsage",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["AssertConstraintUsage/assertedConstraint"]},satisfyingFeature:{name:"satisfyingFeature",ecoreName:"satisfyingFeature",kind:"reference",type:"Feature",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0}},operations:[]},SelectExpression:{name:"SelectExpression",abstract:!1,superTypes:["OperatorExpression"],features:{},operations:[]},SendActionUsage:{name:"SendActionUsage",abstract:!1,superTypes:["ActionUsage"],features:{payloadArgument:{name:"payloadArgument",ecoreName:"payloadArgument",kind:"reference",type:"Expression",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},receiverArgument:{name:"receiverArgument",ecoreName:"receiverArgument",kind:"reference",type:"Expression",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},senderArgument:{name:"senderArgument",ecoreName:"senderArgument",kind:"reference",type:"Expression",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0}},operations:[]},Specialization:{name:"Specialization",abstract:!1,superTypes:["Relationship"],features:{general:{name:"general",ecoreName:"general",kind:"reference",type:"Type",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1,redefines:["Relationship/target"]},owningType:{name:"owningType",ecoreName:"owningType",kind:"reference",type:"Type",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"Type/ownedSpecialization",subsets:["Relationship/owningRelatedElement","Specialization/specific"]},specific:{name:"specific",ecoreName:"specific",kind:"reference",type:"Type",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1,redefines:["Relationship/source"]}},operations:[]},StakeholderMembership:{name:"StakeholderMembership",abstract:!1,superTypes:["ParameterMembership"],features:{ownedStakeholderParameter:{name:"ownedStakeholderParameter",ecoreName:"ownedStakeholderParameter",kind:"reference",type:"PartUsage",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["ParameterMembership/ownedMemberParameter"]}},operations:[]},StateDefinition:{name:"StateDefinition",abstract:!1,superTypes:["ActionDefinition"],features:{doAction:{name:"doAction",ecoreName:"doAction",kind:"reference",type:"ActionUsage",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},entryAction:{name:"entryAction",ecoreName:"entryAction",kind:"reference",type:"ActionUsage",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},exitAction:{name:"exitAction",ecoreName:"exitAction",kind:"reference",type:"ActionUsage",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},isParallel:{name:"isParallel",ecoreName:"isParallel",kind:"attribute",type:"EBoolean",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1},state:{name:"state",ecoreName:"state",kind:"reference",type:"StateUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["ActionDefinition/action"],hasDerivation:!0}},operations:[]},StateSubactionMembership:{name:"StateSubactionMembership",abstract:!1,superTypes:["FeatureMembership"],features:{action:{name:"action",ecoreName:"action",kind:"reference",type:"ActionUsage",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["FeatureMembership/ownedMemberFeature"]},kind:{name:"kind",ecoreName:"kind",kind:"attribute",type:"StateSubactionKind",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1}},operations:[]},StateUsage:{name:"StateUsage",abstract:!1,superTypes:["ActionUsage"],features:{doAction:{name:"doAction",ecoreName:"doAction",kind:"reference",type:"ActionUsage",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},entryAction:{name:"entryAction",ecoreName:"entryAction",kind:"reference",type:"ActionUsage",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},exitAction:{name:"exitAction",ecoreName:"exitAction",kind:"reference",type:"ActionUsage",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},isParallel:{name:"isParallel",ecoreName:"isParallel",kind:"attribute",type:"EBoolean",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1},stateDefinition:{name:"stateDefinition",ecoreName:"stateDefinition",kind:"reference",type:"Behavior",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,redefines:["ActionUsage/actionDefinition"]}},operations:[{name:"isSubstateUsage",type:"boolean",lowerBound:1,upperBound:1,parameters:[{name:"isParallel",type:"boolean",many:!1}],hasBody:!0}]},Step:{name:"Step",abstract:!1,superTypes:["Feature"],features:{behavior:{name:"behavior",ecoreName:"behavior",kind:"reference",type:"Behavior",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Feature/type"],hasDerivation:!0},parameter:{name:"parameter",ecoreName:"parameter",kind:"reference",type:"Feature",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,redefines:["Type/directedFeature"]}},operations:[]},Structure:{name:"Structure",abstract:!1,superTypes:["Class"],features:{},operations:[]},Subclassification:{name:"Subclassification",abstract:!1,superTypes:["Specialization"],features:{owningClassifier:{name:"owningClassifier",ecoreName:"owningClassifier",kind:"reference",type:"Classifier",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"Classifier/ownedSubclassification",redefines:["Specialization/owningType"]},subclassifier:{name:"subclassifier",ecoreName:"subclassifier",kind:"reference",type:"Classifier",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1,redefines:["Specialization/specific"]},superclassifier:{name:"superclassifier",ecoreName:"superclassifier",kind:"reference",type:"Classifier",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1,redefines:["Specialization/general"]}},operations:[]},SubjectMembership:{name:"SubjectMembership",abstract:!1,superTypes:["ParameterMembership"],features:{ownedSubjectParameter:{name:"ownedSubjectParameter",ecoreName:"ownedSubjectParameter",kind:"reference",type:"Usage",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["ParameterMembership/ownedMemberParameter"]}},operations:[]},Subsetting:{name:"Subsetting",abstract:!1,superTypes:["Specialization"],features:{owningFeature:{name:"owningFeature",ecoreName:"owningFeature",kind:"reference",type:"Feature",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"Feature/ownedSubsetting",subsets:["Subsetting/subsettingFeature"],redefines:["Specialization/owningType"]},subsettedFeature:{name:"subsettedFeature",ecoreName:"subsettedFeature",kind:"reference",type:"Feature",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1,redefines:["Specialization/general"]},subsettingFeature:{name:"subsettingFeature",ecoreName:"subsettingFeature",kind:"reference",type:"Feature",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1,redefines:["Specialization/specific"]}},operations:[]},Succession:{name:"Succession",abstract:!1,superTypes:["Connector"],features:{},operations:[]},SuccessionAsUsage:{name:"SuccessionAsUsage",abstract:!1,superTypes:["ConnectorAsUsage","Succession"],features:{},operations:[]},SuccessionFlow:{name:"SuccessionFlow",abstract:!1,superTypes:["Flow","Succession"],features:{},operations:[]},SuccessionFlowUsage:{name:"SuccessionFlowUsage",abstract:!1,superTypes:["FlowUsage","SuccessionFlow"],features:{},operations:[]},TerminateActionUsage:{name:"TerminateActionUsage",abstract:!1,superTypes:["ActionUsage"],features:{terminatedOccurrenceArgument:{name:"terminatedOccurrenceArgument",ecoreName:"terminatedOccurrenceArgument",kind:"reference",type:"Expression",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0}},operations:[]},TextualRepresentation:{name:"TextualRepresentation",abstract:!1,superTypes:["AnnotatingElement"],features:{body:{name:"body",ecoreName:"body",kind:"attribute",type:"EString",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1},language:{name:"language",ecoreName:"language",kind:"attribute",type:"EString",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1},representedElement:{name:"representedElement",ecoreName:"representedElement",kind:"reference",type:"Element",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"Element/textualRepresentation",subsets:["Element/owner"],redefines:["AnnotatingElement/annotatedElement"]}},operations:[]},TransitionFeatureMembership:{name:"TransitionFeatureMembership",abstract:!1,superTypes:["FeatureMembership"],features:{kind:{name:"kind",ecoreName:"kind",kind:"attribute",type:"TransitionFeatureKind",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1},transitionFeature:{name:"transitionFeature",ecoreName:"transitionFeature",kind:"reference",type:"Step",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["FeatureMembership/ownedMemberFeature"]}},operations:[]},TransitionUsage:{name:"TransitionUsage",abstract:!1,superTypes:["ActionUsage"],features:{effectAction:{name:"effectAction",ecoreName:"effectAction",kind:"reference",type:"ActionUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Type/feature"]},guardExpression:{name:"guardExpression",ecoreName:"guardExpression",kind:"reference",type:"Expression",lowerBound:0,upperBound:-1,many:!0,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Type/ownedFeature"],hasDerivation:!0},source:{name:"source",ecoreName:"source",kind:"reference",type:"ActionUsage",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},succession:{name:"succession",ecoreName:"succession",kind:"reference",type:"Succession",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Namespace/ownedMember"],hasDerivation:!0},target:{name:"target",ecoreName:"target",kind:"reference",type:"ActionUsage",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},triggerAction:{name:"triggerAction",ecoreName:"triggerAction",kind:"reference",type:"AcceptActionUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Type/ownedFeature"],hasDerivation:!0}},operations:[{name:"sourceFeature",type:"Feature",lowerBound:0,upperBound:1,parameters:[],hasBody:!0},{name:"triggerPayloadParameter",type:"ReferenceUsage",lowerBound:0,upperBound:1,parameters:[],hasBody:!0}]},TriggerInvocationExpression:{name:"TriggerInvocationExpression",abstract:!1,superTypes:["InvocationExpression"],features:{kind:{name:"kind",ecoreName:"kind",kind:"attribute",type:"TriggerKind",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1}},operations:[]},Type:{name:"Type",abstract:!1,superTypes:["Namespace"],features:{differencingType:{name:"differencingType",ecoreName:"differencingType",kind:"reference",type:"Type",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},directedFeature:{name:"directedFeature",ecoreName:"directedFeature",kind:"reference",type:"Feature",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Type/feature"],hasDerivation:!0},endFeature:{name:"endFeature",ecoreName:"endFeature",kind:"reference",type:"Feature",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Type/feature"],hasDerivation:!0},feature:{name:"feature",ecoreName:"feature",kind:"reference",type:"Feature",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Namespace/member"],hasDerivation:!0},featureMembership:{name:"featureMembership",ecoreName:"featureMembership",kind:"reference",type:"FeatureMembership",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},inheritedFeature:{name:"inheritedFeature",ecoreName:"inheritedFeature",kind:"reference",type:"Feature",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Type/feature"],hasDerivation:!0},inheritedMembership:{name:"inheritedMembership",ecoreName:"inheritedMembership",kind:"reference",type:"Membership",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Namespace/membership"],hasDerivation:!0},input:{name:"input",ecoreName:"input",kind:"reference",type:"Feature",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Type/directedFeature"],hasDerivation:!0},intersectingType:{name:"intersectingType",ecoreName:"intersectingType",kind:"reference",type:"Type",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},isAbstract:{name:"isAbstract",ecoreName:"isAbstract",kind:"attribute",type:"EBoolean",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1},isConjugated:{name:"isConjugated",ecoreName:"isConjugated",kind:"attribute",type:"EBoolean",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0},isSufficient:{name:"isSufficient",ecoreName:"isSufficient",kind:"attribute",type:"EBoolean",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1},multiplicity:{name:"multiplicity",ecoreName:"multiplicity",kind:"reference",type:"Multiplicity",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Namespace/ownedMember"],hasDerivation:!0},output:{name:"output",ecoreName:"output",kind:"reference",type:"Feature",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Type/directedFeature"],hasDerivation:!0},ownedConjugator:{name:"ownedConjugator",ecoreName:"ownedConjugator",kind:"reference",type:"Conjugation",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"Conjugation/owningType",subsets:["Element/ownedRelationship"],hasDerivation:!0},ownedDifferencing:{name:"ownedDifferencing",ecoreName:"ownedDifferencing",kind:"reference",type:"Differencing",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,opposite:"Differencing/typeDifferenced",subsets:["Element/ownedRelationship"],hasDerivation:!0},ownedDisjoining:{name:"ownedDisjoining",ecoreName:"ownedDisjoining",kind:"reference",type:"Disjoining",lowerBound:0,upperBound:-1,many:!0,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"Disjoining/owningType",subsets:["Element/ownedRelationship"],hasDerivation:!0},ownedEndFeature:{name:"ownedEndFeature",ecoreName:"ownedEndFeature",kind:"reference",type:"Feature",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,opposite:"Feature/endOwningType",subsets:["Type/endFeature","Type/ownedFeature"],hasDerivation:!0},ownedFeature:{name:"ownedFeature",ecoreName:"ownedFeature",kind:"reference",type:"Feature",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,opposite:"Feature/owningType",subsets:["Namespace/ownedMember"],hasDerivation:!0},ownedFeatureMembership:{name:"ownedFeatureMembership",ecoreName:"ownedFeatureMembership",kind:"reference",type:"FeatureMembership",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,opposite:"FeatureMembership/owningType",subsets:["Namespace/ownedMembership","Type/featureMembership"],hasDerivation:!0},ownedIntersecting:{name:"ownedIntersecting",ecoreName:"ownedIntersecting",kind:"reference",type:"Intersecting",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,opposite:"Intersecting/typeIntersected",subsets:["Element/ownedRelationship"]},ownedSpecialization:{name:"ownedSpecialization",ecoreName:"ownedSpecialization",kind:"reference",type:"Specialization",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,opposite:"Specialization/owningType",subsets:["Element/ownedRelationship"],hasDerivation:!0},ownedUnioning:{name:"ownedUnioning",ecoreName:"ownedUnioning",kind:"reference",type:"Unioning",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,opposite:"Unioning/typeUnioned",subsets:["Element/ownedRelationship"],hasDerivation:!0},unioningType:{name:"unioningType",ecoreName:"unioningType",kind:"reference",type:"Type",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,hasDerivation:!0}},operations:[{name:"allRedefinedFeaturesOf",type:"Feature",lowerBound:0,upperBound:-1,parameters:[{name:"membership",type:"Membership",many:!1}],hasBody:!0},{name:"allSupertypes",type:"Type",lowerBound:0,upperBound:-1,parameters:[],hasBody:!0},{name:"directionOf",type:"FeatureDirectionKind",lowerBound:0,upperBound:1,parameters:[{name:"feature",type:"Feature",many:!1}],hasBody:!0},{name:"directionOfExcluding",type:"FeatureDirectionKind",lowerBound:0,upperBound:1,parameters:[{name:"feature",type:"Feature",many:!1},{name:"excluded",type:"Type",many:!0}],hasBody:!0},{name:"inheritableMemberships",type:"Membership",lowerBound:0,upperBound:-1,parameters:[{name:"excludedNamespaces",type:"Namespace",many:!0},{name:"excludedTypes",type:"Type",many:!0},{name:"excludeImplied",type:"boolean",many:!1}],hasBody:!0},{name:"inheritedMemberships",type:"Membership",lowerBound:0,upperBound:-1,parameters:[{name:"excludedNamespaces",type:"Namespace",many:!0},{name:"excludedTypes",type:"Type",many:!0},{name:"excludeImplied",type:"boolean",many:!1}],hasBody:!0},{name:"isCompatibleWith",type:"boolean",lowerBound:1,upperBound:1,parameters:[{name:"otherType",type:"Type",many:!1}],hasBody:!0},{name:"multiplicities",type:"Multiplicity",lowerBound:0,upperBound:-1,parameters:[],hasBody:!0},{name:"nonPrivateMemberships",type:"Membership",lowerBound:0,upperBound:-1,parameters:[{name:"excludedNamespaces",type:"Namespace",many:!0},{name:"excludedTypes",type:"Type",many:!0},{name:"excludeImplied",type:"boolean",many:!1}],hasBody:!0},{name:"removeRedefinedFeatures",type:"Membership",lowerBound:0,upperBound:-1,parameters:[{name:"memberships",type:"Membership",many:!0}],hasBody:!0},{name:"specializes",type:"boolean",lowerBound:1,upperBound:1,parameters:[{name:"supertype",type:"Type",many:!1}],hasBody:!0},{name:"specializesFromLibrary",type:"boolean",lowerBound:1,upperBound:1,parameters:[{name:"libraryTypeName",type:"string",many:!1}],hasBody:!0},{name:"supertypes",type:"Type",lowerBound:0,upperBound:-1,parameters:[{name:"excludeImplied",type:"boolean",many:!1}],hasBody:!0}]},TypeFeaturing:{name:"TypeFeaturing",abstract:!1,superTypes:["Relationship"],features:{featureOfType:{name:"featureOfType",ecoreName:"featureOfType",kind:"reference",type:"Feature",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1,redefines:["Relationship/source"]},featuringType:{name:"featuringType",ecoreName:"featuringType",kind:"reference",type:"Type",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1,redefines:["Relationship/target"]},owningFeatureOfType:{name:"owningFeatureOfType",ecoreName:"owningFeatureOfType",kind:"reference",type:"Feature",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"Feature/ownedTypeFeaturing",subsets:["Relationship/owningRelatedElement","TypeFeaturing/featureOfType"]}},operations:[]},Unioning:{name:"Unioning",abstract:!1,superTypes:["Relationship"],features:{typeUnioned:{name:"typeUnioned",ecoreName:"typeUnioned",kind:"reference",type:"Type",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"Type/ownedUnioning",subsets:["Relationship/owningRelatedElement"],redefines:["Relationship/source"]},unioningType:{name:"unioningType",ecoreName:"unioningType",kind:"reference",type:"Type",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1,redefines:["Relationship/target"]}},operations:[]},Usage:{name:"Usage",abstract:!1,superTypes:["Feature"],features:{definition:{name:"definition",ecoreName:"definition",kind:"reference",type:"Classifier",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,redefines:["Feature/type"]},directedUsage:{name:"directedUsage",ecoreName:"directedUsage",kind:"reference",type:"Usage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Type/directedFeature","Usage/usage"],hasDerivation:!0},isReference:{name:"isReference",ecoreName:"isReference",kind:"attribute",type:"EBoolean",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},isVariation:{name:"isVariation",ecoreName:"isVariation",kind:"attribute",type:"EBoolean",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1},mayTimeVary:{name:"mayTimeVary",ecoreName:"mayTimeVary",kind:"attribute",type:"EBoolean",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["Feature/isVariable"],hasDerivation:!0},nestedAction:{name:"nestedAction",ecoreName:"nestedAction",kind:"reference",type:"ActionUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Usage/nestedOccurrence"],hasDerivation:!0},nestedAllocation:{name:"nestedAllocation",ecoreName:"nestedAllocation",kind:"reference",type:"AllocationUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Usage/nestedConnection"],hasDerivation:!0},nestedAnalysisCase:{name:"nestedAnalysisCase",ecoreName:"nestedAnalysisCase",kind:"reference",type:"AnalysisCaseUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Usage/nestedCase"],hasDerivation:!0},nestedAttribute:{name:"nestedAttribute",ecoreName:"nestedAttribute",kind:"reference",type:"AttributeUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Usage/nestedUsage"],hasDerivation:!0},nestedCalculation:{name:"nestedCalculation",ecoreName:"nestedCalculation",kind:"reference",type:"CalculationUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Usage/nestedAction"],hasDerivation:!0},nestedCase:{name:"nestedCase",ecoreName:"nestedCase",kind:"reference",type:"CaseUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Usage/nestedCalculation"],hasDerivation:!0},nestedConcern:{name:"nestedConcern",ecoreName:"nestedConcern",kind:"reference",type:"ConcernUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Usage/nestedRequirement"],hasDerivation:!0},nestedConnection:{name:"nestedConnection",ecoreName:"nestedConnection",kind:"reference",type:"ConnectorAsUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Usage/nestedUsage"],hasDerivation:!0},nestedConstraint:{name:"nestedConstraint",ecoreName:"nestedConstraint",kind:"reference",type:"ConstraintUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Usage/nestedOccurrence"],hasDerivation:!0},nestedEnumeration:{name:"nestedEnumeration",ecoreName:"nestedEnumeration",kind:"reference",type:"EnumerationUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Usage/nestedAttribute"]},nestedFlow:{name:"nestedFlow",ecoreName:"nestedFlow",kind:"reference",type:"FlowUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Usage/nestedConnection"],hasDerivation:!0},nestedInterface:{name:"nestedInterface",ecoreName:"nestedInterface",kind:"reference",type:"InterfaceUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Usage/nestedConnection"],hasDerivation:!0},nestedItem:{name:"nestedItem",ecoreName:"nestedItem",kind:"reference",type:"ItemUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Usage/nestedOccurrence"],hasDerivation:!0},nestedMetadata:{name:"nestedMetadata",ecoreName:"nestedMetadata",kind:"reference",type:"MetadataUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Usage/nestedItem"],hasDerivation:!0},nestedOccurrence:{name:"nestedOccurrence",ecoreName:"nestedOccurrence",kind:"reference",type:"OccurrenceUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Usage/nestedUsage"],hasDerivation:!0},nestedPart:{name:"nestedPart",ecoreName:"nestedPart",kind:"reference",type:"PartUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Usage/nestedItem"],hasDerivation:!0},nestedPort:{name:"nestedPort",ecoreName:"nestedPort",kind:"reference",type:"PortUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Usage/nestedUsage"],hasDerivation:!0},nestedReference:{name:"nestedReference",ecoreName:"nestedReference",kind:"reference",type:"ReferenceUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Usage/nestedUsage"],hasDerivation:!0},nestedRendering:{name:"nestedRendering",ecoreName:"nestedRendering",kind:"reference",type:"RenderingUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Usage/nestedPart"],hasDerivation:!0},nestedRequirement:{name:"nestedRequirement",ecoreName:"nestedRequirement",kind:"reference",type:"RequirementUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Usage/nestedConstraint"],hasDerivation:!0},nestedState:{name:"nestedState",ecoreName:"nestedState",kind:"reference",type:"StateUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Usage/nestedAction"],hasDerivation:!0},nestedTransition:{name:"nestedTransition",ecoreName:"nestedTransition",kind:"reference",type:"TransitionUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Usage/nestedUsage"],hasDerivation:!0},nestedUsage:{name:"nestedUsage",ecoreName:"nestedUsage",kind:"reference",type:"Usage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,opposite:"Usage/owningUsage",subsets:["Type/ownedFeature","Usage/usage"],hasDerivation:!0},nestedUseCase:{name:"nestedUseCase",ecoreName:"nestedUseCase",kind:"reference",type:"UseCaseUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Usage/nestedCase"],hasDerivation:!0},nestedVerificationCase:{name:"nestedVerificationCase",ecoreName:"nestedVerificationCase",kind:"reference",type:"VerificationCaseUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Usage/nestedCase"],hasDerivation:!0},nestedView:{name:"nestedView",ecoreName:"nestedView",kind:"reference",type:"ViewUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Usage/nestedPart"],hasDerivation:!0},nestedViewpoint:{name:"nestedViewpoint",ecoreName:"nestedViewpoint",kind:"reference",type:"ViewpointUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Usage/nestedRequirement"],hasDerivation:!0},owningDefinition:{name:"owningDefinition",ecoreName:"owningDefinition",kind:"reference",type:"Definition",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"Definition/ownedUsage",subsets:["Feature/owningType"]},owningUsage:{name:"owningUsage",ecoreName:"owningUsage",kind:"reference",type:"Usage",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"Usage/nestedUsage",subsets:["Feature/owningType"]},usage:{name:"usage",ecoreName:"usage",kind:"reference",type:"Usage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Type/feature"],hasDerivation:!0},variant:{name:"variant",ecoreName:"variant",kind:"reference",type:"Usage",lowerBound:0,upperBound:-1,many:!0,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Namespace/ownedMember"],hasDerivation:!0},variantMembership:{name:"variantMembership",ecoreName:"variantMembership",kind:"reference",type:"VariantMembership",lowerBound:0,upperBound:-1,many:!0,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Namespace/ownedMembership"],hasDerivation:!0}},operations:[{name:"referencedFeatureTarget",type:"Feature",lowerBound:1,upperBound:1,parameters:[],hasBody:!0}]},UseCaseDefinition:{name:"UseCaseDefinition",abstract:!1,superTypes:["CaseDefinition"],features:{includedUseCase:{name:"includedUseCase",ecoreName:"includedUseCase",kind:"reference",type:"UseCaseUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,hasDerivation:!0}},operations:[]},UseCaseUsage:{name:"UseCaseUsage",abstract:!1,superTypes:["CaseUsage"],features:{includedUseCase:{name:"includedUseCase",ecoreName:"includedUseCase",kind:"reference",type:"UseCaseUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},useCaseDefinition:{name:"useCaseDefinition",ecoreName:"useCaseDefinition",kind:"reference",type:"UseCaseDefinition",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["CaseUsage/caseDefinition"]}},operations:[]},VariantMembership:{name:"VariantMembership",abstract:!1,superTypes:["OwningMembership"],features:{ownedVariantUsage:{name:"ownedVariantUsage",ecoreName:"ownedVariantUsage",kind:"reference",type:"Usage",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["OwningMembership/ownedMemberElement"]}},operations:[]},VerificationCaseDefinition:{name:"VerificationCaseDefinition",abstract:!1,superTypes:["CaseDefinition"],features:{verifiedRequirement:{name:"verifiedRequirement",ecoreName:"verifiedRequirement",kind:"reference",type:"RequirementUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,hasDerivation:!0}},operations:[]},VerificationCaseUsage:{name:"VerificationCaseUsage",abstract:!1,superTypes:["CaseUsage"],features:{verificationCaseDefinition:{name:"verificationCaseDefinition",ecoreName:"verificationCaseDefinition",kind:"reference",type:"VerificationCaseDefinition",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["CaseUsage/caseDefinition"]},verifiedRequirement:{name:"verifiedRequirement",ecoreName:"verifiedRequirement",kind:"reference",type:"RequirementUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,hasDerivation:!0}},operations:[]},ViewDefinition:{name:"ViewDefinition",abstract:!1,superTypes:["PartDefinition"],features:{satisfiedViewpoint:{name:"satisfiedViewpoint",ecoreName:"satisfiedViewpoint",kind:"reference",type:"ViewpointUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Definition/ownedRequirement"],hasDerivation:!0},view:{name:"view",ecoreName:"view",kind:"reference",type:"ViewUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Definition/usage"],hasDerivation:!0},viewCondition:{name:"viewCondition",ecoreName:"viewCondition",kind:"reference",type:"Expression",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Namespace/ownedMember"],hasDerivation:!0},viewRendering:{name:"viewRendering",ecoreName:"viewRendering",kind:"reference",type:"RenderingUsage",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0}},operations:[]},ViewRenderingMembership:{name:"ViewRenderingMembership",abstract:!1,superTypes:["FeatureMembership"],features:{ownedRendering:{name:"ownedRendering",ecoreName:"ownedRendering",kind:"reference",type:"RenderingUsage",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["FeatureMembership/ownedMemberFeature"]},referencedRendering:{name:"referencedRendering",ecoreName:"referencedRendering",kind:"reference",type:"RenderingUsage",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0}},operations:[]},ViewUsage:{name:"ViewUsage",abstract:!1,superTypes:["PartUsage"],features:{exposedElement:{name:"exposedElement",ecoreName:"exposedElement",kind:"reference",type:"Element",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Namespace/member"],hasDerivation:!0},satisfiedViewpoint:{name:"satisfiedViewpoint",ecoreName:"satisfiedViewpoint",kind:"reference",type:"ViewpointUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Usage/nestedRequirement"],hasDerivation:!0},viewCondition:{name:"viewCondition",ecoreName:"viewCondition",kind:"reference",type:"Expression",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Namespace/ownedMember"],hasDerivation:!0},viewDefinition:{name:"viewDefinition",ecoreName:"viewDefinition",kind:"reference",type:"ViewDefinition",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["PartUsage/partDefinition"]},viewRendering:{name:"viewRendering",ecoreName:"viewRendering",kind:"reference",type:"RenderingUsage",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0}},operations:[{name:"includeAsExposed",type:"boolean",lowerBound:1,upperBound:1,parameters:[{name:"element",type:"Element",many:!1}],hasBody:!0}]},ViewpointDefinition:{name:"ViewpointDefinition",abstract:!1,superTypes:["RequirementDefinition"],features:{viewpointStakeholder:{name:"viewpointStakeholder",ecoreName:"viewpointStakeholder",kind:"reference",type:"PartUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,hasDerivation:!0}},operations:[]},ViewpointUsage:{name:"ViewpointUsage",abstract:!1,superTypes:["RequirementUsage"],features:{viewpointDefinition:{name:"viewpointDefinition",ecoreName:"viewpointDefinition",kind:"reference",type:"ViewpointDefinition",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["RequirementUsage/requirementDefinition"]},viewpointStakeholder:{name:"viewpointStakeholder",ecoreName:"viewpointStakeholder",kind:"reference",type:"PartUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,hasDerivation:!0}},operations:[]},WhileLoopActionUsage:{name:"WhileLoopActionUsage",abstract:!1,superTypes:["LoopActionUsage"],features:{untilArgument:{name:"untilArgument",ecoreName:"untilArgument",kind:"reference",type:"Expression",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},whileArgument:{name:"whileArgument",ecoreName:"whileArgument",kind:"reference",type:"Expression",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0}},operations:[]}};function Sn(e){var o,a;const r=[],n=[...((o=kn[e])==null?void 0:o.superTypes)??[]];for(;n.length>0;){const s=n.shift();r.includes(s)||(r.push(s),n.push(...((a=kn[s])==null?void 0:a.superTypes)??[]))}return r}function uo(e,r){return e===r||Sn(e).includes(r)}const po=[{role:"fork",metaclass:"ForkNode",bnfProduction:"fork-node"},{role:"join",metaclass:"JoinNode",bnfProduction:"join-node"},{role:"decision",metaclass:"DecisionNode",bnfProduction:"decision-node"},{role:"merge",metaclass:"MergeNode",bnfProduction:"merge-node"},{role:"send",metaclass:"SendActionUsage",bnfProduction:"send-action-node"},{role:"accept",metaclass:"AcceptActionUsage",bnfProduction:"accept-action-node"},{role:"activityFinal",metaclass:"TerminateActionUsage"},{role:"action",metaclass:"ActionUsage",bnfProduction:"action-node"},{role:"action",metaclass:"ActionDefinition",bnfProduction:"action-node"}],js={activityfinalnode:"activityFinal",activityfinalnodeusage:"activityFinal",flowfinalnode:"flowFinal",flowfinalnodeusage:"flowFinal"},Ds={fork:"ForkNode",join:"JoinNode",decide:"DecisionNode",merge:"MergeNode"};function Bs(){return[...po].sort((e,r)=>Sn(r.metaclass).length-Sn(e.metaclass).length)}function Fs(e){if(!e)return[];const r=e.replace(/[ _-]/g,""),n=r.charAt(0).toUpperCase()+r.slice(1);return[n,`${n}Usage`,`${n}Node`,`${n}ActionUsage`,n.replace(/Usage$/,""),n.replace(/Definition$/,"")]}function As(e){for(const r of Fs(e??""))if(r in kn)return r}function Ns(e,r){var s;const n=new Map((r??[]).map(i=>[i.name,i])),o=[];let a=e;for(;a&&!o.includes(a);)o.push(a),a=(s=n.get(a))==null?void 0:s.superType;return o}function mo(e,r){var i,l;const n=(l=(i=e.attributes)==null?void 0:i.controlKind)==null?void 0:l.toLowerCase(),o=n?Ds[n]:void 0,a=[...o?[o]:[],...Ns(e.kind,r==null?void 0:r.kinds),e.kind,e.construct],s=Bs();for(const c of a){const d=js[(c??"").replace(/[ _-]/g,"").toLowerCase()];if(d)return d;const u=As(c);if(!u)continue;const m=s.find(b=>uo(u,b.metaclass));if(m)return m.role}}function cu(e,r){const n=mo(e,r);if(n==="activityFinal"||n==="flowFinal")return!0;const o=po.find(a=>a.role===n);return o!==void 0&&uo(o.metaclass,"ControlNode")}const Ts=["general","interconnection","actionflow","statetransition","sequence","grid","browser","geometry"];new Set(Ts);const Rs={id:"requirements-matrix",name:"Requirements Matrix",description:"Standard requirements spreadsheet with ID, title, description, priority columns. Typical export from DOORS, Jama, or a simple Excel requirements log.",defaultKind:"Requirement",columnMappings:[{sourceColumn:"req id",targetAttribute:"id",transform:"sanitize-id",required:!0},{sourceColumn:"requirement id",targetAttribute:"id",transform:"sanitize-id",required:!0},{sourceColumn:"id",targetAttribute:"id",transform:"sanitize-id",required:!0},{sourceColumn:"req #",targetAttribute:"id",transform:"sanitize-id"},{sourceColumn:"number",targetAttribute:"id",transform:"sanitize-id"},{sourceColumn:"title",targetAttribute:"name",required:!0},{sourceColumn:"requirement title",targetAttribute:"name",required:!0},{sourceColumn:"name",targetAttribute:"name",required:!0},{sourceColumn:"summary",targetAttribute:"name"},{sourceColumn:"description",targetAttribute:"doc"},{sourceColumn:"text",targetAttribute:"doc"},{sourceColumn:"statement",targetAttribute:"doc"},{sourceColumn:"requirement text",targetAttribute:"doc"},{sourceColumn:"kind",targetAttribute:"kind"},{sourceColumn:"type",targetAttribute:"kind"},{sourceColumn:"category",targetAttribute:"category"},{sourceColumn:"priority",targetAttribute:"priority"},{sourceColumn:"rationale",targetAttribute:"rationale"},{sourceColumn:"verification method",targetAttribute:"verificationMethod"},{sourceColumn:"status",targetAttribute:"status"}]},Is={id:"hazard-log",name:"Hazard Log",description:"ISO 14971 hazard analysis spreadsheet with hazard ID, description, severity, probability and risk level columns.",defaultKind:"Hazard",columnMappings:[{sourceColumn:"hazard id",targetAttribute:"id",transform:"sanitize-id",required:!0},{sourceColumn:"haz id",targetAttribute:"id",transform:"sanitize-id"},{sourceColumn:"id",targetAttribute:"id",transform:"sanitize-id",required:!0},{sourceColumn:"hazard",targetAttribute:"name",required:!0},{sourceColumn:"hazard description",targetAttribute:"name",required:!0},{sourceColumn:"name",targetAttribute:"name",required:!0},{sourceColumn:"description",targetAttribute:"doc"},{sourceColumn:"hazardous situation",targetAttribute:"doc"},{sourceColumn:"kind",targetAttribute:"kind"},{sourceColumn:"severity",targetAttribute:"severity"},{sourceColumn:"probability",targetAttribute:"probability"},{sourceColumn:"risk level",targetAttribute:"riskLevel"},{sourceColumn:"risk",targetAttribute:"riskLevel"},{sourceColumn:"harm",targetAttribute:"harm"},{sourceColumn:"foreseeable misuse",targetAttribute:"foreseeableMisuse"},{sourceColumn:"mitigation",targetAttribute:"mitigation"},{sourceColumn:"residual risk",targetAttribute:"residualRisk"},{sourceColumn:"status",targetAttribute:"status"}]},Ms={id:"fmea-worksheet",name:"FMEA Worksheet",description:"Failure Mode and Effects Analysis spreadsheet. Maps component failure modes to MEMO Failure kind with FMEA attributes (severity, occurrence, detection, RPN).",defaultKind:"Failure",columnMappings:[{sourceColumn:"id",targetAttribute:"id",transform:"sanitize-id",required:!0},{sourceColumn:"fmea id",targetAttribute:"id",transform:"sanitize-id"},{sourceColumn:"failure mode",targetAttribute:"name",required:!0},{sourceColumn:"failure mode description",targetAttribute:"name"},{sourceColumn:"name",targetAttribute:"name",required:!0},{sourceColumn:"description",targetAttribute:"doc"},{sourceColumn:"effect",targetAttribute:"doc"},{sourceColumn:"effect of failure",targetAttribute:"effect"},{sourceColumn:"kind",targetAttribute:"kind"},{sourceColumn:"component",targetAttribute:"component"},{sourceColumn:"function",targetAttribute:"function"},{sourceColumn:"severity",targetAttribute:"severity"},{sourceColumn:"s",targetAttribute:"severity"},{sourceColumn:"occurrence",targetAttribute:"occurrence"},{sourceColumn:"o",targetAttribute:"occurrence"},{sourceColumn:"detection",targetAttribute:"detection"},{sourceColumn:"d",targetAttribute:"detection"},{sourceColumn:"rpn",targetAttribute:"rpn"},{sourceColumn:"risk priority number",targetAttribute:"rpn"},{sourceColumn:"cause",targetAttribute:"cause"},{sourceColumn:"controls",targetAttribute:"controls"},{sourceColumn:"action",targetAttribute:"action"}]},_s={id:"verification-table",name:"Verification Table",description:"Verification and validation traceability matrix mapping requirements to test methods and results.",defaultKind:"VerificationTest",columnMappings:[{sourceColumn:"test id",targetAttribute:"id",transform:"sanitize-id",required:!0},{sourceColumn:"verification id",targetAttribute:"id",transform:"sanitize-id"},{sourceColumn:"id",targetAttribute:"id",transform:"sanitize-id",required:!0},{sourceColumn:"test name",targetAttribute:"name",required:!0},{sourceColumn:"name",targetAttribute:"name",required:!0},{sourceColumn:"title",targetAttribute:"name"},{sourceColumn:"description",targetAttribute:"doc"},{sourceColumn:"objective",targetAttribute:"doc"},{sourceColumn:"kind",targetAttribute:"kind"},{sourceColumn:"requirement id",targetAttribute:"requirementId"},{sourceColumn:"req id",targetAttribute:"requirementId"},{sourceColumn:"method",targetAttribute:"method"},{sourceColumn:"test method",targetAttribute:"method"},{sourceColumn:"verification method",targetAttribute:"method"},{sourceColumn:"result",targetAttribute:"result"},{sourceColumn:"pass/fail",targetAttribute:"result"},{sourceColumn:"status",targetAttribute:"status"},{sourceColumn:"evidence",targetAttribute:"evidence"},{sourceColumn:"notes",targetAttribute:"notes"}]},ar=[Rs,Is,Ms,_s];function Ps(e,r){return e.map(n=>{const o=n.trim().toLowerCase();if(r){const i=r.columnMappings.find(l=>l.sourceColumn.toLowerCase()===o);if(i)return{...i,sourceColumn:n}}const a=Os.find(i=>i.sourceColumn.toLowerCase()===o);if(a)return{...a,sourceColumn:n};const s=qs(n);return{sourceColumn:n,targetAttribute:s}})}const Os=[{sourceColumn:"id",targetAttribute:"id",transform:"sanitize-id"},{sourceColumn:"identifier",targetAttribute:"id",transform:"sanitize-id"},{sourceColumn:"uid",targetAttribute:"id",transform:"sanitize-id"},{sourceColumn:"name",targetAttribute:"name"},{sourceColumn:"title",targetAttribute:"name"},{sourceColumn:"label",targetAttribute:"name"},{sourceColumn:"description",targetAttribute:"doc"},{sourceColumn:"text",targetAttribute:"doc"},{sourceColumn:"notes",targetAttribute:"doc"},{sourceColumn:"kind",targetAttribute:"kind"},{sourceColumn:"type",targetAttribute:"kind"},{sourceColumn:"category",targetAttribute:"kind"},{sourceColumn:"construct",targetAttribute:"construct"}];function zs(e,r,n,o){const a=[],s=[],i=new Set,l=[];for(const g of r){if(!g.targetAttribute){s.push(g.sourceColumn);continue}i.has(g.targetAttribute)||(i.add(g.targetAttribute),l.push(g))}const c=i.has("id"),d=i.has("name"),u=i.has("kind");c||a.push("No column mapped to 'id' — id will be auto-generated from row number"),d||a.push("No column mapped to 'name'"),!u&&!o&&a.push("No column mapped to 'kind' and no defaultKind set");const m=["id","name","kind","construct","doc"],b=Array.from(i).filter(g=>!m.includes(g)),v=[...m.filter(g=>i.has(g)),...b];for(const g of["id","name","kind"])v.includes(g)||v.unshift(g);const w=[v.map(sr).join(",")];return e.forEach((g,h)=>{const y={};for(const D of l){const A=g[D.sourceColumn]??"";y[D.targetAttribute]=Us(A,D.transform)}(!y.id||y.id.trim()==="")&&(y.id=`row_${h+1}`),(!y.kind||y.kind.trim()==="")&&o&&(y.kind=o);const B=y.kind;B&&Object.keys(n.kinds).length>0&&!n.kinds[B]&&a.push(`Row ${h+2}: unknown kind '${B}' (not declared by the resolved ontology)`);const N=v.map(D=>sr(y[D]??""));w.push(N.join(","))}),{csv:w.join(`
|
|
13
|
+
Please change the parent <Route path="${y}"> to <Route path="${y==="/"?"*":`${y}/*`}">.`)}let u=Fe(),m;if(r){let y=typeof r=="string"?qe(r):r;le(c==="/"||((h=y.pathname)==null?void 0:h.startsWith(c)),`When overriding the location using \`<Routes location>\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${c}" but pathname "${y.pathname}" was given in the \`location\` prop.`),m=y}else m=u;let b=m.pathname||"/",v=b;if(c!=="/"){let y=c.replace(/^\//,"").split("/");v="/"+b.replace(/^\//,"").split("/").slice(y.length).join("/")}let w=$r(e,{pathname:v});Ee(d||w!=null,`No routes matched location "${m.pathname}${m.search}${m.hash}" `),Ee(w==null||w[w.length-1].route.element!==void 0||w[w.length-1].route.Component!==void 0||w[w.length-1].route.lazy!==void 0,`Matched leaf route at location "${m.pathname}${m.search}${m.hash}" does not have an element or Component. This means it will render an <Outlet /> with a null value by default resulting in an "empty" page.`);let g=Ra(w&&w.map(y=>Object.assign({},y,{params:Object.assign({},i,y.params),pathname:De([c,o.encodeLocation?o.encodeLocation(y.pathname.replace(/%/g,"%25").replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:y.pathname]),pathnameBase:y.pathnameBase==="/"?c:De([c,o.encodeLocation?o.encodeLocation(y.pathnameBase.replace(/%/g,"%25").replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:y.pathnameBase])})),a,n);return r&&g?p.createElement(Ze.Provider,{value:{location:{pathname:"/",search:"",hash:"",state:null,key:"default",unstable_mask:void 0,...m},navigationType:"POP"}},g):g}function Fa(){let e=Oa(),r=ha(e)?`${e.status} ${e.statusText}`:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,o="rgba(200,200,200, 0.5)",a={padding:"0.5rem",backgroundColor:o},s={padding:"2px 4px",backgroundColor:o},i=null;return console.error("Error handled by React Router default ErrorBoundary:",e),i=p.createElement(p.Fragment,null,p.createElement("p",null,"💿 Hey developer 👋"),p.createElement("p",null,"You can provide a way better UX than this when your app throws errors by providing your own ",p.createElement("code",{style:s},"ErrorBoundary")," or"," ",p.createElement("code",{style:s},"errorElement")," prop on your route.")),p.createElement(p.Fragment,null,p.createElement("h2",null,"Unexpected Application Error!"),p.createElement("h3",{style:{fontStyle:"italic"}},r),n?p.createElement("pre",{style:a},n):null,i)}var Aa=p.createElement(Fa,null),to=class extends p.Component{constructor(e){super(e),this.state={location:e.location,revalidation:e.revalidation,error:e.error}}static getDerivedStateFromError(e){return{error:e}}static getDerivedStateFromProps(e,r){return r.location!==e.location||r.revalidation!=="idle"&&e.revalidation==="idle"?{error:e.error,location:e.location,revalidation:e.revalidation}:{error:e.error!==void 0?e.error:r.error,location:r.location,revalidation:e.revalidation||r.revalidation}}componentDidCatch(e,r){this.props.onError?this.props.onError(e,r):console.error("React Router caught the following error during render",e)}render(){let e=this.state.error;if(this.context&&typeof e=="object"&&e&&"digest"in e&&typeof e.digest=="string"){const n=Ca(e.digest);n&&(e=n)}let r=e!==void 0?p.createElement(Be.Provider,{value:this.props.routeContext},p.createElement(Rn.Provider,{value:e,children:this.props.component})):this.props.children;return this.context?p.createElement(Na,{error:e},r):r}};to.contextType=xa;var nn=new WeakMap;function Na({children:e,error:r}){let{basename:n}=p.useContext(be);if(typeof r=="object"&&r&&"digest"in r&&typeof r.digest=="string"){let o=Sa(r.digest);if(o){let a=nn.get(r);if(a)throw a;let s=Gr(o.location,n);if(Kr&&!nn.get(r))if(s.isExternal||o.reloadDocument)window.location.href=s.absoluteURL||s.to;else{const i=Promise.resolve().then(()=>window.__reactRouterDataRouter.navigate(s.to,{replace:o.replace}));throw nn.set(r,i),i}return p.createElement("meta",{httpEquiv:"refresh",content:`0;url=${s.absoluteURL||s.to}`})}}return e}function Ta({routeContext:e,match:r,children:n}){let o=p.useContext(Qe);return o&&o.static&&o.staticContext&&(r.route.errorElement||r.route.ErrorBoundary)&&(o.staticContext._deepestRenderedBoundaryId=r.route.id),p.createElement(Be.Provider,{value:e},n)}function Ra(e,r=[],n){let o=n==null?void 0:n.state;if(e==null){if(!o)return null;if(o.errors)e=o.matches;else if(r.length===0&&!o.initialized&&o.matches.length>0)e=o.matches;else return null}let a=e,s=o==null?void 0:o.errors;if(s!=null){let u=a.findIndex(m=>m.route.id&&(s==null?void 0:s[m.route.id])!==void 0);le(u>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(s).join(",")}`),a=a.slice(0,Math.min(a.length,u+1))}let i=!1,l=-1;if(n&&o){i=o.renderFallback;for(let u=0;u<a.length;u++){let m=a[u];if((m.route.HydrateFallback||m.route.hydrateFallbackElement)&&(l=u),m.route.id){let{loaderData:b,errors:v}=o,w=m.route.loader&&!b.hasOwnProperty(m.route.id)&&(!v||v[m.route.id]===void 0);if(m.route.lazy||w){n.isStatic&&(i=!0),l>=0?a=a.slice(0,l+1):a=[a[0]];break}}}}let c=n==null?void 0:n.onError,d=o&&c?(u,m)=>{var b,v;c(u,{location:o.location,params:((v=(b=o.matches)==null?void 0:b[0])==null?void 0:v.params)??{},unstable_pattern:ya(o.matches),errorInfo:m})}:void 0;return a.reduceRight((u,m,b)=>{let v,w=!1,g=null,h=null;o&&(v=s&&m.route.id?s[m.route.id]:void 0,g=m.route.errorElement||Aa,i&&(l<0&&b===0?(no("route-fallback",!1,"No `HydrateFallback` element provided to render during initial hydration"),w=!0,h=null):l===b&&(w=!0,h=m.route.hydrateFallbackElement||null)));let y=r.concat(a.slice(0,b+1)),N=()=>{let R;return v?R=g:w?R=h:m.route.Component?R=p.createElement(m.route.Component,null):m.route.element?R=m.route.element:R=u,p.createElement(Ta,{match:m,routeContext:{outlet:u,matches:y,isDataRoute:o!=null},children:R})};return o&&(m.route.ErrorBoundary||m.route.errorElement||b===0)?p.createElement(to,{location:o.location,revalidation:o.revalidation,component:g,error:v,children:N(),routeContext:{outlet:null,matches:y,isDataRoute:!0},onError:d}):N()},null)}function Mn(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function Ia(e){let r=p.useContext(Qe);return le(r,Mn(e)),r}function Ma(e){let r=p.useContext(Yt);return le(r,Mn(e)),r}function _a(e){let r=p.useContext(Be);return le(r,Mn(e)),r}function _n(e){let r=_a(e),n=r.matches[r.matches.length-1];return le(n.route.id,`${e} can only be used on routes that contain a unique "id"`),n.route.id}function Pa(){return _n("useRouteId")}function Oa(){var o;let e=p.useContext(Rn),r=Ma("useRouteError"),n=_n("useRouteError");return e!==void 0?e:(o=r.errors)==null?void 0:o[n]}function za(){let{router:e}=Ia("useNavigate"),r=_n("useNavigate"),n=p.useRef(!1);return Zr(()=>{n.current=!0}),p.useCallback(async(a,s={})=>{Ee(n.current,Qr),n.current&&(typeof a=="number"?await e.navigate(a):await e.navigate(a,{fromRouteId:r,...s}))},[e,r])}var er={};function no(e,r,n){!r&&!er[e]&&(er[e]=!0,Ee(!1,n))}p.memo(Ua);function Ua({routes:e,future:r,state:n,isStatic:o,onError:a}){return eo(e,void 0,{state:n,isStatic:o,onError:a})}function ke(e){le(!1,"A <Route> is only ever to be used as the child of <Routes> element, never rendered directly. Please wrap your <Route> in a <Routes>.")}function ro({basename:e="/",children:r=null,location:n,navigationType:o="POP",navigator:a,static:s=!1,unstable_useTransitions:i}){le(!vt(),"You cannot render a <Router> inside another <Router>. You should never have more than one in your app.");let l=e.replace(/^\/*/,"/"),c=p.useMemo(()=>({basename:l,navigator:a,static:s,unstable_useTransitions:i,future:{}}),[l,a,s,i]);typeof n=="string"&&(n=qe(n));let{pathname:d="/",search:u="",hash:m="",state:b=null,key:v="default",unstable_mask:w}=n,g=p.useMemo(()=>{let h=Me(d,l);return h==null?null:{location:{pathname:h,search:u,hash:m,state:b,key:v,unstable_mask:w},navigationType:o}},[l,d,u,m,b,v,o,w]);return Ee(g!=null,`<Router basename="${l}"> is not able to match the URL "${d}${u}${m}" because it does not start with the basename, so the <Router> won't render anything.`),g==null?null:p.createElement(be.Provider,{value:c},p.createElement(Ze.Provider,{children:r,value:g}))}function La({children:e,location:r}){return Ba(kn(e),r)}function kn(e,r=[]){let n=[];return p.Children.forEach(e,(o,a)=>{if(!p.isValidElement(o))return;let s=[...r,a];if(o.type===p.Fragment){n.push.apply(n,kn(o.props.children,s));return}le(o.type===ke,`[${typeof o.type=="string"?o.type:o.type.name}] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>`),le(!o.props.index||!o.props.children,"An index route cannot have child routes.");let i={id:o.props.id||s.join("-"),caseSensitive:o.props.caseSensitive,element:o.props.element,Component:o.props.Component,index:o.props.index,path:o.props.path,middleware:o.props.middleware,loader:o.props.loader,action:o.props.action,hydrateFallbackElement:o.props.hydrateFallbackElement,HydrateFallback:o.props.HydrateFallback,errorElement:o.props.errorElement,ErrorBoundary:o.props.ErrorBoundary,hasErrorBoundary:o.props.hasErrorBoundary===!0||o.props.ErrorBoundary!=null||o.props.errorElement!=null,shouldRevalidate:o.props.shouldRevalidate,handle:o.props.handle,lazy:o.props.lazy};o.props.children&&(i.children=kn(o.props.children,s)),n.push(i)}),n}var Pt="get",Ot="application/x-www-form-urlencoded";function Jt(e){return typeof HTMLElement<"u"&&e instanceof HTMLElement}function qa(e){return Jt(e)&&e.tagName.toLowerCase()==="button"}function $a(e){return Jt(e)&&e.tagName.toLowerCase()==="form"}function Va(e){return Jt(e)&&e.tagName.toLowerCase()==="input"}function Wa(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function Ha(e,r){return e.button===0&&(!r||r==="_self")&&!Wa(e)}var Et=null;function Ka(){if(Et===null)try{new FormData(document.createElement("form"),0),Et=!1}catch{Et=!0}return Et}var Ga=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function rn(e){return e!=null&&!Ga.has(e)?(Ee(!1,`"${e}" is not a valid \`encType\` for \`<Form>\`/\`<fetcher.Form>\` and will default to "${Ot}"`),null):e}function Ya(e,r){let n,o,a,s,i;if($a(e)){let l=e.getAttribute("action");o=l?Me(l,r):null,n=e.getAttribute("method")||Pt,a=rn(e.getAttribute("enctype"))||Ot,s=new FormData(e)}else if(qa(e)||Va(e)&&(e.type==="submit"||e.type==="image")){let l=e.form;if(l==null)throw new Error('Cannot submit a <button> or <input type="submit"> without a <form>');let c=e.getAttribute("formaction")||l.getAttribute("action");if(o=c?Me(c,r):null,n=e.getAttribute("formmethod")||l.getAttribute("method")||Pt,a=rn(e.getAttribute("formenctype"))||rn(l.getAttribute("enctype"))||Ot,s=new FormData(l,e),!Ka()){let{name:d,type:u,value:m}=e;if(u==="image"){let b=d?`${d}.`:"";s.append(`${b}x`,"0"),s.append(`${b}y`,"0")}else d&&s.append(d,m)}}else{if(Jt(e))throw new Error('Cannot submit element that is not <form>, <button>, or <input type="submit|image">');n=Pt,o=null,a=Ot,i=e}return s&&a==="text/plain"&&(i=s,s=void 0),{action:o,method:n.toLowerCase(),encType:a,formData:s,body:i}}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");function Pn(e,r){if(e===!1||e===null||typeof e>"u")throw new Error(r)}function Ja(e,r,n,o){let a=typeof e=="string"?new URL(e,typeof window>"u"?"server://singlefetch/":window.location.origin):e;return n?a.pathname.endsWith("/")?a.pathname=`${a.pathname}_.${o}`:a.pathname=`${a.pathname}.${o}`:a.pathname==="/"?a.pathname=`_root.${o}`:r&&Me(a.pathname,r)==="/"?a.pathname=`${r.replace(/\/$/,"")}/_root.${o}`:a.pathname=`${a.pathname.replace(/\/$/,"")}.${o}`,a}async function Xa(e,r){if(e.id in r)return r[e.id];try{let n=await import(e.module);return r[e.id]=n,n}catch(n){return console.error(`Error loading route module \`${e.module}\`, reloading page...`),console.error(n),window.__reactRouterContext&&window.__reactRouterContext.isSpaMode,window.location.reload(),new Promise(()=>{})}}function Qa(e){return e==null?!1:e.href==null?e.rel==="preload"&&typeof e.imageSrcSet=="string"&&typeof e.imageSizes=="string":typeof e.rel=="string"&&typeof e.href=="string"}async function Za(e,r,n){let o=await Promise.all(e.map(async a=>{let s=r.routes[a.route.id];if(s){let i=await Xa(s,n);return i.links?i.links():[]}return[]}));return rs(o.flat(1).filter(Qa).filter(a=>a.rel==="stylesheet"||a.rel==="preload").map(a=>a.rel==="stylesheet"?{...a,rel:"prefetch",as:"style"}:{...a,rel:"prefetch"}))}function tr(e,r,n,o,a,s){let i=(c,d)=>n[d]?c.route.id!==n[d].route.id:!0,l=(c,d)=>{var u;return n[d].pathname!==c.pathname||((u=n[d].route.path)==null?void 0:u.endsWith("*"))&&n[d].params["*"]!==c.params["*"]};return s==="assets"?r.filter((c,d)=>i(c,d)||l(c,d)):s==="data"?r.filter((c,d)=>{var m;let u=o.routes[c.route.id];if(!u||!u.hasLoader)return!1;if(i(c,d)||l(c,d))return!0;if(c.route.shouldRevalidate){let b=c.route.shouldRevalidate({currentUrl:new URL(a.pathname+a.search+a.hash,window.origin),currentParams:((m=n[0])==null?void 0:m.params)||{},nextUrl:new URL(e,window.origin),nextParams:c.params,defaultShouldRevalidate:!0});if(typeof b=="boolean")return b}return!0}):[]}function es(e,r,{includeHydrateFallback:n}={}){return ts(e.map(o=>{let a=r.routes[o.route.id];if(!a)return[];let s=[a.module];return a.clientActionModule&&(s=s.concat(a.clientActionModule)),a.clientLoaderModule&&(s=s.concat(a.clientLoaderModule)),n&&a.hydrateFallbackModule&&(s=s.concat(a.hydrateFallbackModule)),a.imports&&(s=s.concat(a.imports)),s}).flat(1))}function ts(e){return[...new Set(e)]}function ns(e){let r={},n=Object.keys(e).sort();for(let o of n)r[o]=e[o];return r}function rs(e,r){let n=new Set;return new Set(r),e.reduce((o,a)=>{let s=JSON.stringify(ns(a));return n.has(s)||(n.add(s),o.push({key:s,link:a})),o},[])}function oo(){let e=p.useContext(Qe);return Pn(e,"You must render this element inside a <DataRouterContext.Provider> element"),e}function os(){let e=p.useContext(Yt);return Pn(e,"You must render this element inside a <DataRouterStateContext.Provider> element"),e}var On=p.createContext(void 0);On.displayName="FrameworkContext";function ao(){let e=p.useContext(On);return Pn(e,"You must render this element inside a <HydratedRouter> element"),e}function as(e,r){let n=p.useContext(On),[o,a]=p.useState(!1),[s,i]=p.useState(!1),{onFocus:l,onBlur:c,onMouseEnter:d,onMouseLeave:u,onTouchStart:m}=r,b=p.useRef(null);p.useEffect(()=>{if(e==="render"&&i(!0),e==="viewport"){let g=y=>{y.forEach(N=>{i(N.isIntersecting)})},h=new IntersectionObserver(g,{threshold:.5});return b.current&&h.observe(b.current),()=>{h.disconnect()}}},[e]),p.useEffect(()=>{if(o){let g=setTimeout(()=>{i(!0)},100);return()=>{clearTimeout(g)}}},[o]);let v=()=>{a(!0)},w=()=>{a(!1),i(!1)};return n?e!=="intent"?[s,b,{}]:[s,b,{onFocus:tt(l,v),onBlur:tt(c,w),onMouseEnter:tt(d,v),onMouseLeave:tt(u,w),onTouchStart:tt(m,v)}]:[!1,b,{}]}function tt(e,r){return n=>{e&&e(n),n.defaultPrevented||r(n)}}function ss({page:e,...r}){let{router:n}=oo(),o=p.useMemo(()=>$r(n.routes,e,n.basename),[n.routes,e,n.basename]);return o?p.createElement(ls,{page:e,matches:o,...r}):null}function is(e){let{manifest:r,routeModules:n}=ao(),[o,a]=p.useState([]);return p.useEffect(()=>{let s=!1;return Za(e,r,n).then(i=>{s||a(i)}),()=>{s=!0}},[e,r,n]),o}function ls({page:e,matches:r,...n}){let o=Fe(),{future:a,manifest:s,routeModules:i}=ao(),{basename:l}=oo(),{loaderData:c,matches:d}=os(),u=p.useMemo(()=>tr(e,r,d,s,o,"data"),[e,r,d,s,o]),m=p.useMemo(()=>tr(e,r,d,s,o,"assets"),[e,r,d,s,o]),b=p.useMemo(()=>{if(e===o.pathname+o.search+o.hash)return[];let g=new Set,h=!1;if(r.forEach(N=>{var A;let R=s.routes[N.route.id];!R||!R.hasLoader||(!u.some(T=>T.route.id===N.route.id)&&N.route.id in c&&((A=i[N.route.id])!=null&&A.shouldRevalidate)||R.hasClientLoader?h=!0:g.add(N.route.id))}),g.size===0)return[];let y=Ja(e,l,a.unstable_trailingSlashAwareDataRequests,"data");return h&&g.size>0&&y.searchParams.set("_routes",r.filter(N=>g.has(N.route.id)).map(N=>N.route.id).join(",")),[y.pathname+y.search]},[l,a.unstable_trailingSlashAwareDataRequests,c,o,s,u,r,e,i]),v=p.useMemo(()=>es(m,s),[m,s]),w=is(m);return p.createElement(p.Fragment,null,b.map(g=>p.createElement("link",{key:g,rel:"prefetch",as:"fetch",href:g,...n})),v.map(g=>p.createElement("link",{key:g,rel:"modulepreload",href:g,...n})),w.map(({key:g,link:h})=>p.createElement("link",{key:g,nonce:n.nonce,...h,crossOrigin:h.crossOrigin??n.crossOrigin})))}function ds(...e){return r=>{e.forEach(n=>{typeof n=="function"?n(r):n!=null&&(n.current=r)})}}var cs=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";try{cs&&(window.__reactRouterVersion="7.13.2")}catch{}function us({basename:e,children:r,unstable_useTransitions:n,window:o}){let a=p.useRef();a.current==null&&(a.current=Wo({window:o,v5Compat:!0}));let s=a.current,[i,l]=p.useState({action:s.action,location:s.location}),c=p.useCallback(d=>{n===!1?l(d):p.startTransition(()=>l(d))},[n]);return p.useLayoutEffect(()=>s.listen(c),[s,c]),p.createElement(ro,{basename:e,children:r,location:i.location,navigationType:i.action,navigator:s,unstable_useTransitions:n})}function ps({basename:e,children:r,unstable_useTransitions:n,window:o}){let a=p.useRef();a.current==null&&(a.current=Ho({window:o,v5Compat:!0}));let s=a.current,[i,l]=p.useState({action:s.action,location:s.location}),c=p.useCallback(d=>{n===!1?l(d):p.startTransition(()=>l(d))},[n]);return p.useLayoutEffect(()=>s.listen(c),[s,c]),p.createElement(ro,{basename:e,children:r,location:i.location,navigationType:i.action,navigator:s,unstable_useTransitions:n})}var so=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,io=p.forwardRef(function({onClick:r,discover:n="render",prefetch:o="none",relative:a,reloadDocument:s,replace:i,unstable_mask:l,state:c,target:d,to:u,preventScrollReset:m,viewTransition:b,unstable_defaultShouldRevalidate:v,...w},g){let{basename:h,navigator:y,unstable_useTransitions:N}=p.useContext(be),R=typeof u=="string"&&so.test(u),A=Gr(u,h);u=A.to;let T=Ea(u,{relative:a}),j=Fe(),S=null;if(l){let q=Tn(l,[],j.unstable_mask?j.unstable_mask.pathname:"/",!0);h!=="/"&&(q.pathname=q.pathname==="/"?h:De([h,q.pathname])),S=y.createHref(q)}let[k,U,H]=as(o,w),O=ys(u,{replace:i,unstable_mask:l,state:c,target:d,preventScrollReset:m,relative:a,viewTransition:b,unstable_defaultShouldRevalidate:v,unstable_useTransitions:N});function D(q){r&&r(q),q.defaultPrevented||O(q)}let $=!(A.isExternal||s),E=p.createElement("a",{...w,...H,href:($?S:void 0)||A.absoluteURL||T,onClick:$?D:r,ref:ds(g,U),target:d,"data-discover":!R&&n==="render"?"true":void 0});return k&&!R?p.createElement(p.Fragment,null,E,p.createElement(ss,{page:T})):E});io.displayName="Link";var ms=p.forwardRef(function({"aria-current":r="page",caseSensitive:n=!1,className:o="",end:a=!1,style:s,to:i,viewTransition:l,children:c,...d},u){let m=wt(i,{relative:d.relative}),b=Fe(),v=p.useContext(Yt),{navigator:w,basename:g}=p.useContext(be),h=v!=null&&ws(m)&&l===!0,y=w.encodeLocation?w.encodeLocation(m).pathname:m.pathname,N=b.pathname,R=v&&v.navigation&&v.navigation.location?v.navigation.location.pathname:null;n||(N=N.toLowerCase(),R=R?R.toLowerCase():null,y=y.toLowerCase()),R&&g&&(R=Me(R,g)||R);const A=y!=="/"&&y.endsWith("/")?y.length-1:y.length;let T=N===y||!a&&N.startsWith(y)&&N.charAt(A)==="/",j=R!=null&&(R===y||!a&&R.startsWith(y)&&R.charAt(y.length)==="/"),S={isActive:T,isPending:j,isTransitioning:h},k=T?r:void 0,U;typeof o=="function"?U=o(S):U=[o,T?"active":null,j?"pending":null,h?"transitioning":null].filter(Boolean).join(" ");let H=typeof s=="function"?s(S):s;return p.createElement(io,{...d,"aria-current":k,className:U,ref:u,style:H,to:i,viewTransition:l},typeof c=="function"?c(S):c)});ms.displayName="NavLink";var fs=p.forwardRef(({discover:e="render",fetcherKey:r,navigate:n,reloadDocument:o,replace:a,state:s,method:i=Pt,action:l,onSubmit:c,relative:d,preventScrollReset:u,viewTransition:m,unstable_defaultShouldRevalidate:b,...v},w)=>{let{unstable_useTransitions:g}=p.useContext(be),h=bs(),y=vs(l,{relative:d}),N=i.toLowerCase()==="get"?"get":"post",R=typeof l=="string"&&so.test(l),A=T=>{if(c&&c(T),T.defaultPrevented)return;T.preventDefault();let j=T.nativeEvent.submitter,S=(j==null?void 0:j.getAttribute("formmethod"))||i,k=()=>h(j||T.currentTarget,{fetcherKey:r,method:S,navigate:n,replace:a,state:s,relative:d,preventScrollReset:u,viewTransition:m,unstable_defaultShouldRevalidate:b});g&&n!==!1?p.startTransition(()=>k()):k()};return p.createElement("form",{ref:w,method:N,action:y,onSubmit:o?c:A,...v,"data-discover":!R&&e==="render"?"true":void 0})});fs.displayName="Form";function hs(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function lo(e){let r=p.useContext(Qe);return le(r,hs(e)),r}function ys(e,{target:r,replace:n,unstable_mask:o,state:a,preventScrollReset:s,relative:i,viewTransition:l,unstable_defaultShouldRevalidate:c,unstable_useTransitions:d}={}){let u=je(),m=Fe(),b=wt(e,{relative:i});return p.useCallback(v=>{if(Ha(v,r)){v.preventDefault();let w=n!==void 0?n:Ge(m)===Ge(b),g=()=>u(e,{replace:w,unstable_mask:o,state:a,preventScrollReset:s,relative:i,viewTransition:l,unstable_defaultShouldRevalidate:c});d?p.startTransition(()=>g()):g()}},[m,u,b,n,o,a,r,e,s,i,l,c,d])}var gs=0,xs=()=>`__${String(++gs)}__`;function bs(){let{router:e}=lo("useSubmit"),{basename:r}=p.useContext(be),n=Pa(),o=e.fetch,a=e.navigate;return p.useCallback(async(s,i={})=>{let{action:l,method:c,encType:d,formData:u,body:m}=Ya(s,r);if(i.navigate===!1){let b=i.fetcherKey||xs();await o(b,n,i.action||l,{unstable_defaultShouldRevalidate:i.unstable_defaultShouldRevalidate,preventScrollReset:i.preventScrollReset,formData:u,body:m,formMethod:i.method||c,formEncType:i.encType||d,flushSync:i.flushSync})}else await a(i.action||l,{unstable_defaultShouldRevalidate:i.unstable_defaultShouldRevalidate,preventScrollReset:i.preventScrollReset,formData:u,body:m,formMethod:i.method||c,formEncType:i.encType||d,replace:i.replace,state:i.state,fromRouteId:n,flushSync:i.flushSync,viewTransition:i.viewTransition})},[o,a,r,n])}function vs(e,{relative:r}={}){let{basename:n}=p.useContext(be),o=p.useContext(Be);le(o,"useFormAction must be used inside a RouteContext");let[a]=o.matches.slice(-1),s={...wt(e||".",{relative:r})},i=Fe();if(e==null){s.search=i.search;let l=new URLSearchParams(s.search),c=l.getAll("index");if(c.some(u=>u==="")){l.delete("index"),c.filter(m=>m).forEach(m=>l.append("index",m));let u=l.toString();s.search=u?`?${u}`:""}}return(!e||e===".")&&a.route.index&&(s.search=s.search?s.search.replace(/^\?/,"?index&"):"?index"),n!=="/"&&(s.pathname=s.pathname==="/"?n:De([n,s.pathname])),Ge(s)}function ws(e,{relative:r}={}){let n=p.useContext(Jr);le(n!=null,"`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`. Did you accidentally import `RouterProvider` from `react-router`?");let{basename:o}=lo("useViewTransitionState"),a=wt(e,{relative:r});if(!n.isTransitioning)return!1;let s=Me(n.currentLocation.pathname,o)||n.currentLocation.pathname,i=Me(n.nextLocation.pathname,o)||n.nextLocation.pathname;return Vt(a.pathname,i)!=null||Vt(a.pathname,s)!=null}const ks="modulepreload",Ss=function(e){return"/"+e},nr={},ce=function(r,n,o){let a=Promise.resolve();if(n&&n.length>0){let i=function(d){return Promise.all(d.map(u=>Promise.resolve(u).then(m=>({status:"fulfilled",value:m}),m=>({status:"rejected",reason:m}))))};document.getElementsByTagName("link");const l=document.querySelector("meta[property=csp-nonce]"),c=(l==null?void 0:l.nonce)||(l==null?void 0:l.getAttribute("nonce"));a=i(n.map(d=>{if(d=Ss(d),d in nr)return;nr[d]=!0;const u=d.endsWith(".css"),m=u?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${d}"]${m}`))return;const b=document.createElement("link");if(b.rel=u?"stylesheet":ks,u||(b.as="script"),b.crossOrigin="",b.href=d,c&&b.setAttribute("nonce",c),document.head.appendChild(b),u)return new Promise((v,w)=>{b.addEventListener("load",v),b.addEventListener("error",()=>w(new Error(`Unable to preload CSS for ${d}`)))})}))}function s(i){const l=new Event("vite:preloadError",{cancelable:!0});if(l.payload=i,window.dispatchEvent(l),!l.defaultPrevented)throw i}return a.then(i=>{for(const l of i||[])l.status==="rejected"&&s(l.reason);return r().catch(s)})},Cs={dependsOn:{}};function Es(e,r){return new Set([e,...(r??Cs).dependsOn[e]??[]])}function js(e,r){const n=r instanceof Set?r:new Set(r);return n.size===0?!1:e.some(o=>n.has(o))}function rr(e){return(e.sourceEnd.type?1:0)+(e.targetEnd.type?1:0)}function Ds(e,r){return rr(r)-rr(e)||e.label.localeCompare(r.label)}function co(e){return new Map(e.map(r=>[r.name,r]))}function zn(e,r){if(e)return r.relationships.find(n=>n.name===e||n.sysmlName===e)}function jt(e,r,n){var i;if(!r)return!0;if(!e)return!1;if(e===r)return!0;const o=Array.isArray(n)?co(n):n;let a=e;const s=new Set;for(;a&&!s.has(a);){if(a===r)return!0;s.add(a),a=(i=o.get(a))==null?void 0:i.superType}return!1}function Ye(e,r,n){const o=co(n.kinds),a=[];for(const s of n.relationships)s.isAbstract||(jt(e.kind,s.sourceEnd.type,o)&&jt(r.kind,s.targetEnd.type,o)&&a.push({definition:s,direction:"outgoing",sourceId:e.id,targetId:r.id}),jt(r.kind,s.sourceEnd.type,o)&&jt(e.kind,s.targetEnd.type,o)&&a.push({definition:s,direction:"incoming",sourceId:r.id,targetId:e.id}));return a.sort((s,i)=>Ds(s.definition,i.definition))}const Sn={AcceptActionUsage:{name:"AcceptActionUsage",abstract:!1,superTypes:["ActionUsage"],features:{payloadArgument:{name:"payloadArgument",ecoreName:"payloadArgument",kind:"reference",type:"Expression",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},payloadParameter:{name:"payloadParameter",ecoreName:"payloadParameter",kind:"reference",type:"ReferenceUsage",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Usage/nestedReference","Step/parameter"],hasDerivation:!0},receiverArgument:{name:"receiverArgument",ecoreName:"receiverArgument",kind:"reference",type:"Expression",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0}},operations:[{name:"isTriggerAction",type:"boolean",lowerBound:1,upperBound:1,parameters:[],hasBody:!0}]},ActionDefinition:{name:"ActionDefinition",abstract:!1,superTypes:["OccurrenceDefinition","Behavior"],features:{action:{name:"action",ecoreName:"action",kind:"reference",type:"ActionUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Behavior/step","Definition/usage"],hasDerivation:!0}},operations:[]},ActionUsage:{name:"ActionUsage",abstract:!1,superTypes:["OccurrenceUsage","Step"],features:{actionDefinition:{name:"actionDefinition",ecoreName:"actionDefinition",kind:"reference",type:"Behavior",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,redefines:["Step/behavior","OccurrenceUsage/occurrenceDefinition"]}},operations:[{name:"argument",type:"Expression",lowerBound:0,upperBound:1,parameters:[{name:"i",type:"number",many:!1}],hasBody:!0},{name:"inputParameter",type:"Feature",lowerBound:0,upperBound:1,parameters:[{name:"i",type:"number",many:!1}],hasBody:!0},{name:"inputParameters",type:"Feature",lowerBound:0,upperBound:-1,parameters:[],hasBody:!0},{name:"isSubactionUsage",type:"boolean",lowerBound:1,upperBound:1,parameters:[],hasBody:!0}]},ActorMembership:{name:"ActorMembership",abstract:!1,superTypes:["ParameterMembership"],features:{ownedActorParameter:{name:"ownedActorParameter",ecoreName:"ownedActorParameter",kind:"reference",type:"PartUsage",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["ParameterMembership/ownedMemberParameter"]}},operations:[]},AllocationDefinition:{name:"AllocationDefinition",abstract:!1,superTypes:["ConnectionDefinition"],features:{allocation:{name:"allocation",ecoreName:"allocation",kind:"reference",type:"AllocationUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Definition/usage"],hasDerivation:!0}},operations:[]},AllocationUsage:{name:"AllocationUsage",abstract:!1,superTypes:["ConnectionUsage"],features:{allocationDefinition:{name:"allocationDefinition",ecoreName:"allocationDefinition",kind:"reference",type:"AllocationDefinition",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,redefines:["ConnectionUsage/connectionDefinition"]}},operations:[]},AnalysisCaseDefinition:{name:"AnalysisCaseDefinition",abstract:!1,superTypes:["CaseDefinition"],features:{resultExpression:{name:"resultExpression",ecoreName:"resultExpression",kind:"reference",type:"Expression",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Function/expression","Type/ownedFeature"],hasDerivation:!0}},operations:[]},AnalysisCaseUsage:{name:"AnalysisCaseUsage",abstract:!1,superTypes:["CaseUsage"],features:{analysisCaseDefinition:{name:"analysisCaseDefinition",ecoreName:"analysisCaseDefinition",kind:"reference",type:"AnalysisCaseDefinition",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["CaseUsage/caseDefinition"]},resultExpression:{name:"resultExpression",ecoreName:"resultExpression",kind:"reference",type:"Expression",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Type/ownedFeature"],hasDerivation:!0}},operations:[]},AnnotatingElement:{name:"AnnotatingElement",abstract:!1,superTypes:["Element"],features:{annotatedElement:{name:"annotatedElement",ecoreName:"annotatedElement",kind:"reference",type:"Element",lowerBound:1,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},annotation:{name:"annotation",ecoreName:"annotation",kind:"reference",type:"Annotation",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,opposite:"Annotation/annotatingElement",hasDerivation:!0},ownedAnnotatingRelationship:{name:"ownedAnnotatingRelationship",ecoreName:"ownedAnnotatingRelationship",kind:"reference",type:"Annotation",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,opposite:"Annotation/owningAnnotatingElement",subsets:["AnnotatingElement/annotation","Element/ownedRelationship"],hasDerivation:!0},owningAnnotatingRelationship:{name:"owningAnnotatingRelationship",ecoreName:"owningAnnotatingRelationship",kind:"reference",type:"Annotation",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"Annotation/ownedAnnotatingElement",subsets:["Element/owningRelationship","AnnotatingElement/annotation"]}},operations:[]},Annotation:{name:"Annotation",abstract:!1,superTypes:["Relationship"],features:{annotatedElement:{name:"annotatedElement",ecoreName:"annotatedElement",kind:"reference",type:"Element",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1,redefines:["Relationship/target"]},annotatingElement:{name:"annotatingElement",ecoreName:"annotatingElement",kind:"reference",type:"AnnotatingElement",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"AnnotatingElement/annotation",redefines:["Relationship/source"],hasDerivation:!0},ownedAnnotatingElement:{name:"ownedAnnotatingElement",ecoreName:"ownedAnnotatingElement",kind:"reference",type:"AnnotatingElement",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"AnnotatingElement/owningAnnotatingRelationship",subsets:["Annotation/annotatingElement","Relationship/ownedRelatedElement"],hasDerivation:!0},owningAnnotatedElement:{name:"owningAnnotatedElement",ecoreName:"owningAnnotatedElement",kind:"reference",type:"Element",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"Element/ownedAnnotation",subsets:["Annotation/annotatedElement","Relationship/owningRelatedElement"]},owningAnnotatingElement:{name:"owningAnnotatingElement",ecoreName:"owningAnnotatingElement",kind:"reference",type:"AnnotatingElement",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"AnnotatingElement/ownedAnnotatingRelationship",subsets:["Annotation/annotatingElement","Relationship/owningRelatedElement"]}},operations:[]},AssertConstraintUsage:{name:"AssertConstraintUsage",abstract:!1,superTypes:["ConstraintUsage","Invariant"],features:{assertedConstraint:{name:"assertedConstraint",ecoreName:"assertedConstraint",kind:"reference",type:"ConstraintUsage",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0}},operations:[]},AssignmentActionUsage:{name:"AssignmentActionUsage",abstract:!1,superTypes:["ActionUsage"],features:{referent:{name:"referent",ecoreName:"referent",kind:"reference",type:"Feature",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Namespace/member"],hasDerivation:!0},targetArgument:{name:"targetArgument",ecoreName:"targetArgument",kind:"reference",type:"Expression",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},valueExpression:{name:"valueExpression",ecoreName:"valueExpression",kind:"reference",type:"Expression",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0}},operations:[]},Association:{name:"Association",abstract:!1,superTypes:["Classifier","Relationship"],features:{associationEnd:{name:"associationEnd",ecoreName:"associationEnd",kind:"reference",type:"Feature",lowerBound:0,upperBound:-1,many:!0,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["Type/endFeature"]},relatedType:{name:"relatedType",ecoreName:"relatedType",kind:"reference",type:"Type",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,redefines:["Relationship/relatedElement"],hasDerivation:!0},sourceType:{name:"sourceType",ecoreName:"sourceType",kind:"reference",type:"Type",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Association/relatedType"],redefines:["Relationship/source"],hasDerivation:!0},targetType:{name:"targetType",ecoreName:"targetType",kind:"reference",type:"Type",lowerBound:0,upperBound:-1,many:!0,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Association/relatedType"],redefines:["Relationship/target"],hasDerivation:!0}},operations:[]},AssociationStructure:{name:"AssociationStructure",abstract:!1,superTypes:["Association","Structure"],features:{},operations:[]},AttributeDefinition:{name:"AttributeDefinition",abstract:!1,superTypes:["Definition","DataType"],features:{},operations:[]},AttributeUsage:{name:"AttributeUsage",abstract:!1,superTypes:["Usage"],features:{attributeDefinition:{name:"attributeDefinition",ecoreName:"attributeDefinition",kind:"reference",type:"DataType",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,redefines:["Usage/definition"]}},operations:[]},Behavior:{name:"Behavior",abstract:!1,superTypes:["Class"],features:{parameter:{name:"parameter",ecoreName:"parameter",kind:"reference",type:"Feature",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,redefines:["Type/directedFeature"]},step:{name:"step",ecoreName:"step",kind:"reference",type:"Step",lowerBound:0,upperBound:-1,many:!0,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Type/feature"],hasDerivation:!0}},operations:[]},BindingConnector:{name:"BindingConnector",abstract:!1,superTypes:["Connector"],features:{},operations:[]},BindingConnectorAsUsage:{name:"BindingConnectorAsUsage",abstract:!1,superTypes:["ConnectorAsUsage","BindingConnector"],features:{},operations:[]},BooleanExpression:{name:"BooleanExpression",abstract:!1,superTypes:["Expression"],features:{predicate:{name:"predicate",ecoreName:"predicate",kind:"reference",type:"Predicate",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["Expression/function"]}},operations:[]},CalculationDefinition:{name:"CalculationDefinition",abstract:!1,superTypes:["ActionDefinition","Function"],features:{calculation:{name:"calculation",ecoreName:"calculation",kind:"reference",type:"CalculationUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["ActionDefinition/action","Function/expression"],hasDerivation:!0}},operations:[]},CalculationUsage:{name:"CalculationUsage",abstract:!1,superTypes:["ActionUsage","Expression"],features:{calculationDefinition:{name:"calculationDefinition",ecoreName:"calculationDefinition",kind:"reference",type:"Function",lowerBound:0,upperBound:1,many:!1,ordered:!0,containment:!1,derived:!0,volatile:!0,redefines:["Expression/function","ActionUsage/actionDefinition"]}},operations:[]},CaseDefinition:{name:"CaseDefinition",abstract:!1,superTypes:["CalculationDefinition"],features:{actorParameter:{name:"actorParameter",ecoreName:"actorParameter",kind:"reference",type:"PartUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Behavior/parameter","Definition/usage"],hasDerivation:!0},objectiveRequirement:{name:"objectiveRequirement",ecoreName:"objectiveRequirement",kind:"reference",type:"RequirementUsage",lowerBound:0,upperBound:1,many:!1,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Definition/usage"],hasDerivation:!0},subjectParameter:{name:"subjectParameter",ecoreName:"subjectParameter",kind:"reference",type:"Usage",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Behavior/parameter","Definition/usage"],hasDerivation:!0}},operations:[]},CaseUsage:{name:"CaseUsage",abstract:!1,superTypes:["CalculationUsage"],features:{actorParameter:{name:"actorParameter",ecoreName:"actorParameter",kind:"reference",type:"PartUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Step/parameter","Usage/usage"],hasDerivation:!0},caseDefinition:{name:"caseDefinition",ecoreName:"caseDefinition",kind:"reference",type:"CaseDefinition",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["CalculationUsage/calculationDefinition"]},objectiveRequirement:{name:"objectiveRequirement",ecoreName:"objectiveRequirement",kind:"reference",type:"RequirementUsage",lowerBound:0,upperBound:1,many:!1,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Usage/usage"],hasDerivation:!0},subjectParameter:{name:"subjectParameter",ecoreName:"subjectParameter",kind:"reference",type:"Usage",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Step/parameter","Usage/usage"],hasDerivation:!0}},operations:[]},Class:{name:"Class",abstract:!1,superTypes:["Classifier"],features:{},operations:[]},Classifier:{name:"Classifier",abstract:!1,superTypes:["Type"],features:{ownedSubclassification:{name:"ownedSubclassification",ecoreName:"ownedSubclassification",kind:"reference",type:"Subclassification",lowerBound:0,upperBound:-1,many:!0,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"Subclassification/owningClassifier",subsets:["Type/ownedSpecialization"],hasDerivation:!0}},operations:[]},CollectExpression:{name:"CollectExpression",abstract:!1,superTypes:["OperatorExpression"],features:{},operations:[]},Comment:{name:"Comment",abstract:!1,superTypes:["AnnotatingElement"],features:{body:{name:"body",ecoreName:"body",kind:"attribute",type:"EString",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1},locale:{name:"locale",ecoreName:"locale",kind:"attribute",type:"EString",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1}},operations:[]},ConcernDefinition:{name:"ConcernDefinition",abstract:!1,superTypes:["RequirementDefinition"],features:{},operations:[]},ConcernUsage:{name:"ConcernUsage",abstract:!1,superTypes:["RequirementUsage"],features:{concernDefinition:{name:"concernDefinition",ecoreName:"concernDefinition",kind:"reference",type:"ConcernDefinition",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["RequirementUsage/requirementDefinition"]}},operations:[]},ConjugatedPortDefinition:{name:"ConjugatedPortDefinition",abstract:!1,superTypes:["PortDefinition"],features:{originalPortDefinition:{name:"originalPortDefinition",ecoreName:"originalPortDefinition",kind:"reference",type:"PortDefinition",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"PortDefinition/conjugatedPortDefinition",redefines:["Element/owningNamespace"]},ownedPortConjugator:{name:"ownedPortConjugator",ecoreName:"ownedPortConjugator",kind:"reference",type:"PortConjugation",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"PortConjugation/conjugatedPortDefinition",redefines:["Type/ownedConjugator"]}},operations:[]},ConjugatedPortTyping:{name:"ConjugatedPortTyping",abstract:!1,superTypes:["FeatureTyping"],features:{conjugatedPortDefinition:{name:"conjugatedPortDefinition",ecoreName:"conjugatedPortDefinition",kind:"reference",type:"ConjugatedPortDefinition",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1,redefines:["FeatureTyping/type"]},portDefinition:{name:"portDefinition",ecoreName:"portDefinition",kind:"reference",type:"PortDefinition",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0}},operations:[]},Conjugation:{name:"Conjugation",abstract:!1,superTypes:["Relationship"],features:{conjugatedType:{name:"conjugatedType",ecoreName:"conjugatedType",kind:"reference",type:"Type",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1,redefines:["Relationship/source"]},originalType:{name:"originalType",ecoreName:"originalType",kind:"reference",type:"Type",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1,redefines:["Relationship/target"]},owningType:{name:"owningType",ecoreName:"owningType",kind:"reference",type:"Type",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"Type/ownedConjugator",subsets:["Conjugation/conjugatedType","Relationship/owningRelatedElement"]}},operations:[]},ConnectionDefinition:{name:"ConnectionDefinition",abstract:!1,superTypes:["PartDefinition","AssociationStructure"],features:{connectionEnd:{name:"connectionEnd",ecoreName:"connectionEnd",kind:"reference",type:"Usage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,redefines:["Association/associationEnd"]}},operations:[]},ConnectionUsage:{name:"ConnectionUsage",abstract:!1,superTypes:["ConnectorAsUsage","PartUsage"],features:{connectionDefinition:{name:"connectionDefinition",ecoreName:"connectionDefinition",kind:"reference",type:"AssociationStructure",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["ItemUsage/itemDefinition"],redefines:["Connector/association"]}},operations:[]},Connector:{name:"Connector",abstract:!1,superTypes:["Feature","Relationship"],features:{association:{name:"association",ecoreName:"association",kind:"reference",type:"Association",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,redefines:["Feature/type"]},connectorEnd:{name:"connectorEnd",ecoreName:"connectorEnd",kind:"reference",type:"Feature",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,redefines:["Type/endFeature"]},defaultFeaturingType:{name:"defaultFeaturingType",ecoreName:"defaultFeaturingType",kind:"reference",type:"Type",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0},relatedFeature:{name:"relatedFeature",ecoreName:"relatedFeature",kind:"reference",type:"Feature",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,redefines:["Relationship/relatedElement"],hasDerivation:!0},sourceFeature:{name:"sourceFeature",ecoreName:"sourceFeature",kind:"reference",type:"Feature",lowerBound:0,upperBound:1,many:!1,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Connector/relatedFeature"],redefines:["Relationship/source"],hasDerivation:!0},targetFeature:{name:"targetFeature",ecoreName:"targetFeature",kind:"reference",type:"Feature",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Connector/relatedFeature"],redefines:["Relationship/target"],hasDerivation:!0}},operations:[]},ConnectorAsUsage:{name:"ConnectorAsUsage",abstract:!0,superTypes:["Usage","Connector"],features:{},operations:[]},ConstraintDefinition:{name:"ConstraintDefinition",abstract:!1,superTypes:["OccurrenceDefinition","Predicate"],features:{},operations:[]},ConstraintUsage:{name:"ConstraintUsage",abstract:!1,superTypes:["OccurrenceUsage","BooleanExpression"],features:{constraintDefinition:{name:"constraintDefinition",ecoreName:"constraintDefinition",kind:"reference",type:"Predicate",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["BooleanExpression/predicate"]}},operations:[]},ConstructorExpression:{name:"ConstructorExpression",abstract:!1,superTypes:["InstantiationExpression"],features:{},operations:[]},ControlNode:{name:"ControlNode",abstract:!0,superTypes:["ActionUsage"],features:{},operations:[{name:"multiplicityHasBounds",type:"boolean",lowerBound:1,upperBound:1,parameters:[{name:"mult",type:"Multiplicity",many:!1},{name:"lower",type:"number",many:!1},{name:"upper",type:"number",many:!1}],hasBody:!0}]},CrossSubsetting:{name:"CrossSubsetting",abstract:!1,superTypes:["Subsetting"],features:{crossedFeature:{name:"crossedFeature",ecoreName:"crossedFeature",kind:"reference",type:"Feature",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1,redefines:["Subsetting/subsettedFeature"]},crossingFeature:{name:"crossingFeature",ecoreName:"crossingFeature",kind:"reference",type:"Feature",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"Feature/ownedCrossSubsetting",redefines:["Subsetting/owningFeature","Subsetting/subsettingFeature"]}},operations:[]},DataType:{name:"DataType",abstract:!1,superTypes:["Classifier"],features:{},operations:[]},DecisionNode:{name:"DecisionNode",abstract:!1,superTypes:["ControlNode"],features:{},operations:[]},Definition:{name:"Definition",abstract:!1,superTypes:["Classifier"],features:{directedUsage:{name:"directedUsage",ecoreName:"directedUsage",kind:"reference",type:"Usage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Type/directedFeature","Definition/usage"],hasDerivation:!0},isVariation:{name:"isVariation",ecoreName:"isVariation",kind:"attribute",type:"EBoolean",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1},ownedAction:{name:"ownedAction",ecoreName:"ownedAction",kind:"reference",type:"ActionUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Definition/ownedOccurrence"],hasDerivation:!0},ownedAllocation:{name:"ownedAllocation",ecoreName:"ownedAllocation",kind:"reference",type:"AllocationUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Definition/ownedConnection"],hasDerivation:!0},ownedAnalysisCase:{name:"ownedAnalysisCase",ecoreName:"ownedAnalysisCase",kind:"reference",type:"AnalysisCaseUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Definition/ownedCase"],hasDerivation:!0},ownedAttribute:{name:"ownedAttribute",ecoreName:"ownedAttribute",kind:"reference",type:"AttributeUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Definition/ownedUsage"],hasDerivation:!0},ownedCalculation:{name:"ownedCalculation",ecoreName:"ownedCalculation",kind:"reference",type:"CalculationUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Definition/ownedAction"],hasDerivation:!0},ownedCase:{name:"ownedCase",ecoreName:"ownedCase",kind:"reference",type:"CaseUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Definition/ownedCalculation"],hasDerivation:!0},ownedConcern:{name:"ownedConcern",ecoreName:"ownedConcern",kind:"reference",type:"ConcernUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Definition/ownedRequirement"],hasDerivation:!0},ownedConnection:{name:"ownedConnection",ecoreName:"ownedConnection",kind:"reference",type:"ConnectorAsUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Definition/ownedUsage"],hasDerivation:!0},ownedConstraint:{name:"ownedConstraint",ecoreName:"ownedConstraint",kind:"reference",type:"ConstraintUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Definition/ownedOccurrence"],hasDerivation:!0},ownedEnumeration:{name:"ownedEnumeration",ecoreName:"ownedEnumeration",kind:"reference",type:"EnumerationUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Definition/ownedAttribute"],hasDerivation:!0},ownedFlow:{name:"ownedFlow",ecoreName:"ownedFlow",kind:"reference",type:"FlowUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Definition/ownedConnection"],hasDerivation:!0},ownedInterface:{name:"ownedInterface",ecoreName:"ownedInterface",kind:"reference",type:"InterfaceUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Definition/ownedConnection"],hasDerivation:!0},ownedItem:{name:"ownedItem",ecoreName:"ownedItem",kind:"reference",type:"ItemUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Definition/ownedOccurrence"],hasDerivation:!0},ownedMetadata:{name:"ownedMetadata",ecoreName:"ownedMetadata",kind:"reference",type:"MetadataUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Definition/ownedItem"],hasDerivation:!0},ownedOccurrence:{name:"ownedOccurrence",ecoreName:"ownedOccurrence",kind:"reference",type:"OccurrenceUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Definition/ownedUsage"],hasDerivation:!0},ownedPart:{name:"ownedPart",ecoreName:"ownedPart",kind:"reference",type:"PartUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Definition/ownedItem"],hasDerivation:!0},ownedPort:{name:"ownedPort",ecoreName:"ownedPort",kind:"reference",type:"PortUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Definition/ownedUsage"],hasDerivation:!0},ownedReference:{name:"ownedReference",ecoreName:"ownedReference",kind:"reference",type:"ReferenceUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Definition/ownedUsage"],hasDerivation:!0},ownedRendering:{name:"ownedRendering",ecoreName:"ownedRendering",kind:"reference",type:"RenderingUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Definition/ownedPart"],hasDerivation:!0},ownedRequirement:{name:"ownedRequirement",ecoreName:"ownedRequirement",kind:"reference",type:"RequirementUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Definition/ownedConstraint"],hasDerivation:!0},ownedState:{name:"ownedState",ecoreName:"ownedState",kind:"reference",type:"StateUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Definition/ownedAction"],hasDerivation:!0},ownedTransition:{name:"ownedTransition",ecoreName:"ownedTransition",kind:"reference",type:"TransitionUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Definition/ownedUsage"],hasDerivation:!0},ownedUsage:{name:"ownedUsage",ecoreName:"ownedUsage",kind:"reference",type:"Usage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,opposite:"Usage/owningDefinition",subsets:["Type/ownedFeature","Definition/usage"],hasDerivation:!0},ownedUseCase:{name:"ownedUseCase",ecoreName:"ownedUseCase",kind:"reference",type:"UseCaseUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Definition/ownedCase"],hasDerivation:!0},ownedVerificationCase:{name:"ownedVerificationCase",ecoreName:"ownedVerificationCase",kind:"reference",type:"VerificationCaseUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Definition/ownedCase"],hasDerivation:!0},ownedView:{name:"ownedView",ecoreName:"ownedView",kind:"reference",type:"ViewUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Definition/ownedPart"],hasDerivation:!0},ownedViewpoint:{name:"ownedViewpoint",ecoreName:"ownedViewpoint",kind:"reference",type:"ViewpointUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Definition/ownedRequirement"],hasDerivation:!0},usage:{name:"usage",ecoreName:"usage",kind:"reference",type:"Usage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Type/feature"],hasDerivation:!0},variant:{name:"variant",ecoreName:"variant",kind:"reference",type:"Usage",lowerBound:0,upperBound:-1,many:!0,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Namespace/ownedMember"],hasDerivation:!0},variantMembership:{name:"variantMembership",ecoreName:"variantMembership",kind:"reference",type:"VariantMembership",lowerBound:0,upperBound:-1,many:!0,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Namespace/ownedMembership"],hasDerivation:!0}},operations:[]},Dependency:{name:"Dependency",abstract:!1,superTypes:["Relationship"],features:{client:{name:"client",ecoreName:"client",kind:"reference",type:"Element",lowerBound:1,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!1,volatile:!1,redefines:["Relationship/source"]},supplier:{name:"supplier",ecoreName:"supplier",kind:"reference",type:"Element",lowerBound:1,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!1,volatile:!1,redefines:["Relationship/target"]}},operations:[]},Differencing:{name:"Differencing",abstract:!1,superTypes:["Relationship"],features:{differencingType:{name:"differencingType",ecoreName:"differencingType",kind:"reference",type:"Type",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1,redefines:["Relationship/target"]},typeDifferenced:{name:"typeDifferenced",ecoreName:"typeDifferenced",kind:"reference",type:"Type",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"Type/ownedDifferencing",subsets:["Relationship/owningRelatedElement"],redefines:["Relationship/source"]}},operations:[]},Disjoining:{name:"Disjoining",abstract:!1,superTypes:["Relationship"],features:{disjoiningType:{name:"disjoiningType",ecoreName:"disjoiningType",kind:"reference",type:"Type",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1,redefines:["Relationship/target"]},owningType:{name:"owningType",ecoreName:"owningType",kind:"reference",type:"Type",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"Type/ownedDisjoining",subsets:["Relationship/owningRelatedElement","Disjoining/typeDisjoined"]},typeDisjoined:{name:"typeDisjoined",ecoreName:"typeDisjoined",kind:"reference",type:"Type",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1,redefines:["Relationship/source"]}},operations:[]},Documentation:{name:"Documentation",abstract:!1,superTypes:["Comment"],features:{documentedElement:{name:"documentedElement",ecoreName:"documentedElement",kind:"reference",type:"Element",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"Element/documentation",subsets:["Element/owner"],redefines:["AnnotatingElement/annotatedElement"]}},operations:[]},Element:{name:"Element",abstract:!0,superTypes:[],features:{aliasIds:{name:"aliasIds",ecoreName:"aliasIds",kind:"attribute",type:"EString",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!1,volatile:!1},declaredName:{name:"declaredName",ecoreName:"declaredName",kind:"attribute",type:"EString",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1},declaredShortName:{name:"declaredShortName",ecoreName:"declaredShortName",kind:"attribute",type:"EString",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1},documentation:{name:"documentation",ecoreName:"documentation",kind:"reference",type:"Documentation",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,opposite:"Documentation/documentedElement",subsets:["Element/ownedElement"],hasDerivation:!0},elementId:{name:"elementId",ecoreName:"elementId",kind:"attribute",type:"EString",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1},isImpliedIncluded:{name:"isImpliedIncluded",ecoreName:"isImpliedIncluded",kind:"attribute",type:"EBoolean",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1},isLibraryElement:{name:"isLibraryElement",ecoreName:"isLibraryElement",kind:"attribute",type:"EBoolean",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},name:{name:"name",ecoreName:"name",kind:"attribute",type:"EString",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},ownedAnnotation:{name:"ownedAnnotation",ecoreName:"ownedAnnotation",kind:"reference",type:"Annotation",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,opposite:"Annotation/owningAnnotatedElement",subsets:["Element/ownedRelationship"],hasDerivation:!0},ownedElement:{name:"ownedElement",ecoreName:"ownedElement",kind:"reference",type:"Element",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,opposite:"Element/owner",hasDerivation:!0},ownedRelationship:{name:"ownedRelationship",ecoreName:"ownedRelationship",kind:"reference",type:"Relationship",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!0,derived:!1,volatile:!1,opposite:"Relationship/owningRelatedElement"},owner:{name:"owner",ecoreName:"owner",kind:"reference",type:"Element",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"Element/ownedElement",hasDerivation:!0},owningMembership:{name:"owningMembership",ecoreName:"owningMembership",kind:"reference",type:"OwningMembership",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"OwningMembership/ownedMemberElement",subsets:["Element/owningRelationship"]},owningNamespace:{name:"owningNamespace",ecoreName:"owningNamespace",kind:"reference",type:"Namespace",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"Namespace/ownedMember",hasDerivation:!0},owningRelationship:{name:"owningRelationship",ecoreName:"owningRelationship",kind:"reference",type:"Relationship",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1,opposite:"Relationship/ownedRelatedElement"},qualifiedName:{name:"qualifiedName",ecoreName:"qualifiedName",kind:"attribute",type:"EString",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},shortName:{name:"shortName",ecoreName:"shortName",kind:"attribute",type:"EString",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},textualRepresentation:{name:"textualRepresentation",ecoreName:"textualRepresentation",kind:"reference",type:"TextualRepresentation",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,opposite:"TextualRepresentation/representedElement",subsets:["Element/ownedElement"],hasDerivation:!0}},operations:[{name:"effectiveName",type:"string",lowerBound:0,upperBound:1,parameters:[],hasBody:!0},{name:"effectiveShortName",type:"string",lowerBound:0,upperBound:1,parameters:[],hasBody:!0},{name:"escapedName",type:"string",lowerBound:0,upperBound:1,parameters:[]},{name:"libraryNamespace",type:"Namespace",lowerBound:0,upperBound:1,parameters:[],hasBody:!0},{name:"path",type:"string",lowerBound:1,upperBound:1,parameters:[],hasBody:!0}]},ElementFilterMembership:{name:"ElementFilterMembership",abstract:!1,superTypes:["OwningMembership"],features:{condition:{name:"condition",ecoreName:"condition",kind:"reference",type:"Expression",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["OwningMembership/ownedMemberElement"]}},operations:[]},EndFeatureMembership:{name:"EndFeatureMembership",abstract:!1,superTypes:["FeatureMembership"],features:{},operations:[]},EnumerationDefinition:{name:"EnumerationDefinition",abstract:!1,superTypes:["AttributeDefinition"],features:{enumeratedValue:{name:"enumeratedValue",ecoreName:"enumeratedValue",kind:"reference",type:"EnumerationUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,redefines:["Definition/variant"]}},operations:[]},EnumerationUsage:{name:"EnumerationUsage",abstract:!1,superTypes:["AttributeUsage"],features:{enumerationDefinition:{name:"enumerationDefinition",ecoreName:"enumerationDefinition",kind:"reference",type:"EnumerationDefinition",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["AttributeUsage/attributeDefinition"]}},operations:[]},EventOccurrenceUsage:{name:"EventOccurrenceUsage",abstract:!1,superTypes:["OccurrenceUsage"],features:{eventOccurrence:{name:"eventOccurrence",ecoreName:"eventOccurrence",kind:"reference",type:"OccurrenceUsage",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0}},operations:[]},ExhibitStateUsage:{name:"ExhibitStateUsage",abstract:!1,superTypes:["StateUsage","PerformActionUsage"],features:{exhibitedState:{name:"exhibitedState",ecoreName:"exhibitedState",kind:"reference",type:"StateUsage",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["PerformActionUsage/performedAction"]}},operations:[]},Expose:{name:"Expose",abstract:!0,superTypes:["Import"],features:{},operations:[]},Expression:{name:"Expression",abstract:!1,superTypes:["Step"],features:{function:{name:"function",ecoreName:"function",kind:"reference",type:"Function",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["Step/behavior"]},isModelLevelEvaluable:{name:"isModelLevelEvaluable",ecoreName:"isModelLevelEvaluable",kind:"attribute",type:"EBoolean",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},result:{name:"result",ecoreName:"result",kind:"reference",type:"Feature",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Type/output","Step/parameter"],hasDerivation:!0}},operations:[{name:"checkCondition",type:"boolean",lowerBound:1,upperBound:1,parameters:[{name:"target",type:"Element",many:!1}],hasBody:!0},{name:"evaluate",type:"Element",lowerBound:0,upperBound:-1,parameters:[{name:"target",type:"Element",many:!1}],hasBody:!0},{name:"modelLevelEvaluable",type:"boolean",lowerBound:1,upperBound:1,parameters:[{name:"visited",type:"Feature",many:!0}],hasBody:!0}]},Feature:{name:"Feature",abstract:!1,superTypes:["Type"],features:{chainingFeature:{name:"chainingFeature",ecoreName:"chainingFeature",kind:"reference",type:"Feature",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},crossFeature:{name:"crossFeature",ecoreName:"crossFeature",kind:"reference",type:"Feature",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},direction:{name:"direction",ecoreName:"direction",kind:"attribute",type:"FeatureDirectionKind",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1},endOwningType:{name:"endOwningType",ecoreName:"endOwningType",kind:"reference",type:"Type",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"Type/ownedEndFeature",subsets:["Feature/owningType"]},featureTarget:{name:"featureTarget",ecoreName:"featureTarget",kind:"reference",type:"Feature",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},featuringType:{name:"featuringType",ecoreName:"featuringType",kind:"reference",type:"Type",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},isComposite:{name:"isComposite",ecoreName:"isComposite",kind:"attribute",type:"EBoolean",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1},isConstant:{name:"isConstant",ecoreName:"isConstant",kind:"attribute",type:"EBoolean",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1},isDerived:{name:"isDerived",ecoreName:"isDerived",kind:"attribute",type:"EBoolean",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1},isEnd:{name:"isEnd",ecoreName:"isEnd",kind:"attribute",type:"EBoolean",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1},isOrdered:{name:"isOrdered",ecoreName:"isOrdered",kind:"attribute",type:"EBoolean",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1},isPortion:{name:"isPortion",ecoreName:"isPortion",kind:"attribute",type:"EBoolean",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1},isUnique:{name:"isUnique",ecoreName:"isUnique",kind:"attribute",type:"EBoolean",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1},isVariable:{name:"isVariable",ecoreName:"isVariable",kind:"attribute",type:"EBoolean",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1},ownedCrossSubsetting:{name:"ownedCrossSubsetting",ecoreName:"ownedCrossSubsetting",kind:"reference",type:"CrossSubsetting",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"CrossSubsetting/crossingFeature",subsets:["Feature/ownedSubsetting"],hasDerivation:!0},ownedFeatureChaining:{name:"ownedFeatureChaining",ecoreName:"ownedFeatureChaining",kind:"reference",type:"FeatureChaining",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,opposite:"FeatureChaining/featureChained",subsets:["Element/ownedRelationship"],hasDerivation:!0},ownedFeatureInverting:{name:"ownedFeatureInverting",ecoreName:"ownedFeatureInverting",kind:"reference",type:"FeatureInverting",lowerBound:0,upperBound:-1,many:!0,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"FeatureInverting/owningFeature",subsets:["Element/ownedRelationship"],hasDerivation:!0},ownedRedefinition:{name:"ownedRedefinition",ecoreName:"ownedRedefinition",kind:"reference",type:"Redefinition",lowerBound:0,upperBound:-1,many:!0,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Feature/ownedSubsetting"],hasDerivation:!0},ownedReferenceSubsetting:{name:"ownedReferenceSubsetting",ecoreName:"ownedReferenceSubsetting",kind:"reference",type:"ReferenceSubsetting",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"ReferenceSubsetting/referencingFeature",subsets:["Feature/ownedSubsetting"],hasDerivation:!0},ownedSubsetting:{name:"ownedSubsetting",ecoreName:"ownedSubsetting",kind:"reference",type:"Subsetting",lowerBound:0,upperBound:-1,many:!0,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"Subsetting/owningFeature",subsets:["Type/ownedSpecialization"],hasDerivation:!0},ownedTypeFeaturing:{name:"ownedTypeFeaturing",ecoreName:"ownedTypeFeaturing",kind:"reference",type:"TypeFeaturing",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,opposite:"TypeFeaturing/owningFeatureOfType",subsets:["Element/ownedRelationship"],hasDerivation:!0},ownedTyping:{name:"ownedTyping",ecoreName:"ownedTyping",kind:"reference",type:"FeatureTyping",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,opposite:"FeatureTyping/owningFeature",subsets:["Type/ownedSpecialization"],hasDerivation:!0},owningFeatureMembership:{name:"owningFeatureMembership",ecoreName:"owningFeatureMembership",kind:"reference",type:"FeatureMembership",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"FeatureMembership/ownedMemberFeature",subsets:["Element/owningMembership"]},owningType:{name:"owningType",ecoreName:"owningType",kind:"reference",type:"Type",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"Type/ownedFeature",subsets:["Element/owningNamespace","Feature/featuringType"]},type:{name:"type",ecoreName:"type",kind:"reference",type:"Type",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,hasDerivation:!0}},operations:[{name:"allRedefinedFeatures",type:"Feature",lowerBound:0,upperBound:-1,parameters:[],hasBody:!0},{name:"asCartesianProduct",type:"Type",lowerBound:0,upperBound:-1,parameters:[],hasBody:!0},{name:"canAccess",type:"boolean",lowerBound:1,upperBound:1,parameters:[{name:"feature",type:"Feature",many:!1}],hasBody:!0},{name:"directionFor",type:"FeatureDirectionKind",lowerBound:0,upperBound:1,parameters:[{name:"type",type:"Type",many:!1}],hasBody:!0},{name:"isCartesianProduct",type:"boolean",lowerBound:1,upperBound:1,parameters:[],hasBody:!0},{name:"isFeaturedWithin",type:"boolean",lowerBound:1,upperBound:1,parameters:[{name:"type",type:"Type",many:!1}],hasBody:!0},{name:"isFeaturingType",type:"boolean",lowerBound:1,upperBound:1,parameters:[{name:"type",type:"Type",many:!1}],hasBody:!0},{name:"isOwnedCrossFeature",type:"boolean",lowerBound:1,upperBound:1,parameters:[],hasBody:!0},{name:"namingFeature",type:"Feature",lowerBound:0,upperBound:1,parameters:[],hasBody:!0},{name:"ownedCrossFeature",type:"Feature",lowerBound:0,upperBound:1,parameters:[],hasBody:!0},{name:"redefines",type:"boolean",lowerBound:1,upperBound:1,parameters:[{name:"redefinedFeature",type:"Feature",many:!1}],hasBody:!0},{name:"redefinesFromLibrary",type:"boolean",lowerBound:1,upperBound:1,parameters:[{name:"libraryFeatureName",type:"string",many:!1}],hasBody:!0},{name:"subsetsChain",type:"boolean",lowerBound:1,upperBound:1,parameters:[{name:"first",type:"Feature",many:!1},{name:"second",type:"Feature",many:!1}],hasBody:!0},{name:"typingFeatures",type:"Feature",lowerBound:0,upperBound:-1,parameters:[],hasBody:!0}]},FeatureChainExpression:{name:"FeatureChainExpression",abstract:!1,superTypes:["OperatorExpression"],features:{targetFeature:{name:"targetFeature",ecoreName:"targetFeature",kind:"reference",type:"Feature",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Namespace/member"],hasDerivation:!0}},operations:[{name:"sourceTargetFeature",type:"Feature",lowerBound:0,upperBound:1,parameters:[],hasBody:!0}]},FeatureChaining:{name:"FeatureChaining",abstract:!1,superTypes:["Relationship"],features:{chainingFeature:{name:"chainingFeature",ecoreName:"chainingFeature",kind:"reference",type:"Feature",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1,redefines:["Relationship/target"]},featureChained:{name:"featureChained",ecoreName:"featureChained",kind:"reference",type:"Feature",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"Feature/ownedFeatureChaining",subsets:["Relationship/owningRelatedElement"],redefines:["Relationship/source"]}},operations:[]},FeatureInverting:{name:"FeatureInverting",abstract:!1,superTypes:["Relationship"],features:{featureInverted:{name:"featureInverted",ecoreName:"featureInverted",kind:"reference",type:"Feature",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1,redefines:["Relationship/source"]},invertingFeature:{name:"invertingFeature",ecoreName:"invertingFeature",kind:"reference",type:"Feature",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1,redefines:["Relationship/target"]},owningFeature:{name:"owningFeature",ecoreName:"owningFeature",kind:"reference",type:"Feature",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"Feature/ownedFeatureInverting",subsets:["FeatureInverting/featureInverted","Relationship/owningRelatedElement"]}},operations:[]},FeatureMembership:{name:"FeatureMembership",abstract:!1,superTypes:["OwningMembership"],features:{ownedMemberFeature:{name:"ownedMemberFeature",ecoreName:"ownedMemberFeature",kind:"reference",type:"Feature",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"Feature/owningFeatureMembership",redefines:["OwningMembership/ownedMemberElement"]},owningType:{name:"owningType",ecoreName:"owningType",kind:"reference",type:"Type",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"Type/ownedFeatureMembership",redefines:["Membership/membershipOwningNamespace"]}},operations:[]},FeatureReferenceExpression:{name:"FeatureReferenceExpression",abstract:!1,superTypes:["Expression"],features:{referent:{name:"referent",ecoreName:"referent",kind:"reference",type:"Feature",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Namespace/member"],hasDerivation:!0}},operations:[]},FeatureTyping:{name:"FeatureTyping",abstract:!1,superTypes:["Specialization"],features:{owningFeature:{name:"owningFeature",ecoreName:"owningFeature",kind:"reference",type:"Feature",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"Feature/ownedTyping",subsets:["FeatureTyping/typedFeature"],redefines:["Specialization/owningType"]},type:{name:"type",ecoreName:"type",kind:"reference",type:"Type",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1,redefines:["Specialization/general"]},typedFeature:{name:"typedFeature",ecoreName:"typedFeature",kind:"reference",type:"Feature",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1,redefines:["Specialization/specific"]}},operations:[]},FeatureValue:{name:"FeatureValue",abstract:!1,superTypes:["OwningMembership"],features:{featureWithValue:{name:"featureWithValue",ecoreName:"featureWithValue",kind:"reference",type:"Feature",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Membership/membershipOwningNamespace"]},isDefault:{name:"isDefault",ecoreName:"isDefault",kind:"attribute",type:"EBoolean",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1},isInitial:{name:"isInitial",ecoreName:"isInitial",kind:"attribute",type:"EBoolean",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1},value:{name:"value",ecoreName:"value",kind:"reference",type:"Expression",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["OwningMembership/ownedMemberElement"]}},operations:[]},Flow:{name:"Flow",abstract:!1,superTypes:["Connector","Step"],features:{flowEnd:{name:"flowEnd",ecoreName:"flowEnd",kind:"reference",type:"FlowEnd",lowerBound:0,upperBound:2,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Connector/connectorEnd"],hasDerivation:!0},interaction:{name:"interaction",ecoreName:"interaction",kind:"reference",type:"Interaction",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,redefines:["Connector/association","Step/behavior"]},payloadFeature:{name:"payloadFeature",ecoreName:"payloadFeature",kind:"reference",type:"PayloadFeature",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Type/ownedFeature"],hasDerivation:!0},payloadType:{name:"payloadType",ecoreName:"payloadType",kind:"reference",type:"Classifier",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},sourceOutputFeature:{name:"sourceOutputFeature",ecoreName:"sourceOutputFeature",kind:"reference",type:"Feature",lowerBound:0,upperBound:1,many:!1,ordered:!0,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},targetInputFeature:{name:"targetInputFeature",ecoreName:"targetInputFeature",kind:"reference",type:"Feature",lowerBound:0,upperBound:1,many:!1,ordered:!0,containment:!1,derived:!0,volatile:!0,hasDerivation:!0}},operations:[]},FlowDefinition:{name:"FlowDefinition",abstract:!1,superTypes:["ActionDefinition","Interaction"],features:{flowEnd:{name:"flowEnd",ecoreName:"flowEnd",kind:"reference",type:"Usage",lowerBound:0,upperBound:-1,many:!0,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["Association/associationEnd"]}},operations:[]},FlowEnd:{name:"FlowEnd",abstract:!1,superTypes:["Feature"],features:{},operations:[]},FlowUsage:{name:"FlowUsage",abstract:!1,superTypes:["ConnectorAsUsage","ActionUsage","Flow"],features:{flowDefinition:{name:"flowDefinition",ecoreName:"flowDefinition",kind:"reference",type:"Interaction",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,redefines:["ActionUsage/actionDefinition","Flow/interaction"]}},operations:[]},ForLoopActionUsage:{name:"ForLoopActionUsage",abstract:!1,superTypes:["LoopActionUsage"],features:{loopVariable:{name:"loopVariable",ecoreName:"loopVariable",kind:"reference",type:"ReferenceUsage",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},seqArgument:{name:"seqArgument",ecoreName:"seqArgument",kind:"reference",type:"Expression",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0}},operations:[]},ForkNode:{name:"ForkNode",abstract:!1,superTypes:["ControlNode"],features:{},operations:[]},FramedConcernMembership:{name:"FramedConcernMembership",abstract:!1,superTypes:["RequirementConstraintMembership"],features:{ownedConcern:{name:"ownedConcern",ecoreName:"ownedConcern",kind:"reference",type:"ConcernUsage",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["RequirementConstraintMembership/ownedConstraint"]},referencedConcern:{name:"referencedConcern",ecoreName:"referencedConcern",kind:"reference",type:"ConcernUsage",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["RequirementConstraintMembership/referencedConstraint"]}},operations:[]},Function:{name:"Function",abstract:!1,superTypes:["Behavior"],features:{expression:{name:"expression",ecoreName:"expression",kind:"reference",type:"Expression",lowerBound:0,upperBound:-1,many:!0,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Behavior/step"]},isModelLevelEvaluable:{name:"isModelLevelEvaluable",ecoreName:"isModelLevelEvaluable",kind:"attribute",type:"EBoolean",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0},result:{name:"result",ecoreName:"result",kind:"reference",type:"Feature",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Type/output","Behavior/parameter"],hasDerivation:!0}},operations:[]},IfActionUsage:{name:"IfActionUsage",abstract:!1,superTypes:["ActionUsage"],features:{elseAction:{name:"elseAction",ecoreName:"elseAction",kind:"reference",type:"ActionUsage",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},ifArgument:{name:"ifArgument",ecoreName:"ifArgument",kind:"reference",type:"Expression",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},thenAction:{name:"thenAction",ecoreName:"thenAction",kind:"reference",type:"ActionUsage",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0}},operations:[]},Import:{name:"Import",abstract:!0,superTypes:["Relationship"],features:{importOwningNamespace:{name:"importOwningNamespace",ecoreName:"importOwningNamespace",kind:"reference",type:"Namespace",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"Namespace/ownedImport",subsets:["Relationship/owningRelatedElement"],redefines:["Relationship/source"]},importedElement:{name:"importedElement",ecoreName:"importedElement",kind:"reference",type:"Element",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0},isImportAll:{name:"isImportAll",ecoreName:"isImportAll",kind:"attribute",type:"EBoolean",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1},isRecursive:{name:"isRecursive",ecoreName:"isRecursive",kind:"attribute",type:"EBoolean",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1},visibility:{name:"visibility",ecoreName:"visibility",kind:"attribute",type:"VisibilityKind",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1}},operations:[{name:"importedMemberships",type:"Membership",lowerBound:0,upperBound:-1,parameters:[{name:"excluded",type:"Namespace",many:!0}]}]},IncludeUseCaseUsage:{name:"IncludeUseCaseUsage",abstract:!1,superTypes:["UseCaseUsage","PerformActionUsage"],features:{useCaseIncluded:{name:"useCaseIncluded",ecoreName:"useCaseIncluded",kind:"reference",type:"UseCaseUsage",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["PerformActionUsage/performedAction"]}},operations:[]},IndexExpression:{name:"IndexExpression",abstract:!1,superTypes:["OperatorExpression"],features:{},operations:[]},InstantiationExpression:{name:"InstantiationExpression",abstract:!0,superTypes:["Expression"],features:{argument:{name:"argument",ecoreName:"argument",kind:"reference",type:"Expression",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0},instantiatedType:{name:"instantiatedType",ecoreName:"instantiatedType",kind:"reference",type:"Type",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Namespace/member"],hasDerivation:!0}},operations:[{name:"instantiatedType",type:"Type",lowerBound:0,upperBound:1,parameters:[],hasBody:!0}]},Interaction:{name:"Interaction",abstract:!1,superTypes:["Association","Behavior"],features:{},operations:[]},InterfaceDefinition:{name:"InterfaceDefinition",abstract:!1,superTypes:["ConnectionDefinition"],features:{interfaceEnd:{name:"interfaceEnd",ecoreName:"interfaceEnd",kind:"reference",type:"PortUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,redefines:["ConnectionDefinition/connectionEnd"]}},operations:[]},InterfaceUsage:{name:"InterfaceUsage",abstract:!1,superTypes:["ConnectionUsage"],features:{interfaceDefinition:{name:"interfaceDefinition",ecoreName:"interfaceDefinition",kind:"reference",type:"InterfaceDefinition",lowerBound:0,upperBound:-1,many:!0,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["ConnectionUsage/connectionDefinition"]}},operations:[]},Intersecting:{name:"Intersecting",abstract:!1,superTypes:["Relationship"],features:{intersectingType:{name:"intersectingType",ecoreName:"intersectingType",kind:"reference",type:"Type",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1,redefines:["Relationship/target"]},typeIntersected:{name:"typeIntersected",ecoreName:"typeIntersected",kind:"reference",type:"Type",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"Type/ownedIntersecting",subsets:["Relationship/owningRelatedElement"],redefines:["Relationship/source"]}},operations:[]},Invariant:{name:"Invariant",abstract:!1,superTypes:["BooleanExpression"],features:{isNegated:{name:"isNegated",ecoreName:"isNegated",kind:"attribute",type:"EBoolean",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1}},operations:[]},InvocationExpression:{name:"InvocationExpression",abstract:!1,superTypes:["InstantiationExpression"],features:{operand:{name:"operand",ecoreName:"operand",kind:"reference",type:"Expression",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!0,derived:!0,volatile:!0}},operations:[]},ItemDefinition:{name:"ItemDefinition",abstract:!1,superTypes:["OccurrenceDefinition","Structure"],features:{},operations:[]},ItemUsage:{name:"ItemUsage",abstract:!1,superTypes:["OccurrenceUsage"],features:{itemDefinition:{name:"itemDefinition",ecoreName:"itemDefinition",kind:"reference",type:"Structure",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["OccurrenceUsage/occurrenceDefinition"],hasDerivation:!0}},operations:[]},JoinNode:{name:"JoinNode",abstract:!1,superTypes:["ControlNode"],features:{},operations:[]},LibraryPackage:{name:"LibraryPackage",abstract:!1,superTypes:["Package"],features:{isStandard:{name:"isStandard",ecoreName:"isStandard",kind:"attribute",type:"EBoolean",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1}},operations:[]},LiteralBoolean:{name:"LiteralBoolean",abstract:!1,superTypes:["LiteralExpression"],features:{value:{name:"value",ecoreName:"value",kind:"attribute",type:"EBoolean",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1}},operations:[]},LiteralExpression:{name:"LiteralExpression",abstract:!1,superTypes:["Expression"],features:{},operations:[]},LiteralInfinity:{name:"LiteralInfinity",abstract:!1,superTypes:["LiteralExpression"],features:{},operations:[]},LiteralInteger:{name:"LiteralInteger",abstract:!1,superTypes:["LiteralExpression"],features:{value:{name:"value",ecoreName:"value",kind:"attribute",type:"EInt",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1}},operations:[]},LiteralRational:{name:"LiteralRational",abstract:!1,superTypes:["LiteralExpression"],features:{value:{name:"value",ecoreName:"value",kind:"attribute",type:"EDouble",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1}},operations:[]},LiteralString:{name:"LiteralString",abstract:!1,superTypes:["LiteralExpression"],features:{value:{name:"value",ecoreName:"value",kind:"attribute",type:"EString",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1}},operations:[]},LoopActionUsage:{name:"LoopActionUsage",abstract:!0,superTypes:["ActionUsage"],features:{bodyAction:{name:"bodyAction",ecoreName:"bodyAction",kind:"reference",type:"ActionUsage",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0}},operations:[]},Membership:{name:"Membership",abstract:!1,superTypes:["Relationship"],features:{memberElement:{name:"memberElement",ecoreName:"memberElement",kind:"reference",type:"Element",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1,redefines:["Relationship/target"]},memberElementId:{name:"memberElementId",ecoreName:"memberElementId",kind:"attribute",type:"EString",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},memberName:{name:"memberName",ecoreName:"memberName",kind:"attribute",type:"EString",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1},memberShortName:{name:"memberShortName",ecoreName:"memberShortName",kind:"attribute",type:"EString",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1},membershipOwningNamespace:{name:"membershipOwningNamespace",ecoreName:"membershipOwningNamespace",kind:"reference",type:"Namespace",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"Namespace/ownedMembership",subsets:["Relationship/owningRelatedElement"],redefines:["Relationship/source"]},visibility:{name:"visibility",ecoreName:"visibility",kind:"attribute",type:"VisibilityKind",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1}},operations:[{name:"isDistinguishableFrom",type:"boolean",lowerBound:1,upperBound:1,parameters:[{name:"other",type:"Membership",many:!1}],hasBody:!0}]},MembershipExpose:{name:"MembershipExpose",abstract:!1,superTypes:["MembershipImport","Expose"],features:{},operations:[]},MembershipImport:{name:"MembershipImport",abstract:!1,superTypes:["Import"],features:{importedMembership:{name:"importedMembership",ecoreName:"importedMembership",kind:"reference",type:"Membership",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1,redefines:["Relationship/target"]}},operations:[]},MergeNode:{name:"MergeNode",abstract:!1,superTypes:["ControlNode"],features:{},operations:[]},Metaclass:{name:"Metaclass",abstract:!1,superTypes:["Structure"],features:{},operations:[]},MetadataAccessExpression:{name:"MetadataAccessExpression",abstract:!1,superTypes:["Expression"],features:{referencedElement:{name:"referencedElement",ecoreName:"referencedElement",kind:"reference",type:"Element",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Namespace/member"],hasDerivation:!0}},operations:[{name:"metaclassFeature",type:"MetadataFeature",lowerBound:1,upperBound:1,parameters:[]}]},MetadataDefinition:{name:"MetadataDefinition",abstract:!1,superTypes:["ItemDefinition","Metaclass"],features:{},operations:[]},MetadataFeature:{name:"MetadataFeature",abstract:!1,superTypes:["Feature","AnnotatingElement"],features:{metaclass:{name:"metaclass",ecoreName:"metaclass",kind:"reference",type:"Metaclass",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Feature/type"],hasDerivation:!0}},operations:[{name:"evaluateFeature",type:"Element",lowerBound:0,upperBound:-1,parameters:[{name:"baseFeature",type:"Feature",many:!1}],hasBody:!0},{name:"isSemantic",type:"boolean",lowerBound:1,upperBound:1,parameters:[],hasBody:!0},{name:"isSyntactic",type:"boolean",lowerBound:1,upperBound:1,parameters:[],hasBody:!0},{name:"syntaxElement",type:"Element",lowerBound:0,upperBound:1,parameters:[]}]},MetadataUsage:{name:"MetadataUsage",abstract:!1,superTypes:["ItemUsage","MetadataFeature"],features:{metadataDefinition:{name:"metadataDefinition",ecoreName:"metadataDefinition",kind:"reference",type:"Metaclass",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["ItemUsage/itemDefinition","MetadataFeature/metaclass"]}},operations:[]},Multiplicity:{name:"Multiplicity",abstract:!1,superTypes:["Feature"],features:{},operations:[]},MultiplicityRange:{name:"MultiplicityRange",abstract:!1,superTypes:["Multiplicity"],features:{bound:{name:"bound",ecoreName:"bound",kind:"reference",type:"Expression",lowerBound:1,upperBound:2,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Namespace/ownedMember"],hasDerivation:!0},lowerBound:{name:"lowerBound",ecoreName:"lowerBound",kind:"reference",type:"Expression",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["MultiplicityRange/bound"],hasDerivation:!0},upperBound:{name:"upperBound",ecoreName:"upperBound",kind:"reference",type:"Expression",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["MultiplicityRange/bound"],hasDerivation:!0}},operations:[{name:"hasBounds",type:"boolean",lowerBound:1,upperBound:1,parameters:[{name:"lower",type:"number",many:!1},{name:"upper",type:"number",many:!1}],hasBody:!0},{name:"valueOf",type:"number",lowerBound:0,upperBound:1,parameters:[{name:"bound",type:"Expression",many:!1}],hasBody:!0}]},Namespace:{name:"Namespace",abstract:!1,superTypes:["Element"],features:{importedMembership:{name:"importedMembership",ecoreName:"importedMembership",kind:"reference",type:"Membership",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Namespace/membership"],hasDerivation:!0},member:{name:"member",ecoreName:"member",kind:"reference",type:"Element",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},membership:{name:"membership",ecoreName:"membership",kind:"reference",type:"Membership",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,union:!0},ownedImport:{name:"ownedImport",ecoreName:"ownedImport",kind:"reference",type:"Import",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,opposite:"Import/importOwningNamespace",subsets:["Element/ownedRelationship"],hasDerivation:!0},ownedMember:{name:"ownedMember",ecoreName:"ownedMember",kind:"reference",type:"Element",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,opposite:"Element/owningNamespace",subsets:["Namespace/member"],hasDerivation:!0},ownedMembership:{name:"ownedMembership",ecoreName:"ownedMembership",kind:"reference",type:"Membership",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,opposite:"Membership/membershipOwningNamespace",subsets:["Namespace/membership","Element/ownedRelationship"],hasDerivation:!0}},operations:[{name:"importedMemberships",type:"Membership",lowerBound:0,upperBound:-1,parameters:[{name:"excluded",type:"Namespace",many:!0}],hasBody:!0},{name:"membershipsOfVisibility",type:"Membership",lowerBound:0,upperBound:-1,parameters:[{name:"visibility",type:"VisibilityKind",many:!1},{name:"excluded",type:"Namespace",many:!0}],hasBody:!0},{name:"namesOf",type:"string",lowerBound:0,upperBound:-1,parameters:[{name:"element",type:"Element",many:!1}],hasBody:!0},{name:"qualificationOf",type:"string",lowerBound:0,upperBound:1,parameters:[{name:"qualifiedName",type:"string",many:!1}]},{name:"resolve",type:"Membership",lowerBound:0,upperBound:1,parameters:[{name:"qualifiedName",type:"string",many:!1}],hasBody:!0},{name:"resolveGlobal",type:"Membership",lowerBound:0,upperBound:1,parameters:[{name:"qualifiedName",type:"string",many:!1}]},{name:"resolveLocal",type:"Membership",lowerBound:0,upperBound:1,parameters:[{name:"name",type:"string",many:!1}],hasBody:!0},{name:"resolveVisible",type:"Membership",lowerBound:0,upperBound:1,parameters:[{name:"name",type:"string",many:!1}],hasBody:!0},{name:"unqualifiedNameOf",type:"string",lowerBound:1,upperBound:1,parameters:[{name:"qualifiedName",type:"string",many:!1}]},{name:"visibilityOf",type:"VisibilityKind",lowerBound:1,upperBound:1,parameters:[{name:"mem",type:"Membership",many:!1}],hasBody:!0},{name:"visibleMemberships",type:"Membership",lowerBound:0,upperBound:-1,parameters:[{name:"excluded",type:"Namespace",many:!0},{name:"isRecursive",type:"boolean",many:!1},{name:"includeAll",type:"boolean",many:!1}],hasBody:!0}]},NamespaceExpose:{name:"NamespaceExpose",abstract:!1,superTypes:["NamespaceImport","Expose"],features:{},operations:[]},NamespaceImport:{name:"NamespaceImport",abstract:!1,superTypes:["Import"],features:{importedNamespace:{name:"importedNamespace",ecoreName:"importedNamespace",kind:"reference",type:"Namespace",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1,redefines:["Relationship/target"]}},operations:[]},NullExpression:{name:"NullExpression",abstract:!1,superTypes:["Expression"],features:{},operations:[]},ObjectiveMembership:{name:"ObjectiveMembership",abstract:!1,superTypes:["FeatureMembership"],features:{ownedObjectiveRequirement:{name:"ownedObjectiveRequirement",ecoreName:"ownedObjectiveRequirement",kind:"reference",type:"RequirementUsage",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["FeatureMembership/ownedMemberFeature"]}},operations:[]},OccurrenceDefinition:{name:"OccurrenceDefinition",abstract:!1,superTypes:["Definition","Class"],features:{isIndividual:{name:"isIndividual",ecoreName:"isIndividual",kind:"attribute",type:"EBoolean",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1}},operations:[]},OccurrenceUsage:{name:"OccurrenceUsage",abstract:!1,superTypes:["Usage"],features:{individualDefinition:{name:"individualDefinition",ecoreName:"individualDefinition",kind:"reference",type:"OccurrenceDefinition",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["OccurrenceUsage/occurrenceDefinition"],hasDerivation:!0},isIndividual:{name:"isIndividual",ecoreName:"isIndividual",kind:"attribute",type:"EBoolean",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1},occurrenceDefinition:{name:"occurrenceDefinition",ecoreName:"occurrenceDefinition",kind:"reference",type:"Class",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,redefines:["Usage/definition"]},portionKind:{name:"portionKind",ecoreName:"portionKind",kind:"attribute",type:"PortionKind",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1}},operations:[]},OperatorExpression:{name:"OperatorExpression",abstract:!1,superTypes:["InvocationExpression"],features:{operator:{name:"operator",ecoreName:"operator",kind:"attribute",type:"EString",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1}},operations:[]},OwningMembership:{name:"OwningMembership",abstract:!1,superTypes:["Membership"],features:{ownedMemberElement:{name:"ownedMemberElement",ecoreName:"ownedMemberElement",kind:"reference",type:"Element",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"Element/owningMembership",subsets:["Relationship/ownedRelatedElement"],redefines:["Membership/memberElement"]},ownedMemberElementId:{name:"ownedMemberElementId",ecoreName:"ownedMemberElementId",kind:"attribute",type:"EString",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["Membership/memberElementId"]},ownedMemberName:{name:"ownedMemberName",ecoreName:"ownedMemberName",kind:"attribute",type:"EString",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["Membership/memberName"],hasDerivation:!0},ownedMemberShortName:{name:"ownedMemberShortName",ecoreName:"ownedMemberShortName",kind:"attribute",type:"EString",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["Membership/memberShortName"],hasDerivation:!0}},operations:[]},Package:{name:"Package",abstract:!1,superTypes:["Namespace"],features:{filterCondition:{name:"filterCondition",ecoreName:"filterCondition",kind:"reference",type:"Expression",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Namespace/ownedMember"],hasDerivation:!0}},operations:[{name:"includeAsMember",type:"boolean",lowerBound:1,upperBound:1,parameters:[{name:"element",type:"Element",many:!1}],hasBody:!0}]},ParameterMembership:{name:"ParameterMembership",abstract:!1,superTypes:["FeatureMembership"],features:{ownedMemberParameter:{name:"ownedMemberParameter",ecoreName:"ownedMemberParameter",kind:"reference",type:"Feature",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["FeatureMembership/ownedMemberFeature"]}},operations:[{name:"parameterDirection",type:"FeatureDirectionKind",lowerBound:1,upperBound:1,parameters:[],hasBody:!0}]},PartDefinition:{name:"PartDefinition",abstract:!1,superTypes:["ItemDefinition"],features:{},operations:[]},PartUsage:{name:"PartUsage",abstract:!1,superTypes:["ItemUsage"],features:{partDefinition:{name:"partDefinition",ecoreName:"partDefinition",kind:"reference",type:"PartDefinition",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["ItemUsage/itemDefinition"]}},operations:[]},PayloadFeature:{name:"PayloadFeature",abstract:!1,superTypes:["Feature"],features:{},operations:[]},PerformActionUsage:{name:"PerformActionUsage",abstract:!1,superTypes:["ActionUsage","EventOccurrenceUsage"],features:{performedAction:{name:"performedAction",ecoreName:"performedAction",kind:"reference",type:"ActionUsage",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["EventOccurrenceUsage/eventOccurrence"]}},operations:[]},PortConjugation:{name:"PortConjugation",abstract:!1,superTypes:["Conjugation"],features:{conjugatedPortDefinition:{name:"conjugatedPortDefinition",ecoreName:"conjugatedPortDefinition",kind:"reference",type:"ConjugatedPortDefinition",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"ConjugatedPortDefinition/ownedPortConjugator",redefines:["Conjugation/owningType"]},originalPortDefinition:{name:"originalPortDefinition",ecoreName:"originalPortDefinition",kind:"reference",type:"PortDefinition",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1,redefines:["Conjugation/originalType"]}},operations:[]},PortDefinition:{name:"PortDefinition",abstract:!1,superTypes:["OccurrenceDefinition","Structure"],features:{conjugatedPortDefinition:{name:"conjugatedPortDefinition",ecoreName:"conjugatedPortDefinition",kind:"reference",type:"ConjugatedPortDefinition",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"ConjugatedPortDefinition/originalPortDefinition",subsets:["Namespace/ownedMember"],hasDerivation:!0}},operations:[]},PortUsage:{name:"PortUsage",abstract:!1,superTypes:["OccurrenceUsage"],features:{portDefinition:{name:"portDefinition",ecoreName:"portDefinition",kind:"reference",type:"PortDefinition",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,redefines:["OccurrenceUsage/occurrenceDefinition"]}},operations:[]},Predicate:{name:"Predicate",abstract:!1,superTypes:["Function"],features:{},operations:[]},Redefinition:{name:"Redefinition",abstract:!1,superTypes:["Subsetting"],features:{redefinedFeature:{name:"redefinedFeature",ecoreName:"redefinedFeature",kind:"reference",type:"Feature",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1,redefines:["Subsetting/subsettedFeature"]},redefiningFeature:{name:"redefiningFeature",ecoreName:"redefiningFeature",kind:"reference",type:"Feature",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1,redefines:["Subsetting/subsettingFeature"]}},operations:[]},ReferenceSubsetting:{name:"ReferenceSubsetting",abstract:!1,superTypes:["Subsetting"],features:{referencedFeature:{name:"referencedFeature",ecoreName:"referencedFeature",kind:"reference",type:"Feature",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1,redefines:["Subsetting/subsettedFeature"]},referencingFeature:{name:"referencingFeature",ecoreName:"referencingFeature",kind:"reference",type:"Feature",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"Feature/ownedReferenceSubsetting",redefines:["Subsetting/owningFeature","Subsetting/subsettingFeature"]}},operations:[]},ReferenceUsage:{name:"ReferenceUsage",abstract:!1,superTypes:["Usage"],features:{},operations:[]},Relationship:{name:"Relationship",abstract:!0,superTypes:["Element"],features:{isImplied:{name:"isImplied",ecoreName:"isImplied",kind:"attribute",type:"EBoolean",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1},ownedRelatedElement:{name:"ownedRelatedElement",ecoreName:"ownedRelatedElement",kind:"reference",type:"Element",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!0,derived:!1,volatile:!1,opposite:"Element/owningRelationship",subsets:["Relationship/relatedElement"]},owningRelatedElement:{name:"owningRelatedElement",ecoreName:"owningRelatedElement",kind:"reference",type:"Element",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1,opposite:"Element/ownedRelationship",subsets:["Relationship/relatedElement"]},relatedElement:{name:"relatedElement",ecoreName:"relatedElement",kind:"reference",type:"Element",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},source:{name:"source",ecoreName:"source",kind:"reference",type:"Element",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!1,volatile:!1,subsets:["Relationship/relatedElement"]},target:{name:"target",ecoreName:"target",kind:"reference",type:"Element",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!1,volatile:!1,subsets:["Relationship/relatedElement"]}},operations:[]},RenderingDefinition:{name:"RenderingDefinition",abstract:!1,superTypes:["PartDefinition"],features:{rendering:{name:"rendering",ecoreName:"rendering",kind:"reference",type:"RenderingUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Definition/usage"],hasDerivation:!0}},operations:[]},RenderingUsage:{name:"RenderingUsage",abstract:!1,superTypes:["PartUsage"],features:{renderingDefinition:{name:"renderingDefinition",ecoreName:"renderingDefinition",kind:"reference",type:"RenderingDefinition",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["PartUsage/partDefinition"]}},operations:[]},RequirementConstraintMembership:{name:"RequirementConstraintMembership",abstract:!1,superTypes:["FeatureMembership"],features:{kind:{name:"kind",ecoreName:"kind",kind:"attribute",type:"RequirementConstraintKind",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1},ownedConstraint:{name:"ownedConstraint",ecoreName:"ownedConstraint",kind:"reference",type:"ConstraintUsage",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["FeatureMembership/ownedMemberFeature"]},referencedConstraint:{name:"referencedConstraint",ecoreName:"referencedConstraint",kind:"reference",type:"ConstraintUsage",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0}},operations:[]},RequirementDefinition:{name:"RequirementDefinition",abstract:!1,superTypes:["ConstraintDefinition"],features:{actorParameter:{name:"actorParameter",ecoreName:"actorParameter",kind:"reference",type:"PartUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Behavior/parameter","Definition/usage"],hasDerivation:!0},assumedConstraint:{name:"assumedConstraint",ecoreName:"assumedConstraint",kind:"reference",type:"ConstraintUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Type/ownedFeature"],hasDerivation:!0},framedConcern:{name:"framedConcern",ecoreName:"framedConcern",kind:"reference",type:"ConcernUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["RequirementDefinition/requiredConstraint"],hasDerivation:!0},reqId:{name:"reqId",ecoreName:"reqId",kind:"attribute",type:"EString",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1,redefines:["Element/declaredShortName"]},requiredConstraint:{name:"requiredConstraint",ecoreName:"requiredConstraint",kind:"reference",type:"ConstraintUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Type/ownedFeature"],hasDerivation:!0},stakeholderParameter:{name:"stakeholderParameter",ecoreName:"stakeholderParameter",kind:"reference",type:"PartUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Behavior/parameter","Definition/usage"],hasDerivation:!0},subjectParameter:{name:"subjectParameter",ecoreName:"subjectParameter",kind:"reference",type:"Usage",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Behavior/parameter","Definition/usage"],hasDerivation:!0},text:{name:"text",ecoreName:"text",kind:"attribute",type:"EString",lowerBound:0,upperBound:-1,many:!0,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0}},operations:[]},RequirementUsage:{name:"RequirementUsage",abstract:!1,superTypes:["ConstraintUsage"],features:{actorParameter:{name:"actorParameter",ecoreName:"actorParameter",kind:"reference",type:"PartUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Step/parameter","Usage/usage"],hasDerivation:!0},assumedConstraint:{name:"assumedConstraint",ecoreName:"assumedConstraint",kind:"reference",type:"ConstraintUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Type/ownedFeature"],hasDerivation:!0},framedConcern:{name:"framedConcern",ecoreName:"framedConcern",kind:"reference",type:"ConcernUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["RequirementUsage/requiredConstraint"],hasDerivation:!0},reqId:{name:"reqId",ecoreName:"reqId",kind:"attribute",type:"EString",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1,redefines:["Element/declaredShortName"]},requiredConstraint:{name:"requiredConstraint",ecoreName:"requiredConstraint",kind:"reference",type:"ConstraintUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Type/ownedFeature"],hasDerivation:!0},requirementDefinition:{name:"requirementDefinition",ecoreName:"requirementDefinition",kind:"reference",type:"RequirementDefinition",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["ConstraintUsage/constraintDefinition"]},stakeholderParameter:{name:"stakeholderParameter",ecoreName:"stakeholderParameter",kind:"reference",type:"PartUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Step/parameter","Usage/usage"],hasDerivation:!0},subjectParameter:{name:"subjectParameter",ecoreName:"subjectParameter",kind:"reference",type:"Usage",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Step/parameter","Usage/usage"],hasDerivation:!0},text:{name:"text",ecoreName:"text",kind:"attribute",type:"EString",lowerBound:0,upperBound:-1,many:!0,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0}},operations:[]},RequirementVerificationMembership:{name:"RequirementVerificationMembership",abstract:!1,superTypes:["RequirementConstraintMembership"],features:{ownedRequirement:{name:"ownedRequirement",ecoreName:"ownedRequirement",kind:"reference",type:"RequirementUsage",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["RequirementConstraintMembership/ownedConstraint"]},verifiedRequirement:{name:"verifiedRequirement",ecoreName:"verifiedRequirement",kind:"reference",type:"RequirementUsage",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["RequirementConstraintMembership/referencedConstraint"]}},operations:[]},ResultExpressionMembership:{name:"ResultExpressionMembership",abstract:!1,superTypes:["FeatureMembership"],features:{ownedResultExpression:{name:"ownedResultExpression",ecoreName:"ownedResultExpression",kind:"reference",type:"Expression",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["FeatureMembership/ownedMemberFeature"]}},operations:[]},ReturnParameterMembership:{name:"ReturnParameterMembership",abstract:!1,superTypes:["ParameterMembership"],features:{},operations:[]},SatisfyRequirementUsage:{name:"SatisfyRequirementUsage",abstract:!1,superTypes:["RequirementUsage","AssertConstraintUsage"],features:{satisfiedRequirement:{name:"satisfiedRequirement",ecoreName:"satisfiedRequirement",kind:"reference",type:"RequirementUsage",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["AssertConstraintUsage/assertedConstraint"]},satisfyingFeature:{name:"satisfyingFeature",ecoreName:"satisfyingFeature",kind:"reference",type:"Feature",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0}},operations:[]},SelectExpression:{name:"SelectExpression",abstract:!1,superTypes:["OperatorExpression"],features:{},operations:[]},SendActionUsage:{name:"SendActionUsage",abstract:!1,superTypes:["ActionUsage"],features:{payloadArgument:{name:"payloadArgument",ecoreName:"payloadArgument",kind:"reference",type:"Expression",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},receiverArgument:{name:"receiverArgument",ecoreName:"receiverArgument",kind:"reference",type:"Expression",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},senderArgument:{name:"senderArgument",ecoreName:"senderArgument",kind:"reference",type:"Expression",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0}},operations:[]},Specialization:{name:"Specialization",abstract:!1,superTypes:["Relationship"],features:{general:{name:"general",ecoreName:"general",kind:"reference",type:"Type",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1,redefines:["Relationship/target"]},owningType:{name:"owningType",ecoreName:"owningType",kind:"reference",type:"Type",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"Type/ownedSpecialization",subsets:["Relationship/owningRelatedElement","Specialization/specific"]},specific:{name:"specific",ecoreName:"specific",kind:"reference",type:"Type",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1,redefines:["Relationship/source"]}},operations:[]},StakeholderMembership:{name:"StakeholderMembership",abstract:!1,superTypes:["ParameterMembership"],features:{ownedStakeholderParameter:{name:"ownedStakeholderParameter",ecoreName:"ownedStakeholderParameter",kind:"reference",type:"PartUsage",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["ParameterMembership/ownedMemberParameter"]}},operations:[]},StateDefinition:{name:"StateDefinition",abstract:!1,superTypes:["ActionDefinition"],features:{doAction:{name:"doAction",ecoreName:"doAction",kind:"reference",type:"ActionUsage",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},entryAction:{name:"entryAction",ecoreName:"entryAction",kind:"reference",type:"ActionUsage",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},exitAction:{name:"exitAction",ecoreName:"exitAction",kind:"reference",type:"ActionUsage",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},isParallel:{name:"isParallel",ecoreName:"isParallel",kind:"attribute",type:"EBoolean",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1},state:{name:"state",ecoreName:"state",kind:"reference",type:"StateUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["ActionDefinition/action"],hasDerivation:!0}},operations:[]},StateSubactionMembership:{name:"StateSubactionMembership",abstract:!1,superTypes:["FeatureMembership"],features:{action:{name:"action",ecoreName:"action",kind:"reference",type:"ActionUsage",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["FeatureMembership/ownedMemberFeature"]},kind:{name:"kind",ecoreName:"kind",kind:"attribute",type:"StateSubactionKind",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1}},operations:[]},StateUsage:{name:"StateUsage",abstract:!1,superTypes:["ActionUsage"],features:{doAction:{name:"doAction",ecoreName:"doAction",kind:"reference",type:"ActionUsage",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},entryAction:{name:"entryAction",ecoreName:"entryAction",kind:"reference",type:"ActionUsage",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},exitAction:{name:"exitAction",ecoreName:"exitAction",kind:"reference",type:"ActionUsage",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},isParallel:{name:"isParallel",ecoreName:"isParallel",kind:"attribute",type:"EBoolean",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1},stateDefinition:{name:"stateDefinition",ecoreName:"stateDefinition",kind:"reference",type:"Behavior",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,redefines:["ActionUsage/actionDefinition"]}},operations:[{name:"isSubstateUsage",type:"boolean",lowerBound:1,upperBound:1,parameters:[{name:"isParallel",type:"boolean",many:!1}],hasBody:!0}]},Step:{name:"Step",abstract:!1,superTypes:["Feature"],features:{behavior:{name:"behavior",ecoreName:"behavior",kind:"reference",type:"Behavior",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Feature/type"],hasDerivation:!0},parameter:{name:"parameter",ecoreName:"parameter",kind:"reference",type:"Feature",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,redefines:["Type/directedFeature"]}},operations:[]},Structure:{name:"Structure",abstract:!1,superTypes:["Class"],features:{},operations:[]},Subclassification:{name:"Subclassification",abstract:!1,superTypes:["Specialization"],features:{owningClassifier:{name:"owningClassifier",ecoreName:"owningClassifier",kind:"reference",type:"Classifier",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"Classifier/ownedSubclassification",redefines:["Specialization/owningType"]},subclassifier:{name:"subclassifier",ecoreName:"subclassifier",kind:"reference",type:"Classifier",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1,redefines:["Specialization/specific"]},superclassifier:{name:"superclassifier",ecoreName:"superclassifier",kind:"reference",type:"Classifier",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1,redefines:["Specialization/general"]}},operations:[]},SubjectMembership:{name:"SubjectMembership",abstract:!1,superTypes:["ParameterMembership"],features:{ownedSubjectParameter:{name:"ownedSubjectParameter",ecoreName:"ownedSubjectParameter",kind:"reference",type:"Usage",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["ParameterMembership/ownedMemberParameter"]}},operations:[]},Subsetting:{name:"Subsetting",abstract:!1,superTypes:["Specialization"],features:{owningFeature:{name:"owningFeature",ecoreName:"owningFeature",kind:"reference",type:"Feature",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"Feature/ownedSubsetting",subsets:["Subsetting/subsettingFeature"],redefines:["Specialization/owningType"]},subsettedFeature:{name:"subsettedFeature",ecoreName:"subsettedFeature",kind:"reference",type:"Feature",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1,redefines:["Specialization/general"]},subsettingFeature:{name:"subsettingFeature",ecoreName:"subsettingFeature",kind:"reference",type:"Feature",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1,redefines:["Specialization/specific"]}},operations:[]},Succession:{name:"Succession",abstract:!1,superTypes:["Connector"],features:{},operations:[]},SuccessionAsUsage:{name:"SuccessionAsUsage",abstract:!1,superTypes:["ConnectorAsUsage","Succession"],features:{},operations:[]},SuccessionFlow:{name:"SuccessionFlow",abstract:!1,superTypes:["Flow","Succession"],features:{},operations:[]},SuccessionFlowUsage:{name:"SuccessionFlowUsage",abstract:!1,superTypes:["FlowUsage","SuccessionFlow"],features:{},operations:[]},TerminateActionUsage:{name:"TerminateActionUsage",abstract:!1,superTypes:["ActionUsage"],features:{terminatedOccurrenceArgument:{name:"terminatedOccurrenceArgument",ecoreName:"terminatedOccurrenceArgument",kind:"reference",type:"Expression",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0}},operations:[]},TextualRepresentation:{name:"TextualRepresentation",abstract:!1,superTypes:["AnnotatingElement"],features:{body:{name:"body",ecoreName:"body",kind:"attribute",type:"EString",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1},language:{name:"language",ecoreName:"language",kind:"attribute",type:"EString",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1},representedElement:{name:"representedElement",ecoreName:"representedElement",kind:"reference",type:"Element",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"Element/textualRepresentation",subsets:["Element/owner"],redefines:["AnnotatingElement/annotatedElement"]}},operations:[]},TransitionFeatureMembership:{name:"TransitionFeatureMembership",abstract:!1,superTypes:["FeatureMembership"],features:{kind:{name:"kind",ecoreName:"kind",kind:"attribute",type:"TransitionFeatureKind",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1},transitionFeature:{name:"transitionFeature",ecoreName:"transitionFeature",kind:"reference",type:"Step",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["FeatureMembership/ownedMemberFeature"]}},operations:[]},TransitionUsage:{name:"TransitionUsage",abstract:!1,superTypes:["ActionUsage"],features:{effectAction:{name:"effectAction",ecoreName:"effectAction",kind:"reference",type:"ActionUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Type/feature"]},guardExpression:{name:"guardExpression",ecoreName:"guardExpression",kind:"reference",type:"Expression",lowerBound:0,upperBound:-1,many:!0,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Type/ownedFeature"],hasDerivation:!0},source:{name:"source",ecoreName:"source",kind:"reference",type:"ActionUsage",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},succession:{name:"succession",ecoreName:"succession",kind:"reference",type:"Succession",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Namespace/ownedMember"],hasDerivation:!0},target:{name:"target",ecoreName:"target",kind:"reference",type:"ActionUsage",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},triggerAction:{name:"triggerAction",ecoreName:"triggerAction",kind:"reference",type:"AcceptActionUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Type/ownedFeature"],hasDerivation:!0}},operations:[{name:"sourceFeature",type:"Feature",lowerBound:0,upperBound:1,parameters:[],hasBody:!0},{name:"triggerPayloadParameter",type:"ReferenceUsage",lowerBound:0,upperBound:1,parameters:[],hasBody:!0}]},TriggerInvocationExpression:{name:"TriggerInvocationExpression",abstract:!1,superTypes:["InvocationExpression"],features:{kind:{name:"kind",ecoreName:"kind",kind:"attribute",type:"TriggerKind",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1}},operations:[]},Type:{name:"Type",abstract:!1,superTypes:["Namespace"],features:{differencingType:{name:"differencingType",ecoreName:"differencingType",kind:"reference",type:"Type",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},directedFeature:{name:"directedFeature",ecoreName:"directedFeature",kind:"reference",type:"Feature",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Type/feature"],hasDerivation:!0},endFeature:{name:"endFeature",ecoreName:"endFeature",kind:"reference",type:"Feature",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Type/feature"],hasDerivation:!0},feature:{name:"feature",ecoreName:"feature",kind:"reference",type:"Feature",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Namespace/member"],hasDerivation:!0},featureMembership:{name:"featureMembership",ecoreName:"featureMembership",kind:"reference",type:"FeatureMembership",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},inheritedFeature:{name:"inheritedFeature",ecoreName:"inheritedFeature",kind:"reference",type:"Feature",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Type/feature"],hasDerivation:!0},inheritedMembership:{name:"inheritedMembership",ecoreName:"inheritedMembership",kind:"reference",type:"Membership",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Namespace/membership"],hasDerivation:!0},input:{name:"input",ecoreName:"input",kind:"reference",type:"Feature",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Type/directedFeature"],hasDerivation:!0},intersectingType:{name:"intersectingType",ecoreName:"intersectingType",kind:"reference",type:"Type",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},isAbstract:{name:"isAbstract",ecoreName:"isAbstract",kind:"attribute",type:"EBoolean",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1},isConjugated:{name:"isConjugated",ecoreName:"isConjugated",kind:"attribute",type:"EBoolean",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0},isSufficient:{name:"isSufficient",ecoreName:"isSufficient",kind:"attribute",type:"EBoolean",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1},multiplicity:{name:"multiplicity",ecoreName:"multiplicity",kind:"reference",type:"Multiplicity",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Namespace/ownedMember"],hasDerivation:!0},output:{name:"output",ecoreName:"output",kind:"reference",type:"Feature",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Type/directedFeature"],hasDerivation:!0},ownedConjugator:{name:"ownedConjugator",ecoreName:"ownedConjugator",kind:"reference",type:"Conjugation",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"Conjugation/owningType",subsets:["Element/ownedRelationship"],hasDerivation:!0},ownedDifferencing:{name:"ownedDifferencing",ecoreName:"ownedDifferencing",kind:"reference",type:"Differencing",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,opposite:"Differencing/typeDifferenced",subsets:["Element/ownedRelationship"],hasDerivation:!0},ownedDisjoining:{name:"ownedDisjoining",ecoreName:"ownedDisjoining",kind:"reference",type:"Disjoining",lowerBound:0,upperBound:-1,many:!0,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"Disjoining/owningType",subsets:["Element/ownedRelationship"],hasDerivation:!0},ownedEndFeature:{name:"ownedEndFeature",ecoreName:"ownedEndFeature",kind:"reference",type:"Feature",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,opposite:"Feature/endOwningType",subsets:["Type/endFeature","Type/ownedFeature"],hasDerivation:!0},ownedFeature:{name:"ownedFeature",ecoreName:"ownedFeature",kind:"reference",type:"Feature",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,opposite:"Feature/owningType",subsets:["Namespace/ownedMember"],hasDerivation:!0},ownedFeatureMembership:{name:"ownedFeatureMembership",ecoreName:"ownedFeatureMembership",kind:"reference",type:"FeatureMembership",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,opposite:"FeatureMembership/owningType",subsets:["Namespace/ownedMembership","Type/featureMembership"],hasDerivation:!0},ownedIntersecting:{name:"ownedIntersecting",ecoreName:"ownedIntersecting",kind:"reference",type:"Intersecting",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,opposite:"Intersecting/typeIntersected",subsets:["Element/ownedRelationship"]},ownedSpecialization:{name:"ownedSpecialization",ecoreName:"ownedSpecialization",kind:"reference",type:"Specialization",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,opposite:"Specialization/owningType",subsets:["Element/ownedRelationship"],hasDerivation:!0},ownedUnioning:{name:"ownedUnioning",ecoreName:"ownedUnioning",kind:"reference",type:"Unioning",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,opposite:"Unioning/typeUnioned",subsets:["Element/ownedRelationship"],hasDerivation:!0},unioningType:{name:"unioningType",ecoreName:"unioningType",kind:"reference",type:"Type",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,hasDerivation:!0}},operations:[{name:"allRedefinedFeaturesOf",type:"Feature",lowerBound:0,upperBound:-1,parameters:[{name:"membership",type:"Membership",many:!1}],hasBody:!0},{name:"allSupertypes",type:"Type",lowerBound:0,upperBound:-1,parameters:[],hasBody:!0},{name:"directionOf",type:"FeatureDirectionKind",lowerBound:0,upperBound:1,parameters:[{name:"feature",type:"Feature",many:!1}],hasBody:!0},{name:"directionOfExcluding",type:"FeatureDirectionKind",lowerBound:0,upperBound:1,parameters:[{name:"feature",type:"Feature",many:!1},{name:"excluded",type:"Type",many:!0}],hasBody:!0},{name:"inheritableMemberships",type:"Membership",lowerBound:0,upperBound:-1,parameters:[{name:"excludedNamespaces",type:"Namespace",many:!0},{name:"excludedTypes",type:"Type",many:!0},{name:"excludeImplied",type:"boolean",many:!1}],hasBody:!0},{name:"inheritedMemberships",type:"Membership",lowerBound:0,upperBound:-1,parameters:[{name:"excludedNamespaces",type:"Namespace",many:!0},{name:"excludedTypes",type:"Type",many:!0},{name:"excludeImplied",type:"boolean",many:!1}],hasBody:!0},{name:"isCompatibleWith",type:"boolean",lowerBound:1,upperBound:1,parameters:[{name:"otherType",type:"Type",many:!1}],hasBody:!0},{name:"multiplicities",type:"Multiplicity",lowerBound:0,upperBound:-1,parameters:[],hasBody:!0},{name:"nonPrivateMemberships",type:"Membership",lowerBound:0,upperBound:-1,parameters:[{name:"excludedNamespaces",type:"Namespace",many:!0},{name:"excludedTypes",type:"Type",many:!0},{name:"excludeImplied",type:"boolean",many:!1}],hasBody:!0},{name:"removeRedefinedFeatures",type:"Membership",lowerBound:0,upperBound:-1,parameters:[{name:"memberships",type:"Membership",many:!0}],hasBody:!0},{name:"specializes",type:"boolean",lowerBound:1,upperBound:1,parameters:[{name:"supertype",type:"Type",many:!1}],hasBody:!0},{name:"specializesFromLibrary",type:"boolean",lowerBound:1,upperBound:1,parameters:[{name:"libraryTypeName",type:"string",many:!1}],hasBody:!0},{name:"supertypes",type:"Type",lowerBound:0,upperBound:-1,parameters:[{name:"excludeImplied",type:"boolean",many:!1}],hasBody:!0}]},TypeFeaturing:{name:"TypeFeaturing",abstract:!1,superTypes:["Relationship"],features:{featureOfType:{name:"featureOfType",ecoreName:"featureOfType",kind:"reference",type:"Feature",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1,redefines:["Relationship/source"]},featuringType:{name:"featuringType",ecoreName:"featuringType",kind:"reference",type:"Type",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1,redefines:["Relationship/target"]},owningFeatureOfType:{name:"owningFeatureOfType",ecoreName:"owningFeatureOfType",kind:"reference",type:"Feature",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"Feature/ownedTypeFeaturing",subsets:["Relationship/owningRelatedElement","TypeFeaturing/featureOfType"]}},operations:[]},Unioning:{name:"Unioning",abstract:!1,superTypes:["Relationship"],features:{typeUnioned:{name:"typeUnioned",ecoreName:"typeUnioned",kind:"reference",type:"Type",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"Type/ownedUnioning",subsets:["Relationship/owningRelatedElement"],redefines:["Relationship/source"]},unioningType:{name:"unioningType",ecoreName:"unioningType",kind:"reference",type:"Type",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1,redefines:["Relationship/target"]}},operations:[]},Usage:{name:"Usage",abstract:!1,superTypes:["Feature"],features:{definition:{name:"definition",ecoreName:"definition",kind:"reference",type:"Classifier",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,redefines:["Feature/type"]},directedUsage:{name:"directedUsage",ecoreName:"directedUsage",kind:"reference",type:"Usage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Type/directedFeature","Usage/usage"],hasDerivation:!0},isReference:{name:"isReference",ecoreName:"isReference",kind:"attribute",type:"EBoolean",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},isVariation:{name:"isVariation",ecoreName:"isVariation",kind:"attribute",type:"EBoolean",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!1,volatile:!1},mayTimeVary:{name:"mayTimeVary",ecoreName:"mayTimeVary",kind:"attribute",type:"EBoolean",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["Feature/isVariable"],hasDerivation:!0},nestedAction:{name:"nestedAction",ecoreName:"nestedAction",kind:"reference",type:"ActionUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Usage/nestedOccurrence"],hasDerivation:!0},nestedAllocation:{name:"nestedAllocation",ecoreName:"nestedAllocation",kind:"reference",type:"AllocationUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Usage/nestedConnection"],hasDerivation:!0},nestedAnalysisCase:{name:"nestedAnalysisCase",ecoreName:"nestedAnalysisCase",kind:"reference",type:"AnalysisCaseUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Usage/nestedCase"],hasDerivation:!0},nestedAttribute:{name:"nestedAttribute",ecoreName:"nestedAttribute",kind:"reference",type:"AttributeUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Usage/nestedUsage"],hasDerivation:!0},nestedCalculation:{name:"nestedCalculation",ecoreName:"nestedCalculation",kind:"reference",type:"CalculationUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Usage/nestedAction"],hasDerivation:!0},nestedCase:{name:"nestedCase",ecoreName:"nestedCase",kind:"reference",type:"CaseUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Usage/nestedCalculation"],hasDerivation:!0},nestedConcern:{name:"nestedConcern",ecoreName:"nestedConcern",kind:"reference",type:"ConcernUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Usage/nestedRequirement"],hasDerivation:!0},nestedConnection:{name:"nestedConnection",ecoreName:"nestedConnection",kind:"reference",type:"ConnectorAsUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Usage/nestedUsage"],hasDerivation:!0},nestedConstraint:{name:"nestedConstraint",ecoreName:"nestedConstraint",kind:"reference",type:"ConstraintUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Usage/nestedOccurrence"],hasDerivation:!0},nestedEnumeration:{name:"nestedEnumeration",ecoreName:"nestedEnumeration",kind:"reference",type:"EnumerationUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Usage/nestedAttribute"]},nestedFlow:{name:"nestedFlow",ecoreName:"nestedFlow",kind:"reference",type:"FlowUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Usage/nestedConnection"],hasDerivation:!0},nestedInterface:{name:"nestedInterface",ecoreName:"nestedInterface",kind:"reference",type:"InterfaceUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Usage/nestedConnection"],hasDerivation:!0},nestedItem:{name:"nestedItem",ecoreName:"nestedItem",kind:"reference",type:"ItemUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Usage/nestedOccurrence"],hasDerivation:!0},nestedMetadata:{name:"nestedMetadata",ecoreName:"nestedMetadata",kind:"reference",type:"MetadataUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Usage/nestedItem"],hasDerivation:!0},nestedOccurrence:{name:"nestedOccurrence",ecoreName:"nestedOccurrence",kind:"reference",type:"OccurrenceUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Usage/nestedUsage"],hasDerivation:!0},nestedPart:{name:"nestedPart",ecoreName:"nestedPart",kind:"reference",type:"PartUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Usage/nestedItem"],hasDerivation:!0},nestedPort:{name:"nestedPort",ecoreName:"nestedPort",kind:"reference",type:"PortUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Usage/nestedUsage"],hasDerivation:!0},nestedReference:{name:"nestedReference",ecoreName:"nestedReference",kind:"reference",type:"ReferenceUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Usage/nestedUsage"],hasDerivation:!0},nestedRendering:{name:"nestedRendering",ecoreName:"nestedRendering",kind:"reference",type:"RenderingUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Usage/nestedPart"],hasDerivation:!0},nestedRequirement:{name:"nestedRequirement",ecoreName:"nestedRequirement",kind:"reference",type:"RequirementUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Usage/nestedConstraint"],hasDerivation:!0},nestedState:{name:"nestedState",ecoreName:"nestedState",kind:"reference",type:"StateUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Usage/nestedAction"],hasDerivation:!0},nestedTransition:{name:"nestedTransition",ecoreName:"nestedTransition",kind:"reference",type:"TransitionUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Usage/nestedUsage"],hasDerivation:!0},nestedUsage:{name:"nestedUsage",ecoreName:"nestedUsage",kind:"reference",type:"Usage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,opposite:"Usage/owningUsage",subsets:["Type/ownedFeature","Usage/usage"],hasDerivation:!0},nestedUseCase:{name:"nestedUseCase",ecoreName:"nestedUseCase",kind:"reference",type:"UseCaseUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Usage/nestedCase"],hasDerivation:!0},nestedVerificationCase:{name:"nestedVerificationCase",ecoreName:"nestedVerificationCase",kind:"reference",type:"VerificationCaseUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Usage/nestedCase"],hasDerivation:!0},nestedView:{name:"nestedView",ecoreName:"nestedView",kind:"reference",type:"ViewUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Usage/nestedPart"],hasDerivation:!0},nestedViewpoint:{name:"nestedViewpoint",ecoreName:"nestedViewpoint",kind:"reference",type:"ViewpointUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Usage/nestedRequirement"],hasDerivation:!0},owningDefinition:{name:"owningDefinition",ecoreName:"owningDefinition",kind:"reference",type:"Definition",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"Definition/ownedUsage",subsets:["Feature/owningType"]},owningUsage:{name:"owningUsage",ecoreName:"owningUsage",kind:"reference",type:"Usage",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,opposite:"Usage/nestedUsage",subsets:["Feature/owningType"]},usage:{name:"usage",ecoreName:"usage",kind:"reference",type:"Usage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Type/feature"],hasDerivation:!0},variant:{name:"variant",ecoreName:"variant",kind:"reference",type:"Usage",lowerBound:0,upperBound:-1,many:!0,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Namespace/ownedMember"],hasDerivation:!0},variantMembership:{name:"variantMembership",ecoreName:"variantMembership",kind:"reference",type:"VariantMembership",lowerBound:0,upperBound:-1,many:!0,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["Namespace/ownedMembership"],hasDerivation:!0}},operations:[{name:"referencedFeatureTarget",type:"Feature",lowerBound:1,upperBound:1,parameters:[],hasBody:!0}]},UseCaseDefinition:{name:"UseCaseDefinition",abstract:!1,superTypes:["CaseDefinition"],features:{includedUseCase:{name:"includedUseCase",ecoreName:"includedUseCase",kind:"reference",type:"UseCaseUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,hasDerivation:!0}},operations:[]},UseCaseUsage:{name:"UseCaseUsage",abstract:!1,superTypes:["CaseUsage"],features:{includedUseCase:{name:"includedUseCase",ecoreName:"includedUseCase",kind:"reference",type:"UseCaseUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},useCaseDefinition:{name:"useCaseDefinition",ecoreName:"useCaseDefinition",kind:"reference",type:"UseCaseDefinition",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["CaseUsage/caseDefinition"]}},operations:[]},VariantMembership:{name:"VariantMembership",abstract:!1,superTypes:["OwningMembership"],features:{ownedVariantUsage:{name:"ownedVariantUsage",ecoreName:"ownedVariantUsage",kind:"reference",type:"Usage",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["OwningMembership/ownedMemberElement"]}},operations:[]},VerificationCaseDefinition:{name:"VerificationCaseDefinition",abstract:!1,superTypes:["CaseDefinition"],features:{verifiedRequirement:{name:"verifiedRequirement",ecoreName:"verifiedRequirement",kind:"reference",type:"RequirementUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,hasDerivation:!0}},operations:[]},VerificationCaseUsage:{name:"VerificationCaseUsage",abstract:!1,superTypes:["CaseUsage"],features:{verificationCaseDefinition:{name:"verificationCaseDefinition",ecoreName:"verificationCaseDefinition",kind:"reference",type:"VerificationCaseDefinition",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,subsets:["CaseUsage/caseDefinition"]},verifiedRequirement:{name:"verifiedRequirement",ecoreName:"verifiedRequirement",kind:"reference",type:"RequirementUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,hasDerivation:!0}},operations:[]},ViewDefinition:{name:"ViewDefinition",abstract:!1,superTypes:["PartDefinition"],features:{satisfiedViewpoint:{name:"satisfiedViewpoint",ecoreName:"satisfiedViewpoint",kind:"reference",type:"ViewpointUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Definition/ownedRequirement"],hasDerivation:!0},view:{name:"view",ecoreName:"view",kind:"reference",type:"ViewUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Definition/usage"],hasDerivation:!0},viewCondition:{name:"viewCondition",ecoreName:"viewCondition",kind:"reference",type:"Expression",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Namespace/ownedMember"],hasDerivation:!0},viewRendering:{name:"viewRendering",ecoreName:"viewRendering",kind:"reference",type:"RenderingUsage",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0}},operations:[]},ViewRenderingMembership:{name:"ViewRenderingMembership",abstract:!1,superTypes:["FeatureMembership"],features:{ownedRendering:{name:"ownedRendering",ecoreName:"ownedRendering",kind:"reference",type:"RenderingUsage",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["FeatureMembership/ownedMemberFeature"]},referencedRendering:{name:"referencedRendering",ecoreName:"referencedRendering",kind:"reference",type:"RenderingUsage",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0}},operations:[]},ViewUsage:{name:"ViewUsage",abstract:!1,superTypes:["PartUsage"],features:{exposedElement:{name:"exposedElement",ecoreName:"exposedElement",kind:"reference",type:"Element",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Namespace/member"],hasDerivation:!0},satisfiedViewpoint:{name:"satisfiedViewpoint",ecoreName:"satisfiedViewpoint",kind:"reference",type:"ViewpointUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Usage/nestedRequirement"],hasDerivation:!0},viewCondition:{name:"viewCondition",ecoreName:"viewCondition",kind:"reference",type:"Expression",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,subsets:["Namespace/ownedMember"],hasDerivation:!0},viewDefinition:{name:"viewDefinition",ecoreName:"viewDefinition",kind:"reference",type:"ViewDefinition",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["PartUsage/partDefinition"]},viewRendering:{name:"viewRendering",ecoreName:"viewRendering",kind:"reference",type:"RenderingUsage",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0}},operations:[{name:"includeAsExposed",type:"boolean",lowerBound:1,upperBound:1,parameters:[{name:"element",type:"Element",many:!1}],hasBody:!0}]},ViewpointDefinition:{name:"ViewpointDefinition",abstract:!1,superTypes:["RequirementDefinition"],features:{viewpointStakeholder:{name:"viewpointStakeholder",ecoreName:"viewpointStakeholder",kind:"reference",type:"PartUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,hasDerivation:!0}},operations:[]},ViewpointUsage:{name:"ViewpointUsage",abstract:!1,superTypes:["RequirementUsage"],features:{viewpointDefinition:{name:"viewpointDefinition",ecoreName:"viewpointDefinition",kind:"reference",type:"ViewpointDefinition",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,redefines:["RequirementUsage/requirementDefinition"]},viewpointStakeholder:{name:"viewpointStakeholder",ecoreName:"viewpointStakeholder",kind:"reference",type:"PartUsage",lowerBound:0,upperBound:-1,many:!0,ordered:!0,containment:!1,derived:!0,volatile:!0,hasDerivation:!0}},operations:[]},WhileLoopActionUsage:{name:"WhileLoopActionUsage",abstract:!1,superTypes:["LoopActionUsage"],features:{untilArgument:{name:"untilArgument",ecoreName:"untilArgument",kind:"reference",type:"Expression",lowerBound:0,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0},whileArgument:{name:"whileArgument",ecoreName:"whileArgument",kind:"reference",type:"Expression",lowerBound:1,upperBound:1,many:!1,ordered:!1,containment:!1,derived:!0,volatile:!0,hasDerivation:!0}},operations:[]}};function Cn(e){var o,a;const r=[],n=[...((o=Sn[e])==null?void 0:o.superTypes)??[]];for(;n.length>0;){const s=n.shift();r.includes(s)||(r.push(s),n.push(...((a=Sn[s])==null?void 0:a.superTypes)??[]))}return r}function uo(e,r){return e===r||Cn(e).includes(r)}const po=[{role:"fork",metaclass:"ForkNode",bnfProduction:"fork-node"},{role:"join",metaclass:"JoinNode",bnfProduction:"join-node"},{role:"decision",metaclass:"DecisionNode",bnfProduction:"decision-node"},{role:"merge",metaclass:"MergeNode",bnfProduction:"merge-node"},{role:"send",metaclass:"SendActionUsage",bnfProduction:"send-action-node"},{role:"accept",metaclass:"AcceptActionUsage",bnfProduction:"accept-action-node"},{role:"activityFinal",metaclass:"TerminateActionUsage"},{role:"action",metaclass:"ActionUsage",bnfProduction:"action-node"},{role:"action",metaclass:"ActionDefinition",bnfProduction:"action-node"}],Bs={activityfinalnode:"activityFinal",activityfinalnodeusage:"activityFinal",flowfinalnode:"flowFinal",flowfinalnodeusage:"flowFinal"},Fs={fork:"ForkNode",join:"JoinNode",decide:"DecisionNode",merge:"MergeNode"};function As(){return[...po].sort((e,r)=>Cn(r.metaclass).length-Cn(e.metaclass).length)}function Ns(e){if(!e)return[];const r=e.replace(/[ _-]/g,""),n=r.charAt(0).toUpperCase()+r.slice(1);return[n,`${n}Usage`,`${n}Node`,`${n}ActionUsage`,n.replace(/Usage$/,""),n.replace(/Definition$/,"")]}function Ts(e){for(const r of Ns(e??""))if(r in Sn)return r}function Rs(e,r){var s;const n=new Map((r??[]).map(i=>[i.name,i])),o=[];let a=e;for(;a&&!o.includes(a);)o.push(a),a=(s=n.get(a))==null?void 0:s.superType;return o}function mo(e,r){var i,l;const n=(l=(i=e.attributes)==null?void 0:i.controlKind)==null?void 0:l.toLowerCase(),o=n?Fs[n]:void 0,a=[...o?[o]:[],...Rs(e.kind,r==null?void 0:r.kinds),e.kind,e.construct],s=As();for(const c of a){const d=Bs[(c??"").replace(/[ _-]/g,"").toLowerCase()];if(d)return d;const u=Ts(c);if(!u)continue;const m=s.find(b=>uo(u,b.metaclass));if(m)return m.role}}function pu(e,r){const n=mo(e,r);if(n==="activityFinal"||n==="flowFinal")return!0;const o=po.find(a=>a.role===n);return o!==void 0&&uo(o.metaclass,"ControlNode")}const Is=["general","interconnection","actionflow","statetransition","sequence","grid","browser","geometry"];new Set(Is);const Ms={id:"requirements-matrix",name:"Requirements Matrix",description:"Standard requirements spreadsheet with ID, title, description, priority columns. Typical export from DOORS, Jama, or a simple Excel requirements log.",defaultKind:"Requirement",columnMappings:[{sourceColumn:"req id",targetAttribute:"id",transform:"sanitize-id",required:!0},{sourceColumn:"requirement id",targetAttribute:"id",transform:"sanitize-id",required:!0},{sourceColumn:"id",targetAttribute:"id",transform:"sanitize-id",required:!0},{sourceColumn:"req #",targetAttribute:"id",transform:"sanitize-id"},{sourceColumn:"number",targetAttribute:"id",transform:"sanitize-id"},{sourceColumn:"title",targetAttribute:"name",required:!0},{sourceColumn:"requirement title",targetAttribute:"name",required:!0},{sourceColumn:"name",targetAttribute:"name",required:!0},{sourceColumn:"summary",targetAttribute:"name"},{sourceColumn:"description",targetAttribute:"doc"},{sourceColumn:"text",targetAttribute:"doc"},{sourceColumn:"statement",targetAttribute:"doc"},{sourceColumn:"requirement text",targetAttribute:"doc"},{sourceColumn:"kind",targetAttribute:"kind"},{sourceColumn:"type",targetAttribute:"kind"},{sourceColumn:"category",targetAttribute:"category"},{sourceColumn:"priority",targetAttribute:"priority"},{sourceColumn:"rationale",targetAttribute:"rationale"},{sourceColumn:"verification method",targetAttribute:"verificationMethod"},{sourceColumn:"status",targetAttribute:"status"}]},_s={id:"hazard-log",name:"Hazard Log",description:"ISO 14971 hazard analysis spreadsheet with hazard ID, description, severity, probability and risk level columns.",defaultKind:"Hazard",columnMappings:[{sourceColumn:"hazard id",targetAttribute:"id",transform:"sanitize-id",required:!0},{sourceColumn:"haz id",targetAttribute:"id",transform:"sanitize-id"},{sourceColumn:"id",targetAttribute:"id",transform:"sanitize-id",required:!0},{sourceColumn:"hazard",targetAttribute:"name",required:!0},{sourceColumn:"hazard description",targetAttribute:"name",required:!0},{sourceColumn:"name",targetAttribute:"name",required:!0},{sourceColumn:"description",targetAttribute:"doc"},{sourceColumn:"hazardous situation",targetAttribute:"doc"},{sourceColumn:"kind",targetAttribute:"kind"},{sourceColumn:"severity",targetAttribute:"severity"},{sourceColumn:"probability",targetAttribute:"probability"},{sourceColumn:"risk level",targetAttribute:"riskLevel"},{sourceColumn:"risk",targetAttribute:"riskLevel"},{sourceColumn:"harm",targetAttribute:"harm"},{sourceColumn:"foreseeable misuse",targetAttribute:"foreseeableMisuse"},{sourceColumn:"mitigation",targetAttribute:"mitigation"},{sourceColumn:"residual risk",targetAttribute:"residualRisk"},{sourceColumn:"status",targetAttribute:"status"}]},Ps={id:"fmea-worksheet",name:"FMEA Worksheet",description:"Failure Mode and Effects Analysis spreadsheet. Maps component failure modes to MEMO Failure kind with FMEA attributes (severity, occurrence, detection, RPN).",defaultKind:"Failure",columnMappings:[{sourceColumn:"id",targetAttribute:"id",transform:"sanitize-id",required:!0},{sourceColumn:"fmea id",targetAttribute:"id",transform:"sanitize-id"},{sourceColumn:"failure mode",targetAttribute:"name",required:!0},{sourceColumn:"failure mode description",targetAttribute:"name"},{sourceColumn:"name",targetAttribute:"name",required:!0},{sourceColumn:"description",targetAttribute:"doc"},{sourceColumn:"effect",targetAttribute:"doc"},{sourceColumn:"effect of failure",targetAttribute:"effect"},{sourceColumn:"kind",targetAttribute:"kind"},{sourceColumn:"component",targetAttribute:"component"},{sourceColumn:"function",targetAttribute:"function"},{sourceColumn:"severity",targetAttribute:"severity"},{sourceColumn:"s",targetAttribute:"severity"},{sourceColumn:"occurrence",targetAttribute:"occurrence"},{sourceColumn:"o",targetAttribute:"occurrence"},{sourceColumn:"detection",targetAttribute:"detection"},{sourceColumn:"d",targetAttribute:"detection"},{sourceColumn:"rpn",targetAttribute:"rpn"},{sourceColumn:"risk priority number",targetAttribute:"rpn"},{sourceColumn:"cause",targetAttribute:"cause"},{sourceColumn:"controls",targetAttribute:"controls"},{sourceColumn:"action",targetAttribute:"action"}]},Os={id:"verification-table",name:"Verification Table",description:"Verification and validation traceability matrix mapping requirements to test methods and results.",defaultKind:"VerificationTest",columnMappings:[{sourceColumn:"test id",targetAttribute:"id",transform:"sanitize-id",required:!0},{sourceColumn:"verification id",targetAttribute:"id",transform:"sanitize-id"},{sourceColumn:"id",targetAttribute:"id",transform:"sanitize-id",required:!0},{sourceColumn:"test name",targetAttribute:"name",required:!0},{sourceColumn:"name",targetAttribute:"name",required:!0},{sourceColumn:"title",targetAttribute:"name"},{sourceColumn:"description",targetAttribute:"doc"},{sourceColumn:"objective",targetAttribute:"doc"},{sourceColumn:"kind",targetAttribute:"kind"},{sourceColumn:"requirement id",targetAttribute:"requirementId"},{sourceColumn:"req id",targetAttribute:"requirementId"},{sourceColumn:"method",targetAttribute:"method"},{sourceColumn:"test method",targetAttribute:"method"},{sourceColumn:"verification method",targetAttribute:"method"},{sourceColumn:"result",targetAttribute:"result"},{sourceColumn:"pass/fail",targetAttribute:"result"},{sourceColumn:"status",targetAttribute:"status"},{sourceColumn:"evidence",targetAttribute:"evidence"},{sourceColumn:"notes",targetAttribute:"notes"}]},or=[Ms,_s,Ps,Os];function zs(e,r){return e.map(n=>{const o=n.trim().toLowerCase();if(r){const i=r.columnMappings.find(l=>l.sourceColumn.toLowerCase()===o);if(i)return{...i,sourceColumn:n}}const a=Us.find(i=>i.sourceColumn.toLowerCase()===o);if(a)return{...a,sourceColumn:n};const s=Vs(n);return{sourceColumn:n,targetAttribute:s}})}const Us=[{sourceColumn:"id",targetAttribute:"id",transform:"sanitize-id"},{sourceColumn:"identifier",targetAttribute:"id",transform:"sanitize-id"},{sourceColumn:"uid",targetAttribute:"id",transform:"sanitize-id"},{sourceColumn:"name",targetAttribute:"name"},{sourceColumn:"title",targetAttribute:"name"},{sourceColumn:"label",targetAttribute:"name"},{sourceColumn:"description",targetAttribute:"doc"},{sourceColumn:"text",targetAttribute:"doc"},{sourceColumn:"notes",targetAttribute:"doc"},{sourceColumn:"kind",targetAttribute:"kind"},{sourceColumn:"type",targetAttribute:"kind"},{sourceColumn:"category",targetAttribute:"kind"},{sourceColumn:"construct",targetAttribute:"construct"}];function Ls(e,r,n,o){const a=[],s=[],i=new Set,l=[];for(const g of r){if(!g.targetAttribute){s.push(g.sourceColumn);continue}i.has(g.targetAttribute)||(i.add(g.targetAttribute),l.push(g))}const c=i.has("id"),d=i.has("name"),u=i.has("kind");c||a.push("No column mapped to 'id' — id will be auto-generated from row number"),d||a.push("No column mapped to 'name'"),!u&&!o&&a.push("No column mapped to 'kind' and no defaultKind set");const m=["id","name","kind","construct","doc"],b=Array.from(i).filter(g=>!m.includes(g)),v=[...m.filter(g=>i.has(g)),...b];for(const g of["id","name","kind"])v.includes(g)||v.unshift(g);const w=[v.map(ar).join(",")];return e.forEach((g,h)=>{const y={};for(const A of l){const T=g[A.sourceColumn]??"";y[A.targetAttribute]=qs(T,A.transform)}(!y.id||y.id.trim()==="")&&(y.id=`row_${h+1}`),(!y.kind||y.kind.trim()==="")&&o&&(y.kind=o);const N=y.kind;N&&Object.keys(n.kinds).length>0&&!n.kinds[N]&&a.push(`Row ${h+2}: unknown kind '${N}' (not declared by the resolved ontology)`);const R=v.map(A=>ar(y[A]??""));w.push(R.join(","))}),{csv:w.join(`
|
|
14
14
|
`)+`
|
|
15
|
-
`,skippedColumns:s,warnings:a}}function
|
|
16
|
-
`)?`"${e.replace(/"/g,'""')}"`:e}let W=null,jt=null,rn=0;const $s=1e4;let Ae=!1,Ot=null,Ue=null,we=null,lt=!1;const Je=new Map;function Vs(e){const r=Je.get(e.requestId);r&&(clearTimeout(r.timer),Je.delete(e.requestId),e.success||e.conflict?r.resolve(e):r.reject(new Error(e.error||`Could not ${e.operation} diagram source.`)))}function Ws(e){for(const r of Je.values())clearTimeout(r.timer),r.reject(new Error(e));Je.clear()}function on(e){return e?e.snapshot?(Ue=e.workspaceSessionId,we=e.revision,lt=!1,!0):lt?!1:Ue!==e.workspaceSessionId||we===null?(lt=!0,dr(),!1):e.revision===we?!0:e.baseRevision===we&&e.revision===we+1?(we=e.revision,!0):(lt=!0,dr(),!1):!0}const zn=new Map,Un=new Map,Ln=new Map,qn=new Map,ft=new Map,Vt=new Map,ht=new Map,yt=new Map,Wt=new Map;function Fe(e,r){const n=r.get(e.requestId);n&&(clearTimeout(n.timer),r.delete(e.requestId),n.resolve(e))}function Hs(e){for(const r of[zn,Un,Ln,qn,Wt,Vt]){for(const n of r.values())clearTimeout(n.timer),n.reject(new Error(e));r.clear()}for(const r of ft.values())clearTimeout(r.timer),r.reject(new Error(e));ft.clear();for(const r of yt.values())clearTimeout(r.timer),r.reject(new Error("The development server disconnected."));yt.clear();for(const r of ht.values())clearTimeout(r.timer),r.reject(new Error(e));ht.clear()}function Jt(e,r,n){if(!W||W.readyState!==WebSocket.OPEN)return Promise.reject(new Error("The development server is not connected."));const o=`${e}-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`;return new Promise((a,s)=>{const i=setTimeout(()=>{n.delete(o),s(new Error("The server did not answer the relationship request."))},15e3);n.set(o,{resolve:a,reject:s,timer:i}),W.send(JSON.stringify({type:e,payload:{...r,requestId:o}}))})}function gt(e){var r,n;return(n=(r=S.getState().model)==null?void 0:r.irIdentities)==null?void 0:n[e]}function Xt(e,r){var o;const n=S.getState().model;if(!(!Ue||we===null||!n))return{workspaceSessionId:Ue,baseRevision:we,sourceFile:e,expectedSourceHash:((o=n.sourceHashes)==null?void 0:o[e])??"",targetElementIds:r}}function Ks(){const e=window.__MEMO_DATA__;if(!e)return!1;const r=S.getState();return r.setConnected(!0),e.model&&r.setModel(e.model),e.validation&&r.setValidation(e.validation),e.completeness&&r.setCompleteness(e.completeness),!0}function fo(e){if(window.__MEMO_DATA__)return;Js();const r=`ws://${window.location.host}`;if(W&&(W.readyState===WebSocket.OPEN||W.readyState===WebSocket.CONNECTING))return;W=new WebSocket(r);const n=S.getState();W.onopen=()=>{n.setConnected(!0),rn=0,Ot=null,Ae=!1,Ue=null,we=null,lt=!1,n.setRestartRequired(null),jt&&(clearTimeout(jt),jt=null)},W.onmessage=o=>{try{const a=JSON.parse(o.data);Gs(a)}catch{}},W.onclose=()=>{n.setConnected(!1),Ws("The development server disconnected."),Hs("The development server disconnected."),W=null,rn++;const o=Math.min(2e3*Math.pow(2,rn-1),$s);jt=setTimeout(()=>fo(),o)},W.onerror=()=>{}}function Gs(e){var n;const r=S.getState();switch(e.type){case"app:restart-required":Ae=!0,r.setRestartRequired(e);return;case"app:edit-conflict":r.setEditConflict(e.payload);return;case"model:update":if(Ae||!on(e.revision))return;if((n=e.revision)!=null&&n.modelDelta&&!e.revision.snapshot&&r.model){const o={...r.model.elements,...e.revision.modelDelta.upsertElements};for(const a of e.revision.modelDelta.removeElementIds)delete o[a];r.setModel({...r.model,...e.revision.modelDelta.patch,elements:o})}else r.setModel(e.payload);break;case"source:coherence":r.setSourceCoherence(e.payload);break;case"source:changed":if(Ae)return;r.applySourceChange(e.payload);break;case"validation:update":if(Ae||!on(e.revision))return;r.setValidation(e.payload);break;case"completeness:update":if(Ae||!on(e.revision))return;r.setCompleteness(e.payload);break;case"methodology:update":if(Ae)return;r.setMethodology(e.payload);break;case"rules:update":if(Ae)return;r.setEffectiveRules(e.payload.rules,e.payload.diagnostics);break;case"rule:policy:write:result":Fe(e.payload,yt);break;case"error":console.error("[MEMO] Server error:",e.payload.message);break;case"diagram:parse:result":r.applyDiagramParseResult(e.payload.diagramId,e.payload.elementIds,e.payload.errors);break;case"diagram:source:result":Vs(e.payload);break;case"relationship:create:result":Fe(e.payload,zn);break;case"relationship:delete:result":Fe(e.payload,Un);break;case"relationship:update:result":Fe(e.payload,Ln);break;case"element:delete:result":Fe(e.payload,qn);break;case"element:mutation:result":Fe(e.payload,ft);break;case"package:mutation:result":Fe(e.payload,Vt);break;case"methodology:source:result":Fe(e.payload,ht);break;case"screen-capture:upload:result":Fe(e.payload,Wt);break;case"ontology:packages":{const o=e.payload.ontologyHash;if(o){if(Ot===null)Ot=o;else if(Ot!==o){Ae=!0,r.setRestartRequired({type:"app:restart-required",reason:"ontology-source-changed",changedFile:"(server restarted with different ontology)",instruction:"Reload the page to connect to the new server."});return}}r.setAvailableOntologies(e.payload.packages);break}case"ontology:install:result":r.setOntologyInstallStatus({installing:!1,lastInstalled:e.payload.success?e.payload.packageName:void 0,error:e.payload.error});break;case"ontology:remove:result":r.setOntologyInstallStatus({installing:!1});break;case"diagram:layout":r.mergeDiagramLayouts(e.payload.layouts);break;case"import:result":r.setImportResult(e.payload);break;case"llm:status":r.setLlmStatus(e.payload.available,e.payload.provider,e.payload.model);break;case"llm:settings":r.setLlmSettings(e.payload.settings);break;case"llm:ask:result":e.payload.error?r.rejectLlmRequest(e.payload.requestId,e.payload.error):r.resolveLlmRequest(e.payload.requestId,e.payload.answer);break;case"llm:chat:result":e.payload.error?r.rejectLlmRequest(e.payload.requestId,e.payload.error):r.resolveLlmRequest(e.payload.requestId,{answer:e.payload.answer,proposedChanges:e.payload.proposedChanges??[],messages:e.payload.messages??[],truncated:e.payload.truncated});break;case"llm:chat:apply:result":e.payload.error?r.rejectLlmRequest(e.payload.requestId,e.payload.error):r.resolveLlmRequest(e.payload.requestId,{applied:e.payload.applied??[],failed:e.payload.failed??[]});break;case"llm:settings:save:result":e.payload.error?r.rejectLlmRequest(e.payload.requestId,e.payload.error):r.resolveLlmRequest(e.payload.requestId,e.payload.settings);break;case"llm:generate:result":if(e.payload.error)r.rejectLlmRequest(e.payload.requestId,e.payload.error);else{const o=e.payload;r.resolveLlmRequest(o.requestId,{sysml:o.sysml,initialSysml:o.initialSysml,explanation:o.explanation,suggestedFile:o.suggestedFile,attempts:o.attempts,diagnostics:o.diagnostics??[],changeRecord:o.changeRecord})}break;case"llm:draft:result":e.payload.error?r.rejectLlmRequest(e.payload.requestId,e.payload.error):r.resolveLlmRequest(e.payload.requestId,{markdown:e.payload.markdown,summary:e.payload.summary});break;case"llm:suggest:result":e.payload.error?r.rejectLlmRequest(e.payload.requestId,e.payload.error):r.resolveLlmRequest(e.payload.requestId,e.payload.suggestions);break;case"dhf:docs":ir(()=>r.setDhfDocuments(e.payload.docs));break;case"dhf:settings":ir(()=>r.hydrateDhfSettings(e.payload.settings));break;case"dhf:templates:result":r.resolveLlmRequest(e.payload.requestId,e.payload.templates);break;case"dhf:template:content":e.payload.error?r.rejectLlmRequest(e.payload.requestId,e.payload.error):r.resolveLlmRequest(e.payload.requestId,e.payload.content);break;case"dhf:template:save:result":e.payload.error?r.rejectLlmRequest(e.payload.requestId,e.payload.error):r.resolveLlmRequest(e.payload.requestId,{path:e.payload.path});break}}let Cn=!1;const ho=600,ut=new Map;let Dt=null;function ir(e){Cn=!0;try{e()}finally{Cn=!1}}function Xe(e){W&&W.readyState===WebSocket.OPEN&&W.send(JSON.stringify(e))}function Ys(e){const r=ut.get(e.id);r&&clearTimeout(r),ut.set(e.id,setTimeout(()=>{ut.delete(e.id);const n=S.getState().dhfDocuments.find(o=>o.id===e.id);n&&Xe({type:"dhf:doc:save",payload:{doc:n}})},ho))}let lr=!1;function Js(){lr||(lr=!0,S.subscribe((e,r)=>{if(!Cn){if(e.dhfDocuments!==r.dhfDocuments){const n=new Map(r.dhfDocuments.map(o=>[o.id,o]));for(const o of e.dhfDocuments)n.get(o.id)!==o&&Ys(o),n.delete(o.id);for(const o of n.keys()){const a=ut.get(o);a&&(clearTimeout(a),ut.delete(o)),Xe({type:"dhf:doc:delete",payload:{docId:o}})}}e.dhfSettings!==r.dhfSettings&&(Dt&&clearTimeout(Dt),Dt=setTimeout(()=>{Dt=null,Xe({type:"dhf:settings:save",payload:{settings:S.getState().dhfSettings}})},ho))}}))}function Xs(e){Xe({type:"dhf:templates:list",payload:{requestId:e}})}function Qs(e,r){Xe({type:"dhf:template:read",payload:{requestId:e,path:r}})}function Zs(e,r,n){Xe({type:"dhf:template:save",payload:{requestId:e,title:r,content:n}})}function dr(){W&&W.readyState===WebSocket.OPEN&&W.send(JSON.stringify({type:"request:refresh"}))}function Bt(e){return yo("element:update",e)}function an(e){return yo("element:create",e)}function yo(e,r){var l;if(!W||W.readyState!==WebSocket.OPEN)return Promise.reject(new Error("The development server is not connected."));const n=`${e}-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`,o=S.getState().model,a=r.file??"model/catalog/project.sysml",s=((l=o==null?void 0:o.sourceHashes)==null?void 0:l[a])??"",i=Ue&&we!==null?{workspaceSessionId:Ue,baseRevision:we,sourceFile:a,expectedSourceHash:s,targetElementIds:[r.id]}:void 0;return new Promise((c,d)=>{const u=setTimeout(()=>{ft.delete(n),d(new Error("The server did not answer the element mutation."))},15e3);ft.set(n,{resolve:c,reject:d,timer:u}),W.send(JSON.stringify({type:e,payload:{...r,file:a,requestId:n,precondition:i,...e==="element:update"?{irIdentity:gt(r.id)}:{}}}))})}function nt(e,r){if(!W||W.readyState!==WebSocket.OPEN)return Promise.reject(new Error("The development server is not connected."));const n=`${e}-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`;return new Promise((o,a)=>{const s=setTimeout(()=>{Vt.delete(n),a(new Error("The server did not answer the containment change."))},15e3);Vt.set(n,{resolve:o,reject:a,timer:s}),W.send(JSON.stringify({type:e,payload:{...r,requestId:n}}))})}function ei(e){const r=e.owningFile??"model/catalog/relationships.sysml";return Jt("relationship:create",{...e,owningFile:r,sourceIdentity:gt(e.sourceId),targetIdentity:gt(e.targetId),precondition:Xt(r,[e.sourceId,e.targetId])},zn)}function ti(e){var o;const r=(o=S.getState().model)==null?void 0:o.relationships.find(a=>a.id===e.relationshipId),n=(r==null?void 0:r.file)??e.sourceFile;return Jt("relationship:delete",{...e,precondition:n?Xt(n,[r==null?void 0:r.sourceId,r==null?void 0:r.targetId].filter(Boolean)):void 0},Un)}function uu(e){var o;const r=(o=S.getState().model)==null?void 0:o.relationships.find(a=>a.id===e.relationshipId),n=r==null?void 0:r.file;return Jt("relationship:update",{...e,sourceIdentity:gt(e.sourceId),targetIdentity:gt(e.targetId),precondition:n?Xt(n,[e.sourceId,e.targetId]):void 0},Ln)}function ni(e){var n;const r=(n=S.getState().model)==null?void 0:n.elements[e];return Jt("element:delete",{elementId:e,precondition:r!=null&&r.file?Xt(r.file,[e]):void 0},qn)}function pu(e){if(!W||W.readyState!==WebSocket.OPEN)return Promise.reject(new Error("The development server is not connected."));const r=`screen-capture-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`;return new Promise((n,o)=>{const a=setTimeout(()=>{Wt.delete(r),o(new Error("The server did not answer the screen-capture upload request."))},3e4);Wt.set(r,{resolve:n,reject:o,timer:a}),W.send(JSON.stringify({type:"screen-capture:upload",payload:{...e,requestId:r}}))})}function ri(e){W&&W.readyState===WebSocket.OPEN&&W.send(JSON.stringify({type:"diagram:create",payload:e}))}function cr(e){W&&W.readyState===WebSocket.OPEN&&W.send(JSON.stringify({type:"diagram:update",payload:e}))}function oi(e){if(W&&W.readyState===WebSocket.OPEN){const r={id:e};W.send(JSON.stringify({type:"diagram:delete",payload:r}))}}function mu(e,r){if(W&&W.readyState===WebSocket.OPEN){const n={diagramId:e,text:r};W.send(JSON.stringify({type:"diagram:parse",payload:n}))}}function go(e,r,n){if(!W||W.readyState!==WebSocket.OPEN)return Promise.reject(new Error("The development server is not connected."));const o=`diagram-source-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`;return new Promise((a,s)=>{const i=setTimeout(()=>{Je.delete(o),s(new Error(`Timed out while trying to ${e} the SysML source.`))},1e4);Je.set(o,{resolve:a,reject:s,timer:i}),W.send(JSON.stringify({type:e==="load"?"diagram:source:request":"diagram:source:save",payload:{requestId:o,diagramId:r,...e==="save"?n:{}}}))})}function fu(e){return go("load",e)}function hu(e,r,n){return go("save",e,{text:r,baseRevision:n})}function En(e,r,n){if(!W||W.readyState!==WebSocket.OPEN)return Promise.reject(new Error("The development server is not connected."));const o=`methodology-${e}-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`;return new Promise((a,s)=>{const i=setTimeout(()=>{ht.delete(o),s(new Error(`Timed out while trying to ${e} methodology source.`))},15e3);ht.set(o,{resolve:a,reject:s,timer:i}),W.send(JSON.stringify({type:`methodology:source:${e==="load"?"request":"save"}`,payload:{requestId:o,sourceFile:r,...n}}))})}function ai(e){W&&W.readyState===WebSocket.OPEN&&W.send(JSON.stringify({type:"element:remap-kinds",payload:{mappings:e}}))}function sn(e){W&&W.readyState===WebSocket.OPEN&&W.send(JSON.stringify({type:"ontology:save-selection",payload:{selected:e}}))}function yu(e){W&&W.readyState===WebSocket.OPEN&&W.send(JSON.stringify({type:"ontology:install",payload:{source:e}}))}function si(e){W&&W.readyState===WebSocket.OPEN&&W.send(JSON.stringify({type:"open-file",payload:{path:e}}))}function gu(e){W&&W.readyState===WebSocket.OPEN&&W.send(JSON.stringify({type:"ontology:remove",payload:{packageName:e}}))}function xu(e,r){W&&W.readyState===WebSocket.OPEN&&W.send(JSON.stringify({type:"diagram:layout:update",payload:{diagramId:e,layout:r}}))}function ii(e){W&&W.readyState===WebSocket.OPEN&&W.send(JSON.stringify({type:"csv:import",payload:e}))}function bu(e,r,n,o){W&&W.readyState===WebSocket.OPEN&&W.send(JSON.stringify({type:"llm:chat",payload:{requestId:e,question:r,history:n,allowEdits:o}}))}function vu(e,r){W&&W.readyState===WebSocket.OPEN&&W.send(JSON.stringify({type:"llm:chat:apply",payload:{requestId:e,changes:r}}))}function wu(e,r){W&&W.readyState===WebSocket.OPEN&&W.send(JSON.stringify({type:"llm:settings:save",payload:{requestId:e,...r}}))}function ku(e,r){W&&W.readyState===WebSocket.OPEN&&W.send(JSON.stringify({type:"llm:generate",payload:{requestId:e,description:r}}))}function Su(e,r,n){W&&W.readyState===WebSocket.OPEN&&W.send(JSON.stringify({type:"llm:draft",payload:{requestId:e,documentTypeId:r,targetSections:n}}))}function li(e){if(!W||W.readyState!==WebSocket.OPEN)return Promise.reject(new Error("The development server is not connected."));const r=`rule-policy-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`;return new Promise((n,o)=>{const a=setTimeout(()=>{yt.delete(r),o(new Error("Timed out while writing the rule policy."))},15e3);yt.set(r,{resolve:n,reject:o,timer:a}),W.send(JSON.stringify({type:"rule:policy:write",payload:{requestId:r,...e}}))})}const ur="memo:userViewpoints",jn="memo:activeView";function di(){try{const e=JSON.parse(sessionStorage.getItem(jn)??"null");if((e==null?void 0:e.type)==="diagram"&&typeof e.diagramId=="string")return e}catch{}return{type:"welcome"}}function pr(e){try{e.type==="diagram"?sessionStorage.setItem(jn,JSON.stringify(e)):sessionStorage.removeItem(jn)}catch{}}function ci(){try{const e=localStorage.getItem(ur);if(e){const r=JSON.parse(e);return localStorage.removeItem(ur),r.length>0&&console.warn(`[MEMO] Migrated ${r.length} user viewpoint(s) from localStorage. Save them to memo.viewpoints.yaml to persist across sessions.`),r}}catch{}return[]}const Ft=di(),S=Lr((e,r)=>({model:null,validation:null,completeness:null,connected:!1,restartRequired:null,sourceCoherence:null,editConflict:null,methodology:null,effectiveRules:[],ruleDiagnostics:[],lastSourceChange:null,activeMode:Ft.type==="diagram"?"diagram":"catalog",activeView:Ft,explorerTab:"model",selectedElementId:null,selectedRelationshipId:null,selectedElementIds:new Set,recentlyVisited:[],selectedViewpointId:null,selectedDiagramId:Ft.type==="diagram"?Ft.diagramId:null,searchTerm:"",sidebarCollapsed:!1,propertiesPanelCollapsed:!0,hiddenLayers:new Set,ontologyGroupBy:"layer",collapsedGroups:new Set,availableOntologies:[],selectedOntologies:new Set,focusedOntologyId:null,selectedOntologyKind:null,ontologyViewMode:"visual",showOntologyRelationships:!1,highlightedRelationshipType:null,hiddenEdgeTypes:new Set(["extends"]),ontologyInstallStatus:{installing:!1},gapBarExpanded:!1,gapBarHeight:160,catalogGroupBy:"semantic",catalogCollapsed:new Set,contextMenu:null,attributeFilter:null,labelFilter:null,tagFilters:[],userViewpoints:ci(),selectionStyle:null,setSelectionStyle:n=>e({selectionStyle:n}),diagramLayouts:{},mergeDiagramLayouts:n=>e(o=>({diagramLayouts:{...o.diagramLayouts,...n}})),setNodeLayout:(n,o,a)=>e(s=>{const i=s.diagramLayouts[n]??{nodes:{},edges:{}};return{diagramLayouts:{...s.diagramLayouts,[n]:{...i,nodes:{...i.nodes,[o]:{...i.nodes[o]??{},...a}}}}}}),diagramParseErrors:{},dhfDocuments:[],dhfSettings:{company:"",product:"",deviceType:"",version:"0.1",phase:"",logoUrl:"",compactLogoUrl:"",primaryColor:"#1B3A4B",compactMode:!1,headerTemplate:"**{{project.product}}** | {{id}} | Rev {{project.version}}",footerTemplate:"Confidential — {{project.company}} | Page {{page}}",documentNumberingPrefix:"DOC"},bulkImportOpen:!1,importResult:null,llmAvailable:!1,llmProvider:void 0,llmModel:void 0,llmPending:new Map,llmSettings:null,setLlmSettings:n=>e({llmSettings:n,llmAvailable:n.configured,llmProvider:n.provider,llmModel:n.model}),setLlmStatus:(n,o,a)=>e({llmAvailable:n,llmProvider:o,llmModel:a}),registerLlmRequest:(n,o,a)=>e(s=>{const i=new Map(s.llmPending);return i.set(n,{resolve:o,reject:a}),{llmPending:i}}),resolveLlmRequest:(n,o)=>e(a=>{const s=a.llmPending.get(n);if(s){s.resolve(o);const i=new Map(a.llmPending);return i.delete(n),{llmPending:i}}return{}}),rejectLlmRequest:(n,o)=>e(a=>{const s=a.llmPending.get(n);if(s){s.reject(new Error(o));const i=new Map(a.llmPending);return i.delete(n),{llmPending:i}}return{}}),analysisIssues:[],editingElementId:null,pendingEdits:new Map,pendingRelationships:[],createRelationship:async n=>{const o=`pending-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`,a=pi(r().model,n.type);e(i=>({pendingRelationships:[...i.pendingRelationships,{pendingId:o,type:n.type,label:(a==null?void 0:a.label)??n.type,sourceId:n.sourceId,targetId:n.targetId,direction:n.direction,status:"saving"}]}));const s=(i,l)=>(e(c=>({pendingRelationships:c.pendingRelationships.map(d=>d.pendingId===o?{...d,status:"failed",error:i}:d)})),{success:!1,error:i,diagnostics:l});try{const i=await ei(n);return i.success?(e(l=>({pendingRelationships:l.pendingRelationships.filter(c=>c.pendingId!==o)})),{success:!0,relationshipId:i.relationshipId,sourceFile:i.sourceFile,diagnostics:i.diagnostics}):s(i.error??"The relationship could not be created.",i.diagnostics)}catch(i){return s(i instanceof Error?i.message:String(i))}},deleteRelationship:async n=>{try{const o=await ti({relationshipId:n});return o.success?(e(a=>a.model?{model:{...a.model,relationships:a.model.relationships.filter(s=>s.id!==n)},selectedRelationshipId:a.selectedRelationshipId===n?null:a.selectedRelationshipId}:{}),{success:!0,sourceFile:o.sourceFile}):{success:!1,error:o.error??"The relationship could not be deleted."}}catch(o){return{success:!1,error:o instanceof Error?o.message:String(o)}}},deleteModelElement:async n=>{try{const o=await ni(n);return o.success?(e(a=>{if(!a.model)return{};const s={...a.model.elements};return delete s[n],{model:{...a.model,elements:s,relationships:a.model.relationships.filter(i=>i.sourceId!==n&&i.targetId!==n),diagrams:(a.model.diagrams??[]).map(i=>{var l;return{...i,elementIds:(l=i.elementIds)==null?void 0:l.filter(c=>c!==n)}})},selectedElementId:a.selectedElementId===n?null:a.selectedElementId,selectedElementIds:new Set([...a.selectedElementIds].filter(i=>i!==n))}}),{success:!0}):{success:!1,error:o.error??"The element could not be deleted."}}catch(o){return{success:!1,error:o instanceof Error?o.message:String(o)}}},dismissPendingRelationship:n=>e(o=>({pendingRelationships:o.pendingRelationships.filter(a=>a.pendingId!==n)})),setRestartRequired:n=>e({restartRequired:n}),setSourceCoherence:n=>e({sourceCoherence:n.coherent?null:n}),setEditConflict:n=>e({editConflict:n}),applySourceChange:n=>e(o=>{var a;return{lastSourceChange:{...n,seq:(((a=o.lastSourceChange)==null?void 0:a.seq)??0)+1}}}),setMethodology:n=>e({methodology:n}),setEffectiveRules:(n,o)=>e({effectiveRules:n??[],ruleDiagnostics:o??[]}),setModel:n=>e(o=>{var l,c,d,u;let a=o.activeView,s=o.selectedDiagramId,i=o.selectedViewpointId;if(a.type==="diagram"){const m=a.diagramId,b=(l=n.diagrams)==null?void 0:l.find(g=>g.id===m),v=(d=(c=o.model)==null?void 0:c.diagrams)==null?void 0:d.find(g=>g.id===m),w=b??(v!=null&&v.sourceFile?(u=n.diagrams)==null?void 0:u.find(g=>g.sourceFile===v.sourceFile):void 0);w&&(w.id!==m&&(a={type:"diagram",diagramId:w.id},pr(a)),s=w.id,i=w.viewpointId==="__model"?null:w.viewpointId)}else(a.type==="welcome"||a.type==="dashboard")&&Object.keys(n.elements).length>0&&(a={type:"dashboard"});return{model:n,activeView:a,selectedDiagramId:s,selectedViewpointId:i}}),setValidation:n=>e({validation:n}),setCompleteness:n=>e({completeness:n}),setConnected:n=>e({connected:n}),setAnalysisIssues:n=>e({analysisIssues:n}),setActiveMode:n=>e({activeMode:n}),setActiveView:n=>{pr(n),e({activeView:n})},setExplorerTab:n=>e({explorerTab:n}),selectElement:n=>{e(n?o=>{const a=[n,...o.recentlyVisited.filter(s=>s!==n)].slice(0,20);return{selectedElementId:n,activeView:{type:"element-detail",elementId:n},recentlyVisited:a}}:{selectedElementId:n})},inspectElement:n=>e(o=>({selectedElementId:n,selectedRelationshipId:null,propertiesPanelCollapsed:n?!1:o.propertiesPanelCollapsed,recentlyVisited:n?[n,...o.recentlyVisited.filter(a=>a!==n)].slice(0,20):o.recentlyVisited})),inspectRelationship:n=>e({selectedRelationshipId:n,selectedElementId:null,propertiesPanelCollapsed:n?!1:r().propertiesPanelCollapsed}),toggleElementSelection:n=>e(o=>{const a=new Set(o.selectedElementIds);return a.has(n)?a.delete(n):a.add(n),{selectedElementIds:a}}),selectAllElements:n=>e({selectedElementIds:new Set(n)}),clearElementSelection:()=>e({selectedElementIds:new Set}),updateElementKind:(n,o)=>{const{model:a}=r();if(!a)return;const s=a.elements[n];if(!s)return;const i={...s,kind:o};e(l=>({model:l.model?{...l.model,elements:{...l.model.elements,[n]:i}}:null})),Bt(i)},bulkUpdateAttributes:(n,o)=>{const{model:a}=r();if(!a)return;const s={...a.elements};for(const i of n){const l=s[i];if(!l)continue;const c={...l,attributes:{...l.attributes,...o}};s[i]=c,Bt(c)}e(i=>({model:i.model?{...i.model,elements:s}:null}))},selectViewpoint:n=>e({selectedViewpointId:n,selectedDiagramId:null}),selectDiagram:n=>{var s;if(!n){e({selectedDiagramId:null});return}const{model:o}=r(),a=(s=o==null?void 0:o.diagrams)==null?void 0:s.find(i=>i.id===n);e(a?{selectedDiagramId:n,selectedViewpointId:a.viewpointId==="__model"?null:a.viewpointId}:{selectedDiagramId:n})},setSearchTerm:n=>e({searchTerm:n}),toggleSidebar:()=>e(n=>({sidebarCollapsed:!n.sidebarCollapsed})),togglePropertiesPanel:()=>e(n=>({propertiesPanelCollapsed:!n.propertiesPanelCollapsed})),toggleLayerVisibility:n=>e(o=>{const a=new Set(o.hiddenLayers);return a.has(n)?a.delete(n):a.add(n),{hiddenLayers:a}}),setOntologyGroupBy:n=>e({ontologyGroupBy:n,collapsedGroups:new Set}),toggleGroupCollapsed:n=>e(o=>{const a=new Set(o.collapsedGroups);return a.has(n)?a.delete(n):a.add(n),{collapsedGroups:a}}),setAvailableOntologies:n=>e(o=>{let a=new Set(n.filter(l=>l.selected).map(l=>l.name));const s=["@memoarchitect/ontology"];for(const l of n)s.includes(l.name)&&a.add(l.name);a.size===0&&n.length>0&&(a=new Set(n.map(l=>l.name)));const i=o.focusedOntologyId??(a.size>0?[...a][0]:null);return{availableOntologies:n,selectedOntologies:a,focusedOntologyId:i}}),toggleOntologySelection:n=>e(o=>{const a=new Set(o.selectedOntologies);return a.has(n)?a.delete(n):a.add(n),{selectedOntologies:a}}),setFocusedOntology:n=>e({focusedOntologyId:n}),setSelectedOntologyKind:n=>e({selectedOntologyKind:n}),setOntologyViewMode:n=>e({ontologyViewMode:n}),toggleOntologyRelationships:()=>e(n=>({showOntologyRelationships:!n.showOntologyRelationships})),setHighlightedRelationshipType:n=>e(o=>({highlightedRelationshipType:o.highlightedRelationshipType===n?null:n})),toggleHiddenEdgeType:n=>e(o=>{const a=new Set(o.hiddenEdgeTypes);return a.has(n)?a.delete(n):a.add(n),{hiddenEdgeTypes:a}}),saveOntologySelection:()=>{const{model:n,availableOntologies:o,selectedOntologies:a}=r();if(!n)return{success:!0};const s=o.filter(c=>!a.has(c.name)),i=new Set;for(const c of s)for(const d of c.layers)for(const u of d.kinds)i.add(u.name);const l=[];if(i.size>0){for(const c of Object.values(n.elements))if(i.has(c.kind)){const d=s.find(u=>u.layers.some(m=>m.kinds.some(b=>b.name===c.kind)));l.push({elementId:c.id,elementName:c.name,kind:c.kind,fromOntology:(d==null?void 0:d.name)??"unknown"})}}return{success:!0,orphanedElements:l}},setOntologyInstallStatus:n=>e({ontologyInstallStatus:n}),toggleGapBar:()=>e(n=>({gapBarExpanded:!n.gapBarExpanded})),setGapBarHeight:n=>e({gapBarHeight:Math.max(80,Math.min(400,n))}),setCatalogGroupBy:n=>e({catalogGroupBy:n,catalogCollapsed:new Set}),toggleCatalogCollapsed:n=>e(o=>{const a=new Set(o.catalogCollapsed);return a.has(n)?a.delete(n):a.add(n),{catalogCollapsed:a}}),setCatalogCollapsedAll:n=>e(o=>n?{catalogCollapsed:new Set(["__ALL__"])}:{catalogCollapsed:new Set}),setContextMenu:n=>e({contextMenu:n}),setAttributeFilter:n=>e({attributeFilter:n}),setLabelFilter:n=>e({labelFilter:n}),toggleTagFilter:n=>e(o=>({tagFilters:o.tagFilters.includes(n)?o.tagFilters.filter(s=>s!==n):[...o.tagFilters,n]})),clearTagFilters:()=>e({tagFilters:[]}),setEditingElement:n=>e({editingElementId:n}),updateElementField:(n,o,a)=>e(s=>{const i=new Map(s.pendingEdits),l=i.get(n)||{};return i.set(n,{...l,[o]:a}),{pendingEdits:i}}),updateElementAttribute:(n,o,a)=>e(s=>{const i=new Map(s.pendingEdits),l=i.get(n)||{},c={...l.attributes||{},[o]:a};return i.set(n,{...l,attributes:c}),{pendingEdits:i}}),moveElementToPackage:(n,o)=>nt("element:move-package",{elementId:n,targetPackage:o}),createPackage:(n,o)=>nt("package:create",{name:n,...o?{parent:o}:{}}),renamePackage:(n,o)=>nt("package:rename",{qualifiedName:n,name:o}),movePackage:(n,o)=>nt("package:move",{qualifiedName:n,targetParent:o}),deletePackage:n=>nt("package:delete",{qualifiedName:n}),addElement:(n,o,a)=>{const s=r();if(!s.model)return;const i=`${n.toLowerCase().replace(/\s+/g,"_")}_${Math.random().toString(36).substr(2,5)}`,l=Object.values(s.model.elements).find(u=>u.kind===n),c=a?Object.values(s.model.elements).find(u=>u.package===a):void 0,d={id:i,name:o,kind:n,construct:(l==null?void 0:l.construct)||"part",layer:(l==null?void 0:l.layer)||"Other",doc:"",attributes:{},...a?{package:a}:{},file:(c==null?void 0:c.file)||(l==null?void 0:l.file)||"model/generated.sysml"};e(u=>({model:u.model?{...u.model,elements:{...u.model.elements,[i]:d}}:null,selectedElementId:i,activeView:{type:"element-detail",elementId:i}})),an(d)},createModelElement:n=>{const o=n.id??`${n.kind.toLowerCase().replace(/\W+/g,"_")}_${Math.random().toString(36).slice(2,8)}`,a={...n,id:o};return e(s=>({model:s.model?{...s.model,elements:{...s.model.elements,[o]:a}}:null,selectedElementId:o})),an(a),o},persistElementAttributes:(n,o)=>{var i;const a=(i=r().model)==null?void 0:i.elements[n];if(!a)return;const s={...a,attributes:{...a.attributes,...o}};e(l=>({model:l.model?{...l.model,elements:{...l.model.elements,[n]:s}}:null})),Bt(s)},addUserViewpoint:n=>e(o=>({userViewpoints:[...o.userViewpoints,n]})),updateUserViewpoint:n=>e(o=>({userViewpoints:o.userViewpoints.map(a=>a.id===n.id?n:a)})),deleteUserViewpoint:n=>e(o=>({userViewpoints:o.userViewpoints.filter(a=>a.id!==n),selectedViewpointId:o.selectedViewpointId===n?null:o.selectedViewpointId})),createDiagram:({id:n,name:o,diagramType:a,viewKind:s,viewpointId:i,elementIds:l=[],activate:c=!0})=>{const d=n??`diag_${Math.random().toString(36).substr(2,9)}`,u={id:d,name:o,diagramType:a,viewKind:s,viewpointId:i,auto:!1,elementIds:l};return e(m=>({model:m.model?{...m.model,diagrams:[...m.model.diagrams??[],u]}:null,selectedDiagramId:c?d:m.selectedDiagramId,activeView:c?{type:"diagram",diagramId:d}:m.activeView})),ri({id:d,name:o,diagramType:a,viewKind:s,viewpointId:i,elementIds:l}),d},addElementToDiagram:(n,o)=>{var l;const{model:a}=r(),s=(l=a==null?void 0:a.diagrams)==null?void 0:l.find(c=>c.id===n);if(!s)return;const i=s.elementIds??[];i.includes(o)||r().updateDiagramElementIds(n,[...i,o])},updateDiagramElementIds:(n,o)=>{const{model:a}=r();if(!(a!=null&&a.diagrams))return;const s=a.diagrams.findIndex(c=>c.id===n);if(s<0)return;const i={...a.diagrams[s],elementIds:o},l=[...a.diagrams];l[s]=i,e(c=>({model:c.model?{...c.model,diagrams:l}:null})),cr({id:n,elementIds:o})},deleteDiagram:n=>{e(o=>({model:o.model?{...o.model,diagrams:(o.model.diagrams??[]).filter(a=>a.id!==n)}:null,selectedDiagramId:o.selectedDiagramId===n?null:o.selectedDiagramId,activeView:o.activeView.type==="diagram"&&o.activeView.diagramId===n?{type:"welcome"}:o.activeView})),oi(n)},applyDiagramParseResult:(n,o,a)=>{const{model:s}=r();if(!(s!=null&&s.diagrams))return;const i=s.diagrams.findIndex(l=>l.id===n);if(i>=0){const l={...s.diagrams[i],elementIds:o},c=[...s.diagrams];c[i]=l,e(d=>({model:d.model?{...d.model,diagrams:c}:null,diagramParseErrors:{...d.diagramParseErrors,[n]:a}})),cr({id:n,elementIds:o})}else e(l=>({diagramParseErrors:{...l.diagramParseErrors,[n]:a}}))},addDhfDocument:n=>e(o=>({dhfDocuments:[...o.dhfDocuments,n]})),setDhfDocuments:n=>e({dhfDocuments:n}),hydrateDhfSettings:n=>e(o=>({dhfSettings:{...o.dhfSettings,...n}})),updateDhfSettings:n=>e(o=>({dhfSettings:{...o.dhfSettings,...n}})),updateDhfDocumentMeta:(n,o)=>e(a=>({dhfDocuments:a.dhfDocuments.map(s=>s.id===n?{...s,...o}:s)})),updateDhfDocumentContent:(n,o)=>e(a=>({dhfDocuments:a.dhfDocuments.map(s=>s.id===n?{...s,content:o}:s)})),removeDhfDocument:n=>e(o=>({dhfDocuments:o.dhfDocuments.filter(a=>a.id!==n),activeView:o.activeView.type==="dhf-document"&&o.activeView.docId===n?{type:"dhf-dashboard"}:o.activeView})),setBulkImportOpen:n=>e({bulkImportOpen:n}),setImportResult:n=>e({importResult:n}),clearImportResult:()=>e({importResult:null}),cancelEdit:n=>e(o=>{const a=new Map(o.pendingEdits);return a.delete(n),{pendingEdits:a}}),applyEdit:async n=>{const{pendingEdits:o,model:a}=r(),s=o.get(n);if(!s||!a)return;const i=a.elements[n];if(!i)return;const l={...i};s.name!==void 0&&(l.name=s.name),s.doc!==void 0&&(l.doc=s.doc),s.attributes&&(l.attributes={...i.attributes,...s.attributes});const c={...a,elements:{...a.elements,[n]:l}};if(e({model:c}),!(n.startsWith("new_")?await an(l):await Bt(l)).success){e({model:a});return}const u=new Map(r().pendingEdits);u.delete(n),e({pendingEdits:u})}})),ui={relationships:[],kinds:[]};function xo(e){return(e==null?void 0:e.registries)??ui}function pi(e,r){return On(r,xo(e))}function Cu(e){const r=new Map;if(!e)return r;for(const n of Object.values(e.elements))r.has(n.layer)||r.set(n.layer,[]),r.get(n.layer).push(n);return r}function mi(e,r){return e?e.relationships.filter(n=>n.sourceId===r||n.targetId===r):[]}function Qt(e,r){return!e||!r||!e.diagrams?null:e.diagrams.find(n=>n.id===r)??null}function Eu(e,r){const n=Qt(e,r);return n?n.sourceFiles&&n.sourceFiles.length>0?n.sourceFiles:n.sourceFile?[n.sourceFile]:[]:[]}function fi(e,r){var o;const n=r?(o=e==null?void 0:e.elements[r])==null?void 0:o.file:void 0;return n?[...Ss(n,e==null?void 0:e.sourceGraph)]:[]}function hi(e,r){return e?Cs(e.files,r):!1}function zt(e,r){return e!=null&&e.diagrams?e.diagrams.filter(n=>{var o;return n.viewpointId===r||((o=n.viewpointIds)==null?void 0:o.includes(r))}):[]}const $n={dashboard:"/",dsm:"/dsm",ontology:"/ontology",traceability:"/traceability","scenario-editor":"/use-cases","model-diff":"/diff","compliance-wizard":"/compliance",statistics:"/statistics","dhf-dashboard":"/dhf","dhf-dashboard-legacy":"/dhf/legacy",ai:"/ai",ask:"/ask","sysml-generator":"/generate","review-dashboard":"/review","workflow-wizard":"/workflow",import:"/import",analysis:"/analysis","ui-screens":"/ui-screens"},bo={"/dashboard":"dashboard","/scenarios":"scenario-editor"},yi={...Object.fromEntries(Object.entries($n).map(([e,r])=>[r,e])),...bo};function gi(e){return e.toLowerCase().replace(/\s+/g,"-")}function xi(e){switch(e.type){case"welcome":return"/";case"ontology-detail":return e.layerId?`/ontology/${encodeURIComponent(e.packageName)}/${encodeURIComponent(e.layerId)}`:`/ontology/${encodeURIComponent(e.packageName)}`;case"dhf-document":return`/dhf/${encodeURIComponent(e.docId)}`;case"tabular":{const r=new URLSearchParams;e.viewpointId&&r.set("viewpoint",e.viewpointId),e.diagramId&&r.set("diagram",e.diagramId);const n=r.toString();return n?`/table?${n}`:"/table"}case"element-detail":case"diagram":return null;default:return $n[e.type]??null}}function bi(e,r=""){const n=e.length>1?e.replace(/\/+$/,""):e,o=yi[n];if(o)return{type:o};if(n==="/table"){const s=new URLSearchParams(r);return{type:"tabular",viewpointId:s.get("viewpoint")??void 0,diagramId:s.get("diagram")??void 0}}const a=n.split("/").filter(Boolean);return a[0]==="dhf"&&a.length===2?{type:"dhf-document",docId:decodeURIComponent(a[1])}:a[0]==="ontology"&&a.length>=2?{type:"ontology-detail",packageName:decodeURIComponent(a[1]),layerId:a[2]?decodeURIComponent(a[2]):void 0}:null}function vi(e){const r=e.split("/").filter(Boolean);return r[0]==="catalog"&&r.length===3||r[0]==="diagrams"&&r.length===3}function wi(e){const r=e.split("/").filter(Boolean);return r[0]==="catalog"&&r.length<=2||r[0]==="diagrams"&&r.length===1}function ki(){return[...Object.values($n),...Object.keys(bo)].filter(e=>e!=="/")}const Si=[{id:"ai-tools",label:"AI Tools",description:"Model Assistant (model Q&A and proposed edits) and SysML Generator (natural language → SysML v2). Generated content is unreviewed and carries no design-control provenance, so the surface stays off by default.",stage:"experimental"},{id:"ontology",label:"Ontology Explorer",description:"Direct ontology browsing is an advanced workbench surface and stays off in the default regulated workspace.",stage:"experimental"},{id:"import",label:"Import",description:"Model import is an advanced transformation surface and stays off in the default regulated workspace.",stage:"experimental"},{id:"model-tools",label:"Model Tools",description:"Matrices, diagnostics, review, and workflow tools are available together only in the experimental workbench.",stage:"experimental"},{id:"analysis",label:"Analysis & Jupyter",description:"Analysis provides direct access to the user’s live local JupyterLab notebook workspace.",stage:"stable"}];function Ci(){return typeof window>"u"?{}:window.__MEMO_FLAGS__??{}}function ue(e){const r=Si.find(n=>n.id===e);return r?r.stage==="stable"?!0:Ci().experimental===!0:!1}function At(){const e=S(i=>i.model),r=S(i=>i.setActiveView),n=S(i=>i.setActiveMode),o=Ce(),a=e==null?void 0:e.metadata;function s(){n("dashboard"),r({type:"dashboard"}),o("/")}return t.jsxs("div",{className:"flex items-center gap-3 px-4 py-2",style:{background:"#0B1E2D",borderBottom:"1px solid rgba(255,255,255,0.06)",position:"relative",zIndex:10},children:[t.jsx("button",{onClick:()=>window.dispatchEvent(new Event("memo:toggle-navigation")),title:"Open navigation",style:{width:"40px",height:"40px",borderRadius:"8px",background:"none",border:"none",cursor:"pointer",color:"#2DD4A8",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"24px",flexShrink:0,transition:"color 150ms"},onMouseEnter:i=>{i.currentTarget.style.background="rgba(45,212,168,0.12)"},onMouseLeave:i=>{i.currentTarget.style.background="none"},children:"☰"}),t.jsx("button",{onClick:s,className:"text-sm font-bold transition-opacity",style:{color:"#2DD4A8",letterSpacing:"0.04em",background:"none",border:"none",cursor:"pointer",padding:0},onMouseEnter:i=>i.currentTarget.style.opacity="0.75",onMouseLeave:i=>i.currentTarget.style.opacity="1",title:"Go to home",children:"MEMO Architect"}),t.jsx("div",{className:"flex-1"}),((a==null?void 0:a.projectName)||(a==null?void 0:a.gitUser))&&t.jsxs("span",{title:"Current project and Git revision",style:{color:"rgba(255,255,255,0.62)",fontSize:"12px",whiteSpace:"nowrap"},children:[(a==null?void 0:a.projectName)&&t.jsx("span",{style:{color:"rgba(255,255,255,0.8)",fontWeight:600},children:a.projectName}),(a==null?void 0:a.projectName)&&(a==null?void 0:a.gitUser)&&t.jsx("span",{style:{margin:"0 8px",color:"rgba(255,255,255,0.32)"},children:"|"}),(a==null?void 0:a.gitUser)&&t.jsxs(t.Fragment,{children:["@",a.gitUser,a.gitBranch&&t.jsxs(t.Fragment,{children:[" · ",a.gitBranch]}),a.gitCommitShort&&t.jsxs("span",{style:{marginLeft:4,fontFamily:"ui-monospace, SFMono-Regular, Menlo, monospace"},children:[a.gitCommitShort,a.gitDirty?"*":""]})]})]}),t.jsx("img",{src:"/logo.png",alt:"MEMO",style:{height:40,opacity:.9,cursor:"pointer"},onClick:s,title:"Go to home"})]})}const vo="memo-working-sets",wo="memo-quick-slots";function Ei(){return`ws-${Date.now()}-${Math.random().toString(36).slice(2,8)}`}function Nt(e){try{localStorage.setItem(vo,JSON.stringify(e))}catch{}}function ji(){try{const e=localStorage.getItem(vo);return e?JSON.parse(e):[]}catch{return[]}}function mr(){try{const e=localStorage.getItem(wo);return e?JSON.parse(e):[null,null,null,null]}catch{return[null,null,null,null]}}function fr(e){try{localStorage.setItem(wo,JSON.stringify(e))}catch{}}const ln=Lr((e,r)=>({workingSets:[],activeWorkingSetId:null,quickSlots:mr(),loadFromStorage:()=>{const n=ji(),o=mr();e({workingSets:n,quickSlots:o})},saveWorkingSet:(n,o)=>{const a=Ei(),s=Date.now(),i={id:a,name:n,createdAt:s,updatedAt:s,state:o},l=[...r().workingSets,i];return e({workingSets:l,activeWorkingSetId:a}),Nt(l),a},updateWorkingSet:(n,o)=>{const a=r().workingSets.map(s=>s.id===n?{...s,state:o,updatedAt:Date.now()}:s);e({workingSets:a}),Nt(a)},renameWorkingSet:(n,o)=>{const a=r().workingSets.map(s=>s.id===n?{...s,name:o,updatedAt:Date.now()}:s);e({workingSets:a}),Nt(a)},deleteWorkingSet:n=>{const o=r().workingSets.filter(s=>s.id!==n),a=r().activeWorkingSetId===n?null:r().activeWorkingSetId;e({workingSets:o,activeWorkingSetId:a}),Nt(o)},setActiveWorkingSet:n=>e({activeWorkingSetId:n}),saveQuickSlot:(n,o,a)=>{const s=["Last Session","Slot 1","Slot 2","Slot 3"],i=[...r().quickSlots];for(;i.length<4;)i.push(null);i[n]={name:a??s[n],state:o,savedAt:Date.now()},fr(i),e({quickSlots:i})},clearQuickSlot:n=>{const o=[...r().quickSlots];o[n]=null,fr(o),e({quickSlots:o})}})),I={badge:"12px",xs:"12px",sm:"13px",md:"14px",lg:"15px",explorer:{group:"13px",kind:"12px",item:"13px",element:"13px",count:"12px",search:"13px"}},f={primary:"#082744",secondary:"#324E67",muted:"#5C7188",faint:"#8CA0B1",surface:"#FFFFFF",surfaceAlt:"#EEF4F7",border:"#D8E2E9",borderLight:"#E6EDF2",accent:"#2DD4A8",accentDark:"#0B1E2D"},Di={sm:"0 1px 3px rgba(0,0,0,0.08)",md:"0 2px 8px rgba(0,0,0,0.1)",lg:"0 4px 16px rgba(0,0,0,0.12)",selected:"0 0 0 2px #2DD4A8, 0 4px 12px rgba(45, 212, 168, 0.3)"},ju={md:"10px"},Du={defaultWidth:2,flowWidth:2.5,arrowSize:16,labelBgPadding:[6,4],labelBgRadius:6,labelBgStyle:{fill:"#FFFFFF",fillOpacity:.92,stroke:"#E5E5E0",strokeWidth:.5}};function dn(){const e=S.getState();return{activeView:e.activeView,explorerTab:e.explorerTab,selectedElementId:e.selectedElementId,selectedViewpointId:e.selectedViewpointId,selectedDiagramId:e.selectedDiagramId,sidebarCollapsed:e.sidebarCollapsed,propertiesPanelCollapsed:e.propertiesPanelCollapsed,hiddenLayers:Array.from(e.hiddenLayers)}}function cn(e){const r=S.getState();r.setActiveView(e.activeView),r.setExplorerTab(e.explorerTab),r.selectElement(e.selectedElementId),e.selectedDiagramId&&r.selectDiagram(e.selectedDiagramId),e.selectedViewpointId&&r.selectViewpoint(e.selectedViewpointId)}function Bi(){const[e,r]=p.useState(!1),n=p.useRef(null),o=ln(l=>l.quickSlots),a=ln(l=>l.saveQuickSlot),s=ln(l=>l.clearQuickSlot);p.useEffect(()=>{if(!e)return;const l=c=>{n.current&&!n.current.contains(c.target)&&r(!1)};return document.addEventListener("mousedown",l),()=>document.removeEventListener("mousedown",l)},[e]),p.useEffect(()=>{const l=()=>{a(0,dn(),"Last Session")};return window.addEventListener("beforeunload",l),()=>window.removeEventListener("beforeunload",l)},[a]),p.useEffect(()=>{const l=c=>{if(!(c.ctrlKey||c.metaKey))return;const d=c.key==="1"?1:c.key==="2"?2:c.key==="3"?3:null;if(d)if(c.preventDefault(),c.shiftKey)a(d,dn());else{const u=o[d];u&&cn(u.state)}};return window.addEventListener("keydown",l),()=>window.removeEventListener("keydown",l)},[o,a]);const i=["Last Session","Slot 1","Slot 2","Slot 3"];return t.jsxs("div",{ref:n,style:{position:"relative"},children:[t.jsxs("button",{onClick:()=>r(l=>!l),className:"flex items-center gap-1 px-3 py-1.5 text-sm font-medium rounded-md transition-all",style:e?{background:"rgba(45,212,168,0.15)",color:"#2DD4A8"}:{background:"transparent",color:"rgba(255,255,255,0.5)"},title:"Workspaces (Ctrl+1/2/3 to restore, Ctrl+Shift+1/2/3 to save)",children:[t.jsx("span",{children:"⊟"}),t.jsx("span",{style:{fontSize:"10px",marginLeft:"2px",opacity:.7},children:"▾"})]}),e&&t.jsxs("div",{style:{position:"absolute",top:"calc(100% + 6px)",right:0,zIndex:100,background:"#132D3E",border:"1px solid rgba(45,212,168,0.2)",borderRadius:"8px",minWidth:"240px",boxShadow:"0 8px 24px rgba(0,0,0,0.4)",overflow:"hidden"},children:[t.jsx("div",{className:"px-3 py-2",style:{borderBottom:"1px solid rgba(255,255,255,0.08)",fontSize:I.xs,color:"rgba(255,255,255,0.4)",fontWeight:600},children:"WORKSPACES"}),t.jsxs("div",{className:"px-3 py-2",style:{borderBottom:"1px solid rgba(255,255,255,0.06)"},children:[t.jsxs("div",{className:"flex items-center justify-between gap-2",children:[t.jsx("span",{style:{fontSize:I.xs,color:"rgba(255,255,255,0.5)",fontWeight:600},children:"Last Session"}),o[0]?t.jsx("button",{onClick:()=>{cn(o[0].state),r(!1)},className:"px-2 py-0.5 rounded text-xs",style:{background:"rgba(45,212,168,0.15)",color:"#2DD4A8",border:"none",cursor:"pointer"},children:"Restore"}):t.jsx("span",{style:{fontSize:"10px",color:"rgba(255,255,255,0.25)"},children:"— none saved —"})]}),o[0]&&t.jsx("div",{style:{fontSize:"10px",color:"rgba(255,255,255,0.3)",marginTop:2},children:new Date(o[0].savedAt).toLocaleString()})]}),[1,2,3].map(l=>{const c=o[l];return t.jsxs("div",{className:"flex items-center gap-2 px-3 py-2",style:{borderBottom:"1px solid rgba(255,255,255,0.04)"},children:[t.jsxs("span",{style:{fontSize:"10px",fontWeight:700,color:"rgba(255,255,255,0.3)",minWidth:"16px"},children:["⌃",l]}),t.jsx("div",{className:"flex-1 min-w-0",children:c?t.jsxs(t.Fragment,{children:[t.jsx("div",{style:{fontSize:I.xs,color:"rgba(255,255,255,0.7)",fontWeight:500},children:c.name}),t.jsx("div",{style:{fontSize:"10px",color:"rgba(255,255,255,0.3)"},children:new Date(c.savedAt).toLocaleTimeString()})]}):t.jsx("span",{style:{fontSize:I.xs,color:"rgba(255,255,255,0.25)",fontStyle:"italic"},children:"empty"})}),t.jsxs("div",{className:"flex gap-1",children:[c&&t.jsx("button",{onClick:()=>{cn(c.state),r(!1)},style:{fontSize:"10px",padding:"2px 6px",borderRadius:3,background:"rgba(45,212,168,0.15)",color:"#2DD4A8",border:"none",cursor:"pointer"},children:"Restore"}),t.jsx("button",{onClick:()=>a(l,dn(),i[l]),style:{fontSize:"10px",padding:"2px 6px",borderRadius:3,background:"rgba(255,255,255,0.1)",color:"rgba(255,255,255,0.6)",border:"none",cursor:"pointer"},title:`Save current view to Slot ${l} (⌃⇧${l})`,children:"Save"}),c&&t.jsx("button",{onClick:()=>s(l),style:{fontSize:"10px",padding:"2px 4px",borderRadius:3,background:"transparent",color:"rgba(255,255,255,0.3)",border:"none",cursor:"pointer"},title:"Clear slot",children:"✕"})]})]},l)})]})]})}const Fi=[{value:"",label:"— Select phase —"},{value:"concept",label:"Concept"},{value:"design",label:"Design & Development"},{value:"verification",label:"Verification & Validation"},{value:"production",label:"Production"}],ge={width:"100%",padding:"7px 10px",border:"1px solid #D1D5DB",borderRadius:"6px",fontSize:"13px",color:"#1B3A4B",background:"#fff",boxSizing:"border-box",outline:"none",fontFamily:"inherit"},he={fontSize:"11px",fontWeight:600,color:"#6B7280",textTransform:"uppercase",letterSpacing:"0.04em",display:"block",marginBottom:"4px"},un={fontSize:"12px",fontWeight:700,color:"#1B3A4B",paddingBottom:"6px",borderBottom:"1px solid #E5E7EB",marginBottom:"12px",marginTop:"4px"},Ai={display:"grid",gridTemplateColumns:"1fr 1fr",gap:"12px"};function ko({onClose:e}){const r=S(d=>d.dhfSettings),n=S(d=>d.updateDhfSettings),[o,a]=p.useState({...r}),[s,i]=p.useState("identity");function l(d,u){a(m=>({...m,[d]:u}))}function c(){n(o),e()}return t.jsx("div",{style:{position:"fixed",inset:0,zIndex:9999,display:"flex",alignItems:"center",justifyContent:"center",background:"rgba(0,0,0,0.45)"},onClick:d=>{d.target===d.currentTarget&&e()},children:t.jsxs("div",{style:{background:"#fff",borderRadius:"12px",width:"560px",maxHeight:"86vh",display:"flex",flexDirection:"column",boxShadow:"0 24px 60px rgba(0,0,0,0.22)",overflow:"hidden"},children:[t.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"10px",padding:"16px 20px",borderBottom:"1px solid #E5E7EB",flexShrink:0},children:[t.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"#6B7280",strokeWidth:"2",children:[t.jsx("circle",{cx:"12",cy:"12",r:"3"}),t.jsx("path",{d:"M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83-2.83l.06-.06A1.65 1.65 0 0 0 4.68 15a1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 2.83-2.83l.06.06A1.65 1.65 0 0 0 9 4.68a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 2.83l-.06.06A1.65 1.65 0 0 0 19.4 9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z"})]}),t.jsx("span",{style:{fontSize:"15px",fontWeight:700,color:"#1B3A4B",flex:1},children:"DHF Global Settings"}),t.jsx("button",{onClick:e,style:{background:"none",border:"none",cursor:"pointer",color:"#9CA3AF",fontSize:"20px",lineHeight:1,padding:"0 2px"},children:"×"})]}),t.jsx("div",{style:{display:"flex",borderBottom:"1px solid #E5E7EB",flexShrink:0,padding:"0 20px"},children:["identity","branding","layout"].map(d=>t.jsx("button",{onClick:()=>i(d),style:{padding:"10px 14px",border:"none",background:"none",fontSize:"12px",fontWeight:600,cursor:"pointer",color:s===d?"#1B3A4B":"#9CA3AF",borderBottom:`2px solid ${s===d?"#2DD4A8":"transparent"}`,marginBottom:"-1px",textTransform:"capitalize"},children:d==="identity"?"Project":d==="branding"?"Branding":"Layout"},d))}),t.jsxs("div",{style:{flex:1,overflowY:"auto",padding:"20px"},children:[s==="identity"&&t.jsxs("div",{children:[t.jsx("p",{style:un,children:"Project Identity"}),t.jsxs("p",{style:{fontSize:"12px",color:"#6B7280",marginBottom:"16px",lineHeight:"1.5"},children:["These values resolve ",t.jsx("code",{style:{background:"#F3F4F6",padding:"1px 4px",borderRadius:"3px"},children:"{{project.*}}"})," directives in all templates and the AI drafting context."]}),t.jsxs("div",{style:Ai,children:[t.jsxs("div",{children:[t.jsx("label",{style:he,children:"Company / Manufacturer"}),t.jsx("input",{style:ge,value:o.company,onChange:d=>l("company",d.target.value),placeholder:"Acme Medical Devices Inc."})]}),t.jsxs("div",{children:[t.jsx("label",{style:he,children:"Product / Device Name"}),t.jsx("input",{style:ge,value:o.product,onChange:d=>l("product",d.target.value),placeholder:"InfuSafe IV Pump"})]}),t.jsxs("div",{children:[t.jsx("label",{style:he,children:"Device Type"}),t.jsx("input",{style:ge,value:o.deviceType,onChange:d=>l("deviceType",d.target.value),placeholder:"Class II active implantable"})]}),t.jsxs("div",{children:[t.jsx("label",{style:he,children:"Document Version"}),t.jsx("input",{style:ge,value:o.version,onChange:d=>l("version",d.target.value),placeholder:"1.0.0"})]}),t.jsxs("div",{style:{gridColumn:"1 / -1"},children:[t.jsx("label",{style:he,children:"Development Phase"}),t.jsx("select",{style:ge,value:o.phase,onChange:d=>l("phase",d.target.value),children:Fi.map(d=>t.jsx("option",{value:d.value,children:d.label},d.value))})]}),t.jsxs("div",{style:{gridColumn:"1 / -1"},children:[t.jsx("label",{style:he,children:"Document ID Prefix"}),t.jsx("input",{style:{...ge,fontFamily:"monospace"},value:o.documentNumberingPrefix,onChange:d=>l("documentNumberingPrefix",d.target.value),placeholder:"DOC"}),t.jsxs("p",{style:{fontSize:"11px",color:"#9CA3AF",marginTop:"4px"},children:["Used in document IDs, e.g. ",t.jsxs("code",{children:[o.documentNumberingPrefix||"DOC","-RMP-001"]})]})]})]})]}),s==="branding"&&t.jsxs("div",{children:[t.jsx("p",{style:un,children:"Branding"}),t.jsx("p",{style:{fontSize:"12px",color:"#6B7280",marginBottom:"16px",lineHeight:"1.5"},children:"Branding applied to exported HTML and DOCX documents. Per-document overrides can be set in the document's frontmatter."}),t.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"14px"},children:[t.jsxs("div",{children:[t.jsx("label",{style:he,children:"Full Logo URL"}),t.jsx("input",{style:ge,value:o.logoUrl,onChange:d=>l("logoUrl",d.target.value),placeholder:"https://... or data:image/png;base64,..."}),t.jsx("p",{style:{fontSize:"11px",color:"#9CA3AF",marginTop:"4px"},children:"Shown in document cover pages and report headers."}),o.logoUrl&&t.jsx("img",{src:o.logoUrl,alt:"Logo preview",style:{maxHeight:"48px",maxWidth:"200px",marginTop:"8px",border:"1px solid #E5E7EB",borderRadius:"4px",padding:"4px"}})]}),t.jsxs("div",{children:[t.jsx("label",{style:he,children:"Compact Logo URL"}),t.jsx("input",{style:ge,value:o.compactLogoUrl,onChange:d=>l("compactLogoUrl",d.target.value),placeholder:"https://... or data:image/png;base64,..."}),t.jsx("p",{style:{fontSize:"11px",color:"#9CA3AF",marginTop:"4px"},children:"Shown in page headers (small). Falls back to Full Logo if empty."}),o.compactLogoUrl&&t.jsx("img",{src:o.compactLogoUrl,alt:"Compact logo preview",style:{maxHeight:"28px",maxWidth:"120px",marginTop:"8px",border:"1px solid #E5E7EB",borderRadius:"4px",padding:"4px"}})]}),t.jsxs("div",{children:[t.jsx("label",{style:he,children:"Primary Color"}),t.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"10px"},children:[t.jsx("input",{type:"color",value:o.primaryColor,onChange:d=>l("primaryColor",d.target.value),style:{width:"40px",height:"32px",padding:"2px",border:"1px solid #D1D5DB",borderRadius:"6px",cursor:"pointer"}}),t.jsx("input",{style:{...ge,flex:1,fontFamily:"monospace"},value:o.primaryColor,onChange:d=>l("primaryColor",d.target.value),placeholder:"#1B3A4B"})]}),t.jsx("p",{style:{fontSize:"11px",color:"#9CA3AF",marginTop:"4px"},children:"Used for headings, table headers, and badges in exported documents."})]})]})]}),s==="layout"&&t.jsxs("div",{children:[t.jsx("p",{style:un,children:"Document Layout"}),t.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"16px"},children:[t.jsxs("div",{children:[t.jsxs("label",{style:{...he,display:"flex",alignItems:"center",gap:"8px",textTransform:"none",fontSize:"13px",fontWeight:600,color:"#1B3A4B",marginBottom:0},children:[t.jsx("input",{type:"checkbox",checked:o.compactMode,onChange:d=>l("compactMode",d.target.checked),style:{accentColor:"#2DD4A8"}}),"Compact mode"]}),t.jsx("p",{style:{fontSize:"12px",color:"#6B7280",marginTop:"4px",marginLeft:"20px"},children:"Tighter line spacing and smaller heading sizes. Useful for regulatory submissions."})]}),t.jsxs("div",{children:[t.jsx("label",{style:he,children:"Page Header Template"}),t.jsx("input",{style:{...ge,fontFamily:"monospace",fontSize:"12px"},value:o.headerTemplate,onChange:d=>l("headerTemplate",d.target.value)}),t.jsxs("p",{style:{fontSize:"11px",color:"#9CA3AF",marginTop:"4px"},children:["Tokens: ",t.jsx("code",{children:"{{id}}"}),", ",t.jsx("code",{children:"{{title}}"}),", ",t.jsx("code",{children:"{{project.product}}"}),", ",t.jsx("code",{children:"{{project.version}}"}),", ",t.jsx("code",{children:"{{date}}"})]})]}),t.jsxs("div",{children:[t.jsx("label",{style:he,children:"Page Footer Template"}),t.jsx("input",{style:{...ge,fontFamily:"monospace",fontSize:"12px"},value:o.footerTemplate,onChange:d=>l("footerTemplate",d.target.value)}),t.jsxs("p",{style:{fontSize:"11px",color:"#9CA3AF",marginTop:"4px"},children:["Tokens: same as header, plus ",t.jsx("code",{children:"{{page}}"})," and ",t.jsx("code",{children:"{{pages}}"})]})]})]})]})]}),t.jsxs("div",{style:{display:"flex",justifyContent:"flex-end",gap:"8px",padding:"14px 20px",borderTop:"1px solid #E5E7EB",flexShrink:0,background:"#FAFAFA"},children:[t.jsx("button",{onClick:e,style:{padding:"8px 16px",borderRadius:"6px",border:"1px solid #D1D5DB",background:"#fff",fontSize:"13px",cursor:"pointer",color:"#374151"},children:"Cancel"}),t.jsx("button",{onClick:c,style:{padding:"8px 20px",borderRadius:"6px",border:"none",background:"#2DD4A8",fontSize:"13px",fontWeight:600,cursor:"pointer",color:"#065F46"},children:"Save Settings"})]})]})})}const Bu=Object.freeze(Object.defineProperty({__proto__:null,DhfSettingsPanel:ko},Symbol.toStringTag,{value:"Module"})),Ni="/help/",Ti=[{id:"dashboard",label:"Dashboard",icon:"⌂"},{id:"catalog",label:"Model Explorer",icon:"☰"},{id:"diagram",label:"Viewpoints",icon:"⊟"},{id:"ui-screens",label:"UI Screens",icon:"▣"},{id:"dhf",label:"Documents",icon:"⊞"},{id:"scenario",label:"Use Cases",icon:"▶"},{id:"ai",label:"AI Tools",icon:"✦",feature:"ai-tools"}],Ri=new Set(["dsm","traceability","statistics","compliance-wizard","model-diff","review-dashboard","workflow-wizard","ontology","ontology-detail","import"]),hr=[{id:"ontology",label:"Ontology Explorer",icon:"◉",view:{type:"ontology"}},{id:"import",label:"Import Model",icon:"↓",view:{type:"import"}},{id:"traceability",label:"Traceability Matrix",icon:"☷",view:{type:"traceability"}},{id:"statistics",label:"Statistics Dashboard",icon:"⊠",view:{type:"statistics"}},{id:"compliance-wizard",label:"Compliance Wizard",icon:"☑",view:{type:"compliance-wizard"}},{id:"model-diff",label:"Model Diff",icon:"↔",view:{type:"model-diff"}},{id:"review-dashboard",label:"Design Review Dashboard",icon:"📋",view:{type:"review-dashboard"}},{id:"workflow-wizard",label:"Workflow Wizard",icon:"🧙",view:{type:"workflow-wizard"}}];function Ii({activeViewType:e}){const r=S(l=>l.setActiveView);S(l=>l.setActiveMode);const[n,o]=p.useState(!1),a=p.useRef(null),i=hr.map(l=>l.id).includes(e);return p.useEffect(()=>{function l(c){a.current&&!a.current.contains(c.target)&&o(!1)}return n&&document.addEventListener("mousedown",l),()=>document.removeEventListener("mousedown",l)},[n]),t.jsxs("div",{ref:a,style:{position:"relative"},children:[t.jsxs("button",{onClick:()=>o(l=>!l),className:"flex items-center gap-1 px-4 py-1.5 text-sm font-medium rounded-md transition-all",style:i||n?{background:"rgba(45, 212, 168, 0.15)",color:"#2DD4A8"}:{background:"transparent",color:"rgba(255,255,255,0.5)"},children:[t.jsx("span",{className:"mr-0.5",children:"⚙"}),"Tools",t.jsx("span",{style:{fontSize:"10px",marginLeft:"2px",opacity:.7},children:"▾"})]}),n&&t.jsx("div",{style:{position:"absolute",top:"calc(100% + 6px)",left:0,zIndex:100,background:"#132D3E",border:"1px solid rgba(45,212,168,0.2)",borderRadius:"8px",minWidth:"220px",boxShadow:"0 8px 24px rgba(0,0,0,0.4)",overflow:"hidden"},children:hr.filter(l=>(l.id!=="ontology"||ue("ontology"))&&(l.id!=="import"||ue("import"))).map((l,c)=>{const d=e===l.view.type;return t.jsxs("button",{onClick:()=>{r(d?{type:"welcome"}:l.view),o(!1)},className:"w-full flex items-center gap-3 px-4 py-2.5 text-left transition-colors",style:{fontSize:"13px",color:d?"#2DD4A8":"rgba(255,255,255,0.75)",background:d?"rgba(45,212,168,0.1)":"transparent",borderTop:c>0?"1px solid rgba(255,255,255,0.05)":"none"},onMouseEnter:u=>{d||(u.currentTarget.style.background="rgba(255,255,255,0.06)")},onMouseLeave:u=>{d||(u.currentTarget.style.background="transparent")},children:[t.jsx("span",{style:{width:"18px",textAlign:"center",opacity:.7},children:l.icon}),l.label]},l.id)})})]})}function Mi(){const e=S(y=>y.activeMode),r=S(y=>y.setActiveMode),n=S(y=>y.activeView),o=S(y=>y.setActiveView),a=S(y=>y.setExplorerTab),s=S(y=>y.sidebarCollapsed),i=S(y=>y.toggleSidebar),l=Ce(),[c,d]=p.useState(!1),[u,m]=p.useState(!1),[b,v]=p.useState(!1);p.useEffect(()=>{const y=()=>d(B=>!B);return window.addEventListener("memo:toggle-navigation",y),()=>window.removeEventListener("memo:toggle-navigation",y)},[]);const w=["catalog","diagram","dhf","scenario"],g=Ri.has(n.type)?"":e==="dhf"||n.type==="dhf-dashboard"?"dhf":n.type==="scenario-editor"||e==="scenario"&&n.type==="diagram"?"scenario":n.type==="analysis"?"analysis":n.type==="ui-screens"||e==="ui-screens"?"ui-screens":n.type==="ai"||n.type==="ask"||n.type==="sysml-generator"?"ai":n.type==="dashboard"?"dashboard":n.type==="diagram"||e==="diagram"?"diagram":e==="catalog"?"catalog":e;function h(y){if(y===g&&w.includes(y)){i();return}switch(w.includes(y)&&s&&i(),r(y),y){case"dashboard":o({type:"dashboard"});break;case"catalog":o({type:"welcome"}),l("/catalog");break;case"diagram":a("views"),o({type:"welcome"}),l("/diagrams");break;case"ui-screens":o({type:"ui-screens"}),l("/ui-screens");break;case"dhf":o({type:"dhf-dashboard"});break;case"scenario":o({type:"scenario-editor"});break;case"ai":o({type:"ai"});break}}return c?t.jsxs(t.Fragment,{children:[t.jsx("div",{onClick:()=>d(!1),style:{position:"fixed",inset:0,zIndex:80,background:"rgba(4, 18, 28, 0.35)"}}),t.jsxs("aside",{"aria-label":"Main navigation",style:{position:"fixed",left:0,top:0,bottom:0,width:296,zIndex:81,background:"#0B1E2D",borderRight:"1px solid rgba(45,212,168,0.28)",boxShadow:"12px 0 32px rgba(0,0,0,0.32)",padding:"18px 12px",overflowY:"auto"},children:[t.jsxs("div",{className:"flex items-center justify-between",style:{marginBottom:18},children:[t.jsx("button",{onClick:()=>{d(!1),h("dashboard")},style:{color:"#2DD4A8",fontWeight:700,fontSize:18,letterSpacing:"0.04em",border:"none",background:"none",cursor:"pointer"},children:"MEMO Architect"}),t.jsx("button",{"aria-label":"Close navigation",onClick:()=>d(!1),style:{width:36,height:36,color:"#2DD4A8",fontSize:24,border:"none",background:"transparent",cursor:"pointer"},children:"×"})]}),t.jsxs("div",{style:{borderTop:"1px solid rgba(255,255,255,0.09)",paddingTop:8},children:[Ti.filter(y=>!("feature"in y)||ue(y.feature)).map(y=>t.jsxs("button",{onClick:()=>{h(y.id),d(!1)},className:"flex w-full items-center gap-3 rounded-md px-3 py-3 text-left",style:{border:"none",cursor:"pointer",fontSize:15,background:g===y.id?"rgba(45,212,168,0.15)":"transparent",color:g===y.id?"#2DD4A8":"rgba(255,255,255,0.78)"},children:[t.jsx("span",{style:{width:20,textAlign:"center"},children:y.icon}),y.label]},y.id)),ue("analysis")&&t.jsxs(t.Fragment,{children:[t.jsxs("button",{onClick:()=>m(y=>!y),"aria-expanded":u,className:"flex w-full items-center gap-3 rounded-md px-3 py-3 text-left",style:{border:"none",cursor:"pointer",fontSize:15,background:u?"rgba(45,212,168,0.10)":"transparent",color:"rgba(255,255,255,0.78)"},children:[t.jsx("span",{style:{width:20,textAlign:"center"},children:"◫"}),"Analysis",t.jsx("span",{style:{marginLeft:"auto",fontSize:11},children:u?"▾":"▸"})]}),u&&t.jsxs("div",{style:{margin:"0 0 4px 36px",borderLeft:"1px solid rgba(45,212,168,0.25)"},children:[t.jsxs("button",{onClick:()=>{o({type:"analysis"}),d(!1)},className:"flex w-full items-center gap-2 px-3 py-2 text-left",style:{border:"none",cursor:"pointer",background:"transparent",color:"rgba(255,255,255,0.68)",fontSize:14},children:[t.jsx("span",{children:"◫"}),"Analysis workspace"]}),t.jsxs("button",{onClick:()=>{o({type:"dsm"}),d(!1)},className:"flex w-full items-center gap-2 px-3 py-2 text-left",style:{border:"none",cursor:"pointer",background:"transparent",color:"rgba(255,255,255,0.68)",fontSize:14},children:[t.jsx("span",{children:"▤"}),"Design Structure Matrix"]}),t.jsxs("button",{onClick:()=>{o({type:"traceability"}),d(!1)},className:"flex w-full items-center gap-2 px-3 py-2 text-left",style:{border:"none",cursor:"pointer",background:"transparent",color:"rgba(255,255,255,0.68)",fontSize:14},children:[t.jsx("span",{children:"☷"}),"Traceability Matrix"]}),t.jsxs("button",{onClick:()=>{o({type:"analysis"}),d(!1)},className:"flex w-full items-center gap-2 px-3 py-2 text-left",style:{border:"none",cursor:"pointer",background:"transparent",color:"rgba(255,255,255,0.68)",fontSize:14},children:[t.jsx("span",{children:"⌁"}),"Jupyter Notebooks"]})]})]})]}),t.jsx("div",{style:{height:1,background:"rgba(255,255,255,0.1)",margin:"14px 4px"}}),t.jsxs("div",{className:"flex items-center justify-between px-3 py-2",style:{color:"rgba(255,255,255,0.62)"},children:[t.jsx("span",{children:"Workspaces"}),t.jsx(Bi,{})]}),ue("model-tools")&&t.jsx("div",{className:"px-2 py-1",children:t.jsx(Ii,{activeViewType:n.type})}),t.jsxs("button",{onClick:()=>v(!0),className:"flex w-full items-center gap-3 rounded-md px-3 py-3 text-left",style:{color:"rgba(255,255,255,0.72)",border:"none",background:"transparent",cursor:"pointer",fontSize:15},children:[t.jsx("span",{style:{width:20,textAlign:"center"},children:"⚙"}),"Project Settings"]}),t.jsxs("a",{href:Ni,target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 rounded-md px-3 py-3",style:{color:"rgba(255,255,255,0.72)",textDecoration:"none",fontSize:15},children:[t.jsx("span",{style:{width:20,textAlign:"center"},children:"?"}),"Help"]})]}),b&&t.jsx(ko,{onClose:()=>v(!1)})]}):null}const Vn="Global",_i=["System","SystemOfSystems"];function Ut(e,r,n=_i){if(n.includes(e))return!0;for(let o=r.get(e);o;o=r.get(o))if(n.includes(o))return!0;return!1}function Pi(e,r,n,o){var l;const a=c=>{var d;return{systemId:c,label:((d=r.get(c))==null?void 0:d.name)||c}};if(Ut(e.kind,o))return a(e.id);const s=new Set([e.id]);for(let c=e.owner;c&&!s.has(c);c=(l=r.get(c))==null?void 0:l.owner){s.add(c);const d=r.get(c);if(d&&Ut(d.kind,o))return a(d.id)}const i=new Set;for(const c of n){const d=c.sourceId===e.id?c.targetId:c.targetId===e.id?c.sourceId:void 0;if(!d)continue;const u=r.get(d);u&&Ut(u.kind,o)&&i.add(u.id)}return i.size===1?a([...i][0]):{label:Vn}}function So(e,r){const n=new Map;for(const o of e){const a=r(o),s=a.systemId??Vn;let i=n.get(s);i||(i={label:a.label,systemId:a.systemId,items:[]},n.set(s,i)),i.items.push(o)}return[...n.values()].sort((o,a)=>(o.systemId?0:1)-(a.systemId?0:1)||o.label.localeCompare(a.label))}function Oi(e){return e.isDefinition??/Definition$|Def$/.test(e.kind)}function Wn(e){const r=new Map;for(const n of e)Oi(n)&&r.set(n.name||n.id,n);return r}function Hn(e,r){const n=r.get(e.kind);if(!n||n.id===e.id||n.kind===e.kind)return;const o=new Set([e.id]);for(let a=n;a;a=r.get(a.kind)){if(o.has(a.id))return;o.add(a.id)}return n}const yr=(...e)=>r=>e.includes(r.construct),Co=[{id:"usecases",label:"Use cases",matches:yr("use case")},{id:"functions",label:"Functions",matches:yr("action")},{id:"logical",label:"Logical",matches:e=>e.layer==="logical"&&e.construct==="part"},{id:"physical",label:"Physical",matches:e=>e.layer==="realization"&&e.construct==="part"},{id:"software",label:"Software",matches:e=>e.layer==="implementation"&&e.construct==="part"},{id:"operational",label:"Operational",matches:e=>e.layer==="operational"&&e.construct==="part"}];function pn(e){var o,a;const r=new Map,n=[];for(const s of e){const i=(a=(o=s.element)==null?void 0:o.attributes)==null?void 0:a.elementPackage;if(!i){n.push(s);continue}let l=r.get(i);l||(l={id:`pkg:${i}`,name:i,kind:"ElementPackage",isGroup:!0,children:[]},r.set(i,l),n.push(l)),l.children.push(s)}return n}function zi(e,r=Co,n=""){const o=new Map(e.map(m=>[m.id,m])),a=Wn(e),s=m=>{var b;return m.owner&&o.has(m.owner)?m.owner:(b=Hn(m,a))==null?void 0:b.id},i=new Map;for(const m of e){const b=s(m);b&&(i.get(b)??i.set(b,[]).get(b)).push(m)}const l=new Set,c=(m,b)=>{b.add(m.id);const v=(i.get(m.id)??[]).filter(w=>!b.has(w.id)&&!l.has(w.id)).map(w=>c(w,b));return{id:m.id,name:m.name||m.id,kind:m.kind,element:m,children:pn(v)}},d=n.trim().toLowerCase(),u=m=>!d||m.name.toLowerCase().includes(d)||m.kind.toLowerCase().includes(d)||m.children.some(u);return r.map(m=>{const b=y=>{const B=s(y);return B?!!m.systemOf&&!m.matches(o.get(B)):!0},v=e.filter(y=>m.matches(y)).filter(b).filter(y=>!l.has(y.id));for(const y of v)l.add(y.id);const w=new Set,g=v.map(y=>c(y,w)),h=m.systemOf?So(g,y=>m.systemOf(y.element)).map(y=>({id:`sys:${y.systemId??y.label}`,name:y.label,kind:y.systemId?"System":"Global",isGroup:!0,children:pn(y.items)})).filter(u):pn(g).filter(u);return{id:m.id,label:m.label,nodes:h}}).filter(m=>m.nodes.length>0)}function Ui(e,r){const n=[],o=new Set;let a=r;for(;a&&!o.has(a.id);)o.add(a.id),n.unshift(a.id),a=a.owner?e==null?void 0:e.elements[a.owner]:void 0;return[r.package,...n].filter(Boolean).join("::")}function gr(e,r){const n=r.owner?e==null?void 0:e.elements[r.owner]:void 0;return n?Ui(e,n):r.package||void 0}function xr(e,r){var o;const n=new Set;for(const a of Object.values((e==null?void 0:e.elements)??{})){if(a.owner!==r.owner)continue;const s=(o=a.attributes)==null?void 0:o.elementPackage;s&&n.add(s)}return[...n].sort()}async function Li(e,r=5e3){var a;const n=e.split("::").pop()??e,o=Date.now()+r;for(;Date.now()<o;){const s=S.getState().model;if((a=s==null?void 0:s.packages)!=null&&a.some(i=>i.qualifiedName===e)||s!=null&&s.elements[n])return!0;await new Promise(i=>setTimeout(i,120))}return!1}function Eo(e){const r=new Map;for(const n of e)for(const o of n.layers)for(const a of o.kinds)a.derivesFrom&&r.set(a.name,a.derivesFrom);return r}function Fu(e,r){const n=new Map(e.map(c=>[c.kind,c.elementCount])),o=new Set(n.keys());for(;;){const c=[...o].filter(u=>!br(u,r,o)),d=new Set;for(const u of c)for(let m=r.get(u);m&&!o.has(m);m=r.get(m))if(c.filter(b=>jo(m,b,r)).length>=2){d.add(m);break}if(d.size===0)break;for(const u of d)o.add(u),n.set(u,0)}const a=new Map;for(const c of o)a.set(c,{kind:c,elementCount:n.get(c)??0,totalCount:0,children:[]});const s=[];for(const c of a.values()){const d=br(c.kind,r,o);(d?a.get(d).children:s).push(c)}const i=c=>(c.totalCount=c.elementCount+c.children.reduce((d,u)=>d+i(u),0),c.totalCount),l=c=>{c.children.sort(vr),c.children.forEach(l)};return s.forEach(i),s.forEach(l),s.sort(vr),s}function br(e,r,n){for(let o=r.get(e);o;o=r.get(o))if(n.has(o))return o}function vr(e,r){return r.totalCount-e.totalCount||e.kind.localeCompare(r.kind)}function jo(e,r,n){for(let o=n.get(r);o;o=n.get(o))if(o===e)return!0;return!1}function Au(e,r,n){const o=[e];for(const a of n)a!==e&&jo(e,a,r)&&o.push(a);return o}function qi(e,r=0){return e.flatMap(n=>[{node:n,depth:r},...qi(n.children,r+1)])}const ce={operational:"#0F766E",business:"#8E44AD",requirements:"#4A90D9",risk:"#E74C3C",functional:"#E67E22",behavior:"#FF6B6B",logical:"#7B68EE",physical:"#95A5A6",software:"#F39C12",interfaces:"#1ABC9C",verification:"#2ECC71",ui:"#3498DB"},Le={operational:"Operational Analysis",business:"Business Analysis",requirements:"Requirements",risk:"Risk Management",functional:"Functional Analysis",behavior:"Behavior",logical:"Logical Architecture",physical:"Physical Architecture",software:"Software Architecture",interfaces:"Interfaces & Ports",verification:"Verification",ui:"UI Wireframe"},Te=["operational","business","requirements","risk","functional","behavior","logical","physical","software","interfaces","verification","ui"],$i={mitigates:"#E74C3C",causes:"#C0392B",leadsTo:"#E74C3C",identifies:"#D35400",traceTo:"#4A90D9",satisfiedBy:"#2ECC71",verifiedBy:"#27AE60",allocatedTo:"#E67E22",aggregation:"#7B68EE",composedOf:"#8E44AD",decomposedBy:"#D35400",flow:"#3498DB",succession:"#95A5A6"},wr=["#2563EB","#0891B2","#7C3AED","#DB2777","#EA580C","#0D9488","#65A30D","#9333EA","#C2410C","#1D4ED8"];function Nu(e){const r=$i[e];if(r)return r;let n=0;for(let o=0;o<e.length;o++)n=n*31+e.charCodeAt(o)>>>0;return wr[n%wr.length]}const Kn={general:{label:"GEN",fullName:"General View",color:"#7B68EE"},interconnection:{label:"INT",fullName:"Interconnection View",color:"#1ABC9C"},actionflow:{label:"ACT",fullName:"Action Flow View",color:"#F39C12"},statetransition:{label:"STM",fullName:"State Transition View",color:"#FF6B6B"},sequence:{label:"SEQ",fullName:"Sequence View",color:"#3498DB"},grid:{label:"GRID",fullName:"Grid View",color:"#2ECC71"},browser:{label:"BRW",fullName:"Browser View",color:"#95A5A6"},geometry:{label:"GEO",fullName:"Geometry View",color:"#8E44AD"}},$e={bdd:{code:"BDD",label:"BDD",fullName:"Block Definition Diagram",color:"#7B68EE",viewKind:"general"},ibd:{code:"IBD",label:"IBD",fullName:"Internal Block Diagram",color:"#1ABC9C",viewKind:"interconnection"},req:{code:"REQ",label:"REQ",fullName:"Requirements Diagram",color:"#4A90D9",viewKind:"general"},ucd:{code:"UCD",label:"UCD",fullName:"Use Case Diagram",color:"#E67E22",viewKind:"general"},context:{code:"CTX",label:"CTX",fullName:"System Context Diagram",color:"#5DADE2",viewKind:"general"},act:{code:"ACT",label:"ACT",fullName:"Activity Diagram",color:"#F39C12",viewKind:"actionflow"},afd:{code:"AFD",label:"AFD",fullName:"Action Flow Diagram",color:"#FF6B6B",viewKind:"actionflow"},ofd:{code:"OFD",label:"OFD",fullName:"Operational Flow Diagram",color:"#F39C12",viewKind:"actionflow"},ffd:{code:"FFD",label:"FFD",fullName:"Functional Flow Diagram",color:"#F39C12",viewKind:"actionflow"},pkg:{code:"PKG",label:"PKG",fullName:"Package Diagram",color:"#95A5A6",viewKind:"general"},par:{code:"PAR",label:"PAR",fullName:"Parametric Diagram",color:"#2ECC71",viewKind:"interconnection"},risk:{code:"RISK",label:"RISK",fullName:"Risk Diagram",color:"#E74C3C",viewKind:"general"},stm:{code:"STM",label:"STM",fullName:"State Transition Diagram",color:"#FF6B6B",viewKind:"statetransition"},seq:{code:"SEQ",label:"SEQ",fullName:"Sequence Diagram",color:"#3498DB",viewKind:"sequence"},fmea:{code:"FMEA",label:"FMEA",fullName:"FMEA Matrix",color:"#E74C3C",viewKind:"grid"},alloc:{code:"ALLOC",label:"ALLOC",fullName:"Allocation Matrix",color:"#E67E22",viewKind:"grid"},"threat-model":{code:"THREAT",label:"THREAT",fullName:"Threat Model Diagram",color:"#C0392B",viewKind:"general"}};function Vi(e){const r=e.diagramType.trim().toLowerCase();return r==="ofd"||r==="ffd"?r:"afd"}const Tu=["#FFFFFF","#f8fafc","#f0f9ff","#fdf2f8","#f0fdf4"];function Oe({label:e,onClick:r,icon:n}){return t.jsxs("button",{className:"w-full flex items-center gap-2 px-3 py-1.5 text-left text-xs",style:{color:"#374151",background:"transparent",border:"none",cursor:"pointer",whiteSpace:"nowrap"},onMouseEnter:o=>o.currentTarget.style.background="#F0F0ED",onMouseLeave:o=>o.currentTarget.style.background="transparent",onClick:o=>{o.stopPropagation(),r()},children:[n&&t.jsx("span",{style:{fontSize:"12px",width:"14px",flexShrink:0},children:n}),e]})}function Wi(){return t.jsx("div",{style:{height:"1px",background:"#E5E5E0",margin:"3px 0"}})}function Hi({x:e,y:r,target:n,onViewVisual:o,onViewTable:a,onToggleSelection:s,onViewProperties:i,onClose:l}){const c=p.useRef(null);p.useEffect(()=>{if(!c.current)return;const u=c.current,{innerWidth:m,innerHeight:b}=window,v=u.getBoundingClientRect();v.right>m&&(u.style.left=`${e-v.width}px`),v.bottom>b&&(u.style.top=`${r-v.height}px`)},[e,r]);const d={position:"fixed",top:r,left:e,background:"#FFFFFF",border:"1px solid #E5E5E0",borderRadius:"6px",boxShadow:"0 4px 12px rgba(0,0,0,0.12)",zIndex:9999,minWidth:"180px",padding:"4px 0"};return n.type==="package"?t.jsxs("div",{ref:c,style:d,onMouseDown:u=>u.stopPropagation(),children:[t.jsx(Oe,{icon:"⬜",label:"View Visual Layout",onClick:()=>{o(n.pkgName),l()}}),t.jsx(Oe,{icon:"☰",label:"View as Table",onClick:()=>{a(n.pkgName),l()}}),t.jsx(Wi,{}),t.jsx(Oe,{icon:n.isSelected?"☑":"☐",label:n.isSelected?"Deselect for Project":"Select for Project",onClick:()=>s(n.pkgName)})]}):n.type==="layer"?t.jsxs("div",{ref:c,style:d,onMouseDown:u=>u.stopPropagation(),children:[t.jsx(Oe,{icon:"⬜",label:"View Visual Layout",onClick:()=>{o(n.pkgName),l()}}),t.jsx(Oe,{icon:"☰",label:"View as Table",onClick:()=>a(n.pkgName,n.layerId)})]}):t.jsxs("div",{ref:c,style:d,onMouseDown:u=>u.stopPropagation(),children:[t.jsx(Oe,{icon:"🔍",label:"View Properties",onClick:()=>i(n.kindName,n.pkgName)}),t.jsx(Oe,{icon:"☰",label:"View as Table",onClick:()=>a(n.pkgName,n.layerId)}),t.jsx(Oe,{icon:"⬜",label:"Show in Visual Layout",onClick:()=>{o(n.pkgName),l()}})]})}function Ki({kindsToRemap:e,onConfirm:r,onCancel:n}){const o=S(u=>u.availableOntologies),a=S(u=>u.selectedOntologies),s=o.filter(u=>a.has(u.name)).flatMap(u=>u.layers.flatMap(m=>m.kinds.map(b=>b.name))).filter((u,m,b)=>b.indexOf(u)===m).sort(),[i,l]=p.useState(Object.fromEntries(e.map(u=>[u,""])));function c(u,m){l(b=>({...b,[u]:m}))}const d=e.every(u=>i[u]);return t.jsx("div",{className:"fixed inset-0 flex items-center justify-center z-50",style:{background:"rgba(0,0,0,0.4)"},children:t.jsxs("div",{className:"rounded-xl shadow-2xl max-w-lg w-full mx-4 overflow-hidden",style:{background:"#FFFFFF",border:"1px solid #E5E5E0"},children:[t.jsxs("div",{className:"px-6 py-4",style:{borderBottom:"1px solid #E5E5E0"},children:[t.jsx("h2",{className:"text-sm font-semibold",style:{color:"#1a1a1a"},children:"Remap Orphaned Kinds"}),t.jsx("p",{className:"text-xs mt-1",style:{color:"#6B7280"},children:"Map each orphaned kind to a kind in the selected ontologies. Model elements will be updated to use the new kind."})]}),t.jsx("div",{className:"px-6 py-4 space-y-3 max-h-64 overflow-y-auto",children:e.map(u=>t.jsxs("div",{className:"flex items-center gap-3",children:[t.jsx("div",{className:"flex-1 px-2 py-1 rounded text-xs font-medium",style:{background:"#FEF2F2",color:"#EF4444",border:"1px solid #FCA5A5"},children:u}),t.jsx("span",{style:{color:"#9CA3AF"},children:"→"}),t.jsxs("select",{value:i[u],onChange:m=>c(u,m.target.value),className:"flex-1 text-xs rounded-md px-2 py-1 focus:outline-none",style:{border:"1px solid #E5E5E0",color:"#1a1a1a",background:"#FFFFFF"},children:[t.jsx("option",{value:"",children:"Select target kind…"}),s.map(m=>t.jsx("option",{value:m,children:m},m))]})]},u))}),t.jsxs("div",{className:"px-6 py-4 flex gap-2 justify-end",style:{borderTop:"1px solid #E5E5E0"},children:[t.jsx("button",{onClick:n,className:"px-3 py-1.5 text-xs rounded-md",style:{background:"#F0F0ED",color:"#374151"},children:"Back"}),t.jsx("button",{onClick:()=>r(i),disabled:!d,className:"px-3 py-1.5 text-xs rounded-md font-medium",style:{background:d?"#1B3A4B":"#E5E5E0",color:d?"#FFFFFF":"#9CA3AF",cursor:d?"pointer":"not-allowed"},children:"Apply Remapping"})]})]})})}function Gi({orphans:e,onKeep:r,onRemap:n,onCancel:o}){const[a,s]=p.useState(!1),i=new Map;for(const l of e)i.has(l.kind)||i.set(l.kind,[]),i.get(l.kind).push(l);return a?t.jsx(Ki,{kindsToRemap:[...i.keys()],onConfirm:n,onCancel:()=>s(!1)}):t.jsx("div",{className:"fixed inset-0 flex items-center justify-center z-50",style:{background:"rgba(0,0,0,0.4)"},onClick:l=>{l.target===l.currentTarget&&o()},children:t.jsxs("div",{className:"rounded-xl shadow-2xl max-w-md w-full mx-4 overflow-hidden",style:{background:"#FFFFFF",border:"1px solid #E5E5E0"},children:[t.jsxs("div",{className:"px-6 py-4",style:{borderBottom:"1px solid #E5E5E0",background:"#FEF2F2"},children:[t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx("span",{className:"text-red-500 text-lg",children:"⚠"}),t.jsx("h2",{className:"text-sm font-semibold",style:{color:"#1a1a1a"},children:"Orphaned Elements"})]}),t.jsxs("p",{className:"text-xs mt-1",style:{color:"#6B7280"},children:[e.length," element",e.length!==1?"s":""," use kinds from the deselected ontology."]})]}),t.jsx("div",{className:"px-6 py-4 max-h-48 overflow-y-auto",children:[...i.entries()].map(([l,c])=>t.jsxs("div",{className:"mb-3",children:[t.jsxs("div",{className:"text-xs font-semibold mb-1",style:{color:"#374151"},children:[l,t.jsxs("span",{className:"ml-1 font-normal",style:{color:"#9CA3AF"},children:["(",c.length," element",c.length!==1?"s":"",")"]})]}),t.jsxs("div",{className:"flex flex-wrap gap-1",children:[c.slice(0,5).map(d=>t.jsx("span",{className:"px-1.5 py-0.5 text-xs rounded",style:{background:"#FEF2F2",color:"#EF4444",border:"1px solid #FCA5A5"},children:d.elementName},d.elementId)),c.length>5&&t.jsxs("span",{className:"text-xs",style:{color:"#9CA3AF"},children:["+",c.length-5," more"]})]})]},l))}),t.jsxs("div",{className:"px-6 py-4 flex gap-2 justify-end",style:{borderTop:"1px solid #E5E5E0"},children:[t.jsx("button",{onClick:o,className:"px-3 py-1.5 text-xs rounded-md",style:{background:"#F0F0ED",color:"#374151"},children:"Cancel"}),t.jsx("button",{onClick:r,className:"px-3 py-1.5 text-xs rounded-md",style:{background:"#FEF2F2",color:"#EF4444",border:"1px solid #FCA5A5"},children:"Keep (mark orphaned)"}),t.jsx("button",{onClick:()=>s(!0),className:"px-3 py-1.5 text-xs rounded-md font-medium",style:{background:"#1B3A4B",color:"#FFFFFF"},children:"Remap kinds →"})]})]})})}function Yi(){const e=S(w=>w.methodology),r=p.useMemo(()=>[...new Set(((e==null?void 0:e.folders)??[]).flatMap(w=>w.sourceFiles))].sort(),[e]),[n,o]=p.useState(""),[a,s]=p.useState(""),[i,l]=p.useState(""),[c,d]=p.useState(!1),[u,m]=p.useState(""),b=async w=>{if(!w)return;const g=await En("load",w);o(w),s(g.text??""),l(g.revision??""),d(!1),m(g.success?"":g.error??"Could not load source.")},v=async()=>{if(!n||!i)return;const w=await En("save",n,{text:a,baseRevision:i});w.success?(l(w.revision??i),d(!1),m("Saved. The reusable semantic runtime is restarting.")):m(w.error??"Save rejected; the draft remains in the editor.")};return r.length===0?null:t.jsxs("section",{style:{borderBottom:`1px solid ${f.border}`},children:[t.jsx("div",{className:"px-3 py-2 font-semibold",style:{fontSize:I.xs,color:f.primary},children:"Methodology & Rule Policies"}),t.jsxs("select",{value:n,onChange:w=>void b(w.target.value),className:"mx-3 mb-2",style:{width:"calc(100% - 24px)",fontSize:I.xs},children:[t.jsx("option",{value:"",children:"Select resolved SysML source…"}),r.map(w=>t.jsx("option",{value:w,children:w},w))]}),n&&t.jsxs(t.Fragment,{children:[t.jsx("textarea",{value:a,onChange:w=>{s(w.target.value),d(!0)},"aria-label":"Methodology SysML source",style:{width:"calc(100% - 24px)",height:220,margin:"0 12px",padding:8,fontFamily:"monospace",fontSize:11,color:"#E2E8F0",background:"#1E293B"}}),t.jsxs("div",{className:"flex gap-2 px-3 py-2",children:[t.jsx("button",{disabled:!c,onClick:()=>void v(),children:"Save SysML"}),t.jsx("button",{onClick:()=>void navigator.clipboard.writeText(a),children:"Copy draft"}),t.jsx("button",{onClick:()=>void b(n),children:"Reload"})]}),u&&t.jsx("div",{className:"px-3 pb-2",role:"status",style:{fontSize:11,color:"#B45309"},children:u})]})]})}function Ji(){var L;const e=S(E=>E.effectiveRules),r=S(E=>E.ruleDiagnostics),n=S(E=>E.methodology),o=p.useMemo(()=>[...new Set(((n==null?void 0:n.folders)??[]).flatMap(E=>E.sourceFiles))].sort(),[n]),[a,s]=p.useState(""),[i,l]=p.useState("disabled"),[c,d]=p.useState(""),[u,m]=p.useState(""),[b,v]=p.useState(""),[w,g]=p.useState(""),[h,y]=p.useState(""),[B,N]=p.useState(""),[D,A]=p.useState(""),[F,C]=p.useState(!1),k=e.find(E=>E.sourceRuleType===a),T=(k==null?void 0:k.tailoring)==="invariant",z=!a||!B||T&&i!=="enabled"||i!=="enabled"&&!b.trim()||i==="replaced"&&!u.trim(),_=async()=>{C(!0),A("");try{const E=await En("load",B);if(!E.success||!E.revision){A(E.error??"Could not read the methodology source.");return}const O=await li({targetRuleType:a,disposition:i,severityOverride:c||void 0,replacementRuleType:i==="replaced"?u.trim():void 0,rationaleText:b.trim(),authority:w.trim()||void 0,approvalReference:h.trim()||void 0,sourceFile:B,baseRevision:E.revision});A(O.success?"Policy written. The reusable semantic runtime is restarting.":O.error??"The policy was rejected; nothing was written."),O.success&&(v(""),y(""))}catch(E){A(E instanceof Error?E.message:String(E))}finally{C(!1)}};if(e.length===0)return null;const j={width:"calc(100% - 24px)",margin:"0 12px 6px",fontSize:I.xs};return t.jsxs("section",{style:{borderBottom:`1px solid ${f.border}`},children:[t.jsxs("div",{className:"px-3 py-2 font-semibold",style:{fontSize:I.xs,color:f.primary},children:["Rule Tailoring",t.jsxs("span",{style:{fontWeight:400,color:f.muted},children:[" — ",e.length," rules in the effective set"]})]}),t.jsxs("select",{"aria-label":"Rule",value:a,style:j,onChange:E=>s(E.target.value),children:[t.jsx("option",{value:"",children:"Select a rule…"}),e.map(E=>t.jsxs("option",{value:E.sourceRuleType,children:[E.sourceRuleId," — ",E.sourceRuleType,E.tailoring==="invariant"?" (invariant)":"",E.disposition!=="enabled"?` [${E.disposition}]`:""]},E.sourceRuleType))]}),k&&t.jsxs("div",{className:"px-3 pb-1",style:{fontSize:11,color:f.muted},children:["Currently ",k.disposition," at ",k.effectiveSeverity,k.effectiveSeverity!==k.declaredSeverity&&` (declared ${k.declaredSeverity})`,((L=k.policyChain)==null?void 0:L.length)>0&&` · ${k.policyChain.length} policy in chain`]}),T&&t.jsx("div",{className:"px-3 pb-2",role:"status",style:{fontSize:11,color:"#B45309"},children:"This rule is an invariant. It cannot be disabled or replaced by a methodology; changing it requires an ontology release."}),t.jsxs("select",{"aria-label":"Disposition",value:i,style:j,onChange:E=>l(E.target.value),children:[t.jsx("option",{value:"disabled",children:"Disable"}),t.jsx("option",{value:"replaced",children:"Replace"}),t.jsx("option",{value:"enabled",children:"Enable (severity override only)"})]}),t.jsxs("select",{"aria-label":"Severity override",value:c,style:j,onChange:E=>d(E.target.value),children:[t.jsx("option",{value:"",children:"No severity override"}),t.jsx("option",{value:"error",children:"error"}),t.jsx("option",{value:"warning",children:"warning"}),t.jsx("option",{value:"info",children:"info"})]}),i==="replaced"&&t.jsx("input",{"aria-label":"Replacement rule",value:u,style:j,placeholder:"Replacement constraint def name",onChange:E=>m(E.target.value)}),t.jsx("textarea",{"aria-label":"Rationale",value:b,placeholder:"Rationale — required to disable or replace a rule",style:{...j,height:54,fontFamily:"inherit"},onChange:E=>v(E.target.value)}),t.jsx("input",{"aria-label":"Authority",value:w,style:j,placeholder:"Authority (optional)",onChange:E=>g(E.target.value)}),t.jsx("input",{"aria-label":"Approval reference",value:h,style:j,placeholder:"Approval reference (optional)",onChange:E=>y(E.target.value)}),t.jsxs("select",{"aria-label":"Target methodology file",value:B,style:j,onChange:E=>N(E.target.value),children:[t.jsx("option",{value:"",children:"Write the policy into…"}),o.map(E=>t.jsx("option",{value:E,children:E},E))]}),t.jsx("div",{className:"flex gap-2 px-3 py-2",children:t.jsx("button",{disabled:z||F,onClick:()=>void _(),children:F?"Writing…":"Write policy"})}),D&&t.jsx("div",{className:"px-3 pb-2",role:"status",style:{fontSize:11,color:"#B45309"},children:D}),r.length>0&&t.jsx("div",{className:"px-3 pb-2",style:{fontSize:11,color:"#B91C1C"},children:r.map((E,O)=>t.jsxs("div",{children:["[",E.code,"] ",E.message]},O))})]})}const kr={ontology:"📦",profile:"🔧",extension:"🧩"};function Xi(e){const r=new Map(e.map(l=>[l.name,l])),n=new Map;function o(l){if(n.has(l))return n.get(l);const c=r.get(l);if(!c||!c.derivesFrom||!r.has(c.derivesFrom))return n.set(l,0),0;const d=o(c.derivesFrom)+1;return n.set(l,d),d}for(const l of e)o(l.name);const a=new Map;for(const l of e){const c=n.get(l.name)??0,d=a.get(c)??[];d.push(l),a.set(c,d)}const s=Math.max(...a.keys()),i=[];for(let l=0;l<=s;l++){const c=a.get(l)??[];i.push(...c.sort((d,u)=>d.name.localeCompare(u.name)))}return i}function Qi(e){const r=new Map(e.map(l=>[l.name,l])),n=new Map;function o(l){if(n.has(l))return n.get(l);const c=r.get(l);if(!c||!c.extends||!r.has(c.extends))return n.set(l,0),0;const d=o(c.extends)+1;return n.set(l,d),d}for(const l of e)o(l.name);const a=new Map;for(const l of e){const c=n.get(l.name)??0,d=a.get(c)??[];d.push(l),a.set(c,d)}const s=a.size>0?Math.max(...a.keys()):0,i=[];for(let l=0;l<=s;l++){const c=a.get(l)??[];i.push(...c.sort((d,u)=>d.name.localeCompare(u.name)))}return i}function Zi({pkgName:e,onCancel:r,onConfirm:n}){const o=e.replace(/^@memo(?:architect)?\//,"");return t.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center",style:{background:"rgba(0,0,0,0.45)"},onMouseDown:a=>{a.target===a.currentTarget&&r()},children:t.jsxs("div",{className:"rounded-xl p-5 shadow-2xl",style:{background:"#FFFFFF",maxWidth:"340px",width:"90vw"},children:[t.jsx("div",{className:"font-semibold mb-1.5",style:{fontSize:I.sm,color:f.primary},children:"Remove ontology?"}),t.jsxs("div",{className:"mb-4",style:{fontSize:I.xs,color:f.secondary,lineHeight:1.5},children:["Removing ",t.jsx("strong",{children:o})," will affect all model elements that depend on its kinds. Those elements will become orphaned until you add a compatible ontology."]}),t.jsxs("div",{className:"flex gap-2 justify-end",children:[t.jsx("button",{onClick:r,className:"px-3 py-1.5 rounded-md font-medium",style:{fontSize:I.xs,background:f.surfaceAlt,color:f.secondary,border:`1px solid ${f.border}`,cursor:"pointer"},children:"Cancel"}),t.jsx("button",{onClick:n,className:"px-3 py-1.5 rounded-md font-medium",style:{fontSize:I.xs,background:"#DC2626",color:"#FFFFFF",border:"none",cursor:"pointer"},children:"Remove"})]})]})})}function el(){const e=S(x=>x.availableOntologies),r=S(x=>x.selectedOntologies),n=S(x=>x.toggleOntologySelection),o=S(x=>x.saveOntologySelection),a=S(x=>x.selectedOntologyKind),s=S(x=>x.setSelectedOntologyKind),i=S(x=>x.setActiveView),l=S(x=>x.setOntologyViewMode),c=S(x=>x.activeView),[d,u]=p.useState(""),[m,b]=p.useState(()=>new Set(e.filter(x=>x.selected).map(x=>x.name))),[v,w]=p.useState(new Set),[g,h]=p.useState(()=>new Set(e.filter(x=>x.selected).map(x=>x.name))),y=p.useMemo(()=>{if(r.size!==g.size)return!0;for(const x of r)if(!g.has(x))return!0;return!1},[r,g]),[B,N]=p.useState(null),[D,A]=p.useState(null),[F,C]=p.useState(null),k=p.useRef(new Map),T=p.useMemo(()=>{const x=d.trim()?e.map(P=>({...P,layers:P.layers.map(q=>({...q,kinds:q.kinds.filter(X=>X.name.toLowerCase().includes(d.toLowerCase())||X.label.toLowerCase().includes(d.toLowerCase())||X.layer.toLowerCase().includes(d.toLowerCase()))})).filter(q=>q.kinds.length>0)})).filter(P=>P.layers.length>0||P.name.toLowerCase().includes(d.toLowerCase())):e;return Qi(x)},[e,d]);p.useEffect(()=>{d.trim()&&(b(new Set(T.map(x=>x.name))),w(new Set(T.flatMap(x=>x.layers.map(P=>`${x.name}:${P.id}`)))))},[d,T]),p.useEffect(()=>{if(a&&k.current.has(a)){for(const x of e)for(const P of x.layers)if(P.kinds.find(q=>q.name===a)){b(q=>new Set([...q,x.name])),w(q=>new Set([...q,`${x.name}:${P.id}`]));break}setTimeout(()=>{var x;(x=k.current.get(a))==null||x.scrollIntoView({behavior:"smooth",block:"nearest"})},80)}},[a,e]);function z(x){i({type:"ontology-detail",packageName:x})}function _(x,P){i({type:"ontology-detail",packageName:x,layerId:P})}function j(x,P){s(a===x?null:x),i({type:"ontology-detail",packageName:P})}function L(x){b(P=>{const q=new Set(P);return q.has(x)?q.delete(x):q.add(x),q})}function E(x){w(P=>{const q=new Set(P);return q.has(x)?q.delete(x):q.add(x),q})}function O(x,P,q){x.stopPropagation(),q?A(P):n(P)}function V(){const x=o();x.orphanedElements&&x.orphanedElements.length>0?N(x.orphanedElements):(sn([...r]),h(new Set(r)))}function U(){sn([...r]),h(new Set(r)),N(null)}function $(x){ai(x),sn([...r]),h(new Set(r)),N(null)}function K(x,P){x.preventDefault(),x.stopPropagation(),C({x:x.clientX,y:x.clientY,target:P})}function J(x,P){l("table"),i({type:"ontology-detail",packageName:x,layerId:P}),C(null)}function Y(x){l("visual"),i({type:"ontology-detail",packageName:x}),C(null)}function Q(x){r.has(x)?A(x):n(x),C(null)}function ee(x,P){s(x),i({type:"ontology-detail",packageName:P}),C(null)}if(p.useEffect(()=>{function x(P){P.key==="Escape"&&(s(null),C(null),A(null))}return document.addEventListener("keydown",x),()=>document.removeEventListener("keydown",x)},[s]),p.useEffect(()=>{if(!F)return;function x(){C(null)}return document.addEventListener("mousedown",x),()=>document.removeEventListener("mousedown",x)},[F]),e.length===0)return t.jsx("div",{className:"flex-1 flex items-center justify-center p-4",children:t.jsxs("div",{className:"text-center",style:{color:f.faint},children:[t.jsx("div",{className:"text-xl mb-2",children:"◉"}),t.jsx("div",{style:{fontSize:I.xs},children:"No ontology packages"}),t.jsx("div",{style:{fontSize:I.xs,opacity:.7,marginTop:"4px"},children:"Start memo-architect dev to load"})]})});const M=c.type==="ontology-detail"?c.packageName:null;return t.jsxs("div",{className:"flex flex-col flex-1 overflow-hidden",style:{fontSize:I.explorer.item},children:[t.jsx(Ji,{}),t.jsx(Yi,{}),t.jsx("div",{className:"px-3 py-2 sticky top-0 z-10",style:{background:f.surface,borderBottom:`1px solid ${f.border}`},children:t.jsx("input",{type:"text",placeholder:"Search kinds...",value:d,onChange:x=>u(x.target.value),className:"w-full px-2.5 py-1.5 rounded-lg focus:outline-none",style:{fontSize:I.explorer.search,border:`1px solid ${f.border}`,background:f.surfaceAlt,color:f.primary},onFocus:x=>x.currentTarget.style.borderColor="#2563EB",onBlur:x=>x.currentTarget.style.borderColor=f.border})}),t.jsx("div",{className:"flex-1 overflow-y-auto py-1",children:T.map(x=>{const P=r.has(x.name),q=M===x.name,X=m.has(x.name),ie=x.name.replace(/^@memo(?:architect)?\//,""),oe=kr[x.type]??kr.ontology;return t.jsxs("div",{children:[t.jsxs("div",{className:"flex items-center gap-1.5 px-2 py-1.5 cursor-pointer",style:{borderRadius:"6px",margin:"0 4px",background:q?`${f.accent}18`:"transparent",borderLeft:q?`3px solid ${f.accentDark}`:"3px solid transparent",opacity:P?1:.55},onMouseEnter:R=>{q||(R.currentTarget.style.background="#F0F0ED")},onMouseLeave:R=>{R.currentTarget.style.background=q?`${f.accent}18`:"transparent"},onClick:R=>{R.stopPropagation(),L(x.name)},onDoubleClick:()=>z(x.name),onContextMenu:R=>K(R,{type:"package",pkgName:x.name,isSelected:P}),children:[t.jsx("input",{type:"checkbox",checked:P,onChange:R=>O(R,x.name,P),onClick:R=>R.stopPropagation(),style:{cursor:"pointer",accentColor:"#2563EB",flexShrink:0},title:P?"Deselect for project":"Select for project"}),t.jsx("span",{style:{color:f.muted,fontSize:"10px"},children:X?"▾":"▸"}),t.jsx("span",{children:oe}),t.jsx("span",{className:"font-semibold truncate flex-1",style:{color:f.primary,fontSize:I.explorer.group},children:ie}),t.jsx("span",{style:{color:f.faint},children:x.kindCount})]}),X&&x.layers.map(R=>{const H=ce[R.id]??R.color??f.muted,G=`${x.name}:${R.id}`,Z=v.has(G),le=Xi(R.kinds);return t.jsxs("div",{children:[t.jsxs("div",{className:"flex items-center gap-2 px-3 py-1 cursor-pointer",style:{borderRadius:"4px",margin:"0 4px 0 20px"},onMouseEnter:ae=>ae.currentTarget.style.background="#F0F0ED",onMouseLeave:ae=>ae.currentTarget.style.background="transparent",onClick:ae=>{ae.stopPropagation(),E(G)},onDoubleClick:()=>_(x.name,R.id),onContextMenu:ae=>K(ae,{type:"layer",pkgName:x.name,layerId:R.id,layerLabel:R.label}),children:[t.jsx("span",{style:{color:f.faint,fontSize:"9px"},children:Z?"▾":"▸"}),t.jsx("span",{className:"w-2 h-2 rounded flex-shrink-0",style:{backgroundColor:H}}),t.jsx("span",{className:"flex-1 truncate capitalize",style:{color:f.muted,fontSize:I.explorer.kind},children:R.label}),t.jsx("span",{style:{color:f.faint},children:R.kindCount})]}),Z&&(()=>{const ae=new Map;for(const te of le){const fe=te.derivesFrom?ae.get(te.derivesFrom)??0:0;ae.set(te.name,te.derivesFrom?fe+1:0)}const me=te=>{const fe=a===te.name,et=ae.get(te.name)??0,_e=et===0,ne=36+et*12;return t.jsxs("div",{ref:re=>{re&&k.current.set(te.name,re)},className:"flex items-center gap-1.5 px-3 py-0.5 cursor-pointer",style:{borderRadius:"4px",margin:`0 4px 0 ${ne}px`,background:fe?`${f.accent}18`:"transparent",borderLeft:fe?`2px solid ${H}`:"2px solid transparent",transition:"background 150ms ease"},onMouseEnter:re=>{fe||(re.currentTarget.style.background="#F0F0ED")},onMouseLeave:re=>{re.currentTarget.style.background=fe?`${f.accent}18`:"transparent"},onClick:()=>j(te.name,x.name),onContextMenu:re=>K(re,{type:"kind",kindName:te.name,pkgName:x.name,layerId:R.id}),children:[!_e&&t.jsx("span",{style:{color:f.faint,fontSize:"9px",flexShrink:0},children:"↳"}),t.jsx("span",{className:"truncate",style:{color:fe?f.accentDark:f.primary,fontWeight:_e?500:400,fontSize:I.explorer.item},children:te.name}),te.instanceCount>0&&t.jsxs("span",{style:{color:f.faint,fontSize:"10px"},children:["·",te.instanceCount]})]},te.name)},Ee=[],Me=new Map;for(const te of le){const fe=te.group??"";Me.has(fe)||(Me.set(fe,[]),Ee.push(fe)),Me.get(fe).push(te)}return Ee.filter(te=>te!=="").length<=1?le.map(me):Ee.map(te=>t.jsxs("div",{children:[te&&t.jsxs("div",{className:"px-3 py-0.5 flex items-center gap-1.5",style:{margin:"0 4px 0 30px"},children:[t.jsx("span",{className:"capitalize truncate",style:{color:f.faint,fontSize:I.explorer.kind,letterSpacing:"0.02em"},children:te.replace(/_/g," ")}),t.jsx("span",{style:{color:f.faint,fontSize:"10px"},children:Me.get(te).length})]}),Me.get(te).map(me)]},`grp:${G}:${te||"_root"}`))})()]},G)})]},x.name)})}),y&&t.jsx("div",{className:"px-3 py-2 flex-shrink-0",style:{borderTop:`1px solid ${f.border}`,background:f.surfaceAlt},children:t.jsx("button",{onClick:V,className:"w-full py-1.5 rounded-md font-medium",style:{fontSize:I.xs,background:"#2563EB",color:"#FFFFFF",border:"none",cursor:"pointer"},children:"Save Selection"})}),D&&t.jsx(Zi,{pkgName:D,onCancel:()=>A(null),onConfirm:()=>{n(D),A(null)}}),B&&t.jsx(Gi,{orphans:B,onKeep:U,onRemap:$,onCancel:()=>N(null)}),F&&t.jsx(Hi,{x:F.x,y:F.y,target:F.target,onViewVisual:Y,onViewTable:J,onToggleSelection:Q,onViewProperties:ee,onClose:()=>C(null)})]})}function tl(){const e=S(l=>l.model),r=S(l=>l.recentlyVisited),n=S(l=>l.selectElement),o=p.useMemo(()=>e?r.map(l=>e.elements[l]).filter(Boolean):[],[r,e]),a=o,s="Recently visited",i=o.length>0?`${o.length} item${o.length===1?"":"s"} this session`:"Items you inspect appear here";return t.jsxs("div",{className:"flex flex-col flex-1 overflow-hidden",children:[t.jsxs("div",{className:"px-3 py-3",style:{borderBottom:`1px solid ${f.border}`},children:[t.jsx("div",{style:{fontSize:"10px",fontWeight:700,textTransform:"uppercase",letterSpacing:"0.08em",color:f.muted,marginBottom:"2px"},children:s}),t.jsx("div",{style:{fontSize:"11px",color:f.muted,opacity:.8},children:i})]}),t.jsx("div",{className:"flex-1 overflow-y-auto",style:{padding:"4px 0"},children:a.length===0?t.jsx("div",{style:{padding:"24px 16px",textAlign:"center",fontSize:"12px",color:f.muted,lineHeight:"1.6"},children:"Nothing visited yet. Use Model Explorer or Viewpoints to begin."}):a.map(l=>{const c=ce[l.layer]||f.muted;return t.jsx("button",{onClick:()=>n(l.id),style:{display:"flex",alignItems:"flex-start",gap:"8px",width:"100%",padding:"8px 12px",background:"transparent",border:"none",borderLeft:`3px solid ${c}`,cursor:"pointer",textAlign:"left",transition:"background 0.1s"},onMouseEnter:d=>d.currentTarget.style.background=f.surfaceAlt,onMouseLeave:d=>d.currentTarget.style.background="transparent",children:t.jsxs("div",{style:{flex:1,minWidth:0},children:[t.jsx("div",{style:{fontSize:I.explorer.item,fontWeight:500,color:f.primary,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:l.name}),t.jsxs("div",{style:{fontSize:"10px",color:f.muted,marginTop:"2px",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:[t.jsx("span",{style:{color:c,fontWeight:600},children:l.kind}),l.shortId&&t.jsx("span",{style:{marginLeft:"6px",fontFamily:"monospace",opacity:.7},children:l.shortId})]})]})},l.id)})})]})}function nl({element:e,selected:r=!1,fontSize:n=I.explorer.item,fontWeight:o}){const a=e.shortId??"ID-PENDING";return t.jsxs("span",{className:"truncate flex-1",style:{color:r?f.accentDark:f.primary,fontSize:n,fontWeight:o??(r?500:400)},title:`${a} ${e.name}`,children:[t.jsxs("span",{style:{color:f.muted,fontWeight:500,marginRight:"4px"},children:["[",a,"]"]}),e.name,e.isDefinition&&t.jsx("span",{style:{color:f.muted,fontWeight:600,marginLeft:"5px",fontSize:"0.85em"},children:"def"})]})}function Ht({count:e,color:r,title:n}){return t.jsx("span",{className:"px-1.5 py-0.5 rounded-full",style:{background:r+"25",color:r,fontSize:I.explorer.count,fontWeight:600,minWidth:"20px",textAlign:"center"},title:n,children:e})}const rl=`---
|
|
15
|
+
`,skippedColumns:s,warnings:a}}function qs(e,r){if(!r)return e;switch(r){case"sanitize-id":return $s(e);case"upper":return e.toUpperCase();case"lower":return e.toLowerCase();default:return e}}function $s(e){let r=e.trim().replace(/[\s\-]+/g,"_").replace(/[^a-zA-Z0-9_]/g,"").toLowerCase();return/^\d/.test(r)&&(r="e_"+r),r}function Vs(e){return e.trim().replace(/[^a-zA-Z0-9 _-]/g,"").split(/[\s_-]+/).map((r,n)=>n===0?r.toLowerCase():r.charAt(0).toUpperCase()+r.slice(1).toLowerCase()).join("")}function ar(e){return e.includes(",")||e.includes('"')||e.includes(`
|
|
16
|
+
`)?`"${e.replace(/"/g,'""')}"`:e}let Y=null,Dt=null,on=0;const Ws=1e4;let Ne=!1,zt=null,Ue=null,Ce=null,dt=!1;const Je=new Map;function Hs(e){const r=Je.get(e.requestId);r&&(clearTimeout(r.timer),Je.delete(e.requestId),e.success||e.conflict?r.resolve(e):r.reject(new Error(e.error||`Could not ${e.operation} diagram source.`)))}function Ks(e){for(const r of Je.values())clearTimeout(r.timer),r.reject(new Error(e));Je.clear()}function an(e){return e?e.snapshot?(Ue=e.workspaceSessionId,Ce=e.revision,dt=!1,!0):dt?!1:Ue!==e.workspaceSessionId||Ce===null?(dt=!0,lr(),!1):e.revision===Ce?!0:e.baseRevision===Ce&&e.revision===Ce+1?(Ce=e.revision,!0):(dt=!0,lr(),!1):!0}const Un=new Map,Ln=new Map,qn=new Map,$n=new Map,ht=new Map,Wt=new Map,yt=new Map,gt=new Map,Ht=new Map;function Ae(e,r){const n=r.get(e.requestId);n&&(clearTimeout(n.timer),r.delete(e.requestId),n.resolve(e))}function Gs(e){for(const r of[Un,Ln,qn,$n,Ht,Wt]){for(const n of r.values())clearTimeout(n.timer),n.reject(new Error(e));r.clear()}for(const r of ht.values())clearTimeout(r.timer),r.reject(new Error(e));ht.clear();for(const r of gt.values())clearTimeout(r.timer),r.reject(new Error("The development server disconnected."));gt.clear();for(const r of yt.values())clearTimeout(r.timer),r.reject(new Error(e));yt.clear()}function Xt(e,r,n){if(!Y||Y.readyState!==WebSocket.OPEN)return Promise.reject(new Error("The development server is not connected."));const o=`${e}-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`;return new Promise((a,s)=>{const i=setTimeout(()=>{n.delete(o),s(new Error("The server did not answer the relationship request."))},15e3);n.set(o,{resolve:a,reject:s,timer:i}),Y.send(JSON.stringify({type:e,payload:{...r,requestId:o}}))})}function xt(e){var r,n;return(n=(r=C.getState().model)==null?void 0:r.irIdentities)==null?void 0:n[e]}function Qt(e,r){var o;const n=C.getState().model;if(!(!Ue||Ce===null||!n))return{workspaceSessionId:Ue,baseRevision:Ce,sourceFile:e,expectedSourceHash:((o=n.sourceHashes)==null?void 0:o[e])??"",targetElementIds:r}}function Ys(){const e=window.__MEMO_DATA__;if(!e)return!1;const r=C.getState();return r.setConnected(!0),e.model&&r.setModel(e.model),e.validation&&r.setValidation(e.validation),e.completeness&&r.setCompleteness(e.completeness),!0}function fo(e){if(window.__MEMO_DATA__)return;Qs();const r=`ws://${window.location.host}`;if(Y&&(Y.readyState===WebSocket.OPEN||Y.readyState===WebSocket.CONNECTING))return;Y=new WebSocket(r);const n=C.getState();Y.onopen=()=>{n.setConnected(!0),on=0,zt=null,Ne=!1,Ue=null,Ce=null,dt=!1,n.setRestartRequired(null),Dt&&(clearTimeout(Dt),Dt=null)},Y.onmessage=o=>{try{const a=JSON.parse(o.data);Js(a)}catch{}},Y.onclose=()=>{n.setConnected(!1),Ks("The development server disconnected."),Gs("The development server disconnected."),Y=null,on++;const o=Math.min(2e3*Math.pow(2,on-1),Ws);Dt=setTimeout(()=>fo(),o)},Y.onerror=()=>{}}function Js(e){var n;const r=C.getState();switch(e.type){case"app:restart-required":Ne=!0,r.setRestartRequired(e);return;case"app:edit-conflict":r.setEditConflict(e.payload);return;case"model:update":if(Ne||!an(e.revision))return;if((n=e.revision)!=null&&n.modelDelta&&!e.revision.snapshot&&r.model){const o={...r.model.elements,...e.revision.modelDelta.upsertElements};for(const a of e.revision.modelDelta.removeElementIds)delete o[a];r.setModel({...r.model,...e.revision.modelDelta.patch,elements:o})}else r.setModel(e.payload);break;case"source:coherence":r.setSourceCoherence(e.payload);break;case"source:changed":if(Ne)return;r.applySourceChange(e.payload);break;case"validation:update":if(Ne||!an(e.revision))return;r.setValidation(e.payload);break;case"completeness:update":if(Ne||!an(e.revision))return;r.setCompleteness(e.payload);break;case"methodology:update":if(Ne)return;r.setMethodology(e.payload);break;case"rules:update":if(Ne)return;r.setEffectiveRules(e.payload.rules,e.payload.diagnostics);break;case"rule:policy:write:result":Ae(e.payload,gt);break;case"error":console.error("[MEMO] Server error:",e.payload.message);break;case"diagram:parse:result":r.applyDiagramParseResult(e.payload.diagramId,e.payload.elementIds,e.payload.errors);break;case"diagram:source:result":Hs(e.payload);break;case"relationship:create:result":Ae(e.payload,Un);break;case"relationship:delete:result":Ae(e.payload,Ln);break;case"relationship:update:result":Ae(e.payload,qn);break;case"element:delete:result":Ae(e.payload,$n);break;case"element:mutation:result":Ae(e.payload,ht);break;case"package:mutation:result":Ae(e.payload,Wt);break;case"methodology:source:result":Ae(e.payload,yt);break;case"screen-capture:upload:result":Ae(e.payload,Ht);break;case"ontology:packages":{const o=e.payload.ontologyHash;if(o){if(zt===null)zt=o;else if(zt!==o){Ne=!0,r.setRestartRequired({type:"app:restart-required",reason:"ontology-source-changed",changedFile:"(server restarted with different ontology)",instruction:"Reload the page to connect to the new server."});return}}r.setAvailableOntologies(e.payload.packages);break}case"ontology:install:result":r.setOntologyInstallStatus({installing:!1,lastInstalled:e.payload.success?e.payload.packageName:void 0,error:e.payload.error});break;case"ontology:remove:result":r.setOntologyInstallStatus({installing:!1});break;case"diagram:layout":r.mergeDiagramLayouts(e.payload.layouts);break;case"import:result":r.setImportResult(e.payload);break;case"llm:status":r.setLlmStatus(e.payload.available,e.payload.provider,e.payload.model);break;case"llm:settings":r.setLlmSettings(e.payload.settings);break;case"llm:ask:result":e.payload.error?r.rejectLlmRequest(e.payload.requestId,e.payload.error):r.resolveLlmRequest(e.payload.requestId,e.payload.answer);break;case"llm:chat:result":e.payload.error?r.rejectLlmRequest(e.payload.requestId,e.payload.error):r.resolveLlmRequest(e.payload.requestId,{answer:e.payload.answer,proposedChanges:e.payload.proposedChanges??[],messages:e.payload.messages??[],truncated:e.payload.truncated});break;case"llm:chat:apply:result":e.payload.error?r.rejectLlmRequest(e.payload.requestId,e.payload.error):r.resolveLlmRequest(e.payload.requestId,{applied:e.payload.applied??[],failed:e.payload.failed??[]});break;case"llm:settings:save:result":e.payload.error?r.rejectLlmRequest(e.payload.requestId,e.payload.error):r.resolveLlmRequest(e.payload.requestId,e.payload.settings);break;case"llm:generate:result":if(e.payload.error)r.rejectLlmRequest(e.payload.requestId,e.payload.error);else{const o=e.payload;r.resolveLlmRequest(o.requestId,{sysml:o.sysml,initialSysml:o.initialSysml,explanation:o.explanation,suggestedFile:o.suggestedFile,attempts:o.attempts,diagnostics:o.diagnostics??[],changeRecord:o.changeRecord})}break;case"llm:draft:result":e.payload.error?r.rejectLlmRequest(e.payload.requestId,e.payload.error):r.resolveLlmRequest(e.payload.requestId,{markdown:e.payload.markdown,summary:e.payload.summary});break;case"llm:suggest:result":e.payload.error?r.rejectLlmRequest(e.payload.requestId,e.payload.error):r.resolveLlmRequest(e.payload.requestId,e.payload.suggestions);break;case"dhf:docs":sr(()=>r.setDhfDocuments(e.payload.docs));break;case"dhf:settings":sr(()=>r.hydrateDhfSettings(e.payload.settings));break;case"dhf:templates:result":r.resolveLlmRequest(e.payload.requestId,e.payload.templates);break;case"dhf:template:content":e.payload.error?r.rejectLlmRequest(e.payload.requestId,e.payload.error):r.resolveLlmRequest(e.payload.requestId,e.payload.content);break;case"dhf:template:save:result":e.payload.error?r.rejectLlmRequest(e.payload.requestId,e.payload.error):r.resolveLlmRequest(e.payload.requestId,{path:e.payload.path});break}}let En=!1;const ho=600,pt=new Map;let Bt=null;function sr(e){En=!0;try{e()}finally{En=!1}}function Xe(e){Y&&Y.readyState===WebSocket.OPEN&&Y.send(JSON.stringify(e))}function Xs(e){const r=pt.get(e.id);r&&clearTimeout(r),pt.set(e.id,setTimeout(()=>{pt.delete(e.id);const n=C.getState().dhfDocuments.find(o=>o.id===e.id);n&&Xe({type:"dhf:doc:save",payload:{doc:n}})},ho))}let ir=!1;function Qs(){ir||(ir=!0,C.subscribe((e,r)=>{if(!En){if(e.dhfDocuments!==r.dhfDocuments){const n=new Map(r.dhfDocuments.map(o=>[o.id,o]));for(const o of e.dhfDocuments)n.get(o.id)!==o&&Xs(o),n.delete(o.id);for(const o of n.keys()){const a=pt.get(o);a&&(clearTimeout(a),pt.delete(o)),Xe({type:"dhf:doc:delete",payload:{docId:o}})}}e.dhfSettings!==r.dhfSettings&&(Bt&&clearTimeout(Bt),Bt=setTimeout(()=>{Bt=null,Xe({type:"dhf:settings:save",payload:{settings:C.getState().dhfSettings}})},ho))}}))}function Zs(e){Xe({type:"dhf:templates:list",payload:{requestId:e}})}function ei(e,r){Xe({type:"dhf:template:read",payload:{requestId:e,path:r}})}function ti(e,r,n){Xe({type:"dhf:template:save",payload:{requestId:e,title:r,content:n}})}function lr(){Y&&Y.readyState===WebSocket.OPEN&&Y.send(JSON.stringify({type:"request:refresh"}))}function Ft(e){return yo("element:update",e)}function sn(e){return yo("element:create",e)}function yo(e,r){var l;if(!Y||Y.readyState!==WebSocket.OPEN)return Promise.reject(new Error("The development server is not connected."));const n=`${e}-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`,o=C.getState().model,a=r.file??"model/catalog/project.sysml",s=((l=o==null?void 0:o.sourceHashes)==null?void 0:l[a])??"",i=Ue&&Ce!==null?{workspaceSessionId:Ue,baseRevision:Ce,sourceFile:a,expectedSourceHash:s,targetElementIds:[r.id]}:void 0;return new Promise((c,d)=>{const u=setTimeout(()=>{ht.delete(n),d(new Error("The server did not answer the element mutation."))},15e3);ht.set(n,{resolve:c,reject:d,timer:u}),Y.send(JSON.stringify({type:e,payload:{...r,file:a,requestId:n,precondition:i,...e==="element:update"?{irIdentity:xt(r.id)}:{}}}))})}function nt(e,r){if(!Y||Y.readyState!==WebSocket.OPEN)return Promise.reject(new Error("The development server is not connected."));const n=`${e}-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`;return new Promise((o,a)=>{const s=setTimeout(()=>{Wt.delete(n),a(new Error("The server did not answer the containment change."))},15e3);Wt.set(n,{resolve:o,reject:a,timer:s}),Y.send(JSON.stringify({type:e,payload:{...r,requestId:n}}))})}function ni(e){const r=e.owningFile??"model/catalog/relationships.sysml";return Xt("relationship:create",{...e,owningFile:r,sourceIdentity:xt(e.sourceId),targetIdentity:xt(e.targetId),precondition:Qt(r,[e.sourceId,e.targetId])},Un)}function ri(e){var o;const r=(o=C.getState().model)==null?void 0:o.relationships.find(a=>a.id===e.relationshipId),n=(r==null?void 0:r.file)??e.sourceFile;return Xt("relationship:delete",{...e,precondition:n?Qt(n,[r==null?void 0:r.sourceId,r==null?void 0:r.targetId].filter(Boolean)):void 0},Ln)}function mu(e){var o;const r=(o=C.getState().model)==null?void 0:o.relationships.find(a=>a.id===e.relationshipId),n=r==null?void 0:r.file;return Xt("relationship:update",{...e,sourceIdentity:xt(e.sourceId),targetIdentity:xt(e.targetId),precondition:n?Qt(n,[e.sourceId,e.targetId]):void 0},qn)}function oi(e){var n;const r=(n=C.getState().model)==null?void 0:n.elements[e];return Xt("element:delete",{elementId:e,precondition:r!=null&&r.file?Qt(r.file,[e]):void 0},$n)}function fu(e){if(!Y||Y.readyState!==WebSocket.OPEN)return Promise.reject(new Error("The development server is not connected."));const r=`screen-capture-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`;return new Promise((n,o)=>{const a=setTimeout(()=>{Ht.delete(r),o(new Error("The server did not answer the screen-capture upload request."))},3e4);Ht.set(r,{resolve:n,reject:o,timer:a}),Y.send(JSON.stringify({type:"screen-capture:upload",payload:{...e,requestId:r}}))})}function ai(e){Y&&Y.readyState===WebSocket.OPEN&&Y.send(JSON.stringify({type:"diagram:create",payload:e}))}function dr(e){Y&&Y.readyState===WebSocket.OPEN&&Y.send(JSON.stringify({type:"diagram:update",payload:e}))}function si(e){if(Y&&Y.readyState===WebSocket.OPEN){const r={id:e};Y.send(JSON.stringify({type:"diagram:delete",payload:r}))}}function hu(e,r){if(Y&&Y.readyState===WebSocket.OPEN){const n={diagramId:e,text:r};Y.send(JSON.stringify({type:"diagram:parse",payload:n}))}}function go(e,r,n){if(!Y||Y.readyState!==WebSocket.OPEN)return Promise.reject(new Error("The development server is not connected."));const o=`diagram-source-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`;return new Promise((a,s)=>{const i=setTimeout(()=>{Je.delete(o),s(new Error(`Timed out while trying to ${e} the SysML source.`))},1e4);Je.set(o,{resolve:a,reject:s,timer:i}),Y.send(JSON.stringify({type:e==="load"?"diagram:source:request":"diagram:source:save",payload:{requestId:o,diagramId:r,...e==="save"?n:{}}}))})}function yu(e){return go("load",e)}function gu(e,r,n){return go("save",e,{text:r,baseRevision:n})}function jn(e,r,n){if(!Y||Y.readyState!==WebSocket.OPEN)return Promise.reject(new Error("The development server is not connected."));const o=`methodology-${e}-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`;return new Promise((a,s)=>{const i=setTimeout(()=>{yt.delete(o),s(new Error(`Timed out while trying to ${e} methodology source.`))},15e3);yt.set(o,{resolve:a,reject:s,timer:i}),Y.send(JSON.stringify({type:`methodology:source:${e==="load"?"request":"save"}`,payload:{requestId:o,sourceFile:r,...n}}))})}function ii(e){Y&&Y.readyState===WebSocket.OPEN&&Y.send(JSON.stringify({type:"element:remap-kinds",payload:{mappings:e}}))}function ln(e){Y&&Y.readyState===WebSocket.OPEN&&Y.send(JSON.stringify({type:"ontology:save-selection",payload:{selected:e}}))}function xu(e){Y&&Y.readyState===WebSocket.OPEN&&Y.send(JSON.stringify({type:"ontology:install",payload:{source:e}}))}function li(e){Y&&Y.readyState===WebSocket.OPEN&&Y.send(JSON.stringify({type:"open-file",payload:{path:e}}))}function bu(e){Y&&Y.readyState===WebSocket.OPEN&&Y.send(JSON.stringify({type:"ontology:remove",payload:{packageName:e}}))}function vu(e,r){Y&&Y.readyState===WebSocket.OPEN&&Y.send(JSON.stringify({type:"diagram:layout:update",payload:{diagramId:e,layout:r}}))}function di(e){Y&&Y.readyState===WebSocket.OPEN&&Y.send(JSON.stringify({type:"csv:import",payload:e}))}function wu(e,r,n,o){Y&&Y.readyState===WebSocket.OPEN&&Y.send(JSON.stringify({type:"llm:chat",payload:{requestId:e,question:r,history:n,allowEdits:o}}))}function ku(e,r){Y&&Y.readyState===WebSocket.OPEN&&Y.send(JSON.stringify({type:"llm:chat:apply",payload:{requestId:e,changes:r}}))}function Su(e,r){Y&&Y.readyState===WebSocket.OPEN&&Y.send(JSON.stringify({type:"llm:settings:save",payload:{requestId:e,...r}}))}function Cu(e,r){Y&&Y.readyState===WebSocket.OPEN&&Y.send(JSON.stringify({type:"llm:generate",payload:{requestId:e,description:r}}))}function Eu(e,r,n){Y&&Y.readyState===WebSocket.OPEN&&Y.send(JSON.stringify({type:"llm:draft",payload:{requestId:e,documentTypeId:r,targetSections:n}}))}function ci(e){if(!Y||Y.readyState!==WebSocket.OPEN)return Promise.reject(new Error("The development server is not connected."));const r=`rule-policy-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`;return new Promise((n,o)=>{const a=setTimeout(()=>{gt.delete(r),o(new Error("Timed out while writing the rule policy."))},15e3);gt.set(r,{resolve:n,reject:o,timer:a}),Y.send(JSON.stringify({type:"rule:policy:write",payload:{requestId:r,...e}}))})}const cr="memo:userViewpoints",Dn="memo:activeView";function ui(){try{const e=JSON.parse(sessionStorage.getItem(Dn)??"null");if((e==null?void 0:e.type)==="diagram"&&typeof e.diagramId=="string")return e}catch{}return{type:"welcome"}}function ur(e){try{e.type==="diagram"?sessionStorage.setItem(Dn,JSON.stringify(e)):sessionStorage.removeItem(Dn)}catch{}}function pi(){try{const e=localStorage.getItem(cr);if(e){const r=JSON.parse(e);return localStorage.removeItem(cr),r.length>0&&console.warn(`[MEMO] Migrated ${r.length} user viewpoint(s) from localStorage. Save them to memo.viewpoints.yaml to persist across sessions.`),r}}catch{}return[]}const At=ui(),C=Lr((e,r)=>({model:null,validation:null,completeness:null,connected:!1,restartRequired:null,sourceCoherence:null,editConflict:null,methodology:null,effectiveRules:[],ruleDiagnostics:[],lastSourceChange:null,activeMode:At.type==="diagram"?"diagram":"catalog",activeView:At,explorerTab:"model",selectedElementId:null,selectedRelationshipId:null,selectedElementIds:new Set,recentlyVisited:[],selectedViewpointId:null,selectedDiagramId:At.type==="diagram"?At.diagramId:null,searchTerm:"",sidebarCollapsed:!1,propertiesPanelCollapsed:!0,hiddenLayers:new Set,ontologyGroupBy:"layer",collapsedGroups:new Set,availableOntologies:[],selectedOntologies:new Set,focusedOntologyId:null,selectedOntologyKind:null,ontologyViewMode:"visual",showOntologyRelationships:!1,highlightedRelationshipType:null,hiddenEdgeTypes:new Set(["extends"]),ontologyInstallStatus:{installing:!1},gapBarExpanded:!1,gapBarHeight:160,catalogGroupBy:"semantic",catalogCollapsed:new Set,contextMenu:null,attributeFilter:null,labelFilter:null,tagFilters:[],userViewpoints:pi(),selectionStyle:null,setSelectionStyle:n=>e({selectionStyle:n}),diagramLayouts:{},mergeDiagramLayouts:n=>e(o=>({diagramLayouts:{...o.diagramLayouts,...n}})),setNodeLayout:(n,o,a)=>e(s=>{const i=s.diagramLayouts[n]??{nodes:{},edges:{}};return{diagramLayouts:{...s.diagramLayouts,[n]:{...i,nodes:{...i.nodes,[o]:{...i.nodes[o]??{},...a}}}}}}),diagramParseErrors:{},dhfDocuments:[],dhfSettings:{company:"",product:"",deviceType:"",version:"0.1",phase:"",logoUrl:"",compactLogoUrl:"",primaryColor:"#1B3A4B",compactMode:!1,headerTemplate:"**{{project.product}}** | {{id}} | Rev {{project.version}}",footerTemplate:"Confidential — {{project.company}} | Page {{page}}",documentNumberingPrefix:"DOC"},bulkImportOpen:!1,importResult:null,llmAvailable:!1,llmProvider:void 0,llmModel:void 0,llmPending:new Map,llmSettings:null,setLlmSettings:n=>e({llmSettings:n,llmAvailable:n.configured,llmProvider:n.provider,llmModel:n.model}),setLlmStatus:(n,o,a)=>e({llmAvailable:n,llmProvider:o,llmModel:a}),registerLlmRequest:(n,o,a)=>e(s=>{const i=new Map(s.llmPending);return i.set(n,{resolve:o,reject:a}),{llmPending:i}}),resolveLlmRequest:(n,o)=>e(a=>{const s=a.llmPending.get(n);if(s){s.resolve(o);const i=new Map(a.llmPending);return i.delete(n),{llmPending:i}}return{}}),rejectLlmRequest:(n,o)=>e(a=>{const s=a.llmPending.get(n);if(s){s.reject(new Error(o));const i=new Map(a.llmPending);return i.delete(n),{llmPending:i}}return{}}),analysisIssues:[],editingElementId:null,pendingEdits:new Map,pendingRelationships:[],createRelationship:async n=>{const o=`pending-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`,a=fi(r().model,n.type);e(i=>({pendingRelationships:[...i.pendingRelationships,{pendingId:o,type:n.type,label:(a==null?void 0:a.label)??n.type,sourceId:n.sourceId,targetId:n.targetId,direction:n.direction,status:"saving"}]}));const s=(i,l)=>(e(c=>({pendingRelationships:c.pendingRelationships.map(d=>d.pendingId===o?{...d,status:"failed",error:i}:d)})),{success:!1,error:i,diagnostics:l});try{const i=await ni(n);return i.success?(e(l=>({pendingRelationships:l.pendingRelationships.filter(c=>c.pendingId!==o)})),{success:!0,relationshipId:i.relationshipId,sourceFile:i.sourceFile,diagnostics:i.diagnostics}):s(i.error??"The relationship could not be created.",i.diagnostics)}catch(i){return s(i instanceof Error?i.message:String(i))}},deleteRelationship:async n=>{try{const o=await ri({relationshipId:n});return o.success?(e(a=>a.model?{model:{...a.model,relationships:a.model.relationships.filter(s=>s.id!==n)},selectedRelationshipId:a.selectedRelationshipId===n?null:a.selectedRelationshipId}:{}),{success:!0,sourceFile:o.sourceFile}):{success:!1,error:o.error??"The relationship could not be deleted."}}catch(o){return{success:!1,error:o instanceof Error?o.message:String(o)}}},deleteModelElement:async n=>{try{const o=await oi(n);return o.success?(e(a=>{if(!a.model)return{};const s={...a.model.elements};return delete s[n],{model:{...a.model,elements:s,relationships:a.model.relationships.filter(i=>i.sourceId!==n&&i.targetId!==n),diagrams:(a.model.diagrams??[]).map(i=>{var l;return{...i,elementIds:(l=i.elementIds)==null?void 0:l.filter(c=>c!==n)}})},selectedElementId:a.selectedElementId===n?null:a.selectedElementId,selectedElementIds:new Set([...a.selectedElementIds].filter(i=>i!==n))}}),{success:!0}):{success:!1,error:o.error??"The element could not be deleted."}}catch(o){return{success:!1,error:o instanceof Error?o.message:String(o)}}},dismissPendingRelationship:n=>e(o=>({pendingRelationships:o.pendingRelationships.filter(a=>a.pendingId!==n)})),setRestartRequired:n=>e({restartRequired:n}),setSourceCoherence:n=>e({sourceCoherence:n.coherent?null:n}),setEditConflict:n=>e({editConflict:n}),applySourceChange:n=>e(o=>{var a;return{lastSourceChange:{...n,seq:(((a=o.lastSourceChange)==null?void 0:a.seq)??0)+1}}}),setMethodology:n=>e({methodology:n}),setEffectiveRules:(n,o)=>e({effectiveRules:n??[],ruleDiagnostics:o??[]}),setModel:n=>e(o=>{var l,c,d,u;let a=o.activeView,s=o.selectedDiagramId,i=o.selectedViewpointId;if(a.type==="diagram"){const m=a.diagramId,b=(l=n.diagrams)==null?void 0:l.find(g=>g.id===m),v=(d=(c=o.model)==null?void 0:c.diagrams)==null?void 0:d.find(g=>g.id===m),w=b??(v!=null&&v.sourceFile?(u=n.diagrams)==null?void 0:u.find(g=>g.sourceFile===v.sourceFile):void 0);w&&(w.id!==m&&(a={type:"diagram",diagramId:w.id},ur(a)),s=w.id,i=w.viewpointId==="__model"?null:w.viewpointId)}else(a.type==="welcome"||a.type==="dashboard")&&Object.keys(n.elements).length>0&&(a={type:"dashboard"});return{model:n,activeView:a,selectedDiagramId:s,selectedViewpointId:i}}),setValidation:n=>e({validation:n}),setCompleteness:n=>e({completeness:n}),setConnected:n=>e({connected:n}),setAnalysisIssues:n=>e({analysisIssues:n}),setActiveMode:n=>e({activeMode:n}),setActiveView:n=>{ur(n),e({activeView:n})},setExplorerTab:n=>e({explorerTab:n}),selectElement:n=>{e(n?o=>{const a=[n,...o.recentlyVisited.filter(s=>s!==n)].slice(0,20);return{selectedElementId:n,activeView:{type:"element-detail",elementId:n},recentlyVisited:a}}:{selectedElementId:n})},inspectElement:n=>e(o=>({selectedElementId:n,selectedRelationshipId:null,propertiesPanelCollapsed:n?!1:o.propertiesPanelCollapsed,recentlyVisited:n?[n,...o.recentlyVisited.filter(a=>a!==n)].slice(0,20):o.recentlyVisited})),inspectRelationship:n=>e({selectedRelationshipId:n,selectedElementId:null,propertiesPanelCollapsed:n?!1:r().propertiesPanelCollapsed}),toggleElementSelection:n=>e(o=>{const a=new Set(o.selectedElementIds);return a.has(n)?a.delete(n):a.add(n),{selectedElementIds:a}}),selectAllElements:n=>e({selectedElementIds:new Set(n)}),clearElementSelection:()=>e({selectedElementIds:new Set}),updateElementKind:(n,o)=>{const{model:a}=r();if(!a)return;const s=a.elements[n];if(!s)return;const i={...s,kind:o};e(l=>({model:l.model?{...l.model,elements:{...l.model.elements,[n]:i}}:null})),Ft(i)},bulkUpdateAttributes:(n,o)=>{const{model:a}=r();if(!a)return;const s={...a.elements};for(const i of n){const l=s[i];if(!l)continue;const c={...l,attributes:{...l.attributes,...o}};s[i]=c,Ft(c)}e(i=>({model:i.model?{...i.model,elements:s}:null}))},selectViewpoint:n=>e({selectedViewpointId:n,selectedDiagramId:null}),selectDiagram:n=>{var s;if(!n){e({selectedDiagramId:null});return}const{model:o}=r(),a=(s=o==null?void 0:o.diagrams)==null?void 0:s.find(i=>i.id===n);e(a?{selectedDiagramId:n,selectedViewpointId:a.viewpointId==="__model"?null:a.viewpointId}:{selectedDiagramId:n})},setSearchTerm:n=>e({searchTerm:n}),toggleSidebar:()=>e(n=>({sidebarCollapsed:!n.sidebarCollapsed})),togglePropertiesPanel:()=>e(n=>({propertiesPanelCollapsed:!n.propertiesPanelCollapsed})),toggleLayerVisibility:n=>e(o=>{const a=new Set(o.hiddenLayers);return a.has(n)?a.delete(n):a.add(n),{hiddenLayers:a}}),setOntologyGroupBy:n=>e({ontologyGroupBy:n,collapsedGroups:new Set}),toggleGroupCollapsed:n=>e(o=>{const a=new Set(o.collapsedGroups);return a.has(n)?a.delete(n):a.add(n),{collapsedGroups:a}}),setAvailableOntologies:n=>e(o=>{let a=new Set(n.filter(l=>l.selected).map(l=>l.name));const s=["@memoarchitect/ontology"];for(const l of n)s.includes(l.name)&&a.add(l.name);a.size===0&&n.length>0&&(a=new Set(n.map(l=>l.name)));const i=o.focusedOntologyId??(a.size>0?[...a][0]:null);return{availableOntologies:n,selectedOntologies:a,focusedOntologyId:i}}),toggleOntologySelection:n=>e(o=>{const a=new Set(o.selectedOntologies);return a.has(n)?a.delete(n):a.add(n),{selectedOntologies:a}}),setFocusedOntology:n=>e({focusedOntologyId:n}),setSelectedOntologyKind:n=>e({selectedOntologyKind:n}),setOntologyViewMode:n=>e({ontologyViewMode:n}),toggleOntologyRelationships:()=>e(n=>({showOntologyRelationships:!n.showOntologyRelationships})),setHighlightedRelationshipType:n=>e(o=>({highlightedRelationshipType:o.highlightedRelationshipType===n?null:n})),toggleHiddenEdgeType:n=>e(o=>{const a=new Set(o.hiddenEdgeTypes);return a.has(n)?a.delete(n):a.add(n),{hiddenEdgeTypes:a}}),saveOntologySelection:()=>{const{model:n,availableOntologies:o,selectedOntologies:a}=r();if(!n)return{success:!0};const s=o.filter(c=>!a.has(c.name)),i=new Set;for(const c of s)for(const d of c.layers)for(const u of d.kinds)i.add(u.name);const l=[];if(i.size>0){for(const c of Object.values(n.elements))if(i.has(c.kind)){const d=s.find(u=>u.layers.some(m=>m.kinds.some(b=>b.name===c.kind)));l.push({elementId:c.id,elementName:c.name,kind:c.kind,fromOntology:(d==null?void 0:d.name)??"unknown"})}}return{success:!0,orphanedElements:l}},setOntologyInstallStatus:n=>e({ontologyInstallStatus:n}),toggleGapBar:()=>e(n=>({gapBarExpanded:!n.gapBarExpanded})),setGapBarHeight:n=>e({gapBarHeight:Math.max(80,Math.min(400,n))}),setCatalogGroupBy:n=>e({catalogGroupBy:n,catalogCollapsed:new Set}),toggleCatalogCollapsed:n=>e(o=>{const a=new Set(o.catalogCollapsed);return a.has(n)?a.delete(n):a.add(n),{catalogCollapsed:a}}),setCatalogCollapsedAll:n=>e(o=>n?{catalogCollapsed:new Set(["__ALL__"])}:{catalogCollapsed:new Set}),setContextMenu:n=>e({contextMenu:n}),setAttributeFilter:n=>e({attributeFilter:n}),setLabelFilter:n=>e({labelFilter:n}),toggleTagFilter:n=>e(o=>({tagFilters:o.tagFilters.includes(n)?o.tagFilters.filter(s=>s!==n):[...o.tagFilters,n]})),clearTagFilters:()=>e({tagFilters:[]}),setEditingElement:n=>e({editingElementId:n}),updateElementField:(n,o,a)=>e(s=>{const i=new Map(s.pendingEdits),l=i.get(n)||{};return i.set(n,{...l,[o]:a}),{pendingEdits:i}}),updateElementAttribute:(n,o,a)=>e(s=>{const i=new Map(s.pendingEdits),l=i.get(n)||{},c={...l.attributes||{},[o]:a};return i.set(n,{...l,attributes:c}),{pendingEdits:i}}),moveElementToPackage:(n,o)=>nt("element:move-package",{elementId:n,targetPackage:o}),createPackage:(n,o)=>nt("package:create",{name:n,...o?{parent:o}:{}}),renamePackage:(n,o)=>nt("package:rename",{qualifiedName:n,name:o}),movePackage:(n,o)=>nt("package:move",{qualifiedName:n,targetParent:o}),deletePackage:n=>nt("package:delete",{qualifiedName:n}),addElement:(n,o,a)=>{const s=r();if(!s.model)return;const i=`${n.toLowerCase().replace(/\s+/g,"_")}_${Math.random().toString(36).substr(2,5)}`,l=Object.values(s.model.elements).find(u=>u.kind===n),c=a?Object.values(s.model.elements).find(u=>u.package===a):void 0,d={id:i,name:o,kind:n,construct:(l==null?void 0:l.construct)||"part",layer:(l==null?void 0:l.layer)||"Other",doc:"",attributes:{},...a?{package:a}:{},file:(c==null?void 0:c.file)||(l==null?void 0:l.file)||"model/generated.sysml"};e(u=>({model:u.model?{...u.model,elements:{...u.model.elements,[i]:d}}:null,selectedElementId:i,activeView:{type:"element-detail",elementId:i}})),sn(d)},createModelElement:n=>{const o=n.id??`${n.kind.toLowerCase().replace(/\W+/g,"_")}_${Math.random().toString(36).slice(2,8)}`,a={...n,id:o};return e(s=>({model:s.model?{...s.model,elements:{...s.model.elements,[o]:a}}:null,selectedElementId:o})),sn(a),o},persistElementAttributes:(n,o)=>{var i;const a=(i=r().model)==null?void 0:i.elements[n];if(!a)return;const s={...a,attributes:{...a.attributes,...o}};e(l=>({model:l.model?{...l.model,elements:{...l.model.elements,[n]:s}}:null})),Ft(s)},addUserViewpoint:n=>e(o=>({userViewpoints:[...o.userViewpoints,n]})),updateUserViewpoint:n=>e(o=>({userViewpoints:o.userViewpoints.map(a=>a.id===n.id?n:a)})),deleteUserViewpoint:n=>e(o=>({userViewpoints:o.userViewpoints.filter(a=>a.id!==n),selectedViewpointId:o.selectedViewpointId===n?null:o.selectedViewpointId})),createDiagram:({id:n,name:o,diagramType:a,viewKind:s,viewpointId:i,elementIds:l=[],activate:c=!0})=>{const d=n??`diag_${Math.random().toString(36).substr(2,9)}`,u={id:d,name:o,diagramType:a,viewKind:s,viewpointId:i,auto:!1,elementIds:l};return e(m=>({model:m.model?{...m.model,diagrams:[...m.model.diagrams??[],u]}:null,selectedDiagramId:c?d:m.selectedDiagramId,activeView:c?{type:"diagram",diagramId:d}:m.activeView})),ai({id:d,name:o,diagramType:a,viewKind:s,viewpointId:i,elementIds:l}),d},addElementToDiagram:(n,o)=>{var l;const{model:a}=r(),s=(l=a==null?void 0:a.diagrams)==null?void 0:l.find(c=>c.id===n);if(!s)return;const i=s.elementIds??[];i.includes(o)||r().updateDiagramElementIds(n,[...i,o])},updateDiagramElementIds:(n,o)=>{const{model:a}=r();if(!(a!=null&&a.diagrams))return;const s=a.diagrams.findIndex(c=>c.id===n);if(s<0)return;const i={...a.diagrams[s],elementIds:o},l=[...a.diagrams];l[s]=i,e(c=>({model:c.model?{...c.model,diagrams:l}:null})),dr({id:n,elementIds:o})},deleteDiagram:n=>{e(o=>({model:o.model?{...o.model,diagrams:(o.model.diagrams??[]).filter(a=>a.id!==n)}:null,selectedDiagramId:o.selectedDiagramId===n?null:o.selectedDiagramId,activeView:o.activeView.type==="diagram"&&o.activeView.diagramId===n?{type:"welcome"}:o.activeView})),si(n)},applyDiagramParseResult:(n,o,a)=>{const{model:s}=r();if(!(s!=null&&s.diagrams))return;const i=s.diagrams.findIndex(l=>l.id===n);if(i>=0){const l={...s.diagrams[i],elementIds:o},c=[...s.diagrams];c[i]=l,e(d=>({model:d.model?{...d.model,diagrams:c}:null,diagramParseErrors:{...d.diagramParseErrors,[n]:a}})),dr({id:n,elementIds:o})}else e(l=>({diagramParseErrors:{...l.diagramParseErrors,[n]:a}}))},addDhfDocument:n=>e(o=>({dhfDocuments:[...o.dhfDocuments,n]})),setDhfDocuments:n=>e({dhfDocuments:n}),hydrateDhfSettings:n=>e(o=>({dhfSettings:{...o.dhfSettings,...n}})),updateDhfSettings:n=>e(o=>({dhfSettings:{...o.dhfSettings,...n}})),updateDhfDocumentMeta:(n,o)=>e(a=>({dhfDocuments:a.dhfDocuments.map(s=>s.id===n?{...s,...o}:s)})),updateDhfDocumentContent:(n,o)=>e(a=>({dhfDocuments:a.dhfDocuments.map(s=>s.id===n?{...s,content:o}:s)})),removeDhfDocument:n=>e(o=>({dhfDocuments:o.dhfDocuments.filter(a=>a.id!==n),activeView:o.activeView.type==="dhf-document"&&o.activeView.docId===n?{type:"dhf-dashboard"}:o.activeView})),setBulkImportOpen:n=>e({bulkImportOpen:n}),setImportResult:n=>e({importResult:n}),clearImportResult:()=>e({importResult:null}),cancelEdit:n=>e(o=>{const a=new Map(o.pendingEdits);return a.delete(n),{pendingEdits:a}}),applyEdit:async n=>{const{pendingEdits:o,model:a}=r(),s=o.get(n);if(!s||!a)return;const i=a.elements[n];if(!i)return;const l={...i};s.name!==void 0&&(l.name=s.name),s.doc!==void 0&&(l.doc=s.doc),s.attributes&&(l.attributes={...i.attributes,...s.attributes});const c={...a,elements:{...a.elements,[n]:l}};if(e({model:c}),!(n.startsWith("new_")?await sn(l):await Ft(l)).success){e({model:a});return}const u=new Map(r().pendingEdits);u.delete(n),e({pendingEdits:u})}})),mi={relationships:[],kinds:[]};function xo(e){return(e==null?void 0:e.registries)??mi}function fi(e,r){return zn(r,xo(e))}function ju(e){const r=new Map;if(!e)return r;for(const n of Object.values(e.elements))r.has(n.layer)||r.set(n.layer,[]),r.get(n.layer).push(n);return r}function hi(e,r){return e?e.relationships.filter(n=>n.sourceId===r||n.targetId===r):[]}function Zt(e,r){return!e||!r||!e.diagrams?null:e.diagrams.find(n=>n.id===r)??null}function Du(e,r){const n=Zt(e,r);return n?n.sourceFiles&&n.sourceFiles.length>0?n.sourceFiles:n.sourceFile?[n.sourceFile]:[]:[]}function yi(e,r){var o;const n=r?(o=e==null?void 0:e.elements[r])==null?void 0:o.file:void 0;return n?[...Es(n,e==null?void 0:e.sourceGraph)]:[]}function gi(e,r){return e?js(e.files,r):!1}function Ut(e,r){return e!=null&&e.diagrams?e.diagrams.filter(n=>{var o;return n.viewpointId===r||((o=n.viewpointIds)==null?void 0:o.includes(r))}):[]}const Vn={dashboard:"/",dsm:"/dsm",ontology:"/ontology",traceability:"/traceability","scenario-editor":"/use-cases","model-diff":"/diff","compliance-wizard":"/compliance",statistics:"/statistics","dhf-dashboard":"/dhf","dhf-dashboard-legacy":"/dhf/legacy",ai:"/ai",ask:"/ask","sysml-generator":"/generate","review-dashboard":"/review","workflow-wizard":"/workflow",import:"/import",analysis:"/analysis","ui-screens":"/ui-screens"},bo={"/dashboard":"dashboard","/scenarios":"scenario-editor"},xi={...Object.fromEntries(Object.entries(Vn).map(([e,r])=>[r,e])),...bo};function bi(e){return e.toLowerCase().replace(/\s+/g,"-")}function vi(e){switch(e.type){case"welcome":return"/";case"ontology-detail":return e.layerId?`/ontology/${encodeURIComponent(e.packageName)}/${encodeURIComponent(e.layerId)}`:`/ontology/${encodeURIComponent(e.packageName)}`;case"dhf-document":return`/dhf/${encodeURIComponent(e.docId)}`;case"tabular":{const r=new URLSearchParams;e.viewpointId&&r.set("viewpoint",e.viewpointId),e.diagramId&&r.set("diagram",e.diagramId);const n=r.toString();return n?`/table?${n}`:"/table"}case"element-detail":case"diagram":return null;default:return Vn[e.type]??null}}function wi(e,r=""){const n=e.length>1?e.replace(/\/+$/,""):e,o=xi[n];if(o)return{type:o};if(n==="/table"){const s=new URLSearchParams(r);return{type:"tabular",viewpointId:s.get("viewpoint")??void 0,diagramId:s.get("diagram")??void 0}}const a=n.split("/").filter(Boolean);return a[0]==="dhf"&&a.length===2?{type:"dhf-document",docId:decodeURIComponent(a[1])}:a[0]==="ontology"&&a.length>=2?{type:"ontology-detail",packageName:decodeURIComponent(a[1]),layerId:a[2]?decodeURIComponent(a[2]):void 0}:null}function ki(e){const r=e.split("/").filter(Boolean);return r[0]==="catalog"&&r.length===3||r[0]==="diagrams"&&r.length===3}function Si(e){const r=e.split("/").filter(Boolean);return r[0]==="catalog"&&r.length<=2||r[0]==="diagrams"&&r.length===1}function Ci(){return[...Object.values(Vn),...Object.keys(bo)].filter(e=>e!=="/")}const Ei=[{id:"ai-tools",label:"AI Tools",description:"Model Assistant (model Q&A and proposed edits) and SysML Generator (natural language → SysML v2). Generated content is unreviewed and carries no design-control provenance, so the surface stays off by default.",stage:"experimental"},{id:"ontology",label:"Ontology Explorer",description:"Direct ontology browsing is an advanced workbench surface and stays off in the default regulated workspace.",stage:"experimental"},{id:"import",label:"Import",description:"Model import is an advanced transformation surface and stays off in the default regulated workspace.",stage:"experimental"},{id:"model-tools",label:"Model Tools",description:"Matrices, diagnostics, review, and workflow tools are available together only in the experimental workbench.",stage:"experimental"},{id:"analysis",label:"Analysis & Jupyter",description:"Analysis provides direct access to the user’s live local JupyterLab notebook workspace.",stage:"stable"}];function ji(){return typeof window>"u"?{}:window.__MEMO_FLAGS__??{}}function pe(e){const r=Ei.find(n=>n.id===e);return r?r.stage==="stable"?!0:ji().experimental===!0:!1}function Nt(){const e=C(i=>i.model),r=C(i=>i.setActiveView),n=C(i=>i.setActiveMode),o=je(),a=e==null?void 0:e.metadata;function s(){n("dashboard"),r({type:"dashboard"}),o("/")}return t.jsxs("div",{className:"flex items-center gap-3 px-4 py-2",style:{background:"#0B1E2D",borderBottom:"1px solid rgba(255,255,255,0.06)",position:"relative",zIndex:10},children:[t.jsx("button",{onClick:()=>window.dispatchEvent(new Event("memo:toggle-navigation")),title:"Open navigation",style:{width:"40px",height:"40px",borderRadius:"8px",background:"none",border:"none",cursor:"pointer",color:"#2DD4A8",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"24px",flexShrink:0,transition:"color 150ms"},onMouseEnter:i=>{i.currentTarget.style.background="rgba(45,212,168,0.12)"},onMouseLeave:i=>{i.currentTarget.style.background="none"},children:"☰"}),t.jsx("button",{onClick:s,className:"text-sm font-bold transition-opacity",style:{color:"#2DD4A8",letterSpacing:"0.04em",background:"none",border:"none",cursor:"pointer",padding:0},onMouseEnter:i=>i.currentTarget.style.opacity="0.75",onMouseLeave:i=>i.currentTarget.style.opacity="1",title:"Go to home",children:"MEMO Architect"}),t.jsx("div",{className:"flex-1"}),((a==null?void 0:a.projectName)||(a==null?void 0:a.gitUser))&&t.jsxs("span",{title:"Current project and Git revision",style:{color:"rgba(255,255,255,0.62)",fontSize:"12px",whiteSpace:"nowrap"},children:[(a==null?void 0:a.projectName)&&t.jsx("span",{style:{color:"rgba(255,255,255,0.8)",fontWeight:600},children:a.projectName}),(a==null?void 0:a.projectName)&&(a==null?void 0:a.gitUser)&&t.jsx("span",{style:{margin:"0 8px",color:"rgba(255,255,255,0.32)"},children:"|"}),(a==null?void 0:a.gitUser)&&t.jsxs(t.Fragment,{children:["@",a.gitUser,a.gitBranch&&t.jsxs(t.Fragment,{children:[" · ",a.gitBranch]}),a.gitCommitShort&&t.jsxs("span",{style:{marginLeft:4,fontFamily:"ui-monospace, SFMono-Regular, Menlo, monospace"},children:[a.gitCommitShort,a.gitDirty?"*":""]})]})]}),t.jsx("img",{src:"/logo.png",alt:"MEMO",style:{height:40,opacity:.9,cursor:"pointer"},onClick:s,title:"Go to home"})]})}const vo="memo-working-sets",wo="memo-quick-slots";function Di(){return`ws-${Date.now()}-${Math.random().toString(36).slice(2,8)}`}function Tt(e){try{localStorage.setItem(vo,JSON.stringify(e))}catch{}}function Bi(){try{const e=localStorage.getItem(vo);return e?JSON.parse(e):[]}catch{return[]}}function pr(){try{const e=localStorage.getItem(wo);return e?JSON.parse(e):[null,null,null,null]}catch{return[null,null,null,null]}}function mr(e){try{localStorage.setItem(wo,JSON.stringify(e))}catch{}}const dn=Lr((e,r)=>({workingSets:[],activeWorkingSetId:null,quickSlots:pr(),loadFromStorage:()=>{const n=Bi(),o=pr();e({workingSets:n,quickSlots:o})},saveWorkingSet:(n,o)=>{const a=Di(),s=Date.now(),i={id:a,name:n,createdAt:s,updatedAt:s,state:o},l=[...r().workingSets,i];return e({workingSets:l,activeWorkingSetId:a}),Tt(l),a},updateWorkingSet:(n,o)=>{const a=r().workingSets.map(s=>s.id===n?{...s,state:o,updatedAt:Date.now()}:s);e({workingSets:a}),Tt(a)},renameWorkingSet:(n,o)=>{const a=r().workingSets.map(s=>s.id===n?{...s,name:o,updatedAt:Date.now()}:s);e({workingSets:a}),Tt(a)},deleteWorkingSet:n=>{const o=r().workingSets.filter(s=>s.id!==n),a=r().activeWorkingSetId===n?null:r().activeWorkingSetId;e({workingSets:o,activeWorkingSetId:a}),Tt(o)},setActiveWorkingSet:n=>e({activeWorkingSetId:n}),saveQuickSlot:(n,o,a)=>{const s=["Last Session","Slot 1","Slot 2","Slot 3"],i=[...r().quickSlots];for(;i.length<4;)i.push(null);i[n]={name:a??s[n],state:o,savedAt:Date.now()},mr(i),e({quickSlots:i})},clearQuickSlot:n=>{const o=[...r().quickSlots];o[n]=null,mr(o),e({quickSlots:o})}})),I={badge:"12px",xs:"12px",sm:"13px",md:"14px",lg:"15px",explorer:{group:"13px",kind:"12px",item:"13px",element:"13px",count:"12px",search:"13px"}},f={primary:"#082744",secondary:"#324E67",muted:"#5C7188",faint:"#8CA0B1",surface:"#FFFFFF",surfaceAlt:"#EEF4F7",border:"#D8E2E9",borderLight:"#E6EDF2",accent:"#2DD4A8",accentDark:"#0B1E2D"},Fi={sm:"0 1px 3px rgba(0,0,0,0.08)",md:"0 2px 8px rgba(0,0,0,0.1)",lg:"0 4px 16px rgba(0,0,0,0.12)",selected:"0 0 0 2px #2DD4A8, 0 4px 12px rgba(45, 212, 168, 0.3)"},Bu={md:"10px"},Fu={defaultWidth:2,flowWidth:2.5,arrowSize:16,labelBgPadding:[6,4],labelBgRadius:6,labelBgStyle:{fill:"#FFFFFF",fillOpacity:.92,stroke:"#E5E5E0",strokeWidth:.5}};function cn(){const e=C.getState();return{activeView:e.activeView,explorerTab:e.explorerTab,selectedElementId:e.selectedElementId,selectedViewpointId:e.selectedViewpointId,selectedDiagramId:e.selectedDiagramId,sidebarCollapsed:e.sidebarCollapsed,propertiesPanelCollapsed:e.propertiesPanelCollapsed,hiddenLayers:Array.from(e.hiddenLayers)}}function un(e){const r=C.getState();r.setActiveView(e.activeView),r.setExplorerTab(e.explorerTab),r.selectElement(e.selectedElementId),e.selectedDiagramId&&r.selectDiagram(e.selectedDiagramId),e.selectedViewpointId&&r.selectViewpoint(e.selectedViewpointId)}function Ai(){const[e,r]=p.useState(!1),n=p.useRef(null),o=dn(l=>l.quickSlots),a=dn(l=>l.saveQuickSlot),s=dn(l=>l.clearQuickSlot);p.useEffect(()=>{if(!e)return;const l=c=>{n.current&&!n.current.contains(c.target)&&r(!1)};return document.addEventListener("mousedown",l),()=>document.removeEventListener("mousedown",l)},[e]),p.useEffect(()=>{const l=()=>{a(0,cn(),"Last Session")};return window.addEventListener("beforeunload",l),()=>window.removeEventListener("beforeunload",l)},[a]),p.useEffect(()=>{const l=c=>{if(!(c.ctrlKey||c.metaKey))return;const d=c.key==="1"?1:c.key==="2"?2:c.key==="3"?3:null;if(d)if(c.preventDefault(),c.shiftKey)a(d,cn());else{const u=o[d];u&&un(u.state)}};return window.addEventListener("keydown",l),()=>window.removeEventListener("keydown",l)},[o,a]);const i=["Last Session","Slot 1","Slot 2","Slot 3"];return t.jsxs("div",{ref:n,style:{position:"relative"},children:[t.jsxs("button",{onClick:()=>r(l=>!l),className:"flex items-center gap-1 px-3 py-1.5 text-sm font-medium rounded-md transition-all",style:e?{background:"rgba(45,212,168,0.15)",color:"#2DD4A8"}:{background:"transparent",color:"rgba(255,255,255,0.5)"},title:"Workspaces (Ctrl+1/2/3 to restore, Ctrl+Shift+1/2/3 to save)",children:[t.jsx("span",{children:"⊟"}),t.jsx("span",{style:{fontSize:"10px",marginLeft:"2px",opacity:.7},children:"▾"})]}),e&&t.jsxs("div",{style:{position:"absolute",top:"calc(100% + 6px)",right:0,zIndex:100,background:"#132D3E",border:"1px solid rgba(45,212,168,0.2)",borderRadius:"8px",minWidth:"240px",boxShadow:"0 8px 24px rgba(0,0,0,0.4)",overflow:"hidden"},children:[t.jsx("div",{className:"px-3 py-2",style:{borderBottom:"1px solid rgba(255,255,255,0.08)",fontSize:I.xs,color:"rgba(255,255,255,0.4)",fontWeight:600},children:"WORKSPACES"}),t.jsxs("div",{className:"px-3 py-2",style:{borderBottom:"1px solid rgba(255,255,255,0.06)"},children:[t.jsxs("div",{className:"flex items-center justify-between gap-2",children:[t.jsx("span",{style:{fontSize:I.xs,color:"rgba(255,255,255,0.5)",fontWeight:600},children:"Last Session"}),o[0]?t.jsx("button",{onClick:()=>{un(o[0].state),r(!1)},className:"px-2 py-0.5 rounded text-xs",style:{background:"rgba(45,212,168,0.15)",color:"#2DD4A8",border:"none",cursor:"pointer"},children:"Restore"}):t.jsx("span",{style:{fontSize:"10px",color:"rgba(255,255,255,0.25)"},children:"— none saved —"})]}),o[0]&&t.jsx("div",{style:{fontSize:"10px",color:"rgba(255,255,255,0.3)",marginTop:2},children:new Date(o[0].savedAt).toLocaleString()})]}),[1,2,3].map(l=>{const c=o[l];return t.jsxs("div",{className:"flex items-center gap-2 px-3 py-2",style:{borderBottom:"1px solid rgba(255,255,255,0.04)"},children:[t.jsxs("span",{style:{fontSize:"10px",fontWeight:700,color:"rgba(255,255,255,0.3)",minWidth:"16px"},children:["⌃",l]}),t.jsx("div",{className:"flex-1 min-w-0",children:c?t.jsxs(t.Fragment,{children:[t.jsx("div",{style:{fontSize:I.xs,color:"rgba(255,255,255,0.7)",fontWeight:500},children:c.name}),t.jsx("div",{style:{fontSize:"10px",color:"rgba(255,255,255,0.3)"},children:new Date(c.savedAt).toLocaleTimeString()})]}):t.jsx("span",{style:{fontSize:I.xs,color:"rgba(255,255,255,0.25)",fontStyle:"italic"},children:"empty"})}),t.jsxs("div",{className:"flex gap-1",children:[c&&t.jsx("button",{onClick:()=>{un(c.state),r(!1)},style:{fontSize:"10px",padding:"2px 6px",borderRadius:3,background:"rgba(45,212,168,0.15)",color:"#2DD4A8",border:"none",cursor:"pointer"},children:"Restore"}),t.jsx("button",{onClick:()=>a(l,cn(),i[l]),style:{fontSize:"10px",padding:"2px 6px",borderRadius:3,background:"rgba(255,255,255,0.1)",color:"rgba(255,255,255,0.6)",border:"none",cursor:"pointer"},title:`Save current view to Slot ${l} (⌃⇧${l})`,children:"Save"}),c&&t.jsx("button",{onClick:()=>s(l),style:{fontSize:"10px",padding:"2px 4px",borderRadius:3,background:"transparent",color:"rgba(255,255,255,0.3)",border:"none",cursor:"pointer"},title:"Clear slot",children:"✕"})]})]},l)})]})]})}const Ni=[{value:"",label:"— Select phase —"},{value:"concept",label:"Concept"},{value:"design",label:"Design & Development"},{value:"verification",label:"Verification & Validation"},{value:"production",label:"Production"}],ve={width:"100%",padding:"7px 10px",border:"1px solid #D1D5DB",borderRadius:"6px",fontSize:"13px",color:"#1B3A4B",background:"#fff",boxSizing:"border-box",outline:"none",fontFamily:"inherit"},ge={fontSize:"11px",fontWeight:600,color:"#6B7280",textTransform:"uppercase",letterSpacing:"0.04em",display:"block",marginBottom:"4px"},pn={fontSize:"12px",fontWeight:700,color:"#1B3A4B",paddingBottom:"6px",borderBottom:"1px solid #E5E7EB",marginBottom:"12px",marginTop:"4px"},Ti={display:"grid",gridTemplateColumns:"1fr 1fr",gap:"12px"};function ko({onClose:e}){const r=C(d=>d.dhfSettings),n=C(d=>d.updateDhfSettings),[o,a]=p.useState({...r}),[s,i]=p.useState("identity");function l(d,u){a(m=>({...m,[d]:u}))}function c(){n(o),e()}return t.jsx("div",{style:{position:"fixed",inset:0,zIndex:9999,display:"flex",alignItems:"center",justifyContent:"center",background:"rgba(0,0,0,0.45)"},onClick:d=>{d.target===d.currentTarget&&e()},children:t.jsxs("div",{style:{background:"#fff",borderRadius:"12px",width:"560px",maxHeight:"86vh",display:"flex",flexDirection:"column",boxShadow:"0 24px 60px rgba(0,0,0,0.22)",overflow:"hidden"},children:[t.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"10px",padding:"16px 20px",borderBottom:"1px solid #E5E7EB",flexShrink:0},children:[t.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"#6B7280",strokeWidth:"2",children:[t.jsx("circle",{cx:"12",cy:"12",r:"3"}),t.jsx("path",{d:"M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83-2.83l.06-.06A1.65 1.65 0 0 0 4.68 15a1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 2.83-2.83l.06.06A1.65 1.65 0 0 0 9 4.68a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 2.83l-.06.06A1.65 1.65 0 0 0 19.4 9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z"})]}),t.jsx("span",{style:{fontSize:"15px",fontWeight:700,color:"#1B3A4B",flex:1},children:"DHF Global Settings"}),t.jsx("button",{onClick:e,style:{background:"none",border:"none",cursor:"pointer",color:"#9CA3AF",fontSize:"20px",lineHeight:1,padding:"0 2px"},children:"×"})]}),t.jsx("div",{style:{display:"flex",borderBottom:"1px solid #E5E7EB",flexShrink:0,padding:"0 20px"},children:["identity","branding","layout"].map(d=>t.jsx("button",{onClick:()=>i(d),style:{padding:"10px 14px",border:"none",background:"none",fontSize:"12px",fontWeight:600,cursor:"pointer",color:s===d?"#1B3A4B":"#9CA3AF",borderBottom:`2px solid ${s===d?"#2DD4A8":"transparent"}`,marginBottom:"-1px",textTransform:"capitalize"},children:d==="identity"?"Project":d==="branding"?"Branding":"Layout"},d))}),t.jsxs("div",{style:{flex:1,overflowY:"auto",padding:"20px"},children:[s==="identity"&&t.jsxs("div",{children:[t.jsx("p",{style:pn,children:"Project Identity"}),t.jsxs("p",{style:{fontSize:"12px",color:"#6B7280",marginBottom:"16px",lineHeight:"1.5"},children:["These values resolve ",t.jsx("code",{style:{background:"#F3F4F6",padding:"1px 4px",borderRadius:"3px"},children:"{{project.*}}"})," directives in all templates and the AI drafting context."]}),t.jsxs("div",{style:Ti,children:[t.jsxs("div",{children:[t.jsx("label",{style:ge,children:"Company / Manufacturer"}),t.jsx("input",{style:ve,value:o.company,onChange:d=>l("company",d.target.value),placeholder:"Acme Medical Devices Inc."})]}),t.jsxs("div",{children:[t.jsx("label",{style:ge,children:"Product / Device Name"}),t.jsx("input",{style:ve,value:o.product,onChange:d=>l("product",d.target.value),placeholder:"InfuSafe IV Pump"})]}),t.jsxs("div",{children:[t.jsx("label",{style:ge,children:"Device Type"}),t.jsx("input",{style:ve,value:o.deviceType,onChange:d=>l("deviceType",d.target.value),placeholder:"Class II active implantable"})]}),t.jsxs("div",{children:[t.jsx("label",{style:ge,children:"Document Version"}),t.jsx("input",{style:ve,value:o.version,onChange:d=>l("version",d.target.value),placeholder:"1.0.0"})]}),t.jsxs("div",{style:{gridColumn:"1 / -1"},children:[t.jsx("label",{style:ge,children:"Development Phase"}),t.jsx("select",{style:ve,value:o.phase,onChange:d=>l("phase",d.target.value),children:Ni.map(d=>t.jsx("option",{value:d.value,children:d.label},d.value))})]}),t.jsxs("div",{style:{gridColumn:"1 / -1"},children:[t.jsx("label",{style:ge,children:"Document ID Prefix"}),t.jsx("input",{style:{...ve,fontFamily:"monospace"},value:o.documentNumberingPrefix,onChange:d=>l("documentNumberingPrefix",d.target.value),placeholder:"DOC"}),t.jsxs("p",{style:{fontSize:"11px",color:"#9CA3AF",marginTop:"4px"},children:["Used in document IDs, e.g. ",t.jsxs("code",{children:[o.documentNumberingPrefix||"DOC","-RMP-001"]})]})]})]})]}),s==="branding"&&t.jsxs("div",{children:[t.jsx("p",{style:pn,children:"Branding"}),t.jsx("p",{style:{fontSize:"12px",color:"#6B7280",marginBottom:"16px",lineHeight:"1.5"},children:"Branding applied to exported HTML and DOCX documents. Per-document overrides can be set in the document's frontmatter."}),t.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"14px"},children:[t.jsxs("div",{children:[t.jsx("label",{style:ge,children:"Full Logo URL"}),t.jsx("input",{style:ve,value:o.logoUrl,onChange:d=>l("logoUrl",d.target.value),placeholder:"https://... or data:image/png;base64,..."}),t.jsx("p",{style:{fontSize:"11px",color:"#9CA3AF",marginTop:"4px"},children:"Shown in document cover pages and report headers."}),o.logoUrl&&t.jsx("img",{src:o.logoUrl,alt:"Logo preview",style:{maxHeight:"48px",maxWidth:"200px",marginTop:"8px",border:"1px solid #E5E7EB",borderRadius:"4px",padding:"4px"}})]}),t.jsxs("div",{children:[t.jsx("label",{style:ge,children:"Compact Logo URL"}),t.jsx("input",{style:ve,value:o.compactLogoUrl,onChange:d=>l("compactLogoUrl",d.target.value),placeholder:"https://... or data:image/png;base64,..."}),t.jsx("p",{style:{fontSize:"11px",color:"#9CA3AF",marginTop:"4px"},children:"Shown in page headers (small). Falls back to Full Logo if empty."}),o.compactLogoUrl&&t.jsx("img",{src:o.compactLogoUrl,alt:"Compact logo preview",style:{maxHeight:"28px",maxWidth:"120px",marginTop:"8px",border:"1px solid #E5E7EB",borderRadius:"4px",padding:"4px"}})]}),t.jsxs("div",{children:[t.jsx("label",{style:ge,children:"Primary Color"}),t.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"10px"},children:[t.jsx("input",{type:"color",value:o.primaryColor,onChange:d=>l("primaryColor",d.target.value),style:{width:"40px",height:"32px",padding:"2px",border:"1px solid #D1D5DB",borderRadius:"6px",cursor:"pointer"}}),t.jsx("input",{style:{...ve,flex:1,fontFamily:"monospace"},value:o.primaryColor,onChange:d=>l("primaryColor",d.target.value),placeholder:"#1B3A4B"})]}),t.jsx("p",{style:{fontSize:"11px",color:"#9CA3AF",marginTop:"4px"},children:"Used for headings, table headers, and badges in exported documents."})]})]})]}),s==="layout"&&t.jsxs("div",{children:[t.jsx("p",{style:pn,children:"Document Layout"}),t.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"16px"},children:[t.jsxs("div",{children:[t.jsxs("label",{style:{...ge,display:"flex",alignItems:"center",gap:"8px",textTransform:"none",fontSize:"13px",fontWeight:600,color:"#1B3A4B",marginBottom:0},children:[t.jsx("input",{type:"checkbox",checked:o.compactMode,onChange:d=>l("compactMode",d.target.checked),style:{accentColor:"#2DD4A8"}}),"Compact mode"]}),t.jsx("p",{style:{fontSize:"12px",color:"#6B7280",marginTop:"4px",marginLeft:"20px"},children:"Tighter line spacing and smaller heading sizes. Useful for regulatory submissions."})]}),t.jsxs("div",{children:[t.jsx("label",{style:ge,children:"Page Header Template"}),t.jsx("input",{style:{...ve,fontFamily:"monospace",fontSize:"12px"},value:o.headerTemplate,onChange:d=>l("headerTemplate",d.target.value)}),t.jsxs("p",{style:{fontSize:"11px",color:"#9CA3AF",marginTop:"4px"},children:["Tokens: ",t.jsx("code",{children:"{{id}}"}),", ",t.jsx("code",{children:"{{title}}"}),", ",t.jsx("code",{children:"{{project.product}}"}),", ",t.jsx("code",{children:"{{project.version}}"}),", ",t.jsx("code",{children:"{{date}}"})]})]}),t.jsxs("div",{children:[t.jsx("label",{style:ge,children:"Page Footer Template"}),t.jsx("input",{style:{...ve,fontFamily:"monospace",fontSize:"12px"},value:o.footerTemplate,onChange:d=>l("footerTemplate",d.target.value)}),t.jsxs("p",{style:{fontSize:"11px",color:"#9CA3AF",marginTop:"4px"},children:["Tokens: same as header, plus ",t.jsx("code",{children:"{{page}}"})," and ",t.jsx("code",{children:"{{pages}}"})]})]})]})]})]}),t.jsxs("div",{style:{display:"flex",justifyContent:"flex-end",gap:"8px",padding:"14px 20px",borderTop:"1px solid #E5E7EB",flexShrink:0,background:"#FAFAFA"},children:[t.jsx("button",{onClick:e,style:{padding:"8px 16px",borderRadius:"6px",border:"1px solid #D1D5DB",background:"#fff",fontSize:"13px",cursor:"pointer",color:"#374151"},children:"Cancel"}),t.jsx("button",{onClick:c,style:{padding:"8px 20px",borderRadius:"6px",border:"none",background:"#2DD4A8",fontSize:"13px",fontWeight:600,cursor:"pointer",color:"#065F46"},children:"Save Settings"})]})]})})}const Au=Object.freeze(Object.defineProperty({__proto__:null,DhfSettingsPanel:ko},Symbol.toStringTag,{value:"Module"})),Ri="/help/",Ii=[{id:"dashboard",label:"Dashboard",icon:"⌂"},{id:"catalog",label:"Model Explorer",icon:"☰"},{id:"diagram",label:"Viewpoints",icon:"⊟"},{id:"ui-screens",label:"UI Screens",icon:"▣"},{id:"dhf",label:"Documents",icon:"⊞"},{id:"scenario",label:"Use Cases",icon:"▶"},{id:"ai",label:"AI Tools",icon:"✦",feature:"ai-tools"}],Mi=new Set(["dsm","traceability","statistics","compliance-wizard","model-diff","review-dashboard","workflow-wizard","ontology","ontology-detail","import"]),fr=[{id:"ontology",label:"Ontology Explorer",icon:"◉",view:{type:"ontology"}},{id:"import",label:"Import Model",icon:"↓",view:{type:"import"}},{id:"traceability",label:"Traceability Matrix",icon:"☷",view:{type:"traceability"}},{id:"statistics",label:"Statistics Dashboard",icon:"⊠",view:{type:"statistics"}},{id:"compliance-wizard",label:"Compliance Wizard",icon:"☑",view:{type:"compliance-wizard"}},{id:"model-diff",label:"Model Diff",icon:"↔",view:{type:"model-diff"}},{id:"review-dashboard",label:"Design Review Dashboard",icon:"📋",view:{type:"review-dashboard"}},{id:"workflow-wizard",label:"Workflow Wizard",icon:"🧙",view:{type:"workflow-wizard"}}];function _i({activeViewType:e}){const r=C(l=>l.setActiveView);C(l=>l.setActiveMode);const[n,o]=p.useState(!1),a=p.useRef(null),i=fr.map(l=>l.id).includes(e);return p.useEffect(()=>{function l(c){a.current&&!a.current.contains(c.target)&&o(!1)}return n&&document.addEventListener("mousedown",l),()=>document.removeEventListener("mousedown",l)},[n]),t.jsxs("div",{ref:a,style:{position:"relative"},children:[t.jsxs("button",{onClick:()=>o(l=>!l),className:"flex items-center gap-1 px-4 py-1.5 text-sm font-medium rounded-md transition-all",style:i||n?{background:"rgba(45, 212, 168, 0.15)",color:"#2DD4A8"}:{background:"transparent",color:"rgba(255,255,255,0.5)"},children:[t.jsx("span",{className:"mr-0.5",children:"⚙"}),"Tools",t.jsx("span",{style:{fontSize:"10px",marginLeft:"2px",opacity:.7},children:"▾"})]}),n&&t.jsx("div",{style:{position:"absolute",top:"calc(100% + 6px)",left:0,zIndex:100,background:"#132D3E",border:"1px solid rgba(45,212,168,0.2)",borderRadius:"8px",minWidth:"220px",boxShadow:"0 8px 24px rgba(0,0,0,0.4)",overflow:"hidden"},children:fr.filter(l=>(l.id!=="ontology"||pe("ontology"))&&(l.id!=="import"||pe("import"))).map((l,c)=>{const d=e===l.view.type;return t.jsxs("button",{onClick:()=>{r(d?{type:"welcome"}:l.view),o(!1)},className:"w-full flex items-center gap-3 px-4 py-2.5 text-left transition-colors",style:{fontSize:"13px",color:d?"#2DD4A8":"rgba(255,255,255,0.75)",background:d?"rgba(45,212,168,0.1)":"transparent",borderTop:c>0?"1px solid rgba(255,255,255,0.05)":"none"},onMouseEnter:u=>{d||(u.currentTarget.style.background="rgba(255,255,255,0.06)")},onMouseLeave:u=>{d||(u.currentTarget.style.background="transparent")},children:[t.jsx("span",{style:{width:"18px",textAlign:"center",opacity:.7},children:l.icon}),l.label]},l.id)})})]})}function Pi(){const e=C(y=>y.activeMode),r=C(y=>y.setActiveMode),n=C(y=>y.activeView),o=C(y=>y.setActiveView),a=C(y=>y.setExplorerTab),s=C(y=>y.sidebarCollapsed),i=C(y=>y.toggleSidebar),l=je(),[c,d]=p.useState(!1),[u,m]=p.useState(!1),[b,v]=p.useState(!1);p.useEffect(()=>{const y=()=>d(N=>!N);return window.addEventListener("memo:toggle-navigation",y),()=>window.removeEventListener("memo:toggle-navigation",y)},[]);const w=["catalog","diagram","dhf","scenario"],g=Mi.has(n.type)?"":e==="dhf"||n.type==="dhf-dashboard"?"dhf":n.type==="scenario-editor"||e==="scenario"&&n.type==="diagram"?"scenario":n.type==="analysis"?"analysis":n.type==="ui-screens"||e==="ui-screens"?"ui-screens":n.type==="ai"||n.type==="ask"||n.type==="sysml-generator"?"ai":n.type==="dashboard"?"dashboard":n.type==="diagram"||e==="diagram"?"diagram":e==="catalog"?"catalog":e;function h(y){if(y===g&&w.includes(y)){i();return}switch(w.includes(y)&&s&&i(),r(y),y){case"dashboard":o({type:"dashboard"});break;case"catalog":o({type:"welcome"}),l("/catalog");break;case"diagram":a("views"),o({type:"welcome"}),l("/diagrams");break;case"ui-screens":o({type:"ui-screens"}),l("/ui-screens");break;case"dhf":o({type:"dhf-dashboard"});break;case"scenario":o({type:"scenario-editor"});break;case"ai":o({type:"ai"});break}}return c?t.jsxs(t.Fragment,{children:[t.jsx("div",{onClick:()=>d(!1),style:{position:"fixed",inset:0,zIndex:80,background:"rgba(4, 18, 28, 0.35)"}}),t.jsxs("aside",{"aria-label":"Main navigation",style:{position:"fixed",left:0,top:0,bottom:0,width:296,zIndex:81,background:"#0B1E2D",borderRight:"1px solid rgba(45,212,168,0.28)",boxShadow:"12px 0 32px rgba(0,0,0,0.32)",padding:"18px 12px",overflowY:"auto"},children:[t.jsxs("div",{className:"flex items-center justify-between",style:{marginBottom:18},children:[t.jsx("button",{onClick:()=>{d(!1),h("dashboard")},style:{color:"#2DD4A8",fontWeight:700,fontSize:18,letterSpacing:"0.04em",border:"none",background:"none",cursor:"pointer"},children:"MEMO Architect"}),t.jsx("button",{"aria-label":"Close navigation",onClick:()=>d(!1),style:{width:36,height:36,color:"#2DD4A8",fontSize:24,border:"none",background:"transparent",cursor:"pointer"},children:"×"})]}),t.jsxs("div",{style:{borderTop:"1px solid rgba(255,255,255,0.09)",paddingTop:8},children:[Ii.filter(y=>!("feature"in y)||pe(y.feature)).map(y=>t.jsxs("button",{onClick:()=>{h(y.id),d(!1)},className:"flex w-full items-center gap-3 rounded-md px-3 py-3 text-left",style:{border:"none",cursor:"pointer",fontSize:15,background:g===y.id?"rgba(45,212,168,0.15)":"transparent",color:g===y.id?"#2DD4A8":"rgba(255,255,255,0.78)"},children:[t.jsx("span",{style:{width:20,textAlign:"center"},children:y.icon}),y.label]},y.id)),pe("analysis")&&t.jsxs(t.Fragment,{children:[t.jsxs("button",{onClick:()=>m(y=>!y),"aria-expanded":u,className:"flex w-full items-center gap-3 rounded-md px-3 py-3 text-left",style:{border:"none",cursor:"pointer",fontSize:15,background:u?"rgba(45,212,168,0.10)":"transparent",color:"rgba(255,255,255,0.78)"},children:[t.jsx("span",{style:{width:20,textAlign:"center"},children:"◫"}),"Analysis",t.jsx("span",{style:{marginLeft:"auto",fontSize:11},children:u?"▾":"▸"})]}),u&&t.jsxs("div",{style:{margin:"0 0 4px 36px",borderLeft:"1px solid rgba(45,212,168,0.25)"},children:[t.jsxs("button",{onClick:()=>{o({type:"analysis"}),d(!1)},className:"flex w-full items-center gap-2 px-3 py-2 text-left",style:{border:"none",cursor:"pointer",background:"transparent",color:"rgba(255,255,255,0.68)",fontSize:14},children:[t.jsx("span",{children:"◫"}),"Analysis workspace"]}),t.jsxs("button",{onClick:()=>{o({type:"dsm"}),d(!1)},className:"flex w-full items-center gap-2 px-3 py-2 text-left",style:{border:"none",cursor:"pointer",background:"transparent",color:"rgba(255,255,255,0.68)",fontSize:14},children:[t.jsx("span",{children:"▤"}),"Design Structure Matrix"]}),t.jsxs("button",{onClick:()=>{o({type:"traceability"}),d(!1)},className:"flex w-full items-center gap-2 px-3 py-2 text-left",style:{border:"none",cursor:"pointer",background:"transparent",color:"rgba(255,255,255,0.68)",fontSize:14},children:[t.jsx("span",{children:"☷"}),"Traceability Matrix"]}),t.jsxs("button",{onClick:()=>{o({type:"analysis"}),d(!1)},className:"flex w-full items-center gap-2 px-3 py-2 text-left",style:{border:"none",cursor:"pointer",background:"transparent",color:"rgba(255,255,255,0.68)",fontSize:14},children:[t.jsx("span",{children:"⌁"}),"Jupyter Notebooks"]})]})]})]}),t.jsx("div",{style:{height:1,background:"rgba(255,255,255,0.1)",margin:"14px 4px"}}),t.jsxs("div",{className:"flex items-center justify-between px-3 py-2",style:{color:"rgba(255,255,255,0.62)"},children:[t.jsx("span",{children:"Workspaces"}),t.jsx(Ai,{})]}),pe("model-tools")&&t.jsx("div",{className:"px-2 py-1",children:t.jsx(_i,{activeViewType:n.type})}),t.jsxs("button",{onClick:()=>v(!0),className:"flex w-full items-center gap-3 rounded-md px-3 py-3 text-left",style:{color:"rgba(255,255,255,0.72)",border:"none",background:"transparent",cursor:"pointer",fontSize:15},children:[t.jsx("span",{style:{width:20,textAlign:"center"},children:"⚙"}),"Project Settings"]}),t.jsxs("a",{href:Ri,target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 rounded-md px-3 py-3",style:{color:"rgba(255,255,255,0.72)",textDecoration:"none",fontSize:15},children:[t.jsx("span",{style:{width:20,textAlign:"center"},children:"?"}),"Help"]})]}),b&&t.jsx(ko,{onClose:()=>v(!1)})]}):null}const Wn="Global",Oi=["System","SystemOfSystems"];function Lt(e,r,n=Oi){if(n.includes(e))return!0;for(let o=r.get(e);o;o=r.get(o))if(n.includes(o))return!0;return!1}function zi(e,r,n,o){var l;const a=c=>{var d;return{systemId:c,label:((d=r.get(c))==null?void 0:d.name)||c}};if(Lt(e.kind,o))return a(e.id);const s=new Set([e.id]);for(let c=e.owner;c&&!s.has(c);c=(l=r.get(c))==null?void 0:l.owner){s.add(c);const d=r.get(c);if(d&&Lt(d.kind,o))return a(d.id)}const i=new Set;for(const c of n){const d=c.sourceId===e.id?c.targetId:c.targetId===e.id?c.sourceId:void 0;if(!d)continue;const u=r.get(d);u&&Lt(u.kind,o)&&i.add(u.id)}return i.size===1?a([...i][0]):{label:Wn}}function So(e,r){const n=new Map;for(const o of e){const a=r(o),s=a.systemId??Wn;let i=n.get(s);i||(i={label:a.label,systemId:a.systemId,items:[]},n.set(s,i)),i.items.push(o)}return[...n.values()].sort((o,a)=>(o.systemId?0:1)-(a.systemId?0:1)||o.label.localeCompare(a.label))}function Ui(e){return e.isDefinition??/Definition$|Def$/.test(e.kind)}function Co(e){const r=new Map;for(const n of e)Ui(n)&&r.set(n.name||n.id,n);return r}function Eo(e,r){const n=r.get(e.kind);if(!n||n.id===e.id||n.kind===e.kind)return;const o=new Set([e.id]);for(let a=n;a;a=r.get(a.kind)){if(o.has(a.id))return;o.add(a.id)}return n}const hr=(...e)=>r=>e.includes(r.construct),jo=[{id:"usecases",label:"Use cases",matches:hr("use case")},{id:"functions",label:"Functions",matches:hr("action")},{id:"logical",label:"Logical",matches:e=>e.layer==="logical"&&e.construct==="part"},{id:"physical",label:"Physical",matches:e=>e.layer==="realization"&&e.construct==="part"},{id:"software",label:"Software",matches:e=>e.layer==="implementation"&&e.construct==="part"},{id:"operational",label:"Operational",matches:e=>e.layer==="operational"&&e.construct==="part"}];function mn(e){var o,a;const r=new Map,n=[];for(const s of e){const i=(a=(o=s.element)==null?void 0:o.attributes)==null?void 0:a.elementPackage;if(!i){n.push(s);continue}let l=r.get(i);l||(l={id:`pkg:${i}`,name:i,kind:"ElementPackage",isGroup:!0,children:[]},r.set(i,l),n.push(l)),l.children.push(s)}return n}function Li(e,r=jo,n=""){const o=new Map(e.map(m=>[m.id,m])),a=Co(e),s=m=>{var b;return m.owner&&o.has(m.owner)?m.owner:(b=Eo(m,a))==null?void 0:b.id},i=new Map;for(const m of e){const b=s(m);b&&(i.get(b)??i.set(b,[]).get(b)).push(m)}const l=new Set,c=(m,b)=>{b.add(m.id);const v=(i.get(m.id)??[]).filter(w=>!b.has(w.id)&&!l.has(w.id)).map(w=>c(w,b));return{id:m.id,name:m.name||m.id,kind:m.kind,element:m,children:mn(v)}},d=n.trim().toLowerCase(),u=m=>!d||m.name.toLowerCase().includes(d)||m.kind.toLowerCase().includes(d)||m.children.some(u);return r.map(m=>{const b=y=>{const N=s(y);return N?!!m.systemOf&&!m.matches(o.get(N)):!0},v=e.filter(y=>m.matches(y)).filter(b).filter(y=>!l.has(y.id));for(const y of v)l.add(y.id);const w=new Set,g=v.map(y=>c(y,w)),h=m.systemOf?So(g,y=>m.systemOf(y.element)).map(y=>({id:`sys:${y.systemId??y.label}`,name:y.label,kind:y.systemId?"System":"Global",isGroup:!0,children:mn(y.items)})).filter(u):mn(g).filter(u);return{id:m.id,label:m.label,nodes:h}}).filter(m=>m.nodes.length>0)}function qi(e,r){const n=[],o=new Set;let a=r;for(;a&&!o.has(a.id);)o.add(a.id),n.unshift(a.id),a=a.owner?e==null?void 0:e.elements[a.owner]:void 0;return[r.package,...n].filter(Boolean).join("::")}function yr(e,r){const n=r.owner?e==null?void 0:e.elements[r.owner]:void 0;return n?qi(e,n):r.package||void 0}function gr(e,r){var o;const n=new Set;for(const a of Object.values((e==null?void 0:e.elements)??{})){if(a.owner!==r.owner)continue;const s=(o=a.attributes)==null?void 0:o.elementPackage;s&&n.add(s)}return[...n].sort()}async function $i(e,r=5e3){var a;const n=e.split("::").pop()??e,o=Date.now()+r;for(;Date.now()<o;){const s=C.getState().model;if((a=s==null?void 0:s.packages)!=null&&a.some(i=>i.qualifiedName===e)||s!=null&&s.elements[n])return!0;await new Promise(i=>setTimeout(i,120))}return!1}function Do(e){const r=new Map;for(const n of e)for(const o of n.layers)for(const a of o.kinds)a.derivesFrom&&r.set(a.name,a.derivesFrom);return r}function Nu(e,r){const n=new Map(e.map(c=>[c.kind,c.elementCount])),o=new Set(n.keys());for(;;){const c=[...o].filter(u=>!xr(u,r,o)),d=new Set;for(const u of c)for(let m=r.get(u);m&&!o.has(m);m=r.get(m))if(c.filter(b=>Bo(m,b,r)).length>=2){d.add(m);break}if(d.size===0)break;for(const u of d)o.add(u),n.set(u,0)}const a=new Map;for(const c of o)a.set(c,{kind:c,elementCount:n.get(c)??0,totalCount:0,children:[]});const s=[];for(const c of a.values()){const d=xr(c.kind,r,o);(d?a.get(d).children:s).push(c)}const i=c=>(c.totalCount=c.elementCount+c.children.reduce((d,u)=>d+i(u),0),c.totalCount),l=c=>{c.children.sort(br),c.children.forEach(l)};return s.forEach(i),s.forEach(l),s.sort(br),s}function xr(e,r,n){for(let o=r.get(e);o;o=r.get(o))if(n.has(o))return o}function br(e,r){return r.totalCount-e.totalCount||e.kind.localeCompare(r.kind)}function Bo(e,r,n){for(let o=n.get(r);o;o=n.get(o))if(o===e)return!0;return!1}function Tu(e,r,n){const o=[e];for(const a of n)a!==e&&Bo(e,a,r)&&o.push(a);return o}function Vi(e,r=0){return e.flatMap(n=>[{node:n,depth:r},...Vi(n.children,r+1)])}const ue={operational:"#0F766E",business:"#8E44AD",requirements:"#4A90D9",risk:"#E74C3C",functional:"#E67E22",behavior:"#FF6B6B",logical:"#7B68EE",physical:"#95A5A6",software:"#F39C12",interfaces:"#1ABC9C",verification:"#2ECC71",ui:"#3498DB"},Le={operational:"Operational Analysis",business:"Business Analysis",requirements:"Requirements",risk:"Risk Management",functional:"Functional Analysis",behavior:"Behavior",logical:"Logical Architecture",physical:"Physical Architecture",software:"Software Architecture",interfaces:"Interfaces & Ports",verification:"Verification",ui:"UI Wireframe"},Re=["operational","business","requirements","risk","functional","behavior","logical","physical","software","interfaces","verification","ui"],vr=["operational","functional","behavior","logical","implementation","realization","requirements","safety-risk","verification-validation","cybersecurity","human-factors"],Wi={mitigates:"#E74C3C",causes:"#C0392B",leadsTo:"#E74C3C",identifies:"#D35400",traceTo:"#4A90D9",satisfiedBy:"#2ECC71",verifiedBy:"#27AE60",allocatedTo:"#E67E22",aggregation:"#7B68EE",composedOf:"#8E44AD",decomposedBy:"#D35400",flow:"#3498DB",succession:"#95A5A6"},wr=["#2563EB","#0891B2","#7C3AED","#DB2777","#EA580C","#0D9488","#65A30D","#9333EA","#C2410C","#1D4ED8"];function Ru(e){const r=Wi[e];if(r)return r;let n=0;for(let o=0;o<e.length;o++)n=n*31+e.charCodeAt(o)>>>0;return wr[n%wr.length]}const Hn={general:{label:"GEN",fullName:"General View",color:"#7B68EE"},interconnection:{label:"INT",fullName:"Interconnection View",color:"#1ABC9C"},actionflow:{label:"ACT",fullName:"Action Flow View",color:"#F39C12"},statetransition:{label:"STM",fullName:"State Transition View",color:"#FF6B6B"},sequence:{label:"SEQ",fullName:"Sequence View",color:"#3498DB"},grid:{label:"GRID",fullName:"Grid View",color:"#2ECC71"},browser:{label:"BRW",fullName:"Browser View",color:"#95A5A6"},geometry:{label:"GEO",fullName:"Geometry View",color:"#8E44AD"}},$e={bdd:{code:"BDD",label:"BDD",fullName:"Block Definition Diagram",color:"#7B68EE",viewKind:"general"},ibd:{code:"IBD",label:"IBD",fullName:"Internal Block Diagram",color:"#1ABC9C",viewKind:"interconnection"},req:{code:"REQ",label:"REQ",fullName:"Requirements Diagram",color:"#4A90D9",viewKind:"general"},ucd:{code:"UCD",label:"UCD",fullName:"Use Case Diagram",color:"#E67E22",viewKind:"general"},context:{code:"CTX",label:"CTX",fullName:"System Context Diagram",color:"#5DADE2",viewKind:"general"},act:{code:"ACT",label:"ACT",fullName:"Activity Diagram",color:"#F39C12",viewKind:"actionflow"},afd:{code:"AFD",label:"AFD",fullName:"Action Flow Diagram",color:"#FF6B6B",viewKind:"actionflow"},ofd:{code:"OFD",label:"OFD",fullName:"Operational Flow Diagram",color:"#F39C12",viewKind:"actionflow"},ffd:{code:"FFD",label:"FFD",fullName:"Functional Flow Diagram",color:"#F39C12",viewKind:"actionflow"},pkg:{code:"PKG",label:"PKG",fullName:"Package Diagram",color:"#95A5A6",viewKind:"general"},par:{code:"PAR",label:"PAR",fullName:"Parametric Diagram",color:"#2ECC71",viewKind:"interconnection"},risk:{code:"RISK",label:"RISK",fullName:"Risk Diagram",color:"#E74C3C",viewKind:"general"},stm:{code:"STM",label:"STM",fullName:"State Transition Diagram",color:"#FF6B6B",viewKind:"statetransition"},seq:{code:"SEQ",label:"SEQ",fullName:"Sequence Diagram",color:"#3498DB",viewKind:"sequence"},fmea:{code:"FMEA",label:"FMEA",fullName:"FMEA Matrix",color:"#E74C3C",viewKind:"grid"},alloc:{code:"ALLOC",label:"ALLOC",fullName:"Allocation Matrix",color:"#E67E22",viewKind:"grid"},"threat-model":{code:"THREAT",label:"THREAT",fullName:"Threat Model Diagram",color:"#C0392B",viewKind:"general"}};function Hi(e){const r=e.diagramType.trim().toLowerCase();return r==="ofd"||r==="ffd"?r:"afd"}const Iu=["#FFFFFF","#f8fafc","#f0f9ff","#fdf2f8","#f0fdf4"];function Oe({label:e,onClick:r,icon:n}){return t.jsxs("button",{className:"w-full flex items-center gap-2 px-3 py-1.5 text-left text-xs",style:{color:"#374151",background:"transparent",border:"none",cursor:"pointer",whiteSpace:"nowrap"},onMouseEnter:o=>o.currentTarget.style.background="#F0F0ED",onMouseLeave:o=>o.currentTarget.style.background="transparent",onClick:o=>{o.stopPropagation(),r()},children:[n&&t.jsx("span",{style:{fontSize:"12px",width:"14px",flexShrink:0},children:n}),e]})}function Ki(){return t.jsx("div",{style:{height:"1px",background:"#E5E5E0",margin:"3px 0"}})}function Gi({x:e,y:r,target:n,onViewVisual:o,onViewTable:a,onToggleSelection:s,onViewProperties:i,onClose:l}){const c=p.useRef(null);p.useEffect(()=>{if(!c.current)return;const u=c.current,{innerWidth:m,innerHeight:b}=window,v=u.getBoundingClientRect();v.right>m&&(u.style.left=`${e-v.width}px`),v.bottom>b&&(u.style.top=`${r-v.height}px`)},[e,r]);const d={position:"fixed",top:r,left:e,background:"#FFFFFF",border:"1px solid #E5E5E0",borderRadius:"6px",boxShadow:"0 4px 12px rgba(0,0,0,0.12)",zIndex:9999,minWidth:"180px",padding:"4px 0"};return n.type==="package"?t.jsxs("div",{ref:c,style:d,onMouseDown:u=>u.stopPropagation(),children:[t.jsx(Oe,{icon:"⬜",label:"View Visual Layout",onClick:()=>{o(n.pkgName),l()}}),t.jsx(Oe,{icon:"☰",label:"View as Table",onClick:()=>{a(n.pkgName),l()}}),t.jsx(Ki,{}),t.jsx(Oe,{icon:n.isSelected?"☑":"☐",label:n.isSelected?"Deselect for Project":"Select for Project",onClick:()=>s(n.pkgName)})]}):n.type==="layer"?t.jsxs("div",{ref:c,style:d,onMouseDown:u=>u.stopPropagation(),children:[t.jsx(Oe,{icon:"⬜",label:"View Visual Layout",onClick:()=>{o(n.pkgName),l()}}),t.jsx(Oe,{icon:"☰",label:"View as Table",onClick:()=>a(n.pkgName,n.layerId)})]}):t.jsxs("div",{ref:c,style:d,onMouseDown:u=>u.stopPropagation(),children:[t.jsx(Oe,{icon:"🔍",label:"View Properties",onClick:()=>i(n.kindName,n.pkgName)}),t.jsx(Oe,{icon:"☰",label:"View as Table",onClick:()=>a(n.pkgName,n.layerId)}),t.jsx(Oe,{icon:"⬜",label:"Show in Visual Layout",onClick:()=>{o(n.pkgName),l()}})]})}function Yi({kindsToRemap:e,onConfirm:r,onCancel:n}){const o=C(u=>u.availableOntologies),a=C(u=>u.selectedOntologies),s=o.filter(u=>a.has(u.name)).flatMap(u=>u.layers.flatMap(m=>m.kinds.map(b=>b.name))).filter((u,m,b)=>b.indexOf(u)===m).sort(),[i,l]=p.useState(Object.fromEntries(e.map(u=>[u,""])));function c(u,m){l(b=>({...b,[u]:m}))}const d=e.every(u=>i[u]);return t.jsx("div",{className:"fixed inset-0 flex items-center justify-center z-50",style:{background:"rgba(0,0,0,0.4)"},children:t.jsxs("div",{className:"rounded-xl shadow-2xl max-w-lg w-full mx-4 overflow-hidden",style:{background:"#FFFFFF",border:"1px solid #E5E5E0"},children:[t.jsxs("div",{className:"px-6 py-4",style:{borderBottom:"1px solid #E5E5E0"},children:[t.jsx("h2",{className:"text-sm font-semibold",style:{color:"#1a1a1a"},children:"Remap Orphaned Kinds"}),t.jsx("p",{className:"text-xs mt-1",style:{color:"#6B7280"},children:"Map each orphaned kind to a kind in the selected ontologies. Model elements will be updated to use the new kind."})]}),t.jsx("div",{className:"px-6 py-4 space-y-3 max-h-64 overflow-y-auto",children:e.map(u=>t.jsxs("div",{className:"flex items-center gap-3",children:[t.jsx("div",{className:"flex-1 px-2 py-1 rounded text-xs font-medium",style:{background:"#FEF2F2",color:"#EF4444",border:"1px solid #FCA5A5"},children:u}),t.jsx("span",{style:{color:"#9CA3AF"},children:"→"}),t.jsxs("select",{value:i[u],onChange:m=>c(u,m.target.value),className:"flex-1 text-xs rounded-md px-2 py-1 focus:outline-none",style:{border:"1px solid #E5E5E0",color:"#1a1a1a",background:"#FFFFFF"},children:[t.jsx("option",{value:"",children:"Select target kind…"}),s.map(m=>t.jsx("option",{value:m,children:m},m))]})]},u))}),t.jsxs("div",{className:"px-6 py-4 flex gap-2 justify-end",style:{borderTop:"1px solid #E5E5E0"},children:[t.jsx("button",{onClick:n,className:"px-3 py-1.5 text-xs rounded-md",style:{background:"#F0F0ED",color:"#374151"},children:"Back"}),t.jsx("button",{onClick:()=>r(i),disabled:!d,className:"px-3 py-1.5 text-xs rounded-md font-medium",style:{background:d?"#1B3A4B":"#E5E5E0",color:d?"#FFFFFF":"#9CA3AF",cursor:d?"pointer":"not-allowed"},children:"Apply Remapping"})]})]})})}function Ji({orphans:e,onKeep:r,onRemap:n,onCancel:o}){const[a,s]=p.useState(!1),i=new Map;for(const l of e)i.has(l.kind)||i.set(l.kind,[]),i.get(l.kind).push(l);return a?t.jsx(Yi,{kindsToRemap:[...i.keys()],onConfirm:n,onCancel:()=>s(!1)}):t.jsx("div",{className:"fixed inset-0 flex items-center justify-center z-50",style:{background:"rgba(0,0,0,0.4)"},onClick:l=>{l.target===l.currentTarget&&o()},children:t.jsxs("div",{className:"rounded-xl shadow-2xl max-w-md w-full mx-4 overflow-hidden",style:{background:"#FFFFFF",border:"1px solid #E5E5E0"},children:[t.jsxs("div",{className:"px-6 py-4",style:{borderBottom:"1px solid #E5E5E0",background:"#FEF2F2"},children:[t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx("span",{className:"text-red-500 text-lg",children:"⚠"}),t.jsx("h2",{className:"text-sm font-semibold",style:{color:"#1a1a1a"},children:"Orphaned Elements"})]}),t.jsxs("p",{className:"text-xs mt-1",style:{color:"#6B7280"},children:[e.length," element",e.length!==1?"s":""," use kinds from the deselected ontology."]})]}),t.jsx("div",{className:"px-6 py-4 max-h-48 overflow-y-auto",children:[...i.entries()].map(([l,c])=>t.jsxs("div",{className:"mb-3",children:[t.jsxs("div",{className:"text-xs font-semibold mb-1",style:{color:"#374151"},children:[l,t.jsxs("span",{className:"ml-1 font-normal",style:{color:"#9CA3AF"},children:["(",c.length," element",c.length!==1?"s":"",")"]})]}),t.jsxs("div",{className:"flex flex-wrap gap-1",children:[c.slice(0,5).map(d=>t.jsx("span",{className:"px-1.5 py-0.5 text-xs rounded",style:{background:"#FEF2F2",color:"#EF4444",border:"1px solid #FCA5A5"},children:d.elementName},d.elementId)),c.length>5&&t.jsxs("span",{className:"text-xs",style:{color:"#9CA3AF"},children:["+",c.length-5," more"]})]})]},l))}),t.jsxs("div",{className:"px-6 py-4 flex gap-2 justify-end",style:{borderTop:"1px solid #E5E5E0"},children:[t.jsx("button",{onClick:o,className:"px-3 py-1.5 text-xs rounded-md",style:{background:"#F0F0ED",color:"#374151"},children:"Cancel"}),t.jsx("button",{onClick:r,className:"px-3 py-1.5 text-xs rounded-md",style:{background:"#FEF2F2",color:"#EF4444",border:"1px solid #FCA5A5"},children:"Keep (mark orphaned)"}),t.jsx("button",{onClick:()=>s(!0),className:"px-3 py-1.5 text-xs rounded-md font-medium",style:{background:"#1B3A4B",color:"#FFFFFF"},children:"Remap kinds →"})]})]})})}function Xi(){const e=C(w=>w.methodology),r=p.useMemo(()=>[...new Set(((e==null?void 0:e.folders)??[]).flatMap(w=>w.sourceFiles))].sort(),[e]),[n,o]=p.useState(""),[a,s]=p.useState(""),[i,l]=p.useState(""),[c,d]=p.useState(!1),[u,m]=p.useState(""),b=async w=>{if(!w)return;const g=await jn("load",w);o(w),s(g.text??""),l(g.revision??""),d(!1),m(g.success?"":g.error??"Could not load source.")},v=async()=>{if(!n||!i)return;const w=await jn("save",n,{text:a,baseRevision:i});w.success?(l(w.revision??i),d(!1),m("Saved. The reusable semantic runtime is restarting.")):m(w.error??"Save rejected; the draft remains in the editor.")};return r.length===0?null:t.jsxs("section",{style:{borderBottom:`1px solid ${f.border}`},children:[t.jsx("div",{className:"px-3 py-2 font-semibold",style:{fontSize:I.xs,color:f.primary},children:"Methodology & Rule Policies"}),t.jsxs("select",{value:n,onChange:w=>void b(w.target.value),className:"mx-3 mb-2",style:{width:"calc(100% - 24px)",fontSize:I.xs},children:[t.jsx("option",{value:"",children:"Select resolved SysML source…"}),r.map(w=>t.jsx("option",{value:w,children:w},w))]}),n&&t.jsxs(t.Fragment,{children:[t.jsx("textarea",{value:a,onChange:w=>{s(w.target.value),d(!0)},"aria-label":"Methodology SysML source",style:{width:"calc(100% - 24px)",height:220,margin:"0 12px",padding:8,fontFamily:"monospace",fontSize:11,color:"#E2E8F0",background:"#1E293B"}}),t.jsxs("div",{className:"flex gap-2 px-3 py-2",children:[t.jsx("button",{disabled:!c,onClick:()=>void v(),children:"Save SysML"}),t.jsx("button",{onClick:()=>void navigator.clipboard.writeText(a),children:"Copy draft"}),t.jsx("button",{onClick:()=>void b(n),children:"Reload"})]}),u&&t.jsx("div",{className:"px-3 pb-2",role:"status",style:{fontSize:11,color:"#B45309"},children:u})]})]})}function Qi(){var $;const e=C(E=>E.effectiveRules),r=C(E=>E.ruleDiagnostics),n=C(E=>E.methodology),o=p.useMemo(()=>[...new Set(((n==null?void 0:n.folders)??[]).flatMap(E=>E.sourceFiles))].sort(),[n]),[a,s]=p.useState(""),[i,l]=p.useState("disabled"),[c,d]=p.useState(""),[u,m]=p.useState(""),[b,v]=p.useState(""),[w,g]=p.useState(""),[h,y]=p.useState(""),[N,R]=p.useState(""),[A,T]=p.useState(""),[j,S]=p.useState(!1),k=e.find(E=>E.sourceRuleType===a),U=(k==null?void 0:k.tailoring)==="invariant",H=!a||!N||U&&i!=="enabled"||i!=="enabled"&&!b.trim()||i==="replaced"&&!u.trim(),O=async()=>{S(!0),T("");try{const E=await jn("load",N);if(!E.success||!E.revision){T(E.error??"Could not read the methodology source.");return}const q=await ci({targetRuleType:a,disposition:i,severityOverride:c||void 0,replacementRuleType:i==="replaced"?u.trim():void 0,rationaleText:b.trim(),authority:w.trim()||void 0,approvalReference:h.trim()||void 0,sourceFile:N,baseRevision:E.revision});T(q.success?"Policy written. The reusable semantic runtime is restarting.":q.error??"The policy was rejected; nothing was written."),q.success&&(v(""),y(""))}catch(E){T(E instanceof Error?E.message:String(E))}finally{S(!1)}};if(e.length===0)return null;const D={width:"calc(100% - 24px)",margin:"0 12px 6px",fontSize:I.xs};return t.jsxs("section",{style:{borderBottom:`1px solid ${f.border}`},children:[t.jsxs("div",{className:"px-3 py-2 font-semibold",style:{fontSize:I.xs,color:f.primary},children:["Rule Tailoring",t.jsxs("span",{style:{fontWeight:400,color:f.muted},children:[" — ",e.length," rules in the effective set"]})]}),t.jsxs("select",{"aria-label":"Rule",value:a,style:D,onChange:E=>s(E.target.value),children:[t.jsx("option",{value:"",children:"Select a rule…"}),e.map(E=>t.jsxs("option",{value:E.sourceRuleType,children:[E.sourceRuleId," — ",E.sourceRuleType,E.tailoring==="invariant"?" (invariant)":"",E.disposition!=="enabled"?` [${E.disposition}]`:""]},E.sourceRuleType))]}),k&&t.jsxs("div",{className:"px-3 pb-1",style:{fontSize:11,color:f.muted},children:["Currently ",k.disposition," at ",k.effectiveSeverity,k.effectiveSeverity!==k.declaredSeverity&&` (declared ${k.declaredSeverity})`,(($=k.policyChain)==null?void 0:$.length)>0&&` · ${k.policyChain.length} policy in chain`]}),U&&t.jsx("div",{className:"px-3 pb-2",role:"status",style:{fontSize:11,color:"#B45309"},children:"This rule is an invariant. It cannot be disabled or replaced by a methodology; changing it requires an ontology release."}),t.jsxs("select",{"aria-label":"Disposition",value:i,style:D,onChange:E=>l(E.target.value),children:[t.jsx("option",{value:"disabled",children:"Disable"}),t.jsx("option",{value:"replaced",children:"Replace"}),t.jsx("option",{value:"enabled",children:"Enable (severity override only)"})]}),t.jsxs("select",{"aria-label":"Severity override",value:c,style:D,onChange:E=>d(E.target.value),children:[t.jsx("option",{value:"",children:"No severity override"}),t.jsx("option",{value:"error",children:"error"}),t.jsx("option",{value:"warning",children:"warning"}),t.jsx("option",{value:"info",children:"info"})]}),i==="replaced"&&t.jsx("input",{"aria-label":"Replacement rule",value:u,style:D,placeholder:"Replacement constraint def name",onChange:E=>m(E.target.value)}),t.jsx("textarea",{"aria-label":"Rationale",value:b,placeholder:"Rationale — required to disable or replace a rule",style:{...D,height:54,fontFamily:"inherit"},onChange:E=>v(E.target.value)}),t.jsx("input",{"aria-label":"Authority",value:w,style:D,placeholder:"Authority (optional)",onChange:E=>g(E.target.value)}),t.jsx("input",{"aria-label":"Approval reference",value:h,style:D,placeholder:"Approval reference (optional)",onChange:E=>y(E.target.value)}),t.jsxs("select",{"aria-label":"Target methodology file",value:N,style:D,onChange:E=>R(E.target.value),children:[t.jsx("option",{value:"",children:"Write the policy into…"}),o.map(E=>t.jsx("option",{value:E,children:E},E))]}),t.jsx("div",{className:"flex gap-2 px-3 py-2",children:t.jsx("button",{disabled:H||j,onClick:()=>void O(),children:j?"Writing…":"Write policy"})}),A&&t.jsx("div",{className:"px-3 pb-2",role:"status",style:{fontSize:11,color:"#B45309"},children:A}),r.length>0&&t.jsx("div",{className:"px-3 pb-2",style:{fontSize:11,color:"#B91C1C"},children:r.map((E,q)=>t.jsxs("div",{children:["[",E.code,"] ",E.message]},q))})]})}const kr={ontology:"📦",profile:"🔧",extension:"🧩"};function Zi(e){const r=new Map(e.map(l=>[l.name,l])),n=new Map;function o(l){if(n.has(l))return n.get(l);const c=r.get(l);if(!c||!c.derivesFrom||!r.has(c.derivesFrom))return n.set(l,0),0;const d=o(c.derivesFrom)+1;return n.set(l,d),d}for(const l of e)o(l.name);const a=new Map;for(const l of e){const c=n.get(l.name)??0,d=a.get(c)??[];d.push(l),a.set(c,d)}const s=Math.max(...a.keys()),i=[];for(let l=0;l<=s;l++){const c=a.get(l)??[];i.push(...c.sort((d,u)=>d.name.localeCompare(u.name)))}return i}function el(e){const r=new Map(e.map(l=>[l.name,l])),n=new Map;function o(l){if(n.has(l))return n.get(l);const c=r.get(l);if(!c||!c.extends||!r.has(c.extends))return n.set(l,0),0;const d=o(c.extends)+1;return n.set(l,d),d}for(const l of e)o(l.name);const a=new Map;for(const l of e){const c=n.get(l.name)??0,d=a.get(c)??[];d.push(l),a.set(c,d)}const s=a.size>0?Math.max(...a.keys()):0,i=[];for(let l=0;l<=s;l++){const c=a.get(l)??[];i.push(...c.sort((d,u)=>d.name.localeCompare(u.name)))}return i}function tl({pkgName:e,onCancel:r,onConfirm:n}){const o=e.replace(/^@memo(?:architect)?\//,"");return t.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center",style:{background:"rgba(0,0,0,0.45)"},onMouseDown:a=>{a.target===a.currentTarget&&r()},children:t.jsxs("div",{className:"rounded-xl p-5 shadow-2xl",style:{background:"#FFFFFF",maxWidth:"340px",width:"90vw"},children:[t.jsx("div",{className:"font-semibold mb-1.5",style:{fontSize:I.sm,color:f.primary},children:"Remove ontology?"}),t.jsxs("div",{className:"mb-4",style:{fontSize:I.xs,color:f.secondary,lineHeight:1.5},children:["Removing ",t.jsx("strong",{children:o})," will affect all model elements that depend on its kinds. Those elements will become orphaned until you add a compatible ontology."]}),t.jsxs("div",{className:"flex gap-2 justify-end",children:[t.jsx("button",{onClick:r,className:"px-3 py-1.5 rounded-md font-medium",style:{fontSize:I.xs,background:f.surfaceAlt,color:f.secondary,border:`1px solid ${f.border}`,cursor:"pointer"},children:"Cancel"}),t.jsx("button",{onClick:n,className:"px-3 py-1.5 rounded-md font-medium",style:{fontSize:I.xs,background:"#DC2626",color:"#FFFFFF",border:"none",cursor:"pointer"},children:"Remove"})]})]})})}function nl(){const e=C(x=>x.availableOntologies),r=C(x=>x.selectedOntologies),n=C(x=>x.toggleOntologySelection),o=C(x=>x.saveOntologySelection),a=C(x=>x.selectedOntologyKind),s=C(x=>x.setSelectedOntologyKind),i=C(x=>x.setActiveView),l=C(x=>x.setOntologyViewMode),c=C(x=>x.activeView),[d,u]=p.useState(""),[m,b]=p.useState(()=>new Set(e.filter(x=>x.selected).map(x=>x.name))),[v,w]=p.useState(new Set),[g,h]=p.useState(()=>new Set(e.filter(x=>x.selected).map(x=>x.name))),y=p.useMemo(()=>{if(r.size!==g.size)return!0;for(const x of r)if(!g.has(x))return!0;return!1},[r,g]),[N,R]=p.useState(null),[A,T]=p.useState(null),[j,S]=p.useState(null),k=p.useRef(new Map),U=p.useMemo(()=>{const x=d.trim()?e.map(_=>({..._,layers:_.layers.map(W=>({...W,kinds:W.kinds.filter(F=>F.name.toLowerCase().includes(d.toLowerCase())||F.label.toLowerCase().includes(d.toLowerCase())||F.layer.toLowerCase().includes(d.toLowerCase()))})).filter(W=>W.kinds.length>0)})).filter(_=>_.layers.length>0||_.name.toLowerCase().includes(d.toLowerCase())):e;return el(x)},[e,d]);p.useEffect(()=>{d.trim()&&(b(new Set(U.map(x=>x.name))),w(new Set(U.flatMap(x=>x.layers.map(_=>`${x.name}:${_.id}`)))))},[d,U]),p.useEffect(()=>{if(a&&k.current.has(a)){for(const x of e)for(const _ of x.layers)if(_.kinds.find(W=>W.name===a)){b(W=>new Set([...W,x.name])),w(W=>new Set([...W,`${x.name}:${_.id}`]));break}setTimeout(()=>{var x;(x=k.current.get(a))==null||x.scrollIntoView({behavior:"smooth",block:"nearest"})},80)}},[a,e]);function H(x){i({type:"ontology-detail",packageName:x})}function O(x,_){i({type:"ontology-detail",packageName:x,layerId:_})}function D(x,_){s(a===x?null:x),i({type:"ontology-detail",packageName:_})}function $(x){b(_=>{const W=new Set(_);return W.has(x)?W.delete(x):W.add(x),W})}function E(x){w(_=>{const W=new Set(_);return W.has(x)?W.delete(x):W.add(x),W})}function q(x,_,W){x.stopPropagation(),W?T(_):n(_)}function X(){const x=o();x.orphanedElements&&x.orphanedElements.length>0?R(x.orphanedElements):(ln([...r]),h(new Set(r)))}function z(){ln([...r]),h(new Set(r)),R(null)}function G(x){ii(x),ln([...r]),h(new Set(r)),R(null)}function J(x,_){x.preventDefault(),x.stopPropagation(),S({x:x.clientX,y:x.clientY,target:_})}function ne(x,_){l("table"),i({type:"ontology-detail",packageName:x,layerId:_}),S(null)}function Q(x){l("visual"),i({type:"ontology-detail",packageName:x}),S(null)}function oe(x){r.has(x)?T(x):n(x),S(null)}function ae(x,_){s(x),i({type:"ontology-detail",packageName:_}),S(null)}if(p.useEffect(()=>{function x(_){_.key==="Escape"&&(s(null),S(null),T(null))}return document.addEventListener("keydown",x),()=>document.removeEventListener("keydown",x)},[s]),p.useEffect(()=>{if(!j)return;function x(){S(null)}return document.addEventListener("mousedown",x),()=>document.removeEventListener("mousedown",x)},[j]),e.length===0)return t.jsx("div",{className:"flex-1 flex items-center justify-center p-4",children:t.jsxs("div",{className:"text-center",style:{color:f.faint},children:[t.jsx("div",{className:"text-xl mb-2",children:"◉"}),t.jsx("div",{style:{fontSize:I.xs},children:"No ontology packages"}),t.jsx("div",{style:{fontSize:I.xs,opacity:.7,marginTop:"4px"},children:"Start memo-architect dev to load"})]})});const M=c.type==="ontology-detail"?c.packageName:null;return t.jsxs("div",{className:"flex flex-col flex-1 overflow-hidden",style:{fontSize:I.explorer.item},children:[t.jsx(Qi,{}),t.jsx(Xi,{}),t.jsx("div",{className:"px-3 py-2 sticky top-0 z-10",style:{background:f.surface,borderBottom:`1px solid ${f.border}`},children:t.jsx("input",{type:"text",placeholder:"Search kinds...",value:d,onChange:x=>u(x.target.value),className:"w-full px-2.5 py-1.5 rounded-lg focus:outline-none",style:{fontSize:I.explorer.search,border:`1px solid ${f.border}`,background:f.surfaceAlt,color:f.primary},onFocus:x=>x.currentTarget.style.borderColor="#2563EB",onBlur:x=>x.currentTarget.style.borderColor=f.border})}),t.jsx("div",{className:"flex-1 overflow-y-auto py-1",children:U.map(x=>{const _=r.has(x.name),W=M===x.name,F=m.has(x.name),L=x.name.replace(/^@memo(?:architect)?\//,""),V=kr[x.type]??kr.ontology;return t.jsxs("div",{children:[t.jsxs("div",{className:"flex items-center gap-1.5 px-2 py-1.5 cursor-pointer",style:{borderRadius:"6px",margin:"0 4px",background:W?`${f.accent}18`:"transparent",borderLeft:W?`3px solid ${f.accentDark}`:"3px solid transparent",opacity:_?1:.55},onMouseEnter:B=>{W||(B.currentTarget.style.background="#F0F0ED")},onMouseLeave:B=>{B.currentTarget.style.background=W?`${f.accent}18`:"transparent"},onClick:B=>{B.stopPropagation(),$(x.name)},onDoubleClick:()=>H(x.name),onContextMenu:B=>J(B,{type:"package",pkgName:x.name,isSelected:_}),children:[t.jsx("input",{type:"checkbox",checked:_,onChange:B=>q(B,x.name,_),onClick:B=>B.stopPropagation(),style:{cursor:"pointer",accentColor:"#2563EB",flexShrink:0},title:_?"Deselect for project":"Select for project"}),t.jsx("span",{style:{color:f.muted,fontSize:"10px"},children:F?"▾":"▸"}),t.jsx("span",{children:V}),t.jsx("span",{className:"font-semibold truncate flex-1",style:{color:f.primary,fontSize:I.explorer.group},children:L}),t.jsx("span",{style:{color:f.faint},children:x.kindCount})]}),F&&x.layers.map(B=>{const P=ue[B.id]??B.color??f.muted,K=`${x.name}:${B.id}`,Z=v.has(K),ee=Zi(B.kinds);return t.jsxs("div",{children:[t.jsxs("div",{className:"flex items-center gap-2 px-3 py-1 cursor-pointer",style:{borderRadius:"4px",margin:"0 4px 0 20px"},onMouseEnter:te=>te.currentTarget.style.background="#F0F0ED",onMouseLeave:te=>te.currentTarget.style.background="transparent",onClick:te=>{te.stopPropagation(),E(K)},onDoubleClick:()=>O(x.name,B.id),onContextMenu:te=>J(te,{type:"layer",pkgName:x.name,layerId:B.id,layerLabel:B.label}),children:[t.jsx("span",{style:{color:f.faint,fontSize:"9px"},children:Z?"▾":"▸"}),t.jsx("span",{className:"w-2 h-2 rounded flex-shrink-0",style:{backgroundColor:P}}),t.jsx("span",{className:"flex-1 truncate capitalize",style:{color:f.muted,fontSize:I.explorer.kind},children:B.label}),t.jsx("span",{style:{color:f.faint},children:B.kindCount})]}),Z&&(()=>{const te=new Map;for(const re of ee){const he=re.derivesFrom?te.get(re.derivesFrom)??0:0;te.set(re.name,re.derivesFrom?he+1:0)}const de=re=>{const he=a===re.name,et=te.get(re.name)??0,_e=et===0,se=36+et*12;return t.jsxs("div",{ref:ie=>{ie&&k.current.set(re.name,ie)},className:"flex items-center gap-1.5 px-3 py-0.5 cursor-pointer",style:{borderRadius:"4px",margin:`0 4px 0 ${se}px`,background:he?`${f.accent}18`:"transparent",borderLeft:he?`2px solid ${P}`:"2px solid transparent",transition:"background 150ms ease"},onMouseEnter:ie=>{he||(ie.currentTarget.style.background="#F0F0ED")},onMouseLeave:ie=>{ie.currentTarget.style.background=he?`${f.accent}18`:"transparent"},onClick:()=>D(re.name,x.name),onContextMenu:ie=>J(ie,{type:"kind",kindName:re.name,pkgName:x.name,layerId:B.id}),children:[!_e&&t.jsx("span",{style:{color:f.faint,fontSize:"9px",flexShrink:0},children:"↳"}),t.jsx("span",{className:"truncate",style:{color:he?f.accentDark:f.primary,fontWeight:_e?500:400,fontSize:I.explorer.item},children:re.name}),re.instanceCount>0&&t.jsxs("span",{style:{color:f.faint,fontSize:"10px"},children:["·",re.instanceCount]})]},re.name)},me=[],ye=new Map;for(const re of ee){const he=re.group??"";ye.has(he)||(ye.set(he,[]),me.push(he)),ye.get(he).push(re)}return me.filter(re=>re!=="").length<=1?ee.map(de):me.map(re=>t.jsxs("div",{children:[re&&t.jsxs("div",{className:"px-3 py-0.5 flex items-center gap-1.5",style:{margin:"0 4px 0 30px"},children:[t.jsx("span",{className:"capitalize truncate",style:{color:f.faint,fontSize:I.explorer.kind,letterSpacing:"0.02em"},children:re.replace(/_/g," ")}),t.jsx("span",{style:{color:f.faint,fontSize:"10px"},children:ye.get(re).length})]}),ye.get(re).map(de)]},`grp:${K}:${re||"_root"}`))})()]},K)})]},x.name)})}),y&&t.jsx("div",{className:"px-3 py-2 flex-shrink-0",style:{borderTop:`1px solid ${f.border}`,background:f.surfaceAlt},children:t.jsx("button",{onClick:X,className:"w-full py-1.5 rounded-md font-medium",style:{fontSize:I.xs,background:"#2563EB",color:"#FFFFFF",border:"none",cursor:"pointer"},children:"Save Selection"})}),A&&t.jsx(tl,{pkgName:A,onCancel:()=>T(null),onConfirm:()=>{n(A),T(null)}}),N&&t.jsx(Ji,{orphans:N,onKeep:z,onRemap:G,onCancel:()=>R(null)}),j&&t.jsx(Gi,{x:j.x,y:j.y,target:j.target,onViewVisual:Q,onViewTable:ne,onToggleSelection:oe,onViewProperties:ae,onClose:()=>S(null)})]})}function rl(){const e=C(l=>l.model),r=C(l=>l.recentlyVisited),n=C(l=>l.selectElement),o=p.useMemo(()=>e?r.map(l=>e.elements[l]).filter(Boolean):[],[r,e]),a=o,s="Recently visited",i=o.length>0?`${o.length} item${o.length===1?"":"s"} this session`:"Items you inspect appear here";return t.jsxs("div",{className:"flex flex-col flex-1 overflow-hidden",children:[t.jsxs("div",{className:"px-3 py-3",style:{borderBottom:`1px solid ${f.border}`},children:[t.jsx("div",{style:{fontSize:"10px",fontWeight:700,textTransform:"uppercase",letterSpacing:"0.08em",color:f.muted,marginBottom:"2px"},children:s}),t.jsx("div",{style:{fontSize:"11px",color:f.muted,opacity:.8},children:i})]}),t.jsx("div",{className:"flex-1 overflow-y-auto",style:{padding:"4px 0"},children:a.length===0?t.jsx("div",{style:{padding:"24px 16px",textAlign:"center",fontSize:"12px",color:f.muted,lineHeight:"1.6"},children:"Nothing visited yet. Use Model Explorer or Viewpoints to begin."}):a.map(l=>{const c=ue[l.layer]||f.muted;return t.jsx("button",{onClick:()=>n(l.id),style:{display:"flex",alignItems:"flex-start",gap:"8px",width:"100%",padding:"8px 12px",background:"transparent",border:"none",borderLeft:`3px solid ${c}`,cursor:"pointer",textAlign:"left",transition:"background 0.1s"},onMouseEnter:d=>d.currentTarget.style.background=f.surfaceAlt,onMouseLeave:d=>d.currentTarget.style.background="transparent",children:t.jsxs("div",{style:{flex:1,minWidth:0},children:[t.jsx("div",{style:{fontSize:I.explorer.item,fontWeight:500,color:f.primary,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:l.name}),t.jsxs("div",{style:{fontSize:"10px",color:f.muted,marginTop:"2px",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:[t.jsx("span",{style:{color:c,fontWeight:600},children:l.kind}),l.shortId&&t.jsx("span",{style:{marginLeft:"6px",fontFamily:"monospace",opacity:.7},children:l.shortId})]})]})},l.id)})})]})}function ol({element:e,selected:r=!1,fontSize:n=I.explorer.item,fontWeight:o,tint:a}){const s=e.__displayId??e.shortId??"ID-PENDING";return t.jsxs("span",{className:"truncate flex-1",style:{color:a??(r?f.accentDark:f.primary),fontSize:n,fontWeight:o??(r?500:400)},title:`${s} ${e.name}`,children:[t.jsxs("span",{style:{color:f.muted,fontWeight:500,marginRight:"4px",fontFamily:"ui-monospace, SFMono-Regular, Menlo, Consolas, monospace",display:"inline-block",minWidth:"17ch",flexShrink:0},children:["[",s,"]"]}),e.name,e.isDefinition&&t.jsx("span",{style:{color:f.muted,fontWeight:600,marginLeft:"5px",fontSize:"0.85em"},children:"def"})]})}function Kt({count:e,color:r,title:n}){return t.jsx("span",{className:"px-1.5 py-0.5 rounded-full",style:{background:r+"25",color:r,fontSize:I.explorer.count,fontWeight:600,minWidth:"20px",textAlign:"center"},title:n,children:e})}const al=`---
|
|
17
17
|
id: change-record
|
|
18
18
|
title: Design Change Record
|
|
19
19
|
standard: 21 CFR Part 820
|
|
@@ -58,7 +58,7 @@ _[TODO: Document risk management activity triggered by each significant change]_
|
|
|
58
58
|
---
|
|
59
59
|
|
|
60
60
|
{{include:shared/snippets/revision-history-table.md}}
|
|
61
|
-
`,
|
|
61
|
+
`,sl=`---
|
|
62
62
|
id: design-input
|
|
63
63
|
title: Design Input Plan
|
|
64
64
|
standard: 21 CFR Part 820
|
|
@@ -125,7 +125,7 @@ _[TODO: Document the design input review process and sign-off]_
|
|
|
125
125
|
{{include:shared/snippets/revision-history-table.md}}
|
|
126
126
|
|
|
127
127
|
{{include:shared/snippets/approval-block.md}}
|
|
128
|
-
`,
|
|
128
|
+
`,il=`---
|
|
129
129
|
id: design-output
|
|
130
130
|
title: Design Output Plan
|
|
131
131
|
standard: 21 CFR Part 820
|
|
@@ -205,7 +205,7 @@ List the documents constituting the essential design outputs for the DHF.
|
|
|
205
205
|
{{include:shared/snippets/revision-history-table.md}}
|
|
206
206
|
|
|
207
207
|
{{include:shared/snippets/approval-block.md}}
|
|
208
|
-
`,
|
|
208
|
+
`,ll=`---
|
|
209
209
|
id: design-review
|
|
210
210
|
title: Design Review Record
|
|
211
211
|
standard: 21 CFR Part 820
|
|
@@ -256,7 +256,7 @@ label: Total design elements at last review
|
|
|
256
256
|
---
|
|
257
257
|
|
|
258
258
|
{{include:shared/snippets/revision-history-table.md}}
|
|
259
|
-
`,
|
|
259
|
+
`,dl=`---
|
|
260
260
|
id: design-validation
|
|
261
261
|
title: Design Validation Records
|
|
262
262
|
standard: 21 CFR Part 820
|
|
@@ -320,7 +320,7 @@ _[TODO: State validation conclusion — device meets intended use for intended u
|
|
|
320
320
|
{{include:shared/snippets/revision-history-table.md}}
|
|
321
321
|
|
|
322
322
|
{{include:shared/snippets/approval-block.md}}
|
|
323
|
-
`,
|
|
323
|
+
`,cl=`---
|
|
324
324
|
id: design-verification
|
|
325
325
|
title: Design Verification Records
|
|
326
326
|
standard: 21 CFR Part 820
|
|
@@ -377,7 +377,7 @@ _[TODO: Demonstrate that all design inputs are verified by at least one test]_
|
|
|
377
377
|
{{include:shared/snippets/revision-history-table.md}}
|
|
378
378
|
|
|
379
379
|
{{include:shared/snippets/approval-block.md}}
|
|
380
|
-
`,
|
|
380
|
+
`,ul=`---
|
|
381
381
|
id: dhf-index
|
|
382
382
|
title: Design History File Index
|
|
383
383
|
standard: 21 CFR Part 820
|
|
@@ -488,7 +488,7 @@ label: Total test cases
|
|
|
488
488
|
{{include:shared/snippets/approval-block.md}}
|
|
489
489
|
|
|
490
490
|
{{include:shared/snippets/references-section.md}}
|
|
491
|
-
`,
|
|
491
|
+
`,pl=`---
|
|
492
492
|
id: transfer-plan
|
|
493
493
|
title: Design Transfer Plan
|
|
494
494
|
standard: 21 CFR Part 820
|
|
@@ -538,7 +538,7 @@ empty: "No design outputs defined."
|
|
|
538
538
|
{{include:shared/snippets/revision-history-table.md}}
|
|
539
539
|
|
|
540
540
|
{{include:shared/snippets/approval-block.md}}
|
|
541
|
-
`,
|
|
541
|
+
`,ml=`---
|
|
542
542
|
id: user-needs
|
|
543
543
|
title: User Needs Document
|
|
544
544
|
standard: 21 CFR Part 820
|
|
@@ -619,7 +619,7 @@ Regulatory and standards requirements applicable to **{{project.product}}**:
|
|
|
619
619
|
{{include:shared/snippets/approval-block.md}}
|
|
620
620
|
|
|
621
621
|
{{include:shared/snippets/references-section.md}}
|
|
622
|
-
`,
|
|
622
|
+
`,fl=`---
|
|
623
623
|
id: vv-plan
|
|
624
624
|
title: Verification and Validation Plan
|
|
625
625
|
standard: 21 CFR Part 820
|
|
@@ -708,7 +708,7 @@ _[TODO: Describe hardware, software, and clinical test environments]_
|
|
|
708
708
|
{{include:shared/snippets/approval-block.md}}
|
|
709
709
|
|
|
710
710
|
{{include:shared/snippets/references-section.md}}
|
|
711
|
-
`,
|
|
711
|
+
`,hl=`---
|
|
712
712
|
id: vv-report
|
|
713
713
|
title: Verification and Validation Report
|
|
714
714
|
standard: 21 CFR Part 820
|
|
@@ -793,7 +793,7 @@ _[TODO: State whether the device meets all design inputs and is fit for intended
|
|
|
793
793
|
{{include:shared/snippets/revision-history-table.md}}
|
|
794
794
|
|
|
795
795
|
{{include:shared/snippets/approval-block.md}}
|
|
796
|
-
`,
|
|
796
|
+
`,yl=`---
|
|
797
797
|
id: incident-response
|
|
798
798
|
title: Cybersecurity Incident Response Plan
|
|
799
799
|
standard: FDA Cybersecurity Guidance 2023
|
|
@@ -859,7 +859,7 @@ _[TODO: Describe the coordinated disclosure policy for external researchers]_
|
|
|
859
859
|
---
|
|
860
860
|
|
|
861
861
|
{{include:shared/snippets/revision-history-table.md}}
|
|
862
|
-
`,
|
|
862
|
+
`,gl=`---
|
|
863
863
|
id: postmarket-surveillance
|
|
864
864
|
title: Post-Market Cybersecurity Surveillance Plan
|
|
865
865
|
standard: FDA Cybersecurity Guidance 2023
|
|
@@ -923,7 +923,7 @@ _[TODO: Describe how security patches are tested, validated, and released]_
|
|
|
923
923
|
---
|
|
924
924
|
|
|
925
925
|
{{include:shared/snippets/revision-history-table.md}}
|
|
926
|
-
`,
|
|
926
|
+
`,xl=`---
|
|
927
927
|
id: security-arch
|
|
928
928
|
title: Cybersecurity Architecture Description
|
|
929
929
|
standard: FDA Cybersecurity Guidance 2023
|
|
@@ -1006,7 +1006,7 @@ _[TODO: Describe penetration testing, vulnerability scanning, and security code
|
|
|
1006
1006
|
{{include:shared/snippets/revision-history-table.md}}
|
|
1007
1007
|
|
|
1008
1008
|
{{include:shared/snippets/approval-block.md}}
|
|
1009
|
-
`,
|
|
1009
|
+
`,bl=`---
|
|
1010
1010
|
id: threat-model
|
|
1011
1011
|
title: Cybersecurity Threat Model
|
|
1012
1012
|
standard: FDA Cybersecurity Guidance 2023
|
|
@@ -1106,7 +1106,7 @@ _[TODO: List any threats without security controls and provide residual risk jus
|
|
|
1106
1106
|
{{include:shared/snippets/approval-block.md}}
|
|
1107
1107
|
|
|
1108
1108
|
{{include:shared/snippets/references-section.md}}
|
|
1109
|
-
`,
|
|
1109
|
+
`,vl=`---
|
|
1110
1110
|
id: vuln-assessment
|
|
1111
1111
|
title: Vulnerability Assessment and Penetration Testing Report
|
|
1112
1112
|
standard: FDA Cybersecurity Guidance 2023
|
|
@@ -1184,7 +1184,7 @@ _[TODO: Document any accepted residual vulnerabilities with justification]_
|
|
|
1184
1184
|
{{include:shared/snippets/revision-history-table.md}}
|
|
1185
1185
|
|
|
1186
1186
|
{{include:shared/snippets/approval-block.md}}
|
|
1187
|
-
`,
|
|
1187
|
+
`,wl=`---
|
|
1188
1188
|
id: hrs
|
|
1189
1189
|
title: Hardware Requirements Specification
|
|
1190
1190
|
standard: IEC 60601-1:2005+AMD1:2012+AMD2:2020
|
|
@@ -1354,7 +1354,7 @@ empty: "No allocations defined."
|
|
|
1354
1354
|
{{include:shared/snippets/approval-block.md}}
|
|
1355
1355
|
|
|
1356
1356
|
{{include:shared/snippets/references-section.md}}
|
|
1357
|
-
`,
|
|
1357
|
+
`,kl=`---
|
|
1358
1358
|
id: change-control
|
|
1359
1359
|
title: Software Change Control Log
|
|
1360
1360
|
standard: IEC 62304:2006+AMD1:2015
|
|
@@ -1394,7 +1394,7 @@ All changes must:
|
|
|
1394
1394
|
---
|
|
1395
1395
|
|
|
1396
1396
|
{{include:shared/snippets/revision-history-table.md}}
|
|
1397
|
-
`,
|
|
1397
|
+
`,Sl=`---
|
|
1398
1398
|
id: detailed-design
|
|
1399
1399
|
title: Software Detailed Design
|
|
1400
1400
|
standard: IEC 62304:2006+AMD1:2015
|
|
@@ -1463,7 +1463,7 @@ _[TODO: List criteria that verify this design meets software requirements]_
|
|
|
1463
1463
|
{{include:shared/snippets/revision-history-table.md}}
|
|
1464
1464
|
|
|
1465
1465
|
{{include:shared/snippets/approval-block.md}}
|
|
1466
|
-
`,
|
|
1466
|
+
`,Cl=`---
|
|
1467
1467
|
id: integration-test
|
|
1468
1468
|
title: Software Integration Test Plan
|
|
1469
1469
|
standard: IEC 62304:2006+AMD1:2015
|
|
@@ -1531,7 +1531,7 @@ _[TODO: Define objective pass/fail criteria for integration tests]_
|
|
|
1531
1531
|
{{include:shared/snippets/revision-history-table.md}}
|
|
1532
1532
|
|
|
1533
1533
|
{{include:shared/snippets/approval-block.md}}
|
|
1534
|
-
`,
|
|
1534
|
+
`,El=`---
|
|
1535
1535
|
id: sad
|
|
1536
1536
|
title: Software Architecture Description
|
|
1537
1537
|
standard: IEC 62304:2006+AMD1:2015
|
|
@@ -1647,7 +1647,7 @@ _[TODO: Describe how safety-critical software items are segregated from non-safe
|
|
|
1647
1647
|
{{include:shared/snippets/approval-block.md}}
|
|
1648
1648
|
|
|
1649
1649
|
{{include:shared/snippets/references-section.md}}
|
|
1650
|
-
`,
|
|
1650
|
+
`,jl=`---
|
|
1651
1651
|
id: sbom
|
|
1652
1652
|
title: Software Bill of Materials (SBOM)
|
|
1653
1653
|
standard: IEC 62304:2006+AMD1:2015
|
|
@@ -1715,7 +1715,7 @@ _[TODO: Reference FDA cybersecurity submission or security assessment]_
|
|
|
1715
1715
|
{{include:shared/snippets/revision-history-table.md}}
|
|
1716
1716
|
|
|
1717
1717
|
{{include:shared/snippets/approval-block.md}}
|
|
1718
|
-
`,
|
|
1718
|
+
`,Dl=`---
|
|
1719
1719
|
id: sdp
|
|
1720
1720
|
title: Software Development Plan
|
|
1721
1721
|
standard: IEC 62304:2006+AMD1:2015
|
|
@@ -1824,7 +1824,7 @@ _[TODO: List development tools, compilers, IDEs, and their versions]_
|
|
|
1824
1824
|
{{include:shared/snippets/approval-block.md}}
|
|
1825
1825
|
|
|
1826
1826
|
{{include:shared/snippets/references-section.md}}
|
|
1827
|
-
`,
|
|
1827
|
+
`,Bl=`---
|
|
1828
1828
|
id: soup
|
|
1829
1829
|
title: SOUP List (Software of Unknown Provenance)
|
|
1830
1830
|
standard: IEC 62304:2006+AMD1:2015
|
|
@@ -1903,7 +1903,7 @@ _[TODO: Reference Software Bill of Materials (SBOM) for FDA cybersecurity requir
|
|
|
1903
1903
|
{{include:shared/snippets/approval-block.md}}
|
|
1904
1904
|
|
|
1905
1905
|
{{include:shared/snippets/references-section.md}}
|
|
1906
|
-
`,
|
|
1906
|
+
`,Fl=`---
|
|
1907
1907
|
id: srs
|
|
1908
1908
|
title: Software Requirements Specification
|
|
1909
1909
|
standard: IEC 62304:2006+AMD1:2015
|
|
@@ -2075,7 +2075,7 @@ empty: "No software requirements are linked to a verification case. Add Verified
|
|
|
2075
2075
|
{{include:shared/snippets/approval-block.md}}
|
|
2076
2076
|
|
|
2077
2077
|
{{include:shared/snippets/references-section.md}}
|
|
2078
|
-
`,
|
|
2078
|
+
`,Al=`---
|
|
2079
2079
|
id: sw-traceability
|
|
2080
2080
|
title: Software Traceability Matrix
|
|
2081
2081
|
standard: IEC 62304:2006+AMD1:2015
|
|
@@ -2186,7 +2186,7 @@ _[TODO: List any software requirements without corresponding test cases]_
|
|
|
2186
2186
|
{{include:shared/snippets/revision-history-table.md}}
|
|
2187
2187
|
|
|
2188
2188
|
{{include:shared/snippets/approval-block.md}}
|
|
2189
|
-
`,
|
|
2189
|
+
`,Nl=`---
|
|
2190
2190
|
id: system-test
|
|
2191
2191
|
title: Software System Test Plan
|
|
2192
2192
|
standard: IEC 62304:2006+AMD1:2015
|
|
@@ -2253,7 +2253,7 @@ _[TODO: Describe how test failures and anomalies are documented and tracked]_
|
|
|
2253
2253
|
{{include:shared/snippets/revision-history-table.md}}
|
|
2254
2254
|
|
|
2255
2255
|
{{include:shared/snippets/approval-block.md}}
|
|
2256
|
-
`,
|
|
2256
|
+
`,Tl=`---
|
|
2257
2257
|
id: formative-eval
|
|
2258
2258
|
title: Formative Usability Evaluation Report
|
|
2259
2259
|
standard: IEC 62366-1:2015+AMD1:2020
|
|
@@ -2300,7 +2300,7 @@ _[TODO: Summarize user interface design changes made as a result of formative ev
|
|
|
2300
2300
|
{{include:shared/snippets/revision-history-table.md}}
|
|
2301
2301
|
|
|
2302
2302
|
{{include:shared/snippets/approval-block.md}}
|
|
2303
|
-
`,
|
|
2303
|
+
`,Rl=`---
|
|
2304
2304
|
id: summative-eval
|
|
2305
2305
|
title: Summative Usability Evaluation Report
|
|
2306
2306
|
standard: IEC 62366-1:2015+AMD1:2020
|
|
@@ -2369,7 +2369,7 @@ _[TODO: State whether the device passed summative usability evaluation]_
|
|
|
2369
2369
|
{{include:shared/snippets/revision-history-table.md}}
|
|
2370
2370
|
|
|
2371
2371
|
{{include:shared/snippets/approval-block.md}}
|
|
2372
|
-
`,
|
|
2372
|
+
`,Il=`---
|
|
2373
2373
|
id: task-analysis
|
|
2374
2374
|
title: Task Analysis
|
|
2375
2375
|
standard: IEC 62366-1:2015+AMD1:2020
|
|
@@ -2462,7 +2462,7 @@ _[TODO: Document sequential and parallel task flows with decision points]_
|
|
|
2462
2462
|
---
|
|
2463
2463
|
|
|
2464
2464
|
{{include:shared/snippets/revision-history-table.md}}
|
|
2465
|
-
`,
|
|
2465
|
+
`,Ml=`---
|
|
2466
2466
|
id: ue-plan
|
|
2467
2467
|
title: Usability Engineering Plan
|
|
2468
2468
|
standard: IEC 62366-1:2015+AMD1:2020
|
|
@@ -2543,7 +2543,7 @@ empty: "No UserInterface elements defined."
|
|
|
2543
2543
|
{{include:shared/snippets/approval-block.md}}
|
|
2544
2544
|
|
|
2545
2545
|
{{include:shared/snippets/references-section.md}}
|
|
2546
|
-
`,
|
|
2546
|
+
`,_l=`---
|
|
2547
2547
|
id: ui-spec
|
|
2548
2548
|
title: User Interface Specification
|
|
2549
2549
|
standard: IEC 62366-1:2015+AMD1:2020
|
|
@@ -2604,7 +2604,7 @@ _[TODO: Document all labels, symbols, and icons used on the physical device]_
|
|
|
2604
2604
|
{{include:shared/snippets/revision-history-table.md}}
|
|
2605
2605
|
|
|
2606
2606
|
{{include:shared/snippets/approval-block.md}}
|
|
2607
|
-
`,
|
|
2607
|
+
`,Pl=`---
|
|
2608
2608
|
id: urra
|
|
2609
2609
|
title: Use-Related Risk Analysis
|
|
2610
2610
|
standard: IEC 62366-1:2015+AMD1:2020
|
|
@@ -2678,7 +2678,7 @@ empty: "No usability-related risk controls defined."
|
|
|
2678
2678
|
{{include:shared/snippets/revision-history-table.md}}
|
|
2679
2679
|
|
|
2680
2680
|
{{include:shared/snippets/approval-block.md}}
|
|
2681
|
-
`,
|
|
2681
|
+
`,Ol=`---
|
|
2682
2682
|
id: use-spec
|
|
2683
2683
|
title: Intended Use and Indications for Use Specification
|
|
2684
2684
|
standard: IEC 62366-1:2015+AMD1:2020
|
|
@@ -2739,7 +2739,7 @@ _[TODO: Describe contraindications, limitations, and warnings that constrain use
|
|
|
2739
2739
|
{{include:shared/snippets/revision-history-table.md}}
|
|
2740
2740
|
|
|
2741
2741
|
{{include:shared/snippets/approval-block.md}}
|
|
2742
|
-
`,
|
|
2742
|
+
`,zl=`---
|
|
2743
2743
|
id: fmea
|
|
2744
2744
|
title: Failure Mode and Effects Analysis
|
|
2745
2745
|
standard: IEC 60812:2018
|
|
@@ -2855,7 +2855,7 @@ _[TODO: List any failure modes without risk controls and justify residual risk p
|
|
|
2855
2855
|
{{include:shared/snippets/revision-history-table.md}}
|
|
2856
2856
|
|
|
2857
2857
|
{{include:shared/snippets/approval-block.md}}
|
|
2858
|
-
`,
|
|
2858
|
+
`,Ul=`---
|
|
2859
2859
|
id: fta
|
|
2860
2860
|
title: Fault Tree Analysis
|
|
2861
2861
|
standard: ISO 14971:2019
|
|
@@ -2925,7 +2925,7 @@ _[TODO: List minimal cut sets and associated risk reduction recommendations]_
|
|
|
2925
2925
|
{{include:shared/snippets/revision-history-table.md}}
|
|
2926
2926
|
|
|
2927
2927
|
{{include:shared/snippets/approval-block.md}}
|
|
2928
|
-
`,
|
|
2928
|
+
`,Ll=`---
|
|
2929
2929
|
id: har
|
|
2930
2930
|
title: Hazard Analysis Report
|
|
2931
2931
|
standard: ISO 14971:2019
|
|
@@ -3090,7 +3090,7 @@ _[TODO: Document benefit-risk justification if any residual risks remain]_
|
|
|
3090
3090
|
{{include:shared/snippets/approval-block.md}}
|
|
3091
3091
|
|
|
3092
3092
|
{{include:shared/snippets/references-section.md}}
|
|
3093
|
-
`,
|
|
3093
|
+
`,ql=`---
|
|
3094
3094
|
id: risk-benefit
|
|
3095
3095
|
title: Risk-Benefit Analysis
|
|
3096
3096
|
standard: ISO 14971:2019
|
|
@@ -3141,7 +3141,7 @@ _[TODO: State the conclusion: the medical benefits of the intended use outweigh
|
|
|
3141
3141
|
{{include:shared/snippets/revision-history-table.md}}
|
|
3142
3142
|
|
|
3143
3143
|
{{include:shared/snippets/approval-block.md}}
|
|
3144
|
-
|
|
3144
|
+
`,$l=`---
|
|
3145
3145
|
id: risk-matrix
|
|
3146
3146
|
title: Risk Matrix
|
|
3147
3147
|
standard: ISO 14971:2019
|
|
@@ -3192,7 +3192,7 @@ empty: "No risk controls defined."
|
|
|
3192
3192
|
---
|
|
3193
3193
|
|
|
3194
3194
|
{{include:shared/snippets/revision-history-table.md}}
|
|
3195
|
-
`,
|
|
3195
|
+
`,Vl=`---
|
|
3196
3196
|
id: rmp
|
|
3197
3197
|
title: Risk Management Plan
|
|
3198
3198
|
standard: ISO 14971:2019
|
|
@@ -3361,7 +3361,7 @@ This plan shall be reviewed:
|
|
|
3361
3361
|
{{include:shared/snippets/approval-block.md}}
|
|
3362
3362
|
|
|
3363
3363
|
{{include:shared/snippets/references-section.md}}
|
|
3364
|
-
|
|
3364
|
+
`,Wl=`---
|
|
3365
3365
|
id: rmr
|
|
3366
3366
|
title: Risk Management Report
|
|
3367
3367
|
standard: ISO 14971:2019
|
|
@@ -3462,7 +3462,7 @@ Post-production information collection activities are documented in the Post-Mar
|
|
|
3462
3462
|
{{include:shared/snippets/approval-block.md}}
|
|
3463
3463
|
|
|
3464
3464
|
{{include:shared/snippets/references-section.md}}
|
|
3465
|
-
`,
|
|
3465
|
+
`,Hl=`---
|
|
3466
3466
|
id: approval-block
|
|
3467
3467
|
title: Approval Block
|
|
3468
3468
|
---
|
|
@@ -3478,7 +3478,7 @@ This document has been reviewed and approved by the following personnel:
|
|
|
3478
3478
|
| | Engineering Lead | | |
|
|
3479
3479
|
| | Clinical Affairs | | |
|
|
3480
3480
|
|
|
3481
|
-
`,
|
|
3481
|
+
`,Kl=`---
|
|
3482
3482
|
id: document-control-header
|
|
3483
3483
|
title: Document Control Header
|
|
3484
3484
|
---
|
|
@@ -3493,7 +3493,7 @@ title: Document Control Header
|
|
|
3493
3493
|
| **Date** | — |
|
|
3494
3494
|
| **Confidentiality** | Confidential — {{project.company}} |
|
|
3495
3495
|
|
|
3496
|
-
`,
|
|
3496
|
+
`,Gl=`---
|
|
3497
3497
|
id: references-section
|
|
3498
3498
|
title: References
|
|
3499
3499
|
---
|
|
@@ -3509,7 +3509,7 @@ title: References
|
|
|
3509
3509
|
| 21 CFR Part 820 | Quality System Regulation |
|
|
3510
3510
|
| IEC 81001-5-1:2021 | Health software and health IT systems safety, effectiveness and security |
|
|
3511
3511
|
|
|
3512
|
-
`,
|
|
3512
|
+
`,Yl=`---
|
|
3513
3513
|
id: revision-history-table
|
|
3514
3514
|
title: Revision History Table
|
|
3515
3515
|
---
|
|
@@ -3520,7 +3520,7 @@ title: Revision History Table
|
|
|
3520
3520
|
| --- | --- | --- | --- |
|
|
3521
3521
|
| 1.0 | {{project.version}} | {{project.authors}} | Initial release |
|
|
3522
3522
|
|
|
3523
|
-
`,
|
|
3523
|
+
`,Jl=`---
|
|
3524
3524
|
id: sad-system
|
|
3525
3525
|
title: System Architecture Description
|
|
3526
3526
|
standard: ISO/IEC/IEEE 42010:2022
|
|
@@ -3693,7 +3693,7 @@ empty: "No IEC 60601-1 compliance traces defined."
|
|
|
3693
3693
|
{{include:shared/snippets/approval-block.md}}
|
|
3694
3694
|
|
|
3695
3695
|
{{include:shared/snippets/references-section.md}}
|
|
3696
|
-
`,
|
|
3696
|
+
`,Xl=`---
|
|
3697
3697
|
id: standards-checklist
|
|
3698
3698
|
title: Standards Conformance Checklist
|
|
3699
3699
|
standard: ISO 13485:2016
|
|
@@ -3780,7 +3780,7 @@ empty: "No open gaps — every required clause is claimed."
|
|
|
3780
3780
|
{{include:shared/snippets/approval-block.md}}
|
|
3781
3781
|
|
|
3782
3782
|
{{include:shared/snippets/references-section.md}}
|
|
3783
|
-
`,
|
|
3783
|
+
`,Ql=`---
|
|
3784
3784
|
id: standards-traceability
|
|
3785
3785
|
title: Standards Traceability Matrix
|
|
3786
3786
|
standard: ISO 13485:2016
|
|
@@ -3905,7 +3905,7 @@ empty: "No standard clauses declared. Add StandardClause instances for the claus
|
|
|
3905
3905
|
{{include:shared/snippets/approval-block.md}}
|
|
3906
3906
|
|
|
3907
3907
|
{{include:shared/snippets/references-section.md}}
|
|
3908
|
-
`,
|
|
3908
|
+
`,Zl=`---
|
|
3909
3909
|
id: syrs
|
|
3910
3910
|
title: System Requirements Specification
|
|
3911
3911
|
standard: IEC 60601-1:2005+AMD1:2012+AMD2:2020
|
|
@@ -4033,35 +4033,35 @@ empty: "No risk controls defined."
|
|
|
4033
4033
|
{{include:shared/snippets/approval-block.md}}
|
|
4034
4034
|
|
|
4035
4035
|
{{include:shared/snippets/references-section.md}}
|
|
4036
|
-
`,Ql=Object.assign({"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/21cfr820/change-record.md":rl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/21cfr820/design-input.md":ol,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/21cfr820/design-output.md":al,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/21cfr820/design-review.md":sl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/21cfr820/design-validation.md":il,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/21cfr820/design-verification.md":ll,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/21cfr820/dhf-index.md":dl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/21cfr820/transfer-plan.md":cl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/21cfr820/user-needs.md":ul,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/21cfr820/vv-plan.md":pl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/21cfr820/vv-report.md":ml,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/fda-cybersecurity/incident-response.md":fl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/fda-cybersecurity/postmarket-surveillance.md":hl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/fda-cybersecurity/security-arch.md":yl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/fda-cybersecurity/threat-model.md":gl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/fda-cybersecurity/vuln-assessment.md":xl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iec-60601/hrs.md":bl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iec-62304/change-control.md":vl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iec-62304/detailed-design.md":wl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iec-62304/integration-test.md":kl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iec-62304/sad.md":Sl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iec-62304/sbom.md":Cl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iec-62304/sdp.md":El,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iec-62304/soup.md":jl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iec-62304/srs.md":Dl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iec-62304/sw-traceability.md":Bl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iec-62304/system-test.md":Fl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iec-62366/formative-eval.md":Al,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iec-62366/summative-eval.md":Nl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iec-62366/task-analysis.md":Tl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iec-62366/ue-plan.md":Rl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iec-62366/ui-spec.md":Il,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iec-62366/urra.md":Ml,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iec-62366/use-spec.md":_l,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iso-14971/fmea.md":Pl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iso-14971/fta.md":Ol,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iso-14971/har.md":zl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iso-14971/risk-benefit.md":Ul,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iso-14971/risk-matrix.md":Ll,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iso-14971/rmp.md":ql,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iso-14971/rmr.md":$l,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/shared/snippets/approval-block.md":Vl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/shared/snippets/document-control-header.md":Wl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/shared/snippets/references-section.md":Hl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/shared/snippets/revision-history-table.md":Kl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/system/sad.md":Gl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/system/standards-checklist.md":Yl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/system/standards-traceability.md":Jl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/system/syrs.md":Xl}),wt={};for(const[e,r]of Object.entries(Ql)){const n=e.match(/templates\/dhf\/(.+)\.md$/);n&&(wt[n[1]]=r)}Object.keys(wt).length;function Zl(e){const r=e.match(/^---\r?\n([\s\S]*?)\r?\n---/);return r?r[1]:""}function Sr(e,r){const n=e.match(new RegExp(`^${r}:\\s*(.+)$`,"m"));if(n)return n[1].trim().replace(/^["']|["']$/g,"")||void 0}function ed(e,r){const n=e.match(new RegExp(`^${r}:\\s*\\[(.*)\\]$`,"m"));return n?n[1].split(",").map(o=>o.trim().replace(/^["']|["']$/g,"")).filter(Boolean):[]}function td(){const e=[];for(const[r,n]of Object.entries(wt)){const o=r.indexOf("/");if(o<0)continue;const a=r.slice(0,o);if(a==="shared")continue;const s=Zl(n);e.push({id:r,directory:a,title:Sr(s,"title"),standard:Sr(s,"standard"),clauses:ed(s,"clauses")})}return e.sort((r,n)=>r.id.localeCompare(n.id))}function nd(e){return e.replace(/^---[\s\S]*?---\n?/,"")}function Do(e){return e.replace(/\{\{include:([^}]+)\}\}/g,(r,n)=>{const o=n.replace(/\.md$/,""),a=wt[o];return a?Do(nd(a)):`<!-- [include: ${n} — not found] -->`})}function rd(e){const r=wt[e];return r?Do(r):null}const Dn="#6B7280",Cr=["#dc2626","#2563eb","#7c3aed","#0891b2","#0d9488","#4f46e5","#059669","#b45309","#d97706"];function od(e){let r=0;for(let n=0;n<e.length;n++)r=r*31+e.charCodeAt(n)>>>0;return Cr[r%Cr.length]}function ad(e,r){const n=new Map;for(const s of r)n.set(s,(n.get(s)??0)+1);const o=[...n.entries()].sort((s,i)=>i[1]-s[1]);return o.length===1||o.length>1&&o[0][1]>o[1][1]?o[0][0].split(":")[0].trim():e.split("-").map(s=>s.charAt(0).toUpperCase()+s.slice(1)).join(" ")}function dt(e){const r=e.split(/[^a-zA-Z0-9]+/).filter(Boolean);return r.length>=2?r.slice(0,4).map(n=>n[0].toUpperCase()).join(""):r.length===1?r[0].slice(0,3).toUpperCase():"DOC"}function sd(){const e=new Map;for(const r of td()){e.has(r.directory)||e.set(r.directory,{designations:[],templates:[]});const n=e.get(r.directory);r.standard&&n.designations.push(r.standard);const o=r.title??r.id.slice(r.id.indexOf("/")+1);n.templates.push({id:r.id,title:o,prefix:dt(o)})}return[...e.entries()].sort(([r],[n])=>r.localeCompare(n)).map(([r,{designations:n,templates:o}])=>({id:r,label:ad(r,n),color:od(r),templates:o.sort((a,s)=>a.title.localeCompare(s.title))}))}const Ke=sd();function id(e){var r;return((r=Ke.find(n=>n.label===e))==null?void 0:r.color)??Dn}const ld={position:"fixed",inset:0,zIndex:9999,display:"flex",alignItems:"center",justifyContent:"center",background:"rgba(0,0,0,0.4)"},dd={background:"#fff",borderRadius:"12px",padding:"20px",width:"460px",maxHeight:"560px",display:"flex",flexDirection:"column",boxShadow:"0 20px 60px rgba(0,0,0,0.2)"},Er=["Category","Template","Confirm"];function mn(e,r=1e4){const{registerLlmRequest:n}=S.getState(),o=`dhf-${Date.now()}-${Math.random().toString(36).slice(2)}`;return new Promise((a,s)=>{n(o,a,s),e(o),setTimeout(()=>s(new Error("Request timed out.")),r)})}function cd({initialGroupId:e,existingDocs:r,numberingPrefix:n,onCreate:o,onClose:a}){const s=S(R=>R.connected),i=Ke.find(R=>R.id===e)??null,[l,c]=p.useState(i?1:0),[d,u]=p.useState(i),[m,b]=p.useState(""),[v,w]=p.useState({builtIn:new Set,repo:new Set,blank:!1}),[g,h]=p.useState("Untitled Document"),[y,B]=p.useState(null),[N,D]=p.useState(null),[A,F]=p.useState(!1),[C,k]=p.useState(""),[T,z]=p.useState(""),[_,j]=p.useState({}),[L,E]=p.useState(!1),[O,V]=p.useState(null),[U,$]=p.useState(""),K=S(R=>R.model),J=S(R=>R.availableOntologies),Y=p.useMemo(()=>{const R=Eo(J);return Object.values((K==null?void 0:K.elements)??{}).filter(H=>Ut(H.kind,R)).sort((H,G)=>(H.name||H.id).localeCompare(G.name||G.id))},[K,J]),ee=d===null&&l>0?m.trim()||"Other":(d==null?void 0:d.label)??"",M=(d==null?void 0:d.color)??Dn;p.useEffect(()=>{l!==1||y!==null||!s||mn(R=>Xs(R)).then(B).catch(R=>D((R==null?void 0:R.message)??"Could not list repository files."))},[l,y,s]);const x=p.useMemo(()=>{const R=[];for(const H of(d==null?void 0:d.templates)??[])v.builtIn.has(H.id)&&R.push({key:H.id,defaultTitle:H.title,prefix:H.prefix,templateId:H.id});for(const H of v.repo){const G=y==null?void 0:y.find(le=>le.path===H),Z=(G==null?void 0:G.title)??H.split("/").pop().replace(/\.md$/,"");R.push({key:`repo:${H}`,defaultTitle:Z,prefix:dt(Z),templateId:`repo:${H}`})}if(v.blank&&R.push({key:"blank",defaultTitle:g.trim()||"Untitled Document",prefix:dt(g),templateId:"blank"}),A&&C.trim()){const H=C.trim();R.push({key:"new-template",defaultTitle:H,prefix:dt(H),templateId:"new-template"})}return R},[v,d,y,g,A,C]),P=R=>_[R.key]??R.defaultTitle,q=R=>R.templateId==="blank"||R.templateId==="new-template"||R.templateId.startsWith("repo:")?dt(P(R)):R.prefix,X=p.useMemo(()=>{const R=new Map;return x.map(H=>{const G=`${n}-${q(H)}-`,Z=r.filter(ae=>ae.id.startsWith(G)).length,le=R.get(G)??0;return R.set(G,le+1),`${G}${String(Z+le+1).padStart(3,"0")}`})},[x,_,r,n]);async function ie(){E(!0),V(null);try{const R=[];for(const H of x){let G=null;if(H.templateId.startsWith("repo:"))G=await mn(Z=>Qs(Z,H.templateId.slice(5)));else if(H.templateId==="new-template"){const Z=T.trim()||`# ${P(H)}
|
|
4036
|
+
`,ed=Object.assign({"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/21cfr820/change-record.md":al,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/21cfr820/design-input.md":sl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/21cfr820/design-output.md":il,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/21cfr820/design-review.md":ll,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/21cfr820/design-validation.md":dl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/21cfr820/design-verification.md":cl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/21cfr820/dhf-index.md":ul,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/21cfr820/transfer-plan.md":pl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/21cfr820/user-needs.md":ml,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/21cfr820/vv-plan.md":fl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/21cfr820/vv-report.md":hl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/fda-cybersecurity/incident-response.md":yl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/fda-cybersecurity/postmarket-surveillance.md":gl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/fda-cybersecurity/security-arch.md":xl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/fda-cybersecurity/threat-model.md":bl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/fda-cybersecurity/vuln-assessment.md":vl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iec-60601/hrs.md":wl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iec-62304/change-control.md":kl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iec-62304/detailed-design.md":Sl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iec-62304/integration-test.md":Cl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iec-62304/sad.md":El,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iec-62304/sbom.md":jl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iec-62304/sdp.md":Dl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iec-62304/soup.md":Bl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iec-62304/srs.md":Fl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iec-62304/sw-traceability.md":Al,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iec-62304/system-test.md":Nl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iec-62366/formative-eval.md":Tl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iec-62366/summative-eval.md":Rl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iec-62366/task-analysis.md":Il,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iec-62366/ue-plan.md":Ml,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iec-62366/ui-spec.md":_l,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iec-62366/urra.md":Pl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iec-62366/use-spec.md":Ol,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iso-14971/fmea.md":zl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iso-14971/fta.md":Ul,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iso-14971/har.md":Ll,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iso-14971/risk-benefit.md":ql,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iso-14971/risk-matrix.md":$l,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iso-14971/rmp.md":Vl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iso-14971/rmr.md":Wl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/shared/snippets/approval-block.md":Hl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/shared/snippets/document-control-header.md":Kl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/shared/snippets/references-section.md":Gl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/shared/snippets/revision-history-table.md":Yl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/system/sad.md":Jl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/system/standards-checklist.md":Xl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/system/standards-traceability.md":Ql,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/system/syrs.md":Zl}),kt={};for(const[e,r]of Object.entries(ed)){const n=e.match(/templates\/dhf\/(.+)\.md$/);n&&(kt[n[1]]=r)}Object.keys(kt).length;function td(e){const r=e.match(/^---\r?\n([\s\S]*?)\r?\n---/);return r?r[1]:""}function Sr(e,r){const n=e.match(new RegExp(`^${r}:\\s*(.+)$`,"m"));if(n)return n[1].trim().replace(/^["']|["']$/g,"")||void 0}function nd(e,r){const n=e.match(new RegExp(`^${r}:\\s*\\[(.*)\\]$`,"m"));return n?n[1].split(",").map(o=>o.trim().replace(/^["']|["']$/g,"")).filter(Boolean):[]}function rd(){const e=[];for(const[r,n]of Object.entries(kt)){const o=r.indexOf("/");if(o<0)continue;const a=r.slice(0,o);if(a==="shared")continue;const s=td(n);e.push({id:r,directory:a,title:Sr(s,"title"),standard:Sr(s,"standard"),clauses:nd(s,"clauses")})}return e.sort((r,n)=>r.id.localeCompare(n.id))}function od(e){return e.replace(/^---[\s\S]*?---\n?/,"")}function Fo(e){return e.replace(/\{\{include:([^}]+)\}\}/g,(r,n)=>{const o=n.replace(/\.md$/,""),a=kt[o];return a?Fo(od(a)):`<!-- [include: ${n} — not found] -->`})}function ad(e){const r=kt[e];return r?Fo(r):null}const Bn="#6B7280",Cr=["#dc2626","#2563eb","#7c3aed","#0891b2","#0d9488","#4f46e5","#059669","#b45309","#d97706"];function sd(e){let r=0;for(let n=0;n<e.length;n++)r=r*31+e.charCodeAt(n)>>>0;return Cr[r%Cr.length]}function id(e,r){const n=new Map;for(const s of r)n.set(s,(n.get(s)??0)+1);const o=[...n.entries()].sort((s,i)=>i[1]-s[1]);return o.length===1||o.length>1&&o[0][1]>o[1][1]?o[0][0].split(":")[0].trim():e.split("-").map(s=>s.charAt(0).toUpperCase()+s.slice(1)).join(" ")}function ct(e){const r=e.split(/[^a-zA-Z0-9]+/).filter(Boolean);return r.length>=2?r.slice(0,4).map(n=>n[0].toUpperCase()).join(""):r.length===1?r[0].slice(0,3).toUpperCase():"DOC"}function ld(){const e=new Map;for(const r of rd()){e.has(r.directory)||e.set(r.directory,{designations:[],templates:[]});const n=e.get(r.directory);r.standard&&n.designations.push(r.standard);const o=r.title??r.id.slice(r.id.indexOf("/")+1);n.templates.push({id:r.id,title:o,prefix:ct(o)})}return[...e.entries()].sort(([r],[n])=>r.localeCompare(n)).map(([r,{designations:n,templates:o}])=>({id:r,label:id(r,n),color:sd(r),templates:o.sort((a,s)=>a.title.localeCompare(s.title))}))}const Ke=ld();function dd(e){var r;return((r=Ke.find(n=>n.label===e))==null?void 0:r.color)??Bn}const cd={position:"fixed",inset:0,zIndex:9999,display:"flex",alignItems:"center",justifyContent:"center",background:"rgba(0,0,0,0.4)"},ud={background:"#fff",borderRadius:"12px",padding:"20px",width:"460px",maxHeight:"560px",display:"flex",flexDirection:"column",boxShadow:"0 20px 60px rgba(0,0,0,0.2)"},Er=["Category","Template","Confirm"];function fn(e,r=1e4){const{registerLlmRequest:n}=C.getState(),o=`dhf-${Date.now()}-${Math.random().toString(36).slice(2)}`;return new Promise((a,s)=>{n(o,a,s),e(o),setTimeout(()=>s(new Error("Request timed out.")),r)})}function pd({initialGroupId:e,existingDocs:r,numberingPrefix:n,onCreate:o,onClose:a}){const s=C(B=>B.connected),i=Ke.find(B=>B.id===e)??null,[l,c]=p.useState(i?1:0),[d,u]=p.useState(i),[m,b]=p.useState(""),[v,w]=p.useState({builtIn:new Set,repo:new Set,blank:!1}),[g,h]=p.useState("Untitled Document"),[y,N]=p.useState(null),[R,A]=p.useState(null),[T,j]=p.useState(!1),[S,k]=p.useState(""),[U,H]=p.useState(""),[O,D]=p.useState({}),[$,E]=p.useState(!1),[q,X]=p.useState(null),[z,G]=p.useState(""),J=C(B=>B.model),ne=C(B=>B.availableOntologies),Q=p.useMemo(()=>{const B=Do(ne);return Object.values((J==null?void 0:J.elements)??{}).filter(P=>Lt(P.kind,B)).sort((P,K)=>(P.name||P.id).localeCompare(K.name||K.id))},[J,ne]),ae=d===null&&l>0?m.trim()||"Other":(d==null?void 0:d.label)??"",M=(d==null?void 0:d.color)??Bn;p.useEffect(()=>{l!==1||y!==null||!s||fn(B=>Zs(B)).then(N).catch(B=>A((B==null?void 0:B.message)??"Could not list repository files."))},[l,y,s]);const x=p.useMemo(()=>{const B=[];for(const P of(d==null?void 0:d.templates)??[])v.builtIn.has(P.id)&&B.push({key:P.id,defaultTitle:P.title,prefix:P.prefix,templateId:P.id});for(const P of v.repo){const K=y==null?void 0:y.find(ee=>ee.path===P),Z=(K==null?void 0:K.title)??P.split("/").pop().replace(/\.md$/,"");B.push({key:`repo:${P}`,defaultTitle:Z,prefix:ct(Z),templateId:`repo:${P}`})}if(v.blank&&B.push({key:"blank",defaultTitle:g.trim()||"Untitled Document",prefix:ct(g),templateId:"blank"}),T&&S.trim()){const P=S.trim();B.push({key:"new-template",defaultTitle:P,prefix:ct(P),templateId:"new-template"})}return B},[v,d,y,g,T,S]),_=B=>O[B.key]??B.defaultTitle,W=B=>B.templateId==="blank"||B.templateId==="new-template"||B.templateId.startsWith("repo:")?ct(_(B)):B.prefix,F=p.useMemo(()=>{const B=new Map;return x.map(P=>{const K=`${n}-${W(P)}-`,Z=r.filter(te=>te.id.startsWith(K)).length,ee=B.get(K)??0;return B.set(K,ee+1),`${K}${String(Z+ee+1).padStart(3,"0")}`})},[x,O,r,n]);async function L(){E(!0),X(null);try{const B=[];for(const P of x){let K=null;if(P.templateId.startsWith("repo:"))K=await fn(Z=>ei(Z,P.templateId.slice(5)));else if(P.templateId==="new-template"){const Z=U.trim()||`# ${_(P)}
|
|
4037
4037
|
|
|
4038
4038
|
_[TODO: Add template content]_
|
|
4039
|
-
`,
|
|
4039
|
+
`,ee=await fn(te=>ti(te,_(P),Z));B.push({title:_(P),prefix:W(P),templateId:`repo:${ee.path}`,groupLabel:ae,systemId:z||void 0,content:Z});continue}else P.templateId==="blank"&&(K=`# ${_(P)}
|
|
4040
4040
|
|
|
4041
4041
|
_[TODO: Add content]_
|
|
4042
|
-
`);R.push({title:P(H),prefix:q(H),templateId:H.templateId,groupLabel:ee,systemId:U||void 0,content:G})}o(R)}catch(R){V((R==null?void 0:R.message)??"Could not read template."),E(!1)}}const oe=l===0?!0:l===1?x.length>0:x.length>0&&!L;return t.jsx("div",{style:ld,onClick:R=>{R.target===R.currentTarget&&a()},children:t.jsxs("div",{style:dd,children:[t.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px",marginBottom:"4px"},children:[t.jsx("span",{style:{fontSize:"14px",fontWeight:700,color:"#1B3A4B",flex:1},children:"New Document"}),t.jsx("button",{onClick:a,style:{background:"none",border:"none",cursor:"pointer",color:"#9CA3AF",fontSize:"18px",lineHeight:1},children:"×"})]}),t.jsx("div",{style:{display:"flex",gap:"6px",marginBottom:"14px"},children:Er.map((R,H)=>t.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"5px",fontSize:"11px",fontWeight:H===l?700:500,color:H===l?"#1B3A4B":H<l?"#059669":"#9CA3AF"},children:[t.jsx("span",{style:{width:"16px",height:"16px",borderRadius:"50%",display:"inline-flex",alignItems:"center",justifyContent:"center",fontSize:"9px",fontWeight:700,color:"#fff",background:H===l?"#1B3A4B":H<l?"#059669":"#D1D5DB"},children:H<l?"✓":H+1}),R,H<Er.length-1&&t.jsx("span",{style:{color:"#D1D5DB"},children:"—"})]},R))}),l===0&&t.jsxs("div",{style:{flex:1,overflowY:"auto",display:"flex",flexDirection:"column",gap:"4px"},children:[Ke.map(R=>t.jsx(jr,{label:R.label,color:R.color,detail:`${R.templates.length} meMO templates`,selected:(d==null?void 0:d.id)===R.id,onClick:()=>{u(R),w({builtIn:new Set,repo:new Set,blank:!1})}},R.id)),t.jsx(jr,{label:"Other",color:Dn,detail:"Custom category — blank or repository template",selected:d===null&&m!=="",onClick:()=>{u(null),b(m||"Other"),w({builtIn:new Set,repo:new Set,blank:!1})}}),d===null&&m!==""&&t.jsx("input",{value:m,onChange:R=>b(R.target.value),placeholder:"Category name, e.g. Clinical",autoFocus:!0,style:{margin:"2px 0 0 26px",padding:"6px 8px",border:"1px solid #D1D5DB",borderRadius:"5px",fontSize:"12px",color:"#1B3A4B",outline:"none"}})]}),l===1&&t.jsxs("div",{style:{flex:1,overflowY:"auto",display:"flex",flexDirection:"column",gap:"10px"},children:[t.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"6px",fontSize:"12px",color:"#6B7280"},children:[t.jsx("span",{style:{width:"9px",height:"9px",borderRadius:"50%",background:M,display:"inline-block"}}),t.jsx("strong",{style:{color:"#1B3A4B"},children:ee}),t.jsx("span",{children:"— pick one or more sources"})]}),d&&d.templates.length>0&&t.jsx(fn,{title:"meMO templates",hint:"Prefilled sections and model queries",children:d.templates.map(R=>t.jsx(Tt,{label:R.title,sub:R.id,color:M,checked:v.builtIn.has(R.id),onToggle:()=>w(H=>{const G=new Set(H.builtIn);return G.has(R.id)?G.delete(R.id):G.add(R.id),{...H,builtIn:G}})},R.id))}),t.jsx(fn,{title:"Blank document",hint:"Start from an empty page",children:t.jsx(Tt,{label:v.blank?"":"Blank document",color:M,checked:v.blank,onToggle:()=>w(R=>({...R,blank:!R.blank})),children:v.blank&&t.jsx("input",{value:g,onChange:R=>h(R.target.value),onClick:R=>R.stopPropagation(),style:{flex:1,padding:"4px 8px",border:"1px solid #D1D5DB",borderRadius:"5px",fontSize:"12px",color:"#1B3A4B",outline:"none"}})})}),t.jsxs(fn,{title:"Project templates",hint:"Reusable templates in dhf/templates/",children:[!s&&t.jsx(rt,{text:"Dev server not connected — project templates unavailable."}),s&&N&&t.jsx(rt,{text:N,error:!0}),s&&!N&&y===null&&t.jsx(rt,{text:"Loading project templates…"}),s&&(y==null?void 0:y.length)===0&&t.jsx(rt,{text:"No project templates yet."}),s&&(y==null?void 0:y.map(R=>t.jsx(Tt,{label:R.title,sub:R.path,color:M,checked:v.repo.has(R.path),onToggle:()=>w(H=>{const G=new Set(H.repo);return G.has(R.path)?G.delete(R.path):G.add(R.path),{...H,repo:G}})},R.path))),t.jsx(Tt,{label:"Add new template",sub:"Save and reuse in this project",color:M,checked:A,disabled:!s,disabledNote:s?void 0:"server unavailable",onToggle:()=>F(R=>!R)}),A&&t.jsxs("div",{style:{marginLeft:"22px",display:"flex",flexDirection:"column",gap:"6px"},children:[t.jsx("input",{value:C,onChange:R=>k(R.target.value),placeholder:"Template title",style:{padding:"6px 8px",border:"1px solid #D1D5DB",borderRadius:"5px",fontSize:"12px",color:"#1B3A4B",outline:"none"}}),t.jsx("textarea",{value:T,onChange:R=>z(R.target.value),placeholder:"Template Markdown (headings, instructions, and model queries)",rows:4,style:{padding:"6px 8px",border:"1px solid #D1D5DB",borderRadius:"5px",fontSize:"11px",fontFamily:"monospace",color:"#1B3A4B",outline:"none",resize:"vertical"}})]})]})]}),l===2&&t.jsxs("div",{style:{flex:1,overflowY:"auto",display:"flex",flexDirection:"column",gap:"6px"},children:[t.jsxs("div",{style:{fontSize:"12px",color:"#6B7280",marginBottom:"4px"},children:[x.length," document",x.length===1?"":"s"," will be created in",t.jsxs("strong",{style:{color:"#1B3A4B"},children:[" ",ee]})," and saved to ",t.jsx("code",{style:{background:"#F3F4F6",padding:"0 4px",borderRadius:"3px",fontSize:"11px"},children:"dhf/documents/"}),":"]}),Y.length>0&&t.jsxs("label",{style:{display:"flex",alignItems:"center",gap:"8px",fontSize:"12px",color:"#374151",marginBottom:"4px"},children:[t.jsx("span",{style:{whiteSpace:"nowrap"},children:"System"}),t.jsxs("select",{value:U,onChange:R=>$(R.target.value),style:{flex:1,padding:"5px 8px",border:"1px solid #E5E7EB",borderRadius:"5px",fontSize:"12px",color:"#1B3A4B",background:"#fff"},children:[t.jsx("option",{value:"",children:"Global — project-wide"}),Y.map(R=>t.jsx("option",{value:R.id,children:R.name||R.id},R.id))]})]}),x.map((R,H)=>t.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px",padding:"7px 10px",border:"1px solid #E5E7EB",borderRadius:"6px"},children:[t.jsx("span",{style:{fontSize:"11px",fontFamily:"monospace",fontWeight:700,color:M,whiteSpace:"nowrap"},children:X[H]}),t.jsx("input",{value:P(R),onChange:G=>j(Z=>({...Z,[R.key]:G.target.value})),style:{flex:1,padding:"4px 8px",border:"1px solid #E5E7EB",borderRadius:"5px",fontSize:"12px",color:"#1B3A4B",outline:"none"}}),t.jsx("span",{style:{fontSize:"10px",color:"#9CA3AF",whiteSpace:"nowrap"},children:R.templateId==="blank"?"blank":R.templateId==="new-template"?"new template":R.templateId.startsWith("repo:")?"project":"meMO"})]},R.key)),O&&t.jsx(rt,{text:O,error:!0})]}),t.jsxs("div",{style:{display:"flex",gap:"8px",justifyContent:"flex-end",marginTop:"16px"},children:[l>0&&t.jsx("button",{onClick:()=>c(R=>R-1),disabled:L,style:{padding:"7px 14px",borderRadius:"6px",border:"1px solid #E5E7EB",background:"#fff",fontSize:"13px",cursor:"pointer",color:"#374151",marginRight:"auto"},children:"← Back"}),t.jsx("button",{onClick:a,style:{padding:"7px 14px",borderRadius:"6px",border:"1px solid #E5E7EB",background:"#fff",fontSize:"13px",cursor:"pointer",color:"#374151"},children:"Cancel"}),l<2?t.jsx("button",{onClick:()=>c(R=>R+1),disabled:!oe,style:{padding:"7px 16px",borderRadius:"6px",border:"none",background:oe?"#1B3A4B":"#E5E7EB",color:oe?"#fff":"#9CA3AF",fontSize:"13px",fontWeight:600,cursor:oe?"pointer":"default"},children:"Next →"}):t.jsx("button",{onClick:ie,disabled:!oe,style:{padding:"7px 16px",borderRadius:"6px",border:"none",background:oe?M:"#E5E7EB",color:oe?"#fff":"#9CA3AF",fontSize:"13px",fontWeight:600,cursor:oe?"pointer":"default"},children:L?"Creating…":`Create ${x.length>0?`(${x.length})`:""}`})]})]})})}function jr({label:e,color:r,detail:n,selected:o,onClick:a}){return t.jsxs("button",{onClick:a,style:{display:"flex",alignItems:"center",gap:"10px",padding:"9px 10px",borderRadius:"6px",border:`1px solid ${o?r:"#E5E7EB"}`,background:o?`${r}10`:"#fff",cursor:"pointer",textAlign:"left"},children:[t.jsx("span",{style:{width:"10px",height:"10px",borderRadius:"50%",background:r,flexShrink:0}}),t.jsx("span",{style:{flex:1,fontSize:"13px",fontWeight:600,color:"#1B3A4B"},children:e}),t.jsx("span",{style:{fontSize:"11px",color:"#9CA3AF"},children:n})]})}function fn({title:e,hint:r,children:n}){return t.jsxs("div",{children:[t.jsxs("div",{style:{fontSize:"10px",fontWeight:700,color:"#6B7280",textTransform:"uppercase",letterSpacing:"0.05em",marginBottom:"2px"},children:[e," ",t.jsxs("span",{style:{fontWeight:400,textTransform:"none",letterSpacing:0,color:"#9CA3AF"},children:["— ",r]})]}),t.jsx("div",{style:{display:"flex",flexDirection:"column",gap:"2px"},children:n})]})}function Tt({label:e,sub:r,color:n,checked:o,disabled:a,disabledNote:s,onToggle:i,children:l}){return t.jsxs("label",{style:{display:"flex",alignItems:"center",gap:"10px",padding:"6px 8px",borderRadius:"6px",cursor:a?"not-allowed":"pointer",background:o?`${n}10`:"transparent",opacity:a?.45:1},children:[t.jsx("input",{type:"checkbox",checked:o,disabled:a,onChange:()=>!a&&i(),style:{accentColor:n}}),e&&t.jsx("span",{style:{fontSize:"13px",color:"#1B3A4B"},children:e}),l,r&&t.jsx("span",{style:{marginLeft:"auto",fontSize:"10px",fontFamily:"monospace",color:"#9CA3AF",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:"180px"},children:r}),a&&s&&t.jsx("span",{style:{fontSize:"10px",color:"#9CA3AF"},children:s})]})}function rt({text:e,error:r}){return t.jsx("div",{style:{fontSize:"11px",color:r?"#DC2626":"#9CA3AF",fontStyle:"italic",padding:"4px 8px"},children:e})}const Dr={Hazard:"HZD",HazardousEvent:"HZD-EVT",HazardousSituation:"HZD-SIT",Risk:"RISK",RiskControlMeasure:"RISK-CTL",MitigationMeasure:"MIT",ResidualRisk:"RRISK",StakeholderRequirement:"STK-REQ",Requirement:"REQ",SoftwareSpecification:"SW-SPEC",InterfaceRequirement:"REQ",PerformanceRequirement:"PERF-REQ",SafetyRequirement:"SAF-REQ",RegulatoryRequirement:"REG-REQ",FunctionalRequirement:"REQ",NonFunctionalRequirement:"NFR",SystemComponent:"SYS-COMP",SoftwareComponent:"SW-COMP",HardwareComponent:"HW-COMP",Subsystem:"SUBSYS",Module:"MOD",Interface:"IF",Port:"PORT",Action:"ACT",ActionDefinition:"ACT-DEF",UseCase:"UC",Stakeholder:"STK",OperationalScenario:"OPS",Mission:"MSNS",Capability:"CAP",DesignInput:"DI",DesignOutput:"DO",VerificationActivity:"VER",ValidationActivity:"VAL",TestCase:"TC",Item:"ITM",Part:"PART"};function ud(e){return e.length<=3?e.toUpperCase():(e[0]+e.slice(1).replace(/[aeiouAEIOU]/g,"")).slice(0,3).toUpperCase()}function pd(e){if(Dr[e])return Dr[e];const r=e.replace(/([A-Z])/g," $1").trim().split(" ").filter(Boolean);return r.length===0?"EL":r.map(ud).join("-")}function md(e){return e.split("-")[0]}function Bo(e){return`/catalog/${e.split("-")[0]}/${e}`}function fd(e){return`/catalog/${e}`}function Fo(e,r){return`/diagrams/${e.toLowerCase().replace(/\s+/g,"-")}/${encodeURIComponent(r)}`}const hd=p.lazy(()=>de(()=>import("./ScenarioEditor-CiHaTvVY.js"),__vite__mapDeps([0,1,2])).then(e=>({default:e.ScenarioEditor})));function ke({expanded:e,size:r=14,color:n=f.muted}){return t.jsx("svg",{width:r,height:r,viewBox:"0 0 16 16",fill:"none",style:{transition:"transform 150ms ease",transform:e?"rotate(90deg)":"rotate(0deg)",flexShrink:0},children:t.jsx("path",{d:"M6 4L10 8L6 12",stroke:n,strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})})}function Br(){return t.jsxs("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[t.jsx("path",{d:"M3 3h4v4M13 3H9v4M3 13h4V9M13 13H9V9",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"}),t.jsx("path",{d:"M7 7 4 4M9 7l3-3M7 9l-3 3M9 9l3 3",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})]})}function Re({open:e,color:r=f.muted}){return e?t.jsxs("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",style:{flexShrink:0},children:[t.jsx("path",{d:"M1.5 3.5h4.8l1.2 1.5H14.5v8H1.5z",fill:r,opacity:"0.15",stroke:r,strokeWidth:"1",strokeLinejoin:"round"}),t.jsx("path",{d:"M1.5 5h13v8H1.5z",fill:r,opacity:"0.08"})]}):t.jsx("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",style:{flexShrink:0},children:t.jsx("path",{d:"M1.5 3.5h4.8l1.2 1.5H14.5v8H1.5z",fill:r,opacity:"0.15",stroke:r,strokeWidth:"1",strokeLinejoin:"round"})})}function xt({color:e=f.muted}){return t.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",style:{flexShrink:0},children:[t.jsx("rect",{x:"2",y:"1.5",width:"12",height:"13",rx:"1.5",fill:e,opacity:"0.1",stroke:e,strokeWidth:"1"}),t.jsx("line",{x1:"5",y1:"5.5",x2:"11",y2:"5.5",stroke:e,strokeWidth:"0.8",opacity:"0.5"}),t.jsx("line",{x1:"5",y1:"8",x2:"11",y2:"8",stroke:e,strokeWidth:"0.8",opacity:"0.5"}),t.jsx("line",{x1:"5",y1:"10.5",x2:"9",y2:"10.5",stroke:e,strokeWidth:"0.8",opacity:"0.5"})]})}async function ve(e){try{const r=await e;if(!r.success){window.alert(r.error??"The containment change was refused.");return}for(const n of r.warnings??[])window.alert(n.message)}catch(r){window.alert(r instanceof Error?r.message:String(r))}}function yd({elementId:e,currentKind:r,onClose:n}){const o=S(d=>d.updateElementKind),a=S(d=>d.model),[s,i]=p.useState(r),l=p.useRef(null),c=p.useMemo(()=>{var d;return(((d=a==null?void 0:a.registries)==null?void 0:d.kinds)??[]).filter(u=>!u.isAbstract).map(u=>u.name).sort((u,m)=>u.localeCompare(m))},[a]);return p.useEffect(()=>{const d=u=>{l.current&&!l.current.contains(u.target)&&n()};return document.addEventListener("mousedown",d),()=>document.removeEventListener("mousedown",d)},[n]),t.jsxs("div",{ref:l,className:"fixed z-50 rounded-lg overflow-hidden py-3 px-4",style:{top:"50%",left:"50%",transform:"translate(-50%, -50%)",background:"#FFFFFF",border:"1px solid #E5E7EB",boxShadow:"0 8px 32px rgba(0,0,0,0.16)",minWidth:"320px"},children:[t.jsx("div",{className:"font-semibold mb-3",style:{color:"#1B3A4B",fontSize:"13px"},children:"Change Element Type"}),t.jsxs("div",{className:"text-xs mb-1",style:{color:"#6B7280"},children:["Current: ",t.jsx("span",{style:{color:"#DC2626",fontWeight:600},children:r})," (not in ontology)"]}),t.jsx("select",{value:s,onChange:d=>i(d.target.value),className:"w-full px-3 py-2 rounded-lg mb-3 focus:outline-none",style:{background:"#F9F9F8",border:"1px solid #E5E7EB",color:"#1B3A4B",fontSize:"13px"},children:c.map(d=>t.jsx("option",{value:d,children:d},d))}),t.jsxs("div",{className:"flex gap-2 justify-end",children:[t.jsx("button",{onClick:n,className:"px-3 py-1.5 rounded",style:{fontSize:"12px",color:"#6B7280",background:"#F0F0ED"},children:"Cancel"}),t.jsx("button",{onClick:()=>{o(e,s),n()},className:"px-3 py-1.5 rounded font-medium",style:{fontSize:"12px",color:"#FFFFFF",background:"#2DD4A8"},children:"Apply"})]})]})}function gd({menu:e,onClose:r}){var g;const n=S(h=>h.model),o=S(h=>h.selectElement),a=S(h=>h.addElement),s=S(h=>h.moveElementToPackage),i=S(h=>h.createPackage),l=S(h=>h.renamePackage),c=S(h=>h.deletePackage),d=S(h=>h.deleteModelElement),[u,m]=p.useState(null),b=p.useRef(null);if(p.useEffect(()=>{const h=y=>{b.current&&!b.current.contains(y.target)&&r()};return document.addEventListener("mousedown",h),()=>document.removeEventListener("mousedown",h)},[r]),!n)return null;let v="",w=[];if(e.type==="element"&&e.elementId){const h=n.elements[e.elementId];if(!h)return null;v=h.name;const y=!(((g=n.registries)==null?void 0:g.kinds)??[]).some(B=>B.name===h.kind);w=[{label:"View details",action:()=>o(h.id)},{label:"Move to package…",action:()=>{const B=window.prompt("Move to which package? (qualified name, e.g. Plant::Hydraulics)",h.package||"");B!==null&&ve(s(h.id,B.trim()))}},{label:"Group in new package…",action:()=>{const B=gr(n,h),N=window.prompt(B?`Name the group inside ${B.split("::").pop()}`:"Name the group");if(!(N!=null&&N.trim()))return;const D=`${B}::${N.trim()}`;i(N.trim(),B).then(async A=>{if(!A.success){window.alert(A.error??"The package could not be created.");return}return await Li(D),ve(s(h.id,D))})}},...xr(n,h).length>0?[{label:"Move into group…",action:()=>{var A;const B=gr(n,h),N=xr(n,h),D=window.prompt(`Move into which group? (${N.join(", ")})`,((A=h.attributes)==null?void 0:A.elementPackage)??N[0]??"");D!=null&&D.trim()&&ve(s(h.id,`${B}::${D.trim()}`))}}]:[],{label:"Copy ID",action:()=>{var B;return(B=navigator.clipboard)==null?void 0:B.writeText(h.id)}},{label:"Delete element…",danger:!0,action:()=>{window.confirm(`Delete “${h.name}”?
|
|
4042
|
+
`);B.push({title:_(P),prefix:W(P),templateId:P.templateId,groupLabel:ae,systemId:z||void 0,content:K})}o(B)}catch(B){X((B==null?void 0:B.message)??"Could not read template."),E(!1)}}const V=l===0?!0:l===1?x.length>0:x.length>0&&!$;return t.jsx("div",{style:cd,onClick:B=>{B.target===B.currentTarget&&a()},children:t.jsxs("div",{style:ud,children:[t.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px",marginBottom:"4px"},children:[t.jsx("span",{style:{fontSize:"14px",fontWeight:700,color:"#1B3A4B",flex:1},children:"New Document"}),t.jsx("button",{onClick:a,style:{background:"none",border:"none",cursor:"pointer",color:"#9CA3AF",fontSize:"18px",lineHeight:1},children:"×"})]}),t.jsx("div",{style:{display:"flex",gap:"6px",marginBottom:"14px"},children:Er.map((B,P)=>t.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"5px",fontSize:"11px",fontWeight:P===l?700:500,color:P===l?"#1B3A4B":P<l?"#059669":"#9CA3AF"},children:[t.jsx("span",{style:{width:"16px",height:"16px",borderRadius:"50%",display:"inline-flex",alignItems:"center",justifyContent:"center",fontSize:"9px",fontWeight:700,color:"#fff",background:P===l?"#1B3A4B":P<l?"#059669":"#D1D5DB"},children:P<l?"✓":P+1}),B,P<Er.length-1&&t.jsx("span",{style:{color:"#D1D5DB"},children:"—"})]},B))}),l===0&&t.jsxs("div",{style:{flex:1,overflowY:"auto",display:"flex",flexDirection:"column",gap:"4px"},children:[Ke.map(B=>t.jsx(jr,{label:B.label,color:B.color,detail:`${B.templates.length} meMO templates`,selected:(d==null?void 0:d.id)===B.id,onClick:()=>{u(B),w({builtIn:new Set,repo:new Set,blank:!1})}},B.id)),t.jsx(jr,{label:"Other",color:Bn,detail:"Custom category — blank or repository template",selected:d===null&&m!=="",onClick:()=>{u(null),b(m||"Other"),w({builtIn:new Set,repo:new Set,blank:!1})}}),d===null&&m!==""&&t.jsx("input",{value:m,onChange:B=>b(B.target.value),placeholder:"Category name, e.g. Clinical",autoFocus:!0,style:{margin:"2px 0 0 26px",padding:"6px 8px",border:"1px solid #D1D5DB",borderRadius:"5px",fontSize:"12px",color:"#1B3A4B",outline:"none"}})]}),l===1&&t.jsxs("div",{style:{flex:1,overflowY:"auto",display:"flex",flexDirection:"column",gap:"10px"},children:[t.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"6px",fontSize:"12px",color:"#6B7280"},children:[t.jsx("span",{style:{width:"9px",height:"9px",borderRadius:"50%",background:M,display:"inline-block"}}),t.jsx("strong",{style:{color:"#1B3A4B"},children:ae}),t.jsx("span",{children:"— pick one or more sources"})]}),d&&d.templates.length>0&&t.jsx(hn,{title:"meMO templates",hint:"Prefilled sections and model queries",children:d.templates.map(B=>t.jsx(Rt,{label:B.title,sub:B.id,color:M,checked:v.builtIn.has(B.id),onToggle:()=>w(P=>{const K=new Set(P.builtIn);return K.has(B.id)?K.delete(B.id):K.add(B.id),{...P,builtIn:K}})},B.id))}),t.jsx(hn,{title:"Blank document",hint:"Start from an empty page",children:t.jsx(Rt,{label:v.blank?"":"Blank document",color:M,checked:v.blank,onToggle:()=>w(B=>({...B,blank:!B.blank})),children:v.blank&&t.jsx("input",{value:g,onChange:B=>h(B.target.value),onClick:B=>B.stopPropagation(),style:{flex:1,padding:"4px 8px",border:"1px solid #D1D5DB",borderRadius:"5px",fontSize:"12px",color:"#1B3A4B",outline:"none"}})})}),t.jsxs(hn,{title:"Project templates",hint:"Reusable templates in dhf/templates/",children:[!s&&t.jsx(rt,{text:"Dev server not connected — project templates unavailable."}),s&&R&&t.jsx(rt,{text:R,error:!0}),s&&!R&&y===null&&t.jsx(rt,{text:"Loading project templates…"}),s&&(y==null?void 0:y.length)===0&&t.jsx(rt,{text:"No project templates yet."}),s&&(y==null?void 0:y.map(B=>t.jsx(Rt,{label:B.title,sub:B.path,color:M,checked:v.repo.has(B.path),onToggle:()=>w(P=>{const K=new Set(P.repo);return K.has(B.path)?K.delete(B.path):K.add(B.path),{...P,repo:K}})},B.path))),t.jsx(Rt,{label:"Add new template",sub:"Save and reuse in this project",color:M,checked:T,disabled:!s,disabledNote:s?void 0:"server unavailable",onToggle:()=>j(B=>!B)}),T&&t.jsxs("div",{style:{marginLeft:"22px",display:"flex",flexDirection:"column",gap:"6px"},children:[t.jsx("input",{value:S,onChange:B=>k(B.target.value),placeholder:"Template title",style:{padding:"6px 8px",border:"1px solid #D1D5DB",borderRadius:"5px",fontSize:"12px",color:"#1B3A4B",outline:"none"}}),t.jsx("textarea",{value:U,onChange:B=>H(B.target.value),placeholder:"Template Markdown (headings, instructions, and model queries)",rows:4,style:{padding:"6px 8px",border:"1px solid #D1D5DB",borderRadius:"5px",fontSize:"11px",fontFamily:"monospace",color:"#1B3A4B",outline:"none",resize:"vertical"}})]})]})]}),l===2&&t.jsxs("div",{style:{flex:1,overflowY:"auto",display:"flex",flexDirection:"column",gap:"6px"},children:[t.jsxs("div",{style:{fontSize:"12px",color:"#6B7280",marginBottom:"4px"},children:[x.length," document",x.length===1?"":"s"," will be created in",t.jsxs("strong",{style:{color:"#1B3A4B"},children:[" ",ae]})," and saved to ",t.jsx("code",{style:{background:"#F3F4F6",padding:"0 4px",borderRadius:"3px",fontSize:"11px"},children:"dhf/documents/"}),":"]}),Q.length>0&&t.jsxs("label",{style:{display:"flex",alignItems:"center",gap:"8px",fontSize:"12px",color:"#374151",marginBottom:"4px"},children:[t.jsx("span",{style:{whiteSpace:"nowrap"},children:"System"}),t.jsxs("select",{value:z,onChange:B=>G(B.target.value),style:{flex:1,padding:"5px 8px",border:"1px solid #E5E7EB",borderRadius:"5px",fontSize:"12px",color:"#1B3A4B",background:"#fff"},children:[t.jsx("option",{value:"",children:"Global — project-wide"}),Q.map(B=>t.jsx("option",{value:B.id,children:B.name||B.id},B.id))]})]}),x.map((B,P)=>t.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px",padding:"7px 10px",border:"1px solid #E5E7EB",borderRadius:"6px"},children:[t.jsx("span",{style:{fontSize:"11px",fontFamily:"monospace",fontWeight:700,color:M,whiteSpace:"nowrap"},children:F[P]}),t.jsx("input",{value:_(B),onChange:K=>D(Z=>({...Z,[B.key]:K.target.value})),style:{flex:1,padding:"4px 8px",border:"1px solid #E5E7EB",borderRadius:"5px",fontSize:"12px",color:"#1B3A4B",outline:"none"}}),t.jsx("span",{style:{fontSize:"10px",color:"#9CA3AF",whiteSpace:"nowrap"},children:B.templateId==="blank"?"blank":B.templateId==="new-template"?"new template":B.templateId.startsWith("repo:")?"project":"meMO"})]},B.key)),q&&t.jsx(rt,{text:q,error:!0})]}),t.jsxs("div",{style:{display:"flex",gap:"8px",justifyContent:"flex-end",marginTop:"16px"},children:[l>0&&t.jsx("button",{onClick:()=>c(B=>B-1),disabled:$,style:{padding:"7px 14px",borderRadius:"6px",border:"1px solid #E5E7EB",background:"#fff",fontSize:"13px",cursor:"pointer",color:"#374151",marginRight:"auto"},children:"← Back"}),t.jsx("button",{onClick:a,style:{padding:"7px 14px",borderRadius:"6px",border:"1px solid #E5E7EB",background:"#fff",fontSize:"13px",cursor:"pointer",color:"#374151"},children:"Cancel"}),l<2?t.jsx("button",{onClick:()=>c(B=>B+1),disabled:!V,style:{padding:"7px 16px",borderRadius:"6px",border:"none",background:V?"#1B3A4B":"#E5E7EB",color:V?"#fff":"#9CA3AF",fontSize:"13px",fontWeight:600,cursor:V?"pointer":"default"},children:"Next →"}):t.jsx("button",{onClick:L,disabled:!V,style:{padding:"7px 16px",borderRadius:"6px",border:"none",background:V?M:"#E5E7EB",color:V?"#fff":"#9CA3AF",fontSize:"13px",fontWeight:600,cursor:V?"pointer":"default"},children:$?"Creating…":`Create ${x.length>0?`(${x.length})`:""}`})]})]})})}function jr({label:e,color:r,detail:n,selected:o,onClick:a}){return t.jsxs("button",{onClick:a,style:{display:"flex",alignItems:"center",gap:"10px",padding:"9px 10px",borderRadius:"6px",border:`1px solid ${o?r:"#E5E7EB"}`,background:o?`${r}10`:"#fff",cursor:"pointer",textAlign:"left"},children:[t.jsx("span",{style:{width:"10px",height:"10px",borderRadius:"50%",background:r,flexShrink:0}}),t.jsx("span",{style:{flex:1,fontSize:"13px",fontWeight:600,color:"#1B3A4B"},children:e}),t.jsx("span",{style:{fontSize:"11px",color:"#9CA3AF"},children:n})]})}function hn({title:e,hint:r,children:n}){return t.jsxs("div",{children:[t.jsxs("div",{style:{fontSize:"10px",fontWeight:700,color:"#6B7280",textTransform:"uppercase",letterSpacing:"0.05em",marginBottom:"2px"},children:[e," ",t.jsxs("span",{style:{fontWeight:400,textTransform:"none",letterSpacing:0,color:"#9CA3AF"},children:["— ",r]})]}),t.jsx("div",{style:{display:"flex",flexDirection:"column",gap:"2px"},children:n})]})}function Rt({label:e,sub:r,color:n,checked:o,disabled:a,disabledNote:s,onToggle:i,children:l}){return t.jsxs("label",{style:{display:"flex",alignItems:"center",gap:"10px",padding:"6px 8px",borderRadius:"6px",cursor:a?"not-allowed":"pointer",background:o?`${n}10`:"transparent",opacity:a?.45:1},children:[t.jsx("input",{type:"checkbox",checked:o,disabled:a,onChange:()=>!a&&i(),style:{accentColor:n}}),e&&t.jsx("span",{style:{fontSize:"13px",color:"#1B3A4B"},children:e}),l,r&&t.jsx("span",{style:{marginLeft:"auto",fontSize:"10px",fontFamily:"monospace",color:"#9CA3AF",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:"180px"},children:r}),a&&s&&t.jsx("span",{style:{fontSize:"10px",color:"#9CA3AF"},children:s})]})}function rt({text:e,error:r}){return t.jsx("div",{style:{fontSize:"11px",color:r?"#DC2626":"#9CA3AF",fontStyle:"italic",padding:"4px 8px"},children:e})}const Dr={Hazard:"HZD",HazardousEvent:"HZD-EVT",HazardousSituation:"HZD-SIT",Risk:"RISK",RiskControlMeasure:"RISK-CTL",MitigationMeasure:"MIT",ResidualRisk:"RRISK",StakeholderRequirement:"STK-REQ",Requirement:"REQ",SoftwareSpecification:"SW-SPEC",InterfaceRequirement:"REQ",PerformanceRequirement:"PERF-REQ",SafetyRequirement:"SAF-REQ",RegulatoryRequirement:"REG-REQ",FunctionalRequirement:"REQ",NonFunctionalRequirement:"NFR",SystemComponent:"SYS-COMP",SoftwareComponent:"SW-COMP",HardwareComponent:"HW-COMP",Subsystem:"SUBSYS",Module:"MOD",Interface:"IF",Port:"PORT",Action:"ACT",ActionDefinition:"ACT-DEF",UseCase:"UC",Stakeholder:"STK",OperationalScenario:"OPS",Mission:"MSNS",Capability:"CAP",DesignInput:"DI",DesignOutput:"DO",VerificationActivity:"VER",ValidationActivity:"VAL",TestCase:"TC",Item:"ITM",Part:"PART"};function md(e){return e.length<=3?e.toUpperCase():(e[0]+e.slice(1).replace(/[aeiouAEIOU]/g,"")).slice(0,3).toUpperCase()}function fd(e){if(Dr[e])return Dr[e];const r=e.replace(/([A-Z])/g," $1").trim().split(" ").filter(Boolean);return r.length===0?"EL":r.map(md).join("-")}function hd(e){return e.split("-")[0]}function Ao(e){return`/catalog/${e.split("-")[0]}/${e}`}function yd(e){return`/catalog/${e}`}function No(e,r){return`/diagrams/${e.toLowerCase().replace(/\s+/g,"-")}/${encodeURIComponent(r)}`}const gd=p.lazy(()=>ce(()=>import("./ScenarioEditor-cLJenHgj.js"),__vite__mapDeps([0,1,2])).then(e=>({default:e.ScenarioEditor})));function xe({expanded:e,size:r=14,color:n=f.muted}){return t.jsx("svg",{width:r,height:r,viewBox:"0 0 16 16",fill:"none",style:{transition:"transform 150ms ease",transform:e?"rotate(90deg)":"rotate(0deg)",flexShrink:0},children:t.jsx("path",{d:"M6 4L10 8L6 12",stroke:n,strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})})}function Br(){return t.jsxs("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[t.jsx("path",{d:"M3 3h4v4M13 3H9v4M3 13h4V9M13 13H9V9",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"}),t.jsx("path",{d:"M7 7 4 4M9 7l3-3M7 9l-3 3M9 9l3 3",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})]})}function Ie({open:e,color:r=f.muted}){return e?t.jsxs("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",style:{flexShrink:0},children:[t.jsx("path",{d:"M1.5 3.5h4.8l1.2 1.5H14.5v8H1.5z",fill:r,opacity:"0.15",stroke:r,strokeWidth:"1",strokeLinejoin:"round"}),t.jsx("path",{d:"M1.5 5h13v8H1.5z",fill:r,opacity:"0.08"})]}):t.jsx("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",style:{flexShrink:0},children:t.jsx("path",{d:"M1.5 3.5h4.8l1.2 1.5H14.5v8H1.5z",fill:r,opacity:"0.15",stroke:r,strokeWidth:"1",strokeLinejoin:"round"})})}function bt({color:e=f.muted}){return t.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",style:{flexShrink:0},children:[t.jsx("rect",{x:"2",y:"1.5",width:"12",height:"13",rx:"1.5",fill:e,opacity:"0.1",stroke:e,strokeWidth:"1"}),t.jsx("line",{x1:"5",y1:"5.5",x2:"11",y2:"5.5",stroke:e,strokeWidth:"0.8",opacity:"0.5"}),t.jsx("line",{x1:"5",y1:"8",x2:"11",y2:"8",stroke:e,strokeWidth:"0.8",opacity:"0.5"}),t.jsx("line",{x1:"5",y1:"10.5",x2:"9",y2:"10.5",stroke:e,strokeWidth:"0.8",opacity:"0.5"})]})}async function Se(e){try{const r=await e;if(!r.success){window.alert(r.error??"The containment change was refused.");return}for(const n of r.warnings??[])window.alert(n.message)}catch(r){window.alert(r instanceof Error?r.message:String(r))}}function xd({elementId:e,currentKind:r,onClose:n}){const o=C(d=>d.updateElementKind),a=C(d=>d.model),[s,i]=p.useState(r),l=p.useRef(null),c=p.useMemo(()=>{var d;return(((d=a==null?void 0:a.registries)==null?void 0:d.kinds)??[]).filter(u=>!u.isAbstract).map(u=>u.name).sort((u,m)=>u.localeCompare(m))},[a]);return p.useEffect(()=>{const d=u=>{l.current&&!l.current.contains(u.target)&&n()};return document.addEventListener("mousedown",d),()=>document.removeEventListener("mousedown",d)},[n]),t.jsxs("div",{ref:l,className:"fixed z-50 rounded-lg overflow-hidden py-3 px-4",style:{top:"50%",left:"50%",transform:"translate(-50%, -50%)",background:"#FFFFFF",border:"1px solid #E5E7EB",boxShadow:"0 8px 32px rgba(0,0,0,0.16)",minWidth:"320px"},children:[t.jsx("div",{className:"font-semibold mb-3",style:{color:"#1B3A4B",fontSize:"13px"},children:"Change Element Type"}),t.jsxs("div",{className:"text-xs mb-1",style:{color:"#6B7280"},children:["Current: ",t.jsx("span",{style:{color:"#DC2626",fontWeight:600},children:r})," (not in ontology)"]}),t.jsx("select",{value:s,onChange:d=>i(d.target.value),className:"w-full px-3 py-2 rounded-lg mb-3 focus:outline-none",style:{background:"#F9F9F8",border:"1px solid #E5E7EB",color:"#1B3A4B",fontSize:"13px"},children:c.map(d=>t.jsx("option",{value:d,children:d},d))}),t.jsxs("div",{className:"flex gap-2 justify-end",children:[t.jsx("button",{onClick:n,className:"px-3 py-1.5 rounded",style:{fontSize:"12px",color:"#6B7280",background:"#F0F0ED"},children:"Cancel"}),t.jsx("button",{onClick:()=>{o(e,s),n()},className:"px-3 py-1.5 rounded font-medium",style:{fontSize:"12px",color:"#FFFFFF",background:"#2DD4A8"},children:"Apply"})]})]})}function bd({menu:e,onClose:r}){var g;const n=C(h=>h.model),o=C(h=>h.selectElement),a=C(h=>h.addElement),s=C(h=>h.moveElementToPackage),i=C(h=>h.createPackage),l=C(h=>h.renamePackage),c=C(h=>h.deletePackage),d=C(h=>h.deleteModelElement),[u,m]=p.useState(null),b=p.useRef(null);if(p.useEffect(()=>{const h=y=>{b.current&&!b.current.contains(y.target)&&r()};return document.addEventListener("mousedown",h),()=>document.removeEventListener("mousedown",h)},[r]),!n)return null;let v="",w=[];if(e.type==="element"&&e.elementId){const h=n.elements[e.elementId];if(!h)return null;v=h.name;const y=!(((g=n.registries)==null?void 0:g.kinds)??[]).some(N=>N.name===h.kind);w=[{label:"View details",action:()=>o(h.id)},{label:"Move to package…",action:()=>{const N=window.prompt("Move to which package? (qualified name, e.g. Plant::Hydraulics)",h.package||"");N!==null&&Se(s(h.id,N.trim()))}},{label:"Group in new package…",action:()=>{const N=yr(n,h),R=window.prompt(N?`Name the group inside ${N.split("::").pop()}`:"Name the group");if(!(R!=null&&R.trim()))return;const A=`${N}::${R.trim()}`;i(R.trim(),N).then(async T=>{if(!T.success){window.alert(T.error??"The package could not be created.");return}return await $i(A),Se(s(h.id,A))})}},...gr(n,h).length>0?[{label:"Move into group…",action:()=>{var T;const N=yr(n,h),R=gr(n,h),A=window.prompt(`Move into which group? (${R.join(", ")})`,((T=h.attributes)==null?void 0:T.elementPackage)??R[0]??"");A!=null&&A.trim()&&Se(s(h.id,`${N}::${A.trim()}`))}}]:[],{label:"Copy ID",action:()=>{var N;return(N=navigator.clipboard)==null?void 0:N.writeText(h.id)}},{label:"Delete element…",danger:!0,action:()=>{window.confirm(`Delete “${h.name}”?
|
|
4043
4043
|
|
|
4044
|
-
All incoming and outgoing relationships will also be deleted. This cannot be undone.`)&&d(h.id).then(
|
|
4044
|
+
All incoming and outgoing relationships will also be deleted. This cannot be undone.`)&&d(h.id).then(N=>{N.success||window.alert(N.error??"The element could not be deleted.")})}},...y?[{label:"⚠ Change Type…",action:()=>m({elementId:h.id,currentKind:h.kind})}]:[]]}else if(e.type==="folder"&&e.packageName&&e.kind){const h=e.packageName;v=`Package: ${h.split("::").pop()}`,w=[{label:"Add Element here",action:()=>{const y=window.prompt("Enter element name:");y&&a(e.kind,y,h)}},{label:"New Package…",action:()=>{const y=window.prompt("Enter package name:");y&&Se(i(y.trim(),h))}},{label:"Rename Package…",action:()=>{const y=window.prompt("Enter new package name:",h.split("::").pop()??"");y&&Se(l(h,y.trim()))}},{label:"Delete Package (keep contents)",danger:!0,action:()=>{window.confirm(`Remove the package "${h}"?
|
|
4045
4045
|
|
|
4046
|
-
Everything it declares moves into the enclosing package. Qualified names that refer to it will need updating by hand.`)&&ve(c(h))}}]}else e.type==="kind"&&e.kind&&(v=`Category: ${e.kind}`,w=[{label:"Add Element",action:()=>{const h=window.prompt("Enter element name:");h&&a(e.kind,h,"")}},{label:"New Package…",action:()=>{const h=window.prompt("Enter package name:");h&&ve(i(h.trim()))}}]);return w.length?t.jsxs(t.Fragment,{children:[t.jsxs("div",{ref:b,className:"fixed z-50 rounded-lg overflow-hidden py-1",style:{left:e.x,top:e.y,background:f.surface,border:`1px solid ${f.border}`,boxShadow:"0 4px 16px rgba(0,0,0,0.12)",minWidth:"220px"},children:[t.jsx("div",{className:"px-3 py-1.5 font-bold truncate bg-slate-50",style:{color:f.primary,fontSize:I.xs,borderBottom:`1px solid ${f.border}`},children:v.toUpperCase()}),w.map((h,y)=>t.jsx("div",{className:"px-3 py-2 cursor-pointer transition-colors",style:{color:h.danger?"#DC2626":f.secondary,fontSize:I.explorer.item},onMouseEnter:B=>B.currentTarget.style.background="#F0F0ED",onMouseLeave:B=>B.currentTarget.style.background="transparent",onClick:()=>{h.action(),u||r()},children:h.label},y))]}),u&&t.jsx(yd,{elementId:u.elementId,currentKind:u.currentKind,onClose:()=>{m(null),r()}})]}):null}function Bn({nodes:e,level:r,expanded:n,toggleExpand:o,selectedElementId:a,selectElement:s,selectedElementIds:i,toggleElementSelection:l,violationCounts:c,baseColor:d,onContextMenu:u,onDragStart:m,onDrop:b,isUndefined:v}){return t.jsx(t.Fragment,{children:e.map(w=>{if(w.type==="folder"){const g=n.has(w.id);return t.jsxs("div",{style:{marginLeft:r>0?"16px":"0"},draggable:!0,onDragStart:h=>m(h,w),onDragOver:h=>h.preventDefault(),onDrop:h=>b(h,w.id.replace("f:","")),children:[t.jsxs("div",{className:"flex items-center gap-1.5 px-2 py-1 cursor-pointer select-none",style:{borderRadius:"4px",margin:"0 4px"},onMouseEnter:h=>h.currentTarget.style.background="#F0F0ED",onMouseLeave:h=>h.currentTarget.style.background="transparent",onClick:()=>o(w.id),onContextMenu:h=>u(h,"folder",w.id),children:[t.jsx(ke,{expanded:g,size:12,color:f.muted}),t.jsx(Re,{open:g,color:d}),t.jsx("span",{className:"font-medium flex-1 truncate",style:{color:f.secondary,fontSize:I.explorer.kind},children:w.name})]}),g&&t.jsx(Bn,{nodes:w.children,level:r+1,expanded:n,toggleExpand:o,selectedElementId:a,selectElement:s,selectedElementIds:i,toggleElementSelection:l,violationCounts:c,baseColor:d,onContextMenu:u,onDragStart:m,onDrop:b,isUndefined:v})]},w.id)}else{const g=w.element,h=a===g.id,y=i.has(g.id),B=c.get(g.id)||0,N=ce[g.layer]||d;return t.jsxs(p.Fragment,{children:[t.jsxs("div",{className:"group flex items-center gap-1.5 px-2 py-1 cursor-pointer",style:{borderRadius:"4px",margin:"0 4px",marginLeft:(r>0?16:0)+20+"px",background:y?"#FFF3CD":h?f.accent+"18":"transparent",fontWeight:h||y?500:400},draggable:!0,onDragStart:D=>m(D,{type:"element",element:g,id:g.id,name:g.name,children:[]}),onMouseEnter:D=>{!h&&!y&&(D.currentTarget.style.background="#F0F0ED")},onMouseLeave:D=>{D.currentTarget.style.background=y?"#FFF3CD":h?f.accent+"18":"transparent"},onClick:D=>{D.metaKey||D.ctrlKey||D.shiftKey?(D.preventDefault(),l(g.id)):s(g.id)},onContextMenu:D=>u(D,"element",g.id),children:[t.jsx("input",{type:"checkbox",checked:y,onChange:D=>{D.stopPropagation(),l(g.id)},onClick:D=>D.stopPropagation(),className:"flex-shrink-0",style:{width:"12px",height:"12px",cursor:"pointer",opacity:y?1:0,transition:"opacity 120ms",accentColor:"#2DD4A8"},onMouseEnter:D=>{D.currentTarget.style.opacity="1"},onMouseLeave:D=>{D.currentTarget.style.opacity=y?"1":"0"}}),t.jsx(xt,{color:v?"#F59E0B":N}),t.jsx(nl,{element:g,selected:h}),v&&t.jsx("span",{title:`Kind "${g.kind}" is not defined in the ontology`,style:{color:"#F59E0B",fontSize:"12px",flexShrink:0},children:"⚠"}),B>0&&t.jsx("span",{className:"px-1 py-0.5 rounded-full",style:{background:"#FEF2F2",color:"#DC2626",fontSize:I.explorer.count,fontWeight:600,minWidth:"16px",textAlign:"center"},children:B})]}),w.children.length>0&&t.jsx(Bn,{nodes:w.children,level:r+1,expanded:n,toggleExpand:o,selectedElementId:a,selectElement:s,selectedElementIds:i,toggleElementSelection:l,violationCounts:c,baseColor:d,onContextMenu:u,onDragStart:m,onDrop:b,isUndefined:v})]},g.id)}})})}function xd(e,r,n){return e.endsWith("View")||e.endsWith("Viewpoint")||r==="viewpoints"||r==="views"||n==="viewpoints"||n==="views"}function bd(e,r,n){return xd(e,r,n)||e==="ItemDefinition"}function vd(e,r,n){return!n.has(e.kind)&&mo(e,{kinds:r})!==void 0}function wd(e,r){var a;const n=new Map,o=new Map;for(const s of r)for(const i of s.layers)o.has(i.id)||o.set(i.id,i);for(const s of e){const i=((a=s.namespace)==null?void 0:a[0])??s.layer;if(!i||i==="unknown")continue;let l=n.get(i);if(!l){const c=o.get(i);l={id:i,label:(c==null?void 0:c.label)??Gn(i),color:(c==null?void 0:c.color)??ce[i]??"#6B7280",kinds:[]},n.set(i,l)}l.kinds.includes(s.name)||l.kinds.push(s.name)}return[...n.values()]}function kd(e){var n;const r={};for(const o of e)r[o.name]=((n=o.namespace)==null?void 0:n[0])??o.layer;return r}function Sd(e){var n;const r={};for(const o of e)r[o.name]=(n=o.namespace)==null?void 0:n[1];return r}function Gn(e){return e.split(/[_-]/).map(r=>r.charAt(0).toUpperCase()+r.slice(1)).join(" ")}function Cd(e,r){const n={StateMachine:"State Machine",ModeState:"Mode State",BehaviorProperty:"Behavioral Constraint",AssumeProperty:"Assumption",GuaranteeProperty:"Guarantee"};if(n[e])return r===1?n[e]:n[e]+"s";const o=e.replace(/([a-z0-9])([A-Z])/g,"$1 $2");return r===1||/(?:ss|Data|Status)$/i.test(o)||o.endsWith("s")?o:o+"s"}const Fr=["documents","assets","templates","analyses","adrs","reviews"];function Ed(e,r){const n=`${e} ${r??""}`.toLowerCase();return/(review|approval)/.test(n)?"reviews":/(adr|decision)/.test(n)?"adrs":/(template|pattern)/.test(n)?"templates":/(analysis|notebook|worksheet|matrix)/.test(n)?"analyses":/(asset|capture|image|media|file)/.test(n)?"assets":"documents"}function jd(e,r,n,o,a=[],s){var C,k;const i=r.toLowerCase(),l=new Set(["views","viewpoints","manifest"]),c=kd(n),d=Sd(n),u=wd(n,o).filter(T=>!l.has(T.id)),m=new Set(u.map(T=>T.id)),b=new Map;for(const T of e){if(s&&!s.has(T.kind))continue;const z=c[T.kind]??T.layer,_=d[T.kind];bd(T.kind,z,_)||i&&!T.name.toLowerCase().includes(i)&&!T.kind.toLowerCase().includes(i)||b.set(T.id,T)}const v=new Map;for(const T of b.values())v.set(T.id,{id:T.id,name:T.name,type:"element",element:T,children:[]});const w=Wn(b.values()),g=[];for(const T of v.values()){const z=(C=T.element)==null?void 0:C.owner,_=(z?v.get(z):void 0)??(T.element?v.get(((k=Hn(T.element,w))==null?void 0:k.id)??""):void 0);_&&_!==T?_.children.push(T):g.push(T)}const h=T=>{T.sort((z,_)=>z.type!==_.type?z.type==="folder"?-1:1:z.name.localeCompare(_.name)),T.forEach(z=>h(z.children))};for(const T of v.values())h(T.children);const y=T=>{var j,L,E,O;const z=(L=(j=n.find(V=>V.name===T))==null?void 0:j.namespace)==null?void 0:L[0];let _=T;for(;;){const V=n.find($=>$.name===_);if(!V||V.isAbstract||!V.superType||((O=(E=n.find($=>$.name===V.superType))==null?void 0:E.namespace)==null?void 0:O[0])!==z)return _;_=V.superType}},B=(T,z,_)=>{var E;const j=new Map;for(const O of T){const V=O.element.kind,U=_==="artifacts"?Ed(V,(E=n.find(K=>K.name===V))==null?void 0:E.superType):d[V]??"";j.has(U)||j.set(U,new Map);const $=j.get(U);$.set(V,[...$.get(V)??[],O])}const L=new Map;for(const[O,V]of j.entries()){const U=new Map;for(const[Y,Q]of V.entries())Q.length===1&&U.set(Y,y(Y));const $=new Map;for(const Y of U.values())$.set(Y,($.get(Y)??0)+1);const K=new Map;for(const[Y,Q]of V.entries()){const ee=U.get(Y),M=ee&&($.get(ee)??0)>1?ee:Y;K.set(M,[...K.get(M)??[],...Q])}const J=new Map;for(const[Y,Q]of K.entries()){const ee=[...Q];h(ee),J.set(Y,ee)}L.set(O,J)}return[...L.entries()].sort(([O],[V])=>_==="artifacts"?Fr.indexOf(O)-Fr.indexOf(V):O.localeCompare(V)).map(([O,V])=>({id:O,label:O?Gn(O):"",color:O?ce[O]??z:z,kinds:V}))},N=[];for(const T of u){const z=[];for(const _ of g){const j=_.element,L=c[j.kind];!L||L!==T.id||z.push(_)}z.length>0&&N.push({group:T,subGroups:B(z,T.color,T.id)})}const D=[],A=[],F=new Set(n.map(T=>T.name));for(const T of g){const z=T.element,_=c[z.kind];_&&m.has(_)||_&&l.has(_)||(vd(z,n,F)?D.push(T):A.push(T))}if(D.length>0){const T="#64748B";N.push({group:{id:"standard-sysml-diagram-elements",label:"Other — SysML Diagram Elements",color:T,kinds:[]},subGroups:B(D,T).map(z=>({...z,id:"diagram-elements",label:"Diagram Elements"}))})}if(A.length>0){const T="#F59E0B";N.push({group:{id:"undefined",label:"Undefined — Not in Ontology",color:T,kinds:[]},subGroups:B(A,T).map(z=>({...z,id:"undefined-elements",label:"Elements"}))})}return N}function Dd(e,r=""){const n=Wn(e),o=new Map;for(const l of e){const c=Hn(l,n);c&&o.set(c.id,[...o.get(c.id)??[],l])}const a=r.trim().toLowerCase(),s=l=>!a||l.definition.name.toLowerCase().includes(a)||l.definition.kind.toLowerCase().includes(a)||l.usages.some(c=>c.name.toLowerCase().includes(a)),i=new Map;for(const l of new Set(n.values())){const c={definition:l,usages:(o.get(l.id)??[]).sort((u,m)=>u.name.localeCompare(m.name))};if(!s(c))continue;const d=l.layer&&l.layer!=="unknown"?l.layer:"other";i.set(d,[...i.get(d)??[],c])}return[...i.entries()].sort(([l],[c])=>{const d=u=>{const m=Te.indexOf(u);return m<0?Number.MAX_SAFE_INTEGER:m};return d(l)-d(c)||l.localeCompare(c)}).map(([l,c])=>({layer:l,definitions:c.sort((d,u)=>d.definition.name.localeCompare(u.definition.name))}))}function Bd({searchTerm:e,selectedElementId:r,onSelect:n,onContextMenu:o}){const a=S(d=>d.model),[s,i]=p.useState(new Set),l=p.useMemo(()=>Dd(Object.values((a==null?void 0:a.elements)??{}),e),[a,e]),c=d=>i(u=>{const m=new Set(u);return m.has(d)?m.delete(d):m.add(d),m});return l.length===0?t.jsx("div",{className:"flex-1 flex items-center justify-center px-4 text-center",style:{color:f.faint,fontSize:"12px",lineHeight:1.6},children:e?"No definition matches that search.":"This model declares no definitions of its own. The ontology’s types are in the Ontology tab."}):t.jsx("div",{className:"flex-1 overflow-y-auto py-1",style:{fontSize:I.explorer.item},children:l.map(({layer:d,definitions:u})=>{const m=!s.has(`l:${d}`),b=ce[d]??f.muted;return t.jsxs("div",{className:"mb-0.5",children:[t.jsxs("div",{className:"flex items-center gap-1.5 px-2 py-1.5 cursor-pointer select-none",style:{margin:"0 4px",borderRadius:"4px"},onClick:()=>c(`l:${d}`),children:[t.jsx(ke,{expanded:m,size:13,color:b}),t.jsx(Re,{open:m,color:b}),t.jsx("span",{className:"font-semibold flex-1 truncate",style:{color:f.primary,fontSize:I.explorer.group},children:Le[d]??Gn(d)}),t.jsx(Ht,{count:u.length,color:b,title:`${u.length} definitions`})]}),m&&u.map(({definition:v,usages:w})=>{const g=!s.has(v.id);return t.jsxs("div",{children:[t.jsxs("div",{className:"flex items-center gap-1.5 py-1 cursor-pointer select-none",style:{paddingLeft:"22px",paddingRight:"8px",borderRadius:"4px",margin:"0 4px",background:v.id===r?"#EEF2FF":"transparent"},onClick:()=>{w.length&&c(v.id),n(v.id)},onContextMenu:h=>o(h,"element",v.id),children:[w.length?t.jsx(ke,{expanded:g,size:12}):t.jsx("span",{style:{width:"12px",display:"inline-block"}}),t.jsx(xt,{color:b}),t.jsx("span",{className:"truncate flex-1",style:{color:f.primary},children:v.name}),t.jsx("span",{style:{color:w.length?f.muted:"#B45309",fontSize:I.explorer.count},children:w.length===0?"unused":`${w.length}×`})]}),g&&w.map(h=>t.jsxs("div",{className:"flex items-center gap-1.5 py-1 cursor-pointer select-none",style:{paddingLeft:"48px",paddingRight:"8px",borderRadius:"4px",margin:"0 4px",background:h.id===r?"#EEF2FF":"transparent"},onClick:()=>n(h.id),onContextMenu:y=>o(y,"element",h.id),children:[t.jsx(xt,{}),t.jsx("span",{className:"truncate flex-1",style:{color:f.secondary},children:h.name}),t.jsx("span",{style:{color:f.faint,fontSize:I.explorer.count},children:h.construct})]},h.id))]},v.id)})]},d)})})}function Fd({searchTerm:e,selectedElementId:r,onSelect:n,onContextMenu:o}){const a=S(m=>m.model),s=S(m=>m.availableOntologies),[i,l]=p.useState(new Set),c=p.useMemo(()=>{const m=Object.values((a==null?void 0:a.elements)??{}),b=Eo(s),v=new Map(m.map(h=>[h.id,h])),w=(a==null?void 0:a.relationships)??[],g=Co.map(h=>h.id==="usecases"?{...h,systemOf:y=>Pi(y,v,w,b)}:h);return zi(m,g,e)},[a,s,e]),d=m=>l(b=>{const v=new Set(b);return v.has(m)?v.delete(m):v.add(m),v}),u=(m,b)=>{var g;const v=m.children.length>0,w=!i.has(m.id);return t.jsxs("div",{children:[t.jsxs("div",{className:"flex items-center gap-1.5 py-1 cursor-pointer select-none",style:{paddingLeft:`${8+b*14}px`,paddingRight:"8px",borderRadius:"4px",margin:"0 4px",background:m.element&&m.element.id===r?"#EEF2FF":"transparent"},onClick:()=>{v&&d(m.id),m.element&&n(m.element.id)},onContextMenu:m.element?h=>o(h,"element",m.element.id):void 0,children:[v?t.jsx(ke,{expanded:w,size:12}):t.jsx("span",{style:{width:"12px",display:"inline-block"}}),m.isGroup?t.jsx(Re,{open:w}):t.jsx(xt,{}),t.jsxs("span",{className:"truncate flex-1",style:{color:f.primary},children:[m.name,((g=m.element)==null?void 0:g.isDefinition)&&t.jsx("span",{style:{color:f.muted,fontWeight:600,marginLeft:"5px",fontSize:"0.85em"},children:"def"})]}),!m.isGroup&&t.jsx("span",{style:{color:f.faint,fontSize:I.explorer.count},children:m.kind})]}),w&&m.children.map(h=>u(h,b+1))]},m.id)};return c.length===0?t.jsx("div",{className:"flex-1 flex items-center justify-center px-4 text-center",style:{color:f.faint,fontSize:"12px"},children:e?"Nothing matches that search.":"No composition to show yet."}):t.jsx("div",{className:"flex-1 overflow-y-auto py-1",style:{fontSize:I.explorer.item},children:c.map(m=>{const b=!i.has(`b:${m.id}`);return t.jsxs("div",{className:"mb-0.5",children:[t.jsxs("div",{className:"flex items-center gap-1.5 px-2 py-1.5 cursor-pointer select-none",style:{margin:"0 4px",borderRadius:"4px"},onClick:()=>d(`b:${m.id}`),children:[t.jsx(ke,{expanded:b,size:13}),t.jsx(Re,{open:b}),t.jsx("span",{className:"font-semibold flex-1",style:{color:f.primary,fontSize:I.explorer.kind},children:m.label}),t.jsx("span",{style:{color:f.faint,fontSize:I.explorer.count},children:m.nodes.length})]}),b&&m.nodes.map(v=>u(v,1))]},m.id)})})}function Ar({searchTerm:e}){var ee;const r=Ce(),n=S(M=>M.model),o=S(M=>M.selectedElementId),a=S(M=>M.selectElement),s=S(M=>M.setActiveView),i=S(M=>M.selectedElementIds),l=S(M=>M.toggleElementSelection),c=S(M=>M.selectAllElements),d=S(M=>M.clearElementSelection),u=S(M=>M.moveElementToPackage),m=S(M=>M.movePackage),b=S(M=>M.validation),v=S(M=>M.availableOntologies),w=S(M=>M.setExplorerTab),g=S(M=>M.setActiveMode),h=S(M=>M.setSelectedOntologyKind),y=((ee=n==null?void 0:n.registries)==null?void 0:ee.kinds)??[],B=p.useCallback(M=>{var P;a(M),s({type:"element-detail",elementId:M});const x=(P=n==null?void 0:n.elements)==null?void 0:P[M];x&&r(Bo(x.shortId??x.id))},[a,s,n,r]),[N,D]=p.useState("catalog"),[A,F]=p.useState(new Set),C=p.useRef(!1),[k,T]=p.useState(null),[z,_]=p.useState(null),[j,L]=p.useState(new Set),E=p.useCallback((M,x)=>{x==null||x.stopPropagation(),F(P=>{const q=new Set(P);return q.has(M)?q.delete(M):q.add(M),q})},[]),O=p.useCallback((M,x,P,q)=>{M.preventDefault(),T({x:M.clientX,y:M.clientY,type:x,elementId:x==="element"?P:void 0,packageName:x==="folder"?P.replace("f:",""):void 0,kind:q||(x==="kind"?P.replace("k:","").split(":").pop():void 0)})},[]),V=p.useMemo(()=>{var M;return n?jd(Object.values(n.elements),e,((M=n.registries)==null?void 0:M.kinds)??[],v,n.packages??[],j.size?j:void 0):[]},[n,e,v,j]);p.useEffect(()=>{if(C.current||V.length===0)return;const M=new Set;for(const{group:x,subGroups:P}of V)for(const q of P)for(const X of q.kinds.keys())M.add(`k:${x.id}:${q.id?`${q.id}:`:""}${X}`);C.current=!0,F(M)},[V]),p.useEffect(()=>{const M=()=>{if(!e.trim())return;const P=new Set;for(const{group:q,subGroups:X}of V){P.add(`g:${q.id}`);for(const ie of X){ie.id&&P.add(`sg:${q.id}:${ie.id}`);for(const oe of ie.kinds.keys())P.add(`k:${q.id}:${ie.id?`${ie.id}:`:""}${oe}`)}}F(P)},x=()=>F(new Set);return window.addEventListener("memo:expand-explorer-search",M),window.addEventListener("memo:collapse-explorer-tree",x),()=>{window.removeEventListener("memo:expand-explorer-search",M),window.removeEventListener("memo:collapse-explorer-tree",x)}},[V,e]);const U=p.useCallback((M,x,P)=>{var q;_({id:x.id,kind:P}),M.dataTransfer.setData("application/memo-node",JSON.stringify({id:x.id,type:x.type,kind:P,name:x.name,elementId:(q=x.element)==null?void 0:q.id,packageName:x.type==="folder"?x.id.replace("f:",""):void 0})),M.dataTransfer.effectAllowed="move"},[]),$=p.useCallback((M,x)=>{(z==null?void 0:z.kind)===x&&(M.preventDefault(),M.dataTransfer.dropEffect="move")},[z]),K=p.useCallback((M,x,P)=>{M.preventDefault(),_(null);try{const q=JSON.parse(M.dataTransfer.getData("application/memo-node"));if(q.kind!==P)return;if(q.type==="element")ve(u(q.elementId,x));else if(q.type==="folder"){if(x===q.packageName||x.startsWith(`${q.packageName}::`))return;ve(m(q.packageName,x))}}catch(q){console.error("Drop error:",q)}},[u,m]),J=p.useMemo(()=>{const M=new Map;if(b)for(const x of b.violations)M.set(x.elementId,(M.get(x.elementId)||0)+1);return M},[b]),Y=p.useMemo(()=>{const M=[],x=P=>{for(const q of P)q.type==="element"&&q.element?M.push(q.element.id):x(q.children)};for(const{subGroups:P}of V)for(const q of P)for(const X of q.kinds.values())x(X);return M},[V]),Q=i.size;return t.jsxs("div",{className:"flex-1 flex flex-col overflow-hidden",children:[t.jsxs("details",{className:"px-3 py-1.5 flex-shrink-0",style:{borderBottom:`1px solid ${f.border}`,fontSize:I.xs},children:[t.jsxs("summary",{style:{cursor:"pointer",color:f.secondary},children:["Filter element types",j.size?` (${j.size})`:""]}),t.jsxs("div",{className:"mt-1 max-h-32 overflow-y-auto",children:[t.jsx("button",{onClick:()=>L(new Set),style:{color:f.accent,fontSize:I.xs},children:"Show all"}),y.filter(M=>!M.isAbstract).sort((M,x)=>M.name.localeCompare(x.name)).map(M=>t.jsxs("label",{className:"flex items-center gap-1 py-0.5",children:[t.jsx("input",{type:"checkbox",checked:!j.size||j.has(M.name),onChange:()=>L(x=>{const P=x.size?new Set(x):new Set(y.filter(q=>!q.isAbstract).map(q=>q.name));return P.has(M.name)?P.delete(M.name):P.add(M.name),P})}),M.label||M.name]},M.name))]})]}),Q>0&&t.jsxs("div",{className:"flex items-center gap-2 px-3 py-1.5 flex-shrink-0",style:{background:"#FFFBEB",borderBottom:"1px solid #FDE68A",fontSize:"12px"},children:[t.jsxs("span",{style:{color:"#92400E",fontWeight:600},children:[Q," selected"]}),t.jsx("span",{style:{color:"#B45309"},children:"— Cmd/Ctrl+click to multi-select"}),t.jsx("button",{onClick:d,className:"ml-auto px-2 py-0.5 rounded",style:{color:"#92400E",background:"#FDE68A",fontSize:"12px",fontWeight:500},children:"Clear"})]}),e&&Y.length>0&&t.jsxs("div",{className:"flex items-center gap-2 px-3 py-1",style:{background:"#F0F9FF",borderBottom:"1px solid #BAE6FD",fontSize:"12px"},children:[t.jsxs("span",{style:{color:"#0369A1"},children:[Y.length," matching"]}),t.jsx("button",{onClick:()=>c(Y),className:"ml-auto px-2 py-0.5 rounded",style:{color:"#0369A1",background:"#BAE6FD",fontSize:"12px",fontWeight:500},children:"Select All"})]}),t.jsx("div",{className:"flex px-2 pt-1.5 pb-1 gap-1 flex-shrink-0",children:["catalog","breakdown","definitions"].map(M=>t.jsx("button",{onClick:()=>D(M),className:"px-2 py-0.5 rounded capitalize",style:{fontSize:"11px",fontWeight:500,...N===M?{background:f.accent,color:"#fff"}:{background:"transparent",color:f.faint}},children:M},M))}),N==="definitions"?t.jsx(Bd,{searchTerm:e,selectedElementId:o,onSelect:B,onContextMenu:O}):N==="breakdown"?t.jsx(Fd,{searchTerm:e,selectedElementId:o,onSelect:B,onContextMenu:O}):t.jsx("div",{className:"flex-1 overflow-y-auto py-1",style:{fontSize:I.explorer.item},children:V.map(({group:M,subGroups:x})=>{const P=`g:${M.id}`,q=A.has(P),X=M.id==="undefined",ie=H=>H.reduce((G,Z)=>G+(Z.type==="element"?1:ie(Z.children)),0),oe=H=>Array.from(H.kinds.values()).reduce((G,Z)=>G+ie(Z),0),R=x.reduce((H,G)=>H+oe(G),0);return t.jsxs("div",{className:"mb-0.5",children:[t.jsxs("div",{className:"flex items-center gap-1.5 px-2 py-1.5 cursor-pointer select-none",style:{margin:"0 4px",borderRadius:"4px",...X?{background:"#FFF3CD"}:{}},onMouseEnter:H=>H.currentTarget.style.background=X?"#FDE68A":"#F0F0ED",onMouseLeave:H=>H.currentTarget.style.background=X?"#FFF3CD":"transparent",onClick:()=>E(P),onContextMenu:H=>O(H,"group",P),children:[t.jsx(ke,{expanded:q,size:14,color:M.color}),X?t.jsx("span",{style:{fontSize:"14px",lineHeight:1,flexShrink:0},children:"⚠"}):t.jsx(Re,{open:q,color:M.color}),t.jsx("span",{className:"font-semibold flex-1 truncate",style:{color:X?"#92400E":f.primary,fontSize:I.explorer.group},children:M.label}),t.jsx("span",{className:"px-1.5 py-0.5 rounded-full",style:{background:M.color+"25",color:M.color,fontSize:I.explorer.count,fontWeight:600,minWidth:"20px",textAlign:"center"},children:R})]}),(()=>{const H=(G,Z,le)=>{const ae=`k:${M.id}:${le?le+":":""}${G}`,me=A.has(ae),Ee=ne=>{var re;for(const Pe of ne){if(Pe.type==="element")return(re=Pe.element)==null?void 0:re.layer;const kt=Ee(Pe.children);if(kt)return kt}},Me=Ee(Z),te=X?"#F59E0B":Me&&ce[Me]||M.color,fe=y.some(ne=>ne.name===G),et=ne=>ne.flatMap(re=>re.type==="element"&&re.element?[re.element.id]:et(re.children)),_e=et(Z);return t.jsxs("div",{style:{marginLeft:"16px"},onDragOver:ne=>$(ne,G),onDrop:ne=>K(ne,"",G),children:[t.jsxs("div",{className:"group flex items-center gap-1.5 px-2 py-1 cursor-pointer select-none",style:{borderRadius:"4px",margin:"0 4px"},onMouseEnter:ne=>ne.currentTarget.style.background="#F0F0ED",onMouseLeave:ne=>ne.currentTarget.style.background="transparent",onClick:()=>E(ae),onContextMenu:ne=>O(ne,"kind",ae,G),children:[t.jsx(ke,{expanded:me,size:12,color:f.muted}),t.jsx(Re,{open:me,color:te}),t.jsxs("span",{className:"font-medium flex-1 truncate",style:{color:X?"#B45309":f.secondary,fontSize:I.explorer.kind},children:[Cd(G,_e.length),X&&t.jsx("span",{style:{color:"#F59E0B",marginLeft:"4px"},children:"·"})]}),t.jsxs("div",{className:"flex max-w-0 items-center gap-1 overflow-hidden opacity-0 invisible pointer-events-none transition-all duration-150 group-hover:max-w-[4.5rem] group-hover:opacity-100 group-hover:visible group-hover:pointer-events-auto",children:[t.jsx("button",{onClick:ne=>{ne.stopPropagation(),c(_e)},title:"Select all elements of this type","aria-label":"Select all elements of this type",className:"flex h-8 w-8 shrink-0 items-center justify-center rounded-md hover:bg-slate-100",style:{color:f.faint,fontSize:"17px"},children:"☑"}),fe&&ue("ontology")&&t.jsx("button",{onClick:ne=>{ne.stopPropagation();for(const re of v)for(const Pe of re.layers)if(Pe.kinds.some(kt=>kt.name===G)){h(G),w("ontologies"),g("ontology"),s({type:"ontology-detail",packageName:re.name,layerId:Pe.id});return}},title:"View type in Ontology","aria-label":"View type in Ontology",className:"flex h-8 w-8 shrink-0 items-center justify-center rounded-md hover:bg-slate-100",style:{color:f.faint,fontSize:"17px"},children:"⬡"})]}),t.jsx(Ht,{count:_e.length,color:te,title:`${_e.length} ${_e.length===1?"element":"elements"}`})]}),me&&t.jsx(Bn,{nodes:Z,level:0,expanded:A,toggleExpand:E,selectedElementId:o,selectElement:B,selectedElementIds:i,toggleElementSelection:l,violationCounts:J,baseColor:te,onContextMenu:(ne,re,Pe)=>O(ne,re,Pe,G),onDragStart:(ne,re)=>U(ne,re,G),onDrop:(ne,re)=>K(ne,re,G),isUndefined:X})]},G)};return q?x.map(G=>{if(!G.id)return t.jsx("div",{children:Array.from(G.kinds.entries()).map(([me,Ee])=>H(me,Ee,""))},"__root");const Z=`sg:${M.id}:${G.id}`,le=A.has(Z),ae=oe(G);return t.jsxs("div",{style:{marginLeft:"16px"},children:[t.jsxs("div",{className:"flex items-center gap-1.5 px-2 py-1 cursor-pointer select-none",style:{borderRadius:"4px",margin:"0 4px"},onMouseEnter:me=>me.currentTarget.style.background="#F0F0ED",onMouseLeave:me=>me.currentTarget.style.background="transparent",onClick:()=>E(Z),children:[t.jsx(ke,{expanded:le,size:13,color:G.color}),t.jsx(Re,{open:le,color:G.color}),t.jsx("span",{className:"font-semibold flex-1 truncate",style:{color:f.primary,fontSize:I.explorer.kind},children:G.label}),t.jsx("span",{className:"px-1.5 py-0.5 rounded-full",style:{background:G.color+"25",color:G.color,fontSize:I.explorer.count,fontWeight:600,minWidth:"20px",textAlign:"center"},children:ae})]}),le&&Array.from(G.kinds.entries()).map(([me,Ee])=>H(me,Ee,G.id))]},G.id)}):null})()]},M.id)})}),k&&t.jsx(gd,{menu:k,onClose:()=>T(null)})]})}function Ad({diagram:e}){const r=e.viewKind?Kn[e.viewKind]:void 0;if(r)return t.jsx("span",{className:"px-1.5 py-0.5 rounded font-semibold",style:{background:r.color+"20",color:r.color,fontSize:I.badge},title:r.fullName,children:r.label});const n=["afd","ofd","ffd"].includes(e.diagramType.toLowerCase())?Vi(e):e.diagramType,o=$e[n];return o?t.jsx("span",{className:"px-1.5 py-0.5 rounded font-semibold",style:{background:o.color+"20",color:o.color,fontSize:I.badge},title:o.fullName,children:o.code}):null}function Nd({viewpointId:e,onClose:r}){const n=S(d=>d.createDiagram),[o,a]=p.useState("Untitled"),[s,i]=p.useState("bdd"),l=p.useRef(null);p.useEffect(()=>{const d=u=>{l.current&&!l.current.contains(u.target)&&r()};return document.addEventListener("mousedown",d),()=>document.removeEventListener("mousedown",d)},[r]);const c=()=>{o.trim()&&(n({name:o.trim(),diagramType:s,viewpointId:e}),r())};return t.jsxs("div",{ref:l,className:"fixed z-50 rounded-lg overflow-hidden py-3 px-4",style:{top:"50%",left:"50%",transform:"translate(-50%, -50%)",background:"#FFFFFF",border:"1px solid #E5E7EB",boxShadow:"0 8px 32px rgba(0,0,0,0.16)",minWidth:"300px"},children:[t.jsx("div",{className:"font-semibold mb-3",style:{color:f.primary,fontSize:"13px"},children:"New Model View"}),t.jsx("label",{className:"block mb-1",style:{fontSize:I.xs,color:f.secondary},children:"Name"}),t.jsx("input",{autoFocus:!0,value:o,onChange:d=>a(d.target.value),onKeyDown:d=>{d.key==="Enter"&&c(),d.key==="Escape"&&r()},className:"w-full px-3 py-2 rounded-lg mb-3 focus:outline-none",style:{background:"#F9F9F8",border:"1px solid #E5E7EB",color:f.primary,fontSize:"13px"}}),t.jsx("label",{className:"block mb-1",style:{fontSize:I.xs,color:f.secondary},children:"Type"}),t.jsx("select",{value:s,onChange:d=>i(d.target.value),className:"w-full px-3 py-2 rounded-lg mb-4 focus:outline-none",style:{background:"#F9F9F8",border:"1px solid #E5E7EB",color:f.primary,fontSize:"13px"},children:Object.entries($e).map(([d,u])=>t.jsxs("option",{value:d,children:[u.fullName," (",u.code,")"]},d))}),t.jsxs("div",{className:"flex gap-2 justify-end",children:[t.jsx("button",{onClick:r,className:"px-3 py-1.5 rounded",style:{fontSize:"12px",color:f.secondary,background:"#F0F0ED"},children:"Cancel"}),t.jsx("button",{onClick:c,className:"px-3 py-1.5 rounded font-medium",style:{fontSize:"12px",color:"#FFFFFF",background:f.accent},children:"Create"})]})]})}const Td=new Set(["__unassigned","__model"]),Ne="__uncategorized";function Ao(e){const r=n=>n.explorerLane==="architecture"?0:n.explorerLane==="assurance"?1:2;return e.slice().sort((n,o)=>{const a=r(n)-r(o);if(a!==0)return a;if(r(n)<2){const s=(n.explorerOrder??Number.MAX_SAFE_INTEGER)-(o.explorerOrder??Number.MAX_SAFE_INTEGER);if(s!==0)return s}return n.label.localeCompare(o.label)})}function No(e){if(e.length<2)return e;const r=e[0].split(" ");if(r.length<2)return e;const n=r[0];return e.every(a=>{const s=a.split(" ");return s.length>1&&s[0]===n})?e.map(a=>a.slice(n.length+1)):e}function Rd(e){const r=Ao(((e==null?void 0:e.viewpoints)??[]).filter(o=>!Td.has(o.id))),n=new Set;for(const o of r)for(const a of zt(e,o.id))n.add(a.id);return{viewpoints:r,uncategorized:((e==null?void 0:e.diagrams)??[]).filter(o=>!n.has(o.id))}}function To(e){const r=new Map(e.map(s=>[s.id,s])),n=s=>{var l;const i=new Set([s.id]);for(let c=s.parentId;c;c=(l=r.get(c))==null?void 0:l.parentId){if(i.has(c))return;i.add(c)}return s.parentId&&r.has(s.parentId)?s.parentId:void 0},o=new Map,a=[];for(const s of e){const i=n(s);i?o.set(i,[...o.get(i)??[],s]):a.push(s)}return{rootViewpoints:a,viewpointChildren:o}}function Id(e){const r=[];for(const o of e){let a=r,s="",i;for(const l of(o.package??"").split("::").filter(Boolean)){s=s?`${s}::${l}`:l;let c=a.find(d=>d.id===s);c||(c={id:s,name:l,children:[],diagrams:[]},a.push(c)),i=c,a=c.children}if(a===r){let l=r.find(c=>c.id==="__unpackaged");l||(l={id:"__unpackaged",name:"No owning package",children:[],diagrams:[]},r.push(l)),l.diagrams.push(o)}else i.diagrams.push(o)}const n=o=>{o.sort((a,s)=>a.name.localeCompare(s.name)),o.forEach(a=>{a.diagrams.sort((s,i)=>s.name.localeCompare(i.name)),n(a.children)})};return n(r),r}function Md({searchTerm:e}){const r=S(j=>j.model),n=S(j=>j.activeView),o=S(j=>j.setActiveView),a=S(j=>j.selectViewpoint),s=S(j=>j.deleteDiagram),i=S(j=>j.createPackage),l=S(j=>j.moveElementToPackage),c=Ce(),d=j=>{if(!j.elementId)return;const L=window.prompt(`Move “${j.name}” into which package? (qualified name, e.g. Views::Safety)`,j.package??"");L!==null&&ve(l(j.elementId,L.trim()))},u=j=>{const L=zt(r,j).map(O=>O.package).filter(O=>!!O);if(L.length===0)return;const E=new Map;for(const O of L)E.set(O,(E.get(O)??0)+1);return[...E.entries()].sort((O,V)=>V[1]-O[1]||O[0].length-V[0].length||O[0].localeCompare(V[0]))[0][0]},[m,b]=p.useState(new Set),[v,w]=p.useState(null),g=j=>{b(L=>{const E=new Set(L);return E.has(j)?E.delete(j):E.add(j),E})},{viewpoints:h,uncategorized:y}=p.useMemo(()=>Rd(r),[r]),B=p.useMemo(()=>{const j=No(h.map(L=>L.label));return new Map(h.map((L,E)=>[L.id,j[E]]))},[h]),{rootViewpoints:N,viewpointChildren:D}=p.useMemo(()=>To(h),[h]),A=j=>{if(!e)return j;const L=e.toLowerCase();return j.filter(E=>E.name.toLowerCase().includes(L)||E.diagramType.toLowerCase().includes(L))},F=n.type==="diagram"?n.diagramId:null,C=A(y),k=p.useMemo(()=>{const j=new Map;for(const L of C){const O=[...(L.elementIds??[]).map(V=>{var U;return(U=r==null?void 0:r.elements[V])==null?void 0:U.layer}).filter(V=>!!V)].sort((V,U)=>{const $=Te.indexOf(V),K=Te.indexOf(U);return($<0?Number.MAX_SAFE_INTEGER:$)-(K<0?Number.MAX_SAFE_INTEGER:K)})[0]??"other";j.set(O,[...j.get(O)??[],L])}return[...j.entries()].sort(([L],[E])=>{const O=Te.indexOf(L),V=Te.indexOf(E);return(O<0?Number.MAX_SAFE_INTEGER:O)-(V<0?Number.MAX_SAFE_INTEGER:V)})},[C,r==null?void 0:r.elements]),T=(j,L)=>j.map(E=>t.jsx(_d,{diag:E,isSelected:F===E.id,onSelect:()=>{o({type:"diagram",diagramId:E.id}),a(L==="__model"?null:L),c(Fo(E.diagramType,E.shortId??E.id))},onDelete:E.auto?void 0:()=>s(E.id),onMoveToPackage:E.elementId?()=>d(E):void 0},E.id)),z=(j,L)=>{const E=Id(j),O=($,K=0)=>t.jsxs("div",{style:{marginLeft:K?"12px":0},children:[t.jsx("div",{className:"px-2 py-1 font-semibold",style:{color:f.muted,fontSize:I.xs},children:$.name}),t.jsx("div",{style:{marginLeft:"8px"},children:T($.diagrams,L)}),$.children.map(J=>O(J,K+1))]},$.id);if(j.some($=>$.package))return E.map($=>O($));const V=$=>$.group;if(!j.some($=>V($)))return T(j,L);const U=new Map;for(const $ of j){const K=V($)||"Other";U.set(K,[...U.get(K)??[],$])}return[...U.entries()].sort(([$],[K])=>$.localeCompare(K)).map(([$,K])=>t.jsxs("div",{style:{margin:"5px 4px 2px"},children:[t.jsx("div",{className:"px-2 py-1 font-semibold",style:{color:f.muted,fontSize:I.xs},children:$}),t.jsx("div",{style:{marginLeft:"8px"},children:T(K,L)})]},$))},_=(j,L)=>{var J;const E=D.get(j.id)??[],O=m.has(j.id),V=(J=j.visibleLayers)!=null&&J[0]&&ce[j.visibleLayers[0]]||f.muted,U=zt(r,j.id),$=A(U),K=(function Y(Q){return zt(r,Q.id).length+(D.get(Q.id)??[]).reduce((ee,M)=>ee+Y(M),0)})(j);return t.jsxs("div",{className:"mb-0.5",style:{marginLeft:L?"14px":0},children:[t.jsxs("div",{className:"flex items-center gap-1.5 px-2 py-1.5 cursor-pointer select-none",style:{borderRadius:"4px",margin:"0 4px"},onMouseEnter:Y=>Y.currentTarget.style.background="#F0F0ED",onMouseLeave:Y=>Y.currentTarget.style.background="transparent",onClick:()=>{a(j.id),g(j.id)},children:[t.jsx(ke,{expanded:O,size:14,color:V}),t.jsx(Re,{open:O,color:V}),t.jsx("span",{className:"font-semibold flex-1 truncate",style:{color:f.primary,fontSize:I.explorer.group},children:B.get(j.id)??j.label}),t.jsx(Ht,{count:K,color:V,title:E.length?`${U.length} views here, ${K} including the viewpoints it frames`:`${U.length} views`})]}),O&&t.jsxs("div",{style:{marginLeft:"16px"},children:[E.map(Y=>_(Y,L+1)),z($,j.id),t.jsxs("button",{className:"flex items-center gap-1 px-2 py-1 w-full text-left",style:{borderRadius:"4px",margin:"2px 4px",color:f.accent,fontSize:I.xs,background:"transparent"},onMouseEnter:Y=>Y.currentTarget.style.background=f.accent+"12",onMouseLeave:Y=>Y.currentTarget.style.background="transparent",onClick:()=>w(j.id),children:[t.jsx("span",{style:{fontSize:"14px",lineHeight:1},children:"+"})," New View"]}),t.jsxs("button",{className:"flex items-center gap-1 px-2 py-1 w-full text-left",style:{borderRadius:"4px",margin:"2px 4px",color:f.accent,fontSize:I.xs,background:"transparent"},onMouseEnter:Y=>Y.currentTarget.style.background=f.accent+"12",onMouseLeave:Y=>Y.currentTarget.style.background="transparent",onClick:()=>{const Y=u(j.id),Q=window.prompt(Y?`New package under ${Y}`:"New SysML package name");Q!=null&&Q.trim()&&ve(i(Q.trim(),Y))},children:[t.jsx("span",{style:{fontSize:"14px",lineHeight:1},children:"+"})," New Package"]})]})]},j.id)};return t.jsxs("div",{className:"flex-1 overflow-y-auto py-1",style:{fontSize:I.explorer.item},children:[N.map(j=>_(j,0)),C.length>0&&t.jsxs("div",{className:"mb-0.5",children:[t.jsxs("div",{className:"flex items-center gap-1.5 px-2 py-1.5 cursor-pointer select-none",style:{borderRadius:"4px",margin:"0 4px"},onMouseEnter:j=>j.currentTarget.style.background="#F0F0ED",onMouseLeave:j=>j.currentTarget.style.background="transparent",onClick:()=>{a(null),g(Ne)},children:[t.jsx(ke,{expanded:m.has(Ne),size:14,color:f.muted}),t.jsx(Re,{open:m.has(Ne),color:f.muted}),t.jsx("span",{className:"font-semibold flex-1",style:{color:f.primary,fontSize:I.explorer.group},children:"Uncategorized"}),t.jsx("span",{title:"These views conform to no authored viewpoint. Bind an authored view with viewpointDefinition to file it.",style:{color:f.faint,fontSize:I.badge},children:"no viewpoint"}),t.jsx(Ht,{count:C.length,color:f.muted,title:`${C.length} views`})]}),m.has(Ne)&&t.jsxs("div",{style:{marginLeft:"16px"},children:[C.some(j=>j.group)?z(C,Ne):k.map(([j,L])=>t.jsxs("div",{style:{margin:"5px 4px 2px"},children:[t.jsx("div",{className:"px-2 py-1 font-semibold",style:{color:ce[j]??f.muted,fontSize:I.xs,borderLeft:`3px solid ${ce[j]??f.border}`},children:Le[j]??`${j.charAt(0).toUpperCase()}${j.slice(1)}`}),t.jsx("div",{style:{marginLeft:"8px"},children:T(L,Ne)})]},j)),t.jsxs("button",{className:"flex items-center gap-1 px-2 py-1 w-full text-left",style:{borderRadius:"4px",margin:"2px 4px",color:f.accent,fontSize:I.xs,background:"transparent"},onMouseEnter:j=>j.currentTarget.style.background=f.accent+"12",onMouseLeave:j=>j.currentTarget.style.background="transparent",onClick:()=>w("__model"),children:[t.jsx("span",{style:{fontSize:"14px",lineHeight:1},children:"+"})," New View"]})]})]}),v!==null&&t.jsx(Nd,{viewpointId:v,onClose:()=>w(null)})]})}function _d({diag:e,isSelected:r,onSelect:n,onDelete:o,onMoveToPackage:a}){var c;const[s,i]=p.useState(!1);$e[e.diagramType];const l=((c=e.elementIds)==null?void 0:c.length)??0;return t.jsxs("div",{className:"flex items-center gap-2 px-2 py-1 cursor-pointer group",style:{borderRadius:"4px",margin:"0 4px",background:r?f.accent+"18":s?"#F0F0ED":"transparent",fontSize:I.explorer.item},onMouseEnter:()=>i(!0),onMouseLeave:()=>i(!1),onClick:n,title:e.description,children:[t.jsx(Ad,{diagram:e}),e.auto&&!e.sourceFile&&t.jsx("span",{className:"px-1 py-0.5 rounded",style:{background:"#F0F0ED",color:f.faint,fontSize:I.badge,fontWeight:600},children:"AUTO"}),t.jsx("span",{className:"flex-1",style:{minWidth:0},children:t.jsxs("span",{className:"truncate block",style:{color:r?f.accentDark:f.primary},children:[t.jsxs("span",{style:{color:f.muted},children:["[",e.shortId??e.id,"] "]}),e.name]})}),l>0&&t.jsx("span",{className:"px-1.5 py-0.5 rounded-full",style:{background:"#F0F0ED",color:f.muted,fontSize:I.explorer.count,fontWeight:600,minWidth:"18px",textAlign:"center"},children:l}),a&&s&&t.jsx("button",{onClick:d=>{d.stopPropagation(),a()},title:"Move this view into a package","aria-label":`Move ${e.name} into a package`,style:{background:"none",border:"none",cursor:"pointer",color:f.muted,fontSize:"12px",padding:"0 2px",lineHeight:1},children:"⌸"}),o&&s&&t.jsx("button",{onClick:d=>{d.stopPropagation(),o()},title:"Delete diagram",style:{background:"none",border:"none",cursor:"pointer",color:"#DC2626",fontSize:"12px",padding:"0 2px",lineHeight:1},children:"×"})]})}function Pd(){const e=S(D=>D.setActiveView),r=S(D=>D.activeView),n=S(D=>D.dhfDocuments),o=S(D=>D.addDhfDocument),a=S(D=>D.removeDhfDocument),s=S(D=>D.dhfSettings),[i,l]=p.useState(new Set(Ke.map(D=>D.id))),[c,d]=p.useState(null),[u,m]=p.useState(null),b=r.type==="dhf-document"?r.docId:null,v=p.useMemo(()=>{const D=new Set(Ke.map(A=>A.label));return[...new Set(n.map(A=>A.group))].filter(A=>A&&!D.has(A)).sort()},[n]),w=S(D=>D.model),g=p.useMemo(()=>{const D=(w==null?void 0:w.elements)??{};return So(n,A=>{const F=A.systemId?D[A.systemId]:void 0;return F?{systemId:F.id,label:F.name||F.id}:A.systemId?{systemId:A.systemId,label:A.systemId}:{label:Vn}})},[n,w]),h=D=>[...Ke.filter(A=>D.some(F=>F.group===A.label)).map(A=>({key:A.id,groupId:A.id,label:A.label,color:A.color,docs:D.filter(F=>F.group===A.label)})),...v.filter(A=>D.some(F=>F.group===A)).map(A=>({key:`custom:${A}`,groupId:void 0,label:A,color:id(A),docs:D.filter(F=>F.group===A)}))];function y(D){l(A=>{const F=new Set(A);return F.has(D)?F.delete(D):F.add(D),F})}function B(D,A){D.preventDefault(),D.stopPropagation(),m({x:D.clientX,y:D.clientY,groupId:A})}function N(D){const A=s.documentNumberingPrefix||"DOC",F=[];for(const C of D){const k=`${A}-${C.prefix}-`,T=[...n,...F].filter(O=>O.id.startsWith(k)),z=`${k}${String(T.length+1).padStart(3,"0")}`,_=O=>O.replace(/^---[\s\S]*?---\n?/,""),j=C.content!==null?_(C.content):(()=>{const O=rd(C.templateId);return O?_(O):`# ${C.title}
|
|
4046
|
+
Everything it declares moves into the enclosing package. Qualified names that refer to it will need updating by hand.`)&&Se(c(h))}}]}else e.type==="kind"&&e.kind&&(v=`Category: ${e.kind}`,w=[{label:"Add Element",action:()=>{const h=window.prompt("Enter element name:");h&&a(e.kind,h,"")}},{label:"New Package…",action:()=>{const h=window.prompt("Enter package name:");h&&Se(i(h.trim()))}}]);return w.length?t.jsxs(t.Fragment,{children:[t.jsxs("div",{ref:b,className:"fixed z-50 rounded-lg overflow-hidden py-1",style:{left:e.x,top:e.y,background:f.surface,border:`1px solid ${f.border}`,boxShadow:"0 4px 16px rgba(0,0,0,0.12)",minWidth:"220px"},children:[t.jsx("div",{className:"px-3 py-1.5 font-bold truncate bg-slate-50",style:{color:f.primary,fontSize:I.xs,borderBottom:`1px solid ${f.border}`},children:v.toUpperCase()}),w.map((h,y)=>t.jsx("div",{className:"px-3 py-2 cursor-pointer transition-colors",style:{color:h.danger?"#DC2626":f.secondary,fontSize:I.explorer.item},onMouseEnter:N=>N.currentTarget.style.background="#F0F0ED",onMouseLeave:N=>N.currentTarget.style.background="transparent",onClick:()=>{h.action(),u||r()},children:h.label},y))]}),u&&t.jsx(xd,{elementId:u.elementId,currentKind:u.currentKind,onClose:()=>{m(null),r()}})]}):null}const ot="#7C3AED";function Fn({nodes:e,level:r,expanded:n,toggleExpand:o,selectedElementId:a,selectElement:s,selectedElementIds:i,toggleElementSelection:l,violationCounts:c,baseColor:d,onContextMenu:u,onDragStart:m,onDrop:b,isUndefined:v}){return t.jsx(t.Fragment,{children:e.map(w=>{if(w.type==="folder"){const g=n.has(w.id);return t.jsxs("div",{style:{marginLeft:w.isUsagesFolder?`${16+r*16}px`:r>0?"16px":"0"},draggable:!0,onDragStart:h=>m(h,w),onDragOver:h=>h.preventDefault(),onDrop:h=>b(h,w.id.replace("f:","")),children:[t.jsxs("div",{className:"flex items-center gap-1.5 px-2 py-1 cursor-pointer select-none",style:{borderRadius:"4px",margin:"0 4px"},onMouseEnter:h=>h.currentTarget.style.background="#F0F0ED",onMouseLeave:h=>h.currentTarget.style.background="transparent",onClick:()=>o(w.id),onContextMenu:h=>u(h,"folder",w.id),children:[t.jsx(xe,{expanded:g,size:12,color:f.muted}),t.jsx(Ie,{open:g,color:w.isUsagesFolder?ot:d}),t.jsx("span",{className:"font-medium flex-1 truncate",style:{color:w.isUsagesFolder?ot:f.secondary,fontSize:I.explorer.kind,fontStyle:w.isUsagesFolder?"italic":"normal"},children:w.name})]}),g&&t.jsx(Fn,{nodes:w.children,level:r+1,expanded:n,toggleExpand:o,selectedElementId:a,selectElement:s,selectedElementIds:i,toggleElementSelection:l,violationCounts:c,baseColor:w.isUsagesFolder?ot:d,onContextMenu:u,onDragStart:m,onDrop:b,isUndefined:v})]},w.id)}else{const g=w.element,h=a===g.id,y=i.has(g.id),N=c.get(g.id)||0,R=w.isUsage?ot:ue[g.layer]||d,A=w.children.length>0,T=n.has(g.id);return t.jsxs(p.Fragment,{children:[t.jsxs("div",{className:"group flex items-center gap-1.5 px-2 py-1 cursor-pointer",style:{borderRadius:"4px",margin:"0 4px",marginLeft:16+r*16+(w.isUsage?16:0)+(A?0:16)+"px",background:y?"#FFF3CD":h?f.accent+"18":"transparent",fontWeight:h||y?500:400},draggable:!0,onDragStart:j=>m(j,{type:"element",element:g,id:g.id,name:g.name,children:[]}),onMouseEnter:j=>{!h&&!y&&(j.currentTarget.style.background="#F0F0ED")},onMouseLeave:j=>{j.currentTarget.style.background=y?"#FFF3CD":h?f.accent+"18":"transparent"},onClick:j=>{j.metaKey||j.ctrlKey||j.shiftKey?(j.preventDefault(),l(g.id)):(s(g.id),A&&o(g.id))},onContextMenu:j=>u(j,"element",g.id),children:[A?t.jsx("span",{onClick:j=>{j.stopPropagation(),o(g.id)},className:"cursor-pointer flex items-center justify-center",style:{width:"14px",height:"14px",flexShrink:0},children:t.jsx(xe,{expanded:T,size:12,color:f.muted})}):null,t.jsx("input",{type:"checkbox",checked:y,onChange:j=>{j.stopPropagation(),l(g.id)},onClick:j=>j.stopPropagation(),className:"flex-shrink-0",style:{width:"12px",height:"12px",cursor:"pointer",opacity:y?1:0,transition:"opacity 120ms",accentColor:"#2DD4A8"},onMouseEnter:j=>{j.currentTarget.style.opacity="1"},onMouseLeave:j=>{j.currentTarget.style.opacity=y?"1":"0"}}),t.jsx(bt,{color:v?"#F59E0B":R}),t.jsx(ol,{element:g,selected:h,tint:w.isUsage?ot:void 0}),A&&t.jsx("span",{className:"px-1.5 py-0.5 rounded-full ml-auto text-xs",style:{background:"#F3F4F6",color:"#6B7280",fontSize:"11px",fontWeight:500,minWidth:"16px",textAlign:"center"},children:w.children.length}),v&&t.jsx("span",{title:`Kind "${g.kind}" is not defined in the ontology`,style:{color:"#F59E0B",fontSize:"12px",flexShrink:0},children:"⚠"}),N>0&&t.jsx("span",{className:"px-1 py-0.5 rounded-full",style:{background:"#FEF2F2",color:"#DC2626",fontSize:I.explorer.count,fontWeight:600,minWidth:"16px",textAlign:"center"},children:N})]}),A&&T&&t.jsx(Fn,{nodes:w.children,level:r+1,expanded:n,toggleExpand:o,selectedElementId:a,selectElement:s,selectedElementIds:i,toggleElementSelection:l,violationCounts:c,baseColor:d,onContextMenu:u,onDragStart:m,onDrop:b,isUndefined:v})]},g.id)}})})}function vd(e,r,n){return e.endsWith("View")||e.endsWith("Viewpoint")||r==="viewpoints"||r==="views"||n==="viewpoints"||n==="views"}function wd(e,r,n){return vd(e,r,n)||e==="ItemDefinition"}function kd(e,r,n){return!n.has(e.kind)&&mo(e,{kinds:r})!==void 0}function Sd(e,r){var a;const n=new Map,o=new Map;for(const s of r)for(const i of s.layers)o.has(i.id)||o.set(i.id,i);for(const s of e){const i=((a=s.namespace)==null?void 0:a[0])??s.layer;if(!i||i==="unknown")continue;let l=n.get(i);if(!l){const c=o.get(i);l={id:i,label:(c==null?void 0:c.label)??Kn(i),color:(c==null?void 0:c.color)??ue[i]??"#6B7280",kinds:[]},n.set(i,l)}l.kinds.includes(s.name)||l.kinds.push(s.name)}return[...n.values()]}function Cd(e){var n;const r={};for(const o of e)r[o.name]=((n=o.namespace)==null?void 0:n[0])??o.layer;return r}function Ed(e){var n;const r={};for(const o of e)r[o.name]=(n=o.namespace)==null?void 0:n[1];return r}function Kn(e){return e.split(/[_-]/).map(r=>r.charAt(0).toUpperCase()+r.slice(1)).join(" ")}function jd(e,r){return{StateMachine:"State Machine",ModeState:"Mode State",BehaviorProperty:"Behavioral Constraint",AssumeProperty:"Assumption",GuaranteeProperty:"Guarantee"}[e]??e.replace(/([a-z0-9])([A-Z])/g,"$1 $2")}const Fr=["documents","assets","templates","analyses","adrs","reviews"];function Dd(e,r){const n=`${e} ${r??""}`.toLowerCase();return/(review|approval)/.test(n)?"reviews":/(adr|decision)/.test(n)?"adrs":/(template|pattern)/.test(n)?"templates":/(analysis|notebook|worksheet|matrix)/.test(n)?"analyses":/(asset|capture|image|media|file)/.test(n)?"assets":"documents"}function Bd(e,r,n,o,a=[],s,i=[],l=[]){var Q,oe,ae,M,x,_,W;const c=r.toLowerCase(),d=new Set(["views","viewpoints","manifest"]),u=Cd(n),m=Ed(n),b=Sd(n,o).filter(F=>!d.has(F.id)),v=new Set(b.map(F=>F.id)),w=new Set(e.filter(F=>F.construct==="view").map(F=>F.file).filter(Boolean)),g=new Set(l.map(F=>F.id)),h=F=>F.construct==="view"||!!F.file&&w.has(F.file)||g.has(F.id),y=new Map;for(const F of e)if(F.isDefinition)for(const L of[F.name,F.id,F.shortId])L&&y.set(L,F);const N=(F,L)=>{let V=F;const B=new Set;for(;V&&!B.has(V);){B.add(V);const P=n.find(ee=>ee.name===V);if(P&&!P.isAbstract&&!y.has(V))return P.name;if(P!=null&&P.superType){V=P.superType;continue}const K=y.get(V),Z=K==null?void 0:K.kind;if(Z&&Z!==V){V=Z;continue}break}return(!V||V==="MemoFunction"||V==="Function"||V==="Action")&&((L==null?void 0:L.layer)==="functional"||(L==null?void 0:L.construct)==="action")?L.kind==="ComponentFunction"?"ComponentFunction":"SystemFunction":V||F},R=F=>{var L,V;return((L=F.attributes)==null?void 0:L.actionType)||((V=F.attributes)==null?void 0:V.usageType)||F.kind||""},A=new Set;for(const F of e){const L=R(F);L&&(A.add(L),L.includes("::")&&A.add(L.split("::").pop()))}const T=new Map;for(const F of e){if(s&&!s.has(F.kind))continue;const L=u[F.kind]??F.layer,V=m[F.kind];if(wd(F.kind,L,V)||h(F))continue;const B=!!F.isDefinition;if(B&&!(A.has(F.name)||A.has(F.id)))continue;const P=N(F.kind,F);if(c&&!F.name.toLowerCase().includes(c)&&!P.toLowerCase().includes(c))continue;const K=R(F),Z=y.get(K)??(K.includes("::")?y.get(K.split("::").pop()):void 0),ee=((Q=F.attributes)==null?void 0:Q.providedId)||((oe=Z==null?void 0:Z.attributes)==null?void 0:oe.providedId)||F.shortId||F.id,te=F.name&&F.name!==F.id?F.name:((ae=F.attributes)==null?void 0:ae.name)||((M=Z==null?void 0:Z.attributes)==null?void 0:M.name)||F.name;T.set(F.id,{...F,name:te,kind:P,__isDef:B,__displayId:ee})}const j=new Map,S=new Map;for(const F of T.values()){const L={id:F.id,name:F.name,type:"element",element:F,children:[]};j.set(F.id,L);for(const V of[F.id,F.shortId,F.name,(x=F.attributes)==null?void 0:x.providedId])V&&S.set(V,L)}const k=new Map;for(const F of i){if(!(F!=null&&F.sourceId)||!(F!=null&&F.targetId))continue;const L=(F.type??"").toLowerCase();if(L!=="composes"&&L!=="compose")continue;const V=S.get(F.sourceId),B=S.get(F.targetId);k.set((B==null?void 0:B.id)??F.targetId,(V==null?void 0:V.id)??F.sourceId)}const U=new Map;for(const F of j.values())if((_=F.element)!=null&&_.__isDef)for(const L of[F.element.name,F.element.id])L&&U.set(L,F);const H=F=>{var B;if(!F||(B=F.element)!=null&&B.__isDef)return F;const L=F.element?R(F.element):"",V=U.get(L)??(L.includes("::")?U.get(L.split("::").pop()):void 0);return V&&V!==F?V:F},O=new Map,D=new Map;for(const F of j.values()){const L=H(F);!L||L===F||(O.set(F.id,L),F.isUsage=!0,D.set(L.id,[...D.get(L.id)??[],F]))}for(const[F,L]of[...k]){const V=H(S.get(F)??j.get(F)),B=H(S.get(L)??j.get(L));!V||!B||(k.delete(F),V!==B&&k.set(V.id,B.id))}const $=(F,L)=>{let V=L;const B=new Set;for(;V;){if(V.id===F.id)return!0;if(B.has(V.id))return!1;B.add(V.id);const P=k.get(V.id);V=P?S.get(P)??j.get(P):void 0}return!1},E=[];for(const F of j.values()){if(O.has(F.id))continue;const L=F.element;let V;const B=k.get(F.id)??k.get(L.shortId??"")??k.get(L.id)??k.get(((W=L.attributes)==null?void 0:W.providedId)??"");if(B&&(V=S.get(B)??j.get(B)),!V&&L.owner&&(V=S.get(L.owner)??j.get(L.owner)),!V&&L.parentAction){const P=S.get(L.parentAction)??j.get(L.parentAction);P&&P!==F&&!$(F,P)&&(V=P)}if(!V){let P=L.id;for(;P.includes("::");){P=P.substring(0,P.lastIndexOf("::"));const K=S.get(P)??j.get(P);if(K&&K!==F&&!$(F,K)){V=K;break}}}V=H(V),!V||V===F||$(F,V)?E.push(F):V.children.push(F)}const q=F=>{F.sort((L,V)=>{if(!!L.isUsagesFolder!=!!V.isUsagesFolder)return L.isUsagesFolder?-1:1;if(L.type!==V.type)return L.type==="folder"?-1:1;const B=P=>{var K,Z,ee;return String(((K=P.element)==null?void 0:K.__displayId)??((ee=(Z=P.element)==null?void 0:Z.attributes)==null?void 0:ee.providedId)??P.name)};return B(L).localeCompare(B(V),void 0,{numeric:!0})}),F.forEach(L=>q(L.children))};for(const[F,L]of D){const V=j.get(F);!V||L.length===0||V.children.push({id:`u:${F}`,name:`Usages (${L.length})`,type:"folder",isUsagesFolder:!0,children:L})}for(const F of j.values())q(F.children);const X=(F,L,V)=>{var Z;const B=new Map;for(const ee of F){const te=ee.element.kind,de=V==="artifacts"?Dd(te,(Z=n.find(ye=>ye.name===te))==null?void 0:Z.superType):m[te]??"";B.has(de)||B.set(de,new Map);const me=B.get(de);me.set(te,[...me.get(te)??[],ee])}const P=new Map;for(const[ee,te]of B.entries()){const de=new Map;for(const[me,ye]of te.entries()){const re=[...ye];q(re),de.set(me,re)}P.set(ee,de)}const K=ee=>{const te=vr.indexOf(ee.replace(/_/g,"-"));return te<0?vr.length:te};return[...P.entries()].sort(([ee],[te])=>V==="artifacts"?Fr.indexOf(ee)-Fr.indexOf(te):K(ee)-K(te)||ee.localeCompare(te)).map(([ee,te])=>({id:ee,label:ee?Kn(ee):"",color:ee?ue[ee]??L:L,kinds:te}))},z=[];for(const F of b){const L=[];for(const V of E){const B=V.element,P=u[B.kind];!P||P!==F.id||L.push(V)}L.length>0&&z.push({group:F,subGroups:X(L,F.color,F.id)})}const G=[],J=[],ne=new Set(n.map(F=>F.name));for(const F of E){const L=F.element,V=u[L.kind];V&&v.has(V)||V&&d.has(V)||(kd(L,n,ne)?G.push(F):J.push(F))}if(G.length>0){const F="#64748B";z.push({group:{id:"standard-sysml-diagram-elements",label:"Other — SysML Diagram Elements",color:F,kinds:[]},subGroups:X(G,F).map(L=>({...L,id:"diagram-elements",label:"Diagram Elements"}))})}if(J.length>0){const F="#F59E0B";z.push({group:{id:"undefined",label:"Undefined — Not in Ontology",color:F,kinds:[]},subGroups:X(J,F).map(L=>({...L,id:"undefined-elements",label:"Elements"}))})}return z}function Fd(e,r=""){const n=Co(e),o=new Map;for(const l of e){const c=Eo(l,n);c&&o.set(c.id,[...o.get(c.id)??[],l])}const a=r.trim().toLowerCase(),s=l=>!a||l.definition.name.toLowerCase().includes(a)||l.definition.kind.toLowerCase().includes(a)||l.usages.some(c=>c.name.toLowerCase().includes(a)),i=new Map;for(const l of new Set(n.values())){const c={definition:l,usages:(o.get(l.id)??[]).sort((u,m)=>u.name.localeCompare(m.name))};if(!s(c))continue;const d=l.layer&&l.layer!=="unknown"?l.layer:"other";i.set(d,[...i.get(d)??[],c])}return[...i.entries()].sort(([l],[c])=>{const d=u=>{const m=Re.indexOf(u);return m<0?Number.MAX_SAFE_INTEGER:m};return d(l)-d(c)||l.localeCompare(c)}).map(([l,c])=>({layer:l,definitions:c.sort((d,u)=>d.definition.name.localeCompare(u.definition.name))}))}function Ad({searchTerm:e,selectedElementId:r,onSelect:n,onContextMenu:o}){const a=C(d=>d.model),[s,i]=p.useState(new Set),l=p.useMemo(()=>Fd(Object.values((a==null?void 0:a.elements)??{}),e),[a,e]),c=d=>i(u=>{const m=new Set(u);return m.has(d)?m.delete(d):m.add(d),m});return l.length===0?t.jsx("div",{className:"flex-1 flex items-center justify-center px-4 text-center",style:{color:f.faint,fontSize:"12px",lineHeight:1.6},children:e?"No definition matches that search.":"This model declares no definitions of its own. The ontology’s types are in the Ontology tab."}):t.jsx("div",{className:"flex-1 overflow-y-auto py-1",style:{fontSize:I.explorer.item},children:l.map(({layer:d,definitions:u})=>{const m=s.has(`l:${d}`),b=ue[d]??f.muted;return t.jsxs("div",{className:"mb-0.5",children:[t.jsxs("div",{className:"flex items-center gap-1.5 px-2 py-1.5 cursor-pointer select-none",style:{margin:"0 4px",borderRadius:"4px"},onClick:()=>c(`l:${d}`),children:[t.jsx(xe,{expanded:m,size:13,color:b}),t.jsx(Ie,{open:m,color:b}),t.jsx("span",{className:"font-semibold flex-1 truncate",style:{color:f.primary,fontSize:I.explorer.group},children:Le[d]??Kn(d)}),t.jsx(Kt,{count:u.length,color:b,title:`${u.length} definitions`})]}),m&&u.map(({definition:v,usages:w})=>{const g=s.has(v.id);return t.jsxs("div",{children:[t.jsxs("div",{className:"flex items-center gap-1.5 py-1 cursor-pointer select-none",style:{paddingLeft:"22px",paddingRight:"8px",borderRadius:"4px",margin:"0 4px",background:v.id===r?"#EEF2FF":"transparent"},onClick:()=>{w.length&&c(v.id),n(v.id)},onContextMenu:h=>o(h,"element",v.id),children:[w.length?t.jsx(xe,{expanded:g,size:12}):t.jsx("span",{style:{width:"12px",display:"inline-block"}}),t.jsx(bt,{color:b}),t.jsx("span",{className:"truncate flex-1",style:{color:f.primary},children:v.name}),t.jsx("span",{style:{color:w.length?f.muted:"#B45309",fontSize:I.explorer.count},children:w.length===0?"unused":`${w.length}×`})]}),g&&w.map(h=>t.jsxs("div",{className:"flex items-center gap-1.5 py-1 cursor-pointer select-none",style:{paddingLeft:"48px",paddingRight:"8px",borderRadius:"4px",margin:"0 4px",background:h.id===r?"#EEF2FF":"transparent"},onClick:()=>n(h.id),onContextMenu:y=>o(y,"element",h.id),children:[t.jsx(bt,{}),t.jsx("span",{className:"truncate flex-1",style:{color:f.secondary},children:h.name}),t.jsx("span",{style:{color:f.faint,fontSize:I.explorer.count},children:h.construct})]},h.id))]},v.id)})]},d)})})}function Nd({searchTerm:e,selectedElementId:r,onSelect:n,onContextMenu:o}){const a=C(m=>m.model),s=C(m=>m.availableOntologies),[i,l]=p.useState(new Set),c=p.useMemo(()=>{const m=Object.values((a==null?void 0:a.elements)??{}),b=Do(s),v=new Map(m.map(h=>[h.id,h])),w=(a==null?void 0:a.relationships)??[],g=jo.map(h=>h.id==="usecases"?{...h,systemOf:y=>zi(y,v,w,b)}:h);return Li(m,g,e)},[a,s,e]),d=m=>l(b=>{const v=new Set(b);return v.has(m)?v.delete(m):v.add(m),v}),u=(m,b)=>{var g;const v=m.children.length>0,w=i.has(m.id);return t.jsxs("div",{children:[t.jsxs("div",{className:"flex items-center gap-1.5 py-1 cursor-pointer select-none",style:{paddingLeft:`${8+b*14}px`,paddingRight:"8px",borderRadius:"4px",margin:"0 4px",background:m.element&&m.element.id===r?"#EEF2FF":"transparent"},onClick:()=>{v&&d(m.id),m.element&&n(m.element.id)},onContextMenu:m.element?h=>o(h,"element",m.element.id):void 0,children:[v?t.jsx(xe,{expanded:w,size:12}):t.jsx("span",{style:{width:"12px",display:"inline-block"}}),m.isGroup?t.jsx(Ie,{open:w}):t.jsx(bt,{}),t.jsxs("span",{className:"truncate flex-1",style:{color:f.primary},children:[m.name,((g=m.element)==null?void 0:g.isDefinition)&&t.jsx("span",{style:{color:f.muted,fontWeight:600,marginLeft:"5px",fontSize:"0.85em"},children:"def"})]}),!m.isGroup&&t.jsx("span",{style:{color:f.faint,fontSize:I.explorer.count},children:m.kind})]}),w&&m.children.map(h=>u(h,b+1))]},m.id)};return c.length===0?t.jsx("div",{className:"flex-1 flex items-center justify-center px-4 text-center",style:{color:f.faint,fontSize:"12px"},children:e?"Nothing matches that search.":"No composition to show yet."}):t.jsx("div",{className:"flex-1 overflow-y-auto py-1",style:{fontSize:I.explorer.item},children:c.map(m=>{const b=i.has(`b:${m.id}`);return t.jsxs("div",{className:"mb-0.5",children:[t.jsxs("div",{className:"flex items-center gap-1.5 px-2 py-1.5 cursor-pointer select-none",style:{margin:"0 4px",borderRadius:"4px"},onClick:()=>d(`b:${m.id}`),children:[t.jsx(xe,{expanded:b,size:13}),t.jsx(Ie,{open:b}),t.jsx("span",{className:"font-semibold flex-1",style:{color:f.primary,fontSize:I.explorer.kind},children:m.label}),t.jsx("span",{style:{color:f.faint,fontSize:I.explorer.count},children:m.nodes.length})]}),b&&m.nodes.map(v=>u(v,1))]},m.id)})})}function Ar({searchTerm:e}){var ae;const r=je(),n=C(M=>M.model),o=C(M=>M.selectedElementId),a=C(M=>M.selectElement),s=C(M=>M.setActiveView),i=C(M=>M.selectedElementIds),l=C(M=>M.toggleElementSelection),c=C(M=>M.selectAllElements),d=C(M=>M.clearElementSelection),u=C(M=>M.moveElementToPackage),m=C(M=>M.movePackage),b=C(M=>M.validation),v=C(M=>M.availableOntologies),w=C(M=>M.setExplorerTab),g=C(M=>M.setActiveMode),h=C(M=>M.setSelectedOntologyKind),y=((ae=n==null?void 0:n.registries)==null?void 0:ae.kinds)??[],N=p.useCallback(M=>{var _;a(M),s({type:"element-detail",elementId:M});const x=(_=n==null?void 0:n.elements)==null?void 0:_[M];x&&r(Ao(x.shortId??x.id))},[a,s,n,r]),[R,A]=p.useState("catalog"),[T,j]=p.useState(new Set),S=p.useRef(!1),[k,U]=p.useState(null),[H,O]=p.useState(null),[D,$]=p.useState(new Set),E=p.useCallback((M,x)=>{x==null||x.stopPropagation(),j(_=>{const W=new Set(_);return W.has(M)?W.delete(M):W.add(M),W})},[]),q=p.useCallback((M,x,_,W)=>{M.preventDefault(),U({x:M.clientX,y:M.clientY,type:x,elementId:x==="element"?_:void 0,packageName:x==="folder"?_.replace("f:",""):void 0,kind:W||(x==="kind"?_.replace("k:","").split(":").pop():void 0)})},[]),X=p.useMemo(()=>{var M;return n?Bd(Object.values(n.elements),e,((M=n.registries)==null?void 0:M.kinds)??[],v,n.packages??[],D.size?D:void 0,n.relationships??[],n.viewpoints??[]):[]},[n,e,v,D]);p.useEffect(()=>{S.current||X.length===0||(S.current=!0,j(new Set))},[X]),p.useEffect(()=>{const M=()=>{if(!e.trim())return;const _=new Set;for(const{group:W,subGroups:F}of X){_.add(`g:${W.id}`);for(const L of F){L.id&&_.add(`sg:${W.id}:${L.id}`);for(const V of L.kinds.keys())_.add(`k:${W.id}:${L.id?`${L.id}:`:""}${V}`)}}j(_)},x=()=>j(new Set);return window.addEventListener("memo:expand-explorer-search",M),window.addEventListener("memo:collapse-explorer-tree",x),()=>{window.removeEventListener("memo:expand-explorer-search",M),window.removeEventListener("memo:collapse-explorer-tree",x)}},[X,e]);const z=p.useCallback((M,x,_)=>{var W;O({id:x.id,kind:_}),M.dataTransfer.setData("application/memo-node",JSON.stringify({id:x.id,type:x.type,kind:_,name:x.name,elementId:(W=x.element)==null?void 0:W.id,packageName:x.type==="folder"?x.id.replace("f:",""):void 0})),M.dataTransfer.effectAllowed="move"},[]),G=p.useCallback((M,x)=>{(H==null?void 0:H.kind)===x&&(M.preventDefault(),M.dataTransfer.dropEffect="move")},[H]),J=p.useCallback((M,x,_)=>{M.preventDefault(),O(null);try{const W=JSON.parse(M.dataTransfer.getData("application/memo-node"));if(W.kind!==_)return;if(W.type==="element")Se(u(W.elementId,x));else if(W.type==="folder"){if(x===W.packageName||x.startsWith(`${W.packageName}::`))return;Se(m(W.packageName,x))}}catch(W){console.error("Drop error:",W)}},[u,m]),ne=p.useMemo(()=>{const M=new Map;if(b)for(const x of b.violations)M.set(x.elementId,(M.get(x.elementId)||0)+1);return M},[b]),Q=p.useMemo(()=>{const M=[],x=_=>{for(const W of _)W.type==="element"&&W.element?M.push(W.element.id):x(W.children)};for(const{subGroups:_}of X)for(const W of _)for(const F of W.kinds.values())x(F);return M},[X]),oe=i.size;return t.jsxs("div",{className:"flex-1 flex flex-col overflow-hidden",children:[t.jsxs("details",{className:"px-3 py-1.5 flex-shrink-0",style:{borderBottom:`1px solid ${f.border}`,fontSize:I.xs},children:[t.jsxs("summary",{style:{cursor:"pointer",color:f.secondary},children:["Filter element types",D.size?` (${D.size})`:""]}),t.jsxs("div",{className:"mt-1 max-h-32 overflow-y-auto",children:[t.jsx("button",{onClick:()=>$(new Set),style:{color:f.accent,fontSize:I.xs},children:"Show all"}),y.filter(M=>!M.isAbstract).sort((M,x)=>M.name.localeCompare(x.name)).map(M=>t.jsxs("label",{className:"flex items-center gap-1 py-0.5",children:[t.jsx("input",{type:"checkbox",checked:!D.size||D.has(M.name),onChange:()=>$(x=>{const _=x.size?new Set(x):new Set(y.filter(W=>!W.isAbstract).map(W=>W.name));return _.has(M.name)?_.delete(M.name):_.add(M.name),_})}),M.label||M.name]},M.name))]})]}),oe>0&&t.jsxs("div",{className:"flex items-center gap-2 px-3 py-1.5 flex-shrink-0",style:{background:"#FFFBEB",borderBottom:"1px solid #FDE68A",fontSize:"12px"},children:[t.jsxs("span",{style:{color:"#92400E",fontWeight:600},children:[oe," selected"]}),t.jsx("span",{style:{color:"#B45309"},children:"— Cmd/Ctrl+click to multi-select"}),t.jsx("button",{onClick:d,className:"ml-auto px-2 py-0.5 rounded",style:{color:"#92400E",background:"#FDE68A",fontSize:"12px",fontWeight:500},children:"Clear"})]}),e&&Q.length>0&&t.jsxs("div",{className:"flex items-center gap-2 px-3 py-1",style:{background:"#F0F9FF",borderBottom:"1px solid #BAE6FD",fontSize:"12px"},children:[t.jsxs("span",{style:{color:"#0369A1"},children:[Q.length," matching"]}),t.jsx("button",{onClick:()=>c(Q),className:"ml-auto px-2 py-0.5 rounded",style:{color:"#0369A1",background:"#BAE6FD",fontSize:"12px",fontWeight:500},children:"Select All"})]}),t.jsx("div",{className:"flex px-2 pt-1.5 pb-1 gap-1 flex-shrink-0",children:["catalog","breakdown","definitions"].map(M=>t.jsx("button",{onClick:()=>A(M),className:"px-2 py-0.5 rounded capitalize",style:{fontSize:"11px",fontWeight:500,...R===M?{background:f.accent,color:"#fff"}:{background:"transparent",color:f.faint}},children:M},M))}),R==="definitions"?t.jsx(Ad,{searchTerm:e,selectedElementId:o,onSelect:N,onContextMenu:q}):R==="breakdown"?t.jsx(Nd,{searchTerm:e,selectedElementId:o,onSelect:N,onContextMenu:q}):t.jsx("div",{className:"flex-1 overflow-y-auto py-1",style:{fontSize:I.explorer.item},children:X.map(({group:M,subGroups:x})=>{const _=`g:${M.id}`,W=T.has(_),F=M.id==="undefined",L=P=>P.reduce((K,Z)=>K+(Z.type==="element"?1:L(Z.children)),0),V=P=>Array.from(P.kinds.values()).reduce((K,Z)=>K+L(Z),0),B=x.reduce((P,K)=>P+V(K),0);return t.jsxs("div",{className:"mb-0.5",children:[t.jsxs("div",{className:"flex items-center gap-1.5 px-2 py-1.5 cursor-pointer select-none",style:{margin:"0 4px",borderRadius:"4px",...F?{background:"#FFF3CD"}:{}},onMouseEnter:P=>P.currentTarget.style.background=F?"#FDE68A":"#F0F0ED",onMouseLeave:P=>P.currentTarget.style.background=F?"#FFF3CD":"transparent",onClick:()=>E(_),onContextMenu:P=>q(P,"group",_),children:[t.jsx(xe,{expanded:W,size:14,color:M.color}),F?t.jsx("span",{style:{fontSize:"14px",lineHeight:1,flexShrink:0},children:"⚠"}):t.jsx(Ie,{open:W,color:M.color}),t.jsx("span",{className:"font-semibold flex-1 truncate",style:{color:F?"#92400E":f.primary,fontSize:I.explorer.group},children:M.label}),t.jsx("span",{className:"px-1.5 py-0.5 rounded-full",style:{background:M.color+"25",color:M.color,fontSize:I.explorer.count,fontWeight:600,minWidth:"20px",textAlign:"center"},children:B})]}),(()=>{const P=(K,Z,ee)=>{const te=`k:${M.id}:${ee?ee+":":""}${K}`,de=T.has(te),me=se=>{var ie;for(const Pe of se){if(Pe.type==="element")return(ie=Pe.element)==null?void 0:ie.layer;const St=me(Pe.children);if(St)return St}},ye=me(Z),re=F?"#F59E0B":ye&&ue[ye]||M.color,he=y.some(se=>se.name===K),et=se=>se.flatMap(ie=>ie.type==="element"&&ie.element?[ie.element.id]:et(ie.children)),_e=et(Z);return t.jsxs("div",{style:{marginLeft:"16px"},onDragOver:se=>G(se,K),onDrop:se=>J(se,"",K),children:[t.jsxs("div",{className:"group flex items-center gap-1.5 px-2 py-1 cursor-pointer select-none",style:{borderRadius:"4px",margin:"0 4px"},onMouseEnter:se=>se.currentTarget.style.background="#F0F0ED",onMouseLeave:se=>se.currentTarget.style.background="transparent",onClick:()=>E(te),onContextMenu:se=>q(se,"kind",te,K),children:[t.jsx(xe,{expanded:de,size:12,color:f.muted}),t.jsx(Ie,{open:de,color:re}),t.jsxs("span",{className:"font-medium flex-1 truncate",style:{color:F?"#B45309":f.secondary,fontSize:I.explorer.kind},children:[jd(K,_e.length),F&&t.jsx("span",{style:{color:"#F59E0B",marginLeft:"4px"},children:"·"})]}),t.jsxs("div",{className:"flex max-w-0 items-center gap-1 overflow-hidden opacity-0 invisible pointer-events-none transition-all duration-150 group-hover:max-w-[4.5rem] group-hover:opacity-100 group-hover:visible group-hover:pointer-events-auto",children:[t.jsx("button",{onClick:se=>{se.stopPropagation(),c(_e)},title:"Select all elements of this type","aria-label":"Select all elements of this type",className:"flex h-8 w-8 shrink-0 items-center justify-center rounded-md hover:bg-slate-100",style:{color:f.faint,fontSize:"17px"},children:"☑"}),he&&pe("ontology")&&t.jsx("button",{onClick:se=>{se.stopPropagation();for(const ie of v)for(const Pe of ie.layers)if(Pe.kinds.some(St=>St.name===K)){h(K),w("ontologies"),g("ontology"),s({type:"ontology-detail",packageName:ie.name,layerId:Pe.id});return}},title:"View type in Ontology","aria-label":"View type in Ontology",className:"flex h-8 w-8 shrink-0 items-center justify-center rounded-md hover:bg-slate-100",style:{color:f.faint,fontSize:"17px"},children:"⬡"})]}),t.jsx(Kt,{count:_e.length,color:re,title:`${_e.length} ${_e.length===1?"element":"elements"}`})]}),de&&t.jsx(Fn,{nodes:Z,level:0,expanded:T,toggleExpand:E,selectedElementId:o,selectElement:N,selectedElementIds:i,toggleElementSelection:l,violationCounts:ne,baseColor:re,onContextMenu:(se,ie,Pe)=>q(se,ie,Pe,K),onDragStart:(se,ie)=>z(se,ie,K),onDrop:(se,ie)=>J(se,ie,K),isUndefined:F})]},K)};return W?x.map(K=>{if(!K.id)return t.jsx("div",{children:Array.from(K.kinds.entries()).map(([de,me])=>P(de,me,""))},"__root");const Z=`sg:${M.id}:${K.id}`,ee=T.has(Z),te=V(K);return t.jsxs("div",{style:{marginLeft:"16px"},children:[t.jsxs("div",{className:"flex items-center gap-1.5 px-2 py-1 cursor-pointer select-none",style:{borderRadius:"4px",margin:"0 4px"},onMouseEnter:de=>de.currentTarget.style.background="#F0F0ED",onMouseLeave:de=>de.currentTarget.style.background="transparent",onClick:()=>E(Z),children:[t.jsx(xe,{expanded:ee,size:13,color:K.color}),t.jsx(Ie,{open:ee,color:K.color}),t.jsx("span",{className:"font-semibold flex-1 truncate",style:{color:f.primary,fontSize:I.explorer.kind},children:K.label}),t.jsx("span",{className:"px-1.5 py-0.5 rounded-full",style:{background:K.color+"25",color:K.color,fontSize:I.explorer.count,fontWeight:600,minWidth:"20px",textAlign:"center"},children:te})]}),ee&&Array.from(K.kinds.entries()).map(([de,me])=>P(de,me,K.id))]},K.id)}):null})()]},M.id)})}),k&&t.jsx(bd,{menu:k,onClose:()=>U(null)})]})}function Td({diagram:e}){const r=e.viewKind?Hn[e.viewKind]:void 0;if(r)return t.jsx("span",{className:"px-1.5 py-0.5 rounded font-semibold",style:{background:r.color+"20",color:r.color,fontSize:I.badge},title:r.fullName,children:r.label});const n=["afd","ofd","ffd"].includes(e.diagramType.toLowerCase())?Hi(e):e.diagramType,o=$e[n];return o?t.jsx("span",{className:"px-1.5 py-0.5 rounded font-semibold",style:{background:o.color+"20",color:o.color,fontSize:I.badge},title:o.fullName,children:o.code}):null}function Rd({viewpointId:e,onClose:r}){const n=C(d=>d.createDiagram),[o,a]=p.useState("Untitled"),[s,i]=p.useState("bdd"),l=p.useRef(null);p.useEffect(()=>{const d=u=>{l.current&&!l.current.contains(u.target)&&r()};return document.addEventListener("mousedown",d),()=>document.removeEventListener("mousedown",d)},[r]);const c=()=>{o.trim()&&(n({name:o.trim(),diagramType:s,viewpointId:e}),r())};return t.jsxs("div",{ref:l,className:"fixed z-50 rounded-lg overflow-hidden py-3 px-4",style:{top:"50%",left:"50%",transform:"translate(-50%, -50%)",background:"#FFFFFF",border:"1px solid #E5E7EB",boxShadow:"0 8px 32px rgba(0,0,0,0.16)",minWidth:"300px"},children:[t.jsx("div",{className:"font-semibold mb-3",style:{color:f.primary,fontSize:"13px"},children:"New Model View"}),t.jsx("label",{className:"block mb-1",style:{fontSize:I.xs,color:f.secondary},children:"Name"}),t.jsx("input",{autoFocus:!0,value:o,onChange:d=>a(d.target.value),onKeyDown:d=>{d.key==="Enter"&&c(),d.key==="Escape"&&r()},className:"w-full px-3 py-2 rounded-lg mb-3 focus:outline-none",style:{background:"#F9F9F8",border:"1px solid #E5E7EB",color:f.primary,fontSize:"13px"}}),t.jsx("label",{className:"block mb-1",style:{fontSize:I.xs,color:f.secondary},children:"Type"}),t.jsx("select",{value:s,onChange:d=>i(d.target.value),className:"w-full px-3 py-2 rounded-lg mb-4 focus:outline-none",style:{background:"#F9F9F8",border:"1px solid #E5E7EB",color:f.primary,fontSize:"13px"},children:Object.entries($e).map(([d,u])=>t.jsxs("option",{value:d,children:[u.fullName," (",u.code,")"]},d))}),t.jsxs("div",{className:"flex gap-2 justify-end",children:[t.jsx("button",{onClick:r,className:"px-3 py-1.5 rounded",style:{fontSize:"12px",color:f.secondary,background:"#F0F0ED"},children:"Cancel"}),t.jsx("button",{onClick:c,className:"px-3 py-1.5 rounded font-medium",style:{fontSize:"12px",color:"#FFFFFF",background:f.accent},children:"Create"})]})]})}const Id=new Set(["__unassigned","__model"]),Te="__uncategorized";function To(e){const r=n=>n.explorerLane==="architecture"?0:n.explorerLane==="assurance"?1:2;return e.slice().sort((n,o)=>{const a=r(n)-r(o);if(a!==0)return a;if(r(n)<2){const s=(n.explorerOrder??Number.MAX_SAFE_INTEGER)-(o.explorerOrder??Number.MAX_SAFE_INTEGER);if(s!==0)return s}return n.label.localeCompare(o.label)})}function Ro(e){if(e.length<2)return e;const r=e[0].split(" ");if(r.length<2)return e;const n=r[0];return e.every(a=>{const s=a.split(" ");return s.length>1&&s[0]===n})?e.map(a=>a.slice(n.length+1)):e}function Md(e){const r=To(((e==null?void 0:e.viewpoints)??[]).filter(o=>!Id.has(o.id))),n=new Set;for(const o of r)for(const a of Ut(e,o.id))n.add(a.id);return{viewpoints:r,uncategorized:((e==null?void 0:e.diagrams)??[]).filter(o=>!n.has(o.id))}}function Io(e){const r=new Map(e.map(s=>[s.id,s])),n=s=>{var l;const i=new Set([s.id]);for(let c=s.parentId;c;c=(l=r.get(c))==null?void 0:l.parentId){if(i.has(c))return;i.add(c)}return s.parentId&&r.has(s.parentId)?s.parentId:void 0},o=new Map,a=[];for(const s of e){const i=n(s);i?o.set(i,[...o.get(i)??[],s]):a.push(s)}return{rootViewpoints:a,viewpointChildren:o}}function _d(e){const r=[];for(const o of e){let a=r,s="",i;for(const l of(o.package??"").split("::").filter(Boolean)){s=s?`${s}::${l}`:l;let c=a.find(d=>d.id===s);c||(c={id:s,name:l,children:[],diagrams:[]},a.push(c)),i=c,a=c.children}if(a===r){let l=r.find(c=>c.id==="__unpackaged");l||(l={id:"__unpackaged",name:"No owning package",children:[],diagrams:[]},r.push(l)),l.diagrams.push(o)}else i.diagrams.push(o)}const n=o=>{o.sort((a,s)=>a.name.localeCompare(s.name)),o.forEach(a=>{a.diagrams.sort((s,i)=>s.name.localeCompare(i.name)),n(a.children)})};return n(r),r}function Pd({searchTerm:e}){const r=C(D=>D.model),n=C(D=>D.activeView),o=C(D=>D.setActiveView),a=C(D=>D.selectViewpoint),s=C(D=>D.deleteDiagram),i=C(D=>D.createPackage),l=C(D=>D.moveElementToPackage),c=je(),d=D=>{if(!D.elementId)return;const $=window.prompt(`Move “${D.name}” into which package? (qualified name, e.g. Views::Safety)`,D.package??"");$!==null&&Se(l(D.elementId,$.trim()))},u=D=>{const $=Ut(r,D).map(q=>q.package).filter(q=>!!q);if($.length===0)return;const E=new Map;for(const q of $)E.set(q,(E.get(q)??0)+1);return[...E.entries()].sort((q,X)=>X[1]-q[1]||q[0].length-X[0].length||q[0].localeCompare(X[0]))[0][0]},[m,b]=p.useState(new Set),[v,w]=p.useState(null),g=D=>{b($=>{const E=new Set($);return E.has(D)?E.delete(D):E.add(D),E})},{viewpoints:h,uncategorized:y}=p.useMemo(()=>Md(r),[r]),N=p.useMemo(()=>{const D=Ro(h.map($=>$.label));return new Map(h.map(($,E)=>[$.id,D[E]]))},[h]),{rootViewpoints:R,viewpointChildren:A}=p.useMemo(()=>Io(h),[h]),T=D=>{if(!e)return D;const $=e.toLowerCase();return D.filter(E=>E.name.toLowerCase().includes($)||E.diagramType.toLowerCase().includes($))},j=n.type==="diagram"?n.diagramId:null,S=T(y),k=p.useMemo(()=>{const D=new Map;for(const $ of S){const q=[...($.elementIds??[]).map(X=>{var z;return(z=r==null?void 0:r.elements[X])==null?void 0:z.layer}).filter(X=>!!X)].sort((X,z)=>{const G=Re.indexOf(X),J=Re.indexOf(z);return(G<0?Number.MAX_SAFE_INTEGER:G)-(J<0?Number.MAX_SAFE_INTEGER:J)})[0]??"other";D.set(q,[...D.get(q)??[],$])}return[...D.entries()].sort(([$],[E])=>{const q=Re.indexOf($),X=Re.indexOf(E);return(q<0?Number.MAX_SAFE_INTEGER:q)-(X<0?Number.MAX_SAFE_INTEGER:X)})},[S,r==null?void 0:r.elements]),U=(D,$)=>D.map(E=>t.jsx(Od,{diag:E,isSelected:j===E.id,onSelect:()=>{o({type:"diagram",diagramId:E.id}),a($==="__model"?null:$),c(No(E.diagramType,E.shortId??E.id))},onDelete:E.auto?void 0:()=>s(E.id),onMoveToPackage:E.elementId?()=>d(E):void 0},E.id)),H=(D,$)=>{const E=_d(D),q=(G,J=0)=>t.jsxs("div",{style:{marginLeft:J?"12px":0},children:[t.jsx("div",{className:"px-2 py-1 font-semibold",style:{color:f.muted,fontSize:I.xs},children:G.name}),t.jsx("div",{style:{marginLeft:"8px"},children:U(G.diagrams,$)}),G.children.map(ne=>q(ne,J+1))]},G.id);if(D.some(G=>G.package))return E.map(G=>q(G));const X=G=>G.group;if(!D.some(G=>X(G)))return U(D,$);const z=new Map;for(const G of D){const J=X(G)||"Other";z.set(J,[...z.get(J)??[],G])}return[...z.entries()].sort(([G],[J])=>G.localeCompare(J)).map(([G,J])=>t.jsxs("div",{style:{margin:"5px 4px 2px"},children:[t.jsx("div",{className:"px-2 py-1 font-semibold",style:{color:f.muted,fontSize:I.xs},children:G}),t.jsx("div",{style:{marginLeft:"8px"},children:U(J,$)})]},G))},O=(D,$)=>{var ne;const E=A.get(D.id)??[],q=m.has(D.id),X=(ne=D.visibleLayers)!=null&&ne[0]&&ue[D.visibleLayers[0]]||f.muted,z=Ut(r,D.id),G=T(z),J=(function Q(oe){return Ut(r,oe.id).length+(A.get(oe.id)??[]).reduce((ae,M)=>ae+Q(M),0)})(D);return t.jsxs("div",{className:"mb-0.5",style:{marginLeft:$?"14px":0},children:[t.jsxs("div",{className:"flex items-center gap-1.5 px-2 py-1.5 cursor-pointer select-none",style:{borderRadius:"4px",margin:"0 4px"},onMouseEnter:Q=>Q.currentTarget.style.background="#F0F0ED",onMouseLeave:Q=>Q.currentTarget.style.background="transparent",onClick:()=>{a(D.id),g(D.id)},children:[t.jsx(xe,{expanded:q,size:14,color:X}),t.jsx(Ie,{open:q,color:X}),t.jsx("span",{className:"font-semibold flex-1 truncate",style:{color:f.primary,fontSize:I.explorer.group},children:N.get(D.id)??D.label}),t.jsx(Kt,{count:J,color:X,title:E.length?`${z.length} views here, ${J} including the viewpoints it frames`:`${z.length} views`})]}),q&&t.jsxs("div",{style:{marginLeft:"16px"},children:[E.map(Q=>O(Q,$+1)),H(G,D.id),t.jsxs("button",{className:"flex items-center gap-1 px-2 py-1 w-full text-left",style:{borderRadius:"4px",margin:"2px 4px",color:f.accent,fontSize:I.xs,background:"transparent"},onMouseEnter:Q=>Q.currentTarget.style.background=f.accent+"12",onMouseLeave:Q=>Q.currentTarget.style.background="transparent",onClick:()=>w(D.id),children:[t.jsx("span",{style:{fontSize:"14px",lineHeight:1},children:"+"})," New View"]}),t.jsxs("button",{className:"flex items-center gap-1 px-2 py-1 w-full text-left",style:{borderRadius:"4px",margin:"2px 4px",color:f.accent,fontSize:I.xs,background:"transparent"},onMouseEnter:Q=>Q.currentTarget.style.background=f.accent+"12",onMouseLeave:Q=>Q.currentTarget.style.background="transparent",onClick:()=>{const Q=u(D.id),oe=window.prompt(Q?`New package under ${Q}`:"New SysML package name");oe!=null&&oe.trim()&&Se(i(oe.trim(),Q))},children:[t.jsx("span",{style:{fontSize:"14px",lineHeight:1},children:"+"})," New Package"]})]})]},D.id)};return t.jsxs("div",{className:"flex-1 overflow-y-auto py-1",style:{fontSize:I.explorer.item},children:[R.map(D=>O(D,0)),S.length>0&&t.jsxs("div",{className:"mb-0.5",children:[t.jsxs("div",{className:"flex items-center gap-1.5 px-2 py-1.5 cursor-pointer select-none",style:{borderRadius:"4px",margin:"0 4px"},onMouseEnter:D=>D.currentTarget.style.background="#F0F0ED",onMouseLeave:D=>D.currentTarget.style.background="transparent",onClick:()=>{a(null),g(Te)},children:[t.jsx(xe,{expanded:m.has(Te),size:14,color:f.muted}),t.jsx(Ie,{open:m.has(Te),color:f.muted}),t.jsx("span",{className:"font-semibold flex-1",style:{color:f.primary,fontSize:I.explorer.group},children:"Uncategorized"}),t.jsx("span",{title:"These views conform to no authored viewpoint. Bind an authored view with viewpointDefinition to file it.",style:{color:f.faint,fontSize:I.badge},children:"no viewpoint"}),t.jsx(Kt,{count:S.length,color:f.muted,title:`${S.length} views`})]}),m.has(Te)&&t.jsxs("div",{style:{marginLeft:"16px"},children:[S.some(D=>D.group)?H(S,Te):k.map(([D,$])=>t.jsxs("div",{style:{margin:"5px 4px 2px"},children:[t.jsx("div",{className:"px-2 py-1 font-semibold",style:{color:ue[D]??f.muted,fontSize:I.xs,borderLeft:`3px solid ${ue[D]??f.border}`},children:Le[D]??`${D.charAt(0).toUpperCase()}${D.slice(1)}`}),t.jsx("div",{style:{marginLeft:"8px"},children:U($,Te)})]},D)),t.jsxs("button",{className:"flex items-center gap-1 px-2 py-1 w-full text-left",style:{borderRadius:"4px",margin:"2px 4px",color:f.accent,fontSize:I.xs,background:"transparent"},onMouseEnter:D=>D.currentTarget.style.background=f.accent+"12",onMouseLeave:D=>D.currentTarget.style.background="transparent",onClick:()=>w("__model"),children:[t.jsx("span",{style:{fontSize:"14px",lineHeight:1},children:"+"})," New View"]})]})]}),v!==null&&t.jsx(Rd,{viewpointId:v,onClose:()=>w(null)})]})}function Od({diag:e,isSelected:r,onSelect:n,onDelete:o,onMoveToPackage:a}){var c;const[s,i]=p.useState(!1);$e[e.diagramType];const l=((c=e.elementIds)==null?void 0:c.length)??0;return t.jsxs("div",{className:"flex items-center gap-2 px-2 py-1 cursor-pointer group",style:{borderRadius:"4px",margin:"0 4px",background:r?f.accent+"18":s?"#F0F0ED":"transparent",fontSize:I.explorer.item},onMouseEnter:()=>i(!0),onMouseLeave:()=>i(!1),onClick:n,title:e.description,children:[t.jsx(Td,{diagram:e}),e.auto&&!e.sourceFile&&t.jsx("span",{className:"px-1 py-0.5 rounded",style:{background:"#F0F0ED",color:f.faint,fontSize:I.badge,fontWeight:600},children:"AUTO"}),t.jsx("span",{className:"flex-1",style:{minWidth:0},children:t.jsxs("span",{className:"truncate block",style:{color:r?f.accentDark:f.primary},children:[t.jsxs("span",{style:{color:f.muted},children:["[",e.shortId??e.id,"] "]}),e.name]})}),l>0&&t.jsx("span",{className:"px-1.5 py-0.5 rounded-full",style:{background:"#F0F0ED",color:f.muted,fontSize:I.explorer.count,fontWeight:600,minWidth:"18px",textAlign:"center"},children:l}),a&&s&&t.jsx("button",{onClick:d=>{d.stopPropagation(),a()},title:"Move this view into a package","aria-label":`Move ${e.name} into a package`,style:{background:"none",border:"none",cursor:"pointer",color:f.muted,fontSize:"12px",padding:"0 2px",lineHeight:1},children:"⌸"}),o&&s&&t.jsx("button",{onClick:d=>{d.stopPropagation(),o()},title:"Delete diagram",style:{background:"none",border:"none",cursor:"pointer",color:"#DC2626",fontSize:"12px",padding:"0 2px",lineHeight:1},children:"×"})]})}function zd(){const e=C(A=>A.setActiveView),r=C(A=>A.activeView),n=C(A=>A.dhfDocuments),o=C(A=>A.addDhfDocument),a=C(A=>A.removeDhfDocument),s=C(A=>A.dhfSettings),[i,l]=p.useState(new Set(Ke.map(A=>A.id))),[c,d]=p.useState(null),[u,m]=p.useState(null),b=r.type==="dhf-document"?r.docId:null,v=p.useMemo(()=>{const A=new Set(Ke.map(T=>T.label));return[...new Set(n.map(T=>T.group))].filter(T=>T&&!A.has(T)).sort()},[n]),w=C(A=>A.model),g=p.useMemo(()=>{const A=(w==null?void 0:w.elements)??{};return So(n,T=>{const j=T.systemId?A[T.systemId]:void 0;return j?{systemId:j.id,label:j.name||j.id}:T.systemId?{systemId:T.systemId,label:T.systemId}:{label:Wn}})},[n,w]),h=A=>[...Ke.filter(T=>A.some(j=>j.group===T.label)).map(T=>({key:T.id,groupId:T.id,label:T.label,color:T.color,docs:A.filter(j=>j.group===T.label)})),...v.filter(T=>A.some(j=>j.group===T)).map(T=>({key:`custom:${T}`,groupId:void 0,label:T,color:dd(T),docs:A.filter(j=>j.group===T)}))];function y(A){l(T=>{const j=new Set(T);return j.has(A)?j.delete(A):j.add(A),j})}function N(A,T){A.preventDefault(),A.stopPropagation(),m({x:A.clientX,y:A.clientY,groupId:T})}function R(A){const T=s.documentNumberingPrefix||"DOC",j=[];for(const S of A){const k=`${T}-${S.prefix}-`,U=[...n,...j].filter(q=>q.id.startsWith(k)),H=`${k}${String(U.length+1).padStart(3,"0")}`,O=q=>q.replace(/^---[\s\S]*?---\n?/,""),D=S.content!==null?O(S.content):(()=>{const q=ad(S.templateId);return q?O(q):`# ${S.title}
|
|
4047
4047
|
|
|
4048
4048
|
_[TODO: Add content]_
|
|
4049
|
-
`})()
|
|
4050
|
-
id: ${
|
|
4051
|
-
title: ${
|
|
4052
|
-
template: ${
|
|
4049
|
+
`})(),$=`---
|
|
4050
|
+
id: ${H}
|
|
4051
|
+
title: ${S.title}
|
|
4052
|
+
template: ${S.templateId}
|
|
4053
4053
|
---
|
|
4054
4054
|
|
|
4055
|
-
${j}`,E={id:z,title:C.title,group:C.groupLabel,templateId:C.templateId,content:L,createdAt:Date.now(),authors:"",approvers:""};o(E),F.push(E),F.length===1&&e({type:"dhf-document",docId:E.id})}d(null)}return p.useEffect(()=>{if(!u)return;function D(){m(null)}return window.addEventListener("click",D),()=>window.removeEventListener("click",D)},[u]),t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"flex-1 overflow-y-auto py-1",children:[t.jsx("div",{style:{padding:"4px 10px 8px"},children:t.jsxs("button",{onClick:()=>d({}),style:{width:"100%",padding:"7px 10px",borderRadius:"6px",border:"none",background:f.accentDark,fontSize:I.explorer.item,fontWeight:600,color:"#fff",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",gap:"6px"},onMouseEnter:D=>{D.currentTarget.style.background="#254B60"},onMouseLeave:D=>{D.currentTarget.style.background=f.accentDark},children:[t.jsx("span",{style:{fontSize:"14px",lineHeight:1},children:"+"})," New Document"]})}),g.map(D=>t.jsxs("div",{children:[g.length>1&&t.jsx("div",{style:{padding:"9px 10px 2px",fontSize:"10px",fontWeight:700,letterSpacing:".07em",textTransform:"uppercase",color:f.muted},children:D.label}),h(D.items).map(A=>{const F=`${D.systemId??"global"}:${A.key}`,C=i.has(A.key);return t.jsxs("div",{children:[t.jsxs("button",{onClick:()=>y(A.key),onContextMenu:A.groupId?k=>B(k,A.groupId):void 0,className:"w-full flex items-center gap-2 px-3 py-2 text-left",style:{fontSize:I.xs,fontWeight:600,color:f.secondary,borderRadius:"4px"},onMouseEnter:k=>k.currentTarget.style.background=f.surfaceAlt,onMouseLeave:k=>k.currentTarget.style.background="transparent",title:A.groupId?"Right-click to add documents":void 0,children:[t.jsx("span",{style:{display:"inline-block",width:"7px",height:"7px",borderRadius:"50%",background:A.color,flexShrink:0}}),t.jsx("span",{className:"flex-1 uppercase tracking-wide",style:{fontSize:"10px"},children:A.label}),t.jsx("span",{style:{fontSize:"10px",color:A.color,fontWeight:700},children:A.docs.length}),t.jsx(ke,{expanded:C,size:11})]}),C&&A.docs.map(k=>{const T=b===k.id;return t.jsxs("div",{style:{display:"flex",alignItems:"center",paddingLeft:"28px",paddingRight:"4px",background:T?`${A.color}18`:"transparent",borderLeft:T?`2px solid ${A.color}`:"2px solid transparent",cursor:"pointer"},onMouseEnter:z=>{T||(z.currentTarget.style.background=f.surfaceAlt)},onMouseLeave:z=>{z.currentTarget.style.background=T?`${A.color}18`:"transparent"},children:[t.jsxs("button",{onClick:()=>e({type:"dhf-document",docId:k.id}),style:{flex:1,display:"flex",alignItems:"center",gap:"6px",background:"none",border:"none",padding:"5px 0",fontSize:I.explorer.element,color:T?A.color:f.primary,fontWeight:T?600:400,cursor:"pointer",textAlign:"left"},children:[t.jsx(xt,{color:A.color}),t.jsx("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:k.id})]}),t.jsx("button",{onClick:z=>{z.stopPropagation(),a(k.id)},title:"Remove document",style:{background:"none",border:"none",cursor:"pointer",color:"#9CA3AF",padding:"2px 4px",borderRadius:"3px",fontSize:"12px",opacity:0,transition:"opacity 0.1s"},onMouseEnter:z=>{z.currentTarget.style.opacity="1",z.currentTarget.style.color="#ef4444"},onMouseLeave:z=>{z.currentTarget.style.opacity="0",z.currentTarget.style.color="#9CA3AF"},children:"×"})]},k.id)})]},F)})]},D.systemId??D.label)),n.length===0&&t.jsxs("div",{style:{padding:"16px 14px",fontSize:"11px",color:"#9CA3AF",lineHeight:"1.6"},children:["No documents yet. Use ",t.jsx("strong",{children:"+ New Document"})," to create one from a meMO template, a reusable project template, a new template, or a blank page."]})]}),u&&t.jsx("div",{style:{position:"fixed",zIndex:9998,left:u.x,top:u.y,background:"#fff",borderRadius:"8px",border:"1px solid #E5E7EB",boxShadow:"0 8px 24px rgba(0,0,0,0.12)",padding:"4px 0",minWidth:"160px"},onClick:D=>D.stopPropagation(),children:t.jsx("button",{onClick:()=>{d({initialGroupId:u.groupId}),m(null)},style:{display:"block",width:"100%",padding:"8px 14px",background:"none",border:"none",textAlign:"left",fontSize:"13px",color:"#1B3A4B",cursor:"pointer"},onMouseEnter:D=>D.currentTarget.style.background="#F3F4F6",onMouseLeave:D=>D.currentTarget.style.background="none",children:"Add document…"})}),c&&t.jsx(cd,{initialGroupId:c.initialGroupId,existingDocs:n,numberingPrefix:s.documentNumberingPrefix||"DOC",onCreate:N,onClose:()=>d(null)})]})}const Ro="memo-explorer-width",pt=300,mt=240,Fn=720,Od=320;function hn(){return typeof window>"u"||!window.innerWidth?Fn:Math.max(mt,Math.min(Fn,window.innerWidth-Od))}function zd(e){return Number.isFinite(e)?Math.min(Fn,Math.max(mt,e)):pt}function Ud(){if(typeof window>"u")return pt;try{const e=Number.parseInt(localStorage.getItem(Ro)??"",10);return Number.isFinite(e)?zd(e):pt}catch{return pt}}function Ld(){var N,D,A;const e=S(F=>F.sidebarCollapsed),r=S(F=>F.toggleSidebar);S(F=>F.explorerTab);const n=S(F=>F.setExplorerTab),o=S(F=>F.searchTerm),a=S(F=>F.setSearchTerm),s=S(F=>F.model),i=S(F=>F.activeMode),l=S(F=>F.activeView),c=l.type==="diagram"&&((D=(N=s==null?void 0:s.diagrams)==null?void 0:N.find(F=>F.id===l.diagramId))==null?void 0:D.viewpointId)&&((A=s.diagrams.find(F=>F.id===l.diagramId))==null?void 0:A.viewpointId)!=="__model",d=c||i==="diagram"?"Viewpoints":"Model Explorer",[u,m]=p.useState(Ud),[b,v]=p.useState(hn),w=Math.min(u,b),g=p.useRef(null),h=p.useCallback(F=>{m(Math.max(mt,Math.min(hn(),F)))},[]),y=p.useCallback(()=>{var F;(F=g.current)==null||F.call(g),g.current=null},[]),B=p.useCallback(F=>{if(F.button!==0)return;F.preventDefault(),y();const C=F.clientX,k=w,T=document.body.style.cursor,z=document.body.style.userSelect;document.body.style.cursor="col-resize",document.body.style.userSelect="none";const _=L=>{h(k+L.clientX-C)},j=()=>{window.removeEventListener("pointermove",_),window.removeEventListener("pointerup",j),window.removeEventListener("pointercancel",j),document.body.style.cursor=T,document.body.style.userSelect=z,g.current=null};g.current=j,window.addEventListener("pointermove",_),window.addEventListener("pointerup",j),window.addEventListener("pointercancel",j)},[h,w,y]);return p.useEffect(()=>{try{localStorage.setItem(Ro,String(Math.round(u)))}catch{}},[u]),p.useEffect(()=>{const F=()=>v(hn());return window.addEventListener("resize",F),()=>{window.removeEventListener("resize",F),y()}},[y]),p.useEffect(()=>{(l.type==="ontology"||l.type==="ontology-detail")&&n("ontologies")},[l.type]),e?t.jsxs("button",{type:"button",className:"flex flex-col items-center py-2 gap-1 flex-shrink-0",onClick:r,title:`Expand ${d}`,"aria-label":`Expand ${d}`,style:{width:36,background:"#FAFAF8",border:"none",borderRight:`1px solid ${f.border}`,cursor:"pointer"},children:[t.jsx("span",{style:{color:f.muted,fontSize:18,lineHeight:1},children:"›"}),t.jsx("span",{style:{color:f.muted,fontSize:10,writingMode:"vertical-rl"},children:d})]}):t.jsxs("div",{className:"flex flex-col overflow-hidden flex-shrink-0",style:{position:"relative",width:`${w}px`,background:f.surface,borderRight:`1px solid ${f.border}`},children:[t.jsxs("div",{className:"flex items-center justify-between px-3 py-2",style:{background:f.surfaceAlt,borderBottom:`1px solid ${f.border}`,flexShrink:0},children:[t.jsx("span",{style:{fontSize:I.xs,fontWeight:600,color:"#374151"},children:d}),t.jsx("button",{type:"button",onClick:r,title:`Collapse ${d}`,"aria-label":`Collapse ${d}`,style:{width:28,height:28,border:`1px solid ${f.border}`,borderRadius:5,background:"#FFFFFF",color:f.muted,cursor:"pointer",fontSize:18,lineHeight:1},children:"‹"})]}),l.type==="diagram"&&!c?t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"px-3 py-2",style:{borderBottom:`1px solid ${f.border}`},children:t.jsxs("div",{className:"flex gap-1",children:[t.jsx("input",{type:"text",placeholder:"Search elements...",value:o,onChange:F=>a(F.target.value),onKeyDown:F=>{F.key==="Enter"&&window.dispatchEvent(new Event("memo:expand-explorer-search"))},className:"flex-1 min-w-0 px-3 py-2 rounded-lg focus:outline-none",style:{background:f.surfaceAlt,border:`1px solid ${f.border}`,color:f.primary,fontSize:I.explorer.search}}),t.jsx("button",{onClick:()=>window.dispatchEvent(new Event("memo:collapse-explorer-tree")),title:"Collapse all Explorer groups","aria-label":"Collapse all Explorer groups",className:"rounded-lg flex items-center justify-center flex-shrink-0",style:{width:28,background:f.surfaceAlt,border:`1px solid ${f.border}`,color:f.secondary,cursor:"pointer"},children:t.jsx(Br,{})})]})}),t.jsx(Ar,{searchTerm:o})]}):i==="dashboard"?t.jsx(tl,{}):i==="dhf"?t.jsx(Pd,{}):i==="diagram"||c?t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"px-3 py-2",style:{borderBottom:`1px solid ${f.border}`},children:t.jsx("input",{type:"text",placeholder:"Search viewpoints and views...",value:o,onChange:F=>a(F.target.value),className:"w-full px-3 py-2 rounded-lg focus:outline-none",style:{background:f.surfaceAlt,border:`1px solid ${f.border}`,color:f.primary,fontSize:I.explorer.search}})}),t.jsx(Md,{searchTerm:o})]}):i==="ontology"?t.jsx(el,{}):i==="scenario"?t.jsx(p.Suspense,{fallback:t.jsx("div",{className:"p-3",style:{color:f.faint,fontSize:I.explorer.item},children:"Loading use cases…"}),children:t.jsx(hd,{explorerOnly:!0})}):t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"px-3 py-2",style:{borderBottom:`1px solid ${f.border}`},children:t.jsxs("div",{className:"flex gap-1",children:[t.jsx("input",{type:"text",placeholder:"Search elements...",value:o,onChange:F=>a(F.target.value),onKeyDown:F=>{F.key==="Enter"&&window.dispatchEvent(new Event("memo:expand-explorer-search"))},className:"flex-1 min-w-0 px-3 py-2 rounded-lg focus:outline-none",style:{background:f.surfaceAlt,border:`1px solid ${f.border}`,color:f.primary,fontSize:I.explorer.search}}),t.jsx("button",{onClick:()=>window.dispatchEvent(new Event("memo:collapse-explorer-tree")),title:"Collapse all Explorer groups","aria-label":"Collapse all Explorer groups",className:"rounded-lg flex items-center justify-center flex-shrink-0",style:{width:28,background:f.surfaceAlt,border:`1px solid ${f.border}`,color:f.secondary,cursor:"pointer"},children:t.jsx(Br,{})})]})}),t.jsx(Ar,{searchTerm:o})]}),t.jsx("div",{className:"memo-explorer-resizer",role:"separator","aria-label":"Resize Model Explorer","aria-orientation":"vertical","aria-valuemin":mt,"aria-valuemax":b,"aria-valuenow":Math.round(w),tabIndex:0,title:"Drag to resize · Double-click to reset",onPointerDown:B,onDoubleClick:()=>h(pt),onKeyDown:F=>{F.key==="ArrowLeft"?(F.preventDefault(),h(w-20)):F.key==="ArrowRight"?(F.preventDefault(),h(w+20)):F.key==="Home"?(F.preventDefault(),h(mt)):F.key==="End"&&(F.preventDefault(),h(b))}})]})}function qd(e,r){if(r.length===0)return!0;const n=`${e.label??e.value} ${e.group??""} ${e.keywords??""}`.toLowerCase();return r.every(o=>n.includes(o))}function $d(e,r){const n=r.trim().toLowerCase().split(/\s+/).filter(Boolean);if(n.length===0)return e;const o=[],a=[];for(const s of e){if(!qd(s,n))continue;(s.label??s.value).toLowerCase().startsWith(n[0])?o.push(s):a.push(s)}return[...o,...a]}function Zt({label:e,options:r,selected:n,onChange:o,allLabel:a="All",placeholder:s="Type to filter…",width:i=150,title:l,describedAs:c,maxVisible:d=300,parentOf:u,iconOnly:m,align:b="left"}){var V;const[v,w]=p.useState(!1),[g,h]=p.useState(""),[y,B]=p.useState(0),[N,D]=p.useState(new Set),A=p.useRef(null),F=p.useRef(null),C=p.useMemo(()=>new Set(n),[n]),k=p.useMemo(()=>$d(r,g),[r,g]),T=k.length>d?k.slice(0,d):k,z=k.length-T.length,_=p.useMemo(()=>{if(!u)return null;const U=new Map(r.map(M=>[M.value,M])),$=new Set(k.map(M=>M.value));for(const M of[...$]){let x=u.get(M);for(;x&&U.has(x)&&!$.has(x);)$.add(x),x=u.get(x)}const K=new Map;for(const M of $){const x=u.get(M);if(x&&$.has(x)){const P=K.get(x)??[];P.push(M),K.set(x,P)}}const J=(M,x)=>{var P,q;return(((P=U.get(M))==null?void 0:P.label)??M).localeCompare(((q=U.get(x))==null?void 0:q.label)??x)};K.forEach(M=>M.sort(J));const Y=[...$].filter(M=>!u.get(M)||!$.has(u.get(M))).sort(J),Q=[],ee=(M,x)=>{const P=U.get(M);if(!P)return;const q=K.get(M)??[];Q.push({option:P,depth:x,children:q}),q.length>0&&N.has(M)&&q.forEach(X=>ee(X,x+1))};return Y.forEach(M=>ee(M,0)),Q},[r,k,u,N]);p.useEffect(()=>{B(0)},[g,v]),p.useEffect(()=>{if(!v)return;const U=$=>{var K;(K=A.current)!=null&&K.contains($.target)||(w(!1),h(""))};return document.addEventListener("mousedown",U),()=>document.removeEventListener("mousedown",U)},[v]),p.useEffect(()=>{var U;v&&((U=F.current)==null||U.focus())},[v]);const j=p.useCallback(U=>{o(C.has(U)?n.filter($=>$!==U):[...n,U])},[o,n,C]),L=p.useCallback(U=>{if(!u)return j(U);const $=new Set([U]);let K=!0;for(;K;){K=!1;for(const[Y,Q]of u)$.has(Q)&&!$.has(Y)&&($.add(Y),K=!0)}const J=[...$].every(Y=>C.has(Y));o(J?n.filter(Y=>!$.has(Y)):[...new Set([...n,...$])])},[u,j,n,C,o]),E=U=>{if(U.key==="Escape"){w(!1),h("");return}U.key==="ArrowDown"&&(U.preventDefault(),B($=>Math.min($+1,T.length-1))),U.key==="ArrowUp"&&(U.preventDefault(),B($=>Math.max($-1,0))),U.key==="Enter"&&T[y]&&(U.preventDefault(),j(T[y].value))},O=n.length===0?a:n.length===1?((V=r.find(U=>U.value===n[0]))==null?void 0:V.label)??n[0]:`${n.length} selected`;return t.jsxs("div",{ref:A,style:{position:"relative",display:"flex",alignItems:"center",gap:"5px"},children:[t.jsx("span",{style:{fontSize:I.xs,color:f.muted,whiteSpace:"nowrap"},children:e}),t.jsx("button",{type:"button","aria-haspopup":"listbox","aria-expanded":v,title:l??(n.length>0?n.join(", "):a),onClick:()=>w(U=>!U),style:m?{width:24,height:24,display:"flex",alignItems:"center",justifyContent:"center",borderRadius:"4px",background:"transparent",border:"none",color:n.length>0?f.accent:f.muted,cursor:"pointer",padding:0}:{width:i,display:"flex",alignItems:"center",justifyContent:"space-between",gap:"6px",padding:"3px 7px",borderRadius:"5px",border:`1px solid ${n.length>0?f.accent:f.border}`,background:f.surface,fontSize:I.xs,color:n.length>0?f.primary:f.muted,cursor:"pointer",textAlign:"left"},children:m?t.jsx("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:t.jsx("polygon",{points:"22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3"})}):t.jsxs(t.Fragment,{children:[t.jsx("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:O}),t.jsx("span",{style:{fontSize:"9px",color:f.faint},children:"▼"})]})}),v&&t.jsxs("div",{role:"listbox",style:{position:"absolute",top:"calc(100% + 4px)",...b==="right"?{right:0}:{left:0},zIndex:60,width:Math.max(i+70,220),background:f.surface,border:`1px solid ${f.border}`,borderRadius:"7px",boxShadow:Di.lg,overflow:"hidden"},children:[t.jsx("input",{ref:F,value:g,onChange:U=>h(U.target.value),onKeyDown:E,placeholder:s,"aria-label":`Filter ${c??e}`,style:{width:"100%",padding:"7px 9px",border:"none",borderBottom:`1px solid ${f.borderLight}`,fontSize:I.xs,outline:"none",color:f.primary}}),t.jsxs("div",{style:{maxHeight:"260px",overflowY:"auto"},children:[k.length===0&&t.jsxs("div",{style:{padding:"10px",fontSize:I.xs,color:f.faint},children:["Nothing matches ","“",g,"”"]}),(_??T.map(U=>({option:U,depth:0,children:[]}))).map(({option:U,depth:$,children:K},J)=>{var ee;const Y=C.has(U.value),Q=!_&&U.group&&U.group!==((ee=T[J-1])==null?void 0:ee.group)?U.group:null;return t.jsxs("div",{children:[Q&&t.jsx("div",{style:{position:"sticky",top:0,zIndex:1,padding:"4px 9px 2px",fontSize:"10px",fontWeight:600,color:f.faint,background:f.surface,borderBottom:`1px solid ${f.borderLight}`},children:Q}),t.jsxs("div",{role:"option","aria-selected":Y,onMouseEnter:()=>B(J),onClick:()=>L(U.value),style:{display:"flex",alignItems:"center",gap:"7px",padding:"5px 9px 5px "+(9+$*16)+"px",cursor:"pointer",fontSize:I.xs,background:J===y?f.surfaceAlt:"transparent",color:f.primary},children:[_&&t.jsx("button",{type:"button","aria-label":K.length>0?`${N.has(U.value)?"Collapse":"Expand"} ${U.label??U.value}`:void 0,disabled:K.length===0,onClick:M=>{M.stopPropagation(),K.length!==0&&D(x=>{const P=new Set(x);return P.has(U.value)?P.delete(U.value):P.add(U.value),P})},style:{width:"13px",padding:0,border:"none",background:"none",color:f.muted,cursor:K.length>0?"pointer":"default"},children:K.length>0?N.has(U.value)?"▾":"▸":""}),t.jsx("input",{type:"checkbox",readOnly:!0,checked:Y,style:{accentColor:f.accent}}),U.color&&t.jsx("span",{style:{width:"8px",height:"8px",borderRadius:"2px",background:U.color,flexShrink:0}}),t.jsx("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:U.label??U.value}),U.hint&&t.jsx("span",{style:{color:f.faint,fontSize:"11px"},children:U.hint})]})]},U.value)}),z>0&&t.jsxs("div",{style:{padding:"7px 9px",fontSize:"11px",color:f.faint,borderTop:`1px solid ${f.borderLight}`},children:[z.toLocaleString()," more match. Keep typing to narrow, or use"," ","Select matches to take all ",k.length.toLocaleString(),"."]})]}),t.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"10px",padding:"6px 9px",borderTop:`1px solid ${f.borderLight}`},children:[t.jsxs("button",{type:"button",onClick:()=>o(k.map(U=>U.value)),style:{fontSize:"11px",color:"#2563EB",background:"none",border:"none",cursor:"pointer",padding:0},children:["Select ",g?`matches (${k.length})`:`all (${r.length})`]}),t.jsx("button",{type:"button",onClick:()=>o([]),style:{fontSize:"11px",color:f.muted,background:"none",border:"none",cursor:"pointer",padding:0},children:"None"}),n.length>0&&t.jsxs("span",{style:{marginLeft:"auto",fontSize:"11px",color:f.faint},children:[n.length," picked"]})]})]})]})}const Nr="#E5E5E0",Vd="#2DD4A8",Kt=40;function Tr(e,r){var s;const n=e.id.toLowerCase(),o=((s=e.shortId)==null?void 0:s.toLowerCase())??"",a=e.name.toLowerCase();return n===r||o===r?0:n.startsWith(r)||o.startsWith(r)?1:a.startsWith(r)?2:n.includes(r)||a.includes(r)?3:4}function Wd(e,r){const n=r.query.trim().toLowerCase();return n?Object.values(e).filter(o=>o.id!==r.excludeId).filter(o=>[o.id,o.shortId,o.name,o.kind].filter(Boolean).join(" ").toLowerCase().includes(n)).sort((o,a)=>Tr(o,n)-Tr(a,n)||o.name.localeCompare(a.name)).slice(0,r.limit??Kt):[]}function Hd(e){const r=new Map;for(const n of e){let o=r.get(n.kind);o||(o={kind:n.kind,layer:n.layer,elements:[]},r.set(n.kind,o)),o.elements.push(n)}return[...r.values()]}function Kd(e,r){return Wd(e,{query:r.query,excludeId:r.source.id,limit:Object.keys(e).length}).filter(n=>!r.filterKinds||r.filterKinds.length===0||r.filterKinds.includes(n.kind)).filter(n=>Ye(r.source,n,r.registries).length>0).slice(0,r.limit??Kt)}function Gd({element:e,model:r,registries:n,enabled:o,onCreate:a}){var C;const[s,i]=p.useState(""),[l,c]=p.useState(!1),[d,u]=p.useState(0),[m,b]=p.useState([]),v=p.useRef(null),w=p.useRef(null);p.useEffect(()=>{i(""),c(!1),u(0),b([])},[e.id]);const g=p.useMemo(()=>Array.from(new Set(Object.values(r.elements).map(k=>k.kind))).sort(),[r.elements]),h=p.useMemo(()=>Kd(r.elements,{query:s,source:e,registries:n,filterKinds:m}),[r.elements,e,s,n,m]),y=p.useMemo(()=>Hd(h),[h]),B=p.useMemo(()=>y.flatMap(k=>k.elements),[y]);p.useEffect(()=>{u(0)},[s]),p.useEffect(()=>{var k,T;l&&((T=(k=w.current)==null?void 0:k.querySelector('[data-active="true"]'))==null||T.scrollIntoView({block:"nearest"}))},[d,l]);const N=p.useCallback(k=>{const T=Ye(e,k,n);if(T.length>0){const z=["trace","satisfies","implements","verifies","validates"],j=T.find(L=>z.some(E=>L.definition.name.toLowerCase().includes(E)||L.definition.label.toLowerCase().includes(E)))??T[0];a({type:j.definition.name,sourceId:j.sourceId,targetId:j.targetId,direction:j.direction})}i(""),c(!1)},[e,n,a]),D=p.useCallback(()=>{i(""),c(!1)},[]),A=p.useCallback(k=>{if(k.key==="Escape"){if(l){c(!1);return}D();return}if(!l||B.length===0){k.key==="ArrowDown"&&B.length>0&&(k.preventDefault(),c(!0));return}if(k.key==="ArrowDown")k.preventDefault(),u(T=>(T+1)%B.length);else if(k.key==="ArrowUp")k.preventDefault(),u(T=>(T-1+B.length)%B.length);else if(k.key==="Enter"){k.preventDefault();const T=B[d];T&&N(T)}},[l,B,d,N,D]),F=(C=B[d])==null?void 0:C.id;return t.jsx("div",{className:"mt-1.5",style:{opacity:o?1:.6},children:t.jsxs("div",{className:"relative",children:[t.jsxs("div",{className:"flex gap-2",children:[t.jsx("input",{ref:v,value:s,disabled:!o,onChange:k=>{i(k.target.value),c(!0)},onFocus:()=>{s.trim()&&c(!0)},onBlur:()=>{window.setTimeout(()=>c(!1),120)},onKeyDown:A,placeholder:o?"Link to… type an element ID or name":"Connect to the dev server to author relationships","aria-label":"Link this element to another","aria-expanded":l,"aria-controls":"memo-quick-add-matches","aria-activedescendant":l&&F?`memo-quick-add-${F}`:void 0,role:"combobox",autoComplete:"off",className:"flex-1 px-2 py-1 rounded focus:outline-none",style:{fontSize:I.xs,background:"#FFFFFF",border:`1px solid ${l&&s.trim()?Vd:Nr}`,color:"#374151",minWidth:0}}),t.jsx("div",{style:{flexShrink:0},children:t.jsx(Zt,{label:"",options:g.map(k=>({value:k,label:k})),selected:m,onChange:b,allLabel:"All Types",iconOnly:!0})})]}),l&&s.trim()&&t.jsxs("div",{id:"memo-quick-add-matches",ref:w,role:"listbox",className:"absolute left-0 right-0 z-20 mt-1 rounded overflow-y-auto",style:{maxHeight:240,background:"#FFFFFF",border:`1px solid ${Nr}`,boxShadow:"0 8px 24px rgba(15,23,42,0.14)"},children:[B.length===0?t.jsxs("div",{className:"px-2 py-2",style:{fontSize:I.xs,color:"#9CA3AF"},children:["No MEMO-legal trace target matches “",s.trim(),"”."]}):y.map(k=>t.jsxs("div",{children:[t.jsx(Yd,{kind:k.kind,layer:k.layer,count:k.elements.length}),k.elements.map(T=>t.jsx(Jd,{element:T,active:T.id===F,onSelect:()=>N(T)},T.id))]},k.kind)),h.length===Kt&&t.jsxs("div",{className:"px-2 py-1",style:{fontSize:"10px",color:"#9CA3AF"},children:["Showing the first ",Kt," matches — keep typing to narrow."]})]})]})})}function Yd({kind:e,layer:r,count:n}){const o=ce[r]||"#666";return t.jsxs("div",{className:"flex items-center gap-1.5 px-2 py-1",style:{background:"#FAFAF8",borderBottom:"1px solid #F0F0ED",position:"sticky",top:0},children:[t.jsx("span",{className:"w-2 h-2 flex-shrink-0",style:{background:o,borderRadius:2}}),t.jsx("span",{style:{fontSize:"10px",fontWeight:600,color:"#6B7280"},children:e}),t.jsx("span",{className:"ml-auto",style:{fontSize:"10px",color:"#D1D5DB"},children:n})]})}function Jd({element:e,active:r,onSelect:n}){return t.jsxs("div",{id:`memo-quick-add-${e.id}`,role:"option","aria-selected":r,"data-active":r,onMouseDown:o=>{o.preventDefault(),n()},className:"flex items-center gap-1.5 px-2 py-1 cursor-pointer",style:{background:r?"#2DD4A818":"transparent"},children:[t.jsx("span",{className:"truncate",style:{fontSize:I.xs,color:"#1a1a1a"},children:e.name||e.id}),t.jsx("span",{className:"ml-auto flex-shrink-0 font-mono truncate",style:{fontSize:"10px",color:"#9CA3AF",maxWidth:110},title:e.id,children:e.shortId??e.id})]})}const Xd={text:"14px",heading:"13px",meta:"12px",valuePadding:"9px 12px",fieldGap:"10px",sectionPadding:"0 0 18px 0",radius:"10px",twoColumnAttributes:!0},Qd={text:"12px",heading:"12px",meta:"11px",valuePadding:"4px 7px",fieldGap:"5px",sectionPadding:"0 0 10px 0",radius:"7px",twoColumnAttributes:!1};function Ve(e){return e==="page"?Xd:Qd}const Io={kind:"editable"},Zd={id:"The model identifier. It is referenced by relationships and views, so it is not editable here.",name:"The element name in SysML. Renaming touches every reference, so do it in the source file."};function Rr(e){const r=Zd[e];return r?{kind:"identity",reason:r}:Io}function Ru(e){return e==="doc"?Io:{kind:"derived",reason:`"${e}" is derived from the SysML source when the model is built.`}}function An(e){return e.kind==="editable"}function Mo(e){switch(e.kind){case"editable":return"Click to edit";case"identity":return"Identifier — not editable here";case"derived":return"Derived from source — not editable"}}function ec({title:e,count:r,actions:n,density:o,defaultOpen:a=!0,collapsible:s=!0,children:i}){const[l,c]=p.useState(a),d=Ve(o),u=o==="page",m=s?l:!0;return t.jsxs("section",{style:{padding:u?"16px 18px":d.sectionPadding,border:u?"1px solid rgba(60,60,67,0.12)":"none",borderBottom:u?"1px solid rgba(60,60,67,0.12)":`1px solid ${f.borderLight}`,borderRadius:u?14:0,background:u?f.surface:"transparent",boxShadow:u?"0 1px 2px rgba(15,23,42,0.04)":"none",marginBottom:u?14:0},children:[t.jsxs("header",{className:"flex items-center gap-2",style:{cursor:s?"pointer":"default",padding:u?"0 0 10px 0":"6px 10px",borderRadius:u?0:"6px",margin:u?0:"2px 4px"},onClick:s?()=>c(b=>!b):void 0,onMouseEnter:b=>{!u&&s&&(b.currentTarget.style.background=f.surfaceAlt)},onMouseLeave:b=>{u||(b.currentTarget.style.background="transparent")},children:[t.jsx("h3",{style:{flex:1,margin:0,fontSize:u?d.heading:"10px",fontWeight:u?700:"bold",color:u?f.primary:"#6B7280",letterSpacing:u?0:"0.05em",textTransform:u?"none":"uppercase"},children:e}),typeof r=="number"&&(u?t.jsx("span",{style:{fontSize:d.meta,color:f.faint},children:r}):t.jsx("span",{className:"px-1.5 py-0.5 rounded-md font-medium text-[10px]",style:{background:"#F3F4F6",color:"#6B7280"},children:r})),n&&t.jsx("span",{onClick:b=>b.stopPropagation(),children:n}),s&&t.jsx("span",{style:{color:"#D1D5DB",fontSize:u?d.meta:14},children:m?"▾":"▸"})]}),m&&t.jsx("div",{style:{padding:u?0:"0 14px 8px"},children:i})]})}function Ir({value:e,editability:r,density:n,mono:o}){const a=Ve(n),s=r.kind==="editable"?"":r.reason;return t.jsxs("div",{title:s||Mo(r),style:{display:"flex",alignItems:"center",gap:6,padding:a.valuePadding,borderRadius:a.radius,background:f.surfaceAlt,border:"1px solid transparent",color:f.muted,fontSize:a.text,fontFamily:o?"ui-monospace, SFMono-Regular, Menlo, monospace":"inherit",cursor:"default",minWidth:0},children:[t.jsx("span",{className:"truncate",style:{flex:1},children:e||t.jsx("span",{style:{color:f.faint,fontStyle:"italic"},children:"none"})}),t.jsx("span",{"aria-hidden":!0,style:{fontSize:a.meta,color:"#C7CBD1",flexShrink:0},children:"🔒"})]})}function ot({value:e,onSave:r,density:n,multiline:o,placeholder:a,autoFocus:s,compact:i=!1}){const[l,c]=p.useState(!1),[d,u]=p.useState(!1),[m,b]=p.useState(e),v=Ve(n),w=p.useRef(!1),g=p.useRef(null),[h,y]=p.useState(null),[B,N]=p.useState(0),D=S(j=>j.model),A=S(j=>j.inspectElement);p.useEffect(()=>{b(e)},[e]);const F=p.useMemo(()=>h===null||!D?[]:Object.values(D.elements).filter(j=>{const L=(j.shortId??"").toLowerCase(),E=j.id.toLowerCase(),O=j.name.toLowerCase();return L.includes(h)||E.includes(h)||O.includes(h)}).slice(0,10),[h,D]),C=p.useCallback(()=>{w.current||h===null&&(w.current=!0,c(!1),m!==e&&r(m))},[m,e,r,h]),k=p.useCallback(j=>{var L;if(h!==null){if(j.key==="ArrowDown"){j.preventDefault(),N(E=>(E+1)%Math.max(1,F.length));return}if(j.key==="ArrowUp"){j.preventDefault(),N(E=>(E-1+F.length)%Math.max(1,F.length));return}if(j.key==="Enter"||j.key==="Tab"){j.preventDefault();const E=F[B];if(E){const O=((L=g.current)==null?void 0:L.selectionStart)??0,V=m.slice(0,O),U=m.slice(O),$=V.match(/(?:^|\s)@([a-zA-Z0-9_-]*)$/);if($){const K=O-$[1].length-1,J=`[${E.name}](@${E.shortId??E.id}) `,Y=m.slice(0,K)+J+U;b(Y),y(null),setTimeout(()=>{g.current&&(g.current.selectionStart=K+J.length,g.current.selectionEnd=g.current.selectionStart,g.current.focus())},0)}}else y(null);return}if(j.key==="Escape"){j.preventDefault(),y(null);return}}j.key==="Enter"&&!o&&(j.preventDefault(),C()),j.key==="Escape"&&(w.current=!0,b(e),c(!1))},[C,o,e,h,F,B,m]),T=j=>{const L=j.target.value;b(L);const E=j.target.selectionStart??0,V=L.slice(0,E).match(/(?:^|\s)@([a-zA-Z0-9_-]*)$/);V?(y(V[1].toLowerCase()),N(0)):y(null)},z=()=>{w.current=!1,b(e),c(!0)};if(l){const j={ref:g,value:m,autoFocus:!0,onChange:T,onBlur:()=>{setTimeout(C,200)},onKeyDown:k,placeholder:a,style:{width:"100%",padding:i?"5px 8px":v.valuePadding,borderRadius:i?"6px":v.radius,border:`1px solid ${f.accent}`,boxShadow:`0 0 0 3px ${f.accent}25`,background:f.surface,color:f.primary,fontSize:v.text,fontFamily:"inherit",outline:"none",...o?{minHeight:n==="page"?"110px":"54px",resize:"vertical",lineHeight:1.6}:{}}};return t.jsxs("div",{style:{position:"relative",width:"100%"},children:[o?t.jsx("textarea",{...j}):t.jsx("input",{type:"text",...j}),h!==null&&F.length>0&&t.jsx("div",{style:{position:"absolute",top:"100%",left:0,right:0,marginTop:4,background:"#fff",border:"1px solid #E5E7EB",borderRadius:6,boxShadow:"0 4px 12px rgba(0,0,0,0.1)",zIndex:100,maxHeight:200,overflowY:"auto"},children:F.map((L,E)=>t.jsxs("div",{style:{padding:"6px 12px",fontSize:13,cursor:"pointer",background:E===B?"#F3F4F6":"#fff",display:"flex",justifyContent:"space-between"},onClick:()=>{var K,J;const O=((K=g.current)==null?void 0:K.selectionStart)??m.length,V=m.slice(0,O),U=m.slice(O),$=V.match(/(?:^|\s)@([a-zA-Z0-9_-]*)$/);if($){const Y=O-$[1].length-1,Q=m.slice(0,Y)+`[${L.name}](@${L.shortId??L.id}) `+U;b(Q)}y(null),(J=g.current)==null||J.focus()},children:[t.jsx("span",{style:{fontWeight:500,color:"#111827"},children:L.name}),t.jsx("span",{style:{color:"#6B7280",fontSize:11},children:L.shortId??L.id})]},L.id))})]})}const _=j=>{if(!j)return a??"Click to add…";if(!D)return j;const L=/(\[[^\]]+\]\(@[a-zA-Z0-9_-]+\)|@[a-zA-Z0-9_-]+)/g;return j.split(L).map((O,V)=>{let U="",$="";if(O.startsWith("@"))U=O.slice(1);else if(O.startsWith("[")&&O.includes("](@")){const K=O.match(/\[([^\]]+)\]\(@([a-zA-Z0-9_-]+)\)/);K&&($=K[1],U=K[2])}if(U){const K=Object.values(D.elements).find(J=>(J.shortId??J.id)===U)||D.elements[U];if(K)return t.jsx("span",{onClick:J=>{J.stopPropagation(),A(K.id)},style:{color:f.accent,cursor:"pointer",fontWeight:600,background:"#E0F2FE",padding:"1px 4px",borderRadius:"4px"},title:K.name,children:$||`@${K.shortId??K.id}`},V)}return t.jsx("span",{children:O},V)})};return t.jsxs("div",{role:"button",tabIndex:0,title:"Click to edit",onClick:z,onFocus:()=>u(!0),onBlur:()=>u(!1),onKeyDown:j=>{(j.key==="Enter"||j.key===" ")&&(j.preventDefault(),z())},onMouseEnter:()=>u(!0),onMouseLeave:()=>u(!1),style:{display:"flex",alignItems:"flex-start",gap:6,padding:i?"5px 8px":v.valuePadding,borderRadius:i?"6px":v.radius,background:d?"#F3F4F6":"transparent",border:`1px solid ${d?"#E5E7EB":"transparent"}`,boxShadow:"none",color:e?f.primary:f.faint,fontSize:v.text,cursor:"text",transition:"background-color 150ms ease, border-color 150ms ease",lineHeight:o?1.6:1.4,whiteSpace:o?"pre-wrap":"nowrap",overflow:"hidden",minWidth:0},children:[t.jsx("span",{style:{flex:1,minWidth:0,overflow:"hidden",textOverflow:"ellipsis"},children:_(e)}),t.jsx("span",{"aria-hidden":!0,style:{flexShrink:0,fontSize:v.meta,color:f.accent,opacity:d?1:0,transition:"opacity 150ms ease"},children:"✎"})]})}function Iu({label:e,editability:r,density:n,children:o}){const a=Ve(n);return t.jsxs("div",{style:{minWidth:0},children:[t.jsxs("div",{className:"flex items-center gap-1.5",style:{marginBottom:4,fontSize:a.meta,color:f.muted},children:[t.jsx("span",{style:{fontFamily:"ui-monospace, SFMono-Regular, Menlo, monospace"},children:e}),t.jsx("span",{className:"sr-only",children:Mo(r)}),!An(r)&&t.jsx("span",{title:r.kind==="editable"?"":r.reason,style:{fontSize:"10px",padding:"0 4px",borderRadius:4,background:f.surfaceAlt,color:f.faint,border:`1px solid ${f.border}`},children:r.kind==="identity"?"identifier":"derived"})]}),o]})}function Mu({density:e}){const r=Ve(e);return t.jsxs("div",{className:"flex items-center gap-4 flex-wrap",style:{fontSize:r.meta,color:f.faint},children:[t.jsxs("span",{className:"flex items-center gap-1.5",children:[t.jsx("span",{style:{color:f.accent},children:"✎"})," editable here"]}),t.jsx("span",{children:"Identity and source metadata are read-only"})]})}function tc(e,r,n,o){var c;const a=new Map,s=(d,u)=>{var v;const m=u==="outgoing"?d.targetId:d.sourceId,b=a.get(m)??{id:m,element:n.elements[m],links:[]};b.links.push({relationship:d,direction:u,label:((v=On(d.type,o))==null?void 0:v.label)??d.type}),a.set(m,b)};e.forEach(d=>s(d,"outgoing")),r.forEach(d=>s(d,"incoming"));const i=new Map;for(const d of a.values()){const u=((c=d.element)==null?void 0:c.layer)||"other";i.set(u,[...i.get(u)??[],d])}const l=d=>{const u=Te.indexOf(d);return u<0?Number.MAX_SAFE_INTEGER:u};return[...i.entries()].map(([d,u])=>({layer:d,elements:u.sort((m,b)=>{var v,w;return(((v=m.element)==null?void 0:v.name)??m.id).localeCompare(((w=b.element)==null?void 0:w.name)??b.id)})})).sort((d,u)=>l(d.layer)-l(u.layer)||d.layer.localeCompare(u.layer))}function nc({element:e,model:r,registries:n,outgoing:o,incoming:a,density:s,onNavigate:i,onCreate:l,onDelete:c}){const[d,u]=p.useState(""),m=p.useMemo(()=>tc(o,a,r,n),[o,a,r,n]),b=d.trim().toLowerCase(),v=p.useMemo(()=>m.map(g=>({...g,elements:g.elements.filter(h=>{var y,B,N;return!b||[(y=h.element)==null?void 0:y.name,(B=h.element)==null?void 0:B.kind,(N=h.element)==null?void 0:N.shortId,h.id,g.layer,...h.links.map(D=>D.label)].filter(Boolean).join(" ").toLowerCase().includes(b)})})).filter(g=>g.elements.length>0),[m,b]),w=m.reduce((g,h)=>g+h.elements.length,0);return t.jsxs("div",{style:{border:s==="page"?"none":`1px solid ${f.border}`,borderRadius:12,background:s==="page"?"transparent":f.surfaceAlt,padding:s==="page"?0:10},children:[t.jsxs("div",{className:"flex items-center gap-3 flex-wrap",style:{marginBottom:14},children:[t.jsxs("div",{children:[t.jsx("div",{style:{color:f.primary,fontSize:13,fontWeight:700},children:"Linked elements"}),t.jsxs("div",{style:{color:f.muted,fontSize:11},children:[w," element",w===1?"":"s"," across ",m.length," layer",m.length===1?"":"s"]})]}),w>6&&t.jsx("input",{value:d,onChange:g=>u(g.target.value),placeholder:"Filter linked elements…","aria-label":"Filter linked elements",className:"transition-shadow focus:shadow-md",style:{marginLeft:"auto",width:240,padding:"8px 12px",borderRadius:8,border:`1px solid ${f.border}`,background:"#F9FAFB",color:f.primary,fontSize:13,outline:"none"}})]}),w===0&&t.jsx("div",{style:{color:f.faint,fontSize:12},children:"No linked elements."}),t.jsx("div",{style:{display:"flex",flexDirection:"column",gap:14},children:v.map(g=>{const h=ce[g.layer]||f.muted;return t.jsxs("section",{style:{padding:"16px 20px",background:h+"08",border:`1px solid ${h}15`,borderRadius:12},children:[t.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[t.jsx("span",{style:{width:10,height:10,borderRadius:3,background:h}}),t.jsx("strong",{style:{color:f.primary,fontSize:14,letterSpacing:"0.02em"},children:Le[g.layer]??g.layer}),t.jsx("span",{style:{color:f.faint,fontSize:12,background:h+"15",padding:"1px 6px",borderRadius:10},children:g.elements.length})]}),t.jsx("div",{style:{display:"grid",gridTemplateColumns:s==="page"?"repeat(auto-fill, 264px)":"1fr",justifyContent:"start",gap:7},children:g.elements.map(y=>t.jsx(rc,{element:e,linked:y,registries:n,color:h,onNavigate:i,onCreate:l,onDelete:c},y.id))})]},g.layer)})})]})}function rc({element:e,linked:r,registries:n,color:o,onNavigate:a,onCreate:s,onDelete:i}){var b,v,w,g;const[l,c]=p.useState(!1),d=p.useMemo(()=>!e||!r.element?[]:Ye(e,r.element,n).map(h=>({value:`${h.definition.name}::${h.direction}`,label:`${h.definition.label} ${h.direction==="outgoing"?"to":"from"}`})),[e,r.element,n]),u=r.links.map(h=>`${h.relationship.type}::${h.direction}`),m=p.useCallback(h=>{if(h.length===0||!s||!i)return;const y=new Set(h),B=new Set(u);for(const D of r.links)y.has(`${D.relationship.type}::${D.direction}`)||i(D.relationship.id);const N=Ye(e,r.element,n);for(const D of h)if(!B.has(D)){const A=N.find(F=>`${F.definition.name}::${F.direction}`===D);A&&s({type:A.definition.name,sourceId:A.sourceId,targetId:A.targetId,direction:A.direction})}},[u,r.links,e,r.element,n,s,i]);return t.jsx("button",{onClick:()=>a(r.id),onMouseEnter:()=>c(!0),onMouseLeave:()=>c(!1),className:"text-left transition-all duration-200",title:`Open ${((b=r.element)==null?void 0:b.name)??r.id}`,style:{padding:"12px 14px",borderRadius:10,background:"#FFFFFF",border:`1px solid ${l?o+"80":"#E5E7EB"}`,cursor:"pointer",minWidth:0,width:"100%",maxWidth:280,boxShadow:l?"0 4px 12px rgba(0,0,0,0.05)":"0 1px 2px rgba(0,0,0,0.02)",transform:l?"translateY(-1px)":"none"},children:t.jsxs("div",{style:{minWidth:0},children:[t.jsxs("div",{className:"flex items-start justify-between mb-1",style:{gap:4},children:[t.jsx("div",{children:r.links.map(h=>t.jsxs("div",{style:{color:h.direction==="outgoing"?"#2563EB":"#059669",fontSize:10,fontWeight:600,marginBottom:2},children:[h.label," ",h.direction==="outgoing"?"to":"from"]},h.relationship.id))}),d.length>1&&s&&t.jsx("div",{onClick:h=>h.stopPropagation(),style:{flexShrink:0,marginTop:-4,marginRight:-4},children:t.jsx(Zt,{label:"",options:d,selected:u,onChange:m,iconOnly:!0,align:"right",title:"Change relationship type"})})]}),t.jsx("strong",{className:"truncate",style:{display:"block",color:f.primary,fontSize:13},children:((v=r.element)==null?void 0:v.name)??r.id}),t.jsx("div",{className:"font-mono truncate",style:{color:"#9CA3AF",fontSize:"10px",marginTop:2},title:r.id,children:((w=r.element)==null?void 0:w.shortId)??r.id}),t.jsx("div",{style:{color:f.muted,fontSize:10,marginTop:2},children:((g=r.element)==null?void 0:g.kind)??"Unknown element type"})]})})}function oc({element:e,outgoing:r,incoming:n,density:o}){const a=S(_=>_.model),s=S(_=>_.connected),i=S(_=>_.selectElement),l=S(_=>_.selectedDiagramId),c=S(_=>_.pendingRelationships),d=S(_=>_.createRelationship),u=S(_=>_.deleteRelationship),m=S(_=>_.dismissPendingRelationship),b=S(_=>_.addElementToDiagram),[v,w]=p.useState(!1),[g,h]=p.useState(null),[y,B]=p.useState(["Requirement","Risk","Function","SystemFunction","ComponentFunction"]),N=p.useMemo(()=>xo(a),[a]);p.useEffect(()=>{h(null),w(!1),B(["Requirement","Risk","Function","SystemFunction","ComponentFunction"])},[e.id]);const D=c.filter(_=>_.sourceId===e.id||_.targetId===e.id),A=r.length+n.length,F=p.useCallback(async _=>{var U;h(null);const j=await d({..._,selectedElementId:e.id,diagramId:l??void 0});if(!j.success){h({kind:"error",message:j.error??"The relationship could not be created."});return}const L=_.sourceId===e.id?_.targetId:_.sourceId,E=Qt(a,l),O=(U=j.diagnostics)==null?void 0:U.find($=>$.code==="REL-005"),V=!!E&&!!E.elementIds&&E.elementIds.length>0&&!E.elementIds.includes(L);h(V&&!O&&l?{kind:"success",message:`Relationship created in ${j.sourceFile??"the model"}.`,offerAddToView:{elementId:L,diagramId:l}}:O?{kind:"success",message:`Relationship created in ${j.sourceFile??"the model"}.`,profileMessage:O.message}:null)},[d,e.id,l,a]),C=p.useCallback(async _=>{const j=await u(_);j.success||h({kind:"error",message:j.error??"The relationship could not be deleted."})},[u]),k=p.useMemo(()=>{const _=new Map,j=(L,E)=>{const O=E==="outgoing"?L.targetId:L.sourceId,V=a==null?void 0:a.elements[O],U=(V==null?void 0:V.kind)||"Unknown Type",$=_.get(U)??new Map,K=$.get(O)??[];K.push({rel:L,direction:E}),$.set(O,K),_.set(U,$)};return a&&(r.forEach(L=>j(L,"outgoing")),n.forEach(L=>j(L,"incoming"))),_},[r,n,a]),T=Array.from(k.keys()).sort(),z=new Map([...k.entries()].filter(([_])=>y.includes(_)));return a?t.jsx(t.Fragment,{children:t.jsxs(ec,{title:"Relationships",count:A,density:o,collapsible:o==="panel",actions:t.jsxs("div",{className:"flex items-center gap-1",children:[A>0&&t.jsx("button",{onClick:()=>w(!0),style:{width:24,height:24,borderRadius:"4px",background:"transparent",color:"#6B7280",border:"none",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center"},title:"View Details (Rich Grid)","aria-label":"View Details",onMouseEnter:_=>_.currentTarget.style.background="#F3F4F6",onMouseLeave:_=>_.currentTarget.style.background="transparent",children:t.jsx("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:t.jsx("path",{d:"M15 3h6v6M9 21H3v-6M21 3l-7 7M3 21l7-7"})})}),A>0&&t.jsx(Zt,{label:"",options:T.map(_=>({value:_,label:_})),selected:y,onChange:B,allLabel:"None",iconOnly:!0,align:"right"})]}),children:[t.jsx("div",{style:{marginBottom:o==="page"?14:8,maxWidth:o==="page"?720:void 0},children:t.jsx(Gd,{element:e,model:a,registries:N,enabled:s,onCreate:F})}),v&&t.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/60 backdrop-blur-sm",style:{padding:"2rem"},onClick:()=>w(!1),children:t.jsxs("div",{className:"bg-white rounded-xl shadow-2xl flex flex-col overflow-hidden w-full max-w-5xl max-h-full",onClick:_=>_.stopPropagation(),children:[t.jsxs("div",{className:"flex justify-between items-center px-5 py-4 border-b border-gray-200 bg-gray-50/50",children:[t.jsx("h2",{className:"text-lg font-bold text-gray-900",children:"Element Relationships"}),t.jsx("button",{onClick:()=>w(!1),className:"text-gray-400 hover:text-gray-700 font-bold px-2 py-1 bg-transparent border-none cursor-pointer",children:"✕"})]}),t.jsx("div",{className:"flex-1 overflow-auto p-6 bg-gray-50/30",children:t.jsx(nc,{element:e,model:a,registries:N,outgoing:r,incoming:n,density:o,onNavigate:_=>{w(!1),i(_)},onCreate:d,onDelete:C})})]})}),A===0&&D.length===0&&t.jsx("div",{style:{fontSize:Ve(o).meta,color:f.faint,padding:"2px 0 6px"},children:"No relationships yet — add the first one below."}),A>0&&z.size>0&&t.jsx("div",{className:"flex items-center justify-between",style:{marginBottom:12,marginTop:12,borderTop:"1px solid #E5E7EB",paddingTop:12},children:t.jsx("span",{style:{fontSize:"10px",fontWeight:700,color:"#9CA3AF",textTransform:"uppercase",letterSpacing:"0.04em"},children:"Existing Links"})}),t.jsx("div",{style:{display:"flex",flexDirection:"column",gap:12},children:[...z.entries()].map(([_,j])=>t.jsxs("div",{children:[t.jsx("div",{style:{fontSize:"10px",color:f.muted,textTransform:"uppercase",fontWeight:700,letterSpacing:"0.04em",marginBottom:6},children:_}),t.jsx("div",{style:{display:"flex",flexDirection:"column",gap:6},children:[...j.entries()].map(([L,E])=>t.jsx(sc,{sourceElement:e,oppositeId:L,links:E,model:a,registries:N,density:o,deletable:s,onNavigate:()=>i(L),onCreate:d,onDelete:C},L))})]},_))}),D.map(_=>t.jsx(ic,{pending:_,model:a,onDismiss:()=>m(_.pendingId)},_.pendingId)),g&&t.jsx(ac,{status:g,onAddToView:()=>{g.offerAddToView&&(b(g.offerAddToView.diagramId,g.offerAddToView.elementId),h({kind:"success",message:"Element added to this view."}))},onDismiss:()=>h(null),model:a})]})}):null}function ac({status:e,onAddToView:r,onDismiss:n,model:o}){var i;const a=e.kind==="success",s=e.offerAddToView?((i=o.elements[e.offerAddToView.elementId])==null?void 0:i.name)??e.offerAddToView.elementId:null;return t.jsxs("div",{className:"text-xs p-2 rounded-lg mt-2",style:{background:a?"#F0FDF4":"#FEF2F2",border:`1px solid ${a?"#BBF7D0":"#FECACA"}`,color:a?"#166534":"#DC2626"},children:[t.jsxs("div",{className:"flex items-start gap-1.5",children:[t.jsx("span",{className:"flex-1",children:e.message}),t.jsx("button",{onClick:n,style:{background:"none",border:"none",cursor:"pointer",color:"inherit",lineHeight:1},"aria-label":"Dismiss",children:"×"})]}),e.profileMessage&&t.jsx("div",{className:"mt-1",style:{color:"#92400E"},children:"Relationship created in the model, but this view profile does not display this relationship type."}),e.offerAddToView&&t.jsxs("button",{onClick:r,className:"mt-1.5 px-2 py-0.5 rounded",style:{background:"#FFFFFF",border:"1px solid #BBF7D0",color:"#166534",cursor:"pointer",fontSize:I.xs},children:["Relationship created. Add ",s," to this view?"]})]})}function sc({sourceElement:e,oppositeId:r,links:n,model:o,registries:a,deletable:s,density:i,onNavigate:l,onCreate:c,onDelete:d}){const u=o.elements[r],m=u&&ce[u.layer]||"#666",[b,v]=p.useState(!1),[w,g]=p.useState(!1),[h,y]=p.useState(null),B=Ve(i),N=n.filter(C=>s&&C.rel.named===!0),D=p.useMemo(()=>!e||!u?[]:Ye(e,u,a).map(C=>({value:`${C.definition.name}::${C.direction}`,label:`${C.definition.label} ${C.direction==="outgoing"?"to":"from"}`})),[e,u,a]),A=n.map(C=>`${C.rel.type}::${C.direction}`),F=p.useCallback(C=>{if(C.length===0||!c||!d)return;const k=new Set(C),T=new Set(A);for(const _ of n)k.has(`${_.rel.type}::${_.direction}`)||d(_.rel.id);const z=Ye(e,u,a);for(const _ of C)if(!T.has(_)){const j=z.find(L=>`${L.definition.name}::${L.direction}`===_);j&&c({type:j.definition.name,sourceId:j.sourceId,targetId:j.targetId,direction:j.direction})}},[A,n,e,u,a,c,d]);return t.jsxs("div",{onMouseEnter:()=>g(!0),onMouseLeave:()=>g(!1),style:{borderLeft:`3px solid ${m}`,borderRadius:6,background:f.surface,borderTop:`1px solid ${f.borderLight}`,borderRight:`1px solid ${f.borderLight}`,borderBottom:`1px solid ${f.borderLight}`,width:"100%"},children:[t.jsxs("div",{className:"flex items-center gap-2",style:{padding:i==="page"?"8px 10px":"6px 8px",fontSize:B.text},children:[t.jsxs("button",{onClick:l,className:"text-left flex items-center gap-1.5",style:{display:"flex",flex:1,minWidth:0,background:"none",border:"none",cursor:"pointer",padding:0},title:`Go to ${(u==null?void 0:u.name)??r}`,children:[t.jsx("strong",{className:"truncate font-mono",style:{color:f.primary,fontSize:"11px",fontWeight:600},children:(u==null?void 0:u.shortId)??r}),n.length>1&&t.jsx("span",{style:{fontSize:"10px",color:"#9CA3AF",background:"#F3F4F6",padding:"1px 4px",borderRadius:4,fontWeight:600},children:n.length})]}),D.length>1&&c&&t.jsx("div",{onClick:C=>C.stopPropagation(),style:{flexShrink:0},children:t.jsx(Zt,{label:"",options:D,selected:A,onChange:F,allLabel:"Relationships",iconOnly:!0,align:"right"})}),t.jsx("button",{onClick:()=>v(C=>!C),style:{background:"none",border:"none",cursor:"pointer",color:f.faint,padding:2},"aria-label":b?"Hide relationship details":"Show relationship details",children:b?"▾":"▸"}),N.length>0&&(w||b||h==="header")&&t.jsxs("div",{className:"relative flex items-center",children:[t.jsx("button",{onClick:C=>{C.stopPropagation(),y("header")},"aria-label":`Remove relationships to ${(u==null?void 0:u.name)??r}`,title:"Remove relationships",style:{width:20,height:20,padding:0,border:0,borderRadius:10,background:"#FFFFFFAA",color:"#9CA3AF",cursor:"pointer",lineHeight:1},children:"×"}),h==="header"&&t.jsxs("div",{className:"absolute right-full mr-2 top-1/2 -translate-y-1/2 z-20 bg-white rounded-lg shadow-xl border border-gray-200 p-2.5 w-48",onClick:C=>C.stopPropagation(),style:{boxShadow:"0 10px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1)"},children:[t.jsxs("div",{style:{fontSize:"11px",fontWeight:600,color:"#374151",marginBottom:"8px"},children:["Remove ",N.length>1?`all ${N.length} relationships`:"relationship","?"]}),t.jsxs("div",{className:"flex gap-1.5 justify-end",children:[t.jsx("button",{onClick:()=>y(null),className:"px-2 py-1 rounded",style:{fontSize:"10px",background:"#F3F4F6",color:"#4B5563",border:"none",cursor:"pointer"},children:"Cancel"}),t.jsx("button",{onClick:()=>{y(null),N.forEach(C=>d(C.rel.id))},className:"px-2 py-1 rounded",style:{fontSize:"10px",background:"#EF4444",color:"#FFFFFF",border:"none",cursor:"pointer"},children:"Remove"})]})]})]})]}),b&&t.jsx("div",{className:"px-3 pb-2 space-y-2",style:{borderTop:`1px solid ${f.borderLight}`,paddingTop:7},children:n.map(({rel:C,direction:k},T)=>{const z=On(C.type,a),_=s&&C.named===!0;return t.jsxs("div",{style:{fontSize:"10px",color:"#6B7280",marginTop:T>0?8:0,paddingTop:T>0?8:0,borderTop:T>0?`1px dashed ${f.borderLight}`:"none"},children:[t.jsx(Rt,{label:"Kind",value:(z==null?void 0:z.label)??C.type,valueColor:m}),t.jsx(Rt,{label:"Roles",value:`${C.sourceEnd||(z==null?void 0:z.sourceEnd.name)||"source"} → ${C.targetEnd||(z==null?void 0:z.targetEnd.name)||"target"}`}),t.jsx(Rt,{label:"ID",value:C.id,mono:!0}),t.jsx(Rt,{label:"Source",value:C.file||"—",mono:!0}),!C.named&&t.jsx("div",{style:{color:"#D97706",marginTop:4},children:"Anonymous connection — name it in SysML to allow deletion from here."}),_&&t.jsxs("div",{className:"relative inline-block mt-2",children:[t.jsx("button",{onClick:j=>{j.stopPropagation(),y(C.id)},className:"px-1.5 py-0.5 rounded",style:{background:"#FEF2F2",color:"#DC2626",border:"1px solid #FECACA",cursor:"pointer",fontSize:"10px"},children:"Remove this relationship"}),h===C.id&&t.jsxs("div",{className:"absolute left-full ml-2 top-1/2 -translate-y-1/2 z-20 bg-white rounded-lg shadow-xl border border-gray-200 p-2.5 w-48",onClick:j=>j.stopPropagation(),children:[t.jsx("div",{style:{fontSize:"11px",fontWeight:600,color:"#374151",marginBottom:"8px"},children:"Remove relationship?"}),t.jsxs("div",{className:"flex gap-1.5 justify-end",children:[t.jsx("button",{onClick:()=>y(null),className:"px-2 py-1 rounded",style:{fontSize:"10px",background:"#F3F4F6",border:"none",cursor:"pointer"},children:"Cancel"}),t.jsx("button",{onClick:()=>{y(null),d(C.id)},className:"px-2 py-1 rounded",style:{fontSize:"10px",background:"#EF4444",color:"#FFFFFF",border:"none",cursor:"pointer"},children:"Remove"})]})]})]})]},C.id)})})]})}function Rt({label:e,value:r,mono:n,valueColor:o}){return t.jsxs("div",{className:"flex gap-1.5",children:[t.jsx("span",{style:{minWidth:48,color:"#9CA3AF"},children:e}),t.jsx("span",{className:`truncate ${n?"font-mono":""}`,style:{color:o??"#374151"},title:r,children:r})]})}function ic({pending:e,model:r,onDismiss:n}){const o=e.direction==="outgoing"?e.targetId:e.sourceId,a=r.elements[o],s=e.status==="failed";return t.jsxs("div",{className:"flex items-center gap-1.5 ml-2 rounded",style:{padding:"4px 8px",fontSize:I.xs,background:s?"#FEF2F2":"#F9FAFB",color:s?"#DC2626":"#6B7280",fontStyle:s?"normal":"italic"},children:[t.jsx("span",{children:e.direction==="outgoing"?"→":"←"}),t.jsx("span",{className:"px-1 py-0.5 rounded flex-shrink-0",style:{background:"#E5E7EB",color:"#6B7280",fontSize:I.xs},children:e.label}),t.jsx("span",{className:"truncate flex-1",children:(a==null?void 0:a.name)??o}),s?t.jsxs(t.Fragment,{children:[t.jsx("span",{className:"truncate",style:{fontSize:"10px",maxWidth:90},title:e.error,children:e.error}),t.jsx("button",{onClick:n,style:{background:"none",border:"none",cursor:"pointer",color:"inherit"},"aria-label":"Dismiss failed relationship",children:"×"})]}):t.jsx("span",{style:{fontSize:"10px"},children:"saving…"})]})}const lc=[{value:"",label:"Default"},{value:"#FEF3C7",label:"Amber"},{value:"#DCFCE7",label:"Green"},{value:"#DBEAFE",label:"Blue"},{value:"#FCE7F3",label:"Pink"},{value:"#FEE2E2",label:"Red"},{value:"#EDE9FE",label:"Violet"},{value:"#E5E7EB",label:"Grey"}],at={display:"flex",alignItems:"center",gap:8,marginBottom:8,fontSize:I.xs,color:f.secondary},st={width:62,flexShrink:0};function dc(){const e=S(c=>c.selectionStyle),[r,n]=p.useState(!0),[o,a]=p.useState("#FFFFFF");if(!e)return null;const{count:s,opacity:i,apply:l}=e;return t.jsxs("div",{style:{borderTop:`1px solid ${f.borderLight}`,padding:"10px 12px"},children:[t.jsxs("button",{onClick:()=>n(c=>!c),"aria-expanded":r,style:{display:"flex",alignItems:"center",gap:6,width:"100%",background:"none",border:"none",padding:0,cursor:"pointer",fontSize:"10px",fontWeight:700,letterSpacing:".07em",textTransform:"uppercase",color:f.muted},children:[t.jsx("span",{style:{fontSize:9},children:r?"▾":"▸"}),"Style",t.jsxs("span",{style:{marginLeft:"auto",fontWeight:600,textTransform:"none",letterSpacing:0},children:[s," selected"]})]}),r&&t.jsxs("div",{style:{marginTop:10},children:[t.jsxs("div",{style:at,children:[t.jsx("span",{style:st,children:"Fill"}),t.jsxs("div",{style:{display:"flex",flexWrap:"wrap",gap:4,flex:1},children:[lc.map(c=>t.jsx("button",{title:`Fill: ${c.label}`,"aria-label":`Fill ${c.label}`,onClick:()=>l({color:c.value}),style:{width:20,height:20,padding:0,borderRadius:4,cursor:"pointer",border:`1px solid ${f.border}`,background:c.value||"#FFFFFF",color:"#94A3B8",fontSize:11,lineHeight:1,fontWeight:700},children:c.value?"":"⌫"},c.label)),t.jsx("input",{type:"color","aria-label":"Custom fill colour",title:"Custom fill colour",value:o,onChange:c=>{a(c.target.value),l({color:c.target.value})},style:{width:22,height:20,padding:1,border:`1px solid ${f.border}`,borderRadius:4,cursor:"pointer"}})]})]}),t.jsxs("div",{style:at,children:[t.jsx("span",{style:st,children:"Border"}),t.jsx("input",{type:"color","aria-label":"Border colour",onChange:c=>l({borderColor:c.target.value}),style:{width:26,height:22,padding:1,border:`1px solid ${f.border}`,borderRadius:4,cursor:"pointer"}}),t.jsx("button",{onClick:()=>l({borderColor:""}),style:{border:`1px solid ${f.border}`,background:f.surface,borderRadius:4,fontSize:11,padding:"2px 7px",cursor:"pointer",color:f.secondary},children:"Reset"})]}),t.jsxs("div",{style:at,children:[t.jsx("span",{style:st,children:"Text"}),t.jsx("input",{type:"color","aria-label":"Text colour",onChange:c=>l({textColor:c.target.value}),style:{width:26,height:22,padding:1,border:`1px solid ${f.border}`,borderRadius:4,cursor:"pointer"}}),t.jsxs("select",{"aria-label":"Text size",defaultValue:"",onChange:c=>c.target.value&&l({fontSize:Number(c.target.value)}),style:{height:22,border:`1px solid ${f.border}`,borderRadius:4,color:f.secondary,fontSize:11},children:[t.jsx("option",{value:"",children:"Auto"}),[10,12,14,16,18,20].map(c=>t.jsxs("option",{value:c,children:[c,"px"]},c))]}),t.jsx("button",{title:"Bold text",onClick:()=>l({fontWeight:700}),style:{border:`1px solid ${f.border}`,background:f.surface,borderRadius:4,fontSize:11,fontWeight:700,padding:"2px 8px",cursor:"pointer",color:f.secondary},children:"B"})]}),t.jsxs("div",{style:at,children:[t.jsx("span",{style:st,children:"Align"}),[["left","≡","Align text left"],["center","≣","Align text centre"],["right","☷","Align text right"]].map(([c,d,u])=>t.jsx("button",{title:u,"aria-label":u,onClick:()=>l({textAlign:c}),style:{width:24,height:22,border:`1px solid ${f.border}`,background:f.surface,borderRadius:4,fontSize:12,cursor:"pointer",color:f.secondary},children:d},c)),[["top","⤒","Align text at top"],["middle","↕","Align text vertically centred"],["bottom","⤓","Align text at bottom"]].map(([c,d,u])=>t.jsx("button",{title:u,"aria-label":u,onClick:()=>l({verticalAlign:c}),style:{width:24,height:22,border:`1px solid ${f.border}`,background:f.surface,borderRadius:4,fontSize:12,cursor:"pointer",color:f.secondary},children:d},c))]}),t.jsxs("label",{style:at,children:[t.jsx("span",{style:st,children:"Opacity"}),t.jsx("input",{type:"range",min:.2,max:1,step:.05,value:i,"aria-label":"Fill opacity",onChange:c=>l({opacity:Number(c.target.value)}),style:{flex:1}}),t.jsxs("span",{style:{width:30,textAlign:"right",color:f.faint},children:[Math.round(i*100),"%"]})]})]})]})}const ze="panel";function pe({title:e,count:r,defaultOpen:n=!0,actions:o,children:a}){const[s,i]=p.useState(n);return t.jsxs("div",{className:"mb-3 mx-3 bg-white border border-gray-200/60 rounded-xl shadow-sm overflow-hidden",children:[t.jsxs("div",{className:"flex items-center gap-2 px-3 py-2 cursor-pointer transition-colors hover:bg-gray-50",onClick:()=>i(l=>!l),children:[t.jsx("span",{className:"font-bold flex-1 text-[10px] uppercase tracking-wider",style:{color:"#6B7280"},children:e}),o&&t.jsx("span",{onClick:l=>l.stopPropagation(),children:o}),typeof r=="number"&&t.jsx("span",{className:"px-1.5 py-0.5 rounded-md font-medium text-[10px]",style:{background:"#F3F4F6",color:"#6B7280"},children:r}),t.jsx("span",{style:{color:"#D1D5DB",fontSize:14},children:s?"▾":"▸"})]}),s&&t.jsx("div",{className:"px-3 pb-3 pt-1",children:a})]})}function cc({label:e,kind:r,kindColor:n,onClick:o,arrow:a,typeBadge:s,typeColor:i,selected:l}){return t.jsxs("div",{className:"flex items-center gap-1.5 cursor-pointer transition-colors ml-2",style:{borderRadius:"6px",padding:"4px 8px",background:l?"#2DD4A818":"transparent",color:l?"#1B3A4B":"#374151",fontWeight:l?500:400,fontSize:I.xs},onMouseEnter:c=>{l||(c.currentTarget.style.background="#F0F0ED")},onMouseLeave:c=>{l||(c.currentTarget.style.background="transparent")},onClick:o,children:[a&&t.jsx("span",{style:{color:"#9CA3AF"},children:a}),s&&t.jsx("span",{className:"px-1 py-0.5 rounded",style:{background:(i||"#2563EB")+"18",color:i||"#2563EB",fontSize:I.xs},children:s}),t.jsx("span",{className:"truncate",children:e}),r&&t.jsx("span",{className:"ml-auto flex-shrink-0 px-1 py-0.5 rounded",style:{background:(n||"#666")+"15",color:n||"#666",fontSize:I.badge},children:r})]})}function uc(){const e=S(s=>s.model),r=S(s=>s.activeView),n=r.type==="diagram"?r.diagramId:null,o=Qt(e,n);if(!o)return null;const a=$e[o.diagramType];return t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"p-5 mb-2",style:{background:"#FFFFFF",borderBottom:"1px solid #F3F4F6",borderLeft:`4px solid ${(a==null?void 0:a.color)||"#6B7280"}`,boxShadow:"0 1px 2px rgba(0,0,0,0.02)"},children:[t.jsx("div",{className:"text-sm font-bold truncate",style:{color:"#111827"},children:o.name}),t.jsxs("div",{className:"flex items-center gap-2 text-xs mt-2",children:[a&&t.jsx("span",{className:"px-2 py-0.5 rounded-md font-semibold",style:{background:a.color+"18",color:a.color},children:a.code}),t.jsx("span",{style:{color:"#6B7280",fontWeight:500},children:(a==null?void 0:a.fullName)||o.diagramType})]}),o.auto&&t.jsx("div",{className:"text-xs mt-2 font-medium",style:{color:"#9CA3AF"},children:"Auto-generated"})]}),t.jsxs("div",{className:"flex-1 overflow-y-auto pt-2 pb-4 bg-gray-50/50",children:[o.description&&t.jsx(pe,{title:"Description",defaultOpen:!0,children:t.jsx("div",{className:"text-xs leading-relaxed",style:{color:"#374151"},children:o.description})}),t.jsx(pe,{title:"Details",defaultOpen:!0,children:t.jsxs("div",{className:"space-y-1.5",children:[t.jsxs("div",{className:"flex text-xs",children:[t.jsx("span",{className:"min-w-[80px]",style:{color:"#6B7280"},children:"ID"}),t.jsx("span",{className:"truncate font-mono",style:{color:"#1a1a1a",fontSize:I.xs},children:o.shortId??o.id})]}),t.jsxs("div",{className:"flex text-xs",children:[t.jsx("span",{className:"min-w-[80px]",style:{color:"#6B7280"},children:"Viewpoint"}),t.jsx("span",{style:{color:"#1a1a1a"},children:o.viewpointId})]}),t.jsxs("div",{className:"flex text-xs",children:[t.jsx("span",{className:"min-w-[80px]",style:{color:"#6B7280"},children:"Type"}),t.jsx("span",{style:{color:"#1a1a1a"},children:o.diagramType})]}),o.sourceFile&&t.jsxs("div",{className:"flex text-xs",children:[t.jsx("span",{className:"min-w-[80px]",style:{color:"#6B7280"},children:"Source file"}),t.jsx("span",{className:"truncate font-mono",title:o.sourceFile,style:{color:"#1a1a1a",fontSize:I.xs},children:o.sourceFile})]})]})}),o.properties&&Object.keys(o.properties).length>0&&t.jsx(pe,{title:"Properties",count:Object.keys(o.properties).length,children:t.jsx("div",{className:"space-y-1.5",children:Object.entries(o.properties).map(([s,i])=>t.jsxs("div",{className:"flex text-xs",children:[t.jsx("span",{className:"min-w-[80px]",style:{color:"#6B7280"},children:s}),t.jsx("span",{className:"truncate",style:{color:"#1a1a1a"},children:i})]},s))})}),o.elementIds&&o.elementIds.length>0&&t.jsx(pe,{title:"Scoped Elements",count:o.elementIds.length,defaultOpen:!1,children:t.jsx("div",{className:"text-xs",style:{color:"#6B7280"},children:o.elementIds.join(", ")})}),o.relationshipTypes&&o.relationshipTypes.length>0&&t.jsx(pe,{title:"Relationship Types",count:o.relationshipTypes.length,children:t.jsx("div",{className:"flex flex-wrap gap-1",children:o.relationshipTypes.map(s=>t.jsx("span",{className:"px-1.5 py-0.5 rounded text-xs",style:{background:"#EFF6FF",color:"#2563EB",fontSize:I.xs},children:s},s))})})]})]})}const pc=4e3;function mc({elementId:e}){const r=S(i=>i.model),n=S(i=>i.lastSourceChange),[o,a]=p.useState(null),s=p.useMemo(()=>fi(r,e),[r,e]);return p.useEffect(()=>{if(!hi(n,s))return;a(n.at);const i=setTimeout(()=>a(null),pc);return()=>clearTimeout(i)},[n==null?void 0:n.seq]),p.useEffect(()=>{a(null)},[e]),o?t.jsx("span",{title:"A source file this element depends on changed; the model was rebuilt",className:"px-1.5 rounded",style:{fontSize:I.badge,background:"#ECFDF5",color:"#047857",border:"1px solid #A7F3D0"},children:"↻ Updated"}):null}function fc(){var A,F;const e=S(C=>C.model),r=S(C=>C.selectedElementId),n=S(C=>C.validation),o=S(C=>C.selectElement),a=S(C=>C.updateElementField),s=S(C=>C.updateElementAttribute),i=S(C=>C.applyEdit),l=S(C=>C.deleteModelElement),[c,d]=p.useState(!1);p.useEffect(()=>{d(!1)},[r]),p.useEffect(()=>{if(!r)return;const C=k=>{(k.metaKey||k.ctrlKey)&&k.key==="s"&&(k.preventDefault(),i(r),d(!1))};return window.addEventListener("keydown",C),()=>window.removeEventListener("keydown",C)},[r,i]);const u=p.useMemo(()=>r&&e?mi(e,r):[],[e,r]);if(!r||!e)return null;const m=e.elements[r];if(!m)return null;const b=u.filter(C=>C.sourceId===r),v=u.filter(C=>C.targetId===r),w=ce[m.layer]||"#666",g=(n==null?void 0:n.violations.filter(C=>C.elementId===r))||[],h=new Set(["boundaryColor","boundaryOpacity","boundaryWidth","fill","stroke","opacity","color","backgroundColor","bounds.x","bounds.y","bounds.width","bounds.height"]),y=[["id",m.id],...m.uuid?[["uuid",m.uuid]]:[],["kind",m.kind],["layer",m.layer],...Object.entries(m.attributes).filter(([C])=>C!=="name"&&C!=="id"&&!h.has(C)&&C!=="description"&&C!=="shortDescription")],B=Object.entries(m.attributes).filter(([C])=>h.has(C)),N=(C,k)=>{s(r,C,k),i(r)},D=C=>{const k=C.trim();!k||k===m.name||(a(r,"name",k),i(r))};return t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"p-5 mb-2 relative group",style:{background:"#FFFFFF",borderBottom:"1px solid #F3F4F6",borderLeft:`4px solid ${w}`,boxShadow:"0 1px 2px rgba(0,0,0,0.02)"},children:t.jsxs("div",{className:"flex justify-between items-start mb-2",children:[t.jsx("div",{className:"flex items-start gap-3 pr-4 min-w-0 flex-1",children:t.jsxs("div",{className:"flex-1 min-w-0",children:[t.jsx("div",{className:"text-[15px] font-bold leading-tight",style:{color:"#111827"},children:t.jsx(ot,{value:m.name,onSave:D,density:ze,placeholder:"Element name"})}),t.jsx("div",{className:"text-sm font-medium mt-3 text-gray-700",children:t.jsx(ot,{value:m.attributes.shortDescription||"",onSave:C=>N("shortDescription",C),density:ze,multiline:!0,placeholder:"Add a short description..."})}),t.jsx("div",{className:"text-xs text-gray-500 mt-1.5 leading-relaxed",children:t.jsx(ot,{value:m.attributes.description||"",onSave:C=>N("description",C),density:ze,multiline:!0,placeholder:"Add a detailed description..."})})]})}),t.jsxs("div",{className:"flex items-center gap-1 flex-shrink-0 opacity-0 group-hover:opacity-100 transition-opacity",children:[t.jsx("button",{onClick:()=>void navigator.clipboard.writeText(m.id),title:`Copy ID: ${m.id}`,className:"p-1 hover:bg-gray-100 rounded text-gray-400 hover:text-gray-700",children:t.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[t.jsx("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),t.jsx("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})]})}),t.jsx("button",{onClick:()=>void l(m.id),title:"Delete element",className:"p-1 hover:bg-red-50 rounded text-gray-400 hover:text-red-600",children:t.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[t.jsx("polyline",{points:"3 6 5 6 21 6"}),t.jsx("path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"}),t.jsx("line",{x1:"10",y1:"11",x2:"10",y2:"17"}),t.jsx("line",{x1:"14",y1:"11",x2:"14",y2:"17"})]})})]})]})}),t.jsxs("div",{className:"flex-1 overflow-y-auto pt-2 pb-6 bg-gray-50/50",children:[m.parameters&&m.parameters.length>0&&t.jsx(pe,{title:"Parameters",count:m.parameters.length,children:t.jsx("div",{className:"space-y-1.5",children:m.parameters.map(C=>t.jsxs("div",{className:"flex items-center gap-2 text-xs",children:[t.jsx("span",{className:"px-1.5 py-0.5 rounded font-mono",style:{fontSize:"10px",background:C.direction==="in"?"#EFF6FF":C.direction==="out"?"#FFF7ED":"#F0FDF4",color:C.direction==="in"?"#2563EB":C.direction==="out"?"#EA580C":"#16A34A"},children:C.direction}),t.jsx("span",{style:{color:"#374151",fontWeight:500},children:C.name}),t.jsx("span",{style:{color:"#6B7280"},children:":"}),t.jsx("span",{style:{color:"#6B7280"},children:C.type})]},C.name))})}),m.allocatedTo&&t.jsx(pe,{title:"Allocated To",defaultOpen:!0,children:t.jsx(cc,{label:((A=e.elements[m.allocatedTo])==null?void 0:A.name)||m.allocatedTo,kind:(F=e.elements[m.allocatedTo])==null?void 0:F.kind,kindColor:"#E67E22",arrow:"→",onClick:()=>o(m.allocatedTo)})}),B.length>0&&t.jsx(pe,{title:"Appearance",count:B.length,defaultOpen:!1,children:t.jsx("div",{className:"space-y-1.5",children:B.map(([C,k])=>{const T=Rr(C);return t.jsxs("div",{className:"flex text-xs items-start gap-1.5",children:[t.jsx("span",{className:"min-w-[100px] pt-0.5",style:{color:"#6B7280"},children:C}),t.jsx("div",{style:{flex:1,minWidth:0},children:C==="boundaryColor"?t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx("input",{"aria-label":"Boundary color",type:"color",value:/^#[0-9a-f]{6}$/i.test(String(k))?String(k):"#14B8A6",onChange:z=>{const _=document.getElementById(`screen-node-${m.id}`);_&&(_.style.borderColor=z.target.value)},onBlur:z=>N(C,z.target.value),style:{width:28,height:24,padding:0,border:"1px solid #D8D8D2",borderRadius:4,background:"#FFFFFF"}}),t.jsx("span",{className:"font-mono text-[10px] text-gray-500",children:String(k)})]}):C==="boundaryWidth"?t.jsxs("div",{className:"flex items-center gap-3 pr-2",children:[t.jsx("input",{"aria-label":"Boundary width",type:"range",min:"1",max:"10",step:"1",defaultValue:Number(k??"2"),onChange:z=>{const _=document.getElementById(`screen-node-${m.id}`);_&&(_.style.borderWidth=z.target.value+"px")},onMouseUp:z=>N(C,z.target.value),style:{width:"100%"}}),t.jsxs("span",{className:"font-mono text-[10px] text-gray-500 w-6",children:[k,"px"]})]}):An(T)?t.jsx(ot,{value:String(k??""),onSave:z=>N(C,z),density:ze,placeholder:"Click to set…"}):t.jsx(Ir,{value:String(k??""),editability:T,density:ze,mono:C!=="kind"&&C!=="layer"})})]},C)})})}),y.length>0&&t.jsx(pe,{title:"Attributes",count:y.length,defaultOpen:!1,children:t.jsx("div",{className:"space-y-1.5",children:y.map(([C,k])=>{const T=Rr(C);return t.jsxs("div",{className:"flex text-xs items-start gap-1.5",children:[t.jsx("span",{className:"min-w-[100px] pt-0.5",style:{color:"#6B7280"},children:C}),t.jsx("div",{style:{flex:1,minWidth:0},children:An(T)?t.jsx(ot,{value:String(k??""),onSave:z=>N(C,z),density:ze,multiline:C==="description"||C==="rationale",placeholder:"Click to set…"}):t.jsx(Ir,{value:String(k??""),editability:T,density:ze,mono:C!=="kind"&&C!=="layer"})})]},C)})})}),t.jsx(hc,{subject:m}),g.length>0&&t.jsx(pe,{title:"Guidance",count:g.length,defaultOpen:!0,children:t.jsx("div",{className:"space-y-2",children:g.map((C,k)=>t.jsxs("div",{className:"text-xs p-2.5 rounded-lg",style:{background:C.severity==="error"?"#FEF2F2":C.severity==="warning"?"#FFFBEB":"#EFF6FF",border:`1px solid ${C.severity==="error"?"#FECACA":C.severity==="warning"?"#FDE68A":"#BFDBFE"}`},children:[t.jsx("div",{style:{color:C.severity==="error"?"#DC2626":C.severity==="warning"?"#D97706":"#2563EB"},children:C.description}),t.jsxs("div",{className:"mt-0.5",style:{color:"#6B7280"},children:["[",C.ruleId,"]"]})]},`${C.ruleId}-${k}`))})}),g.length===0&&t.jsx("div",{className:"p-4",children:t.jsxs("div",{className:"text-xs flex items-center gap-1",style:{color:"#10B981"},children:[t.jsx("span",{children:"✓"})," All rules satisfied"]})}),m.file&&t.jsx(pe,{title:"Source",defaultOpen:!1,actions:t.jsx(mc,{elementId:r}),children:t.jsxs("button",{className:"flex items-center gap-1.5 text-xs w-full text-left rounded px-1 py-0.5 transition-colors",style:{color:"#2563EB",background:"transparent",border:"none",cursor:"pointer",wordBreak:"break-all"},onMouseEnter:C=>{C.currentTarget.style.background="#EFF6FF"},onMouseLeave:C=>{C.currentTarget.style.background="transparent"},onClick:()=>{navigator.clipboard.writeText(m.file).catch(()=>{})},title:"Click to copy path",children:[t.jsx("span",{style:{flexShrink:0},children:"⟨/⟩"}),t.jsx("span",{className:"font-mono truncate",children:m.file}),t.jsx("span",{style:{flexShrink:0,color:"#9CA3AF",fontSize:"9px"},children:"copy"})]})}),t.jsx(oc,{element:m,outgoing:b,incoming:v,density:ze})]})]})}const It={comment:{kind:"ModelComment",relation:"CommentsOn",label:"comment",placeholder:"Comment"},rationale:{kind:"ModelRationale",relation:"RationaleFor",label:"rationale",placeholder:"Engineering rationale"},note:{kind:"ModelNote",relation:"NotesOn",label:"note",placeholder:"Note"}};function hc({subject:e}){var _,j,L;const r=S(E=>E.model),n=S(E=>E.createModelElement),o=S(E=>E.createRelationship),a=S(E=>E.persistElementAttributes),[s,i]=p.useState(""),[l,c]=p.useState(""),[d,u]=p.useState(""),[m,b]=p.useState(null),[v,w]=p.useState(!1),[g,h]=p.useState(""),[y,B]=p.useState(null),[N,D]=p.useState("");if(!r)return null;const A=new Set(Object.values(It).map(E=>E.relation.toLowerCase())),C=[...new Set(r.relationships.filter(E=>A.has(E.type.toLowerCase())&&E.targetId===e.id).map(E=>E.sourceId))].map(E=>r.elements[E]).filter(E=>!!E),k=new Map;for(const E of r.relationships.filter(O=>O.type.toLowerCase()==="composes"))((_=r.elements[E.sourceId])==null?void 0:_.kind)!=="ModelComment"||((j=r.elements[E.targetId])==null?void 0:j.kind)!=="ModelComment"||k.set(E.sourceId,[...k.get(E.sourceId)??[],r.elements[E.targetId]]);const T=async()=>{var $,K,J;if(!l.trim())return;const E=y?"comment":m??"comment";D("Saving…");const O=It[E],V=s.trim()||`Model ${O.label}`,U=n({name:V,kind:O.kind,construct:"part",layer:e.layer,file:e.file||"model/generated.sysml",doc:"",attributes:{shortDescription:V,body:l.trim(),author:d.trim()||"currentReviewer",createdAt:new Date().toISOString(),...E==="comment"?{commentStatus:"CommentStatusKind::open"}:{},...E==="rationale"&&g.trim()?{basis:g.trim()}:{},...E==="note"&&g.trim()?{noteKind:g.trim()}:{}}});try{const Y=($=S.getState().model)==null?void 0:$.elements[U],Q=Date.now()+1e4;for(;((K=S.getState().model)==null?void 0:K.elements[U])===Y&&Date.now()<Q;)await new Promise(x=>setTimeout(x,100));const ee=(J=S.getState().model)==null?void 0:J.elements[U];if(!ee||ee===Y)throw new Error("The saved annotation did not appear in the rebuilt model.");const M=await o({type:y?"Composes":O.relation,sourceId:y??U,targetId:y?U:e.id,direction:"outgoing",selectedElementId:y??U});if(!M.success)throw new Error(M.error);i(""),c(""),h(""),B(null),b(null),D("Saved.")}catch(Y){D(Y instanceof Error?Y.message:String(Y))}},z=(E,O=!1)=>{var $;const V=E.kind==="ModelRationale"?"rationale":E.kind==="ModelNote"?"note":"comment",U=V==="rationale"?"#7C3AED":V==="note"?"#2563EB":"#2DD4A8";return t.jsxs("div",{style:{marginLeft:O?14:0,borderLeft:`2px solid ${O?"#D1D5DB":U}`,padding:"5px 7px",marginBottom:6},children:[t.jsxs("div",{className:"flex items-center gap-1 text-xs",children:[t.jsx("span",{style:{color:U,fontSize:9,fontWeight:700,textTransform:"uppercase"},children:V}),t.jsx("strong",{style:{color:"#374151"},children:E.attributes.author||"Unknown"}),t.jsx("span",{style:{color:"#9CA3AF"},children:E.attributes.createdAt||""})]}),t.jsx("div",{style:{fontSize:11,fontWeight:600,color:"#374151"},children:E.attributes.shortDescription||E.name}),t.jsx("div",{style:{fontSize:11,color:"#4B5563",whiteSpace:"pre-wrap"},children:E.attributes.body}),V==="rationale"&&E.attributes.basis&&t.jsxs("div",{style:{fontSize:10,color:"#7C3AED"},children:["Basis: ",E.attributes.basis]}),V==="note"&&E.attributes.noteKind&&t.jsxs("div",{style:{fontSize:10,color:"#2563EB"},children:["Kind: ",E.attributes.noteKind]}),V==="comment"&&t.jsxs("div",{className:"flex gap-2",style:{marginTop:3},children:[!O&&t.jsx("button",{onClick:()=>{B(E.id),b("comment")},style:{border:0,background:"transparent",color:"#2563EB",fontSize:10,cursor:"pointer"},children:"Reply"}),!(($=E.attributes.commentStatus)!=null&&$.endsWith("resolved"))&&t.jsx("button",{onClick:()=>a(E.id,{commentStatus:"CommentStatusKind::resolved",resolvedBy:d.trim()||"currentReviewer",resolvedAt:new Date().toISOString(),resolution:"Resolved in model review."}),style:{border:0,background:"transparent",color:"#0F766E",fontSize:10,cursor:"pointer"},children:"Resolve"})]}),(k.get(E.id)??[]).map(K=>z(K,!0))]},E.id)};return t.jsxs(pe,{title:"Annotations",count:C.length,defaultOpen:!0,children:[t.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[t.jsx("button",{onClick:()=>b("note"),title:"Add Note",className:`p-1.5 rounded flex items-center justify-center transition-colors ${m==="note"?"bg-blue-100 text-blue-700":"bg-gray-100 hover:bg-gray-200 text-gray-600"}`,children:t.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[t.jsx("path",{d:"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"}),t.jsx("polyline",{points:"14 2 14 8 20 8"}),t.jsx("line",{x1:"16",y1:"13",x2:"8",y2:"13"}),t.jsx("line",{x1:"16",y1:"17",x2:"8",y2:"17"}),t.jsx("polyline",{points:"10 9 9 9 8 9"})]})}),t.jsx("button",{onClick:()=>b("comment"),title:"Add Comment",className:`p-1.5 rounded flex items-center justify-center transition-colors ${m==="comment"?"bg-teal-100 text-teal-700":"bg-gray-100 hover:bg-gray-200 text-gray-600"}`,children:t.jsx("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:t.jsx("path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"})})}),t.jsx("button",{onClick:()=>b("rationale"),title:"Add Rationale",className:`p-1.5 rounded flex items-center justify-center transition-colors ${m==="rationale"?"bg-purple-100 text-purple-700":"bg-gray-100 hover:bg-gray-200 text-gray-600"}`,children:t.jsx("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:t.jsx("polygon",{points:"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"})})}),t.jsx("div",{className:"flex-1"}),t.jsxs("button",{onClick:()=>w(!0),title:"View Annotations",className:"p-1.5 rounded bg-gray-100 hover:bg-gray-200 text-gray-600 flex items-center gap-1.5 text-xs font-semibold",children:[t.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[t.jsx("path",{d:"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"}),t.jsx("circle",{cx:"12",cy:"12",r:"3"})]}),"View (",C.length,")"]})]}),(m||y)&&t.jsxs("div",{className:"bg-gray-50 border border-gray-200 rounded p-2 mb-2",children:[t.jsxs("div",{className:"flex justify-between items-center mb-2",children:[t.jsx("span",{className:"text-xs font-semibold",style:{color:y?"#0F766E":m==="rationale"?"#7C3AED":m==="note"?"#2563EB":"#2DD4A8"},children:y?`Replying to ${(L=r.elements[y])==null?void 0:L.name}`:`New ${It[m].label}`}),t.jsx("button",{onClick:()=>{b(null),B(null)},className:"text-gray-400 hover:text-gray-600",children:"✕"})]}),t.jsx("input",{value:d,onChange:E=>u(E.target.value),placeholder:"Author",style:{width:"100%",marginBottom:4,fontSize:11}}),t.jsx("input",{value:s,onChange:E=>i(E.target.value),placeholder:"Short summary",style:{width:"100%",marginBottom:4,fontSize:11}}),!y&&m!=="comment"&&t.jsx("input",{value:g,onChange:E=>h(E.target.value),placeholder:m==="rationale"?"Basis / evidence (optional)":"Note kind (optional)",style:{width:"100%",marginBottom:4,fontSize:11}}),t.jsx("textarea",{value:l,onChange:E=>c(E.target.value),placeholder:y?"Reply":It[m].placeholder,rows:3,style:{width:"100%",fontSize:11}}),t.jsxs("div",{className:"flex gap-2 mt-1",children:[t.jsx("button",{onClick:T,disabled:!l.trim(),style:{fontSize:11,padding:"4px 8px",background:"#374151",color:"white",borderRadius:4,flex:1},children:"Save"}),t.jsx("button",{onClick:()=>{b(null),B(null)},style:{fontSize:11,padding:"4px 8px",background:"#E5E7EB",color:"#374151",borderRadius:4},children:"Cancel"})]}),N&&t.jsx("div",{style:{fontSize:10,color:"#6B7280",marginTop:4},children:N})]}),v&&t.jsx("div",{className:"fixed inset-0 z-[100] flex items-center justify-center bg-black/30",onClick:()=>w(!1),children:t.jsxs("div",{className:"bg-white rounded-lg shadow-2xl w-[400px] max-h-[85vh] flex flex-col",onClick:E=>E.stopPropagation(),children:[t.jsxs("div",{className:"p-3 border-b font-bold flex justify-between items-center text-gray-800",children:["Annotations",t.jsx("button",{onClick:()=>w(!1),className:"text-gray-400 hover:text-gray-700",children:"✕"})]}),t.jsx("div",{className:"p-4 overflow-y-auto",children:C.length>0?C.map(E=>z(E)):t.jsx("div",{className:"text-gray-500 text-sm text-center py-8",children:"No annotations yet."})})]})})]})}function yc(){const e=S(d=>d.model),r=S(d=>d.selectedRelationshipId);if(!e||!r)return null;const n=e.relationships.find(d=>d.id===r);if(!n)return null;const o=e.elements[n.sourceId],a=e.elements[n.targetId],s=n.type==="flow",i=n.flowItem,l=i&&/energy|power|voltage|current/i.test(i)?"Energy":i&&/material|fluid|gas|batch/i.test(i)?"Material":s?"Data":"Control",c=l==="Energy"?"#D97706":l==="Material"?"#16A34A":l==="Data"?"#3498DB":"#4B5563";return t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"p-5 mb-2",style:{background:"#FFFFFF",borderBottom:"1px solid #F3F4F6",borderLeft:`4px solid ${c}`,boxShadow:"0 1px 2px rgba(0,0,0,0.02)"},children:[t.jsx("div",{className:"text-[15px] font-bold",style:{color:"#111827"},children:"Connection"}),t.jsxs("div",{className:"mt-2 text-xs font-medium",style:{color:"#4B5563"},children:[(o==null?void 0:o.name)??n.sourceId," → ",(a==null?void 0:a.name)??n.targetId]}),t.jsxs("div",{className:"mt-3 flex gap-2",children:[t.jsxs("span",{className:"px-2 py-1 rounded-md text-[11px] font-bold uppercase tracking-wider",style:{background:c+"15",color:c},children:[l," flow"]}),t.jsx("span",{className:"px-2 py-1 rounded-md text-[11px] font-bold uppercase tracking-wider",style:{background:"#F3F4F6",color:"#4B5563"},children:n.type})]})]}),t.jsxs("div",{className:"flex-1 overflow-y-auto pt-2 pb-4 bg-gray-50/50",children:[t.jsx(pe,{title:"Involved item",defaultOpen:!0,children:t.jsx("div",{className:"text-xs",style:{color:"#374151"},children:i??"No transported item is modeled for this connection."})}),t.jsx(pe,{title:"Endpoints",defaultOpen:!0,children:t.jsxs("div",{className:"space-y-2 text-xs",children:[t.jsxs("div",{children:[t.jsx("span",{style:{color:"#6B7280"},children:"Source"}),t.jsx("div",{style:{color:"#1a1a1a",fontWeight:500},children:(o==null?void 0:o.name)??n.sourceId})]}),t.jsxs("div",{children:[t.jsx("span",{style:{color:"#6B7280"},children:"Target"}),t.jsx("div",{style:{color:"#1a1a1a",fontWeight:500},children:(a==null?void 0:a.name)??n.targetId})]})]})}),t.jsx(pe,{title:"Traceability",defaultOpen:!1,children:t.jsx("div",{className:"text-xs",style:{color:"#6B7280"},children:n.file||"Model relationship"})})]})]})}function gc(){const e=S(l=>l.selectedElementId),r=S(l=>l.activeView),n=S(l=>l.selectedRelationshipId),o=S(l=>l.propertiesPanelCollapsed),a=S(l=>l.togglePropertiesPanel);if(o)return t.jsxs("div",{className:"flex flex-col items-center flex-shrink-0 cursor-pointer",style:{width:"40px",background:"#FAFAF8",borderLeft:"1px solid #E5E5E0"},onClick:a,title:"Expand properties",children:[t.jsx("div",{className:"flex items-center justify-center mt-2",style:{color:"#6B7280",fontSize:"18px",width:"32px",height:"32px",borderRadius:"6px"},children:"‹"}),t.jsx("div",{style:{writingMode:"vertical-rl",textOrientation:"mixed",color:"#6B7280",fontSize:"10px",fontWeight:400},children:"Properties"})]});const s=r.type==="diagram"&&!e&&!n,i=!!e;return t.jsxs("div",{className:"flex flex-col overflow-hidden flex-shrink-0 bg-gray-50/30",style:{width:"320px",borderLeft:"1px solid #E5E7EB",boxShadow:"-4px 0 16px rgba(0,0,0,0.02)"},children:[t.jsxs("div",{className:"flex items-center justify-between px-4 py-3 bg-white border-b border-gray-200 flex-shrink-0 z-10 shadow-sm",children:[t.jsx("span",{className:"text-[11px] uppercase tracking-wider font-bold text-gray-800",children:"Properties"}),t.jsx("button",{onClick:a,className:"flex items-center justify-center transition-colors",style:{color:"#9CA3AF",fontSize:"18px",lineHeight:1,width:"28px",height:"28px",borderRadius:"6px",background:"#FFFFFF",border:"1px solid #E5E7EB"},onMouseEnter:l=>{l.currentTarget.style.color="#374151",l.currentTarget.style.borderColor="#D1D5DB"},onMouseLeave:l=>{l.currentTarget.style.color="#9CA3AF",l.currentTarget.style.borderColor="#E5E7EB"},title:"Collapse properties","aria-label":"Collapse properties",children:"›"})]}),n?t.jsx(yc,{}):i?t.jsx(fc,{}):s?t.jsx(uc,{}):t.jsx("div",{className:"flex-1 flex items-center justify-center p-4",children:t.jsx("span",{className:"text-xs text-center",style:{color:"#6B7280"},children:"Select an element or diagram to view properties"})}),t.jsx(dc,{})]})}function yn(e=f.border){return{borderTop:`1px solid ${e}`}}function xc({placeholder:e,value:r,onChange:n}){return t.jsx("input",{type:"text",value:r,placeholder:e,onChange:o=>n(o.target.value),className:"flex-1 px-2 py-1 rounded focus:outline-none",style:{background:"#F7F7F5",border:"1px solid #E5E5E0",color:f.primary,fontSize:I.xs,minWidth:0}})}function bc({values:e}){const r=[...new Set(e.filter(Boolean))];return r.length===0?t.jsx("span",{style:{color:f.faint,fontSize:"12px"},children:"—"}):r.length===1?t.jsx("span",{style:{color:f.muted,fontSize:"12px"},children:r[0]}):t.jsxs("span",{style:{color:"#F59E0B",fontSize:"12px"},children:[r.length," different values"]})}function vc(){const e=S(g=>g.model),r=S(g=>g.selectedElementIds),n=S(g=>g.clearElementSelection),o=S(g=>g.bulkUpdateAttributes),a=p.useMemo(()=>[...r],[r]),s=p.useMemo(()=>a.map(g=>e==null?void 0:e.elements[g]).filter(Boolean),[a,e]),i=p.useMemo(()=>{if(s.length===0)return[];const g="_",h=s.map(B=>new Set(Object.keys(B.attributes).filter(N=>!N.startsWith(g))));return[...h[0]].filter(B=>h.every(N=>N.has(B))).sort()},[s]),l=p.useMemo(()=>{const g={};for(const h of i)g[h]=s.map(y=>y.attributes[h]??"");return g},[s,i]),c=p.useMemo(()=>[...new Set(s.map(g=>g.kind))].sort(),[s]),[d,u]=p.useState({}),m=p.useCallback((g,h)=>{u(y=>({...y,[g]:h}))},[]),b=Object.values(d).some(g=>g!==""),v=p.useCallback(()=>{const g=Object.fromEntries(Object.entries(d).filter(([,h])=>h!==""));Object.keys(g).length!==0&&(o(a,g),u({}))},[d,a,o]),w=p.useCallback(()=>{u({})},[]);return s.length<2?null:t.jsxs("div",{className:"flex flex-col overflow-hidden",style:{width:"280px",background:f.surface,borderLeft:`1px solid ${f.border}`,fontSize:I.xs},children:[t.jsxs("div",{className:"flex items-center justify-between px-4 py-3 flex-shrink-0",style:{borderBottom:`1px solid ${f.border}`},children:[t.jsxs("div",{children:[t.jsx("div",{className:"font-semibold",style:{color:f.primary,fontSize:I.sm},children:"Bulk Edit"}),t.jsxs("div",{style:{color:f.muted,fontSize:"12px",marginTop:"2px"},children:[a.length," elements selected"]})]}),t.jsx("button",{onClick:n,className:"px-2 py-1 rounded",style:{color:f.muted,background:"#F0F0ED",fontSize:"12px"},title:"Clear selection",children:"✕ Clear"})]}),t.jsxs("div",{className:"px-4 py-3 flex-shrink-0",style:yn(),children:[t.jsx("div",{style:{color:f.muted,fontSize:"12px",fontWeight:600,marginBottom:"6px",textTransform:"uppercase",letterSpacing:"0.5px"},children:"Selection"}),t.jsx("div",{className:"flex flex-wrap gap-1",children:c.map(g=>t.jsx("span",{className:"px-2 py-0.5 rounded-full",style:{background:"#EEF2FF",color:"#4F46E5",fontSize:"12px",fontWeight:500},children:g},g))}),t.jsxs("div",{style:{color:f.faint,fontSize:"12px",marginTop:"6px"},children:[s.map(g=>g.name).slice(0,5).join(", "),s.length>5&&` +${s.length-5} more`]})]}),t.jsxs("div",{className:"flex-1 overflow-y-auto px-4 py-3",style:yn(),children:[t.jsxs("div",{style:{color:f.muted,fontSize:"12px",fontWeight:600,marginBottom:"8px",textTransform:"uppercase",letterSpacing:"0.5px"},children:["Common Attributes",i.length>0&&t.jsxs("span",{style:{color:f.faint,fontWeight:400,marginLeft:"4px"},children:["(",i.length,")"]})]}),i.length===0?t.jsx("div",{style:{color:f.faint,fontSize:"12px"},children:"No common attributes across selected elements."}):t.jsx("div",{className:"space-y-3",children:i.map(g=>t.jsxs("div",{children:[t.jsxs("div",{className:"flex items-center justify-between mb-1",children:[t.jsx("span",{style:{color:f.secondary,fontSize:"12px",fontWeight:500},children:g}),t.jsx(bc,{values:l[g]})]}),t.jsx(xc,{placeholder:`Set for all ${a.length} elements…`,value:d[g]??"",onChange:h=>m(g,h)})]},g))})]}),i.length>0&&t.jsxs("div",{className:"flex items-center gap-2 px-4 py-3 flex-shrink-0",style:yn(),children:[t.jsx("button",{onClick:w,disabled:!b,className:"flex-1 py-1.5 rounded",style:{fontSize:I.xs,fontWeight:500,color:b?f.secondary:f.faint,background:b?"#F0F0ED":"#F7F7F5",cursor:b?"pointer":"default"},children:"Reset"}),t.jsxs("button",{onClick:v,disabled:!b,className:"flex-1 py-1.5 rounded font-semibold",style:{fontSize:I.xs,color:"#FFFFFF",background:b?"#2DD4A8":"#A7F3D0",cursor:b?"pointer":"default"},children:["Apply to ",a.length]})]})]})}const Mr="memo-gapbar-pulse";if(typeof document<"u"&&!document.getElementById(Mr)){const e=document.createElement("style");e.id=Mr,e.textContent=`
|
|
4055
|
+
${D}`,E={id:H,title:S.title,group:S.groupLabel,templateId:S.templateId,content:$,createdAt:Date.now(),authors:"",approvers:""};o(E),j.push(E),j.length===1&&e({type:"dhf-document",docId:E.id})}d(null)}return p.useEffect(()=>{if(!u)return;function A(){m(null)}return window.addEventListener("click",A),()=>window.removeEventListener("click",A)},[u]),t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"flex-1 overflow-y-auto py-1",children:[t.jsx("div",{style:{padding:"4px 10px 8px"},children:t.jsxs("button",{onClick:()=>d({}),style:{width:"100%",padding:"7px 10px",borderRadius:"6px",border:"none",background:f.accentDark,fontSize:I.explorer.item,fontWeight:600,color:"#fff",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",gap:"6px"},onMouseEnter:A=>{A.currentTarget.style.background="#254B60"},onMouseLeave:A=>{A.currentTarget.style.background=f.accentDark},children:[t.jsx("span",{style:{fontSize:"14px",lineHeight:1},children:"+"})," New Document"]})}),g.map(A=>t.jsxs("div",{children:[g.length>1&&t.jsx("div",{style:{padding:"9px 10px 2px",fontSize:"10px",fontWeight:700,letterSpacing:".07em",textTransform:"uppercase",color:f.muted},children:A.label}),h(A.items).map(T=>{const j=`${A.systemId??"global"}:${T.key}`,S=i.has(T.key);return t.jsxs("div",{children:[t.jsxs("button",{onClick:()=>y(T.key),onContextMenu:T.groupId?k=>N(k,T.groupId):void 0,className:"w-full flex items-center gap-2 px-3 py-2 text-left",style:{fontSize:I.xs,fontWeight:600,color:f.secondary,borderRadius:"4px"},onMouseEnter:k=>k.currentTarget.style.background=f.surfaceAlt,onMouseLeave:k=>k.currentTarget.style.background="transparent",title:T.groupId?"Right-click to add documents":void 0,children:[t.jsx("span",{style:{display:"inline-block",width:"7px",height:"7px",borderRadius:"50%",background:T.color,flexShrink:0}}),t.jsx("span",{className:"flex-1 uppercase tracking-wide",style:{fontSize:"10px"},children:T.label}),t.jsx("span",{style:{fontSize:"10px",color:T.color,fontWeight:700},children:T.docs.length}),t.jsx(xe,{expanded:S,size:11})]}),S&&T.docs.map(k=>{const U=b===k.id;return t.jsxs("div",{style:{display:"flex",alignItems:"center",paddingLeft:"28px",paddingRight:"4px",background:U?`${T.color}18`:"transparent",borderLeft:U?`2px solid ${T.color}`:"2px solid transparent",cursor:"pointer"},onMouseEnter:H=>{U||(H.currentTarget.style.background=f.surfaceAlt)},onMouseLeave:H=>{H.currentTarget.style.background=U?`${T.color}18`:"transparent"},children:[t.jsxs("button",{onClick:()=>e({type:"dhf-document",docId:k.id}),style:{flex:1,display:"flex",alignItems:"center",gap:"6px",background:"none",border:"none",padding:"5px 0",fontSize:I.explorer.element,color:U?T.color:f.primary,fontWeight:U?600:400,cursor:"pointer",textAlign:"left"},children:[t.jsx(bt,{color:T.color}),t.jsx("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:k.id})]}),t.jsx("button",{onClick:H=>{H.stopPropagation(),a(k.id)},title:"Remove document",style:{background:"none",border:"none",cursor:"pointer",color:"#9CA3AF",padding:"2px 4px",borderRadius:"3px",fontSize:"12px",opacity:0,transition:"opacity 0.1s"},onMouseEnter:H=>{H.currentTarget.style.opacity="1",H.currentTarget.style.color="#ef4444"},onMouseLeave:H=>{H.currentTarget.style.opacity="0",H.currentTarget.style.color="#9CA3AF"},children:"×"})]},k.id)})]},j)})]},A.systemId??A.label)),n.length===0&&t.jsxs("div",{style:{padding:"16px 14px",fontSize:"11px",color:"#9CA3AF",lineHeight:"1.6"},children:["No documents yet. Use ",t.jsx("strong",{children:"+ New Document"})," to create one from a meMO template, a reusable project template, a new template, or a blank page."]})]}),u&&t.jsx("div",{style:{position:"fixed",zIndex:9998,left:u.x,top:u.y,background:"#fff",borderRadius:"8px",border:"1px solid #E5E7EB",boxShadow:"0 8px 24px rgba(0,0,0,0.12)",padding:"4px 0",minWidth:"160px"},onClick:A=>A.stopPropagation(),children:t.jsx("button",{onClick:()=>{d({initialGroupId:u.groupId}),m(null)},style:{display:"block",width:"100%",padding:"8px 14px",background:"none",border:"none",textAlign:"left",fontSize:"13px",color:"#1B3A4B",cursor:"pointer"},onMouseEnter:A=>A.currentTarget.style.background="#F3F4F6",onMouseLeave:A=>A.currentTarget.style.background="none",children:"Add document…"})}),c&&t.jsx(pd,{initialGroupId:c.initialGroupId,existingDocs:n,numberingPrefix:s.documentNumberingPrefix||"DOC",onCreate:R,onClose:()=>d(null)})]})}const Mo="memo-explorer-width",mt=300,ft=240,An=720,Ud=320;function yn(){return typeof window>"u"||!window.innerWidth?An:Math.max(ft,Math.min(An,window.innerWidth-Ud))}function Ld(e){return Number.isFinite(e)?Math.min(An,Math.max(ft,e)):mt}function qd(){if(typeof window>"u")return mt;try{const e=Number.parseInt(localStorage.getItem(Mo)??"",10);return Number.isFinite(e)?Ld(e):mt}catch{return mt}}function $d(){var R,A,T;const e=C(j=>j.sidebarCollapsed),r=C(j=>j.toggleSidebar);C(j=>j.explorerTab);const n=C(j=>j.setExplorerTab),o=C(j=>j.searchTerm),a=C(j=>j.setSearchTerm),s=C(j=>j.model),i=C(j=>j.activeMode),l=C(j=>j.activeView),c=l.type==="diagram"&&((A=(R=s==null?void 0:s.diagrams)==null?void 0:R.find(j=>j.id===l.diagramId))==null?void 0:A.viewpointId)&&((T=s.diagrams.find(j=>j.id===l.diagramId))==null?void 0:T.viewpointId)!=="__model",d=c||i==="diagram"?"Viewpoints":"Model Explorer",[u,m]=p.useState(qd),[b,v]=p.useState(yn),w=Math.min(u,b),g=p.useRef(null),h=p.useCallback(j=>{m(Math.max(ft,Math.min(yn(),j)))},[]),y=p.useCallback(()=>{var j;(j=g.current)==null||j.call(g),g.current=null},[]),N=p.useCallback(j=>{if(j.button!==0)return;j.preventDefault(),y();const S=j.clientX,k=w,U=document.body.style.cursor,H=document.body.style.userSelect;document.body.style.cursor="col-resize",document.body.style.userSelect="none";const O=$=>{h(k+$.clientX-S)},D=()=>{window.removeEventListener("pointermove",O),window.removeEventListener("pointerup",D),window.removeEventListener("pointercancel",D),document.body.style.cursor=U,document.body.style.userSelect=H,g.current=null};g.current=D,window.addEventListener("pointermove",O),window.addEventListener("pointerup",D),window.addEventListener("pointercancel",D)},[h,w,y]);return p.useEffect(()=>{try{localStorage.setItem(Mo,String(Math.round(u)))}catch{}},[u]),p.useEffect(()=>{const j=()=>v(yn());return window.addEventListener("resize",j),()=>{window.removeEventListener("resize",j),y()}},[y]),p.useEffect(()=>{(l.type==="ontology"||l.type==="ontology-detail")&&n("ontologies")},[l.type]),e?t.jsxs("button",{type:"button",className:"flex flex-col items-center py-2 gap-1 flex-shrink-0",onClick:r,title:`Expand ${d}`,"aria-label":`Expand ${d}`,style:{width:36,background:"#FAFAF8",border:"none",borderRight:`1px solid ${f.border}`,cursor:"pointer"},children:[t.jsx("span",{style:{color:f.muted,fontSize:18,lineHeight:1},children:"›"}),t.jsx("span",{style:{color:f.muted,fontSize:10,writingMode:"vertical-rl"},children:d})]}):t.jsxs("div",{className:"flex flex-col overflow-hidden flex-shrink-0",style:{position:"relative",width:`${w}px`,background:f.surface,borderRight:`1px solid ${f.border}`},children:[t.jsxs("div",{className:"flex items-center justify-between px-3 py-2",style:{background:f.surfaceAlt,borderBottom:`1px solid ${f.border}`,flexShrink:0},children:[t.jsx("span",{style:{fontSize:I.xs,fontWeight:600,color:"#374151"},children:d}),t.jsx("button",{type:"button",onClick:r,title:`Collapse ${d}`,"aria-label":`Collapse ${d}`,style:{width:28,height:28,border:`1px solid ${f.border}`,borderRadius:5,background:"#FFFFFF",color:f.muted,cursor:"pointer",fontSize:18,lineHeight:1},children:"‹"})]}),l.type==="diagram"&&!c?t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"px-3 py-2",style:{borderBottom:`1px solid ${f.border}`},children:t.jsxs("div",{className:"flex gap-1",children:[t.jsx("input",{type:"text",placeholder:"Search elements...",value:o,onChange:j=>a(j.target.value),onKeyDown:j=>{j.key==="Enter"&&window.dispatchEvent(new Event("memo:expand-explorer-search"))},className:"flex-1 min-w-0 px-3 py-2 rounded-lg focus:outline-none",style:{background:f.surfaceAlt,border:`1px solid ${f.border}`,color:f.primary,fontSize:I.explorer.search}}),t.jsx("button",{onClick:()=>window.dispatchEvent(new Event("memo:collapse-explorer-tree")),title:"Collapse all Explorer groups","aria-label":"Collapse all Explorer groups",className:"rounded-lg flex items-center justify-center flex-shrink-0",style:{width:28,background:f.surfaceAlt,border:`1px solid ${f.border}`,color:f.secondary,cursor:"pointer"},children:t.jsx(Br,{})})]})}),t.jsx(Ar,{searchTerm:o})]}):i==="dashboard"?t.jsx(rl,{}):i==="dhf"?t.jsx(zd,{}):i==="diagram"||c?t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"px-3 py-2",style:{borderBottom:`1px solid ${f.border}`},children:t.jsx("input",{type:"text",placeholder:"Search viewpoints and views...",value:o,onChange:j=>a(j.target.value),className:"w-full px-3 py-2 rounded-lg focus:outline-none",style:{background:f.surfaceAlt,border:`1px solid ${f.border}`,color:f.primary,fontSize:I.explorer.search}})}),t.jsx(Pd,{searchTerm:o})]}):i==="ontology"?t.jsx(nl,{}):i==="scenario"?t.jsx(p.Suspense,{fallback:t.jsx("div",{className:"p-3",style:{color:f.faint,fontSize:I.explorer.item},children:"Loading use cases…"}),children:t.jsx(gd,{explorerOnly:!0})}):t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"px-3 py-2",style:{borderBottom:`1px solid ${f.border}`},children:t.jsxs("div",{className:"flex gap-1",children:[t.jsx("input",{type:"text",placeholder:"Search elements...",value:o,onChange:j=>a(j.target.value),onKeyDown:j=>{j.key==="Enter"&&window.dispatchEvent(new Event("memo:expand-explorer-search"))},className:"flex-1 min-w-0 px-3 py-2 rounded-lg focus:outline-none",style:{background:f.surfaceAlt,border:`1px solid ${f.border}`,color:f.primary,fontSize:I.explorer.search}}),t.jsx("button",{onClick:()=>window.dispatchEvent(new Event("memo:collapse-explorer-tree")),title:"Collapse all Explorer groups","aria-label":"Collapse all Explorer groups",className:"rounded-lg flex items-center justify-center flex-shrink-0",style:{width:28,background:f.surfaceAlt,border:`1px solid ${f.border}`,color:f.secondary,cursor:"pointer"},children:t.jsx(Br,{})})]})}),t.jsx(Ar,{searchTerm:o})]}),t.jsx("div",{className:"memo-explorer-resizer",role:"separator","aria-label":"Resize Model Explorer","aria-orientation":"vertical","aria-valuemin":ft,"aria-valuemax":b,"aria-valuenow":Math.round(w),tabIndex:0,title:"Drag to resize · Double-click to reset",onPointerDown:N,onDoubleClick:()=>h(mt),onKeyDown:j=>{j.key==="ArrowLeft"?(j.preventDefault(),h(w-20)):j.key==="ArrowRight"?(j.preventDefault(),h(w+20)):j.key==="Home"?(j.preventDefault(),h(ft)):j.key==="End"&&(j.preventDefault(),h(b))}})]})}function Vd(e,r){if(r.length===0)return!0;const n=`${e.label??e.value} ${e.group??""} ${e.keywords??""}`.toLowerCase();return r.every(o=>n.includes(o))}function Wd(e,r){const n=r.trim().toLowerCase().split(/\s+/).filter(Boolean);if(n.length===0)return e;const o=[],a=[];for(const s of e){if(!Vd(s,n))continue;(s.label??s.value).toLowerCase().startsWith(n[0])?o.push(s):a.push(s)}return[...o,...a]}function en({label:e,options:r,selected:n,onChange:o,allLabel:a="All",placeholder:s="Type to filter…",width:i=150,title:l,describedAs:c,maxVisible:d=300,parentOf:u,iconOnly:m,align:b="left"}){var X;const[v,w]=p.useState(!1),[g,h]=p.useState(""),[y,N]=p.useState(0),[R,A]=p.useState(new Set),T=p.useRef(null),j=p.useRef(null),S=p.useMemo(()=>new Set(n),[n]),k=p.useMemo(()=>Wd(r,g),[r,g]),U=k.length>d?k.slice(0,d):k,H=k.length-U.length,O=p.useMemo(()=>{if(!u)return null;const z=new Map(r.map(M=>[M.value,M])),G=new Set(k.map(M=>M.value));for(const M of[...G]){let x=u.get(M);for(;x&&z.has(x)&&!G.has(x);)G.add(x),x=u.get(x)}const J=new Map;for(const M of G){const x=u.get(M);if(x&&G.has(x)){const _=J.get(x)??[];_.push(M),J.set(x,_)}}const ne=(M,x)=>{var _,W;return(((_=z.get(M))==null?void 0:_.label)??M).localeCompare(((W=z.get(x))==null?void 0:W.label)??x)};J.forEach(M=>M.sort(ne));const Q=[...G].filter(M=>!u.get(M)||!G.has(u.get(M))).sort(ne),oe=[],ae=(M,x)=>{const _=z.get(M);if(!_)return;const W=J.get(M)??[];oe.push({option:_,depth:x,children:W}),W.length>0&&R.has(M)&&W.forEach(F=>ae(F,x+1))};return Q.forEach(M=>ae(M,0)),oe},[r,k,u,R]);p.useEffect(()=>{N(0)},[g,v]),p.useEffect(()=>{if(!v)return;const z=G=>{var J;(J=T.current)!=null&&J.contains(G.target)||(w(!1),h(""))};return document.addEventListener("mousedown",z),()=>document.removeEventListener("mousedown",z)},[v]),p.useEffect(()=>{var z;v&&((z=j.current)==null||z.focus())},[v]);const D=p.useCallback(z=>{o(S.has(z)?n.filter(G=>G!==z):[...n,z])},[o,n,S]),$=p.useCallback(z=>{if(!u)return D(z);const G=new Set([z]);let J=!0;for(;J;){J=!1;for(const[Q,oe]of u)G.has(oe)&&!G.has(Q)&&(G.add(Q),J=!0)}const ne=[...G].every(Q=>S.has(Q));o(ne?n.filter(Q=>!G.has(Q)):[...new Set([...n,...G])])},[u,D,n,S,o]),E=z=>{if(z.key==="Escape"){w(!1),h("");return}z.key==="ArrowDown"&&(z.preventDefault(),N(G=>Math.min(G+1,U.length-1))),z.key==="ArrowUp"&&(z.preventDefault(),N(G=>Math.max(G-1,0))),z.key==="Enter"&&U[y]&&(z.preventDefault(),D(U[y].value))},q=n.length===0?a:n.length===1?((X=r.find(z=>z.value===n[0]))==null?void 0:X.label)??n[0]:`${n.length} selected`;return t.jsxs("div",{ref:T,style:{position:"relative",display:"flex",alignItems:"center",gap:"5px"},children:[t.jsx("span",{style:{fontSize:I.xs,color:f.muted,whiteSpace:"nowrap"},children:e}),t.jsx("button",{type:"button","aria-haspopup":"listbox","aria-expanded":v,title:l??(n.length>0?n.join(", "):a),onClick:()=>w(z=>!z),style:m?{width:24,height:24,display:"flex",alignItems:"center",justifyContent:"center",borderRadius:"4px",background:"transparent",border:"none",color:n.length>0?f.accent:f.muted,cursor:"pointer",padding:0}:{width:i,display:"flex",alignItems:"center",justifyContent:"space-between",gap:"6px",padding:"3px 7px",borderRadius:"5px",border:`1px solid ${n.length>0?f.accent:f.border}`,background:f.surface,fontSize:I.xs,color:n.length>0?f.primary:f.muted,cursor:"pointer",textAlign:"left"},children:m?t.jsx("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:t.jsx("polygon",{points:"22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3"})}):t.jsxs(t.Fragment,{children:[t.jsx("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:q}),t.jsx("span",{style:{fontSize:"9px",color:f.faint},children:"▼"})]})}),v&&t.jsxs("div",{role:"listbox",style:{position:"absolute",top:"calc(100% + 4px)",...b==="right"?{right:0}:{left:0},zIndex:60,width:Math.max(i+70,220),background:f.surface,border:`1px solid ${f.border}`,borderRadius:"7px",boxShadow:Fi.lg,overflow:"hidden"},children:[t.jsx("input",{ref:j,value:g,onChange:z=>h(z.target.value),onKeyDown:E,placeholder:s,"aria-label":`Filter ${c??e}`,style:{width:"100%",padding:"7px 9px",border:"none",borderBottom:`1px solid ${f.borderLight}`,fontSize:I.xs,outline:"none",color:f.primary}}),t.jsxs("div",{style:{maxHeight:"260px",overflowY:"auto"},children:[k.length===0&&t.jsxs("div",{style:{padding:"10px",fontSize:I.xs,color:f.faint},children:["Nothing matches ","“",g,"”"]}),(O??U.map(z=>({option:z,depth:0,children:[]}))).map(({option:z,depth:G,children:J},ne)=>{var ae;const Q=S.has(z.value),oe=!O&&z.group&&z.group!==((ae=U[ne-1])==null?void 0:ae.group)?z.group:null;return t.jsxs("div",{children:[oe&&t.jsx("div",{style:{position:"sticky",top:0,zIndex:1,padding:"4px 9px 2px",fontSize:"10px",fontWeight:600,color:f.faint,background:f.surface,borderBottom:`1px solid ${f.borderLight}`},children:oe}),t.jsxs("div",{role:"option","aria-selected":Q,onMouseEnter:()=>N(ne),onClick:()=>$(z.value),style:{display:"flex",alignItems:"center",gap:"7px",padding:"5px 9px 5px "+(9+G*16)+"px",cursor:"pointer",fontSize:I.xs,background:ne===y?f.surfaceAlt:"transparent",color:f.primary},children:[O&&t.jsx("button",{type:"button","aria-label":J.length>0?`${R.has(z.value)?"Collapse":"Expand"} ${z.label??z.value}`:void 0,disabled:J.length===0,onClick:M=>{M.stopPropagation(),J.length!==0&&A(x=>{const _=new Set(x);return _.has(z.value)?_.delete(z.value):_.add(z.value),_})},style:{width:"13px",padding:0,border:"none",background:"none",color:f.muted,cursor:J.length>0?"pointer":"default"},children:J.length>0?R.has(z.value)?"▾":"▸":""}),t.jsx("input",{type:"checkbox",readOnly:!0,checked:Q,style:{accentColor:f.accent}}),z.color&&t.jsx("span",{style:{width:"8px",height:"8px",borderRadius:"2px",background:z.color,flexShrink:0}}),t.jsx("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:z.label??z.value}),z.hint&&t.jsx("span",{style:{color:f.faint,fontSize:"11px"},children:z.hint})]})]},z.value)}),H>0&&t.jsxs("div",{style:{padding:"7px 9px",fontSize:"11px",color:f.faint,borderTop:`1px solid ${f.borderLight}`},children:[H.toLocaleString()," more match. Keep typing to narrow, or use"," ","Select matches to take all ",k.length.toLocaleString(),"."]})]}),t.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"10px",padding:"6px 9px",borderTop:`1px solid ${f.borderLight}`},children:[t.jsxs("button",{type:"button",onClick:()=>o(k.map(z=>z.value)),style:{fontSize:"11px",color:"#2563EB",background:"none",border:"none",cursor:"pointer",padding:0},children:["Select ",g?`matches (${k.length})`:`all (${r.length})`]}),t.jsx("button",{type:"button",onClick:()=>o([]),style:{fontSize:"11px",color:f.muted,background:"none",border:"none",cursor:"pointer",padding:0},children:"None"}),n.length>0&&t.jsxs("span",{style:{marginLeft:"auto",fontSize:"11px",color:f.faint},children:[n.length," picked"]})]})]})]})}const Nr="#E5E5E0",Hd="#2DD4A8",Gt=40;function Tr(e,r){var s;const n=e.id.toLowerCase(),o=((s=e.shortId)==null?void 0:s.toLowerCase())??"",a=e.name.toLowerCase();return n===r||o===r?0:n.startsWith(r)||o.startsWith(r)?1:a.startsWith(r)?2:n.includes(r)||a.includes(r)?3:4}function Kd(e,r){const n=r.query.trim().toLowerCase();return n?Object.values(e).filter(o=>o.id!==r.excludeId).filter(o=>[o.id,o.shortId,o.name,o.kind].filter(Boolean).join(" ").toLowerCase().includes(n)).sort((o,a)=>Tr(o,n)-Tr(a,n)||o.name.localeCompare(a.name)).slice(0,r.limit??Gt):[]}function Gd(e){const r=new Map;for(const n of e){let o=r.get(n.kind);o||(o={kind:n.kind,layer:n.layer,elements:[]},r.set(n.kind,o)),o.elements.push(n)}return[...r.values()]}function Yd(e,r){return Kd(e,{query:r.query,excludeId:r.source.id,limit:Object.keys(e).length}).filter(n=>!r.filterKinds||r.filterKinds.length===0||r.filterKinds.includes(n.kind)).filter(n=>Ye(r.source,n,r.registries).length>0).slice(0,r.limit??Gt)}function Jd({element:e,model:r,registries:n,enabled:o,onCreate:a}){var S;const[s,i]=p.useState(""),[l,c]=p.useState(!1),[d,u]=p.useState(0),[m,b]=p.useState([]),v=p.useRef(null),w=p.useRef(null);p.useEffect(()=>{i(""),c(!1),u(0),b([])},[e.id]);const g=p.useMemo(()=>Array.from(new Set(Object.values(r.elements).map(k=>k.kind))).sort(),[r.elements]),h=p.useMemo(()=>Yd(r.elements,{query:s,source:e,registries:n,filterKinds:m}),[r.elements,e,s,n,m]),y=p.useMemo(()=>Gd(h),[h]),N=p.useMemo(()=>y.flatMap(k=>k.elements),[y]);p.useEffect(()=>{u(0)},[s]),p.useEffect(()=>{var k,U;l&&((U=(k=w.current)==null?void 0:k.querySelector('[data-active="true"]'))==null||U.scrollIntoView({block:"nearest"}))},[d,l]);const R=p.useCallback(k=>{const U=Ye(e,k,n);if(U.length>0){const H=["trace","satisfies","implements","verifies","validates"],D=U.find($=>H.some(E=>$.definition.name.toLowerCase().includes(E)||$.definition.label.toLowerCase().includes(E)))??U[0];a({type:D.definition.name,sourceId:D.sourceId,targetId:D.targetId,direction:D.direction})}i(""),c(!1)},[e,n,a]),A=p.useCallback(()=>{i(""),c(!1)},[]),T=p.useCallback(k=>{if(k.key==="Escape"){if(l){c(!1);return}A();return}if(!l||N.length===0){k.key==="ArrowDown"&&N.length>0&&(k.preventDefault(),c(!0));return}if(k.key==="ArrowDown")k.preventDefault(),u(U=>(U+1)%N.length);else if(k.key==="ArrowUp")k.preventDefault(),u(U=>(U-1+N.length)%N.length);else if(k.key==="Enter"){k.preventDefault();const U=N[d];U&&R(U)}},[l,N,d,R,A]),j=(S=N[d])==null?void 0:S.id;return t.jsx("div",{className:"mt-1.5",style:{opacity:o?1:.6},children:t.jsxs("div",{className:"relative",children:[t.jsxs("div",{className:"flex gap-2",children:[t.jsx("input",{ref:v,value:s,disabled:!o,onChange:k=>{i(k.target.value),c(!0)},onFocus:()=>{s.trim()&&c(!0)},onBlur:()=>{window.setTimeout(()=>c(!1),120)},onKeyDown:T,placeholder:o?"Link to… type an element ID or name":"Connect to the dev server to author relationships","aria-label":"Link this element to another","aria-expanded":l,"aria-controls":"memo-quick-add-matches","aria-activedescendant":l&&j?`memo-quick-add-${j}`:void 0,role:"combobox",autoComplete:"off",className:"flex-1 px-2 py-1 rounded focus:outline-none",style:{fontSize:I.xs,background:"#FFFFFF",border:`1px solid ${l&&s.trim()?Hd:Nr}`,color:"#374151",minWidth:0}}),t.jsx("div",{style:{flexShrink:0},children:t.jsx(en,{label:"",options:g.map(k=>({value:k,label:k})),selected:m,onChange:b,allLabel:"All Types",iconOnly:!0})})]}),l&&s.trim()&&t.jsxs("div",{id:"memo-quick-add-matches",ref:w,role:"listbox",className:"absolute left-0 right-0 z-20 mt-1 rounded overflow-y-auto",style:{maxHeight:240,background:"#FFFFFF",border:`1px solid ${Nr}`,boxShadow:"0 8px 24px rgba(15,23,42,0.14)"},children:[N.length===0?t.jsxs("div",{className:"px-2 py-2",style:{fontSize:I.xs,color:"#9CA3AF"},children:["No MEMO-legal trace target matches “",s.trim(),"”."]}):y.map(k=>t.jsxs("div",{children:[t.jsx(Xd,{kind:k.kind,layer:k.layer,count:k.elements.length}),k.elements.map(U=>t.jsx(Qd,{element:U,active:U.id===j,onSelect:()=>R(U)},U.id))]},k.kind)),h.length===Gt&&t.jsxs("div",{className:"px-2 py-1",style:{fontSize:"10px",color:"#9CA3AF"},children:["Showing the first ",Gt," matches — keep typing to narrow."]})]})]})})}function Xd({kind:e,layer:r,count:n}){const o=ue[r]||"#666";return t.jsxs("div",{className:"flex items-center gap-1.5 px-2 py-1",style:{background:"#FAFAF8",borderBottom:"1px solid #F0F0ED",position:"sticky",top:0},children:[t.jsx("span",{className:"w-2 h-2 flex-shrink-0",style:{background:o,borderRadius:2}}),t.jsx("span",{style:{fontSize:"10px",fontWeight:600,color:"#6B7280"},children:e}),t.jsx("span",{className:"ml-auto",style:{fontSize:"10px",color:"#D1D5DB"},children:n})]})}function Qd({element:e,active:r,onSelect:n}){return t.jsxs("div",{id:`memo-quick-add-${e.id}`,role:"option","aria-selected":r,"data-active":r,onMouseDown:o=>{o.preventDefault(),n()},className:"flex items-center gap-1.5 px-2 py-1 cursor-pointer",style:{background:r?"#2DD4A818":"transparent"},children:[t.jsx("span",{className:"truncate",style:{fontSize:I.xs,color:"#1a1a1a"},children:e.name||e.id}),t.jsx("span",{className:"ml-auto flex-shrink-0 font-mono truncate",style:{fontSize:"10px",color:"#9CA3AF",maxWidth:110},title:e.id,children:e.shortId??e.id})]})}const Zd={text:"14px",heading:"13px",meta:"12px",valuePadding:"9px 12px",fieldGap:"10px",sectionPadding:"0 0 18px 0",radius:"10px",twoColumnAttributes:!0},ec={text:"12px",heading:"12px",meta:"11px",valuePadding:"4px 7px",fieldGap:"5px",sectionPadding:"0 0 10px 0",radius:"7px",twoColumnAttributes:!1};function Ve(e){return e==="page"?Zd:ec}const _o={kind:"editable"},tc={id:"The model identifier. It is referenced by relationships and views, so it is not editable here.",name:"The element name in SysML. Renaming touches every reference, so do it in the source file."};function Rr(e){const r=tc[e];return r?{kind:"identity",reason:r}:_o}function Mu(e){return e==="doc"?_o:{kind:"derived",reason:`"${e}" is derived from the SysML source when the model is built.`}}function Nn(e){return e.kind==="editable"}function Po(e){switch(e.kind){case"editable":return"Click to edit";case"identity":return"Identifier — not editable here";case"derived":return"Derived from source — not editable"}}function nc({title:e,count:r,actions:n,density:o,defaultOpen:a=!0,collapsible:s=!0,children:i}){const[l,c]=p.useState(a),d=Ve(o),u=o==="page",m=s?l:!0;return t.jsxs("section",{style:{padding:u?"16px 18px":d.sectionPadding,border:u?"1px solid rgba(60,60,67,0.12)":"none",borderBottom:u?"1px solid rgba(60,60,67,0.12)":`1px solid ${f.borderLight}`,borderRadius:u?14:0,background:u?f.surface:"transparent",boxShadow:u?"0 1px 2px rgba(15,23,42,0.04)":"none",marginBottom:u?14:0},children:[t.jsxs("header",{className:"flex items-center gap-2",style:{cursor:s?"pointer":"default",padding:u?"0 0 10px 0":"6px 10px",borderRadius:u?0:"6px",margin:u?0:"2px 4px"},onClick:s?()=>c(b=>!b):void 0,onMouseEnter:b=>{!u&&s&&(b.currentTarget.style.background=f.surfaceAlt)},onMouseLeave:b=>{u||(b.currentTarget.style.background="transparent")},children:[t.jsx("h3",{style:{flex:1,margin:0,fontSize:u?d.heading:"10px",fontWeight:u?700:"bold",color:u?f.primary:"#6B7280",letterSpacing:u?0:"0.05em",textTransform:u?"none":"uppercase"},children:e}),typeof r=="number"&&(u?t.jsx("span",{style:{fontSize:d.meta,color:f.faint},children:r}):t.jsx("span",{className:"px-1.5 py-0.5 rounded-md font-medium text-[10px]",style:{background:"#F3F4F6",color:"#6B7280"},children:r})),n&&t.jsx("span",{onClick:b=>b.stopPropagation(),children:n}),s&&t.jsx("span",{style:{color:"#D1D5DB",fontSize:u?d.meta:14},children:m?"▾":"▸"})]}),m&&t.jsx("div",{style:{padding:u?0:"0 14px 8px"},children:i})]})}function Ir({value:e,editability:r,density:n,mono:o}){const a=Ve(n),s=r.kind==="editable"?"":r.reason;return t.jsxs("div",{title:s||Po(r),style:{display:"flex",alignItems:"center",gap:6,padding:a.valuePadding,borderRadius:a.radius,background:f.surfaceAlt,border:"1px solid transparent",color:f.muted,fontSize:a.text,fontFamily:o?"ui-monospace, SFMono-Regular, Menlo, monospace":"inherit",cursor:"default",minWidth:0},children:[t.jsx("span",{className:"truncate",style:{flex:1},children:e||t.jsx("span",{style:{color:f.faint,fontStyle:"italic"},children:"none"})}),t.jsx("span",{"aria-hidden":!0,style:{fontSize:a.meta,color:"#C7CBD1",flexShrink:0},children:"🔒"})]})}function at({value:e,onSave:r,density:n,multiline:o,placeholder:a,autoFocus:s,compact:i=!1}){const[l,c]=p.useState(!1),[d,u]=p.useState(!1),[m,b]=p.useState(e),v=Ve(n),w=p.useRef(!1),g=p.useRef(null),[h,y]=p.useState(null),[N,R]=p.useState(0),A=C(D=>D.model),T=C(D=>D.inspectElement);p.useEffect(()=>{b(e)},[e]);const j=p.useMemo(()=>h===null||!A?[]:Object.values(A.elements).filter(D=>{const $=(D.shortId??"").toLowerCase(),E=D.id.toLowerCase(),q=D.name.toLowerCase();return $.includes(h)||E.includes(h)||q.includes(h)}).slice(0,10),[h,A]),S=p.useCallback(()=>{w.current||h===null&&(w.current=!0,c(!1),m!==e&&r(m))},[m,e,r,h]),k=p.useCallback(D=>{var $;if(h!==null){if(D.key==="ArrowDown"){D.preventDefault(),R(E=>(E+1)%Math.max(1,j.length));return}if(D.key==="ArrowUp"){D.preventDefault(),R(E=>(E-1+j.length)%Math.max(1,j.length));return}if(D.key==="Enter"||D.key==="Tab"){D.preventDefault();const E=j[N];if(E){const q=(($=g.current)==null?void 0:$.selectionStart)??0,X=m.slice(0,q),z=m.slice(q),G=X.match(/(?:^|\s)@([a-zA-Z0-9_-]*)$/);if(G){const J=q-G[1].length-1,ne=`[${E.name}](@${E.shortId??E.id}) `,Q=m.slice(0,J)+ne+z;b(Q),y(null),setTimeout(()=>{g.current&&(g.current.selectionStart=J+ne.length,g.current.selectionEnd=g.current.selectionStart,g.current.focus())},0)}}else y(null);return}if(D.key==="Escape"){D.preventDefault(),y(null);return}}D.key==="Enter"&&!o&&(D.preventDefault(),S()),D.key==="Escape"&&(w.current=!0,b(e),c(!1))},[S,o,e,h,j,N,m]),U=D=>{const $=D.target.value;b($);const E=D.target.selectionStart??0,X=$.slice(0,E).match(/(?:^|\s)@([a-zA-Z0-9_-]*)$/);X?(y(X[1].toLowerCase()),R(0)):y(null)},H=()=>{w.current=!1,b(e),c(!0)};if(l){const D={ref:g,value:m,autoFocus:!0,onChange:U,onBlur:()=>{setTimeout(S,200)},onKeyDown:k,placeholder:a,style:{width:"100%",padding:i?"5px 8px":v.valuePadding,borderRadius:i?"6px":v.radius,border:`1px solid ${f.accent}`,boxShadow:`0 0 0 3px ${f.accent}25`,background:f.surface,color:f.primary,fontSize:v.text,fontFamily:"inherit",outline:"none",...o?{minHeight:n==="page"?"110px":"54px",resize:"vertical",lineHeight:1.6}:{}}};return t.jsxs("div",{style:{position:"relative",width:"100%"},children:[o?t.jsx("textarea",{...D}):t.jsx("input",{type:"text",...D}),h!==null&&j.length>0&&t.jsx("div",{style:{position:"absolute",top:"100%",left:0,right:0,marginTop:4,background:"#fff",border:"1px solid #E5E7EB",borderRadius:6,boxShadow:"0 4px 12px rgba(0,0,0,0.1)",zIndex:100,maxHeight:200,overflowY:"auto"},children:j.map(($,E)=>t.jsxs("div",{style:{padding:"6px 12px",fontSize:13,cursor:"pointer",background:E===N?"#F3F4F6":"#fff",display:"flex",justifyContent:"space-between"},onClick:()=>{var J,ne;const q=((J=g.current)==null?void 0:J.selectionStart)??m.length,X=m.slice(0,q),z=m.slice(q),G=X.match(/(?:^|\s)@([a-zA-Z0-9_-]*)$/);if(G){const Q=q-G[1].length-1,oe=m.slice(0,Q)+`[${$.name}](@${$.shortId??$.id}) `+z;b(oe)}y(null),(ne=g.current)==null||ne.focus()},children:[t.jsx("span",{style:{fontWeight:500,color:"#111827"},children:$.name}),t.jsx("span",{style:{color:"#6B7280",fontSize:11},children:$.shortId??$.id})]},$.id))})]})}const O=D=>{if(!D)return a??"Click to add…";if(!A)return D;const $=/(\[[^\]]+\]\(@[a-zA-Z0-9_-]+\)|@[a-zA-Z0-9_-]+)/g;return D.split($).map((q,X)=>{let z="",G="";if(q.startsWith("@"))z=q.slice(1);else if(q.startsWith("[")&&q.includes("](@")){const J=q.match(/\[([^\]]+)\]\(@([a-zA-Z0-9_-]+)\)/);J&&(G=J[1],z=J[2])}if(z){const J=Object.values(A.elements).find(ne=>(ne.shortId??ne.id)===z)||A.elements[z];if(J)return t.jsx("span",{onClick:ne=>{ne.stopPropagation(),T(J.id)},style:{color:f.accent,cursor:"pointer",fontWeight:600,background:"#E0F2FE",padding:"1px 4px",borderRadius:"4px"},title:J.name,children:G||`@${J.shortId??J.id}`},X)}return t.jsx("span",{children:q},X)})};return t.jsxs("div",{role:"button",tabIndex:0,title:"Click to edit",onClick:H,onFocus:()=>u(!0),onBlur:()=>u(!1),onKeyDown:D=>{(D.key==="Enter"||D.key===" ")&&(D.preventDefault(),H())},onMouseEnter:()=>u(!0),onMouseLeave:()=>u(!1),style:{display:"flex",alignItems:"flex-start",gap:6,padding:i?"5px 8px":v.valuePadding,borderRadius:i?"6px":v.radius,background:d?"#F3F4F6":"transparent",border:`1px solid ${d?"#E5E7EB":"transparent"}`,boxShadow:"none",color:e?f.primary:f.faint,fontSize:v.text,cursor:"text",transition:"background-color 150ms ease, border-color 150ms ease",lineHeight:o?1.6:1.4,whiteSpace:o?"pre-wrap":"nowrap",overflow:"hidden",minWidth:0},children:[t.jsx("span",{style:{flex:1,minWidth:0,overflow:"hidden",textOverflow:"ellipsis"},children:O(e)}),t.jsx("span",{"aria-hidden":!0,style:{flexShrink:0,fontSize:v.meta,color:f.accent,opacity:d?1:0,transition:"opacity 150ms ease"},children:"✎"})]})}function _u({label:e,editability:r,density:n,children:o}){const a=Ve(n);return t.jsxs("div",{style:{minWidth:0},children:[t.jsxs("div",{className:"flex items-center gap-1.5",style:{marginBottom:4,fontSize:a.meta,color:f.muted},children:[t.jsx("span",{style:{fontFamily:"ui-monospace, SFMono-Regular, Menlo, monospace"},children:e}),t.jsx("span",{className:"sr-only",children:Po(r)}),!Nn(r)&&t.jsx("span",{title:r.kind==="editable"?"":r.reason,style:{fontSize:"10px",padding:"0 4px",borderRadius:4,background:f.surfaceAlt,color:f.faint,border:`1px solid ${f.border}`},children:r.kind==="identity"?"identifier":"derived"})]}),o]})}function Pu({density:e}){const r=Ve(e);return t.jsxs("div",{className:"flex items-center gap-4 flex-wrap",style:{fontSize:r.meta,color:f.faint},children:[t.jsxs("span",{className:"flex items-center gap-1.5",children:[t.jsx("span",{style:{color:f.accent},children:"✎"})," editable here"]}),t.jsx("span",{children:"Identity and source metadata are read-only"})]})}function rc(e,r,n,o){var c;const a=new Map,s=(d,u)=>{var v;const m=u==="outgoing"?d.targetId:d.sourceId,b=a.get(m)??{id:m,element:n.elements[m],links:[]};b.links.push({relationship:d,direction:u,label:((v=zn(d.type,o))==null?void 0:v.label)??d.type}),a.set(m,b)};e.forEach(d=>s(d,"outgoing")),r.forEach(d=>s(d,"incoming"));const i=new Map;for(const d of a.values()){const u=((c=d.element)==null?void 0:c.layer)||"other";i.set(u,[...i.get(u)??[],d])}const l=d=>{const u=Re.indexOf(d);return u<0?Number.MAX_SAFE_INTEGER:u};return[...i.entries()].map(([d,u])=>({layer:d,elements:u.sort((m,b)=>{var v,w;return(((v=m.element)==null?void 0:v.name)??m.id).localeCompare(((w=b.element)==null?void 0:w.name)??b.id)})})).sort((d,u)=>l(d.layer)-l(u.layer)||d.layer.localeCompare(u.layer))}function oc({element:e,model:r,registries:n,outgoing:o,incoming:a,density:s,onNavigate:i,onCreate:l,onDelete:c}){const[d,u]=p.useState(""),m=p.useMemo(()=>rc(o,a,r,n),[o,a,r,n]),b=d.trim().toLowerCase(),v=p.useMemo(()=>m.map(g=>({...g,elements:g.elements.filter(h=>{var y,N,R;return!b||[(y=h.element)==null?void 0:y.name,(N=h.element)==null?void 0:N.kind,(R=h.element)==null?void 0:R.shortId,h.id,g.layer,...h.links.map(A=>A.label)].filter(Boolean).join(" ").toLowerCase().includes(b)})})).filter(g=>g.elements.length>0),[m,b]),w=m.reduce((g,h)=>g+h.elements.length,0);return t.jsxs("div",{style:{border:s==="page"?"none":`1px solid ${f.border}`,borderRadius:12,background:s==="page"?"transparent":f.surfaceAlt,padding:s==="page"?0:10},children:[t.jsxs("div",{className:"flex items-center gap-3 flex-wrap",style:{marginBottom:14},children:[t.jsxs("div",{children:[t.jsx("div",{style:{color:f.primary,fontSize:13,fontWeight:700},children:"Linked elements"}),t.jsxs("div",{style:{color:f.muted,fontSize:11},children:[w," element",w===1?"":"s"," across ",m.length," layer",m.length===1?"":"s"]})]}),w>6&&t.jsx("input",{value:d,onChange:g=>u(g.target.value),placeholder:"Filter linked elements…","aria-label":"Filter linked elements",className:"transition-shadow focus:shadow-md",style:{marginLeft:"auto",width:240,padding:"8px 12px",borderRadius:8,border:`1px solid ${f.border}`,background:"#F9FAFB",color:f.primary,fontSize:13,outline:"none"}})]}),w===0&&t.jsx("div",{style:{color:f.faint,fontSize:12},children:"No linked elements."}),t.jsx("div",{style:{display:"flex",flexDirection:"column",gap:14},children:v.map(g=>{const h=ue[g.layer]||f.muted;return t.jsxs("section",{style:{padding:"16px 20px",background:h+"08",border:`1px solid ${h}15`,borderRadius:12},children:[t.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[t.jsx("span",{style:{width:10,height:10,borderRadius:3,background:h}}),t.jsx("strong",{style:{color:f.primary,fontSize:14,letterSpacing:"0.02em"},children:Le[g.layer]??g.layer}),t.jsx("span",{style:{color:f.faint,fontSize:12,background:h+"15",padding:"1px 6px",borderRadius:10},children:g.elements.length})]}),t.jsx("div",{style:{display:"grid",gridTemplateColumns:s==="page"?"repeat(auto-fill, 264px)":"1fr",justifyContent:"start",gap:7},children:g.elements.map(y=>t.jsx(ac,{element:e,linked:y,registries:n,color:h,onNavigate:i,onCreate:l,onDelete:c},y.id))})]},g.layer)})})]})}function ac({element:e,linked:r,registries:n,color:o,onNavigate:a,onCreate:s,onDelete:i}){var b,v,w,g;const[l,c]=p.useState(!1),d=p.useMemo(()=>!e||!r.element?[]:Ye(e,r.element,n).map(h=>({value:`${h.definition.name}::${h.direction}`,label:`${h.definition.label} ${h.direction==="outgoing"?"to":"from"}`})),[e,r.element,n]),u=r.links.map(h=>`${h.relationship.type}::${h.direction}`),m=p.useCallback(h=>{if(h.length===0||!s||!i)return;const y=new Set(h),N=new Set(u);for(const A of r.links)y.has(`${A.relationship.type}::${A.direction}`)||i(A.relationship.id);const R=Ye(e,r.element,n);for(const A of h)if(!N.has(A)){const T=R.find(j=>`${j.definition.name}::${j.direction}`===A);T&&s({type:T.definition.name,sourceId:T.sourceId,targetId:T.targetId,direction:T.direction})}},[u,r.links,e,r.element,n,s,i]);return t.jsx("button",{onClick:()=>a(r.id),onMouseEnter:()=>c(!0),onMouseLeave:()=>c(!1),className:"text-left transition-all duration-200",title:`Open ${((b=r.element)==null?void 0:b.name)??r.id}`,style:{padding:"12px 14px",borderRadius:10,background:"#FFFFFF",border:`1px solid ${l?o+"80":"#E5E7EB"}`,cursor:"pointer",minWidth:0,width:"100%",maxWidth:280,boxShadow:l?"0 4px 12px rgba(0,0,0,0.05)":"0 1px 2px rgba(0,0,0,0.02)",transform:l?"translateY(-1px)":"none"},children:t.jsxs("div",{style:{minWidth:0},children:[t.jsxs("div",{className:"flex items-start justify-between mb-1",style:{gap:4},children:[t.jsx("div",{children:r.links.map(h=>t.jsxs("div",{style:{color:h.direction==="outgoing"?"#2563EB":"#059669",fontSize:10,fontWeight:600,marginBottom:2},children:[h.label," ",h.direction==="outgoing"?"to":"from"]},h.relationship.id))}),d.length>1&&s&&t.jsx("div",{onClick:h=>h.stopPropagation(),style:{flexShrink:0,marginTop:-4,marginRight:-4},children:t.jsx(en,{label:"",options:d,selected:u,onChange:m,iconOnly:!0,align:"right",title:"Change relationship type"})})]}),t.jsx("strong",{className:"truncate",style:{display:"block",color:f.primary,fontSize:13},children:((v=r.element)==null?void 0:v.name)??r.id}),t.jsx("div",{className:"font-mono truncate",style:{color:"#9CA3AF",fontSize:"10px",marginTop:2},title:r.id,children:((w=r.element)==null?void 0:w.shortId)??r.id}),t.jsx("div",{style:{color:f.muted,fontSize:10,marginTop:2},children:((g=r.element)==null?void 0:g.kind)??"Unknown element type"})]})})}function sc({element:e,outgoing:r,incoming:n,density:o}){const a=C(O=>O.model),s=C(O=>O.connected),i=C(O=>O.selectElement),l=C(O=>O.selectedDiagramId),c=C(O=>O.pendingRelationships),d=C(O=>O.createRelationship),u=C(O=>O.deleteRelationship),m=C(O=>O.dismissPendingRelationship),b=C(O=>O.addElementToDiagram),[v,w]=p.useState(!1),[g,h]=p.useState(null),[y,N]=p.useState(["Requirement","Risk","Function","SystemFunction","ComponentFunction"]),R=p.useMemo(()=>xo(a),[a]);p.useEffect(()=>{h(null),w(!1),N(["Requirement","Risk","Function","SystemFunction","ComponentFunction"])},[e.id]);const A=c.filter(O=>O.sourceId===e.id||O.targetId===e.id),T=r.length+n.length,j=p.useCallback(async O=>{var z;h(null);const D=await d({...O,selectedElementId:e.id,diagramId:l??void 0});if(!D.success){h({kind:"error",message:D.error??"The relationship could not be created."});return}const $=O.sourceId===e.id?O.targetId:O.sourceId,E=Zt(a,l),q=(z=D.diagnostics)==null?void 0:z.find(G=>G.code==="REL-005"),X=!!E&&!!E.elementIds&&E.elementIds.length>0&&!E.elementIds.includes($);h(X&&!q&&l?{kind:"success",message:`Relationship created in ${D.sourceFile??"the model"}.`,offerAddToView:{elementId:$,diagramId:l}}:q?{kind:"success",message:`Relationship created in ${D.sourceFile??"the model"}.`,profileMessage:q.message}:null)},[d,e.id,l,a]),S=p.useCallback(async O=>{const D=await u(O);D.success||h({kind:"error",message:D.error??"The relationship could not be deleted."})},[u]),k=p.useMemo(()=>{const O=new Map,D=($,E)=>{const q=E==="outgoing"?$.targetId:$.sourceId,X=a==null?void 0:a.elements[q],z=(X==null?void 0:X.kind)||"Unknown Type",G=O.get(z)??new Map,J=G.get(q)??[];J.push({rel:$,direction:E}),G.set(q,J),O.set(z,G)};return a&&(r.forEach($=>D($,"outgoing")),n.forEach($=>D($,"incoming"))),O},[r,n,a]),U=Array.from(k.keys()).sort(),H=new Map([...k.entries()].filter(([O])=>y.includes(O)));return a?t.jsx(t.Fragment,{children:t.jsxs(nc,{title:"Relationships",count:T,density:o,collapsible:o==="panel",actions:t.jsxs("div",{className:"flex items-center gap-1",children:[T>0&&t.jsx("button",{onClick:()=>w(!0),style:{width:24,height:24,borderRadius:"4px",background:"transparent",color:"#6B7280",border:"none",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center"},title:"View Details (Rich Grid)","aria-label":"View Details",onMouseEnter:O=>O.currentTarget.style.background="#F3F4F6",onMouseLeave:O=>O.currentTarget.style.background="transparent",children:t.jsx("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:t.jsx("path",{d:"M15 3h6v6M9 21H3v-6M21 3l-7 7M3 21l7-7"})})}),T>0&&t.jsx(en,{label:"",options:U.map(O=>({value:O,label:O})),selected:y,onChange:N,allLabel:"None",iconOnly:!0,align:"right"})]}),children:[t.jsx("div",{style:{marginBottom:o==="page"?14:8,maxWidth:o==="page"?720:void 0},children:t.jsx(Jd,{element:e,model:a,registries:R,enabled:s,onCreate:j})}),v&&t.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/60 backdrop-blur-sm",style:{padding:"2rem"},onClick:()=>w(!1),children:t.jsxs("div",{className:"bg-white rounded-xl shadow-2xl flex flex-col overflow-hidden w-full max-w-5xl max-h-full",onClick:O=>O.stopPropagation(),children:[t.jsxs("div",{className:"flex justify-between items-center px-5 py-4 border-b border-gray-200 bg-gray-50/50",children:[t.jsx("h2",{className:"text-lg font-bold text-gray-900",children:"Element Relationships"}),t.jsx("button",{onClick:()=>w(!1),className:"text-gray-400 hover:text-gray-700 font-bold px-2 py-1 bg-transparent border-none cursor-pointer",children:"✕"})]}),t.jsx("div",{className:"flex-1 overflow-auto p-6 bg-gray-50/30",children:t.jsx(oc,{element:e,model:a,registries:R,outgoing:r,incoming:n,density:o,onNavigate:O=>{w(!1),i(O)},onCreate:d,onDelete:S})})]})}),T===0&&A.length===0&&t.jsx("div",{style:{fontSize:Ve(o).meta,color:f.faint,padding:"2px 0 6px"},children:"No relationships yet — add the first one below."}),T>0&&H.size>0&&t.jsx("div",{className:"flex items-center justify-between",style:{marginBottom:12,marginTop:12,borderTop:"1px solid #E5E7EB",paddingTop:12},children:t.jsx("span",{style:{fontSize:"10px",fontWeight:700,color:"#9CA3AF",textTransform:"uppercase",letterSpacing:"0.04em"},children:"Existing Links"})}),t.jsx("div",{style:{display:"flex",flexDirection:"column",gap:12},children:[...H.entries()].map(([O,D])=>t.jsxs("div",{children:[t.jsx("div",{style:{fontSize:"10px",color:f.muted,textTransform:"uppercase",fontWeight:700,letterSpacing:"0.04em",marginBottom:6},children:O}),t.jsx("div",{style:{display:"flex",flexDirection:"column",gap:6},children:[...D.entries()].map(([$,E])=>t.jsx(lc,{sourceElement:e,oppositeId:$,links:E,model:a,registries:R,density:o,deletable:s,onNavigate:()=>i($),onCreate:d,onDelete:S},$))})]},O))}),A.map(O=>t.jsx(dc,{pending:O,model:a,onDismiss:()=>m(O.pendingId)},O.pendingId)),g&&t.jsx(ic,{status:g,onAddToView:()=>{g.offerAddToView&&(b(g.offerAddToView.diagramId,g.offerAddToView.elementId),h({kind:"success",message:"Element added to this view."}))},onDismiss:()=>h(null),model:a})]})}):null}function ic({status:e,onAddToView:r,onDismiss:n,model:o}){var i;const a=e.kind==="success",s=e.offerAddToView?((i=o.elements[e.offerAddToView.elementId])==null?void 0:i.name)??e.offerAddToView.elementId:null;return t.jsxs("div",{className:"text-xs p-2 rounded-lg mt-2",style:{background:a?"#F0FDF4":"#FEF2F2",border:`1px solid ${a?"#BBF7D0":"#FECACA"}`,color:a?"#166534":"#DC2626"},children:[t.jsxs("div",{className:"flex items-start gap-1.5",children:[t.jsx("span",{className:"flex-1",children:e.message}),t.jsx("button",{onClick:n,style:{background:"none",border:"none",cursor:"pointer",color:"inherit",lineHeight:1},"aria-label":"Dismiss",children:"×"})]}),e.profileMessage&&t.jsx("div",{className:"mt-1",style:{color:"#92400E"},children:"Relationship created in the model, but this view profile does not display this relationship type."}),e.offerAddToView&&t.jsxs("button",{onClick:r,className:"mt-1.5 px-2 py-0.5 rounded",style:{background:"#FFFFFF",border:"1px solid #BBF7D0",color:"#166534",cursor:"pointer",fontSize:I.xs},children:["Relationship created. Add ",s," to this view?"]})]})}function lc({sourceElement:e,oppositeId:r,links:n,model:o,registries:a,deletable:s,density:i,onNavigate:l,onCreate:c,onDelete:d}){const u=o.elements[r],m=u&&ue[u.layer]||"#666",[b,v]=p.useState(!1),[w,g]=p.useState(!1),[h,y]=p.useState(null),N=Ve(i),R=n.filter(S=>s&&S.rel.named===!0),A=p.useMemo(()=>!e||!u?[]:Ye(e,u,a).map(S=>({value:`${S.definition.name}::${S.direction}`,label:`${S.definition.label} ${S.direction==="outgoing"?"to":"from"}`})),[e,u,a]),T=n.map(S=>`${S.rel.type}::${S.direction}`),j=p.useCallback(S=>{if(S.length===0||!c||!d)return;const k=new Set(S),U=new Set(T);for(const O of n)k.has(`${O.rel.type}::${O.direction}`)||d(O.rel.id);const H=Ye(e,u,a);for(const O of S)if(!U.has(O)){const D=H.find($=>`${$.definition.name}::${$.direction}`===O);D&&c({type:D.definition.name,sourceId:D.sourceId,targetId:D.targetId,direction:D.direction})}},[T,n,e,u,a,c,d]);return t.jsxs("div",{onMouseEnter:()=>g(!0),onMouseLeave:()=>g(!1),style:{borderLeft:`3px solid ${m}`,borderRadius:6,background:f.surface,borderTop:`1px solid ${f.borderLight}`,borderRight:`1px solid ${f.borderLight}`,borderBottom:`1px solid ${f.borderLight}`,width:"100%"},children:[t.jsxs("div",{className:"flex items-center gap-2",style:{padding:i==="page"?"8px 10px":"6px 8px",fontSize:N.text},children:[t.jsxs("button",{onClick:l,className:"text-left flex items-center gap-1.5",style:{display:"flex",flex:1,minWidth:0,background:"none",border:"none",cursor:"pointer",padding:0},title:`Go to ${(u==null?void 0:u.name)??r}`,children:[t.jsx("strong",{className:"truncate font-mono",style:{color:f.primary,fontSize:"11px",fontWeight:600},children:(u==null?void 0:u.shortId)??r}),n.length>1&&t.jsx("span",{style:{fontSize:"10px",color:"#9CA3AF",background:"#F3F4F6",padding:"1px 4px",borderRadius:4,fontWeight:600},children:n.length})]}),A.length>1&&c&&t.jsx("div",{onClick:S=>S.stopPropagation(),style:{flexShrink:0},children:t.jsx(en,{label:"",options:A,selected:T,onChange:j,allLabel:"Relationships",iconOnly:!0,align:"right"})}),t.jsx("button",{onClick:()=>v(S=>!S),style:{background:"none",border:"none",cursor:"pointer",color:f.faint,padding:2},"aria-label":b?"Hide relationship details":"Show relationship details",children:b?"▾":"▸"}),R.length>0&&(w||b||h==="header")&&t.jsxs("div",{className:"relative flex items-center",children:[t.jsx("button",{onClick:S=>{S.stopPropagation(),y("header")},"aria-label":`Remove relationships to ${(u==null?void 0:u.name)??r}`,title:"Remove relationships",style:{width:20,height:20,padding:0,border:0,borderRadius:10,background:"#FFFFFFAA",color:"#9CA3AF",cursor:"pointer",lineHeight:1},children:"×"}),h==="header"&&t.jsxs("div",{className:"absolute right-full mr-2 top-1/2 -translate-y-1/2 z-20 bg-white rounded-lg shadow-xl border border-gray-200 p-2.5 w-48",onClick:S=>S.stopPropagation(),style:{boxShadow:"0 10px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1)"},children:[t.jsxs("div",{style:{fontSize:"11px",fontWeight:600,color:"#374151",marginBottom:"8px"},children:["Remove ",R.length>1?`all ${R.length} relationships`:"relationship","?"]}),t.jsxs("div",{className:"flex gap-1.5 justify-end",children:[t.jsx("button",{onClick:()=>y(null),className:"px-2 py-1 rounded",style:{fontSize:"10px",background:"#F3F4F6",color:"#4B5563",border:"none",cursor:"pointer"},children:"Cancel"}),t.jsx("button",{onClick:()=>{y(null),R.forEach(S=>d(S.rel.id))},className:"px-2 py-1 rounded",style:{fontSize:"10px",background:"#EF4444",color:"#FFFFFF",border:"none",cursor:"pointer"},children:"Remove"})]})]})]})]}),b&&t.jsx("div",{className:"px-3 pb-2 space-y-2",style:{borderTop:`1px solid ${f.borderLight}`,paddingTop:7},children:n.map(({rel:S,direction:k},U)=>{const H=zn(S.type,a),O=s&&S.named===!0;return t.jsxs("div",{style:{fontSize:"10px",color:"#6B7280",marginTop:U>0?8:0,paddingTop:U>0?8:0,borderTop:U>0?`1px dashed ${f.borderLight}`:"none"},children:[t.jsx(It,{label:"Kind",value:(H==null?void 0:H.label)??S.type,valueColor:m}),t.jsx(It,{label:"Roles",value:`${S.sourceEnd||(H==null?void 0:H.sourceEnd.name)||"source"} → ${S.targetEnd||(H==null?void 0:H.targetEnd.name)||"target"}`}),t.jsx(It,{label:"ID",value:S.id,mono:!0}),t.jsx(It,{label:"Source",value:S.file||"—",mono:!0}),!S.named&&t.jsx("div",{style:{color:"#D97706",marginTop:4},children:"Anonymous connection — name it in SysML to allow deletion from here."}),O&&t.jsxs("div",{className:"relative inline-block mt-2",children:[t.jsx("button",{onClick:D=>{D.stopPropagation(),y(S.id)},className:"px-1.5 py-0.5 rounded",style:{background:"#FEF2F2",color:"#DC2626",border:"1px solid #FECACA",cursor:"pointer",fontSize:"10px"},children:"Remove this relationship"}),h===S.id&&t.jsxs("div",{className:"absolute left-full ml-2 top-1/2 -translate-y-1/2 z-20 bg-white rounded-lg shadow-xl border border-gray-200 p-2.5 w-48",onClick:D=>D.stopPropagation(),children:[t.jsx("div",{style:{fontSize:"11px",fontWeight:600,color:"#374151",marginBottom:"8px"},children:"Remove relationship?"}),t.jsxs("div",{className:"flex gap-1.5 justify-end",children:[t.jsx("button",{onClick:()=>y(null),className:"px-2 py-1 rounded",style:{fontSize:"10px",background:"#F3F4F6",border:"none",cursor:"pointer"},children:"Cancel"}),t.jsx("button",{onClick:()=>{y(null),d(S.id)},className:"px-2 py-1 rounded",style:{fontSize:"10px",background:"#EF4444",color:"#FFFFFF",border:"none",cursor:"pointer"},children:"Remove"})]})]})]})]},S.id)})})]})}function It({label:e,value:r,mono:n,valueColor:o}){return t.jsxs("div",{className:"flex gap-1.5",children:[t.jsx("span",{style:{minWidth:48,color:"#9CA3AF"},children:e}),t.jsx("span",{className:`truncate ${n?"font-mono":""}`,style:{color:o??"#374151"},title:r,children:r})]})}function dc({pending:e,model:r,onDismiss:n}){const o=e.direction==="outgoing"?e.targetId:e.sourceId,a=r.elements[o],s=e.status==="failed";return t.jsxs("div",{className:"flex items-center gap-1.5 ml-2 rounded",style:{padding:"4px 8px",fontSize:I.xs,background:s?"#FEF2F2":"#F9FAFB",color:s?"#DC2626":"#6B7280",fontStyle:s?"normal":"italic"},children:[t.jsx("span",{children:e.direction==="outgoing"?"→":"←"}),t.jsx("span",{className:"px-1 py-0.5 rounded flex-shrink-0",style:{background:"#E5E7EB",color:"#6B7280",fontSize:I.xs},children:e.label}),t.jsx("span",{className:"truncate flex-1",children:(a==null?void 0:a.name)??o}),s?t.jsxs(t.Fragment,{children:[t.jsx("span",{className:"truncate",style:{fontSize:"10px",maxWidth:90},title:e.error,children:e.error}),t.jsx("button",{onClick:n,style:{background:"none",border:"none",cursor:"pointer",color:"inherit"},"aria-label":"Dismiss failed relationship",children:"×"})]}):t.jsx("span",{style:{fontSize:"10px"},children:"saving…"})]})}const cc=[{value:"",label:"Default"},{value:"#FEF3C7",label:"Amber"},{value:"#DCFCE7",label:"Green"},{value:"#DBEAFE",label:"Blue"},{value:"#FCE7F3",label:"Pink"},{value:"#FEE2E2",label:"Red"},{value:"#EDE9FE",label:"Violet"},{value:"#E5E7EB",label:"Grey"}],st={display:"flex",alignItems:"center",gap:8,marginBottom:8,fontSize:I.xs,color:f.secondary},it={width:62,flexShrink:0};function uc(){const e=C(c=>c.selectionStyle),[r,n]=p.useState(!0),[o,a]=p.useState("#FFFFFF");if(!e)return null;const{count:s,opacity:i,apply:l}=e;return t.jsxs("div",{style:{borderTop:`1px solid ${f.borderLight}`,padding:"10px 12px"},children:[t.jsxs("button",{onClick:()=>n(c=>!c),"aria-expanded":r,style:{display:"flex",alignItems:"center",gap:6,width:"100%",background:"none",border:"none",padding:0,cursor:"pointer",fontSize:"10px",fontWeight:700,letterSpacing:".07em",textTransform:"uppercase",color:f.muted},children:[t.jsx("span",{style:{fontSize:9},children:r?"▾":"▸"}),"Style",t.jsxs("span",{style:{marginLeft:"auto",fontWeight:600,textTransform:"none",letterSpacing:0},children:[s," selected"]})]}),r&&t.jsxs("div",{style:{marginTop:10},children:[t.jsxs("div",{style:st,children:[t.jsx("span",{style:it,children:"Fill"}),t.jsxs("div",{style:{display:"flex",flexWrap:"wrap",gap:4,flex:1},children:[cc.map(c=>t.jsx("button",{title:`Fill: ${c.label}`,"aria-label":`Fill ${c.label}`,onClick:()=>l({color:c.value}),style:{width:20,height:20,padding:0,borderRadius:4,cursor:"pointer",border:`1px solid ${f.border}`,background:c.value||"#FFFFFF",color:"#94A3B8",fontSize:11,lineHeight:1,fontWeight:700},children:c.value?"":"⌫"},c.label)),t.jsx("input",{type:"color","aria-label":"Custom fill colour",title:"Custom fill colour",value:o,onChange:c=>{a(c.target.value),l({color:c.target.value})},style:{width:22,height:20,padding:1,border:`1px solid ${f.border}`,borderRadius:4,cursor:"pointer"}})]})]}),t.jsxs("div",{style:st,children:[t.jsx("span",{style:it,children:"Border"}),t.jsx("input",{type:"color","aria-label":"Border colour",onChange:c=>l({borderColor:c.target.value}),style:{width:26,height:22,padding:1,border:`1px solid ${f.border}`,borderRadius:4,cursor:"pointer"}}),t.jsx("button",{onClick:()=>l({borderColor:""}),style:{border:`1px solid ${f.border}`,background:f.surface,borderRadius:4,fontSize:11,padding:"2px 7px",cursor:"pointer",color:f.secondary},children:"Reset"})]}),t.jsxs("div",{style:st,children:[t.jsx("span",{style:it,children:"Text"}),t.jsx("input",{type:"color","aria-label":"Text colour",onChange:c=>l({textColor:c.target.value}),style:{width:26,height:22,padding:1,border:`1px solid ${f.border}`,borderRadius:4,cursor:"pointer"}}),t.jsxs("select",{"aria-label":"Text size",defaultValue:"",onChange:c=>c.target.value&&l({fontSize:Number(c.target.value)}),style:{height:22,border:`1px solid ${f.border}`,borderRadius:4,color:f.secondary,fontSize:11},children:[t.jsx("option",{value:"",children:"Auto"}),[10,12,14,16,18,20].map(c=>t.jsxs("option",{value:c,children:[c,"px"]},c))]}),t.jsx("button",{title:"Bold text",onClick:()=>l({fontWeight:700}),style:{border:`1px solid ${f.border}`,background:f.surface,borderRadius:4,fontSize:11,fontWeight:700,padding:"2px 8px",cursor:"pointer",color:f.secondary},children:"B"})]}),t.jsxs("div",{style:st,children:[t.jsx("span",{style:it,children:"Align"}),[["left","≡","Align text left"],["center","≣","Align text centre"],["right","☷","Align text right"]].map(([c,d,u])=>t.jsx("button",{title:u,"aria-label":u,onClick:()=>l({textAlign:c}),style:{width:24,height:22,border:`1px solid ${f.border}`,background:f.surface,borderRadius:4,fontSize:12,cursor:"pointer",color:f.secondary},children:d},c)),[["top","⤒","Align text at top"],["middle","↕","Align text vertically centred"],["bottom","⤓","Align text at bottom"]].map(([c,d,u])=>t.jsx("button",{title:u,"aria-label":u,onClick:()=>l({verticalAlign:c}),style:{width:24,height:22,border:`1px solid ${f.border}`,background:f.surface,borderRadius:4,fontSize:12,cursor:"pointer",color:f.secondary},children:d},c))]}),t.jsxs("label",{style:st,children:[t.jsx("span",{style:it,children:"Opacity"}),t.jsx("input",{type:"range",min:.2,max:1,step:.05,value:i,"aria-label":"Fill opacity",onChange:c=>l({opacity:Number(c.target.value)}),style:{flex:1}}),t.jsxs("span",{style:{width:30,textAlign:"right",color:f.faint},children:[Math.round(i*100),"%"]})]})]})]})}const ze="panel";function fe({title:e,count:r,defaultOpen:n=!0,actions:o,children:a}){const[s,i]=p.useState(n);return t.jsxs("div",{className:"mb-3 mx-3 bg-white border border-gray-200/60 rounded-xl shadow-sm overflow-hidden",children:[t.jsxs("div",{className:"flex items-center gap-2 px-3 py-2 cursor-pointer transition-colors hover:bg-gray-50",onClick:()=>i(l=>!l),children:[t.jsx("span",{className:"font-bold flex-1 text-[10px] uppercase tracking-wider",style:{color:"#6B7280"},children:e}),o&&t.jsx("span",{onClick:l=>l.stopPropagation(),children:o}),typeof r=="number"&&t.jsx("span",{className:"px-1.5 py-0.5 rounded-md font-medium text-[10px]",style:{background:"#F3F4F6",color:"#6B7280"},children:r}),t.jsx("span",{style:{color:"#D1D5DB",fontSize:14},children:s?"▾":"▸"})]}),s&&t.jsx("div",{className:"px-3 pb-3 pt-1",children:a})]})}function pc({label:e,kind:r,kindColor:n,onClick:o,arrow:a,typeBadge:s,typeColor:i,selected:l}){return t.jsxs("div",{className:"flex items-center gap-1.5 cursor-pointer transition-colors ml-2",style:{borderRadius:"6px",padding:"4px 8px",background:l?"#2DD4A818":"transparent",color:l?"#1B3A4B":"#374151",fontWeight:l?500:400,fontSize:I.xs},onMouseEnter:c=>{l||(c.currentTarget.style.background="#F0F0ED")},onMouseLeave:c=>{l||(c.currentTarget.style.background="transparent")},onClick:o,children:[a&&t.jsx("span",{style:{color:"#9CA3AF"},children:a}),s&&t.jsx("span",{className:"px-1 py-0.5 rounded",style:{background:(i||"#2563EB")+"18",color:i||"#2563EB",fontSize:I.xs},children:s}),t.jsx("span",{className:"truncate",children:e}),r&&t.jsx("span",{className:"ml-auto flex-shrink-0 px-1 py-0.5 rounded",style:{background:(n||"#666")+"15",color:n||"#666",fontSize:I.badge},children:r})]})}function mc(){const e=C(s=>s.model),r=C(s=>s.activeView),n=r.type==="diagram"?r.diagramId:null,o=Zt(e,n);if(!o)return null;const a=$e[o.diagramType];return t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"p-5 mb-2",style:{background:"#FFFFFF",borderBottom:"1px solid #F3F4F6",borderLeft:`4px solid ${(a==null?void 0:a.color)||"#6B7280"}`,boxShadow:"0 1px 2px rgba(0,0,0,0.02)"},children:[t.jsx("div",{className:"text-sm font-bold truncate",style:{color:"#111827"},children:o.name}),t.jsxs("div",{className:"flex items-center gap-2 text-xs mt-2",children:[a&&t.jsx("span",{className:"px-2 py-0.5 rounded-md font-semibold",style:{background:a.color+"18",color:a.color},children:a.code}),t.jsx("span",{style:{color:"#6B7280",fontWeight:500},children:(a==null?void 0:a.fullName)||o.diagramType})]}),o.auto&&t.jsx("div",{className:"text-xs mt-2 font-medium",style:{color:"#9CA3AF"},children:"Auto-generated"})]}),t.jsxs("div",{className:"flex-1 overflow-y-auto pt-2 pb-4 bg-gray-50/50",children:[o.description&&t.jsx(fe,{title:"Description",defaultOpen:!0,children:t.jsx("div",{className:"text-xs leading-relaxed",style:{color:"#374151"},children:o.description})}),t.jsx(fe,{title:"Details",defaultOpen:!0,children:t.jsxs("div",{className:"space-y-1.5",children:[t.jsxs("div",{className:"flex text-xs",children:[t.jsx("span",{className:"min-w-[80px]",style:{color:"#6B7280"},children:"ID"}),t.jsx("span",{className:"truncate font-mono",style:{color:"#1a1a1a",fontSize:I.xs},children:o.shortId??o.id})]}),t.jsxs("div",{className:"flex text-xs",children:[t.jsx("span",{className:"min-w-[80px]",style:{color:"#6B7280"},children:"Viewpoint"}),t.jsx("span",{style:{color:"#1a1a1a"},children:o.viewpointId})]}),t.jsxs("div",{className:"flex text-xs",children:[t.jsx("span",{className:"min-w-[80px]",style:{color:"#6B7280"},children:"Type"}),t.jsx("span",{style:{color:"#1a1a1a"},children:o.diagramType})]}),o.sourceFile&&t.jsxs("div",{className:"flex text-xs",children:[t.jsx("span",{className:"min-w-[80px]",style:{color:"#6B7280"},children:"Source file"}),t.jsx("span",{className:"truncate font-mono",title:o.sourceFile,style:{color:"#1a1a1a",fontSize:I.xs},children:o.sourceFile})]})]})}),o.properties&&Object.keys(o.properties).length>0&&t.jsx(fe,{title:"Properties",count:Object.keys(o.properties).length,children:t.jsx("div",{className:"space-y-1.5",children:Object.entries(o.properties).map(([s,i])=>t.jsxs("div",{className:"flex text-xs",children:[t.jsx("span",{className:"min-w-[80px]",style:{color:"#6B7280"},children:s}),t.jsx("span",{className:"truncate",style:{color:"#1a1a1a"},children:i})]},s))})}),o.elementIds&&o.elementIds.length>0&&t.jsx(fe,{title:"Scoped Elements",count:o.elementIds.length,defaultOpen:!1,children:t.jsx("div",{className:"text-xs",style:{color:"#6B7280"},children:o.elementIds.join(", ")})}),o.relationshipTypes&&o.relationshipTypes.length>0&&t.jsx(fe,{title:"Relationship Types",count:o.relationshipTypes.length,children:t.jsx("div",{className:"flex flex-wrap gap-1",children:o.relationshipTypes.map(s=>t.jsx("span",{className:"px-1.5 py-0.5 rounded text-xs",style:{background:"#EFF6FF",color:"#2563EB",fontSize:I.xs},children:s},s))})})]})]})}const fc=4e3;function hc({elementId:e}){const r=C(i=>i.model),n=C(i=>i.lastSourceChange),[o,a]=p.useState(null),s=p.useMemo(()=>yi(r,e),[r,e]);return p.useEffect(()=>{if(!gi(n,s))return;a(n.at);const i=setTimeout(()=>a(null),fc);return()=>clearTimeout(i)},[n==null?void 0:n.seq]),p.useEffect(()=>{a(null)},[e]),o?t.jsx("span",{title:"A source file this element depends on changed; the model was rebuilt",className:"px-1.5 rounded",style:{fontSize:I.badge,background:"#ECFDF5",color:"#047857",border:"1px solid #A7F3D0"},children:"↻ Updated"}):null}function yc(){var T,j;const e=C(S=>S.model),r=C(S=>S.selectedElementId),n=C(S=>S.validation),o=C(S=>S.selectElement),a=C(S=>S.updateElementField),s=C(S=>S.updateElementAttribute),i=C(S=>S.applyEdit),l=C(S=>S.deleteModelElement),[c,d]=p.useState(!1);p.useEffect(()=>{d(!1)},[r]),p.useEffect(()=>{if(!r)return;const S=k=>{(k.metaKey||k.ctrlKey)&&k.key==="s"&&(k.preventDefault(),i(r),d(!1))};return window.addEventListener("keydown",S),()=>window.removeEventListener("keydown",S)},[r,i]);const u=p.useMemo(()=>r&&e?hi(e,r):[],[e,r]);if(!r||!e)return null;const m=e.elements[r];if(!m)return null;const b=u.filter(S=>S.sourceId===r),v=u.filter(S=>S.targetId===r),w=ue[m.layer]||"#666",g=(n==null?void 0:n.violations.filter(S=>S.elementId===r))||[],h=new Set(["boundaryColor","boundaryOpacity","boundaryWidth","fill","stroke","opacity","color","backgroundColor","bounds.x","bounds.y","bounds.width","bounds.height"]),y=[["id",m.id],...m.uuid?[["uuid",m.uuid]]:[],["kind",m.kind],["layer",m.layer],...Object.entries(m.attributes).filter(([S])=>S!=="name"&&S!=="id"&&!h.has(S)&&S!=="description"&&S!=="shortDescription")],N=Object.entries(m.attributes).filter(([S])=>h.has(S)),R=(S,k)=>{s(r,S,k),i(r)},A=S=>{const k=S.trim();!k||k===m.name||(a(r,"name",k),i(r))};return t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"p-5 mb-2 relative group",style:{background:"#FFFFFF",borderBottom:"1px solid #F3F4F6",borderLeft:`4px solid ${w}`,boxShadow:"0 1px 2px rgba(0,0,0,0.02)"},children:t.jsxs("div",{className:"flex justify-between items-start mb-2",children:[t.jsx("div",{className:"flex items-start gap-3 pr-4 min-w-0 flex-1",children:t.jsxs("div",{className:"flex-1 min-w-0",children:[t.jsx("div",{className:"text-[15px] font-bold leading-tight",style:{color:"#111827"},children:t.jsx(at,{value:m.name,onSave:A,density:ze,placeholder:"Element name"})}),t.jsx("div",{className:"text-sm font-medium mt-3 text-gray-700",children:t.jsx(at,{value:m.attributes.shortDescription||"",onSave:S=>R("shortDescription",S),density:ze,multiline:!0,placeholder:"Add a short description..."})}),t.jsx("div",{className:"text-xs text-gray-500 mt-1.5 leading-relaxed",children:t.jsx(at,{value:m.attributes.description||"",onSave:S=>R("description",S),density:ze,multiline:!0,placeholder:"Add a detailed description..."})})]})}),t.jsxs("div",{className:"flex items-center gap-1 flex-shrink-0 opacity-0 group-hover:opacity-100 transition-opacity",children:[t.jsx("button",{onClick:()=>void navigator.clipboard.writeText(m.id),title:`Copy ID: ${m.id}`,className:"p-1 hover:bg-gray-100 rounded text-gray-400 hover:text-gray-700",children:t.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[t.jsx("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),t.jsx("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})]})}),t.jsx("button",{onClick:()=>void l(m.id),title:"Delete element",className:"p-1 hover:bg-red-50 rounded text-gray-400 hover:text-red-600",children:t.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[t.jsx("polyline",{points:"3 6 5 6 21 6"}),t.jsx("path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"}),t.jsx("line",{x1:"10",y1:"11",x2:"10",y2:"17"}),t.jsx("line",{x1:"14",y1:"11",x2:"14",y2:"17"})]})})]})]})}),t.jsxs("div",{className:"flex-1 overflow-y-auto pt-2 pb-6 bg-gray-50/50",children:[m.parameters&&m.parameters.length>0&&t.jsx(fe,{title:"Parameters",count:m.parameters.length,children:t.jsx("div",{className:"space-y-1.5",children:m.parameters.map(S=>t.jsxs("div",{className:"flex items-center gap-2 text-xs",children:[t.jsx("span",{className:"px-1.5 py-0.5 rounded font-mono",style:{fontSize:"10px",background:S.direction==="in"?"#EFF6FF":S.direction==="out"?"#FFF7ED":"#F0FDF4",color:S.direction==="in"?"#2563EB":S.direction==="out"?"#EA580C":"#16A34A"},children:S.direction}),t.jsx("span",{style:{color:"#374151",fontWeight:500},children:S.name}),t.jsx("span",{style:{color:"#6B7280"},children:":"}),t.jsx("span",{style:{color:"#6B7280"},children:S.type})]},S.name))})}),m.allocatedTo&&t.jsx(fe,{title:"Allocated To",defaultOpen:!0,children:t.jsx(pc,{label:((T=e.elements[m.allocatedTo])==null?void 0:T.name)||m.allocatedTo,kind:(j=e.elements[m.allocatedTo])==null?void 0:j.kind,kindColor:"#E67E22",arrow:"→",onClick:()=>o(m.allocatedTo)})}),N.length>0&&t.jsx(fe,{title:"Appearance",count:N.length,defaultOpen:!1,children:t.jsx("div",{className:"space-y-1.5",children:N.map(([S,k])=>{const U=Rr(S);return t.jsxs("div",{className:"flex text-xs items-start gap-1.5",children:[t.jsx("span",{className:"min-w-[100px] pt-0.5",style:{color:"#6B7280"},children:S}),t.jsx("div",{style:{flex:1,minWidth:0},children:S==="boundaryColor"?t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx("input",{"aria-label":"Boundary color",type:"color",value:/^#[0-9a-f]{6}$/i.test(String(k))?String(k):"#14B8A6",onChange:H=>{const O=document.getElementById(`screen-node-${m.id}`);O&&(O.style.borderColor=H.target.value)},onBlur:H=>R(S,H.target.value),style:{width:28,height:24,padding:0,border:"1px solid #D8D8D2",borderRadius:4,background:"#FFFFFF"}}),t.jsx("span",{className:"font-mono text-[10px] text-gray-500",children:String(k)})]}):S==="boundaryWidth"?t.jsxs("div",{className:"flex items-center gap-3 pr-2",children:[t.jsx("input",{"aria-label":"Boundary width",type:"range",min:"1",max:"10",step:"1",defaultValue:Number(k??"2"),onChange:H=>{const O=document.getElementById(`screen-node-${m.id}`);O&&(O.style.borderWidth=H.target.value+"px")},onMouseUp:H=>R(S,H.target.value),style:{width:"100%"}}),t.jsxs("span",{className:"font-mono text-[10px] text-gray-500 w-6",children:[k,"px"]})]}):Nn(U)?t.jsx(at,{value:String(k??""),onSave:H=>R(S,H),density:ze,placeholder:"Click to set…"}):t.jsx(Ir,{value:String(k??""),editability:U,density:ze,mono:S!=="kind"&&S!=="layer"})})]},S)})})}),y.length>0&&t.jsx(fe,{title:"Attributes",count:y.length,defaultOpen:!1,children:t.jsx("div",{className:"space-y-1.5",children:y.map(([S,k])=>{const U=Rr(S);return t.jsxs("div",{className:"flex text-xs items-start gap-1.5",children:[t.jsx("span",{className:"min-w-[100px] pt-0.5",style:{color:"#6B7280"},children:S}),t.jsx("div",{style:{flex:1,minWidth:0},children:Nn(U)?t.jsx(at,{value:String(k??""),onSave:H=>R(S,H),density:ze,multiline:S==="description"||S==="rationale",placeholder:"Click to set…"}):t.jsx(Ir,{value:String(k??""),editability:U,density:ze,mono:S!=="kind"&&S!=="layer"})})]},S)})})}),t.jsx(gc,{subject:m}),g.length>0&&t.jsx(fe,{title:"Guidance",count:g.length,defaultOpen:!0,children:t.jsx("div",{className:"space-y-2",children:g.map((S,k)=>t.jsxs("div",{className:"text-xs p-2.5 rounded-lg",style:{background:S.severity==="error"?"#FEF2F2":S.severity==="warning"?"#FFFBEB":"#EFF6FF",border:`1px solid ${S.severity==="error"?"#FECACA":S.severity==="warning"?"#FDE68A":"#BFDBFE"}`},children:[t.jsx("div",{style:{color:S.severity==="error"?"#DC2626":S.severity==="warning"?"#D97706":"#2563EB"},children:S.description}),t.jsxs("div",{className:"mt-0.5",style:{color:"#6B7280"},children:["[",S.ruleId,"]"]})]},`${S.ruleId}-${k}`))})}),g.length===0&&t.jsx("div",{className:"p-4",children:t.jsxs("div",{className:"text-xs flex items-center gap-1",style:{color:"#10B981"},children:[t.jsx("span",{children:"✓"})," All rules satisfied"]})}),m.file&&t.jsx(fe,{title:"Source",defaultOpen:!1,actions:t.jsx(hc,{elementId:r}),children:t.jsxs("button",{className:"flex items-center gap-1.5 text-xs w-full text-left rounded px-1 py-0.5 transition-colors",style:{color:"#2563EB",background:"transparent",border:"none",cursor:"pointer",wordBreak:"break-all"},onMouseEnter:S=>{S.currentTarget.style.background="#EFF6FF"},onMouseLeave:S=>{S.currentTarget.style.background="transparent"},onClick:()=>{navigator.clipboard.writeText(m.file).catch(()=>{})},title:"Click to copy path",children:[t.jsx("span",{style:{flexShrink:0},children:"⟨/⟩"}),t.jsx("span",{className:"font-mono truncate",children:m.file}),t.jsx("span",{style:{flexShrink:0,color:"#9CA3AF",fontSize:"9px"},children:"copy"})]})}),t.jsx(sc,{element:m,outgoing:b,incoming:v,density:ze})]})]})}const Mt={comment:{kind:"ModelComment",relation:"CommentsOn",label:"comment",placeholder:"Comment"},rationale:{kind:"ModelRationale",relation:"RationaleFor",label:"rationale",placeholder:"Engineering rationale"},note:{kind:"ModelNote",relation:"NotesOn",label:"note",placeholder:"Note"}};function gc({subject:e}){var O,D,$;const r=C(E=>E.model),n=C(E=>E.createModelElement),o=C(E=>E.createRelationship),a=C(E=>E.persistElementAttributes),[s,i]=p.useState(""),[l,c]=p.useState(""),[d,u]=p.useState(""),[m,b]=p.useState(null),[v,w]=p.useState(!1),[g,h]=p.useState(""),[y,N]=p.useState(null),[R,A]=p.useState("");if(!r)return null;const T=new Set(Object.values(Mt).map(E=>E.relation.toLowerCase())),S=[...new Set(r.relationships.filter(E=>T.has(E.type.toLowerCase())&&E.targetId===e.id).map(E=>E.sourceId))].map(E=>r.elements[E]).filter(E=>!!E),k=new Map;for(const E of r.relationships.filter(q=>q.type.toLowerCase()==="composes"))((O=r.elements[E.sourceId])==null?void 0:O.kind)!=="ModelComment"||((D=r.elements[E.targetId])==null?void 0:D.kind)!=="ModelComment"||k.set(E.sourceId,[...k.get(E.sourceId)??[],r.elements[E.targetId]]);const U=async()=>{var G,J,ne;if(!l.trim())return;const E=y?"comment":m??"comment";A("Saving…");const q=Mt[E],X=s.trim()||`Model ${q.label}`,z=n({name:X,kind:q.kind,construct:"part",layer:e.layer,file:e.file||"model/generated.sysml",doc:"",attributes:{shortDescription:X,body:l.trim(),author:d.trim()||"currentReviewer",createdAt:new Date().toISOString(),...E==="comment"?{commentStatus:"CommentStatusKind::open"}:{},...E==="rationale"&&g.trim()?{basis:g.trim()}:{},...E==="note"&&g.trim()?{noteKind:g.trim()}:{}}});try{const Q=(G=C.getState().model)==null?void 0:G.elements[z],oe=Date.now()+1e4;for(;((J=C.getState().model)==null?void 0:J.elements[z])===Q&&Date.now()<oe;)await new Promise(x=>setTimeout(x,100));const ae=(ne=C.getState().model)==null?void 0:ne.elements[z];if(!ae||ae===Q)throw new Error("The saved annotation did not appear in the rebuilt model.");const M=await o({type:y?"Composes":q.relation,sourceId:y??z,targetId:y?z:e.id,direction:"outgoing",selectedElementId:y??z});if(!M.success)throw new Error(M.error);i(""),c(""),h(""),N(null),b(null),A("Saved.")}catch(Q){A(Q instanceof Error?Q.message:String(Q))}},H=(E,q=!1)=>{var G;const X=E.kind==="ModelRationale"?"rationale":E.kind==="ModelNote"?"note":"comment",z=X==="rationale"?"#7C3AED":X==="note"?"#2563EB":"#2DD4A8";return t.jsxs("div",{style:{marginLeft:q?14:0,borderLeft:`2px solid ${q?"#D1D5DB":z}`,padding:"5px 7px",marginBottom:6},children:[t.jsxs("div",{className:"flex items-center gap-1 text-xs",children:[t.jsx("span",{style:{color:z,fontSize:9,fontWeight:700,textTransform:"uppercase"},children:X}),t.jsx("strong",{style:{color:"#374151"},children:E.attributes.author||"Unknown"}),t.jsx("span",{style:{color:"#9CA3AF"},children:E.attributes.createdAt||""})]}),t.jsx("div",{style:{fontSize:11,fontWeight:600,color:"#374151"},children:E.attributes.shortDescription||E.name}),t.jsx("div",{style:{fontSize:11,color:"#4B5563",whiteSpace:"pre-wrap"},children:E.attributes.body}),X==="rationale"&&E.attributes.basis&&t.jsxs("div",{style:{fontSize:10,color:"#7C3AED"},children:["Basis: ",E.attributes.basis]}),X==="note"&&E.attributes.noteKind&&t.jsxs("div",{style:{fontSize:10,color:"#2563EB"},children:["Kind: ",E.attributes.noteKind]}),X==="comment"&&t.jsxs("div",{className:"flex gap-2",style:{marginTop:3},children:[!q&&t.jsx("button",{onClick:()=>{N(E.id),b("comment")},style:{border:0,background:"transparent",color:"#2563EB",fontSize:10,cursor:"pointer"},children:"Reply"}),!((G=E.attributes.commentStatus)!=null&&G.endsWith("resolved"))&&t.jsx("button",{onClick:()=>a(E.id,{commentStatus:"CommentStatusKind::resolved",resolvedBy:d.trim()||"currentReviewer",resolvedAt:new Date().toISOString(),resolution:"Resolved in model review."}),style:{border:0,background:"transparent",color:"#0F766E",fontSize:10,cursor:"pointer"},children:"Resolve"})]}),(k.get(E.id)??[]).map(J=>H(J,!0))]},E.id)};return t.jsxs(fe,{title:"Annotations",count:S.length,defaultOpen:!0,children:[t.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[t.jsx("button",{onClick:()=>b("note"),title:"Add Note",className:`p-1.5 rounded flex items-center justify-center transition-colors ${m==="note"?"bg-blue-100 text-blue-700":"bg-gray-100 hover:bg-gray-200 text-gray-600"}`,children:t.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[t.jsx("path",{d:"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"}),t.jsx("polyline",{points:"14 2 14 8 20 8"}),t.jsx("line",{x1:"16",y1:"13",x2:"8",y2:"13"}),t.jsx("line",{x1:"16",y1:"17",x2:"8",y2:"17"}),t.jsx("polyline",{points:"10 9 9 9 8 9"})]})}),t.jsx("button",{onClick:()=>b("comment"),title:"Add Comment",className:`p-1.5 rounded flex items-center justify-center transition-colors ${m==="comment"?"bg-teal-100 text-teal-700":"bg-gray-100 hover:bg-gray-200 text-gray-600"}`,children:t.jsx("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:t.jsx("path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"})})}),t.jsx("button",{onClick:()=>b("rationale"),title:"Add Rationale",className:`p-1.5 rounded flex items-center justify-center transition-colors ${m==="rationale"?"bg-purple-100 text-purple-700":"bg-gray-100 hover:bg-gray-200 text-gray-600"}`,children:t.jsx("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:t.jsx("polygon",{points:"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"})})}),t.jsx("div",{className:"flex-1"}),t.jsxs("button",{onClick:()=>w(!0),title:"View Annotations",className:"p-1.5 rounded bg-gray-100 hover:bg-gray-200 text-gray-600 flex items-center gap-1.5 text-xs font-semibold",children:[t.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[t.jsx("path",{d:"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"}),t.jsx("circle",{cx:"12",cy:"12",r:"3"})]}),"View (",S.length,")"]})]}),(m||y)&&t.jsxs("div",{className:"bg-gray-50 border border-gray-200 rounded p-2 mb-2",children:[t.jsxs("div",{className:"flex justify-between items-center mb-2",children:[t.jsx("span",{className:"text-xs font-semibold",style:{color:y?"#0F766E":m==="rationale"?"#7C3AED":m==="note"?"#2563EB":"#2DD4A8"},children:y?`Replying to ${($=r.elements[y])==null?void 0:$.name}`:`New ${Mt[m].label}`}),t.jsx("button",{onClick:()=>{b(null),N(null)},className:"text-gray-400 hover:text-gray-600",children:"✕"})]}),t.jsx("input",{value:d,onChange:E=>u(E.target.value),placeholder:"Author",style:{width:"100%",marginBottom:4,fontSize:11}}),t.jsx("input",{value:s,onChange:E=>i(E.target.value),placeholder:"Short summary",style:{width:"100%",marginBottom:4,fontSize:11}}),!y&&m!=="comment"&&t.jsx("input",{value:g,onChange:E=>h(E.target.value),placeholder:m==="rationale"?"Basis / evidence (optional)":"Note kind (optional)",style:{width:"100%",marginBottom:4,fontSize:11}}),t.jsx("textarea",{value:l,onChange:E=>c(E.target.value),placeholder:y?"Reply":Mt[m].placeholder,rows:3,style:{width:"100%",fontSize:11}}),t.jsxs("div",{className:"flex gap-2 mt-1",children:[t.jsx("button",{onClick:U,disabled:!l.trim(),style:{fontSize:11,padding:"4px 8px",background:"#374151",color:"white",borderRadius:4,flex:1},children:"Save"}),t.jsx("button",{onClick:()=>{b(null),N(null)},style:{fontSize:11,padding:"4px 8px",background:"#E5E7EB",color:"#374151",borderRadius:4},children:"Cancel"})]}),R&&t.jsx("div",{style:{fontSize:10,color:"#6B7280",marginTop:4},children:R})]}),v&&t.jsx("div",{className:"fixed inset-0 z-[100] flex items-center justify-center bg-black/30",onClick:()=>w(!1),children:t.jsxs("div",{className:"bg-white rounded-lg shadow-2xl w-[400px] max-h-[85vh] flex flex-col",onClick:E=>E.stopPropagation(),children:[t.jsxs("div",{className:"p-3 border-b font-bold flex justify-between items-center text-gray-800",children:["Annotations",t.jsx("button",{onClick:()=>w(!1),className:"text-gray-400 hover:text-gray-700",children:"✕"})]}),t.jsx("div",{className:"p-4 overflow-y-auto",children:S.length>0?S.map(E=>H(E)):t.jsx("div",{className:"text-gray-500 text-sm text-center py-8",children:"No annotations yet."})})]})})]})}function xc(){const e=C(d=>d.model),r=C(d=>d.selectedRelationshipId);if(!e||!r)return null;const n=e.relationships.find(d=>d.id===r);if(!n)return null;const o=e.elements[n.sourceId],a=e.elements[n.targetId],s=n.type==="flow",i=n.flowItem,l=i&&/energy|power|voltage|current/i.test(i)?"Energy":i&&/material|fluid|gas|batch/i.test(i)?"Material":s?"Data":"Control",c=l==="Energy"?"#D97706":l==="Material"?"#16A34A":l==="Data"?"#3498DB":"#4B5563";return t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"p-5 mb-2",style:{background:"#FFFFFF",borderBottom:"1px solid #F3F4F6",borderLeft:`4px solid ${c}`,boxShadow:"0 1px 2px rgba(0,0,0,0.02)"},children:[t.jsx("div",{className:"text-[15px] font-bold",style:{color:"#111827"},children:"Connection"}),t.jsxs("div",{className:"mt-2 text-xs font-medium",style:{color:"#4B5563"},children:[(o==null?void 0:o.name)??n.sourceId," → ",(a==null?void 0:a.name)??n.targetId]}),t.jsxs("div",{className:"mt-3 flex gap-2",children:[t.jsxs("span",{className:"px-2 py-1 rounded-md text-[11px] font-bold uppercase tracking-wider",style:{background:c+"15",color:c},children:[l," flow"]}),t.jsx("span",{className:"px-2 py-1 rounded-md text-[11px] font-bold uppercase tracking-wider",style:{background:"#F3F4F6",color:"#4B5563"},children:n.type})]})]}),t.jsxs("div",{className:"flex-1 overflow-y-auto pt-2 pb-4 bg-gray-50/50",children:[t.jsx(fe,{title:"Involved item",defaultOpen:!0,children:t.jsx("div",{className:"text-xs",style:{color:"#374151"},children:i??"No transported item is modeled for this connection."})}),t.jsx(fe,{title:"Endpoints",defaultOpen:!0,children:t.jsxs("div",{className:"space-y-2 text-xs",children:[t.jsxs("div",{children:[t.jsx("span",{style:{color:"#6B7280"},children:"Source"}),t.jsx("div",{style:{color:"#1a1a1a",fontWeight:500},children:(o==null?void 0:o.name)??n.sourceId})]}),t.jsxs("div",{children:[t.jsx("span",{style:{color:"#6B7280"},children:"Target"}),t.jsx("div",{style:{color:"#1a1a1a",fontWeight:500},children:(a==null?void 0:a.name)??n.targetId})]})]})}),t.jsx(fe,{title:"Traceability",defaultOpen:!1,children:t.jsx("div",{className:"text-xs",style:{color:"#6B7280"},children:n.file||"Model relationship"})})]})]})}function bc(){const e=C(l=>l.selectedElementId),r=C(l=>l.activeView),n=C(l=>l.selectedRelationshipId),o=C(l=>l.propertiesPanelCollapsed),a=C(l=>l.togglePropertiesPanel);if(o)return t.jsxs("div",{className:"flex flex-col items-center flex-shrink-0 cursor-pointer",style:{width:"40px",background:"#FAFAF8",borderLeft:"1px solid #E5E5E0"},onClick:a,title:"Expand properties",children:[t.jsx("div",{className:"flex items-center justify-center mt-2",style:{color:"#6B7280",fontSize:"18px",width:"32px",height:"32px",borderRadius:"6px"},children:"‹"}),t.jsx("div",{style:{writingMode:"vertical-rl",textOrientation:"mixed",color:"#6B7280",fontSize:"10px",fontWeight:400},children:"Properties"})]});const s=r.type==="diagram"&&!e&&!n,i=!!e;return t.jsxs("div",{className:"flex flex-col overflow-hidden flex-shrink-0 bg-gray-50/30",style:{width:"320px",borderLeft:"1px solid #E5E7EB",boxShadow:"-4px 0 16px rgba(0,0,0,0.02)"},children:[t.jsxs("div",{className:"flex items-center justify-between px-4 py-3 bg-white border-b border-gray-200 flex-shrink-0 z-10 shadow-sm",children:[t.jsx("span",{className:"text-[11px] uppercase tracking-wider font-bold text-gray-800",children:"Properties"}),t.jsx("button",{onClick:a,className:"flex items-center justify-center transition-colors",style:{color:"#9CA3AF",fontSize:"18px",lineHeight:1,width:"28px",height:"28px",borderRadius:"6px",background:"#FFFFFF",border:"1px solid #E5E7EB"},onMouseEnter:l=>{l.currentTarget.style.color="#374151",l.currentTarget.style.borderColor="#D1D5DB"},onMouseLeave:l=>{l.currentTarget.style.color="#9CA3AF",l.currentTarget.style.borderColor="#E5E7EB"},title:"Collapse properties","aria-label":"Collapse properties",children:"›"})]}),n?t.jsx(xc,{}):i?t.jsx(yc,{}):s?t.jsx(mc,{}):t.jsx("div",{className:"flex-1 flex items-center justify-center p-4",children:t.jsx("span",{className:"text-xs text-center",style:{color:"#6B7280"},children:"Select an element or diagram to view properties"})}),t.jsx(uc,{})]})}function gn(e=f.border){return{borderTop:`1px solid ${e}`}}function vc({placeholder:e,value:r,onChange:n}){return t.jsx("input",{type:"text",value:r,placeholder:e,onChange:o=>n(o.target.value),className:"flex-1 px-2 py-1 rounded focus:outline-none",style:{background:"#F7F7F5",border:"1px solid #E5E5E0",color:f.primary,fontSize:I.xs,minWidth:0}})}function wc({values:e}){const r=[...new Set(e.filter(Boolean))];return r.length===0?t.jsx("span",{style:{color:f.faint,fontSize:"12px"},children:"—"}):r.length===1?t.jsx("span",{style:{color:f.muted,fontSize:"12px"},children:r[0]}):t.jsxs("span",{style:{color:"#F59E0B",fontSize:"12px"},children:[r.length," different values"]})}function kc(){const e=C(g=>g.model),r=C(g=>g.selectedElementIds),n=C(g=>g.clearElementSelection),o=C(g=>g.bulkUpdateAttributes),a=p.useMemo(()=>[...r],[r]),s=p.useMemo(()=>a.map(g=>e==null?void 0:e.elements[g]).filter(Boolean),[a,e]),i=p.useMemo(()=>{if(s.length===0)return[];const g="_",h=s.map(N=>new Set(Object.keys(N.attributes).filter(R=>!R.startsWith(g))));return[...h[0]].filter(N=>h.every(R=>R.has(N))).sort()},[s]),l=p.useMemo(()=>{const g={};for(const h of i)g[h]=s.map(y=>y.attributes[h]??"");return g},[s,i]),c=p.useMemo(()=>[...new Set(s.map(g=>g.kind))].sort(),[s]),[d,u]=p.useState({}),m=p.useCallback((g,h)=>{u(y=>({...y,[g]:h}))},[]),b=Object.values(d).some(g=>g!==""),v=p.useCallback(()=>{const g=Object.fromEntries(Object.entries(d).filter(([,h])=>h!==""));Object.keys(g).length!==0&&(o(a,g),u({}))},[d,a,o]),w=p.useCallback(()=>{u({})},[]);return s.length<2?null:t.jsxs("div",{className:"flex flex-col overflow-hidden",style:{width:"280px",background:f.surface,borderLeft:`1px solid ${f.border}`,fontSize:I.xs},children:[t.jsxs("div",{className:"flex items-center justify-between px-4 py-3 flex-shrink-0",style:{borderBottom:`1px solid ${f.border}`},children:[t.jsxs("div",{children:[t.jsx("div",{className:"font-semibold",style:{color:f.primary,fontSize:I.sm},children:"Bulk Edit"}),t.jsxs("div",{style:{color:f.muted,fontSize:"12px",marginTop:"2px"},children:[a.length," elements selected"]})]}),t.jsx("button",{onClick:n,className:"px-2 py-1 rounded",style:{color:f.muted,background:"#F0F0ED",fontSize:"12px"},title:"Clear selection",children:"✕ Clear"})]}),t.jsxs("div",{className:"px-4 py-3 flex-shrink-0",style:gn(),children:[t.jsx("div",{style:{color:f.muted,fontSize:"12px",fontWeight:600,marginBottom:"6px",textTransform:"uppercase",letterSpacing:"0.5px"},children:"Selection"}),t.jsx("div",{className:"flex flex-wrap gap-1",children:c.map(g=>t.jsx("span",{className:"px-2 py-0.5 rounded-full",style:{background:"#EEF2FF",color:"#4F46E5",fontSize:"12px",fontWeight:500},children:g},g))}),t.jsxs("div",{style:{color:f.faint,fontSize:"12px",marginTop:"6px"},children:[s.map(g=>g.name).slice(0,5).join(", "),s.length>5&&` +${s.length-5} more`]})]}),t.jsxs("div",{className:"flex-1 overflow-y-auto px-4 py-3",style:gn(),children:[t.jsxs("div",{style:{color:f.muted,fontSize:"12px",fontWeight:600,marginBottom:"8px",textTransform:"uppercase",letterSpacing:"0.5px"},children:["Common Attributes",i.length>0&&t.jsxs("span",{style:{color:f.faint,fontWeight:400,marginLeft:"4px"},children:["(",i.length,")"]})]}),i.length===0?t.jsx("div",{style:{color:f.faint,fontSize:"12px"},children:"No common attributes across selected elements."}):t.jsx("div",{className:"space-y-3",children:i.map(g=>t.jsxs("div",{children:[t.jsxs("div",{className:"flex items-center justify-between mb-1",children:[t.jsx("span",{style:{color:f.secondary,fontSize:"12px",fontWeight:500},children:g}),t.jsx(wc,{values:l[g]})]}),t.jsx(vc,{placeholder:`Set for all ${a.length} elements…`,value:d[g]??"",onChange:h=>m(g,h)})]},g))})]}),i.length>0&&t.jsxs("div",{className:"flex items-center gap-2 px-4 py-3 flex-shrink-0",style:gn(),children:[t.jsx("button",{onClick:w,disabled:!b,className:"flex-1 py-1.5 rounded",style:{fontSize:I.xs,fontWeight:500,color:b?f.secondary:f.faint,background:b?"#F0F0ED":"#F7F7F5",cursor:b?"pointer":"default"},children:"Reset"}),t.jsxs("button",{onClick:v,disabled:!b,className:"flex-1 py-1.5 rounded font-semibold",style:{fontSize:I.xs,color:"#FFFFFF",background:b?"#2DD4A8":"#A7F3D0",cursor:b?"pointer":"default"},children:["Apply to ",a.length]})]})]})}const Mr="memo-gapbar-pulse";if(typeof document<"u"&&!document.getElementById(Mr)){const e=document.createElement("style");e.id=Mr,e.textContent=`
|
|
4056
4056
|
@keyframes memo-pulse-red {
|
|
4057
4057
|
0%, 100% { opacity: 1; }
|
|
4058
4058
|
50% { opacity: 0.35; }
|
|
4059
4059
|
}
|
|
4060
|
-
`,document.head.appendChild(e)}const Mt={error:{color:"#DC2626",bg:"#FEF2F2",icon:"✖"},warning:{color:"#D97706",bg:"#FFFBEB",icon:"⚠"},info:{color:"#2563EB",bg:"#EFF6FF",icon:"ℹ"}};function wc(){const e=S(k=>k.validation),r=S(k=>k.analysisIssues),n=S(k=>k.selectElement),o=S(k=>k.model),a=S(k=>k.completeness),s=S(k=>k.gapBarExpanded),i=S(k=>k.toggleGapBar),l=S(k=>k.gapBarHeight),c=S(k=>k.setGapBarHeight),[d,u]=p.useState("problems"),m=p.useRef(!1),b=p.useRef(0),v=p.useRef(0),w=o?Object.keys(o.elements).length:0,g=(e==null?void 0:e.violations.filter(k=>k.severity==="error"))??[],h=(e==null?void 0:e.violations.filter(k=>k.severity==="warning"))??[],y=(e==null?void 0:e.violations.length)??0,B=r.filter(k=>k.severity==="warning").length,N=y>0||r.length>0,D=!!a,A=N&&D,F=(a==null?void 0:a.layers.filter(k=>k.totalElements>0))??[],C=p.useCallback(k=>{k.preventDefault(),m.current=!0,b.current=k.clientY,v.current=l;const T=_=>{if(!m.current)return;const j=b.current-_.clientY;c(v.current+j)},z=()=>{m.current=!1,document.removeEventListener("mousemove",T),document.removeEventListener("mouseup",z)};document.addEventListener("mousemove",T),document.addEventListener("mouseup",z)},[l,c]);return t.jsxs("div",{style:{background:f.surface,borderTop:`1px solid ${f.border}`,flexShrink:0},children:[s&&t.jsx("div",{style:{height:"4px",cursor:"row-resize",background:"transparent",flexShrink:0},onMouseDown:C,onMouseEnter:k=>{k.currentTarget.style.background=f.accent+"40"},onMouseLeave:k=>{k.currentTarget.style.background="transparent"}}),t.jsxs("div",{className:"flex items-center px-4 gap-3 cursor-pointer select-none",style:{height:"32px",fontSize:I.sm},onClick:i,children:[t.jsx("span",{style:{color:f.faint,fontSize:"10px",transition:"transform 150ms ease",transform:s?"rotate(0deg)":"rotate(-90deg)",display:"inline-block"},children:"▼"}),t.jsx("span",{style:{color:f.secondary,fontWeight:600,fontSize:I.xs},children:"Problems"}),g.length>0&&t.jsxs("span",{className:"flex items-center gap-1",style:{color:"#DC2626",fontSize:I.xs},children:[t.jsx("span",{style:{fontSize:"10px"},children:"✖"})," ",g.length]}),h.length>0&&t.jsxs("span",{className:"flex items-center gap-1",style:{color:"#D97706",fontSize:I.xs},children:[t.jsx("span",{style:{fontSize:"10px"},children:"⚠"})," ",h.length]}),B>0&&t.jsxs("span",{className:"flex items-center gap-1",style:{color:"#D97706",fontSize:I.xs},children:[t.jsx("span",{style:{fontSize:"9px",opacity:.7},children:"DSM"}),t.jsx("span",{style:{fontSize:"10px"},children:"⚠"})," ",B]}),!N&&e&&t.jsx("span",{style:{color:"#10B981",fontSize:I.xs},children:"✓ No problems"}),!e&&t.jsx("span",{style:{color:f.faint,fontSize:I.xs},children:"Waiting for validation…"}),D&&t.jsxs(t.Fragment,{children:[t.jsx("div",{style:{width:"1px",height:"14px",background:f.border,flexShrink:0}}),t.jsx("span",{style:{color:f.secondary,fontWeight:600,fontSize:I.xs},children:"Completeness"}),t.jsxs("span",{style:{color:a.overall>=80?"#10B981":a.overall>=50?"#D97706":"#DC2626",fontSize:I.xs,fontWeight:600},children:[a.overall,"%"]}),t.jsx("div",{className:"flex items-center gap-0.5",children:F.map(k=>{const T=k.percentage<40;return t.jsx("div",{title:`${Le[k.layerId]||k.layerLabel}: ${k.percentage}%`,style:{width:8,height:8,borderRadius:"2px",background:k.layerColor,opacity:Math.max(k.percentage/100,.12),flexShrink:0,animation:T?"memo-pulse-red 1.4s ease-in-out infinite":"none",cursor:"default"}},k.layerId)})})]}),t.jsxs("span",{className:"ml-auto flex items-center gap-1",style:{fontSize:I.xs},children:[e&&t.jsxs("span",{style:{color:f.faint},children:[e.rulesEvaluated," rules | ",e.rulesPassed," passed |"," "]}),t.jsxs("strong",{style:{color:f.secondary,fontWeight:700},children:[w," elements"]}),o&&t.jsxs(t.Fragment,{children:[t.jsx("span",{style:{color:f.faint},children:" · "}),t.jsxs("strong",{style:{color:f.secondary,fontWeight:700},children:[o.relationships.length," rels"]})]})]})]}),s&&t.jsxs("div",{style:{borderTop:`1px solid ${f.borderLight}`},children:[A&&t.jsx("div",{className:"flex",style:{borderBottom:`1px solid ${f.border}`,background:"#FAFAF8"},children:["problems","completeness"].map(k=>t.jsx("button",{onClick:T=>{T.stopPropagation(),u(k)},className:"px-4 py-1.5 font-medium transition-colors",style:{fontSize:I.xs,borderBottom:d===k?`2px solid ${f.accent}`:"2px solid transparent",color:d===k?f.accentDark:f.faint,background:"transparent"},children:k==="problems"?`Problems (${y+r.length})`:`Completeness ${a.overall}%`},k))}),(d==="problems"||!A)&&t.jsx("div",{className:"overflow-y-auto",style:{maxHeight:`${l}px`},children:N?t.jsxs(t.Fragment,{children:[y>0&&(e==null?void 0:e.violations.map((k,T)=>{const z=Mt[k.severity]||Mt.info;return t.jsxs("div",{className:"flex items-center gap-2 px-4 py-1.5 cursor-pointer transition-colors",style:{color:z.color,fontSize:I.xs},onMouseEnter:_=>_.currentTarget.style.background=z.bg,onMouseLeave:_=>_.currentTarget.style.background="transparent",onClick:()=>n(k.elementId),children:[t.jsx("span",{children:z.icon}),t.jsxs("span",{style:{color:f.faint},children:["[",k.ruleId,"]"]}),t.jsxs("span",{className:"font-medium",children:[k.elementKind,"/",k.elementName]}),t.jsx("span",{className:"truncate flex-1",style:{color:f.muted},children:k.description})]},`${k.ruleId}-${k.elementId}-${T}`)})),r.length>0&&t.jsxs(t.Fragment,{children:[y>0&&t.jsx("div",{style:{padding:"4px 16px",fontSize:"10px",fontWeight:600,color:f.faint,background:f.surfaceAlt,borderTop:`1px solid ${f.border}`,textTransform:"uppercase",letterSpacing:"0.06em"},children:"DSM Analysis"}),r.map(k=>{const T=Mt[k.severity]||Mt.info;return t.jsxs("div",{className:"flex items-center gap-2 px-4 py-1.5 cursor-pointer transition-colors",style:{color:T.color,fontSize:I.xs},onMouseEnter:z=>z.currentTarget.style.background=T.bg,onMouseLeave:z=>z.currentTarget.style.background="transparent",onClick:()=>n(k.elementId),children:[t.jsx("span",{children:T.icon}),t.jsxs("span",{style:{color:f.faint},children:["[",k.source,"]"]}),t.jsx("span",{className:"font-medium",children:k.elementName}),t.jsx("span",{className:"truncate flex-1",style:{color:f.muted},children:k.message}),k.tag&&t.jsx("span",{style:{flexShrink:0,fontSize:"9px",padding:"1px 5px",borderRadius:"4px",background:"#E5E7EB",color:"#374151"},children:k.tag})]},k.id)})]})]}):t.jsx("div",{className:"px-4 py-3",style:{color:f.faint,fontSize:I.xs},children:e?"✓ No problems found":"Waiting for validation…"})}),(d==="completeness"||!A)&&D&&t.jsxs("div",{className:"overflow-y-auto",style:{maxHeight:`${l}px`},children:[t.jsxs("div",{className:"px-4 py-2 flex items-center gap-3",style:{borderBottom:`1px solid ${f.borderLight}`},children:[t.jsxs("span",{style:{fontWeight:700,fontSize:"18px",color:a.overall>=80?"#10B981":a.overall>=50?"#D97706":"#DC2626"},children:[a.overall,"%"]}),t.jsx("div",{className:"flex-1 flex items-center gap-0.5",style:{height:"8px"},children:F.map(k=>{const T=Math.max(k.totalElements/a.totalElements*100,2);return t.jsx("div",{style:{width:`${T}%`,height:"100%",background:k.layerColor+"30",borderRadius:"4px",overflow:"hidden"},children:t.jsx("div",{style:{width:`${k.percentage}%`,height:"100%",background:k.layerColor,borderRadius:"4px"}})},k.layerId)})}),t.jsxs("span",{style:{color:f.faint,fontSize:I.xs},children:[a.completeElements,"/",a.totalElements]})]}),t.jsx("div",{className:"px-4 py-2 grid gap-1.5",style:{gridTemplateColumns:"repeat(auto-fill, minmax(220px, 1fr))"},children:F.map(k=>t.jsxs("div",{className:"flex items-center gap-2",style:{fontSize:I.xs},children:[t.jsx("span",{className:"w-2.5 h-2.5 rounded flex-shrink-0",style:{backgroundColor:k.layerColor}}),t.jsx("span",{className:"flex-1 truncate",style:{color:"#374151"},children:Le[k.layerId]||k.layerLabel}),t.jsxs("span",{style:{color:"#6B7280"},children:[k.percentage,"%"]}),t.jsxs("span",{style:{color:"#9CA3AF"},children:["(",k.completeElements,"/",k.totalElements,")"]})]},k.layerId))})]})]})]})}function kc(){const[e,r]=p.useState(!1),[n,o]=p.useState(""),[a,s]=p.useState(0),i=p.useRef(null),l=S(h=>h.model),c=S(h=>h.selectElement),d=S(h=>h.setActiveView),u=S(h=>h.selectViewpoint),m=S(h=>h.setExplorerTab);p.useEffect(()=>{const h=y=>{(y.metaKey||y.ctrlKey)&&y.key==="k"&&(y.preventDefault(),r(B=>!B),o(""),s(0)),y.key==="Escape"&&e&&r(!1)};return window.addEventListener("keydown",h),()=>window.removeEventListener("keydown",h)},[e]),p.useEffect(()=>{e&&setTimeout(()=>{var h;return(h=i.current)==null?void 0:h.focus()},50)},[e]);const b=p.useMemo(()=>{const h=[];if(h.push({id:"tool:dsm",label:"DSM",sublabel:"Design Structure Matrix",kind:"tool",action:()=>d({type:"dsm"})},{id:"tool:traceability",label:"Traceability Matrix",sublabel:"N×N trace matrix with presets",kind:"tool",action:()=>d({type:"traceability"})},{id:"tool:ontology",label:"Ontology",sublabel:"Ontology Viewer",kind:"tool",action:()=>d({type:"ontology"})}),!l)return h;for(const y of l.diagrams??[]){const B=$e[y.diagramType];h.push({id:`diag:${y.id}`,label:y.name,sublabel:(B==null?void 0:B.fullName)||y.diagramType,kind:"diagram",color:B==null?void 0:B.color,action:()=>{d({type:"diagram",diagramId:y.id}),u(y.viewpointId==="__model"?null:y.viewpointId),m("views")}})}for(const y of l.viewpoints??[])h.push({id:`vp:${y.id}`,label:y.label,sublabel:"Viewpoint",kind:"viewpoint",action:()=>{u(y.id),m("views")}});for(const y of Object.values(l.elements))h.push({id:`el:${y.id}`,label:y.name,sublabel:`${y.kind} · ${y.layer}`,kind:"element",color:ce[y.layer],action:()=>{c(y.id),m("model")}});return h},[l,d,c,u,m]),v=p.useMemo(()=>{if(!n)return b.slice(0,20);const h=n.toLowerCase();return b.filter(y=>{var B;return y.label.toLowerCase().includes(h)||((B=y.sublabel)==null?void 0:B.toLowerCase().includes(h))}).slice(0,20)},[b,n]);p.useEffect(()=>{s(0)},[v]);const w=p.useCallback(h=>{h.key==="ArrowDown"&&(h.preventDefault(),s(y=>Math.min(y+1,v.length-1))),h.key==="ArrowUp"&&(h.preventDefault(),s(y=>Math.max(y-1,0))),h.key==="Enter"&&v[a]&&(v[a].action(),r(!1))},[v,a]);if(!e)return null;const g={element:"○",diagram:"▦",tool:"⚙",viewpoint:"◉"};return t.jsx("div",{className:"fixed inset-0 z-50 flex items-start justify-center pt-24",style:{background:"rgba(0,0,0,0.4)"},onClick:()=>r(!1),children:t.jsxs("div",{className:"rounded-xl overflow-hidden",style:{width:"520px",maxHeight:"400px",background:"#FFFFFF",boxShadow:"0 16px 48px rgba(0,0,0,0.2)"},onClick:h=>h.stopPropagation(),children:[t.jsxs("div",{className:"flex items-center gap-2 px-4 py-3",style:{borderBottom:"1px solid #E5E5E0"},children:[t.jsx("span",{style:{color:"#9CA3AF",fontSize:"14px"},children:"⌕"}),t.jsx("input",{ref:i,type:"text",placeholder:"Search elements, diagrams, tools...",value:n,onChange:h=>o(h.target.value),onKeyDown:w,className:"flex-1 text-sm focus:outline-none",style:{color:"#1a1a1a",background:"transparent"}}),t.jsx("kbd",{className:"px-1.5 py-0.5 rounded text-xs",style:{background:"#F0F0ED",color:"#9CA3AF",fontSize:"10px"},children:"ESC"})]}),t.jsxs("div",{className:"overflow-y-auto",style:{maxHeight:"340px"},children:[v.length===0&&t.jsx("div",{className:"px-4 py-6 text-center text-xs",style:{color:"#9CA3AF"},children:"No results found"}),v.map((h,y)=>t.jsxs("div",{className:"flex items-center gap-2 px-4 py-2 cursor-pointer",style:{background:y===a?"#F0F0ED":"transparent"},onMouseEnter:()=>s(y),onClick:()=>{h.action(),r(!1)},children:[t.jsx("span",{style:{color:h.color||"#9CA3AF",fontSize:"12px"},children:g[h.kind]||"○"}),t.jsx("span",{className:"text-sm truncate",style:{color:"#1a1a1a"},children:h.label}),h.sublabel&&t.jsx("span",{className:"text-xs truncate ml-auto",style:{color:"#9CA3AF"},children:h.sublabel})]},h.id))]}),t.jsx("div",{className:"px-4 py-2 flex items-center gap-3",style:{borderTop:"1px solid #E5E5E0",background:"#FAFAF8"},children:t.jsxs("span",{className:"text-xs",style:{color:"#9CA3AF"},children:["↑↓"," navigate · ","↵"," select · esc close"]})})]})})}function Sc(e){const r=e.trim().split(/\r?\n/).filter(Boolean);if(r.length<2)return{headers:[],rows:[]};const o=r[0].includes(" ")?" ":",",a=l=>l.split(o).map(c=>c.replace(/^"(.*)"$/,"$1").replace(/""/g,'"').trim()),s=a(r[0]),i=r.slice(1).map(l=>{const c=a(l),d={};return s.forEach((u,m)=>{d[u]=c[m]??""}),d});return{headers:s,rows:i}}const _r=["id","name","kind","construct","doc","— skip —"];function Cc(){const e=S(x=>x.bulkImportOpen),r=S(x=>x.setBulkImportOpen),n=S(x=>x.importResult),o=S(x=>x.clearImportResult),a=S(x=>x.model),s=p.useRef(null),[i,l]=p.useState("input"),[c,d]=p.useState(""),[u,m]=p.useState(null),[b,v]=p.useState("bulk_import"),[w,g]=p.useState(""),[h,y]=p.useState([]),[B,N]=p.useState([]),[D,A]=p.useState([]),[F,C]=p.useState([]),[k,T]=p.useState([]),[z,_]=p.useState([]),[j,L]=p.useState(""),[E,O]=p.useState(!1);Uo.useMemo(()=>a?Array.from(new Set(Object.values(a.elements).map(x=>x.kind))).sort():[],[a]),p.useEffect(()=>{e||(l("input"),d(""),m(null),v("bulk_import"),g(""),y([]),N([]),A([]),C([]),T([]),_([]),L(""),O(!1),o())},[e,o]),p.useEffect(()=>{n&&O(!1)},[n]);const V=p.useCallback(()=>{r(!1)},[r]),U=p.useCallback(x=>{var X;const P=(X=x.target.files)==null?void 0:X[0];if(!P)return;const q=new FileReader;q.onload=ie=>{var H;const oe=(H=ie.target)==null?void 0:H.result;d(oe),g("");const R=P.name.replace(/\.[^.]+$/,"").replace(/[^a-zA-Z0-9_]/g,"_");R&&v(R)},q.readAsText(P)},[]),$=p.useCallback(()=>{if(!c.trim()){g("Paste CSV data or upload a file first.");return}const{headers:x,rows:P}=Sc(c);if(x.length===0){g("Could not parse headers. Make sure the first row contains column names.");return}if(P.length===0){g("No data rows found after the header row.");return}y(x),N(P),A(Ps(x,u??void 0)),g(""),l("mapping")},[c,u]),K=p.useCallback(()=>{const x=u==null?void 0:u.defaultKind,P=zs(B,D,{},x);L(P.csv),_(P.warnings);const q=P.csv.trim().split(`
|
|
4061
|
-
`);if(
|
|
4060
|
+
`,document.head.appendChild(e)}const _t={error:{color:"#DC2626",bg:"#FEF2F2",icon:"✖"},warning:{color:"#D97706",bg:"#FFFBEB",icon:"⚠"},info:{color:"#2563EB",bg:"#EFF6FF",icon:"ℹ"}};function Sc(){const e=C(k=>k.validation),r=C(k=>k.analysisIssues),n=C(k=>k.selectElement),o=C(k=>k.model),a=C(k=>k.completeness),s=C(k=>k.gapBarExpanded),i=C(k=>k.toggleGapBar),l=C(k=>k.gapBarHeight),c=C(k=>k.setGapBarHeight),[d,u]=p.useState("problems"),m=p.useRef(!1),b=p.useRef(0),v=p.useRef(0),w=o?Object.keys(o.elements).length:0,g=(e==null?void 0:e.violations.filter(k=>k.severity==="error"))??[],h=(e==null?void 0:e.violations.filter(k=>k.severity==="warning"))??[],y=(e==null?void 0:e.violations.length)??0,N=r.filter(k=>k.severity==="warning").length,R=y>0||r.length>0,A=!!a,T=R&&A,j=(a==null?void 0:a.layers.filter(k=>k.totalElements>0))??[],S=p.useCallback(k=>{k.preventDefault(),m.current=!0,b.current=k.clientY,v.current=l;const U=O=>{if(!m.current)return;const D=b.current-O.clientY;c(v.current+D)},H=()=>{m.current=!1,document.removeEventListener("mousemove",U),document.removeEventListener("mouseup",H)};document.addEventListener("mousemove",U),document.addEventListener("mouseup",H)},[l,c]);return t.jsxs("div",{style:{background:f.surface,borderTop:`1px solid ${f.border}`,flexShrink:0},children:[s&&t.jsx("div",{style:{height:"4px",cursor:"row-resize",background:"transparent",flexShrink:0},onMouseDown:S,onMouseEnter:k=>{k.currentTarget.style.background=f.accent+"40"},onMouseLeave:k=>{k.currentTarget.style.background="transparent"}}),t.jsxs("div",{className:"flex items-center px-4 gap-3 cursor-pointer select-none",style:{height:"32px",fontSize:I.sm},onClick:i,children:[t.jsx("span",{style:{color:f.faint,fontSize:"10px",transition:"transform 150ms ease",transform:s?"rotate(0deg)":"rotate(-90deg)",display:"inline-block"},children:"▼"}),t.jsx("span",{style:{color:f.secondary,fontWeight:600,fontSize:I.xs},children:"Problems"}),g.length>0&&t.jsxs("span",{className:"flex items-center gap-1",style:{color:"#DC2626",fontSize:I.xs},children:[t.jsx("span",{style:{fontSize:"10px"},children:"✖"})," ",g.length]}),h.length>0&&t.jsxs("span",{className:"flex items-center gap-1",style:{color:"#D97706",fontSize:I.xs},children:[t.jsx("span",{style:{fontSize:"10px"},children:"⚠"})," ",h.length]}),N>0&&t.jsxs("span",{className:"flex items-center gap-1",style:{color:"#D97706",fontSize:I.xs},children:[t.jsx("span",{style:{fontSize:"9px",opacity:.7},children:"DSM"}),t.jsx("span",{style:{fontSize:"10px"},children:"⚠"})," ",N]}),!R&&e&&t.jsx("span",{style:{color:"#10B981",fontSize:I.xs},children:"✓ No problems"}),!e&&t.jsx("span",{style:{color:f.faint,fontSize:I.xs},children:"Waiting for validation…"}),A&&t.jsxs(t.Fragment,{children:[t.jsx("div",{style:{width:"1px",height:"14px",background:f.border,flexShrink:0}}),t.jsx("span",{style:{color:f.secondary,fontWeight:600,fontSize:I.xs},children:"Completeness"}),t.jsxs("span",{style:{color:a.overall>=80?"#10B981":a.overall>=50?"#D97706":"#DC2626",fontSize:I.xs,fontWeight:600},children:[a.overall,"%"]}),t.jsx("div",{className:"flex items-center gap-0.5",children:j.map(k=>{const U=k.percentage<40;return t.jsx("div",{title:`${Le[k.layerId]||k.layerLabel}: ${k.percentage}%`,style:{width:8,height:8,borderRadius:"2px",background:k.layerColor,opacity:Math.max(k.percentage/100,.12),flexShrink:0,animation:U?"memo-pulse-red 1.4s ease-in-out infinite":"none",cursor:"default"}},k.layerId)})})]}),t.jsxs("span",{className:"ml-auto flex items-center gap-1",style:{fontSize:I.xs},children:[e&&t.jsxs("span",{style:{color:f.faint},children:[e.rulesEvaluated," rules | ",e.rulesPassed," passed |"," "]}),t.jsxs("strong",{style:{color:f.secondary,fontWeight:700},children:[w," elements"]}),o&&t.jsxs(t.Fragment,{children:[t.jsx("span",{style:{color:f.faint},children:" · "}),t.jsxs("strong",{style:{color:f.secondary,fontWeight:700},children:[o.relationships.length," rels"]})]})]})]}),s&&t.jsxs("div",{style:{borderTop:`1px solid ${f.borderLight}`},children:[T&&t.jsx("div",{className:"flex",style:{borderBottom:`1px solid ${f.border}`,background:"#FAFAF8"},children:["problems","completeness"].map(k=>t.jsx("button",{onClick:U=>{U.stopPropagation(),u(k)},className:"px-4 py-1.5 font-medium transition-colors",style:{fontSize:I.xs,borderBottom:d===k?`2px solid ${f.accent}`:"2px solid transparent",color:d===k?f.accentDark:f.faint,background:"transparent"},children:k==="problems"?`Problems (${y+r.length})`:`Completeness ${a.overall}%`},k))}),(d==="problems"||!T)&&t.jsx("div",{className:"overflow-y-auto",style:{maxHeight:`${l}px`},children:R?t.jsxs(t.Fragment,{children:[y>0&&(e==null?void 0:e.violations.map((k,U)=>{const H=_t[k.severity]||_t.info;return t.jsxs("div",{className:"flex items-center gap-2 px-4 py-1.5 cursor-pointer transition-colors",style:{color:H.color,fontSize:I.xs},onMouseEnter:O=>O.currentTarget.style.background=H.bg,onMouseLeave:O=>O.currentTarget.style.background="transparent",onClick:()=>n(k.elementId),children:[t.jsx("span",{children:H.icon}),t.jsxs("span",{style:{color:f.faint},children:["[",k.ruleId,"]"]}),t.jsxs("span",{className:"font-medium",children:[k.elementKind,"/",k.elementName]}),t.jsx("span",{className:"truncate flex-1",style:{color:f.muted},children:k.description})]},`${k.ruleId}-${k.elementId}-${U}`)})),r.length>0&&t.jsxs(t.Fragment,{children:[y>0&&t.jsx("div",{style:{padding:"4px 16px",fontSize:"10px",fontWeight:600,color:f.faint,background:f.surfaceAlt,borderTop:`1px solid ${f.border}`,textTransform:"uppercase",letterSpacing:"0.06em"},children:"DSM Analysis"}),r.map(k=>{const U=_t[k.severity]||_t.info;return t.jsxs("div",{className:"flex items-center gap-2 px-4 py-1.5 cursor-pointer transition-colors",style:{color:U.color,fontSize:I.xs},onMouseEnter:H=>H.currentTarget.style.background=U.bg,onMouseLeave:H=>H.currentTarget.style.background="transparent",onClick:()=>n(k.elementId),children:[t.jsx("span",{children:U.icon}),t.jsxs("span",{style:{color:f.faint},children:["[",k.source,"]"]}),t.jsx("span",{className:"font-medium",children:k.elementName}),t.jsx("span",{className:"truncate flex-1",style:{color:f.muted},children:k.message}),k.tag&&t.jsx("span",{style:{flexShrink:0,fontSize:"9px",padding:"1px 5px",borderRadius:"4px",background:"#E5E7EB",color:"#374151"},children:k.tag})]},k.id)})]})]}):t.jsx("div",{className:"px-4 py-3",style:{color:f.faint,fontSize:I.xs},children:e?"✓ No problems found":"Waiting for validation…"})}),(d==="completeness"||!T)&&A&&t.jsxs("div",{className:"overflow-y-auto",style:{maxHeight:`${l}px`},children:[t.jsxs("div",{className:"px-4 py-2 flex items-center gap-3",style:{borderBottom:`1px solid ${f.borderLight}`},children:[t.jsxs("span",{style:{fontWeight:700,fontSize:"18px",color:a.overall>=80?"#10B981":a.overall>=50?"#D97706":"#DC2626"},children:[a.overall,"%"]}),t.jsx("div",{className:"flex-1 flex items-center gap-0.5",style:{height:"8px"},children:j.map(k=>{const U=Math.max(k.totalElements/a.totalElements*100,2);return t.jsx("div",{style:{width:`${U}%`,height:"100%",background:k.layerColor+"30",borderRadius:"4px",overflow:"hidden"},children:t.jsx("div",{style:{width:`${k.percentage}%`,height:"100%",background:k.layerColor,borderRadius:"4px"}})},k.layerId)})}),t.jsxs("span",{style:{color:f.faint,fontSize:I.xs},children:[a.completeElements,"/",a.totalElements]})]}),t.jsx("div",{className:"px-4 py-2 grid gap-1.5",style:{gridTemplateColumns:"repeat(auto-fill, minmax(220px, 1fr))"},children:j.map(k=>t.jsxs("div",{className:"flex items-center gap-2",style:{fontSize:I.xs},children:[t.jsx("span",{className:"w-2.5 h-2.5 rounded flex-shrink-0",style:{backgroundColor:k.layerColor}}),t.jsx("span",{className:"flex-1 truncate",style:{color:"#374151"},children:Le[k.layerId]||k.layerLabel}),t.jsxs("span",{style:{color:"#6B7280"},children:[k.percentage,"%"]}),t.jsxs("span",{style:{color:"#9CA3AF"},children:["(",k.completeElements,"/",k.totalElements,")"]})]},k.layerId))})]})]})]})}function Cc(){const[e,r]=p.useState(!1),[n,o]=p.useState(""),[a,s]=p.useState(0),i=p.useRef(null),l=C(h=>h.model),c=C(h=>h.selectElement),d=C(h=>h.setActiveView),u=C(h=>h.selectViewpoint),m=C(h=>h.setExplorerTab);p.useEffect(()=>{const h=y=>{(y.metaKey||y.ctrlKey)&&y.key==="k"&&(y.preventDefault(),r(N=>!N),o(""),s(0)),y.key==="Escape"&&e&&r(!1)};return window.addEventListener("keydown",h),()=>window.removeEventListener("keydown",h)},[e]),p.useEffect(()=>{e&&setTimeout(()=>{var h;return(h=i.current)==null?void 0:h.focus()},50)},[e]);const b=p.useMemo(()=>{const h=[];if(h.push({id:"tool:dsm",label:"DSM",sublabel:"Design Structure Matrix",kind:"tool",action:()=>d({type:"dsm"})},{id:"tool:traceability",label:"Traceability Matrix",sublabel:"N×N trace matrix with presets",kind:"tool",action:()=>d({type:"traceability"})},{id:"tool:ontology",label:"Ontology",sublabel:"Ontology Viewer",kind:"tool",action:()=>d({type:"ontology"})}),!l)return h;for(const y of l.diagrams??[]){const N=$e[y.diagramType];h.push({id:`diag:${y.id}`,label:y.name,sublabel:(N==null?void 0:N.fullName)||y.diagramType,kind:"diagram",color:N==null?void 0:N.color,action:()=>{d({type:"diagram",diagramId:y.id}),u(y.viewpointId==="__model"?null:y.viewpointId),m("views")}})}for(const y of l.viewpoints??[])h.push({id:`vp:${y.id}`,label:y.label,sublabel:"Viewpoint",kind:"viewpoint",action:()=>{u(y.id),m("views")}});for(const y of Object.values(l.elements))h.push({id:`el:${y.id}`,label:y.name,sublabel:`${y.kind} · ${y.layer}`,kind:"element",color:ue[y.layer],action:()=>{c(y.id),m("model")}});return h},[l,d,c,u,m]),v=p.useMemo(()=>{if(!n)return b.slice(0,20);const h=n.toLowerCase();return b.filter(y=>{var N;return y.label.toLowerCase().includes(h)||((N=y.sublabel)==null?void 0:N.toLowerCase().includes(h))}).slice(0,20)},[b,n]);p.useEffect(()=>{s(0)},[v]);const w=p.useCallback(h=>{h.key==="ArrowDown"&&(h.preventDefault(),s(y=>Math.min(y+1,v.length-1))),h.key==="ArrowUp"&&(h.preventDefault(),s(y=>Math.max(y-1,0))),h.key==="Enter"&&v[a]&&(v[a].action(),r(!1))},[v,a]);if(!e)return null;const g={element:"○",diagram:"▦",tool:"⚙",viewpoint:"◉"};return t.jsx("div",{className:"fixed inset-0 z-50 flex items-start justify-center pt-24",style:{background:"rgba(0,0,0,0.4)"},onClick:()=>r(!1),children:t.jsxs("div",{className:"rounded-xl overflow-hidden",style:{width:"520px",maxHeight:"400px",background:"#FFFFFF",boxShadow:"0 16px 48px rgba(0,0,0,0.2)"},onClick:h=>h.stopPropagation(),children:[t.jsxs("div",{className:"flex items-center gap-2 px-4 py-3",style:{borderBottom:"1px solid #E5E5E0"},children:[t.jsx("span",{style:{color:"#9CA3AF",fontSize:"14px"},children:"⌕"}),t.jsx("input",{ref:i,type:"text",placeholder:"Search elements, diagrams, tools...",value:n,onChange:h=>o(h.target.value),onKeyDown:w,className:"flex-1 text-sm focus:outline-none",style:{color:"#1a1a1a",background:"transparent"}}),t.jsx("kbd",{className:"px-1.5 py-0.5 rounded text-xs",style:{background:"#F0F0ED",color:"#9CA3AF",fontSize:"10px"},children:"ESC"})]}),t.jsxs("div",{className:"overflow-y-auto",style:{maxHeight:"340px"},children:[v.length===0&&t.jsx("div",{className:"px-4 py-6 text-center text-xs",style:{color:"#9CA3AF"},children:"No results found"}),v.map((h,y)=>t.jsxs("div",{className:"flex items-center gap-2 px-4 py-2 cursor-pointer",style:{background:y===a?"#F0F0ED":"transparent"},onMouseEnter:()=>s(y),onClick:()=>{h.action(),r(!1)},children:[t.jsx("span",{style:{color:h.color||"#9CA3AF",fontSize:"12px"},children:g[h.kind]||"○"}),t.jsx("span",{className:"text-sm truncate",style:{color:"#1a1a1a"},children:h.label}),h.sublabel&&t.jsx("span",{className:"text-xs truncate ml-auto",style:{color:"#9CA3AF"},children:h.sublabel})]},h.id))]}),t.jsx("div",{className:"px-4 py-2 flex items-center gap-3",style:{borderTop:"1px solid #E5E5E0",background:"#FAFAF8"},children:t.jsxs("span",{className:"text-xs",style:{color:"#9CA3AF"},children:["↑↓"," navigate · ","↵"," select · esc close"]})})]})})}function Ec(e){const r=e.trim().split(/\r?\n/).filter(Boolean);if(r.length<2)return{headers:[],rows:[]};const o=r[0].includes(" ")?" ":",",a=l=>l.split(o).map(c=>c.replace(/^"(.*)"$/,"$1").replace(/""/g,'"').trim()),s=a(r[0]),i=r.slice(1).map(l=>{const c=a(l),d={};return s.forEach((u,m)=>{d[u]=c[m]??""}),d});return{headers:s,rows:i}}const _r=["id","name","kind","construct","doc","— skip —"];function jc(){const e=C(x=>x.bulkImportOpen),r=C(x=>x.setBulkImportOpen),n=C(x=>x.importResult),o=C(x=>x.clearImportResult),a=C(x=>x.model),s=p.useRef(null),[i,l]=p.useState("input"),[c,d]=p.useState(""),[u,m]=p.useState(null),[b,v]=p.useState("bulk_import"),[w,g]=p.useState(""),[h,y]=p.useState([]),[N,R]=p.useState([]),[A,T]=p.useState([]),[j,S]=p.useState([]),[k,U]=p.useState([]),[H,O]=p.useState([]),[D,$]=p.useState(""),[E,q]=p.useState(!1);qo.useMemo(()=>a?Array.from(new Set(Object.values(a.elements).map(x=>x.kind))).sort():[],[a]),p.useEffect(()=>{e||(l("input"),d(""),m(null),v("bulk_import"),g(""),y([]),R([]),T([]),S([]),U([]),O([]),$(""),q(!1),o())},[e,o]),p.useEffect(()=>{n&&q(!1)},[n]);const X=p.useCallback(()=>{r(!1)},[r]),z=p.useCallback(x=>{var F;const _=(F=x.target.files)==null?void 0:F[0];if(!_)return;const W=new FileReader;W.onload=L=>{var P;const V=(P=L.target)==null?void 0:P.result;d(V),g("");const B=_.name.replace(/\.[^.]+$/,"").replace(/[^a-zA-Z0-9_]/g,"_");B&&v(B)},W.readAsText(_)},[]),G=p.useCallback(()=>{if(!c.trim()){g("Paste CSV data or upload a file first.");return}const{headers:x,rows:_}=Ec(c);if(x.length===0){g("Could not parse headers. Make sure the first row contains column names.");return}if(_.length===0){g("No data rows found after the header row.");return}y(x),R(_),T(zs(x,u??void 0)),g(""),l("mapping")},[c,u]),J=p.useCallback(()=>{const x=u==null?void 0:u.defaultKind,_=Ls(N,A,{},x);$(_.csv),O(_.warnings);const W=_.csv.trim().split(`
|
|
4061
|
+
`);if(W.length<2){U(["No rows to preview after applying mappings."]),S([]),l("preview");return}const F=W[0].split(",").map(B=>B.replace(/^"|"$/g,"").trim()),L=[],V=[];W.slice(1,21).forEach((B,P)=>{const K=B.split(",").map(ee=>ee.replace(/^"|"$/g,"").trim()),Z={rowIndex:P+1,id:"",name:"",kind:"",doc:""};F.forEach((ee,te)=>{Z[ee]=K[te]??""}),Z.id||V.push(`Row ${P+2}: missing id`),Z.name||V.push(`Row ${P+2}: missing name`),Z.kind||V.push(`Row ${P+2}: missing kind`),L.push(Z)}),S(L),U(V),l("preview")},[N,A,u]),ne=p.useCallback(()=>{D&&(q(!0),o(),di({elementsCsv:D,packageName:b||"bulk_import"}))},[D,b,o]),Q=p.useCallback((x,_)=>{T(W=>W.map((F,L)=>L===x?{...F,targetAttribute:_}:F))},[]);if(!e)return null;const oe={input:"1 · Input",mapping:"2 · Map columns",preview:"3 · Preview & Import"},ae=["input","mapping","preview"],M=ae.indexOf(i);return t.jsx("div",{ref:s,className:"fixed inset-0 z-50 flex items-center justify-center",style:{background:"rgba(0,0,0,0.35)"},onMouseDown:x=>{x.target===s.current&&X()},children:t.jsxs("div",{className:"flex flex-col rounded-2xl overflow-hidden",style:{width:680,maxHeight:"90vh",background:"#FFFFFF",boxShadow:"0 24px 64px rgba(0,0,0,0.18)",border:"1px solid #E5E5E0"},children:[t.jsxs("div",{className:"flex items-center justify-between px-6 py-4",style:{background:"linear-gradient(135deg, #1B3A4B, #2D6A7A)",flexShrink:0},children:[t.jsxs("div",{children:[t.jsx("h2",{style:{fontSize:"15px",fontWeight:700,color:"#2DD4A8",margin:0},children:"Bulk Import Elements"}),t.jsx("p",{style:{fontSize:"12px",color:"rgba(255,255,255,0.6)",margin:"2px 0 0"},children:"Import from CSV, Excel paste, or requirements spreadsheet"})]}),t.jsx("button",{onClick:X,style:Dc,children:"✕"})]}),t.jsx("div",{className:"flex",style:{borderBottom:"1px solid #F0F0EC",background:"#FAFAF8",flexShrink:0},children:ae.map((x,_)=>t.jsx("div",{className:"flex-1 flex items-center justify-center py-2.5",style:{fontSize:I.xs,fontWeight:_===M?700:400,color:_===M?"#1B3A4B":_<M?"#2D6A7A":"#9CA3AF",borderBottom:_===M?"2px solid #2D6A7A":"2px solid transparent"},children:oe[x]},x))}),t.jsxs("div",{className:"flex-1 overflow-y-auto px-6 py-5",style:{minHeight:0},children:[i==="input"&&t.jsxs("div",{className:"flex flex-col gap-4",children:[t.jsxs("div",{children:[t.jsx("label",{style:xn,children:"Artifact type (recipe preset)"}),t.jsxs("select",{value:(u==null?void 0:u.id)??"",onChange:x=>{const _=or.find(W=>W.id===x.target.value)??null;m(_)},style:bn,children:[t.jsx("option",{value:"",children:"— Custom / no preset —"}),or.map(x=>t.jsx("option",{value:x.id,children:x.name},x.id))]}),u&&t.jsx("p",{style:{fontSize:I.xs,color:"#6B7280",marginTop:4},children:u.description})]}),t.jsxs("div",{children:[t.jsxs("label",{style:xn,children:["Package name ",t.jsx("span",{style:{color:"#9CA3AF",fontWeight:400},children:"(for the generated .sysml file)"})]}),t.jsx("input",{type:"text",value:b,onChange:x=>v(x.target.value.replace(/[^a-zA-Z0-9_]/g,"_")),style:bn,placeholder:"bulk_import"})]}),t.jsxs("div",{children:[t.jsxs("label",{style:xn,children:["CSV data ",t.jsx("span",{style:{color:"#E74C3C"},children:"*"})]}),t.jsx("textarea",{value:c,onChange:x=>{d(x.target.value),g("")},placeholder:`Paste CSV or tab-separated data here.
|
|
4062
4062
|
First row must be the header.
|
|
4063
4063
|
|
|
4064
4064
|
Example:
|
|
4065
4065
|
id,name,kind,doc
|
|
4066
|
-
req_001,System shall be safe,Requirement,Safety requirement`,rows:10,style:{...
|
|
4067
|
-
`).length," line(s) loaded"]})]})]}),i==="mapping"&&t.jsxs("div",{className:"flex flex-col gap-3",children:[t.jsxs("p",{style:{fontSize:I.xs,color:"#6B7280",margin:0},children:["Map each source column to a MEMO attribute. ",t.jsx("strong",{children:"id"}),", ",t.jsx("strong",{children:"name"}),", and ",t.jsx("strong",{children:"kind"})," are required. Unrecognised columns are passed through as dynamic attributes."]}),t.jsxs("div",{style:{border:"1px solid #E5E5E0",borderRadius:8,overflow:"hidden"},children:[t.jsxs("div",{className:"flex",style:{background:"#F8F8F5",padding:"8px 12px",borderBottom:"1px solid #E5E5E0"},children:[t.jsx("span",{style:{flex:1,fontSize:I.xs,fontWeight:600,color:"#374151"},children:"Source column"}),t.jsx("span",{style:{flex:1,fontSize:I.xs,fontWeight:600,color:"#374151"},children:"Maps to"}),t.jsx("span",{style:{width:80,fontSize:I.xs,fontWeight:600,color:"#374151"},children:"Transform"})]}),D.map((x,P)=>{const q=["id","name","kind"].includes(x.targetAttribute),X=!x.targetAttribute,ie=D.filter((R,H)=>H!==P&&["id","name","kind","doc","construct"].includes(R.targetAttribute)).map(R=>R.targetAttribute),oe=_r.filter(R=>R==="— skip —"||!ie.includes(R)||R===x.targetAttribute);return t.jsxs("div",{className:"flex items-center",style:{padding:"6px 12px",borderBottom:P<D.length-1?"1px solid #F0F0EC":"none",background:q?"#F0FDF4":"transparent"},children:[t.jsx("div",{style:{flex:1,fontSize:I.xs,color:"#374151",fontFamily:"monospace"},children:x.sourceColumn}),t.jsx("div",{style:{flex:1,paddingRight:8},children:t.jsxs("select",{value:x.targetAttribute||"",onChange:R=>Y(P,R.target.value==="— skip —"?"":R.target.value),style:{width:"100%",fontSize:I.xs,padding:"3px 6px",borderRadius:5,border:`1px solid ${X?"#E5E5E0":q?"#22C55E":"#E5E5E0"}`,background:X?"#F9FAFB":"#FFFFFF",color:X?"#9CA3AF":"#1a1a1a"},children:[oe.map(R=>t.jsx("option",{value:R,children:R},R)),x.targetAttribute&&!_r.includes(x.targetAttribute)&&t.jsx("option",{value:x.targetAttribute,children:x.targetAttribute})]})}),t.jsx("div",{style:{width:80,fontSize:"10px",color:"#9CA3AF"},children:x.transform??"—"})]},P)})]}),B.length>0&&t.jsxs("details",{children:[t.jsxs("summary",{style:{fontSize:I.xs,color:"#6B7280",cursor:"pointer",marginTop:4},children:["Show raw data sample (",Math.min(B.length,3)," of ",B.length," rows)"]}),t.jsx("div",{style:{marginTop:6,overflowX:"auto"},children:t.jsxs("table",{style:{fontSize:"10px",borderCollapse:"collapse",width:"100%"},children:[t.jsx("thead",{children:t.jsx("tr",{children:h.map(x=>t.jsx("th",{style:We,children:x},x))})}),t.jsx("tbody",{children:B.slice(0,3).map((x,P)=>t.jsx("tr",{children:h.map(q=>t.jsx("td",{style:ct,children:x[q]??""},q))},P))})]})})]})]}),i==="preview"&&t.jsxs("div",{className:"flex flex-col gap-4",children:[k.length>0&&t.jsxs("div",{style:{background:"#FEF2F2",border:"1px solid #FECACA",borderRadius:8,padding:"10px 14px"},children:[t.jsxs("p",{style:{fontSize:I.xs,fontWeight:700,color:"#DC2626",margin:"0 0 4px"},children:[k.length," validation error(s) — rows with missing required fields will be skipped"]}),k.slice(0,5).map((x,P)=>t.jsx("p",{style:{fontSize:"11px",color:"#DC2626",margin:"1px 0"},children:x},P)),k.length>5&&t.jsxs("p",{style:{fontSize:"11px",color:"#DC2626",margin:"2px 0 0"},children:["+",k.length-5," more…"]})]}),z.length>0&&t.jsxs("div",{style:{background:"#FFFBEB",border:"1px solid #FDE68A",borderRadius:8,padding:"10px 14px"},children:[t.jsxs("p",{style:{fontSize:I.xs,fontWeight:700,color:"#D97706",margin:"0 0 4px"},children:[z.length," warning(s)"]}),z.slice(0,3).map((x,P)=>t.jsx("p",{style:{fontSize:"11px",color:"#D97706",margin:"1px 0"},children:x},P))]}),n&&t.jsxs("div",{style:{background:n.success?"#F0FDF4":"#FEF2F2",border:`1px solid ${n.success?"#86EFAC":"#FECACA"}`,borderRadius:8,padding:"12px 14px"},children:[t.jsx("p",{style:{fontSize:I.xs,fontWeight:700,margin:"0 0 4px",color:n.success?"#16A34A":"#DC2626"},children:n.success?`Import complete — ${n.elementsImported} element(s) written to ${n.generatedFile??"model"}`:"Import failed"}),n.errors.map((x,P)=>t.jsx("p",{style:{fontSize:"11px",color:"#DC2626",margin:"1px 0"},children:x},P)),n.warnings.slice(0,3).map((x,P)=>t.jsx("p",{style:{fontSize:"11px",color:"#D97706",margin:"1px 0"},children:x},P))]}),F.length>0&&t.jsxs(t.Fragment,{children:[t.jsxs("p",{style:{fontSize:I.xs,color:"#6B7280",margin:0},children:["Showing first ",F.length," of ",B.length," row(s)",B.length>F.length&&` (+${B.length-F.length} more will be imported)`]}),t.jsx("div",{style:{overflowX:"auto",borderRadius:8,border:"1px solid #E5E5E0"},children:t.jsxs("table",{style:{fontSize:"11px",borderCollapse:"collapse",width:"100%"},children:[t.jsx("thead",{children:t.jsxs("tr",{style:{background:"#F8F8F5"},children:[t.jsx("th",{style:We,children:"#"}),t.jsx("th",{style:We,children:"id"}),t.jsx("th",{style:We,children:"name"}),t.jsx("th",{style:We,children:"kind"}),t.jsx("th",{style:We,children:"doc"})]})}),t.jsx("tbody",{children:F.map(x=>{const P=!x.id||!x.name||!x.kind;return t.jsxs("tr",{style:{background:P?"#FEF9F9":"transparent"},children:[t.jsx("td",{style:Or,children:x.rowIndex}),t.jsx("td",{style:{...Or,color:x.id?"#1a1a1a":"#DC2626"},children:x.id||"⚠ missing"}),t.jsx("td",{style:{...ct,maxWidth:160,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:String(x.name||"—")}),t.jsx("td",{style:{...ct,color:x.kind?"#1B3A4B":"#DC2626"},children:x.kind||"⚠ missing"}),t.jsx("td",{style:{...ct,maxWidth:180,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",color:"#6B7280"},children:String(x.doc||"—")})]},x.rowIndex)})})]})})]}),F.length===0&&k.length===0&&t.jsx("p",{style:{fontSize:I.xs,color:"#9CA3AF",textAlign:"center",padding:"24px 0"},children:"No rows to preview."})]})]}),t.jsxs("div",{className:"flex items-center justify-between px-6 py-4",style:{borderTop:"1px solid #F0F0EC",background:"#FAFAF8",flexShrink:0},children:[t.jsx("div",{className:"flex gap-2",children:i!=="input"&&!n&&t.jsx("button",{onClick:()=>l(ee[M-1]),style:Pr,children:"← Back"})}),t.jsxs("div",{className:"flex gap-2 items-center",children:[t.jsx("button",{onClick:V,style:Pr,children:n!=null&&n.success?"Done":"Cancel"}),!n&&t.jsxs(t.Fragment,{children:[i==="input"&&t.jsx("button",{onClick:$,style:bn,children:"Next →"}),i==="mapping"&&t.jsx("button",{onClick:K,style:bn,children:"Preview →"}),i==="preview"&&t.jsx("button",{onClick:J,disabled:E||F.length===0,style:{...bn,opacity:E||F.length===0?.5:1,cursor:E||F.length===0?"not-allowed":"pointer"},children:E?"Importing…":`Import ${B.length} element(s)`})]})]})]})]})})}const gn={display:"block",fontSize:I.xs,fontWeight:600,color:"#374151",marginBottom:6},xn={width:"100%",padding:"7px 10px",borderRadius:8,border:"1px solid #E5E5E0",fontSize:I.sm,color:"#1a1a1a",background:"#FAFAF8",boxSizing:"border-box"},Ec={background:"rgba(255,255,255,0.12)",border:"none",borderRadius:8,color:"rgba(255,255,255,0.8)",cursor:"pointer",padding:"6px 10px",fontSize:"14px"},bn={padding:"7px 18px",borderRadius:8,background:"#1B3A4B",border:"none",color:"#FFFFFF",fontSize:I.xs,fontWeight:600,cursor:"pointer"},Pr={padding:"7px 14px",borderRadius:8,background:"transparent",border:"1px solid #E5E5E0",color:"#374151",fontSize:I.xs,cursor:"pointer"},We={padding:"5px 8px",textAlign:"left",fontWeight:600,fontSize:"10px",color:"#6B7280",borderBottom:"1px solid #E5E5E0",whiteSpace:"nowrap"},ct={padding:"4px 8px",fontSize:"11px",color:"#1a1a1a",borderBottom:"1px solid #F5F5F2"},Or={...ct,fontFamily:"monospace",fontSize:"10px",color:"#6B7280"};function jc(){var u,m,b;const e=S(v=>v.activeView),r=S(v=>v.model),n=S(v=>v.selectedElementId),o=S(v=>v.activeMode),a=S(v=>v.setActiveMode),s=S(v=>v.selectElement),i=S(v=>v.setActiveView),l=Ce(),c=[],d=(()=>{switch(e.type){case"diagram":return;case"element-detail":return{label:"Model Explorer",icon:"☰",onClick:()=>{a("catalog"),i({type:"welcome"}),l("/catalog")}};case"dsm":return{label:"DSM Analysis",icon:"▦",onClick:()=>{i({type:"dsm"}),l("/dsm")}};case"traceability":return{label:"Traceability Matrix",icon:"☷",onClick:()=>{i({type:"traceability"}),l("/traceability")}};case"ontology":case"ontology-detail":return{label:"Ontology Explorer",icon:"◉",onClick:()=>{i({type:"ontology"}),l("/ontology")}};case"scenario-editor":return{label:"Use Cases",icon:"▶",onClick:()=>{a("scenario"),i({type:"scenario-editor"}),l("/use-cases")}};case"dhf-dashboard":case"dhf-dashboard-legacy":case"dhf-document":return{label:"Documents",icon:"⊞",onClick:()=>{a("dhf"),i({type:"dhf-dashboard"}),l("/dhf")}};case"welcome":return o==="diagram"?{label:"Viewpoints",icon:"⊟",onClick:()=>l("/diagrams")}:o==="catalog"?{label:"Model Explorer",icon:"☰",onClick:()=>l("/catalog")}:void 0;default:return}})();switch(e.type){case"diagram":{const v=Qt(r,e.diagramId);if(v){const w=v.viewpointId==="__model"?"Unassigned Views":((m=(u=r==null?void 0:r.viewpoints)==null?void 0:u.find(N=>N.id===v.viewpointId))==null?void 0:m.label)||v.viewpointId,g=(b=r==null?void 0:r.viewpoints)==null?void 0:b.find(N=>N.id===v.viewpointId);c.push({label:g?`${g.id} · ${w}`:w});const h=v.viewKind?Kn[v.viewKind]:void 0,y=$e[v.diagramType],B=(h==null?void 0:h.label)??(y==null?void 0:y.code)??v.diagramType;c.push({label:`${v.shortId??v.id} · ${B}: ${v.name}`})}break}case"element-detail":{const v=e.elementId,w=r==null?void 0:r.elements[v];if(w){const g=w.shortId??w.id,h=g.split("-")[0];c.push({label:"Catalog",onClick:()=>l("/catalog")}),c.push({label:h,onClick:()=>l(`/catalog/${h}`)}),c.push({label:`${g} ${w.name}`})}break}}if(n&&r&&e.type!=="element-detail"){const v=r.elements[n];v&&c.push({label:v.name,onClick:()=>s(v.id)})}return!d&&c.length===0?null:t.jsxs("div",{className:"flex items-center gap-1 px-4 py-1.5",style:{background:"#FAFAF8",borderBottom:"1px solid #E5E5E0"},children:[d&&t.jsxs("button",{type:"button",onClick:d.onClick,className:"flex items-center gap-1 rounded-md",title:`Active workspace: ${d.label}`,style:{padding:"4px 8px",background:"#E8FBF5",border:"1px solid #A7F3D0",color:"#0F766E",fontSize:"11px",fontWeight:700,letterSpacing:"0.01em",cursor:"pointer"},children:[t.jsx("span",{"aria-hidden":"true",style:{fontSize:"13px",lineHeight:1},children:d.icon}),d.label]}),c.map((v,w)=>t.jsxs("span",{className:"flex items-center gap-1",children:[(d||w>0)&&t.jsx("span",{className:"text-xs",style:{color:"#D1D5DB"},children:"/"}),v.onClick?t.jsx("button",{className:"text-xs px-1 py-0.5 rounded transition-colors",style:{color:"#374151"},onMouseEnter:g=>g.currentTarget.style.background="#F0F0ED",onMouseLeave:g=>g.currentTarget.style.background="transparent",onClick:v.onClick,children:v.label}):t.jsx("span",{className:"text-xs",style:{color:w===c.length-1?"#374151":"#9CA3AF"},children:v.label})]},w)),t.jsx("div",{className:"flex-1"}),t.jsxs("kbd",{className:"px-1.5 py-0.5 rounded text-xs",style:{background:"#F0F0ED",color:"#9CA3AF",fontSize:"9px"},children:["⌘","K"]})]})}const zr="memo-onboarding-completed",it=[{title:"Welcome to MEMO Architect",description:"MEMO is a model-based systems engineering tool for medical devices. You'll land on the Dashboard — it shows your model health and suggests the next action. Let's take a quick tour.",target:"center",position:"center"},{title:"Model Explorer",description:"Browse your model elements organized by architecture layer. Switch to Views tab to see diagrams grouped by viewpoint.",target:"left panel",position:"left"},{title:"Unified Canvas",description:"The center area renders your selected view — diagrams, action flows, DSM matrices, and more.",target:"center canvas",position:"center"},{title:"Properties Panel",description:"View and edit element properties, relationships, and attributes. Select any element to see its details.",target:"right panel",position:"right"},{title:"Tools Menu",description:"Access analysis tools from the toolbar: DSM, Trace Matrix, Action Flow, Ontology, Scenarios, Diff, Compliance, and Stats.",target:"toolbar",position:"center"},{title:"Command Palette",description:"Press Cmd+K (or Ctrl+K) to quickly search elements, diagrams, viewpoints, and tools.",target:"keyboard shortcut",position:"center"},{title:"Working Sets",description:"Save and restore your workspace layout using the Sets tab in the Explorer panel. Great for switching between review contexts.",target:"explorer sets tab",position:"left"},{title:"You're all set!",description:"Start from the Dashboard — it shows your model status and suggests the next step. Use the Workflow Wizard (Tools menu) for a guided path through requirements, risk, and verification.",target:"center",position:"center"}];function Dc(){const[e,r]=p.useState(!1),[n,o]=p.useState(0);p.useEffect(()=>{try{if(!localStorage.getItem(zr)){const b=setTimeout(()=>r(!0),800);return()=>clearTimeout(b)}}catch{}},[]);const a=p.useCallback(()=>{r(!1);try{localStorage.setItem(zr,"true")}catch{}},[]),s=p.useCallback(()=>{n>=it.length-1?a():o(n+1)},[n,a]),i=p.useCallback(()=>{n>0&&o(n-1)},[n]);if(!e)return null;const l=it[n],c=n===it.length-1,d=n===0,u=()=>{switch(l.position){case"left":return{left:"300px",top:"50%",transform:"translateY(-50%)"};case"right":return{right:"300px",top:"50%",transform:"translateY(-50%)"};case"bottom":return{left:"50%",bottom:"80px",transform:"translateX(-50%)"};case"center":default:return{left:"50%",top:"50%",transform:"translate(-50%, -50%)"}}};return t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"fixed inset-0 z-50",style:{background:"rgba(0,0,0,0.4)",backdropFilter:"blur(2px)"},onClick:a}),t.jsxs("div",{className:"fixed z-50 rounded-xl p-5 max-w-sm",style:{...u(),background:"#FFFFFF",boxShadow:"0 8px 32px rgba(0,0,0,0.2)",border:"1px solid #E5E5E0"},onClick:m=>m.stopPropagation(),children:[t.jsx("div",{className:"flex items-center gap-1 mb-3",children:it.map((m,b)=>t.jsx("div",{className:"h-1 rounded-full transition-all",style:{width:b===n?"20px":"8px",background:b===n?"#2DD4A8":b<n?"#2DD4A880":"#E5E5E0"}},b))}),t.jsx("h3",{className:"text-sm font-semibold mb-1.5",style:{color:"#1B3A4B"},children:l.title}),t.jsx("p",{className:"text-xs leading-relaxed mb-4",style:{color:"#6B7280"},children:l.description}),t.jsxs("div",{className:"flex items-center gap-2",children:[!d&&t.jsx("button",{onClick:i,className:"px-3 py-1.5 text-xs rounded-lg",style:{background:"#F3F4F6",color:"#6B7280"},children:"Back"}),t.jsx("div",{className:"flex-1"}),t.jsx("button",{onClick:a,className:"px-3 py-1.5 text-xs rounded-lg",style:{color:"#9CA3AF"},children:"Skip tour"}),t.jsx("button",{onClick:s,className:"px-4 py-1.5 text-xs font-medium rounded-lg",style:{background:"#2DD4A8",color:"#FFFFFF"},children:c?"Get started":"Next"})]}),t.jsxs("div",{className:"text-center mt-2",style:{color:"#D1D5DB",fontSize:"10px"},children:[n+1," of ",it.length]})]})]})}function Bc(){const e=S(a=>a.restartRequired);if(!e)return null;const r=e.reason==="dependency-closure-uncomputable",n=e.reason==="transaction-independence-uncomputable",o=r?"Dependency closure could not be rebuilt":n?"Concurrent writes could not be distinguished":e.reason==="ontology-selection-changed"?"Ontology selection changed":"Ontology source changed";return t.jsx("div",{style:{position:"fixed",inset:0,zIndex:9999,display:"flex",alignItems:"center",justifyContent:"center",background:"rgba(15, 23, 42, 0.85)",backdropFilter:"blur(4px)"},children:t.jsxs("div",{style:{background:"#1E293B",border:"1px solid #F59E0B",borderRadius:"12px",padding:"32px 40px",maxWidth:"480px",width:"90%",textAlign:"center",color:"#F8FAFC",boxShadow:"0 25px 50px rgba(0,0,0,0.5)"},children:[t.jsx("div",{style:{fontSize:"2rem",marginBottom:"12px"},children:"⚠️"}),t.jsx("div",{style:{fontSize:"1.1rem",fontWeight:600,marginBottom:"8px",color:"#F59E0B"},children:"Restart Required"}),t.jsx("div",{style:{fontSize:"0.875rem",color:"#CBD5E1",marginBottom:"4px"},children:o}),t.jsx("div",{style:{fontSize:"0.75rem",color:"#94A3B8",marginBottom:"24px",fontFamily:"monospace"},children:e.changedFile}),t.jsx("div",{style:{fontSize:"0.875rem",color:"#E2E8F0",marginBottom:"24px",lineHeight:1.6},children:e.instruction}),t.jsx("div",{style:{fontSize:"0.8rem",color:"#FBBF24"},role:"status",children:r?"Model mutations are locked — Relaunch Memo Architect after fixing the source.":"Reconnecting to the rebuilt runtime…"})]})})}function Fc(){const e=S(s=>s.editConflict),r=S(s=>s.setEditConflict);if(!e)return null;const n=e.reason==="stale-identity",o=JSON.stringify(e.rejectedDraft,null,2),a=()=>{const s=URL.createObjectURL(new Blob([o],{type:"application/json"})),i=document.createElement("a");i.href=s,i.download=`rejected-edit-${e.rejectedCommandId}.json`,i.click(),URL.revokeObjectURL(s)};return t.jsxs("aside",{role:"alert",style:{position:"fixed",right:20,bottom:20,zIndex:9e3,maxWidth:520,padding:16,borderRadius:10,border:"1px solid #FCA5A5",background:"#FEF2F2",color:"#7F1D1D",boxShadow:"0 12px 30px rgba(0,0,0,.18)"},children:[t.jsx("strong",{children:n?"Edit rejected — it targeted an older model revision":"Edit rejected — file changed externally"}),t.jsx("div",{style:{marginTop:6,fontFamily:"monospace",fontSize:12},children:e.sourceFile}),t.jsx("div",{style:{marginTop:6,fontSize:13},children:n?"No source was overwritten. The element this edit addressed is not in the current revision, so applying it could have changed the wrong declaration. Reopen the element and repeat the edit.":"No source was overwritten. The disk version was reloaded; edits to other files remain available."}),e.detail&&t.jsx("div",{style:{marginTop:6,fontSize:12,color:"#9F1239"},children:e.detail}),t.jsxs("div",{style:{display:"flex",gap:8,flexWrap:"wrap",marginTop:12},children:[t.jsx("button",{onClick:()=>void navigator.clipboard.writeText(o),children:"Copy draft"}),t.jsx("button",{onClick:a,children:"Download rejected edit"}),t.jsx("button",{onClick:()=>si(e.sourceFile),children:"Reveal file"}),t.jsx("button",{onClick:()=>r(null),children:"Dismiss"})]})]})}const Ac=20;function Nc(){const e=S(u=>u.sourceCoherence),[r,n]=p.useState(!1);if(!e)return null;const{files:o,diagnostics:a,lastGoodRevision:s}=e,i=a.slice(0,Ac),l=a.length-i.length,c=a.length||o.length,d=`${c} source ${c===1?"error":"errors"} — showing the last model that compiled`;return t.jsxs("div",{style:{position:"fixed",bottom:16,left:"50%",transform:"translateX(-50%)",zIndex:9e3,display:"flex",flexDirection:"column",alignItems:"center",gap:8},children:[r&&t.jsxs("div",{style:{maxWidth:620,width:"calc(100vw - 32px)",maxHeight:"40vh",overflowY:"auto",background:"#1E293B",border:"1px solid #EF4444",borderRadius:10,padding:"12px 16px",color:"#F8FAFC",boxShadow:"0 12px 32px rgba(0,0,0,0.35)"},children:[t.jsx("div",{style:{fontSize:"0.85rem",fontWeight:600,color:"#FCA5A5",marginBottom:4},children:s>0?`Showing the last model that compiled (revision ${s})`:"Showing everything that parsed"}),t.jsxs("div",{style:{fontSize:"0.75rem",color:"#CBD5E1",marginBottom:i.length?8:0},children:[o.length===1?o[0]:`${o.length} files`," did not parse. Edits are held until the source compiles again — no restart needed."]}),i.map((u,m)=>t.jsxs("div",{style:{fontSize:"0.7rem",color:"#94A3B8",fontFamily:"monospace",lineHeight:1.5},children:[u.file,u.line!==void 0?`:${u.line}`:"",u.column!==void 0?`:${u.column}`:""," — ",u.message]},`${u.file}:${u.line??0}:${m}`)),l>0&&t.jsxs("div",{style:{fontSize:"0.7rem",color:"#64748B",marginTop:4},children:["and ",l," more"]})]}),t.jsxs("button",{type:"button",role:"status","aria-live":"polite","aria-expanded":r,"aria-label":d,title:d,onClick:()=>n(u=>!u),style:{display:"flex",alignItems:"center",gap:6,background:"#7F1D1D",border:"1px solid #EF4444",borderRadius:999,padding:"6px 12px",color:"#FEE2E2",cursor:"pointer",fontSize:"0.75rem",fontWeight:600,boxShadow:"0 6px 18px rgba(0,0,0,0.35)"},children:[t.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none","aria-hidden":"true",children:[t.jsx("circle",{cx:"12",cy:"12",r:"9",stroke:"#FCA5A5",strokeWidth:"2"}),t.jsx("path",{d:"M12 7v6",stroke:"#FCA5A5",strokeWidth:"2",strokeLinecap:"round"}),t.jsx("circle",{cx:"12",cy:"16.5",r:"1.1",fill:"#FCA5A5"})]}),c]})]})}function _o({size:e=150,opacity:r=.55}){return t.jsxs("div",{"aria-label":"MEMO Architect",title:"MEMO Architect",style:{position:"relative",width:e,height:Math.round(e*.62),overflow:"hidden",flexShrink:0,opacity:r},children:[t.jsx("img",{src:"/logo.png",alt:"","aria-hidden":"true",style:{display:"block",width:e,height:e,objectFit:"contain",transform:`translateY(-${Math.round(e*.12)}px)`,mixBlendMode:"multiply"}}),t.jsx("span",{style:{position:"absolute",left:"59%",top:Math.round(e*.47),color:"#8B949E",fontSize:Math.max(12,Math.round(e*.09)),fontWeight:600,letterSpacing:"0.02em",whiteSpace:"nowrap"},children:"Architect"})]})}function Tc(e){return Le[e]?Le[e]:e?e.split(/[_-]/).map(r=>r.charAt(0).toUpperCase()+r.slice(1)).join(" "):"Other"}function Rc(){const e=S(s=>s.model),r=Ce(),n=p.useMemo(()=>{if(!e)return[];const s={};for(const c of Object.values(e.elements)){const d=pd(c.kind),u=md(d);s[u]||(s[u]={count:0,kinds:new Set,layer:c.layer}),s[u].count++,s[u].kinds.add(c.kind)}const i=new Map;for(const c of Object.entries(s)){const d=c[1].layer;i.has(d)||i.set(d,[]),i.get(d).push(c)}for(const c of i.values())c.sort((d,u)=>u[1].count-d[1].count);const l=new Map(Te.map((c,d)=>[c,d]));return[...i.entries()].sort(([c],[d])=>{const u=l.get(c)??Te.length,m=l.get(d)??Te.length;return u!==m?u-m:c.localeCompare(d)})},[e]),o=p.useMemo(()=>n.flatMap(([,s])=>s),[n]);if(!e)return t.jsx("div",{style:{flex:1,display:"flex",alignItems:"center",justifyContent:"center",background:"#F7F7F5"},children:t.jsx("p",{style:{color:f.muted,fontSize:I.sm},children:"Loading…"})});const a=Object.keys(e.elements).length;return t.jsxs("div",{style:{flex:1,overflow:"auto",background:"#F7F7F5",padding:"32px 40px"},children:[t.jsxs("div",{style:{display:"flex",alignItems:"flex-start",justifyContent:"space-between",marginBottom:"24px"},children:[t.jsxs("div",{children:[t.jsx("h1",{style:{fontSize:"20px",fontWeight:700,color:f.primary,margin:"0 0 4px"},children:"Catalog"}),t.jsxs("p",{style:{color:f.muted,fontSize:I.sm,margin:0},children:[a," elements across ",o.length," families"]})]}),t.jsx(_o,{size:132})]}),n.map(([s,i])=>{const l=ce[s]??"#9CA3AF";return t.jsxs("div",{style:{marginBottom:"28px"},children:[t.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px",marginBottom:"12px"},children:[t.jsx("span",{style:{width:"8px",height:"8px",borderRadius:"50%",background:l,flexShrink:0}}),t.jsx("h2",{style:{fontSize:"13px",fontWeight:700,color:f.secondary,textTransform:"uppercase",letterSpacing:"0.04em",margin:0},children:Tc(s)})]}),t.jsx("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(200px, 1fr))",gap:"12px"},children:i.map(([c,d])=>t.jsx(Ic,{family:c,count:d.count,kinds:d.kinds,color:l,onClick:()=>r(fd(c))},c))})]},s||"__none")})]})}function Ic({family:e,count:r,kinds:n,color:o,onClick:a}){return t.jsxs("div",{onClick:a,style:{background:f.surface,border:`1px solid ${f.border}`,borderRadius:"10px",padding:"16px",cursor:"pointer",transition:"box-shadow 0.15s, border-color 0.15s",borderTop:`3px solid ${o}`},onMouseEnter:s=>{s.currentTarget.style.boxShadow="0 4px 12px rgba(0,0,0,0.08)",s.currentTarget.style.borderTopColor=o},onMouseLeave:s=>{s.currentTarget.style.boxShadow="none"},children:[t.jsx("div",{style:{fontWeight:700,fontSize:"15px",color:f.primary,marginBottom:"4px"},children:e}),t.jsx("div",{style:{fontSize:"22px",fontWeight:800,color:o,lineHeight:1,marginBottom:"6px"},children:r}),t.jsxs("div",{style:{fontSize:"11px",color:f.muted,lineHeight:"1.5"},children:[Array.from(n).slice(0,3).join(", "),n.size>3&&` +${n.size-3} more`]})]})}function Mc(){var a;const e=S(s=>s.model),r=Ce(),n=p.useMemo(()=>{var B;const s=(e==null?void 0:e.diagrams)??[],i=new Map,l=new Map(((e==null?void 0:e.viewpoints)??[]).map(N=>[N.id,N]));for(const N of s){const D=N.viewpointIds;for(const A of D!=null&&D.length?D:[N.viewpointId]){const F=(B=e==null?void 0:e.viewpoints)==null?void 0:B.find(T=>T.id===A),C=F?A:Ne,k=i.get(C);k?k.items.push(N):i.set(C,{id:C,label:(F==null?void 0:F.label)??"Uncategorized",items:[N]})}}const c=Ao([...l.values()]),{rootViewpoints:d,viewpointChildren:u}=To(c),m=[],b=(N,D,A)=>{if(!A.has(N.id)){A.add(N.id),m.push({viewpoint:N,depth:D});for(const F of u.get(N.id)??[])b(F,D+1,A)}},v=new Set;for(const N of d)b(N,0,v);const w=No(m.map(N=>N.viewpoint.label)),g=N=>{var D;return(((D=i.get(N))==null?void 0:D.items.length)??0)>0||(u.get(N)??[]).some(A=>g(A.id))},h=m.map((N,D)=>{var A;return{...i.get(N.viewpoint.id)??{id:N.viewpoint.id,label:N.viewpoint.label,items:[]},...N.viewpoint,label:w[D],depth:N.depth,childCount:(u.get(N.viewpoint.id)??[]).length,items:[...((A=i.get(N.viewpoint.id))==null?void 0:A.items)??[]].sort((F,C)=>F.name.localeCompare(C.name))}}).filter(N=>g(N.id)),y=i.get(Ne);return y?[...h,{...y,depth:0,childCount:0,items:[...y.items].sort((N,D)=>N.name.localeCompare(D.name))}]:h},[e]);if(!e)return t.jsx("div",{style:{flex:1,display:"flex",alignItems:"center",justifyContent:"center",background:"#F7F7F5"},children:t.jsx("p",{style:{color:f.muted,fontSize:I.sm},children:"Loading…"})});const o=((a=e.diagrams)==null?void 0:a.length)??0;return t.jsxs("div",{style:{flex:1,overflow:"auto",background:"#F7F7F5",padding:"32px 40px"},children:[t.jsxs("div",{style:{display:"flex",alignItems:"flex-start",justifyContent:"space-between",marginBottom:"24px"},children:[t.jsxs("div",{children:[t.jsx("h1",{style:{fontSize:"20px",fontWeight:700,color:f.primary,margin:"0 0 4px"},children:"Viewpoints"}),t.jsxs("p",{style:{color:f.muted,fontSize:I.sm,margin:0},children:[o," model ",o===1?"view":"views"," across ",n.length," ",n.length===1?"viewpoint":"viewpoints"]})]}),t.jsx(_o,{size:132})]}),o===0&&t.jsx("p",{style:{color:f.muted,fontSize:I.sm},children:"This model defines no model views yet."}),n.map(s=>t.jsxs("section",{style:{marginBottom:"28px",marginLeft:s.depth?`${s.depth*20}px`:0,paddingLeft:s.depth?"14px":0,borderLeft:s.depth?`2px solid ${f.border}`:"none"},children:[t.jsxs("h2",{style:{fontSize:"11px",fontWeight:700,color:f.muted,textTransform:"uppercase",letterSpacing:"0.06em",margin:"0 0 10px 0"},children:[s.label,t.jsx("code",{style:{marginLeft:8,color:f.faint,textTransform:"none"},children:s.id===Ne?"no viewpoint":s.id}),t.jsx("span",{style:{marginLeft:8,fontWeight:400},children:s.items.length}),s.childCount>0&&t.jsxs("span",{style:{marginLeft:8,fontWeight:400,textTransform:"none",color:f.faint},children:["frames ",s.childCount," ",s.childCount===1?"viewpoint":"viewpoints"]})]}),s.items.length===0?t.jsx("p",{style:{color:f.faint,fontSize:I.sm,margin:"0 0 4px"},children:"No views of its own — the viewpoints it frames are below."}):t.jsx("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(220px, 1fr))",gap:"12px"},children:s.items.map(i=>t.jsx(_c,{diagram:i,onClick:()=>r(Fo(i.diagramType,i.shortId??i.id))},i.id))})]},s.id))]})}function _c({diagram:e,onClick:r}){var c;const n=e.viewKind?Kn[e.viewKind]:void 0,o=$e[e.diagramType],a=n??o,s=(n==null?void 0:n.label)??(o==null?void 0:o.code),i=(a==null?void 0:a.color)??"#6B7280",l=((c=e.elementIds)==null?void 0:c.length)??0;return t.jsxs("div",{onClick:r,role:"button",tabIndex:0,onKeyDown:d=>{(d.key==="Enter"||d.key===" ")&&(d.preventDefault(),r())},style:{background:f.surface,border:`1px solid ${f.border}`,borderRadius:"10px",padding:"14px 16px",cursor:"pointer",transition:"box-shadow 0.15s",borderTop:`3px solid ${i}`},onMouseEnter:d=>{d.currentTarget.style.boxShadow="0 4px 12px rgba(0,0,0,0.08)"},onMouseLeave:d=>{d.currentTarget.style.boxShadow="none"},children:[t.jsxs("div",{style:{display:"flex",alignItems:"center",gap:6,marginBottom:6},children:[a&&t.jsx("span",{style:{background:i+"18",color:i,borderRadius:4,padding:"1px 5px",fontSize:"10px",fontWeight:700},children:s}),e.auto&&t.jsx("span",{style:{fontSize:"10px",color:f.muted},children:"auto"})]}),t.jsx("div",{style:{fontWeight:600,fontSize:"14px",color:f.primary,marginBottom:4},children:e.name}),t.jsx("div",{style:{fontFamily:"ui-monospace, SFMono-Regular, Menlo, monospace",fontSize:"10px",color:f.faint,marginBottom:4},children:e.shortId??e.id}),t.jsxs("div",{style:{fontSize:"11px",color:f.muted,lineHeight:1.5},children:[(a==null?void 0:a.fullName)??e.diagramType,l>0&&` · ${l} element${l===1?"":"s"}`]})]})}function Pc({family:e}){const r=S(c=>c.model),n=Ce(),[o,a]=p.useState(""),s=p.useMemo(()=>r?Object.values(r.elements).filter(c=>{const d=c.shortId??"";return d.startsWith(e+"-")||d.startsWith(e+" ")}):[],[r,e]),i=p.useMemo(()=>{if(!o.trim())return s;const c=o.toLowerCase();return s.filter(d=>d.name.toLowerCase().includes(c)||(d.shortId??"").toLowerCase().includes(c)||d.kind.toLowerCase().includes(c))},[s,o]),l=p.useMemo(()=>{const c={};for(const d of s)c[d.kind]=(c[d.kind]??0)+1;return c},[s]);return r?s.length===0?t.jsx(vn,{family:e,children:t.jsxs("p",{style:{color:f.muted,fontSize:I.sm},children:["No elements found with family prefix ",t.jsx("code",{children:e}),"."]})}):t.jsxs(vn,{family:e,children:[t.jsx("div",{style:{display:"flex",flexWrap:"wrap",gap:"6px",marginBottom:"16px"},children:Object.entries(l).map(([c,d])=>{const u=ce[c]??"#9CA3AF";return t.jsxs("span",{style:{fontSize:I.xs,padding:"2px 8px",borderRadius:"12px",background:u+"20",color:u,border:`1px solid ${u}40`,fontWeight:500},children:[c," · ",d]},c)})}),t.jsx("input",{type:"search",placeholder:`Search ${s.length} elements…`,value:o,onChange:c=>a(c.target.value),style:{width:"100%",boxSizing:"border-box",padding:"7px 12px",fontSize:I.sm,border:`1px solid ${f.border}`,borderRadius:"6px",background:f.surface,color:f.primary,outline:"none",marginBottom:"12px"}}),t.jsxs("div",{style:{background:f.surface,border:`1px solid ${f.border}`,borderRadius:"8px",overflow:"hidden"},children:[t.jsxs("div",{style:{display:"grid",gridTemplateColumns:"140px 1fr 120px 120px",padding:"8px 16px",background:f.surfaceAlt,borderBottom:`1px solid ${f.border}`,fontSize:I.xs,fontWeight:600,color:f.muted,gap:"12px"},children:[t.jsx("span",{children:"ID"}),t.jsx("span",{children:"Name"}),t.jsx("span",{children:"Kind"}),t.jsx("span",{children:"Layer"})]}),i.length===0?t.jsxs("div",{style:{padding:"24px 16px",color:f.muted,fontSize:I.sm,textAlign:"center"},children:['No results for "',o,'"']}):i.map((c,d)=>t.jsx(Oc,{element:c,zebra:d%2===1,onClick:()=>n(Bo(c.shortId??c.id))},c.id))]}),t.jsxs("p",{style:{color:f.faint,fontSize:"11px",marginTop:"8px"},children:[i.length," of ",s.length," elements shown"]})]}):t.jsx(vn,{family:e,children:t.jsx("p",{style:{color:f.muted,fontSize:I.sm},children:"Loading model…"})})}function Oc({element:e,zebra:r,onClick:n}){const o=ce[e.layer]??"#9CA3AF";return t.jsxs("div",{onClick:n,style:{display:"grid",gridTemplateColumns:"140px 1fr 120px 120px",padding:"10px 16px",gap:"12px",background:r?"#FAFAF8":f.surface,cursor:"pointer",borderBottom:`1px solid ${f.borderLight}`,alignItems:"center",transition:"background 0.1s"},onMouseEnter:a=>a.currentTarget.style.background="#F0FDF4",onMouseLeave:a=>a.currentTarget.style.background=r?"#FAFAF8":f.surface,children:[t.jsx("code",{style:{fontSize:"11px",color:"#2DD4A8",fontWeight:600,fontFamily:"monospace"},children:e.shortId??e.id}),t.jsx("span",{style:{fontSize:I.sm,color:f.primary,fontWeight:500,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.name}),t.jsx("span",{style:{fontSize:I.xs,color:f.secondary},children:e.kind}),t.jsx("span",{style:{fontSize:"11px",color:o,fontWeight:500,background:o+"15",padding:"2px 6px",borderRadius:"4px",width:"fit-content"},children:e.layer})]})}function vn({family:e,children:r}){const n=Ce();return t.jsxs("div",{style:{flex:1,overflow:"auto",background:"#F7F7F5",padding:"32px 40px"},children:[t.jsxs("nav",{style:{fontSize:I.xs,color:f.muted,marginBottom:"20px"},children:[t.jsx("button",{onClick:()=>n("/catalog"),style:{background:"none",border:"none",color:"#2DD4A8",cursor:"pointer",padding:0,fontSize:I.xs},children:"Catalog"})," / ",t.jsx("span",{style:{color:f.primary,fontWeight:600},children:e})]}),t.jsx("h1",{style:{fontSize:"20px",fontWeight:700,color:f.primary,marginBottom:"6px",marginTop:0},children:e}),r]})}const zc=p.lazy(()=>de(()=>import("./DiagramEditor-icnDwdxM.js"),__vite__mapDeps([3,1,2,4])).then(e=>({default:e.DiagramEditor}))),Uc=p.lazy(()=>de(()=>import("./DSMView-BsjhUbpW.js").then(e=>e.D),__vite__mapDeps([5,1,2,4])).then(e=>({default:e.DSMView}))),Lc=p.lazy(()=>de(()=>import("./OntologyViewer-0BJ2jMZ8.js"),__vite__mapDeps([6,1,2])).then(e=>({default:e.OntologyViewer}))),qc=p.lazy(()=>de(()=>import("./TraceabilityMatrix-DDoHYsCP.js"),__vite__mapDeps([7,1,2,5,4])).then(e=>({default:e.TraceabilityMatrix}))),$c=p.lazy(()=>de(()=>import("./ScenarioEditor-CiHaTvVY.js"),__vite__mapDeps([0,1,2])).then(e=>({default:e.ScenarioEditor}))),Vc=p.lazy(()=>de(()=>import("./ModelDiff-H5nxOavB.js"),__vite__mapDeps([8,1,2])).then(e=>({default:e.ModelDiff}))),Wc=p.lazy(()=>de(()=>import("./ComplianceWizard-CYBizPbC.js"),__vite__mapDeps([9,1,2])).then(e=>({default:e.ComplianceWizard}))),Hc=p.lazy(()=>de(()=>import("./StatisticsDashboard-w2dtCD94.js"),__vite__mapDeps([10,1,2])).then(e=>({default:e.StatisticsDashboard}))),Kc=p.lazy(()=>de(()=>import("./DhfDashboard-BdhBA4OL.js"),__vite__mapDeps([11,1,2])).then(e=>({default:e.DhfDashboard}))),Gc=p.lazy(()=>de(()=>import("./DhfWorkbench-tnIpEFmu.js"),__vite__mapDeps([12,1,2])).then(e=>({default:e.DhfWorkbench}))),Yc=p.lazy(()=>de(()=>import("./AiWorkspace-GFHs046m.js"),__vite__mapDeps([13,1,2])).then(e=>({default:e.AiWorkspace}))),Po=p.lazy(()=>de(()=>import("./ElementDetailView-Crpltlrz.js"),__vite__mapDeps([14,1,2])).then(e=>({default:e.ElementDetailView}))),xe=p.lazy(()=>de(()=>import("./Dashboard-rdbfFJYx.js"),__vite__mapDeps([15,1,2])).then(e=>({default:e.Dashboard}))),Jc=p.lazy(()=>de(()=>import("./ReviewDashboard-Dl-YTC4_.js"),__vite__mapDeps([16,1,2])).then(e=>({default:e.ReviewDashboard}))),Xc=p.lazy(()=>de(()=>import("./WorkflowWizard-Br1zPSLC.js"),__vite__mapDeps([17,1,2])).then(e=>({default:e.WorkflowWizard}))),Qc=p.lazy(()=>de(()=>import("./TabularView-CFy0PK1L.js"),__vite__mapDeps([18,1,2])).then(e=>({default:e.TabularView}))),Zc=p.lazy(()=>de(()=>import("./ImportView-1vrZ1CGB.js"),__vite__mapDeps([19,1,2])).then(e=>({default:e.ImportView}))),eu=p.lazy(()=>de(()=>import("./AnalysisWorkspace-BfZ4GYza.js"),__vite__mapDeps([20,1,2])).then(e=>({default:e.AnalysisWorkspace}))),tu=p.lazy(()=>de(()=>import("./UiScreensWorkspace-DOxjCMG9.js"),__vite__mapDeps([21,1,2,22,4])).then(e=>({default:e.UiScreensWorkspace})));function He(){const e=S(c=>c.activeView),r=S(c=>c.model),n=S(c=>c.activeMode);S(c=>c.selectedViewpointId);const o=S(c=>c.selectedDiagramId),a=S(c=>c.selectDiagram),s=S(c=>c.setActiveMode),i=S(c=>c.setExplorerTab);p.useEffect(()=>{var c;if(e.type==="diagram"){o!==e.diagramId&&a(e.diagramId);const d=(c=r==null?void 0:r.diagrams)==null?void 0:c.find(u=>u.id===e.diagramId);d!=null&&d.viewpointId&&d.viewpointId!=="__model"&&n!=="scenario"&&(n!=="diagram"&&s("diagram"),i("views"))}},[e,n,r,o,a,s,i]);const l=()=>{switch(e.type){case"diagram":return t.jsx(zc,{diagramId:e.diagramId});case"dsm":return t.jsx(Uc,{});case"traceability":return ue("analysis")?t.jsx(qc,{}):t.jsx(xe,{});case"tabular":return t.jsx(Qc,{});case"ontology":case"ontology-detail":return ue("ontology")?t.jsx(Lc,{}):t.jsx(xe,{});case"scenario-editor":return t.jsx($c,{});case"model-diff":return ue("model-tools")?t.jsx(Vc,{}):t.jsx(xe,{});case"compliance-wizard":return ue("model-tools")?t.jsx(Wc,{}):t.jsx(xe,{});case"statistics":return ue("model-tools")?t.jsx(Hc,{}):t.jsx(xe,{});case"dhf-dashboard":case"dhf-document":return t.jsx(Gc,{});case"dhf-dashboard-legacy":return t.jsx(Kc,{});case"ai":case"ask":case"sysml-generator":return ue("ai-tools")?t.jsx(Yc,{}):t.jsx(xe,{});case"element-detail":return t.jsx(Po,{});case"dashboard":return t.jsx(xe,{});case"review-dashboard":return ue("model-tools")?t.jsx(Jc,{}):t.jsx(xe,{});case"workflow-wizard":return ue("model-tools")?t.jsx(Xc,{}):t.jsx(xe,{});case"import":return ue("import")?t.jsx(Zc,{}):t.jsx(xe,{});case"analysis":return ue("analysis")?t.jsx(eu,{}):t.jsx(xe,{});case"ui-screens":return t.jsx(tu,{});case"welcome":default:return t.jsx(Ur,{})}};return(e.type==="welcome"||e.type==="dashboard")&&e.type==="welcome"?t.jsx(Ur,{}):t.jsx(p.Suspense,{fallback:t.jsx(Oo,{}),children:l()})}function Oo(){return t.jsx("div",{className:"flex-1 flex items-center justify-center",style:{background:"#F7F7F5"},children:t.jsxs("div",{className:"text-center",style:{color:"#9CA3AF"},children:[t.jsx("img",{src:"/logo.png",alt:"MEMO Logo",style:{width:"180px",marginBottom:"24px",opacity:.4,filter:"grayscale(1)"},className:"animate-pulse"}),t.jsx("div",{className:"text-xs mt-2",children:"Loading view..."})]})})}const Lt="linear-gradient(135deg, #EEF7F3 0%, #EAF2F8 55%, #F2EEF8 100%)";function Ur(){var c;const e=S(d=>d.model),r=S(d=>d.setActiveView),n=S(d=>d.selectElement),o=S(d=>d.setExplorerTab),a=((c=e==null?void 0:e.diagrams)==null?void 0:c.length)??0,s=e?Object.keys(e.elements).length:0,i=p.useMemo(()=>{if(!e)return[];const d=new Map;for(const u of Object.values(e.elements))d.has(u.kind)||d.set(u.kind,u);return Array.from(d.values()).slice(0,8)},[e]);function l(d){n(d),r({type:"element-detail",elementId:d})}return t.jsxs("div",{className:"flex-1 flex flex-col items-center justify-center overflow-auto",style:{background:Lt,padding:"48px 40px"},children:[t.jsx("img",{src:"/logo.png",alt:"MEMO Logo",style:{width:"520px",maxWidth:"80vw",maxHeight:"40vh",objectFit:"contain",marginBottom:"-36px",opacity:.97}}),t.jsx("h2",{style:{fontSize:"18px",fontWeight:700,color:"#1B3A4B",marginBottom:"6px",marginTop:0},children:"MEMO Architect"}),t.jsx("p",{style:{fontSize:"14px",color:"#4B6E80",marginTop:0,marginBottom:"24px",maxWidth:"480px",textAlign:"center",lineHeight:"1.6"},children:"SysML-based medical device architecture tool, aligned with ISO 14971 and IEC 62304."}),s>0&&t.jsxs("div",{className:"flex items-center gap-4 mb-6",style:{fontSize:"13px",color:"#4B6E80"},children:[t.jsxs("span",{children:[t.jsx("strong",{style:{color:"#1B3A4B"},children:s})," elements"]}),t.jsx("span",{style:{color:"#CBD5DB"},children:"·"}),t.jsxs("span",{children:[t.jsx("strong",{style:{color:"#1B3A4B"},children:a})," diagrams"]}),(e==null?void 0:e.relationships)&&t.jsxs(t.Fragment,{children:[t.jsx("span",{style:{color:"#CBD5DB"},children:"·"}),t.jsxs("span",{children:[t.jsx("strong",{style:{color:"#1B3A4B"},children:e.relationships.length})," relationships"]})]})]}),t.jsxs("div",{className:"flex gap-3 mb-8",children:[t.jsx("button",{onClick:()=>o("model"),className:"px-5 py-2.5 text-sm font-semibold rounded-lg transition-all",style:{background:"#1B3A4B",color:"#FFFFFF",border:"none",cursor:"pointer"},onMouseEnter:d=>d.currentTarget.style.background="#244D63",onMouseLeave:d=>d.currentTarget.style.background="#1B3A4B",children:"Browse Model"}),a>0&&t.jsxs("button",{onClick:()=>o("views"),className:"px-5 py-2.5 text-sm font-semibold rounded-lg transition-all",style:{background:"#2DD4A815",color:"#1B3A4B",border:"1px solid #2DD4A840",cursor:"pointer"},onMouseEnter:d=>d.currentTarget.style.background="#2DD4A830",onMouseLeave:d=>d.currentTarget.style.background="#2DD4A815",children:["View Diagrams (",a,")"]})]}),i.length>0&&t.jsxs("div",{style:{width:"100%",maxWidth:"680px"},children:[t.jsx("div",{style:{fontSize:"11px",fontWeight:600,color:"#7A9BAA",textTransform:"uppercase",letterSpacing:"0.08em",marginBottom:"10px"},children:"Quick Browse"}),t.jsx("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(180px, 1fr))",gap:"8px"},children:i.map(d=>t.jsxs("button",{onClick:()=>l(d.id),style:{textAlign:"left",background:"rgba(255,255,255,0.7)",border:"1px solid rgba(255,255,255,0.9)",borderRadius:"8px",padding:"10px 12px",cursor:"pointer",transition:"all 0.15s",backdropFilter:"blur(4px)"},onMouseEnter:u=>{u.currentTarget.style.background="rgba(255,255,255,0.95)",u.currentTarget.style.boxShadow="0 2px 8px rgba(0,0,0,0.08)",u.currentTarget.style.transform="translateY(-1px)"},onMouseLeave:u=>{u.currentTarget.style.background="rgba(255,255,255,0.7)",u.currentTarget.style.boxShadow="none",u.currentTarget.style.transform="none"},children:[t.jsx("div",{style:{fontSize:"10px",color:"#7A9BAA",fontWeight:600,textTransform:"uppercase",letterSpacing:"0.05em",marginBottom:"3px"},children:d.kind}),t.jsx("div",{style:{fontSize:"13px",color:"#1B3A4B",fontWeight:500,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:d.name}),d.shortId&&t.jsx("div",{style:{fontSize:"10px",color:"#9CB8C5",marginTop:"2px",fontFamily:"monospace"},children:d.shortId})]},d.id))})]})]})}function nu(){const e=S(u=>u.connected),r=S(u=>u.model),n=S(u=>u.activeView),o=S(u=>u.selectedElementIds),{pathname:a}=Be(),s=a.startsWith("/catalog"),i=S(u=>u.activeMode),l=S(u=>u.toggleGapBar);p.useEffect(()=>{const u=m=>{(m.metaKey||m.ctrlKey)&&m.shiftKey&&m.key==="P"&&(m.preventDefault(),l())};return window.addEventListener("keydown",u),()=>window.removeEventListener("keydown",u)},[l]);const c=n.type!=="dsm"&&n.type!=="traceability"&&n.type!=="dashboard"&&n.type!=="ai"&&n.type!=="ask"&&n.type!=="sysml-generator"&&n.type!=="analysis"&&n.type!=="ui-screens";p.useEffect(()=>{Ks()||fo()},[]);const d=r?Object.keys(r.elements).length:0;return e?r?d===0?t.jsxs("div",{className:"flex flex-col h-screen",style:{background:Lt,color:"#1a1a1a"},children:[t.jsx(At,{}),t.jsx("div",{className:"flex-1 flex items-center justify-center",children:t.jsxs("div",{className:"text-center max-w-lg",style:{lineHeight:"1.7"},children:[t.jsx("img",{src:"/logo.png",alt:"MEMO Logo",style:{width:"380px",maxWidth:"80vw",display:"block",margin:"0 auto -20px auto",opacity:.35,filter:"grayscale(1)"}}),t.jsx("h2",{style:{fontSize:"20px",fontWeight:700,color:"#1B3A4B",marginBottom:"8px"},children:"Your model is empty"}),t.jsxs("p",{style:{fontSize:"14px",color:"#4B6E80",marginBottom:"20px"},children:["Connected successfully — but no ",t.jsx("code",{children:".sysml"})," elements found yet."]}),t.jsxs("div",{style:{textAlign:"left",background:"rgba(255,255,255,0.65)",borderRadius:"10px",padding:"16px 20px",fontSize:"13px",border:"1px solid rgba(255,255,255,0.9)"},children:[t.jsx("p",{style:{fontWeight:600,marginBottom:"8px",color:"#1B3A4B"},children:"Get started:"}),t.jsxs("ol",{style:{paddingLeft:"18px",margin:0,color:"#4B6E80"},children:[t.jsxs("li",{style:{marginBottom:"6px"},children:["Create a ",t.jsx("code",{children:".sysml"})," file in your ",t.jsx("code",{children:"model/"})," directory"]}),t.jsxs("li",{style:{marginBottom:"6px"},children:["Import from CSV: ",t.jsx("code",{children:"pnpm memo import template elements"})]}),t.jsxs("li",{children:["Scaffold a new project: ",t.jsx("code",{children:"pnpm memo init my-device"})]})]})]})]})})]}):t.jsxs("div",{className:"flex flex-col h-screen",style:{background:"#F7F7F5",color:"#1a1a1a"},children:[t.jsx(su,{}),t.jsx(At,{}),t.jsx(Mi,{}),t.jsx(jc,{}),t.jsxs("div",{className:"flex flex-1 overflow-hidden",children:[c&&t.jsx(Ld,{}),t.jsx("div",{className:"flex-1 flex flex-col",style:{minWidth:0},children:t.jsxs(za,{children:[t.jsx(be,{path:"/catalog",element:t.jsx(Rc,{})}),t.jsx(be,{path:"/catalog/:family",element:t.jsx(ru,{})}),t.jsx(be,{path:"/catalog/:family/:shortId",element:t.jsx(ou,{})}),t.jsx(be,{path:"/diagrams",element:t.jsx(Mc,{})}),t.jsx(be,{path:"/diagrams/:diagramType/:diagramId",element:t.jsx(au,{})}),ki().map(u=>t.jsx(be,{path:u,element:t.jsx(He,{})},u)),t.jsx(be,{path:"/ontology/:packageName",element:t.jsx(He,{})}),t.jsx(be,{path:"/ontology/:packageName/:layerId",element:t.jsx(He,{})}),t.jsx(be,{path:"/dhf/:docId",element:t.jsx(He,{})}),t.jsx(be,{path:"*",element:t.jsx(He,{})})]})}),n.type!=="element-detail"&&n.type!=="scenario-editor"&&n.type!=="ontology"&&n.type!=="ontology-detail"&&n.type!=="ai"&&n.type!=="ask"&&n.type!=="sysml-generator"&&n.type!=="analysis"&&!s&&i!=="dhf"&&i!=="ontology"&&(o.size>=2?t.jsx(vc,{}):t.jsx(gc,{}))]}),t.jsx(wc,{}),t.jsx(kc,{}),t.jsx(Cc,{}),t.jsx(Dc,{}),t.jsx(Bc,{}),t.jsx(Nc,{}),t.jsx(Fc,{})]}):t.jsxs("div",{className:"flex flex-col h-screen",style:{background:Lt,color:"#1a1a1a"},children:[t.jsx(At,{}),t.jsx("div",{className:"flex-1 flex items-center justify-center",children:t.jsxs("div",{className:"text-center",children:[t.jsx("img",{src:"/logo.png",alt:"MEMO Logo",style:{width:"360px",maxWidth:"80vw",display:"block",margin:"0 auto -20px auto",opacity:.45,filter:"grayscale(1)"},className:"animate-pulse"}),t.jsx("h2",{style:{fontSize:"18px",fontWeight:700,color:"#1B3A4B",marginBottom:"6px"},children:"MEMO Architect"}),t.jsx("p",{style:{color:"#6B7280",fontSize:"14px"},children:"Loading model data…"})]})})]}):t.jsxs("div",{className:"flex flex-col h-screen",style:{background:Lt,color:"#1a1a1a"},children:[t.jsx(At,{}),t.jsx("div",{className:"flex-1 flex items-center justify-center",children:t.jsxs("div",{className:"text-center max-w-md",children:[t.jsx("img",{src:"/logo.png",alt:"MEMO Logo",style:{width:"360px",maxWidth:"80vw",display:"block",margin:"0 auto -20px auto",opacity:.45,filter:"grayscale(1)"},className:"animate-pulse"}),t.jsx("h2",{style:{fontSize:"18px",fontWeight:700,color:"#1B3A4B",marginBottom:"8px"},children:"MEMO Architect"}),t.jsx("p",{style:{color:"#6B7280",fontSize:"14px",marginBottom:"20px"},children:"Connecting to dev server…"}),t.jsxs("div",{style:{color:"#6B7280",fontSize:"13px",lineHeight:"1.6",textAlign:"left",background:"rgba(255,255,255,0.6)",borderRadius:"10px",padding:"16px 20px",border:"1px solid rgba(255,255,255,0.9)"},children:[t.jsx("p",{style:{fontWeight:600,color:"#374151",marginBottom:"8px"},children:"Start the MEMO dev server:"}),t.jsx("code",{style:{display:"block",margin:"0 0 12px",padding:"8px 14px",background:"#1B3A4B",color:"#2DD4A8",borderRadius:"6px",fontFamily:"monospace",fontSize:"13px"},children:"pnpm architect -- dev --port 3000"}),t.jsx("p",{style:{color:"#9CA3AF",marginBottom:"8px"},children:"Or try the example project:"}),t.jsx("code",{style:{display:"block",padding:"8px 14px",background:"#1B3A4B",color:"#2DD4A8",borderRadius:"6px",fontFamily:"monospace",fontSize:"13px"},children:"pnpm example:dev"})]})]})})]})}function ru(){const{family:e=""}=Rn();return t.jsx(Pc,{family:e.toUpperCase()})}function ou(){const{shortId:e=""}=Rn(),r=S(a=>a.model),n=S(a=>a.setActiveView),o=S(a=>a.selectElement);return p.useEffect(()=>{if(!r)return;const a=Object.values(r.elements).find(s=>(s.shortId??s.id)===e);a&&(o(a.id),n({type:"element-detail",elementId:a.id}))},[e,r,n,o]),t.jsx(p.Suspense,{fallback:t.jsx(Oo,{}),children:t.jsx(Po,{})})}function au(){const{diagramId:e=""}=Rn(),r=S(a=>a.model),n=S(a=>a.selectDiagram),o=S(a=>a.setActiveView);return p.useEffect(()=>{var s;if(!r)return;const a=(s=r.diagrams)==null?void 0:s.find(i=>{var l;return i.id===e||i.id.toLowerCase()===e.toLowerCase()||((l=i.shortId)==null?void 0:l.toLowerCase())===e.toLowerCase()});a&&(n(a.id),o({type:"diagram",diagramId:a.id}))},[e,r,n,o]),t.jsx(He,{})}function su(){const e=S(b=>b.activeView),r=S(b=>b.model),n=S(b=>b.setActiveView),o=S(b=>b.setActiveMode),a=S(b=>b.selectedElementId),s=Ce(),i=Be(),l=Ca(),c=p.useRef(!1),d=p.useRef(!1),[u,m]=p.useState(null);return p.useEffect(()=>{const b=!c.current;if(c.current=!0,!b&&l!=="POP")return;const v=bi(i.pathname,i.search);if(i.pathname==="/diagrams"&&(o("diagram"),S.getState().setExplorerTab("views"),S.getState().sidebarCollapsed&&S.getState().toggleSidebar(),e.type!=="welcome"&&(d.current=!0,n({type:"welcome"}))),(v==null?void 0:v.type)==="scenario-editor"&&o("scenario"),v&&JSON.stringify(v)!==JSON.stringify(e)&&(d.current=!0,n(v)),v&&v.type!=="element-detail"&&v.type!=="welcome"){const g=new URLSearchParams(i.search).get("element");g?m(g):S.getState().selectedElementId&&S.getState().inspectElement(null)}},[i.pathname,i.search,l]),p.useEffect(()=>{var b;if(u&&r){const v=((b=Object.values(r.elements).find(w=>(w.shortId??w.id)===u))==null?void 0:b.id)??u;v!==S.getState().selectedElementId&&S.getState().inspectElement(v),m(null)}},[u,r]),p.useEffect(()=>{var v;if(!c.current)return;if(d.current){d.current=!1;return}if(e.type==="welcome"&&i.pathname!=="/"||vi(i.pathname)&&!(e.type==="diagram"||e.type==="element-detail")||wi(i.pathname))return;let b=null;if(e.type==="element-detail"&&r){const w=r.elements[e.elementId];if(w){const g=w.shortId??w.id;b=`/catalog/${g.split("-")[0]}/${g}`}}else if(e.type==="diagram"&&r){const w=(v=r.diagrams)==null?void 0:v.find(g=>g.id===e.diagramId);w&&(b=`/diagrams/${gi(w.diagramType)}/${encodeURIComponent(w.shortId??w.id)}`)}else b=xi(e);if(b&&e.type!=="element-detail"&&e.type!=="welcome"&&a){const w=r==null?void 0:r.elements[a],g=(w==null?void 0:w.shortId)??a,h=b.includes("?")?"&":"?";b+=`${h}element=${encodeURIComponent(g)}`}if(b&&i.pathname+i.search!==b){const g=b.split("?")[0]===i.pathname;s(b,{replace:g})}},[e,r,a]),null}const iu=window.location.protocol==="file:"?cs:ds;qo.createRoot(document.getElementById("root")).render(t.jsx(p.StrictMode,{children:t.jsx(iu,{children:t.jsx(nu,{})})}));export{Du as $,ku as A,Mu as B,f as C,$e as D,nl as E,I as F,ot as G,oc as H,hc as I,Iu as J,Ru as K,Te as L,_o as M,Ce as N,pu as O,ec as P,xr as Q,Ir as R,Di as S,Zt as T,gr as U,Li as V,xu as W,an as X,uu as Y,$i as Z,de as _,Eu as a,Tu as a0,ju as a1,cu as a2,mo as a3,Kn as a4,yu as a5,gu as a6,Bu as a7,hu as b,mu as c,si as d,Cu as e,Le as f,Qt as g,ce as h,xo as i,Ye as j,Eo as k,fu as l,qi as m,Fu as n,Au as o,mi as p,Bt as q,Nu as r,hi as s,Ht as t,S as u,Vi as v,Su as w,wu as x,bu as y,vu as z};
|
|
4066
|
+
req_001,System shall be safe,Requirement,Safety requirement`,rows:10,style:{...bn,resize:"vertical",fontFamily:"monospace",fontSize:"12px",lineHeight:"1.5"}}),w&&t.jsx("p",{style:{fontSize:I.xs,color:"#E74C3C",marginTop:4},children:w})]}),t.jsxs("div",{className:"flex items-center gap-3",children:[t.jsx("span",{style:{fontSize:I.xs,color:"#6B7280"},children:"or upload a file:"}),t.jsxs("label",{style:{cursor:"pointer",padding:"4px 12px",borderRadius:6,background:"#F3F4F6",border:"1px solid #E5E5E0",fontSize:I.xs,color:"#374151"},children:["Browse…",t.jsx("input",{type:"file",accept:".csv,.tsv,.txt",style:{display:"none"},onChange:z})]}),c&&t.jsxs("span",{style:{fontSize:I.xs,color:"#6B7280"},children:[c.split(`
|
|
4067
|
+
`).length," line(s) loaded"]})]})]}),i==="mapping"&&t.jsxs("div",{className:"flex flex-col gap-3",children:[t.jsxs("p",{style:{fontSize:I.xs,color:"#6B7280",margin:0},children:["Map each source column to a MEMO attribute. ",t.jsx("strong",{children:"id"}),", ",t.jsx("strong",{children:"name"}),", and ",t.jsx("strong",{children:"kind"})," are required. Unrecognised columns are passed through as dynamic attributes."]}),t.jsxs("div",{style:{border:"1px solid #E5E5E0",borderRadius:8,overflow:"hidden"},children:[t.jsxs("div",{className:"flex",style:{background:"#F8F8F5",padding:"8px 12px",borderBottom:"1px solid #E5E5E0"},children:[t.jsx("span",{style:{flex:1,fontSize:I.xs,fontWeight:600,color:"#374151"},children:"Source column"}),t.jsx("span",{style:{flex:1,fontSize:I.xs,fontWeight:600,color:"#374151"},children:"Maps to"}),t.jsx("span",{style:{width:80,fontSize:I.xs,fontWeight:600,color:"#374151"},children:"Transform"})]}),A.map((x,_)=>{const W=["id","name","kind"].includes(x.targetAttribute),F=!x.targetAttribute,L=A.filter((B,P)=>P!==_&&["id","name","kind","doc","construct"].includes(B.targetAttribute)).map(B=>B.targetAttribute),V=_r.filter(B=>B==="— skip —"||!L.includes(B)||B===x.targetAttribute);return t.jsxs("div",{className:"flex items-center",style:{padding:"6px 12px",borderBottom:_<A.length-1?"1px solid #F0F0EC":"none",background:W?"#F0FDF4":"transparent"},children:[t.jsx("div",{style:{flex:1,fontSize:I.xs,color:"#374151",fontFamily:"monospace"},children:x.sourceColumn}),t.jsx("div",{style:{flex:1,paddingRight:8},children:t.jsxs("select",{value:x.targetAttribute||"",onChange:B=>Q(_,B.target.value==="— skip —"?"":B.target.value),style:{width:"100%",fontSize:I.xs,padding:"3px 6px",borderRadius:5,border:`1px solid ${F?"#E5E5E0":W?"#22C55E":"#E5E5E0"}`,background:F?"#F9FAFB":"#FFFFFF",color:F?"#9CA3AF":"#1a1a1a"},children:[V.map(B=>t.jsx("option",{value:B,children:B},B)),x.targetAttribute&&!_r.includes(x.targetAttribute)&&t.jsx("option",{value:x.targetAttribute,children:x.targetAttribute})]})}),t.jsx("div",{style:{width:80,fontSize:"10px",color:"#9CA3AF"},children:x.transform??"—"})]},_)})]}),N.length>0&&t.jsxs("details",{children:[t.jsxs("summary",{style:{fontSize:I.xs,color:"#6B7280",cursor:"pointer",marginTop:4},children:["Show raw data sample (",Math.min(N.length,3)," of ",N.length," rows)"]}),t.jsx("div",{style:{marginTop:6,overflowX:"auto"},children:t.jsxs("table",{style:{fontSize:"10px",borderCollapse:"collapse",width:"100%"},children:[t.jsx("thead",{children:t.jsx("tr",{children:h.map(x=>t.jsx("th",{style:We,children:x},x))})}),t.jsx("tbody",{children:N.slice(0,3).map((x,_)=>t.jsx("tr",{children:h.map(W=>t.jsx("td",{style:ut,children:x[W]??""},W))},_))})]})})]})]}),i==="preview"&&t.jsxs("div",{className:"flex flex-col gap-4",children:[k.length>0&&t.jsxs("div",{style:{background:"#FEF2F2",border:"1px solid #FECACA",borderRadius:8,padding:"10px 14px"},children:[t.jsxs("p",{style:{fontSize:I.xs,fontWeight:700,color:"#DC2626",margin:"0 0 4px"},children:[k.length," validation error(s) — rows with missing required fields will be skipped"]}),k.slice(0,5).map((x,_)=>t.jsx("p",{style:{fontSize:"11px",color:"#DC2626",margin:"1px 0"},children:x},_)),k.length>5&&t.jsxs("p",{style:{fontSize:"11px",color:"#DC2626",margin:"2px 0 0"},children:["+",k.length-5," more…"]})]}),H.length>0&&t.jsxs("div",{style:{background:"#FFFBEB",border:"1px solid #FDE68A",borderRadius:8,padding:"10px 14px"},children:[t.jsxs("p",{style:{fontSize:I.xs,fontWeight:700,color:"#D97706",margin:"0 0 4px"},children:[H.length," warning(s)"]}),H.slice(0,3).map((x,_)=>t.jsx("p",{style:{fontSize:"11px",color:"#D97706",margin:"1px 0"},children:x},_))]}),n&&t.jsxs("div",{style:{background:n.success?"#F0FDF4":"#FEF2F2",border:`1px solid ${n.success?"#86EFAC":"#FECACA"}`,borderRadius:8,padding:"12px 14px"},children:[t.jsx("p",{style:{fontSize:I.xs,fontWeight:700,margin:"0 0 4px",color:n.success?"#16A34A":"#DC2626"},children:n.success?`Import complete — ${n.elementsImported} element(s) written to ${n.generatedFile??"model"}`:"Import failed"}),n.errors.map((x,_)=>t.jsx("p",{style:{fontSize:"11px",color:"#DC2626",margin:"1px 0"},children:x},_)),n.warnings.slice(0,3).map((x,_)=>t.jsx("p",{style:{fontSize:"11px",color:"#D97706",margin:"1px 0"},children:x},_))]}),j.length>0&&t.jsxs(t.Fragment,{children:[t.jsxs("p",{style:{fontSize:I.xs,color:"#6B7280",margin:0},children:["Showing first ",j.length," of ",N.length," row(s)",N.length>j.length&&` (+${N.length-j.length} more will be imported)`]}),t.jsx("div",{style:{overflowX:"auto",borderRadius:8,border:"1px solid #E5E5E0"},children:t.jsxs("table",{style:{fontSize:"11px",borderCollapse:"collapse",width:"100%"},children:[t.jsx("thead",{children:t.jsxs("tr",{style:{background:"#F8F8F5"},children:[t.jsx("th",{style:We,children:"#"}),t.jsx("th",{style:We,children:"id"}),t.jsx("th",{style:We,children:"name"}),t.jsx("th",{style:We,children:"kind"}),t.jsx("th",{style:We,children:"doc"})]})}),t.jsx("tbody",{children:j.map(x=>{const _=!x.id||!x.name||!x.kind;return t.jsxs("tr",{style:{background:_?"#FEF9F9":"transparent"},children:[t.jsx("td",{style:Or,children:x.rowIndex}),t.jsx("td",{style:{...Or,color:x.id?"#1a1a1a":"#DC2626"},children:x.id||"⚠ missing"}),t.jsx("td",{style:{...ut,maxWidth:160,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:String(x.name||"—")}),t.jsx("td",{style:{...ut,color:x.kind?"#1B3A4B":"#DC2626"},children:x.kind||"⚠ missing"}),t.jsx("td",{style:{...ut,maxWidth:180,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",color:"#6B7280"},children:String(x.doc||"—")})]},x.rowIndex)})})]})})]}),j.length===0&&k.length===0&&t.jsx("p",{style:{fontSize:I.xs,color:"#9CA3AF",textAlign:"center",padding:"24px 0"},children:"No rows to preview."})]})]}),t.jsxs("div",{className:"flex items-center justify-between px-6 py-4",style:{borderTop:"1px solid #F0F0EC",background:"#FAFAF8",flexShrink:0},children:[t.jsx("div",{className:"flex gap-2",children:i!=="input"&&!n&&t.jsx("button",{onClick:()=>l(ae[M-1]),style:Pr,children:"← Back"})}),t.jsxs("div",{className:"flex gap-2 items-center",children:[t.jsx("button",{onClick:X,style:Pr,children:n!=null&&n.success?"Done":"Cancel"}),!n&&t.jsxs(t.Fragment,{children:[i==="input"&&t.jsx("button",{onClick:G,style:vn,children:"Next →"}),i==="mapping"&&t.jsx("button",{onClick:J,style:vn,children:"Preview →"}),i==="preview"&&t.jsx("button",{onClick:ne,disabled:E||j.length===0,style:{...vn,opacity:E||j.length===0?.5:1,cursor:E||j.length===0?"not-allowed":"pointer"},children:E?"Importing…":`Import ${N.length} element(s)`})]})]})]})]})})}const xn={display:"block",fontSize:I.xs,fontWeight:600,color:"#374151",marginBottom:6},bn={width:"100%",padding:"7px 10px",borderRadius:8,border:"1px solid #E5E5E0",fontSize:I.sm,color:"#1a1a1a",background:"#FAFAF8",boxSizing:"border-box"},Dc={background:"rgba(255,255,255,0.12)",border:"none",borderRadius:8,color:"rgba(255,255,255,0.8)",cursor:"pointer",padding:"6px 10px",fontSize:"14px"},vn={padding:"7px 18px",borderRadius:8,background:"#1B3A4B",border:"none",color:"#FFFFFF",fontSize:I.xs,fontWeight:600,cursor:"pointer"},Pr={padding:"7px 14px",borderRadius:8,background:"transparent",border:"1px solid #E5E5E0",color:"#374151",fontSize:I.xs,cursor:"pointer"},We={padding:"5px 8px",textAlign:"left",fontWeight:600,fontSize:"10px",color:"#6B7280",borderBottom:"1px solid #E5E5E0",whiteSpace:"nowrap"},ut={padding:"4px 8px",fontSize:"11px",color:"#1a1a1a",borderBottom:"1px solid #F5F5F2"},Or={...ut,fontFamily:"monospace",fontSize:"10px",color:"#6B7280"};function Bc(){var u,m,b;const e=C(v=>v.activeView),r=C(v=>v.model),n=C(v=>v.selectedElementId),o=C(v=>v.activeMode),a=C(v=>v.setActiveMode),s=C(v=>v.selectElement),i=C(v=>v.setActiveView),l=je(),c=[],d=(()=>{switch(e.type){case"diagram":return;case"element-detail":return{label:"Model Explorer",icon:"☰",onClick:()=>{a("catalog"),i({type:"welcome"}),l("/catalog")}};case"dsm":return{label:"DSM Analysis",icon:"▦",onClick:()=>{i({type:"dsm"}),l("/dsm")}};case"traceability":return{label:"Traceability Matrix",icon:"☷",onClick:()=>{i({type:"traceability"}),l("/traceability")}};case"ontology":case"ontology-detail":return{label:"Ontology Explorer",icon:"◉",onClick:()=>{i({type:"ontology"}),l("/ontology")}};case"scenario-editor":return{label:"Use Cases",icon:"▶",onClick:()=>{a("scenario"),i({type:"scenario-editor"}),l("/use-cases")}};case"dhf-dashboard":case"dhf-dashboard-legacy":case"dhf-document":return{label:"Documents",icon:"⊞",onClick:()=>{a("dhf"),i({type:"dhf-dashboard"}),l("/dhf")}};case"welcome":return o==="diagram"?{label:"Viewpoints",icon:"⊟",onClick:()=>l("/diagrams")}:o==="catalog"?{label:"Model Explorer",icon:"☰",onClick:()=>l("/catalog")}:void 0;default:return}})();switch(e.type){case"diagram":{const v=Zt(r,e.diagramId);if(v){const w=v.viewpointId==="__model"?"Unassigned Views":((m=(u=r==null?void 0:r.viewpoints)==null?void 0:u.find(R=>R.id===v.viewpointId))==null?void 0:m.label)||v.viewpointId,g=(b=r==null?void 0:r.viewpoints)==null?void 0:b.find(R=>R.id===v.viewpointId);c.push({label:g?`${g.id} · ${w}`:w});const h=v.viewKind?Hn[v.viewKind]:void 0,y=$e[v.diagramType],N=(h==null?void 0:h.label)??(y==null?void 0:y.code)??v.diagramType;c.push({label:`${v.shortId??v.id} · ${N}: ${v.name}`})}break}case"element-detail":{const v=e.elementId,w=r==null?void 0:r.elements[v];if(w){const g=w.shortId??w.id,h=g.split("-")[0];c.push({label:"Catalog",onClick:()=>l("/catalog")}),c.push({label:h,onClick:()=>l(`/catalog/${h}`)}),c.push({label:`${g} ${w.name}`})}break}}if(n&&r&&e.type!=="element-detail"){const v=r.elements[n];v&&c.push({label:v.name,onClick:()=>s(v.id)})}return!d&&c.length===0?null:t.jsxs("div",{className:"flex items-center gap-1 px-4 py-1.5",style:{background:"#FAFAF8",borderBottom:"1px solid #E5E5E0"},children:[d&&t.jsxs("button",{type:"button",onClick:d.onClick,className:"flex items-center gap-1 rounded-md",title:`Active workspace: ${d.label}`,style:{padding:"4px 8px",background:"#E8FBF5",border:"1px solid #A7F3D0",color:"#0F766E",fontSize:"11px",fontWeight:700,letterSpacing:"0.01em",cursor:"pointer"},children:[t.jsx("span",{"aria-hidden":"true",style:{fontSize:"13px",lineHeight:1},children:d.icon}),d.label]}),c.map((v,w)=>t.jsxs("span",{className:"flex items-center gap-1",children:[(d||w>0)&&t.jsx("span",{className:"text-xs",style:{color:"#D1D5DB"},children:"/"}),v.onClick?t.jsx("button",{className:"text-xs px-1 py-0.5 rounded transition-colors",style:{color:"#374151"},onMouseEnter:g=>g.currentTarget.style.background="#F0F0ED",onMouseLeave:g=>g.currentTarget.style.background="transparent",onClick:v.onClick,children:v.label}):t.jsx("span",{className:"text-xs",style:{color:w===c.length-1?"#374151":"#9CA3AF"},children:v.label})]},w)),t.jsx("div",{className:"flex-1"}),t.jsxs("kbd",{className:"px-1.5 py-0.5 rounded text-xs",style:{background:"#F0F0ED",color:"#9CA3AF",fontSize:"9px"},children:["⌘","K"]})]})}const zr="memo-onboarding-completed",lt=[{title:"Welcome to MEMO Architect",description:"MEMO is a model-based systems engineering tool for medical devices. You'll land on the Dashboard — it shows your model health and suggests the next action. Let's take a quick tour.",target:"center",position:"center"},{title:"Model Explorer",description:"Browse your model elements organized by architecture layer. Switch to Views tab to see diagrams grouped by viewpoint.",target:"left panel",position:"left"},{title:"Unified Canvas",description:"The center area renders your selected view — diagrams, action flows, DSM matrices, and more.",target:"center canvas",position:"center"},{title:"Properties Panel",description:"View and edit element properties, relationships, and attributes. Select any element to see its details.",target:"right panel",position:"right"},{title:"Tools Menu",description:"Access analysis tools from the toolbar: DSM, Trace Matrix, Action Flow, Ontology, Scenarios, Diff, Compliance, and Stats.",target:"toolbar",position:"center"},{title:"Command Palette",description:"Press Cmd+K (or Ctrl+K) to quickly search elements, diagrams, viewpoints, and tools.",target:"keyboard shortcut",position:"center"},{title:"Working Sets",description:"Save and restore your workspace layout using the Sets tab in the Explorer panel. Great for switching between review contexts.",target:"explorer sets tab",position:"left"},{title:"You're all set!",description:"Start from the Dashboard — it shows your model status and suggests the next step. Use the Workflow Wizard (Tools menu) for a guided path through requirements, risk, and verification.",target:"center",position:"center"}];function Fc(){const[e,r]=p.useState(!1),[n,o]=p.useState(0);p.useEffect(()=>{try{if(!localStorage.getItem(zr)){const b=setTimeout(()=>r(!0),800);return()=>clearTimeout(b)}}catch{}},[]);const a=p.useCallback(()=>{r(!1);try{localStorage.setItem(zr,"true")}catch{}},[]),s=p.useCallback(()=>{n>=lt.length-1?a():o(n+1)},[n,a]),i=p.useCallback(()=>{n>0&&o(n-1)},[n]);if(!e)return null;const l=lt[n],c=n===lt.length-1,d=n===0,u=()=>{switch(l.position){case"left":return{left:"300px",top:"50%",transform:"translateY(-50%)"};case"right":return{right:"300px",top:"50%",transform:"translateY(-50%)"};case"bottom":return{left:"50%",bottom:"80px",transform:"translateX(-50%)"};case"center":default:return{left:"50%",top:"50%",transform:"translate(-50%, -50%)"}}};return t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"fixed inset-0 z-50",style:{background:"rgba(0,0,0,0.4)",backdropFilter:"blur(2px)"},onClick:a}),t.jsxs("div",{className:"fixed z-50 rounded-xl p-5 max-w-sm",style:{...u(),background:"#FFFFFF",boxShadow:"0 8px 32px rgba(0,0,0,0.2)",border:"1px solid #E5E5E0"},onClick:m=>m.stopPropagation(),children:[t.jsx("div",{className:"flex items-center gap-1 mb-3",children:lt.map((m,b)=>t.jsx("div",{className:"h-1 rounded-full transition-all",style:{width:b===n?"20px":"8px",background:b===n?"#2DD4A8":b<n?"#2DD4A880":"#E5E5E0"}},b))}),t.jsx("h3",{className:"text-sm font-semibold mb-1.5",style:{color:"#1B3A4B"},children:l.title}),t.jsx("p",{className:"text-xs leading-relaxed mb-4",style:{color:"#6B7280"},children:l.description}),t.jsxs("div",{className:"flex items-center gap-2",children:[!d&&t.jsx("button",{onClick:i,className:"px-3 py-1.5 text-xs rounded-lg",style:{background:"#F3F4F6",color:"#6B7280"},children:"Back"}),t.jsx("div",{className:"flex-1"}),t.jsx("button",{onClick:a,className:"px-3 py-1.5 text-xs rounded-lg",style:{color:"#9CA3AF"},children:"Skip tour"}),t.jsx("button",{onClick:s,className:"px-4 py-1.5 text-xs font-medium rounded-lg",style:{background:"#2DD4A8",color:"#FFFFFF"},children:c?"Get started":"Next"})]}),t.jsxs("div",{className:"text-center mt-2",style:{color:"#D1D5DB",fontSize:"10px"},children:[n+1," of ",lt.length]})]})]})}function Ac(){const e=C(a=>a.restartRequired);if(!e)return null;const r=e.reason==="dependency-closure-uncomputable",n=e.reason==="transaction-independence-uncomputable",o=r?"Dependency closure could not be rebuilt":n?"Concurrent writes could not be distinguished":e.reason==="ontology-selection-changed"?"Ontology selection changed":"Ontology source changed";return t.jsx("div",{style:{position:"fixed",inset:0,zIndex:9999,display:"flex",alignItems:"center",justifyContent:"center",background:"rgba(15, 23, 42, 0.85)",backdropFilter:"blur(4px)"},children:t.jsxs("div",{style:{background:"#1E293B",border:"1px solid #F59E0B",borderRadius:"12px",padding:"32px 40px",maxWidth:"480px",width:"90%",textAlign:"center",color:"#F8FAFC",boxShadow:"0 25px 50px rgba(0,0,0,0.5)"},children:[t.jsx("div",{style:{fontSize:"2rem",marginBottom:"12px"},children:"⚠️"}),t.jsx("div",{style:{fontSize:"1.1rem",fontWeight:600,marginBottom:"8px",color:"#F59E0B"},children:"Restart Required"}),t.jsx("div",{style:{fontSize:"0.875rem",color:"#CBD5E1",marginBottom:"4px"},children:o}),t.jsx("div",{style:{fontSize:"0.75rem",color:"#94A3B8",marginBottom:"24px",fontFamily:"monospace"},children:e.changedFile}),t.jsx("div",{style:{fontSize:"0.875rem",color:"#E2E8F0",marginBottom:"24px",lineHeight:1.6},children:e.instruction}),t.jsx("div",{style:{fontSize:"0.8rem",color:"#FBBF24"},role:"status",children:r?"Model mutations are locked — Relaunch Memo Architect after fixing the source.":"Reconnecting to the rebuilt runtime…"})]})})}function Nc(){const e=C(s=>s.editConflict),r=C(s=>s.setEditConflict);if(!e)return null;const n=e.reason==="stale-identity",o=JSON.stringify(e.rejectedDraft,null,2),a=()=>{const s=URL.createObjectURL(new Blob([o],{type:"application/json"})),i=document.createElement("a");i.href=s,i.download=`rejected-edit-${e.rejectedCommandId}.json`,i.click(),URL.revokeObjectURL(s)};return t.jsxs("aside",{role:"alert",style:{position:"fixed",right:20,bottom:20,zIndex:9e3,maxWidth:520,padding:16,borderRadius:10,border:"1px solid #FCA5A5",background:"#FEF2F2",color:"#7F1D1D",boxShadow:"0 12px 30px rgba(0,0,0,.18)"},children:[t.jsx("strong",{children:n?"Edit rejected — it targeted an older model revision":"Edit rejected — file changed externally"}),t.jsx("div",{style:{marginTop:6,fontFamily:"monospace",fontSize:12},children:e.sourceFile}),t.jsx("div",{style:{marginTop:6,fontSize:13},children:n?"No source was overwritten. The element this edit addressed is not in the current revision, so applying it could have changed the wrong declaration. Reopen the element and repeat the edit.":"No source was overwritten. The disk version was reloaded; edits to other files remain available."}),e.detail&&t.jsx("div",{style:{marginTop:6,fontSize:12,color:"#9F1239"},children:e.detail}),t.jsxs("div",{style:{display:"flex",gap:8,flexWrap:"wrap",marginTop:12},children:[t.jsx("button",{onClick:()=>void navigator.clipboard.writeText(o),children:"Copy draft"}),t.jsx("button",{onClick:a,children:"Download rejected edit"}),t.jsx("button",{onClick:()=>li(e.sourceFile),children:"Reveal file"}),t.jsx("button",{onClick:()=>r(null),children:"Dismiss"})]})]})}const Tc=20;function Rc(){const e=C(u=>u.sourceCoherence),[r,n]=p.useState(!1);if(!e)return null;const{files:o,diagnostics:a,lastGoodRevision:s}=e,i=a.slice(0,Tc),l=a.length-i.length,c=a.length||o.length,d=`${c} source ${c===1?"error":"errors"} — showing the last model that compiled`;return t.jsxs("div",{style:{position:"fixed",bottom:16,left:"50%",transform:"translateX(-50%)",zIndex:9e3,display:"flex",flexDirection:"column",alignItems:"center",gap:8},children:[r&&t.jsxs("div",{style:{maxWidth:620,width:"calc(100vw - 32px)",maxHeight:"40vh",overflowY:"auto",background:"#1E293B",border:"1px solid #EF4444",borderRadius:10,padding:"12px 16px",color:"#F8FAFC",boxShadow:"0 12px 32px rgba(0,0,0,0.35)"},children:[t.jsx("div",{style:{fontSize:"0.85rem",fontWeight:600,color:"#FCA5A5",marginBottom:4},children:s>0?`Showing the last model that compiled (revision ${s})`:"Showing everything that parsed"}),t.jsxs("div",{style:{fontSize:"0.75rem",color:"#CBD5E1",marginBottom:i.length?8:0},children:[o.length===1?o[0]:`${o.length} files`," did not parse. Edits are held until the source compiles again — no restart needed."]}),i.map((u,m)=>t.jsxs("div",{style:{fontSize:"0.7rem",color:"#94A3B8",fontFamily:"monospace",lineHeight:1.5},children:[u.file,u.line!==void 0?`:${u.line}`:"",u.column!==void 0?`:${u.column}`:""," — ",u.message]},`${u.file}:${u.line??0}:${m}`)),l>0&&t.jsxs("div",{style:{fontSize:"0.7rem",color:"#64748B",marginTop:4},children:["and ",l," more"]})]}),t.jsxs("button",{type:"button",role:"status","aria-live":"polite","aria-expanded":r,"aria-label":d,title:d,onClick:()=>n(u=>!u),style:{display:"flex",alignItems:"center",gap:6,background:"#7F1D1D",border:"1px solid #EF4444",borderRadius:999,padding:"6px 12px",color:"#FEE2E2",cursor:"pointer",fontSize:"0.75rem",fontWeight:600,boxShadow:"0 6px 18px rgba(0,0,0,0.35)"},children:[t.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none","aria-hidden":"true",children:[t.jsx("circle",{cx:"12",cy:"12",r:"9",stroke:"#FCA5A5",strokeWidth:"2"}),t.jsx("path",{d:"M12 7v6",stroke:"#FCA5A5",strokeWidth:"2",strokeLinecap:"round"}),t.jsx("circle",{cx:"12",cy:"16.5",r:"1.1",fill:"#FCA5A5"})]}),c]})]})}function Oo({size:e=150,opacity:r=.55}){return t.jsxs("div",{"aria-label":"MEMO Architect",title:"MEMO Architect",style:{position:"relative",width:e,height:Math.round(e*.62),overflow:"hidden",flexShrink:0,opacity:r},children:[t.jsx("img",{src:"/logo.png",alt:"","aria-hidden":"true",style:{display:"block",width:e,height:e,objectFit:"contain",transform:`translateY(-${Math.round(e*.12)}px)`,mixBlendMode:"multiply"}}),t.jsx("span",{style:{position:"absolute",left:"59%",top:Math.round(e*.47),color:"#8B949E",fontSize:Math.max(12,Math.round(e*.09)),fontWeight:600,letterSpacing:"0.02em",whiteSpace:"nowrap"},children:"Architect"})]})}function Ic(e){return Le[e]?Le[e]:e?e.split(/[_-]/).map(r=>r.charAt(0).toUpperCase()+r.slice(1)).join(" "):"Other"}function Mc(){const e=C(s=>s.model),r=je(),n=p.useMemo(()=>{if(!e)return[];const s={};for(const c of Object.values(e.elements)){const d=fd(c.kind),u=hd(d);s[u]||(s[u]={count:0,kinds:new Set,layer:c.layer}),s[u].count++,s[u].kinds.add(c.kind)}const i=new Map;for(const c of Object.entries(s)){const d=c[1].layer;i.has(d)||i.set(d,[]),i.get(d).push(c)}for(const c of i.values())c.sort((d,u)=>u[1].count-d[1].count);const l=new Map(Re.map((c,d)=>[c,d]));return[...i.entries()].sort(([c],[d])=>{const u=l.get(c)??Re.length,m=l.get(d)??Re.length;return u!==m?u-m:c.localeCompare(d)})},[e]),o=p.useMemo(()=>n.flatMap(([,s])=>s),[n]);if(!e)return t.jsx("div",{style:{flex:1,display:"flex",alignItems:"center",justifyContent:"center",background:"#F7F7F5"},children:t.jsx("p",{style:{color:f.muted,fontSize:I.sm},children:"Loading…"})});const a=Object.keys(e.elements).length;return t.jsxs("div",{style:{flex:1,overflow:"auto",background:"#F7F7F5",padding:"32px 40px"},children:[t.jsxs("div",{style:{display:"flex",alignItems:"flex-start",justifyContent:"space-between",marginBottom:"24px"},children:[t.jsxs("div",{children:[t.jsx("h1",{style:{fontSize:"20px",fontWeight:700,color:f.primary,margin:"0 0 4px"},children:"Catalog"}),t.jsxs("p",{style:{color:f.muted,fontSize:I.sm,margin:0},children:[a," elements across ",o.length," families"]})]}),t.jsx(Oo,{size:132})]}),n.map(([s,i])=>{const l=ue[s]??"#9CA3AF";return t.jsxs("div",{style:{marginBottom:"28px"},children:[t.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px",marginBottom:"12px"},children:[t.jsx("span",{style:{width:"8px",height:"8px",borderRadius:"50%",background:l,flexShrink:0}}),t.jsx("h2",{style:{fontSize:"13px",fontWeight:700,color:f.secondary,textTransform:"uppercase",letterSpacing:"0.04em",margin:0},children:Ic(s)})]}),t.jsx("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(200px, 1fr))",gap:"12px"},children:i.map(([c,d])=>t.jsx(_c,{family:c,count:d.count,kinds:d.kinds,color:l,onClick:()=>r(yd(c))},c))})]},s||"__none")})]})}function _c({family:e,count:r,kinds:n,color:o,onClick:a}){return t.jsxs("div",{onClick:a,style:{background:f.surface,border:`1px solid ${f.border}`,borderRadius:"10px",padding:"16px",cursor:"pointer",transition:"box-shadow 0.15s, border-color 0.15s",borderTop:`3px solid ${o}`},onMouseEnter:s=>{s.currentTarget.style.boxShadow="0 4px 12px rgba(0,0,0,0.08)",s.currentTarget.style.borderTopColor=o},onMouseLeave:s=>{s.currentTarget.style.boxShadow="none"},children:[t.jsx("div",{style:{fontWeight:700,fontSize:"15px",color:f.primary,marginBottom:"4px"},children:e}),t.jsx("div",{style:{fontSize:"22px",fontWeight:800,color:o,lineHeight:1,marginBottom:"6px"},children:r}),t.jsxs("div",{style:{fontSize:"11px",color:f.muted,lineHeight:"1.5"},children:[Array.from(n).slice(0,3).join(", "),n.size>3&&` +${n.size-3} more`]})]})}function Pc(){var a;const e=C(s=>s.model),r=je(),n=p.useMemo(()=>{var N;const s=(e==null?void 0:e.diagrams)??[],i=new Map,l=new Map(((e==null?void 0:e.viewpoints)??[]).map(R=>[R.id,R]));for(const R of s){const A=R.viewpointIds;for(const T of A!=null&&A.length?A:[R.viewpointId]){const j=(N=e==null?void 0:e.viewpoints)==null?void 0:N.find(U=>U.id===T),S=j?T:Te,k=i.get(S);k?k.items.push(R):i.set(S,{id:S,label:(j==null?void 0:j.label)??"Uncategorized",items:[R]})}}const c=To([...l.values()]),{rootViewpoints:d,viewpointChildren:u}=Io(c),m=[],b=(R,A,T)=>{if(!T.has(R.id)){T.add(R.id),m.push({viewpoint:R,depth:A});for(const j of u.get(R.id)??[])b(j,A+1,T)}},v=new Set;for(const R of d)b(R,0,v);const w=Ro(m.map(R=>R.viewpoint.label)),g=R=>{var A;return(((A=i.get(R))==null?void 0:A.items.length)??0)>0||(u.get(R)??[]).some(T=>g(T.id))},h=m.map((R,A)=>{var T;return{...i.get(R.viewpoint.id)??{id:R.viewpoint.id,label:R.viewpoint.label,items:[]},...R.viewpoint,label:w[A],depth:R.depth,childCount:(u.get(R.viewpoint.id)??[]).length,items:[...((T=i.get(R.viewpoint.id))==null?void 0:T.items)??[]].sort((j,S)=>j.name.localeCompare(S.name))}}).filter(R=>g(R.id)),y=i.get(Te);return y?[...h,{...y,depth:0,childCount:0,items:[...y.items].sort((R,A)=>R.name.localeCompare(A.name))}]:h},[e]);if(!e)return t.jsx("div",{style:{flex:1,display:"flex",alignItems:"center",justifyContent:"center",background:"#F7F7F5"},children:t.jsx("p",{style:{color:f.muted,fontSize:I.sm},children:"Loading…"})});const o=((a=e.diagrams)==null?void 0:a.length)??0;return t.jsxs("div",{style:{flex:1,overflow:"auto",background:"#F7F7F5",padding:"32px 40px"},children:[t.jsxs("div",{style:{display:"flex",alignItems:"flex-start",justifyContent:"space-between",marginBottom:"24px"},children:[t.jsxs("div",{children:[t.jsx("h1",{style:{fontSize:"20px",fontWeight:700,color:f.primary,margin:"0 0 4px"},children:"Viewpoints"}),t.jsxs("p",{style:{color:f.muted,fontSize:I.sm,margin:0},children:[o," model ",o===1?"view":"views"," across ",n.length," ",n.length===1?"viewpoint":"viewpoints"]})]}),t.jsx(Oo,{size:132})]}),o===0&&t.jsx("p",{style:{color:f.muted,fontSize:I.sm},children:"This model defines no model views yet."}),n.map(s=>t.jsxs("section",{style:{marginBottom:"28px",marginLeft:s.depth?`${s.depth*20}px`:0,paddingLeft:s.depth?"14px":0,borderLeft:s.depth?`2px solid ${f.border}`:"none"},children:[t.jsxs("h2",{style:{fontSize:"11px",fontWeight:700,color:f.muted,textTransform:"uppercase",letterSpacing:"0.06em",margin:"0 0 10px 0"},children:[s.label,t.jsx("code",{style:{marginLeft:8,color:f.faint,textTransform:"none"},children:s.id===Te?"no viewpoint":s.id}),t.jsx("span",{style:{marginLeft:8,fontWeight:400},children:s.items.length}),s.childCount>0&&t.jsxs("span",{style:{marginLeft:8,fontWeight:400,textTransform:"none",color:f.faint},children:["frames ",s.childCount," ",s.childCount===1?"viewpoint":"viewpoints"]})]}),s.items.length===0?t.jsx("p",{style:{color:f.faint,fontSize:I.sm,margin:"0 0 4px"},children:"No views of its own — the viewpoints it frames are below."}):t.jsx("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(220px, 1fr))",gap:"12px"},children:s.items.map(i=>t.jsx(Oc,{diagram:i,onClick:()=>r(No(i.diagramType,i.shortId??i.id))},i.id))})]},s.id))]})}function Oc({diagram:e,onClick:r}){var c;const n=e.viewKind?Hn[e.viewKind]:void 0,o=$e[e.diagramType],a=n??o,s=(n==null?void 0:n.label)??(o==null?void 0:o.code),i=(a==null?void 0:a.color)??"#6B7280",l=((c=e.elementIds)==null?void 0:c.length)??0;return t.jsxs("div",{onClick:r,role:"button",tabIndex:0,onKeyDown:d=>{(d.key==="Enter"||d.key===" ")&&(d.preventDefault(),r())},style:{background:f.surface,border:`1px solid ${f.border}`,borderRadius:"10px",padding:"14px 16px",cursor:"pointer",transition:"box-shadow 0.15s",borderTop:`3px solid ${i}`},onMouseEnter:d=>{d.currentTarget.style.boxShadow="0 4px 12px rgba(0,0,0,0.08)"},onMouseLeave:d=>{d.currentTarget.style.boxShadow="none"},children:[t.jsxs("div",{style:{display:"flex",alignItems:"center",gap:6,marginBottom:6},children:[a&&t.jsx("span",{style:{background:i+"18",color:i,borderRadius:4,padding:"1px 5px",fontSize:"10px",fontWeight:700},children:s}),e.auto&&t.jsx("span",{style:{fontSize:"10px",color:f.muted},children:"auto"})]}),t.jsx("div",{style:{fontWeight:600,fontSize:"14px",color:f.primary,marginBottom:4},children:e.name}),t.jsx("div",{style:{fontFamily:"ui-monospace, SFMono-Regular, Menlo, monospace",fontSize:"10px",color:f.faint,marginBottom:4},children:e.shortId??e.id}),t.jsxs("div",{style:{fontSize:"11px",color:f.muted,lineHeight:1.5},children:[(a==null?void 0:a.fullName)??e.diagramType,l>0&&` · ${l} element${l===1?"":"s"}`]})]})}function zc({family:e}){const r=C(c=>c.model),n=je(),[o,a]=p.useState(""),s=p.useMemo(()=>r?Object.values(r.elements).filter(c=>{const d=c.shortId??"";return d.startsWith(e+"-")||d.startsWith(e+" ")}):[],[r,e]),i=p.useMemo(()=>{if(!o.trim())return s;const c=o.toLowerCase();return s.filter(d=>d.name.toLowerCase().includes(c)||(d.shortId??"").toLowerCase().includes(c)||d.kind.toLowerCase().includes(c))},[s,o]),l=p.useMemo(()=>{const c={};for(const d of s)c[d.kind]=(c[d.kind]??0)+1;return c},[s]);return r?s.length===0?t.jsx(wn,{family:e,children:t.jsxs("p",{style:{color:f.muted,fontSize:I.sm},children:["No elements found with family prefix ",t.jsx("code",{children:e}),"."]})}):t.jsxs(wn,{family:e,children:[t.jsx("div",{style:{display:"flex",flexWrap:"wrap",gap:"6px",marginBottom:"16px"},children:Object.entries(l).map(([c,d])=>{const u=ue[c]??"#9CA3AF";return t.jsxs("span",{style:{fontSize:I.xs,padding:"2px 8px",borderRadius:"12px",background:u+"20",color:u,border:`1px solid ${u}40`,fontWeight:500},children:[c," · ",d]},c)})}),t.jsx("input",{type:"search",placeholder:`Search ${s.length} elements…`,value:o,onChange:c=>a(c.target.value),style:{width:"100%",boxSizing:"border-box",padding:"7px 12px",fontSize:I.sm,border:`1px solid ${f.border}`,borderRadius:"6px",background:f.surface,color:f.primary,outline:"none",marginBottom:"12px"}}),t.jsxs("div",{style:{background:f.surface,border:`1px solid ${f.border}`,borderRadius:"8px",overflow:"hidden"},children:[t.jsxs("div",{style:{display:"grid",gridTemplateColumns:"140px 1fr 120px 120px",padding:"8px 16px",background:f.surfaceAlt,borderBottom:`1px solid ${f.border}`,fontSize:I.xs,fontWeight:600,color:f.muted,gap:"12px"},children:[t.jsx("span",{children:"ID"}),t.jsx("span",{children:"Name"}),t.jsx("span",{children:"Kind"}),t.jsx("span",{children:"Layer"})]}),i.length===0?t.jsxs("div",{style:{padding:"24px 16px",color:f.muted,fontSize:I.sm,textAlign:"center"},children:['No results for "',o,'"']}):i.map((c,d)=>t.jsx(Uc,{element:c,zebra:d%2===1,onClick:()=>n(Ao(c.shortId??c.id))},c.id))]}),t.jsxs("p",{style:{color:f.faint,fontSize:"11px",marginTop:"8px"},children:[i.length," of ",s.length," elements shown"]})]}):t.jsx(wn,{family:e,children:t.jsx("p",{style:{color:f.muted,fontSize:I.sm},children:"Loading model…"})})}function Uc({element:e,zebra:r,onClick:n}){const o=ue[e.layer]??"#9CA3AF";return t.jsxs("div",{onClick:n,style:{display:"grid",gridTemplateColumns:"140px 1fr 120px 120px",padding:"10px 16px",gap:"12px",background:r?"#FAFAF8":f.surface,cursor:"pointer",borderBottom:`1px solid ${f.borderLight}`,alignItems:"center",transition:"background 0.1s"},onMouseEnter:a=>a.currentTarget.style.background="#F0FDF4",onMouseLeave:a=>a.currentTarget.style.background=r?"#FAFAF8":f.surface,children:[t.jsx("code",{style:{fontSize:"11px",color:"#2DD4A8",fontWeight:600,fontFamily:"monospace"},children:e.shortId??e.id}),t.jsx("span",{style:{fontSize:I.sm,color:f.primary,fontWeight:500,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.name}),t.jsx("span",{style:{fontSize:I.xs,color:f.secondary},children:e.kind}),t.jsx("span",{style:{fontSize:"11px",color:o,fontWeight:500,background:o+"15",padding:"2px 6px",borderRadius:"4px",width:"fit-content"},children:e.layer})]})}function wn({family:e,children:r}){const n=je();return t.jsxs("div",{style:{flex:1,overflow:"auto",background:"#F7F7F5",padding:"32px 40px"},children:[t.jsxs("nav",{style:{fontSize:I.xs,color:f.muted,marginBottom:"20px"},children:[t.jsx("button",{onClick:()=>n("/catalog"),style:{background:"none",border:"none",color:"#2DD4A8",cursor:"pointer",padding:0,fontSize:I.xs},children:"Catalog"})," / ",t.jsx("span",{style:{color:f.primary,fontWeight:600},children:e})]}),t.jsx("h1",{style:{fontSize:"20px",fontWeight:700,color:f.primary,marginBottom:"6px",marginTop:0},children:e}),r]})}const Lc=p.lazy(()=>ce(()=>import("./DiagramEditor-BSJuk0w6.js"),__vite__mapDeps([3,1,2,4])).then(e=>({default:e.DiagramEditor}))),qc=p.lazy(()=>ce(()=>import("./DSMView-Em0sO2Uj.js").then(e=>e.D),__vite__mapDeps([5,1,2,4])).then(e=>({default:e.DSMView}))),$c=p.lazy(()=>ce(()=>import("./OntologyViewer-610n8iwf.js"),__vite__mapDeps([6,1,2])).then(e=>({default:e.OntologyViewer}))),Vc=p.lazy(()=>ce(()=>import("./TraceabilityMatrix-Bp0KSjVP.js"),__vite__mapDeps([7,1,2,5,4])).then(e=>({default:e.TraceabilityMatrix}))),Wc=p.lazy(()=>ce(()=>import("./ScenarioEditor-cLJenHgj.js"),__vite__mapDeps([0,1,2])).then(e=>({default:e.ScenarioEditor}))),Hc=p.lazy(()=>ce(()=>import("./ModelDiff-Br7XLC74.js"),__vite__mapDeps([8,1,2])).then(e=>({default:e.ModelDiff}))),Kc=p.lazy(()=>ce(()=>import("./ComplianceWizard-BktwMgJe.js"),__vite__mapDeps([9,1,2])).then(e=>({default:e.ComplianceWizard}))),Gc=p.lazy(()=>ce(()=>import("./StatisticsDashboard-DOJHl1sB.js"),__vite__mapDeps([10,1,2])).then(e=>({default:e.StatisticsDashboard}))),Yc=p.lazy(()=>ce(()=>import("./DhfDashboard-DcZw_zNy.js"),__vite__mapDeps([11,1,2])).then(e=>({default:e.DhfDashboard}))),Jc=p.lazy(()=>ce(()=>import("./DhfWorkbench-ClLIypQX.js"),__vite__mapDeps([12,1,2])).then(e=>({default:e.DhfWorkbench}))),Xc=p.lazy(()=>ce(()=>import("./AiWorkspace-DRN1NVMU.js"),__vite__mapDeps([13,1,2])).then(e=>({default:e.AiWorkspace}))),zo=p.lazy(()=>ce(()=>import("./ElementDetailView-BMgTV4b7.js"),__vite__mapDeps([14,1,2])).then(e=>({default:e.ElementDetailView}))),we=p.lazy(()=>ce(()=>import("./Dashboard-CXbU-BFU.js"),__vite__mapDeps([15,1,2])).then(e=>({default:e.Dashboard}))),Qc=p.lazy(()=>ce(()=>import("./ReviewDashboard-aDWpLpkb.js"),__vite__mapDeps([16,1,2])).then(e=>({default:e.ReviewDashboard}))),Zc=p.lazy(()=>ce(()=>import("./WorkflowWizard-St0tA37H.js"),__vite__mapDeps([17,1,2])).then(e=>({default:e.WorkflowWizard}))),eu=p.lazy(()=>ce(()=>import("./TabularView-C-bodzPd.js"),__vite__mapDeps([18,1,2])).then(e=>({default:e.TabularView}))),tu=p.lazy(()=>ce(()=>import("./ImportView-Dwl7KYVo.js"),__vite__mapDeps([19,1,2])).then(e=>({default:e.ImportView}))),nu=p.lazy(()=>ce(()=>import("./AnalysisWorkspace-BGdkl3PU.js"),__vite__mapDeps([20,1,2])).then(e=>({default:e.AnalysisWorkspace}))),ru=p.lazy(()=>ce(()=>import("./UiScreensWorkspace-CcV0r4cA.js"),__vite__mapDeps([21,1,2,22,4])).then(e=>({default:e.UiScreensWorkspace})));function He(){const e=C(c=>c.activeView),r=C(c=>c.model),n=C(c=>c.activeMode);C(c=>c.selectedViewpointId);const o=C(c=>c.selectedDiagramId),a=C(c=>c.selectDiagram),s=C(c=>c.setActiveMode),i=C(c=>c.setExplorerTab);p.useEffect(()=>{var c;if(e.type==="diagram"){o!==e.diagramId&&a(e.diagramId);const d=(c=r==null?void 0:r.diagrams)==null?void 0:c.find(u=>u.id===e.diagramId);d!=null&&d.viewpointId&&d.viewpointId!=="__model"&&n!=="scenario"&&(n!=="diagram"&&s("diagram"),i("views"))}},[e,n,r,o,a,s,i]);const l=()=>{switch(e.type){case"diagram":return t.jsx(Lc,{diagramId:e.diagramId});case"dsm":return t.jsx(qc,{});case"traceability":return pe("analysis")?t.jsx(Vc,{}):t.jsx(we,{});case"tabular":return t.jsx(eu,{});case"ontology":case"ontology-detail":return pe("ontology")?t.jsx($c,{}):t.jsx(we,{});case"scenario-editor":return t.jsx(Wc,{});case"model-diff":return pe("model-tools")?t.jsx(Hc,{}):t.jsx(we,{});case"compliance-wizard":return pe("model-tools")?t.jsx(Kc,{}):t.jsx(we,{});case"statistics":return pe("model-tools")?t.jsx(Gc,{}):t.jsx(we,{});case"dhf-dashboard":case"dhf-document":return t.jsx(Jc,{});case"dhf-dashboard-legacy":return t.jsx(Yc,{});case"ai":case"ask":case"sysml-generator":return pe("ai-tools")?t.jsx(Xc,{}):t.jsx(we,{});case"element-detail":return t.jsx(zo,{});case"dashboard":return t.jsx(we,{});case"review-dashboard":return pe("model-tools")?t.jsx(Qc,{}):t.jsx(we,{});case"workflow-wizard":return pe("model-tools")?t.jsx(Zc,{}):t.jsx(we,{});case"import":return pe("import")?t.jsx(tu,{}):t.jsx(we,{});case"analysis":return pe("analysis")?t.jsx(nu,{}):t.jsx(we,{});case"ui-screens":return t.jsx(ru,{});case"welcome":default:return t.jsx(Ur,{})}};return(e.type==="welcome"||e.type==="dashboard")&&e.type==="welcome"?t.jsx(Ur,{}):t.jsx(p.Suspense,{fallback:t.jsx(Uo,{}),children:l()})}function Uo(){return t.jsx("div",{className:"flex-1 flex items-center justify-center",style:{background:"#F7F7F5"},children:t.jsxs("div",{className:"text-center",style:{color:"#9CA3AF"},children:[t.jsx("img",{src:"/logo.png",alt:"MEMO Logo",style:{width:"180px",marginBottom:"24px",opacity:.4,filter:"grayscale(1)"},className:"animate-pulse"}),t.jsx("div",{className:"text-xs mt-2",children:"Loading view..."})]})})}const qt="linear-gradient(135deg, #EEF7F3 0%, #EAF2F8 55%, #F2EEF8 100%)";function Ur(){var c;const e=C(d=>d.model),r=C(d=>d.setActiveView),n=C(d=>d.selectElement),o=C(d=>d.setExplorerTab),a=((c=e==null?void 0:e.diagrams)==null?void 0:c.length)??0,s=e?Object.keys(e.elements).length:0,i=p.useMemo(()=>{if(!e)return[];const d=new Map;for(const u of Object.values(e.elements))d.has(u.kind)||d.set(u.kind,u);return Array.from(d.values()).slice(0,8)},[e]);function l(d){n(d),r({type:"element-detail",elementId:d})}return t.jsxs("div",{className:"flex-1 flex flex-col items-center justify-center overflow-auto",style:{background:qt,padding:"48px 40px"},children:[t.jsx("img",{src:"/logo.png",alt:"MEMO Logo",style:{width:"520px",maxWidth:"80vw",maxHeight:"40vh",objectFit:"contain",marginBottom:"-36px",opacity:.97}}),t.jsx("h2",{style:{fontSize:"18px",fontWeight:700,color:"#1B3A4B",marginBottom:"6px",marginTop:0},children:"MEMO Architect"}),t.jsx("p",{style:{fontSize:"14px",color:"#4B6E80",marginTop:0,marginBottom:"24px",maxWidth:"480px",textAlign:"center",lineHeight:"1.6"},children:"SysML-based medical device architecture tool, aligned with ISO 14971 and IEC 62304."}),s>0&&t.jsxs("div",{className:"flex items-center gap-4 mb-6",style:{fontSize:"13px",color:"#4B6E80"},children:[t.jsxs("span",{children:[t.jsx("strong",{style:{color:"#1B3A4B"},children:s})," elements"]}),t.jsx("span",{style:{color:"#CBD5DB"},children:"·"}),t.jsxs("span",{children:[t.jsx("strong",{style:{color:"#1B3A4B"},children:a})," diagrams"]}),(e==null?void 0:e.relationships)&&t.jsxs(t.Fragment,{children:[t.jsx("span",{style:{color:"#CBD5DB"},children:"·"}),t.jsxs("span",{children:[t.jsx("strong",{style:{color:"#1B3A4B"},children:e.relationships.length})," relationships"]})]})]}),t.jsxs("div",{className:"flex gap-3 mb-8",children:[t.jsx("button",{onClick:()=>o("model"),className:"px-5 py-2.5 text-sm font-semibold rounded-lg transition-all",style:{background:"#1B3A4B",color:"#FFFFFF",border:"none",cursor:"pointer"},onMouseEnter:d=>d.currentTarget.style.background="#244D63",onMouseLeave:d=>d.currentTarget.style.background="#1B3A4B",children:"Browse Model"}),a>0&&t.jsxs("button",{onClick:()=>o("views"),className:"px-5 py-2.5 text-sm font-semibold rounded-lg transition-all",style:{background:"#2DD4A815",color:"#1B3A4B",border:"1px solid #2DD4A840",cursor:"pointer"},onMouseEnter:d=>d.currentTarget.style.background="#2DD4A830",onMouseLeave:d=>d.currentTarget.style.background="#2DD4A815",children:["View Diagrams (",a,")"]})]}),i.length>0&&t.jsxs("div",{style:{width:"100%",maxWidth:"680px"},children:[t.jsx("div",{style:{fontSize:"11px",fontWeight:600,color:"#7A9BAA",textTransform:"uppercase",letterSpacing:"0.08em",marginBottom:"10px"},children:"Quick Browse"}),t.jsx("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(180px, 1fr))",gap:"8px"},children:i.map(d=>t.jsxs("button",{onClick:()=>l(d.id),style:{textAlign:"left",background:"rgba(255,255,255,0.7)",border:"1px solid rgba(255,255,255,0.9)",borderRadius:"8px",padding:"10px 12px",cursor:"pointer",transition:"all 0.15s",backdropFilter:"blur(4px)"},onMouseEnter:u=>{u.currentTarget.style.background="rgba(255,255,255,0.95)",u.currentTarget.style.boxShadow="0 2px 8px rgba(0,0,0,0.08)",u.currentTarget.style.transform="translateY(-1px)"},onMouseLeave:u=>{u.currentTarget.style.background="rgba(255,255,255,0.7)",u.currentTarget.style.boxShadow="none",u.currentTarget.style.transform="none"},children:[t.jsx("div",{style:{fontSize:"10px",color:"#7A9BAA",fontWeight:600,textTransform:"uppercase",letterSpacing:"0.05em",marginBottom:"3px"},children:d.kind}),t.jsx("div",{style:{fontSize:"13px",color:"#1B3A4B",fontWeight:500,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:d.name}),d.shortId&&t.jsx("div",{style:{fontSize:"10px",color:"#9CB8C5",marginTop:"2px",fontFamily:"monospace"},children:d.shortId})]},d.id))})]})]})}function ou(){const e=C(u=>u.connected),r=C(u=>u.model),n=C(u=>u.activeView),o=C(u=>u.selectedElementIds),{pathname:a}=Fe(),s=a.startsWith("/catalog"),i=C(u=>u.activeMode),l=C(u=>u.toggleGapBar);p.useEffect(()=>{const u=m=>{(m.metaKey||m.ctrlKey)&&m.shiftKey&&m.key==="P"&&(m.preventDefault(),l())};return window.addEventListener("keydown",u),()=>window.removeEventListener("keydown",u)},[l]);const c=n.type!=="dsm"&&n.type!=="traceability"&&n.type!=="dashboard"&&n.type!=="ai"&&n.type!=="ask"&&n.type!=="sysml-generator"&&n.type!=="analysis"&&n.type!=="ui-screens";p.useEffect(()=>{Ys()||fo()},[]);const d=r?Object.keys(r.elements).length:0;return e?r?d===0?t.jsxs("div",{className:"flex flex-col h-screen",style:{background:qt,color:"#1a1a1a"},children:[t.jsx(Nt,{}),t.jsx("div",{className:"flex-1 flex items-center justify-center",children:t.jsxs("div",{className:"text-center max-w-lg",style:{lineHeight:"1.7"},children:[t.jsx("img",{src:"/logo.png",alt:"MEMO Logo",style:{width:"380px",maxWidth:"80vw",display:"block",margin:"0 auto -20px auto",opacity:.35,filter:"grayscale(1)"}}),t.jsx("h2",{style:{fontSize:"20px",fontWeight:700,color:"#1B3A4B",marginBottom:"8px"},children:"Your model is empty"}),t.jsxs("p",{style:{fontSize:"14px",color:"#4B6E80",marginBottom:"20px"},children:["Connected successfully — but no ",t.jsx("code",{children:".sysml"})," elements found yet."]}),t.jsxs("div",{style:{textAlign:"left",background:"rgba(255,255,255,0.65)",borderRadius:"10px",padding:"16px 20px",fontSize:"13px",border:"1px solid rgba(255,255,255,0.9)"},children:[t.jsx("p",{style:{fontWeight:600,marginBottom:"8px",color:"#1B3A4B"},children:"Get started:"}),t.jsxs("ol",{style:{paddingLeft:"18px",margin:0,color:"#4B6E80"},children:[t.jsxs("li",{style:{marginBottom:"6px"},children:["Create a ",t.jsx("code",{children:".sysml"})," file in your ",t.jsx("code",{children:"model/"})," directory"]}),t.jsxs("li",{style:{marginBottom:"6px"},children:["Import from CSV: ",t.jsx("code",{children:"pnpm memo import template elements"})]}),t.jsxs("li",{children:["Scaffold a new project: ",t.jsx("code",{children:"pnpm memo init my-device"})]})]})]})]})})]}):t.jsxs("div",{className:"flex flex-col h-screen",style:{background:"#F7F7F5",color:"#1a1a1a"},children:[t.jsx(lu,{}),t.jsx(Nt,{}),t.jsx(Pi,{}),t.jsx(Bc,{}),t.jsxs("div",{className:"flex flex-1 overflow-hidden",children:[c&&t.jsx($d,{}),t.jsx("div",{className:"flex-1 flex flex-col",style:{minWidth:0},children:t.jsxs(La,{children:[t.jsx(ke,{path:"/catalog",element:t.jsx(Mc,{})}),t.jsx(ke,{path:"/catalog/:family",element:t.jsx(au,{})}),t.jsx(ke,{path:"/catalog/:family/:shortId",element:t.jsx(su,{})}),t.jsx(ke,{path:"/diagrams",element:t.jsx(Pc,{})}),t.jsx(ke,{path:"/diagrams/:diagramType/:diagramId",element:t.jsx(iu,{})}),Ci().map(u=>t.jsx(ke,{path:u,element:t.jsx(He,{})},u)),t.jsx(ke,{path:"/ontology/:packageName",element:t.jsx(He,{})}),t.jsx(ke,{path:"/ontology/:packageName/:layerId",element:t.jsx(He,{})}),t.jsx(ke,{path:"/dhf/:docId",element:t.jsx(He,{})}),t.jsx(ke,{path:"*",element:t.jsx(He,{})})]})}),n.type!=="element-detail"&&n.type!=="scenario-editor"&&n.type!=="ontology"&&n.type!=="ontology-detail"&&n.type!=="ai"&&n.type!=="ask"&&n.type!=="sysml-generator"&&n.type!=="analysis"&&!s&&i!=="dhf"&&i!=="ontology"&&(o.size>=2?t.jsx(kc,{}):t.jsx(bc,{}))]}),t.jsx(Sc,{}),t.jsx(Cc,{}),t.jsx(jc,{}),t.jsx(Fc,{}),t.jsx(Ac,{}),t.jsx(Rc,{}),t.jsx(Nc,{})]}):t.jsxs("div",{className:"flex flex-col h-screen",style:{background:qt,color:"#1a1a1a"},children:[t.jsx(Nt,{}),t.jsx("div",{className:"flex-1 flex items-center justify-center",children:t.jsxs("div",{className:"text-center",children:[t.jsx("img",{src:"/logo.png",alt:"MEMO Logo",style:{width:"360px",maxWidth:"80vw",display:"block",margin:"0 auto -20px auto",opacity:.45,filter:"grayscale(1)"},className:"animate-pulse"}),t.jsx("h2",{style:{fontSize:"18px",fontWeight:700,color:"#1B3A4B",marginBottom:"6px"},children:"MEMO Architect"}),t.jsx("p",{style:{color:"#6B7280",fontSize:"14px"},children:"Loading model data…"})]})})]}):t.jsxs("div",{className:"flex flex-col h-screen",style:{background:qt,color:"#1a1a1a"},children:[t.jsx(Nt,{}),t.jsx("div",{className:"flex-1 flex items-center justify-center",children:t.jsxs("div",{className:"text-center max-w-md",children:[t.jsx("img",{src:"/logo.png",alt:"MEMO Logo",style:{width:"360px",maxWidth:"80vw",display:"block",margin:"0 auto -20px auto",opacity:.45,filter:"grayscale(1)"},className:"animate-pulse"}),t.jsx("h2",{style:{fontSize:"18px",fontWeight:700,color:"#1B3A4B",marginBottom:"8px"},children:"MEMO Architect"}),t.jsx("p",{style:{color:"#6B7280",fontSize:"14px",marginBottom:"20px"},children:"Connecting to dev server…"}),t.jsxs("div",{style:{color:"#6B7280",fontSize:"13px",lineHeight:"1.6",textAlign:"left",background:"rgba(255,255,255,0.6)",borderRadius:"10px",padding:"16px 20px",border:"1px solid rgba(255,255,255,0.9)"},children:[t.jsx("p",{style:{fontWeight:600,color:"#374151",marginBottom:"8px"},children:"Start the MEMO dev server:"}),t.jsx("code",{style:{display:"block",margin:"0 0 12px",padding:"8px 14px",background:"#1B3A4B",color:"#2DD4A8",borderRadius:"6px",fontFamily:"monospace",fontSize:"13px"},children:"pnpm architect -- dev --port 3000"}),t.jsx("p",{style:{color:"#9CA3AF",marginBottom:"8px"},children:"Or try the example project:"}),t.jsx("code",{style:{display:"block",padding:"8px 14px",background:"#1B3A4B",color:"#2DD4A8",borderRadius:"6px",fontFamily:"monospace",fontSize:"13px"},children:"pnpm example:dev"})]})]})})]})}function au(){const{family:e=""}=In();return t.jsx(zc,{family:e.toUpperCase()})}function su(){const{shortId:e=""}=In(),r=C(a=>a.model),n=C(a=>a.setActiveView),o=C(a=>a.selectElement);return p.useEffect(()=>{if(!r)return;const a=Object.values(r.elements).find(s=>(s.shortId??s.id)===e);a&&(o(a.id),n({type:"element-detail",elementId:a.id}))},[e,r,n,o]),t.jsx(p.Suspense,{fallback:t.jsx(Uo,{}),children:t.jsx(zo,{})})}function iu(){const{diagramId:e=""}=In(),r=C(a=>a.model),n=C(a=>a.selectDiagram),o=C(a=>a.setActiveView);return p.useEffect(()=>{var s;if(!r)return;const a=(s=r.diagrams)==null?void 0:s.find(i=>{var l;return i.id===e||i.id.toLowerCase()===e.toLowerCase()||((l=i.shortId)==null?void 0:l.toLowerCase())===e.toLowerCase()});a&&(n(a.id),o({type:"diagram",diagramId:a.id}))},[e,r,n,o]),t.jsx(He,{})}function lu(){const e=C(b=>b.activeView),r=C(b=>b.model),n=C(b=>b.setActiveView),o=C(b=>b.setActiveMode),a=C(b=>b.selectedElementId),s=je(),i=Fe(),l=ja(),c=p.useRef(!1),d=p.useRef(!1),[u,m]=p.useState(null);return p.useEffect(()=>{const b=!c.current;if(c.current=!0,!b&&l!=="POP")return;const v=wi(i.pathname,i.search);if(i.pathname==="/diagrams"&&(o("diagram"),C.getState().setExplorerTab("views"),C.getState().sidebarCollapsed&&C.getState().toggleSidebar(),e.type!=="welcome"&&(d.current=!0,n({type:"welcome"}))),(v==null?void 0:v.type)==="scenario-editor"&&o("scenario"),v&&JSON.stringify(v)!==JSON.stringify(e)&&(d.current=!0,n(v)),v&&v.type!=="element-detail"&&v.type!=="welcome"){const g=new URLSearchParams(i.search).get("element");g?m(g):C.getState().selectedElementId&&C.getState().inspectElement(null)}},[i.pathname,i.search,l]),p.useEffect(()=>{var b;if(u&&r){const v=((b=Object.values(r.elements).find(w=>(w.shortId??w.id)===u))==null?void 0:b.id)??u;v!==C.getState().selectedElementId&&C.getState().inspectElement(v),m(null)}},[u,r]),p.useEffect(()=>{var v;if(!c.current)return;if(d.current){d.current=!1;return}if(e.type==="welcome"&&i.pathname!=="/"||ki(i.pathname)&&!(e.type==="diagram"||e.type==="element-detail")||Si(i.pathname))return;let b=null;if(e.type==="element-detail"&&r){const w=r.elements[e.elementId];if(w){const g=w.shortId??w.id;b=`/catalog/${g.split("-")[0]}/${g}`}}else if(e.type==="diagram"&&r){const w=(v=r.diagrams)==null?void 0:v.find(g=>g.id===e.diagramId);w&&(b=`/diagrams/${bi(w.diagramType)}/${encodeURIComponent(w.shortId??w.id)}`)}else b=vi(e);if(b&&e.type!=="element-detail"&&e.type!=="welcome"&&a){const w=r==null?void 0:r.elements[a],g=(w==null?void 0:w.shortId)??a,h=b.includes("?")?"&":"?";b+=`${h}element=${encodeURIComponent(g)}`}if(b&&i.pathname+i.search!==b){const g=b.split("?")[0]===i.pathname;s(b,{replace:g})}},[e,r,a]),null}const du=window.location.protocol==="file:"?ps:us;Vo.createRoot(document.getElementById("root")).render(t.jsx(p.StrictMode,{children:t.jsx(du,{children:t.jsx(ou,{})})}));export{Fu as $,Cu as A,Pu as B,f as C,$e as D,ol as E,I as F,at as G,sc as H,gc as I,_u as J,Mu as K,Re as L,Oo as M,je as N,fu as O,nc as P,gr as Q,Ir as R,Fi as S,en as T,yr as U,$i as V,vu as W,sn as X,mu as Y,Wi as Z,ce as _,Du as a,Iu as a0,Bu as a1,pu as a2,mo as a3,Hn as a4,xu as a5,bu as a6,Au as a7,gu as b,hu as c,li as d,ju as e,Le as f,Zt as g,ue as h,xo as i,Ye as j,Do as k,yu as l,Vi as m,Nu as n,Tu as o,hi as p,Ft as q,Ru as r,gi as s,Kt as t,C as u,Hi as v,Eu as w,Su as x,wu as y,ku as z};
|