@memoarchitect/architect 0.8.26 → 0.8.27

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.
Files changed (37) hide show
  1. package/README.md +1 -1
  2. package/dist/assets/{AiWorkspace-Z3BbnmaP.js → AiWorkspace-Dp5oBDww.js} +1 -1
  3. package/dist/assets/{AnalysisWorkspace-DjaUOo7U.js → AnalysisWorkspace-CNHTkSRD.js} +1 -1
  4. package/dist/assets/{ComplianceWizard-DKxZ1z25.js → ComplianceWizard-CAJDtLdv.js} +1 -1
  5. package/dist/assets/{DSMView-DJhmrXYm.js → DSMView-Bv9j1Vk_.js} +1 -1
  6. package/dist/assets/{Dashboard-CYT7KjqU.js → Dashboard-BnOwnA1R.js} +1 -1
  7. package/dist/assets/{DhfDashboard-DacdOtkU.js → DhfDashboard-CQpiYHtW.js} +1 -1
  8. package/dist/assets/{DhfWorkbench-CIhopT8J.js → DhfWorkbench-DHxWuiiL.js} +3 -3
  9. package/dist/assets/{DiagramCanvas-CLE_nv7Y.js → DiagramCanvas-DtLlTvJf.js} +3 -3
  10. package/dist/assets/{DiagramEditor-puQuE8gB.js → DiagramEditor-DP_PiI7K.js} +2 -2
  11. package/dist/assets/{ElementDetailView-D5XvAL_i.js → ElementDetailView-BQsWfbPD.js} +1 -1
  12. package/dist/assets/{ExplorerTreeRow-DUmcEsqf.js → ExplorerTreeRow-CmGPHRI8.js} +1 -1
  13. package/dist/assets/{ImportView-9y1nhQS4.js → ImportView-YFBlvgF_.js} +1 -1
  14. package/dist/assets/{LayerGrid-bhFpOIbe.js → LayerGrid-KXyuibWY.js} +1 -1
  15. package/dist/assets/{LayerTable-RuswZVUI.js → LayerTable-CGsFJsKs.js} +1 -1
  16. package/dist/assets/{MaxGraphCanvas-D3BXQK2y.js → MaxGraphCanvas-BNn0Jxr6.js} +1 -1
  17. package/dist/assets/{ModelDiff-Cl2dhlk3.js → ModelDiff-CJCXuz_h.js} +1 -1
  18. package/dist/assets/{OntologyDecompositionDiagram-aONGngg4.js → OntologyDecompositionDiagram-5JWUI_PB.js} +1 -1
  19. package/dist/assets/{OntologyViewer-VOrKTRuQ.js → OntologyViewer-DxIWCcJM.js} +2 -2
  20. package/dist/assets/{ReviewDashboard--LMXZ3F4.js → ReviewDashboard-Qyj8RRFp.js} +1 -1
  21. package/dist/assets/{ScenarioEditor-bB4iBbgO.js → ScenarioEditor-BIAh6tLX.js} +1 -1
  22. package/dist/assets/{StatisticsDashboard-iXimfU20.js → StatisticsDashboard-CtI1hlfO.js} +1 -1
  23. package/dist/assets/{TabularView-DnIfq-TB.js → TabularView-DXxpRshk.js} +1 -1
  24. package/dist/assets/{TraceabilityMatrix-eilGn6Sr.js → TraceabilityMatrix-qEKmDy8z.js} +1 -1
  25. package/dist/assets/{UiScreensWorkspace-Cs1ivqzc.js → UiScreensWorkspace-BHhs5tcY.js} +1 -1
  26. package/dist/assets/{WorkflowWizard-C7jI6C59.js → WorkflowWizard-BjtGPRsS.js} +1 -1
  27. package/dist/assets/index-Cdkjp-H4.css +1 -0
  28. package/dist/assets/{index-CG-gfw-s.js → index-a2rpMs5Y.js} +70 -70
  29. package/dist/assets/{index.es-DABt8CUc.js → index.es-BwDQ0kmQ.js} +1 -1
  30. package/dist/assets/{jspdf.es.min-G-Vwo9yG.js → jspdf.es.min-KfOikWO5.js} +3 -3
  31. package/dist/assets/{notation-scene-DLZms6VR.js → notation-scene-CxT28i2i.js} +1 -1
  32. package/dist/index.html +2 -2
  33. package/dist-standalone/index.html +183 -183
  34. package/lib/bin/memo-architect.js +15 -6
  35. package/lib/bin/memo-architect.js.map +1 -1
  36. package/package.json +3 -3
  37. package/dist/assets/index-DXB4CKwW.css +0 -1
@@ -1,5 +1,5 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ScenarioEditor-bB4iBbgO.js","assets/reactflow-C9OlmOYw.js","assets/zustand-CrhqMOHB.js","assets/DiagramEditor-puQuE8gB.js","assets/DiagramToolbarControls-XMGLx08e.js","assets/DSMView-DJhmrXYm.js","assets/OntologyViewer-VOrKTRuQ.js","assets/TraceabilityMatrix-eilGn6Sr.js","assets/ModelDiff-Cl2dhlk3.js","assets/ComplianceWizard-DKxZ1z25.js","assets/StatisticsDashboard-iXimfU20.js","assets/DhfDashboard-DacdOtkU.js","assets/DhfWorkbench-CIhopT8J.js","assets/AiWorkspace-Z3BbnmaP.js","assets/ElementDetailView-D5XvAL_i.js","assets/Dashboard-CYT7KjqU.js","assets/ReviewDashboard--LMXZ3F4.js","assets/WorkflowWizard-C7jI6C59.js","assets/TabularView-DnIfq-TB.js","assets/ImportView-9y1nhQS4.js","assets/AnalysisWorkspace-DjaUOo7U.js","assets/UiScreensWorkspace-Cs1ivqzc.js","assets/ExplorerTreeRow-DUmcEsqf.js"])))=>i.map(i=>d[i]);
2
- import{r as wa,j as t}from"./reactflow-C9OlmOYw.js";import{a as u,b as jr,W as ka}from"./zustand-CrhqMOHB.js";(function(){const r=document.createElement("link").relList;if(r&&r.supports&&r.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))a(o);new MutationObserver(o=>{for(const s of o)if(s.type==="childList")for(const i of s.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&a(i)}).observe(document,{childList:!0,subtree:!0});function n(o){const s={};return o.integrity&&(s.integrity=o.integrity),o.referrerPolicy&&(s.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?s.credentials="include":o.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function a(o){if(o.ep)return;o.ep=!0;const s=n(o);fetch(o.href,s)}})();var ft={},Pn;function Sa(){if(Pn)return ft;Pn=1;var e=wa();return ft.createRoot=e.createRoot,ft.hydrateRoot=e.hydrateRoot,ft}var Ea=Sa();/**
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ScenarioEditor-BIAh6tLX.js","assets/reactflow-C9OlmOYw.js","assets/zustand-CrhqMOHB.js","assets/DiagramEditor-DP_PiI7K.js","assets/DiagramToolbarControls-XMGLx08e.js","assets/DSMView-Bv9j1Vk_.js","assets/OntologyViewer-DxIWCcJM.js","assets/TraceabilityMatrix-qEKmDy8z.js","assets/ModelDiff-CJCXuz_h.js","assets/ComplianceWizard-CAJDtLdv.js","assets/StatisticsDashboard-CtI1hlfO.js","assets/DhfDashboard-CQpiYHtW.js","assets/DhfWorkbench-DHxWuiiL.js","assets/AiWorkspace-Dp5oBDww.js","assets/ElementDetailView-BQsWfbPD.js","assets/Dashboard-BnOwnA1R.js","assets/ReviewDashboard-Qyj8RRFp.js","assets/WorkflowWizard-BjtGPRsS.js","assets/TabularView-DXxpRshk.js","assets/ImportView-YFBlvgF_.js","assets/AnalysisWorkspace-CNHTkSRD.js","assets/UiScreensWorkspace-BHhs5tcY.js","assets/ExplorerTreeRow-CmGPHRI8.js"])))=>i.map(i=>d[i]);
2
+ import{r as ba,j as t}from"./reactflow-C9OlmOYw.js";import{a as u,b as Cr,W as va}from"./zustand-CrhqMOHB.js";(function(){const r=document.createElement("link").relList;if(r&&r.supports&&r.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))a(o);new MutationObserver(o=>{for(const s of o)if(s.type==="childList")for(const i of s.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&a(i)}).observe(document,{childList:!0,subtree:!0});function n(o){const s={};return o.integrity&&(s.integrity=o.integrity),o.referrerPolicy&&(s.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?s.credentials="include":o.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function a(o){if(o.ep)return;o.ep=!0;const s=n(o);fetch(o.href,s)}})();var xt={},On;function wa(){if(On)return xt;On=1;var e=ba();return xt.createRoot=e.createRoot,xt.hydrateRoot=e.hydrateRoot,xt}var ka=wa();/**
3
3
  * react-router v7.13.2
4
4
  *
5
5
  * Copyright (c) Remix Software Inc.
@@ -8,12 +8,12 @@ import{r as wa,j as t}from"./reactflow-C9OlmOYw.js";import{a as u,b as jr,W as k
8
8
  * LICENSE.md file in the root directory of this source tree.
9
9
  *
10
10
  * @license MIT
11
- */var On="popstate";function Un(e){return typeof e=="object"&&e!=null&&"pathname"in e&&"search"in e&&"hash"in e&&"state"in e&&"key"in e}function Ca(e={}){function r(a,o){var d;let s=(d=o.state)==null?void 0:d.masked,{pathname:i,search:l,hash:c}=s||a.location;return Nt("",{pathname:i,search:l,hash:c},o.state&&o.state.usr||null,o.state&&o.state.key||"default",s?{pathname:a.location.pathname,search:a.location.search,hash:a.location.hash}:void 0)}function n(a,o){return typeof o=="string"?o:Ve(o)}return Dr(r,n,null,e)}function ja(e={}){function r(o,s){let{pathname:i="/",search:l="",hash:c=""}=_e(o.location.hash.substring(1));return!i.startsWith("/")&&!i.startsWith(".")&&(i="/"+i),Nt("",{pathname:i,search:l,hash:c},s.state&&s.state.usr||null,s.state&&s.state.key||"default")}function n(o,s){let i=o.document.querySelector("base"),l="";if(i&&i.getAttribute("href")){let c=o.location.href,d=c.indexOf("#");l=d===-1?c:c.slice(0,d)}return l+"#"+(typeof s=="string"?s:Ve(s))}function a(o,s){xe(o.pathname.charAt(0)==="/",`relative pathnames are not supported in hash history.push(${JSON.stringify(s)})`)}return Dr(r,n,a,e)}function ne(e,r){if(e===!1||e===null||typeof e>"u")throw new Error(r)}function xe(e,r){if(!e){typeof console<"u"&&console.warn(r);try{throw new Error(r)}catch{}}}function Da(){return Math.random().toString(36).substring(2,10)}function zn(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 Nt(e,r,n=null,a,o){return{pathname:typeof e=="string"?e:e.pathname,search:"",hash:"",...typeof r=="string"?_e(r):r,state:n,key:r&&r.key||a||Da(),unstable_mask:o}}function Ve({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 _e(e){let r={};if(e){let n=e.indexOf("#");n>=0&&(r.hash=e.substring(n),e=e.substring(0,n));let a=e.indexOf("?");a>=0&&(r.search=e.substring(a),e=e.substring(0,a)),e&&(r.pathname=e)}return r}function Dr(e,r,n,a={}){let{window:o=document.defaultView,v5Compat:s=!1}=a,i=o.history,l="POP",c=null,d=p();d==null&&(d=0,i.replaceState({...i.state,idx:d},""));function p(){return(i.state||{idx:null}).idx}function f(){l="POP";let h=p(),m=h==null?null:h-d;d=h,c&&c({action:l,location:g.location,delta:m})}function b(h,m){l="PUSH";let B=Un(h)?h:Nt(g.location,h,m);n&&n(B,h),d=p()+1;let T=zn(B,d),D=g.createHref(B.unstable_mask||B);try{i.pushState(T,"",D)}catch(A){if(A instanceof DOMException&&A.name==="DataCloneError")throw A;o.location.assign(D)}s&&c&&c({action:l,location:g.location,delta:1})}function w(h,m){l="REPLACE";let B=Un(h)?h:Nt(g.location,h,m);n&&n(B,h),d=p();let T=zn(B,d),D=g.createHref(B.unstable_mask||B);i.replaceState(T,"",D),s&&c&&c({action:l,location:g.location,delta:0})}function S(h){return Ba(h)}let g={get action(){return l},get location(){return e(o,i)},listen(h){if(c)throw new Error("A history only accepts one active listener");return o.addEventListener(On,f),c=h,()=>{o.removeEventListener(On,f),c=null}},createHref(h){return r(o,h)},createURL:S,encodeLocation(h){let m=S(h);return{pathname:m.pathname,search:m.search,hash:m.hash}},push:b,replace:w,go(h){return i.go(h)}};return g}function Ba(e,r=!1){let n="http://localhost";typeof window<"u"&&(n=window.location.origin!=="null"?window.location.origin:window.location.href),ne(n,"No window.location.(origin|href) available to create URL");let a=typeof e=="string"?e:Ve(e);return a=a.replace(/ $/,"%20"),!r&&a.startsWith("//")&&(a=n+a),new URL(a,n)}function Br(e,r,n="/"){return Aa(e,r,n,!1)}function Aa(e,r,n,a){let o=typeof r=="string"?_e(r):r,s=Be(o.pathname||"/",n);if(s==null)return null;let i=Ar(e);Fa(i);let l=null;for(let c=0;l==null&&c<i.length;++c){let d=qa(s);l=Ua(i[c],d,a)}return l}function Ar(e,r=[],n=[],a="",o=!1){let s=(i,l,c=o,d)=>{let p={relativePath:d===void 0?i.path||"":d,caseSensitive:i.caseSensitive===!0,childrenIndex:l,route:i};if(p.relativePath.startsWith("/")){if(!p.relativePath.startsWith(a)&&c)return;ne(p.relativePath.startsWith(a),`Absolute route path "${p.relativePath}" nested under path "${a}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),p.relativePath=p.relativePath.slice(a.length)}let f=ve([a,p.relativePath]),b=n.concat(p);i.children&&i.children.length>0&&(ne(i.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${f}".`),Ar(i.children,r,b,f,c)),!(i.path==null&&!i.index)&&r.push({path:f,score:Pa(f,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 Fr(i.path))s(i,l,!0,d)}),r}function Fr(e){let r=e.split("/");if(r.length===0)return[];let[n,...a]=r,o=n.endsWith("?"),s=n.replace(/\?$/,"");if(a.length===0)return o?[s,""]:[s];let i=Fr(a.join("/")),l=[];return l.push(...i.map(c=>c===""?s:[s,c].join("/"))),o&&l.push(...i),l.map(c=>e.startsWith("/")&&c===""?"/":c)}function Fa(e){e.sort((r,n)=>r.score!==n.score?n.score-r.score:Oa(r.routesMeta.map(a=>a.childrenIndex),n.routesMeta.map(a=>a.childrenIndex)))}var Na=/^:[\w-]+$/,Ta=3,Ra=2,Ia=1,Ma=10,_a=-2,qn=e=>e==="*";function Pa(e,r){let n=e.split("/"),a=n.length;return n.some(qn)&&(a+=_a),r&&(a+=Ra),n.filter(o=>!qn(o)).reduce((o,s)=>o+(Na.test(s)?Ta:s===""?Ia:Ma),a)}function Oa(e,r){return e.length===r.length&&e.slice(0,-1).every((a,o)=>a===r[o])?e[e.length-1]-r[r.length-1]:0}function Ua(e,r,n=!1){let{routesMeta:a}=e,o={},s="/",i=[];for(let l=0;l<a.length;++l){let c=a[l],d=l===a.length-1,p=s==="/"?r:r.slice(s.length)||"/",f=Tt({path:c.relativePath,caseSensitive:c.caseSensitive,end:d},p),b=c.route;if(!f&&d&&n&&!a[a.length-1].route.index&&(f=Tt({path:c.relativePath,caseSensitive:c.caseSensitive,end:!1},p)),!f)return null;Object.assign(o,f.params),i.push({params:o,pathname:ve([s,f.pathname]),pathnameBase:Wa(ve([s,f.pathnameBase])),route:b}),f.pathnameBase!=="/"&&(s=ve([s,f.pathnameBase]))}return i}function Tt(e,r){typeof e=="string"&&(e={path:e,caseSensitive:!1,end:!0});let[n,a]=za(e.path,e.caseSensitive,e.end),o=r.match(n);if(!o)return null;let s=o[0],i=s.replace(/(.)\/+$/,"$1"),l=o.slice(1);return{params:a.reduce((d,{paramName:p,isOptional:f},b)=>{if(p==="*"){let S=l[b]||"";i=s.slice(0,s.length-S.length).replace(/(.)\/+$/,"$1")}const w=l[b];return f&&!w?d[p]=void 0:d[p]=(w||"").replace(/%2F/g,"/"),d},{}),pathname:s,pathnameBase:i,pattern:e}}function za(e,r=!1,n=!0){xe(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 a=[],o="^"+e.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(i,l,c,d,p)=>{if(a.push({paramName:l,isOptional:c!=null}),c){let f=p.charAt(d+i.length);return f&&f!=="/"?"/([^\\/]*)":"(?:/([^\\/]*))?"}return"/([^\\/]+)"}).replace(/\/([\w-]+)\?(\/|$)/g,"(/$1)?$2");return e.endsWith("*")?(a.push({paramName:"*"}),o+=e==="*"||e==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):n?o+="\\/*$":e!==""&&e!=="/"&&(o+="(?:(?=\\/|$))"),[new RegExp(o,r?void 0:"i"),a]}function qa(e){try{return e.split("/").map(r=>decodeURIComponent(r).replace(/\//g,"%2F")).join("/")}catch(r){return xe(!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 Be(e,r){if(r==="/")return e;if(!e.toLowerCase().startsWith(r.toLowerCase()))return null;let n=r.endsWith("/")?r.length-1:r.length,a=e.charAt(n);return a&&a!=="/"?null:e.slice(n)||"/"}var La=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i;function Va(e,r="/"){let{pathname:n,search:a="",hash:o=""}=typeof e=="string"?_e(e):e,s;return n?(n=n.replace(/\/\/+/g,"/"),n.startsWith("/")?s=Ln(n.substring(1),"/"):s=Ln(n,r)):s=r,{pathname:s,search:Ha(a),hash:Ka(o)}}function Ln(e,r){let n=r.replace(/\/+$/,"").split("/");return e.split("/").forEach(o=>{o===".."?n.length>1&&n.pop():o!=="."&&n.push(o)}),n.length>1?n.join("/"):"/"}function Vt(e,r,n,a){return`Cannot include a '${e}' character in a manually specified \`to.${r}\` field [${JSON.stringify(a)}]. 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 $a(e){return e.filter((r,n)=>n===0||r.route.path&&r.route.path.length>0)}function Nr(e){let r=$a(e);return r.map((n,a)=>a===r.length-1?n.pathname:n.pathnameBase)}function wn(e,r,n,a=!1){let o;typeof e=="string"?o=_e(e):(o={...e},ne(!o.pathname||!o.pathname.includes("?"),Vt("?","pathname","search",o)),ne(!o.pathname||!o.pathname.includes("#"),Vt("#","pathname","hash",o)),ne(!o.search||!o.search.includes("#"),Vt("#","search","hash",o)));let s=e===""||o.pathname==="",i=s?"/":o.pathname,l;if(i==null)l=n;else{let f=r.length-1;if(!a&&i.startsWith("..")){let b=i.split("/");for(;b[0]==="..";)b.shift(),f-=1;o.pathname=b.join("/")}l=f>=0?r[f]:"/"}let c=Va(o,l),d=i&&i!=="/"&&i.endsWith("/"),p=(s||i===".")&&n.endsWith("/");return!c.pathname.endsWith("/")&&(d||p)&&(c.pathname+="/"),c}var ve=e=>e.join("/").replace(/\/\/+/g,"/"),Wa=e=>e.replace(/\/+$/,"").replace(/^\/*/,"/"),Ha=e=>!e||e==="?"?"":e.startsWith("?")?e:"?"+e,Ka=e=>!e||e==="#"?"":e.startsWith("#")?e:"#"+e,Ga=class{constructor(e,r,n,a=!1){this.status=e,this.statusText=r||"",this.internal=a,n instanceof Error?(this.data=n.toString(),this.error=n):this.data=n}};function Ya(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.internal=="boolean"&&"data"in e}function Ja(e){return e.map(r=>r.route.path).filter(Boolean).join("/").replace(/\/\/*/g,"/")||"/"}var Tr=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function Rr(e,r){let n=e;if(typeof n!="string"||!La.test(n))return{absoluteURL:void 0,isExternal:!1,to:n};let a=n,o=!1;if(Tr)try{let s=new URL(window.location.href),i=n.startsWith("//")?new URL(s.protocol+n):new URL(n),l=Be(i.pathname,r);i.origin===s.origin&&l!=null?n=l+i.search+i.hash:o=!0}catch{xe(!1,`<Link to="${n}"> contains an invalid URL which will probably break when clicked - please update to a valid URL path.`)}return{absoluteURL:a,isExternal:o,to:n}}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");var Ir=["POST","PUT","PATCH","DELETE"];new Set(Ir);var Xa=["GET",...Ir];new Set(Xa);var Ke=u.createContext(null);Ke.displayName="DataRouter";var Pt=u.createContext(null);Pt.displayName="DataRouterState";var Qa=u.createContext(!1),Mr=u.createContext({isTransitioning:!1});Mr.displayName="ViewTransition";var Za=u.createContext(new Map);Za.displayName="Fetchers";var eo=u.createContext(null);eo.displayName="Await";var me=u.createContext(null);me.displayName="Navigation";var Ge=u.createContext(null);Ge.displayName="Location";var we=u.createContext({outlet:null,matches:[],isDataRoute:!1});we.displayName="Route";var kn=u.createContext(null);kn.displayName="RouteError";var _r="REACT_ROUTER_ERROR",to="REDIRECT",no="ROUTE_ERROR_RESPONSE";function ro(e){if(e.startsWith(`${_r}:${to}:{`))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 ao(e){if(e.startsWith(`${_r}:${no}:{`))try{let r=JSON.parse(e.slice(40));if(typeof r=="object"&&r&&typeof r.status=="number"&&typeof r.statusText=="string")return new Ga(r.status,r.statusText,r.data)}catch{}}function oo(e,{relative:r}={}){ne(ut(),"useHref() may be used only in the context of a <Router> component.");let{basename:n,navigator:a}=u.useContext(me),{hash:o,pathname:s,search:i}=pt(e,{relative:r}),l=s;return n!=="/"&&(l=s==="/"?n:ve([n,s])),a.createHref({pathname:l,search:i,hash:o})}function ut(){return u.useContext(Ge)!=null}function ke(){return ne(ut(),"useLocation() may be used only in the context of a <Router> component."),u.useContext(Ge).location}function so(){return u.useContext(Ge).navigationType}var Pr="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function Or(e){u.useContext(me).static||u.useLayoutEffect(e)}function Se(){let{isDataRoute:e}=u.useContext(we);return e?vo():io()}function io(){ne(ut(),"useNavigate() may be used only in the context of a <Router> component.");let e=u.useContext(Ke),{basename:r,navigator:n}=u.useContext(me),{matches:a}=u.useContext(we),{pathname:o}=ke(),s=JSON.stringify(Nr(a)),i=u.useRef(!1);return Or(()=>{i.current=!0}),u.useCallback((c,d={})=>{if(xe(i.current,Pr),!i.current)return;if(typeof c=="number"){n.go(c);return}let p=wn(c,JSON.parse(s),o,d.relative==="path");e==null&&r!=="/"&&(p.pathname=p.pathname==="/"?r:ve([r,p.pathname])),(d.replace?n.replace:n.push)(p,d.state,d)},[r,n,s,o,e])}u.createContext(null);function Sn(){let{matches:e}=u.useContext(we),r=e[e.length-1];return r?r.params:{}}function pt(e,{relative:r}={}){let{matches:n}=u.useContext(we),{pathname:a}=ke(),o=JSON.stringify(Nr(n));return u.useMemo(()=>wn(e,JSON.parse(o),a,r==="path"),[e,o,a,r])}function lo(e,r){return Ur(e,r)}function Ur(e,r,n){var h;ne(ut(),"useRoutes() may be used only in the context of a <Router> component.");let{navigator:a}=u.useContext(me),{matches:o}=u.useContext(we),s=o[o.length-1],i=s?s.params:{},l=s?s.pathname:"/",c=s?s.pathnameBase:"/",d=s&&s.route;{let m=d&&d.path||"";qr(l,!d||m.endsWith("*")||m.endsWith("*?"),`You rendered descendant <Routes> (or called \`useRoutes()\`) at "${l}" (under <Route path="${m}">) 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 Un="popstate";function zn(e){return typeof e=="object"&&e!=null&&"pathname"in e&&"search"in e&&"hash"in e&&"state"in e&&"key"in e}function Sa(e={}){function r(a,o){var d;let s=(d=o.state)==null?void 0:d.masked,{pathname:i,search:l,hash:c}=s||a.location;return Mt("",{pathname:i,search:l,hash:c},o.state&&o.state.usr||null,o.state&&o.state.key||"default",s?{pathname:a.location.pathname,search:a.location.search,hash:a.location.hash}:void 0)}function n(a,o){return typeof o=="string"?o:He(o)}return jr(r,n,null,e)}function Ea(e={}){function r(o,s){let{pathname:i="/",search:l="",hash:c=""}=Ue(o.location.hash.substring(1));return!i.startsWith("/")&&!i.startsWith(".")&&(i="/"+i),Mt("",{pathname:i,search:l,hash:c},s.state&&s.state.usr||null,s.state&&s.state.key||"default")}function n(o,s){let i=o.document.querySelector("base"),l="";if(i&&i.getAttribute("href")){let c=o.location.href,d=c.indexOf("#");l=d===-1?c:c.slice(0,d)}return l+"#"+(typeof s=="string"?s:He(s))}function a(o,s){we(o.pathname.charAt(0)==="/",`relative pathnames are not supported in hash history.push(${JSON.stringify(s)})`)}return jr(r,n,a,e)}function re(e,r){if(e===!1||e===null||typeof e>"u")throw new Error(r)}function we(e,r){if(!e){typeof console<"u"&&console.warn(r);try{throw new Error(r)}catch{}}}function Ca(){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 Mt(e,r,n=null,a,o){return{pathname:typeof e=="string"?e:e.pathname,search:"",hash:"",...typeof r=="string"?Ue(r):r,state:n,key:r&&r.key||a||Ca(),unstable_mask:o}}function He({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 Ue(e){let r={};if(e){let n=e.indexOf("#");n>=0&&(r.hash=e.substring(n),e=e.substring(0,n));let a=e.indexOf("?");a>=0&&(r.search=e.substring(a),e=e.substring(0,a)),e&&(r.pathname=e)}return r}function jr(e,r,n,a={}){let{window:o=document.defaultView,v5Compat:s=!1}=a,i=o.history,l="POP",c=null,d=p();d==null&&(d=0,i.replaceState({...i.state,idx:d},""));function p(){return(i.state||{idx:null}).idx}function f(){l="POP";let h=p(),m=h==null?null:h-d;d=h,c&&c({action:l,location:x.location,delta:m})}function k(h,m){l="PUSH";let B=zn(h)?h:Mt(x.location,h,m);n&&n(B,h),d=p()+1;let T=qn(B,d),A=x.createHref(B.unstable_mask||B);try{i.pushState(T,"",A)}catch(U){if(U instanceof DOMException&&U.name==="DataCloneError")throw U;o.location.assign(A)}s&&c&&c({action:l,location:x.location,delta:1})}function w(h,m){l="REPLACE";let B=zn(h)?h:Mt(x.location,h,m);n&&n(B,h),d=p();let T=qn(B,d),A=x.createHref(B.unstable_mask||B);i.replaceState(T,"",A),s&&c&&c({action:l,location:x.location,delta:0})}function S(h){return ja(h)}let x={get action(){return l},get location(){return e(o,i)},listen(h){if(c)throw new Error("A history only accepts one active listener");return o.addEventListener(Un,f),c=h,()=>{o.removeEventListener(Un,f),c=null}},createHref(h){return r(o,h)},createURL:S,encodeLocation(h){let m=S(h);return{pathname:m.pathname,search:m.search,hash:m.hash}},push:k,replace:w,go(h){return i.go(h)}};return x}function ja(e,r=!1){let n="http://localhost";typeof window<"u"&&(n=window.location.origin!=="null"?window.location.origin:window.location.href),re(n,"No window.location.(origin|href) available to create URL");let a=typeof e=="string"?e:He(e);return a=a.replace(/ $/,"%20"),!r&&a.startsWith("//")&&(a=n+a),new URL(a,n)}function Dr(e,r,n="/"){return Da(e,r,n,!1)}function Da(e,r,n,a){let o=typeof r=="string"?Ue(r):r,s=Fe(o.pathname||"/",n);if(s==null)return null;let i=Br(e);Ba(i);let l=null;for(let c=0;l==null&&c<i.length;++c){let d=Ua(s);l=Pa(i[c],d,a)}return l}function Br(e,r=[],n=[],a="",o=!1){let s=(i,l,c=o,d)=>{let p={relativePath:d===void 0?i.path||"":d,caseSensitive:i.caseSensitive===!0,childrenIndex:l,route:i};if(p.relativePath.startsWith("/")){if(!p.relativePath.startsWith(a)&&c)return;re(p.relativePath.startsWith(a),`Absolute route path "${p.relativePath}" nested under path "${a}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),p.relativePath=p.relativePath.slice(a.length)}let f=Ce([a,p.relativePath]),k=n.concat(p);i.children&&i.children.length>0&&(re(i.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${f}".`),Br(i.children,r,k,f,c)),!(i.path==null&&!i.index)&&r.push({path:f,score:Ma(f,i.index),routesMeta:k})};return e.forEach((i,l)=>{var c;if(i.path===""||!((c=i.path)!=null&&c.includes("?")))s(i,l);else for(let d of Ar(i.path))s(i,l,!0,d)}),r}function Ar(e){let r=e.split("/");if(r.length===0)return[];let[n,...a]=r,o=n.endsWith("?"),s=n.replace(/\?$/,"");if(a.length===0)return o?[s,""]:[s];let i=Ar(a.join("/")),l=[];return l.push(...i.map(c=>c===""?s:[s,c].join("/"))),o&&l.push(...i),l.map(c=>e.startsWith("/")&&c===""?"/":c)}function Ba(e){e.sort((r,n)=>r.score!==n.score?n.score-r.score:_a(r.routesMeta.map(a=>a.childrenIndex),n.routesMeta.map(a=>a.childrenIndex)))}var Aa=/^:[\w-]+$/,Fa=3,Na=2,Ta=1,Ra=10,Ia=-2,Ln=e=>e==="*";function Ma(e,r){let n=e.split("/"),a=n.length;return n.some(Ln)&&(a+=Ia),r&&(a+=Na),n.filter(o=>!Ln(o)).reduce((o,s)=>o+(Aa.test(s)?Fa:s===""?Ta:Ra),a)}function _a(e,r){return e.length===r.length&&e.slice(0,-1).every((a,o)=>a===r[o])?e[e.length-1]-r[r.length-1]:0}function Pa(e,r,n=!1){let{routesMeta:a}=e,o={},s="/",i=[];for(let l=0;l<a.length;++l){let c=a[l],d=l===a.length-1,p=s==="/"?r:r.slice(s.length)||"/",f=_t({path:c.relativePath,caseSensitive:c.caseSensitive,end:d},p),k=c.route;if(!f&&d&&n&&!a[a.length-1].route.index&&(f=_t({path:c.relativePath,caseSensitive:c.caseSensitive,end:!1},p)),!f)return null;Object.assign(o,f.params),i.push({params:o,pathname:Ce([s,f.pathname]),pathnameBase:Va(Ce([s,f.pathnameBase])),route:k}),f.pathnameBase!=="/"&&(s=Ce([s,f.pathnameBase]))}return i}function _t(e,r){typeof e=="string"&&(e={path:e,caseSensitive:!1,end:!0});let[n,a]=Oa(e.path,e.caseSensitive,e.end),o=r.match(n);if(!o)return null;let s=o[0],i=s.replace(/(.)\/+$/,"$1"),l=o.slice(1);return{params:a.reduce((d,{paramName:p,isOptional:f},k)=>{if(p==="*"){let S=l[k]||"";i=s.slice(0,s.length-S.length).replace(/(.)\/+$/,"$1")}const w=l[k];return f&&!w?d[p]=void 0:d[p]=(w||"").replace(/%2F/g,"/"),d},{}),pathname:s,pathnameBase:i,pattern:e}}function Oa(e,r=!1,n=!0){we(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 a=[],o="^"+e.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(i,l,c,d,p)=>{if(a.push({paramName:l,isOptional:c!=null}),c){let f=p.charAt(d+i.length);return f&&f!=="/"?"/([^\\/]*)":"(?:/([^\\/]*))?"}return"/([^\\/]+)"}).replace(/\/([\w-]+)\?(\/|$)/g,"(/$1)?$2");return e.endsWith("*")?(a.push({paramName:"*"}),o+=e==="*"||e==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):n?o+="\\/*$":e!==""&&e!=="/"&&(o+="(?:(?=\\/|$))"),[new RegExp(o,r?void 0:"i"),a]}function Ua(e){try{return e.split("/").map(r=>decodeURIComponent(r).replace(/\//g,"%2F")).join("/")}catch(r){return we(!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 Fe(e,r){if(r==="/")return e;if(!e.toLowerCase().startsWith(r.toLowerCase()))return null;let n=r.endsWith("/")?r.length-1:r.length,a=e.charAt(n);return a&&a!=="/"?null:e.slice(n)||"/"}var za=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i;function qa(e,r="/"){let{pathname:n,search:a="",hash:o=""}=typeof e=="string"?Ue(e):e,s;return n?(n=n.replace(/\/\/+/g,"/"),n.startsWith("/")?s=Vn(n.substring(1),"/"):s=Vn(n,r)):s=r,{pathname:s,search:$a(a),hash:Wa(o)}}function Vn(e,r){let n=r.replace(/\/+$/,"").split("/");return e.split("/").forEach(o=>{o===".."?n.length>1&&n.pop():o!=="."&&n.push(o)}),n.length>1?n.join("/"):"/"}function Ht(e,r,n,a){return`Cannot include a '${e}' character in a manually specified \`to.${r}\` field [${JSON.stringify(a)}]. 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 Fr(e){let r=La(e);return r.map((n,a)=>a===r.length-1?n.pathname:n.pathnameBase)}function En(e,r,n,a=!1){let o;typeof e=="string"?o=Ue(e):(o={...e},re(!o.pathname||!o.pathname.includes("?"),Ht("?","pathname","search",o)),re(!o.pathname||!o.pathname.includes("#"),Ht("#","pathname","hash",o)),re(!o.search||!o.search.includes("#"),Ht("#","search","hash",o)));let s=e===""||o.pathname==="",i=s?"/":o.pathname,l;if(i==null)l=n;else{let f=r.length-1;if(!a&&i.startsWith("..")){let k=i.split("/");for(;k[0]==="..";)k.shift(),f-=1;o.pathname=k.join("/")}l=f>=0?r[f]:"/"}let c=qa(o,l),d=i&&i!=="/"&&i.endsWith("/"),p=(s||i===".")&&n.endsWith("/");return!c.pathname.endsWith("/")&&(d||p)&&(c.pathname+="/"),c}var Ce=e=>e.join("/").replace(/\/\/+/g,"/"),Va=e=>e.replace(/\/+$/,"").replace(/^\/*/,"/"),$a=e=>!e||e==="?"?"":e.startsWith("?")?e:"?"+e,Wa=e=>!e||e==="#"?"":e.startsWith("#")?e:"#"+e,Ha=class{constructor(e,r,n,a=!1){this.status=e,this.statusText=r||"",this.internal=a,n instanceof Error?(this.data=n.toString(),this.error=n):this.data=n}};function Ka(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.internal=="boolean"&&"data"in e}function Ga(e){return e.map(r=>r.route.path).filter(Boolean).join("/").replace(/\/\/*/g,"/")||"/"}var Nr=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function Tr(e,r){let n=e;if(typeof n!="string"||!za.test(n))return{absoluteURL:void 0,isExternal:!1,to:n};let a=n,o=!1;if(Nr)try{let s=new URL(window.location.href),i=n.startsWith("//")?new URL(s.protocol+n):new URL(n),l=Fe(i.pathname,r);i.origin===s.origin&&l!=null?n=l+i.search+i.hash:o=!0}catch{we(!1,`<Link to="${n}"> contains an invalid URL which will probably break when clicked - please update to a valid URL path.`)}return{absoluteURL:a,isExternal:o,to:n}}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");var Rr=["POST","PUT","PATCH","DELETE"];new Set(Rr);var Ya=["GET",...Rr];new Set(Ya);var Xe=u.createContext(null);Xe.displayName="DataRouter";var zt=u.createContext(null);zt.displayName="DataRouterState";var Ja=u.createContext(!1),Ir=u.createContext({isTransitioning:!1});Ir.displayName="ViewTransition";var Xa=u.createContext(new Map);Xa.displayName="Fetchers";var Qa=u.createContext(null);Qa.displayName="Await";var ye=u.createContext(null);ye.displayName="Navigation";var Qe=u.createContext(null);Qe.displayName="Location";var je=u.createContext({outlet:null,matches:[],isDataRoute:!1});je.displayName="Route";var Cn=u.createContext(null);Cn.displayName="RouteError";var Mr="REACT_ROUTER_ERROR",Za="REDIRECT",eo="ROUTE_ERROR_RESPONSE";function to(e){if(e.startsWith(`${Mr}:${Za}:{`))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 no(e){if(e.startsWith(`${Mr}:${eo}:{`))try{let r=JSON.parse(e.slice(40));if(typeof r=="object"&&r&&typeof r.status=="number"&&typeof r.statusText=="string")return new Ha(r.status,r.statusText,r.data)}catch{}}function ro(e,{relative:r}={}){re(ht(),"useHref() may be used only in the context of a <Router> component.");let{basename:n,navigator:a}=u.useContext(ye),{hash:o,pathname:s,search:i}=yt(e,{relative:r}),l=s;return n!=="/"&&(l=s==="/"?n:Ce([n,s])),a.createHref({pathname:l,search:i,hash:o})}function ht(){return u.useContext(Qe)!=null}function De(){return re(ht(),"useLocation() may be used only in the context of a <Router> component."),u.useContext(Qe).location}function ao(){return u.useContext(Qe).navigationType}var _r="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function Pr(e){u.useContext(ye).static||u.useLayoutEffect(e)}function ke(){let{isDataRoute:e}=u.useContext(je);return e?xo():oo()}function oo(){re(ht(),"useNavigate() may be used only in the context of a <Router> component.");let e=u.useContext(Xe),{basename:r,navigator:n}=u.useContext(ye),{matches:a}=u.useContext(je),{pathname:o}=De(),s=JSON.stringify(Fr(a)),i=u.useRef(!1);return Pr(()=>{i.current=!0}),u.useCallback((c,d={})=>{if(we(i.current,_r),!i.current)return;if(typeof c=="number"){n.go(c);return}let p=En(c,JSON.parse(s),o,d.relative==="path");e==null&&r!=="/"&&(p.pathname=p.pathname==="/"?r:Ce([r,p.pathname])),(d.replace?n.replace:n.push)(p,d.state,d)},[r,n,s,o,e])}u.createContext(null);function jn(){let{matches:e}=u.useContext(je),r=e[e.length-1];return r?r.params:{}}function yt(e,{relative:r}={}){let{matches:n}=u.useContext(je),{pathname:a}=De(),o=JSON.stringify(Fr(n));return u.useMemo(()=>En(e,JSON.parse(o),a,r==="path"),[e,o,a,r])}function so(e,r){return Or(e,r)}function Or(e,r,n){var h;re(ht(),"useRoutes() may be used only in the context of a <Router> component.");let{navigator:a}=u.useContext(ye),{matches:o}=u.useContext(je),s=o[o.length-1],i=s?s.params:{},l=s?s.pathname:"/",c=s?s.pathnameBase:"/",d=s&&s.route;{let m=d&&d.path||"";zr(l,!d||m.endsWith("*")||m.endsWith("*?"),`You rendered descendant <Routes> (or called \`useRoutes()\`) at "${l}" (under <Route path="${m}">) 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="${m}"> to <Route path="${m==="/"?"*":`${m}/*`}">.`)}let p=ke(),f;if(r){let m=typeof r=="string"?_e(r):r;ne(c==="/"||((h=m.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 "${m.pathname}" was given in the \`location\` prop.`),f=m}else f=p;let b=f.pathname||"/",w=b;if(c!=="/"){let m=c.replace(/^\//,"").split("/");w="/"+b.replace(/^\//,"").split("/").slice(m.length).join("/")}let S=Br(e,{pathname:w});xe(d||S!=null,`No routes matched location "${f.pathname}${f.search}${f.hash}" `),xe(S==null||S[S.length-1].route.element!==void 0||S[S.length-1].route.Component!==void 0||S[S.length-1].route.lazy!==void 0,`Matched leaf route at location "${f.pathname}${f.search}${f.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=fo(S&&S.map(m=>Object.assign({},m,{params:Object.assign({},i,m.params),pathname:ve([c,a.encodeLocation?a.encodeLocation(m.pathname.replace(/%/g,"%25").replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:m.pathname]),pathnameBase:m.pathnameBase==="/"?c:ve([c,a.encodeLocation?a.encodeLocation(m.pathnameBase.replace(/%/g,"%25").replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:m.pathnameBase])})),o,n);return r&&g?u.createElement(Ge.Provider,{value:{location:{pathname:"/",search:"",hash:"",state:null,key:"default",unstable_mask:void 0,...f},navigationType:"POP"}},g):g}function co(){let e=bo(),r=Ya(e)?`${e.status} ${e.statusText}`:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,a="rgba(200,200,200, 0.5)",o={padding:"0.5rem",backgroundColor:a},s={padding:"2px 4px",backgroundColor:a},i=null;return console.error("Error handled by React Router default ErrorBoundary:",e),i=u.createElement(u.Fragment,null,u.createElement("p",null,"💿 Hey developer 👋"),u.createElement("p",null,"You can provide a way better UX than this when your app throws errors by providing your own ",u.createElement("code",{style:s},"ErrorBoundary")," or"," ",u.createElement("code",{style:s},"errorElement")," prop on your route.")),u.createElement(u.Fragment,null,u.createElement("h2",null,"Unexpected Application Error!"),u.createElement("h3",{style:{fontStyle:"italic"}},r),n?u.createElement("pre",{style:o},n):null,i)}var uo=u.createElement(co,null),zr=class extends u.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=ao(e.digest);n&&(e=n)}let r=e!==void 0?u.createElement(we.Provider,{value:this.props.routeContext},u.createElement(kn.Provider,{value:e,children:this.props.component})):this.props.children;return this.context?u.createElement(po,{error:e},r):r}};zr.contextType=Qa;var $t=new WeakMap;function po({children:e,error:r}){let{basename:n}=u.useContext(me);if(typeof r=="object"&&r&&"digest"in r&&typeof r.digest=="string"){let a=ro(r.digest);if(a){let o=$t.get(r);if(o)throw o;let s=Rr(a.location,n);if(Tr&&!$t.get(r))if(s.isExternal||a.reloadDocument)window.location.href=s.absoluteURL||s.to;else{const i=Promise.resolve().then(()=>window.__reactRouterDataRouter.navigate(s.to,{replace:a.replace}));throw $t.set(r,i),i}return u.createElement("meta",{httpEquiv:"refresh",content:`0;url=${s.absoluteURL||s.to}`})}}return e}function mo({routeContext:e,match:r,children:n}){let a=u.useContext(Ke);return a&&a.static&&a.staticContext&&(r.route.errorElement||r.route.ErrorBoundary)&&(a.staticContext._deepestRenderedBoundaryId=r.route.id),u.createElement(we.Provider,{value:e},n)}function fo(e,r=[],n){let a=n==null?void 0:n.state;if(e==null){if(!a)return null;if(a.errors)e=a.matches;else if(r.length===0&&!a.initialized&&a.matches.length>0)e=a.matches;else return null}let o=e,s=a==null?void 0:a.errors;if(s!=null){let p=o.findIndex(f=>f.route.id&&(s==null?void 0:s[f.route.id])!==void 0);ne(p>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(s).join(",")}`),o=o.slice(0,Math.min(o.length,p+1))}let i=!1,l=-1;if(n&&a){i=a.renderFallback;for(let p=0;p<o.length;p++){let f=o[p];if((f.route.HydrateFallback||f.route.hydrateFallbackElement)&&(l=p),f.route.id){let{loaderData:b,errors:w}=a,S=f.route.loader&&!b.hasOwnProperty(f.route.id)&&(!w||w[f.route.id]===void 0);if(f.route.lazy||S){n.isStatic&&(i=!0),l>=0?o=o.slice(0,l+1):o=[o[0]];break}}}}let c=n==null?void 0:n.onError,d=a&&c?(p,f)=>{var b,w;c(p,{location:a.location,params:((w=(b=a.matches)==null?void 0:b[0])==null?void 0:w.params)??{},unstable_pattern:Ja(a.matches),errorInfo:f})}:void 0;return o.reduceRight((p,f,b)=>{let w,S=!1,g=null,h=null;a&&(w=s&&f.route.id?s[f.route.id]:void 0,g=f.route.errorElement||uo,i&&(l<0&&b===0?(qr("route-fallback",!1,"No `HydrateFallback` element provided to render during initial hydration"),S=!0,h=null):l===b&&(S=!0,h=f.route.hydrateFallbackElement||null)));let m=r.concat(o.slice(0,b+1)),B=()=>{let T;return w?T=g:S?T=h:f.route.Component?T=u.createElement(f.route.Component,null):f.route.element?T=f.route.element:T=p,u.createElement(mo,{match:f,routeContext:{outlet:p,matches:m,isDataRoute:a!=null},children:T})};return a&&(f.route.ErrorBoundary||f.route.errorElement||b===0)?u.createElement(zr,{location:a.location,revalidation:a.revalidation,component:g,error:w,children:B(),routeContext:{outlet:null,matches:m,isDataRoute:!0},onError:d}):B()},null)}function En(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function ho(e){let r=u.useContext(Ke);return ne(r,En(e)),r}function yo(e){let r=u.useContext(Pt);return ne(r,En(e)),r}function go(e){let r=u.useContext(we);return ne(r,En(e)),r}function Cn(e){let r=go(e),n=r.matches[r.matches.length-1];return ne(n.route.id,`${e} can only be used on routes that contain a unique "id"`),n.route.id}function xo(){return Cn("useRouteId")}function bo(){var a;let e=u.useContext(kn),r=yo("useRouteError"),n=Cn("useRouteError");return e!==void 0?e:(a=r.errors)==null?void 0:a[n]}function vo(){let{router:e}=ho("useNavigate"),r=Cn("useNavigate"),n=u.useRef(!1);return Or(()=>{n.current=!0}),u.useCallback(async(o,s={})=>{xe(n.current,Pr),n.current&&(typeof o=="number"?await e.navigate(o):await e.navigate(o,{fromRouteId:r,...s}))},[e,r])}var Vn={};function qr(e,r,n){!r&&!Vn[e]&&(Vn[e]=!0,xe(!1,n))}u.memo(wo);function wo({routes:e,future:r,state:n,isStatic:a,onError:o}){return Ur(e,void 0,{state:n,isStatic:a,onError:o})}function ye(e){ne(!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 Lr({basename:e="/",children:r=null,location:n,navigationType:a="POP",navigator:o,static:s=!1,unstable_useTransitions:i}){ne(!ut(),"You cannot render a <Router> inside another <Router>. You should never have more than one in your app.");let l=e.replace(/^\/*/,"/"),c=u.useMemo(()=>({basename:l,navigator:o,static:s,unstable_useTransitions:i,future:{}}),[l,o,s,i]);typeof n=="string"&&(n=_e(n));let{pathname:d="/",search:p="",hash:f="",state:b=null,key:w="default",unstable_mask:S}=n,g=u.useMemo(()=>{let h=Be(d,l);return h==null?null:{location:{pathname:h,search:p,hash:f,state:b,key:w,unstable_mask:S},navigationType:a}},[l,d,p,f,b,w,a,S]);return xe(g!=null,`<Router basename="${l}"> is not able to match the URL "${d}${p}${f}" because it does not start with the basename, so the <Router> won't render anything.`),g==null?null:u.createElement(me.Provider,{value:c},u.createElement(Ge.Provider,{children:r,value:g}))}function ko({children:e,location:r}){return lo(cn(e),r)}function cn(e,r=[]){let n=[];return u.Children.forEach(e,(a,o)=>{if(!u.isValidElement(a))return;let s=[...r,o];if(a.type===u.Fragment){n.push.apply(n,cn(a.props.children,s));return}ne(a.type===ye,`[${typeof a.type=="string"?a.type:a.type.name}] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>`),ne(!a.props.index||!a.props.children,"An index route cannot have child routes.");let i={id:a.props.id||s.join("-"),caseSensitive:a.props.caseSensitive,element:a.props.element,Component:a.props.Component,index:a.props.index,path:a.props.path,middleware:a.props.middleware,loader:a.props.loader,action:a.props.action,hydrateFallbackElement:a.props.hydrateFallbackElement,HydrateFallback:a.props.HydrateFallback,errorElement:a.props.errorElement,ErrorBoundary:a.props.ErrorBoundary,hasErrorBoundary:a.props.hasErrorBoundary===!0||a.props.ErrorBoundary!=null||a.props.errorElement!=null,shouldRevalidate:a.props.shouldRevalidate,handle:a.props.handle,lazy:a.props.lazy};a.props.children&&(i.children=cn(a.props.children,s)),n.push(i)}),n}var Dt="get",Bt="application/x-www-form-urlencoded";function Ot(e){return typeof HTMLElement<"u"&&e instanceof HTMLElement}function So(e){return Ot(e)&&e.tagName.toLowerCase()==="button"}function Eo(e){return Ot(e)&&e.tagName.toLowerCase()==="form"}function Co(e){return Ot(e)&&e.tagName.toLowerCase()==="input"}function jo(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function Do(e,r){return e.button===0&&(!r||r==="_self")&&!jo(e)}var ht=null;function Bo(){if(ht===null)try{new FormData(document.createElement("form"),0),ht=!1}catch{ht=!0}return ht}var Ao=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function Wt(e){return e!=null&&!Ao.has(e)?(xe(!1,`"${e}" is not a valid \`encType\` for \`<Form>\`/\`<fetcher.Form>\` and will default to "${Bt}"`),null):e}function Fo(e,r){let n,a,o,s,i;if(Eo(e)){let l=e.getAttribute("action");a=l?Be(l,r):null,n=e.getAttribute("method")||Dt,o=Wt(e.getAttribute("enctype"))||Bt,s=new FormData(e)}else if(So(e)||Co(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(a=c?Be(c,r):null,n=e.getAttribute("formmethod")||l.getAttribute("method")||Dt,o=Wt(e.getAttribute("formenctype"))||Wt(l.getAttribute("enctype"))||Bt,s=new FormData(l,e),!Bo()){let{name:d,type:p,value:f}=e;if(p==="image"){let b=d?`${d}.`:"";s.append(`${b}x`,"0"),s.append(`${b}y`,"0")}else d&&s.append(d,f)}}else{if(Ot(e))throw new Error('Cannot submit element that is not <form>, <button>, or <input type="submit|image">');n=Dt,a=null,o=Bt,i=e}return s&&o==="text/plain"&&(i=s,s=void 0),{action:a,method:n.toLowerCase(),encType:o,formData:s,body:i}}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");function jn(e,r){if(e===!1||e===null||typeof e>"u")throw new Error(r)}function No(e,r,n,a){let o=typeof e=="string"?new URL(e,typeof window>"u"?"server://singlefetch/":window.location.origin):e;return n?o.pathname.endsWith("/")?o.pathname=`${o.pathname}_.${a}`:o.pathname=`${o.pathname}.${a}`:o.pathname==="/"?o.pathname=`_root.${a}`:r&&Be(o.pathname,r)==="/"?o.pathname=`${r.replace(/\/$/,"")}/_root.${a}`:o.pathname=`${o.pathname.replace(/\/$/,"")}.${a}`,o}async function To(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 Ro(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 Io(e,r,n){let a=await Promise.all(e.map(async o=>{let s=r.routes[o.route.id];if(s){let i=await To(s,n);return i.links?i.links():[]}return[]}));return Oo(a.flat(1).filter(Ro).filter(o=>o.rel==="stylesheet"||o.rel==="preload").map(o=>o.rel==="stylesheet"?{...o,rel:"prefetch",as:"style"}:{...o,rel:"prefetch"}))}function $n(e,r,n,a,o,s){let i=(c,d)=>n[d]?c.route.id!==n[d].route.id:!0,l=(c,d)=>{var p;return n[d].pathname!==c.pathname||((p=n[d].route.path)==null?void 0:p.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 f;let p=a.routes[c.route.id];if(!p||!p.hasLoader)return!1;if(i(c,d)||l(c,d))return!0;if(c.route.shouldRevalidate){let b=c.route.shouldRevalidate({currentUrl:new URL(o.pathname+o.search+o.hash,window.origin),currentParams:((f=n[0])==null?void 0:f.params)||{},nextUrl:new URL(e,window.origin),nextParams:c.params,defaultShouldRevalidate:!0});if(typeof b=="boolean")return b}return!0}):[]}function Mo(e,r,{includeHydrateFallback:n}={}){return _o(e.map(a=>{let o=r.routes[a.route.id];if(!o)return[];let s=[o.module];return o.clientActionModule&&(s=s.concat(o.clientActionModule)),o.clientLoaderModule&&(s=s.concat(o.clientLoaderModule)),n&&o.hydrateFallbackModule&&(s=s.concat(o.hydrateFallbackModule)),o.imports&&(s=s.concat(o.imports)),s}).flat(1))}function _o(e){return[...new Set(e)]}function Po(e){let r={},n=Object.keys(e).sort();for(let a of n)r[a]=e[a];return r}function Oo(e,r){let n=new Set;return new Set(r),e.reduce((a,o)=>{let s=JSON.stringify(Po(o));return n.has(s)||(n.add(s),a.push({key:s,link:o})),a},[])}function Vr(){let e=u.useContext(Ke);return jn(e,"You must render this element inside a <DataRouterContext.Provider> element"),e}function Uo(){let e=u.useContext(Pt);return jn(e,"You must render this element inside a <DataRouterStateContext.Provider> element"),e}var Dn=u.createContext(void 0);Dn.displayName="FrameworkContext";function $r(){let e=u.useContext(Dn);return jn(e,"You must render this element inside a <HydratedRouter> element"),e}function zo(e,r){let n=u.useContext(Dn),[a,o]=u.useState(!1),[s,i]=u.useState(!1),{onFocus:l,onBlur:c,onMouseEnter:d,onMouseLeave:p,onTouchStart:f}=r,b=u.useRef(null);u.useEffect(()=>{if(e==="render"&&i(!0),e==="viewport"){let g=m=>{m.forEach(B=>{i(B.isIntersecting)})},h=new IntersectionObserver(g,{threshold:.5});return b.current&&h.observe(b.current),()=>{h.disconnect()}}},[e]),u.useEffect(()=>{if(a){let g=setTimeout(()=>{i(!0)},100);return()=>{clearTimeout(g)}}},[a]);let w=()=>{o(!0)},S=()=>{o(!1),i(!1)};return n?e!=="intent"?[s,b,{}]:[s,b,{onFocus:Ye(l,w),onBlur:Ye(c,S),onMouseEnter:Ye(d,w),onMouseLeave:Ye(p,S),onTouchStart:Ye(f,w)}]:[!1,b,{}]}function Ye(e,r){return n=>{e&&e(n),n.defaultPrevented||r(n)}}function qo({page:e,...r}){let{router:n}=Vr(),a=u.useMemo(()=>Br(n.routes,e,n.basename),[n.routes,e,n.basename]);return a?u.createElement(Vo,{page:e,matches:a,...r}):null}function Lo(e){let{manifest:r,routeModules:n}=$r(),[a,o]=u.useState([]);return u.useEffect(()=>{let s=!1;return Io(e,r,n).then(i=>{s||o(i)}),()=>{s=!0}},[e,r,n]),a}function Vo({page:e,matches:r,...n}){let a=ke(),{future:o,manifest:s,routeModules:i}=$r(),{basename:l}=Vr(),{loaderData:c,matches:d}=Uo(),p=u.useMemo(()=>$n(e,r,d,s,a,"data"),[e,r,d,s,a]),f=u.useMemo(()=>$n(e,r,d,s,a,"assets"),[e,r,d,s,a]),b=u.useMemo(()=>{if(e===a.pathname+a.search+a.hash)return[];let g=new Set,h=!1;if(r.forEach(B=>{var D;let T=s.routes[B.route.id];!T||!T.hasLoader||(!p.some(A=>A.route.id===B.route.id)&&B.route.id in c&&((D=i[B.route.id])!=null&&D.shouldRevalidate)||T.hasClientLoader?h=!0:g.add(B.route.id))}),g.size===0)return[];let m=No(e,l,o.unstable_trailingSlashAwareDataRequests,"data");return h&&g.size>0&&m.searchParams.set("_routes",r.filter(B=>g.has(B.route.id)).map(B=>B.route.id).join(",")),[m.pathname+m.search]},[l,o.unstable_trailingSlashAwareDataRequests,c,a,s,p,r,e,i]),w=u.useMemo(()=>Mo(f,s),[f,s]),S=Lo(f);return u.createElement(u.Fragment,null,b.map(g=>u.createElement("link",{key:g,rel:"prefetch",as:"fetch",href:g,...n})),w.map(g=>u.createElement("link",{key:g,rel:"modulepreload",href:g,...n})),S.map(({key:g,link:h})=>u.createElement("link",{key:g,nonce:n.nonce,...h,crossOrigin:h.crossOrigin??n.crossOrigin})))}function $o(...e){return r=>{e.forEach(n=>{typeof n=="function"?n(r):n!=null&&(n.current=r)})}}var Wo=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";try{Wo&&(window.__reactRouterVersion="7.13.2")}catch{}function Ho({basename:e,children:r,unstable_useTransitions:n,window:a}){let o=u.useRef();o.current==null&&(o.current=Ca({window:a,v5Compat:!0}));let s=o.current,[i,l]=u.useState({action:s.action,location:s.location}),c=u.useCallback(d=>{n===!1?l(d):u.startTransition(()=>l(d))},[n]);return u.useLayoutEffect(()=>s.listen(c),[s,c]),u.createElement(Lr,{basename:e,children:r,location:i.location,navigationType:i.action,navigator:s,unstable_useTransitions:n})}function Ko({basename:e,children:r,unstable_useTransitions:n,window:a}){let o=u.useRef();o.current==null&&(o.current=ja({window:a,v5Compat:!0}));let s=o.current,[i,l]=u.useState({action:s.action,location:s.location}),c=u.useCallback(d=>{n===!1?l(d):u.startTransition(()=>l(d))},[n]);return u.useLayoutEffect(()=>s.listen(c),[s,c]),u.createElement(Lr,{basename:e,children:r,location:i.location,navigationType:i.action,navigator:s,unstable_useTransitions:n})}var Wr=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,Hr=u.forwardRef(function({onClick:r,discover:n="render",prefetch:a="none",relative:o,reloadDocument:s,replace:i,unstable_mask:l,state:c,target:d,to:p,preventScrollReset:f,viewTransition:b,unstable_defaultShouldRevalidate:w,...S},g){let{basename:h,navigator:m,unstable_useTransitions:B}=u.useContext(me),T=typeof p=="string"&&Wr.test(p),D=Rr(p,h);p=D.to;let A=oo(p,{relative:o}),C=ke(),x=null;if(l){let $=wn(l,[],C.unstable_mask?C.unstable_mask.pathname:"/",!0);h!=="/"&&($.pathname=$.pathname==="/"?h:ve([h,$.pathname])),x=m.createHref($)}let[v,_,O]=zo(a,S),P=Xo(p,{replace:i,unstable_mask:l,state:c,target:d,preventScrollReset:f,relative:o,viewTransition:b,unstable_defaultShouldRevalidate:w,unstable_useTransitions:B});function M($){r&&r($),$.defaultPrevented||P($)}let L=!(D.isExternal||s),F=u.createElement("a",{...S,...O,href:(L?x:void 0)||D.absoluteURL||A,onClick:L?M:r,ref:$o(g,_),target:d,"data-discover":!T&&n==="render"?"true":void 0});return v&&!T?u.createElement(u.Fragment,null,F,u.createElement(qo,{page:A})):F});Hr.displayName="Link";var Go=u.forwardRef(function({"aria-current":r="page",caseSensitive:n=!1,className:a="",end:o=!1,style:s,to:i,viewTransition:l,children:c,...d},p){let f=pt(i,{relative:d.relative}),b=ke(),w=u.useContext(Pt),{navigator:S,basename:g}=u.useContext(me),h=w!=null&&ns(f)&&l===!0,m=S.encodeLocation?S.encodeLocation(f).pathname:f.pathname,B=b.pathname,T=w&&w.navigation&&w.navigation.location?w.navigation.location.pathname:null;n||(B=B.toLowerCase(),T=T?T.toLowerCase():null,m=m.toLowerCase()),T&&g&&(T=Be(T,g)||T);const D=m!=="/"&&m.endsWith("/")?m.length-1:m.length;let A=B===m||!o&&B.startsWith(m)&&B.charAt(D)==="/",C=T!=null&&(T===m||!o&&T.startsWith(m)&&T.charAt(m.length)==="/"),x={isActive:A,isPending:C,isTransitioning:h},v=A?r:void 0,_;typeof a=="function"?_=a(x):_=[a,A?"active":null,C?"pending":null,h?"transitioning":null].filter(Boolean).join(" ");let O=typeof s=="function"?s(x):s;return u.createElement(Hr,{...d,"aria-current":v,className:_,ref:p,style:O,to:i,viewTransition:l},typeof c=="function"?c(x):c)});Go.displayName="NavLink";var Yo=u.forwardRef(({discover:e="render",fetcherKey:r,navigate:n,reloadDocument:a,replace:o,state:s,method:i=Dt,action:l,onSubmit:c,relative:d,preventScrollReset:p,viewTransition:f,unstable_defaultShouldRevalidate:b,...w},S)=>{let{unstable_useTransitions:g}=u.useContext(me),h=es(),m=ts(l,{relative:d}),B=i.toLowerCase()==="get"?"get":"post",T=typeof l=="string"&&Wr.test(l),D=A=>{if(c&&c(A),A.defaultPrevented)return;A.preventDefault();let C=A.nativeEvent.submitter,x=(C==null?void 0:C.getAttribute("formmethod"))||i,v=()=>h(C||A.currentTarget,{fetcherKey:r,method:x,navigate:n,replace:o,state:s,relative:d,preventScrollReset:p,viewTransition:f,unstable_defaultShouldRevalidate:b});g&&n!==!1?u.startTransition(()=>v()):v()};return u.createElement("form",{ref:S,method:B,action:m,onSubmit:a?c:D,...w,"data-discover":!T&&e==="render"?"true":void 0})});Yo.displayName="Form";function Jo(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function Kr(e){let r=u.useContext(Ke);return ne(r,Jo(e)),r}function Xo(e,{target:r,replace:n,unstable_mask:a,state:o,preventScrollReset:s,relative:i,viewTransition:l,unstable_defaultShouldRevalidate:c,unstable_useTransitions:d}={}){let p=Se(),f=ke(),b=pt(e,{relative:i});return u.useCallback(w=>{if(Do(w,r)){w.preventDefault();let S=n!==void 0?n:Ve(f)===Ve(b),g=()=>p(e,{replace:S,unstable_mask:a,state:o,preventScrollReset:s,relative:i,viewTransition:l,unstable_defaultShouldRevalidate:c});d?u.startTransition(()=>g()):g()}},[f,p,b,n,a,o,r,e,s,i,l,c,d])}var Qo=0,Zo=()=>`__${String(++Qo)}__`;function es(){let{router:e}=Kr("useSubmit"),{basename:r}=u.useContext(me),n=xo(),a=e.fetch,o=e.navigate;return u.useCallback(async(s,i={})=>{let{action:l,method:c,encType:d,formData:p,body:f}=Fo(s,r);if(i.navigate===!1){let b=i.fetcherKey||Zo();await a(b,n,i.action||l,{unstable_defaultShouldRevalidate:i.unstable_defaultShouldRevalidate,preventScrollReset:i.preventScrollReset,formData:p,body:f,formMethod:i.method||c,formEncType:i.encType||d,flushSync:i.flushSync})}else await o(i.action||l,{unstable_defaultShouldRevalidate:i.unstable_defaultShouldRevalidate,preventScrollReset:i.preventScrollReset,formData:p,body:f,formMethod:i.method||c,formEncType:i.encType||d,replace:i.replace,state:i.state,fromRouteId:n,flushSync:i.flushSync,viewTransition:i.viewTransition})},[a,o,r,n])}function ts(e,{relative:r}={}){let{basename:n}=u.useContext(me),a=u.useContext(we);ne(a,"useFormAction must be used inside a RouteContext");let[o]=a.matches.slice(-1),s={...pt(e||".",{relative:r})},i=ke();if(e==null){s.search=i.search;let l=new URLSearchParams(s.search),c=l.getAll("index");if(c.some(p=>p==="")){l.delete("index"),c.filter(f=>f).forEach(f=>l.append("index",f));let p=l.toString();s.search=p?`?${p}`:""}}return(!e||e===".")&&o.route.index&&(s.search=s.search?s.search.replace(/^\?/,"?index&"):"?index"),n!=="/"&&(s.pathname=s.pathname==="/"?n:ve([n,s.pathname])),Ve(s)}function ns(e,{relative:r}={}){let n=u.useContext(Mr);ne(n!=null,"`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`. Did you accidentally import `RouterProvider` from `react-router`?");let{basename:a}=Kr("useViewTransitionState"),o=pt(e,{relative:r});if(!n.isTransitioning)return!1;let s=Be(n.currentLocation.pathname,a)||n.currentLocation.pathname,i=Be(n.nextLocation.pathname,a)||n.nextLocation.pathname;return Tt(o.pathname,i)!=null||Tt(o.pathname,s)!=null}const rs="modulepreload",as=function(e){return"/"+e},Wn={},ae=function(r,n,a){let o=Promise.resolve();if(n&&n.length>0){let i=function(d){return Promise.all(d.map(p=>Promise.resolve(p).then(f=>({status:"fulfilled",value:f}),f=>({status:"rejected",reason:f}))))};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"));o=i(n.map(d=>{if(d=as(d),d in Wn)return;Wn[d]=!0;const p=d.endsWith(".css"),f=p?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${d}"]${f}`))return;const b=document.createElement("link");if(b.rel=p?"stylesheet":rs,p||(b.as="script"),b.crossOrigin="",b.href=d,c&&b.setAttribute("nonce",c),document.head.appendChild(b),p)return new Promise((w,S)=>{b.addEventListener("load",w),b.addEventListener("error",()=>S(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 o.then(i=>{for(const l of i||[])l.status==="rejected"&&s(l.reason);return r().catch(s)})},os={dependsOn:{}};function ss(e,r){return new Set([e,...(r??os).dependsOn[e]??[]])}function is(e,r){const n=r instanceof Set?r:new Set(r);return n.size===0?!1:e.some(a=>n.has(a))}function Hn(e){return(e.sourceEnd.type?1:0)+(e.targetEnd.type?1:0)}function ls(e,r){return Hn(r)-Hn(e)||e.label.localeCompare(r.label)}function Gr(e){return new Map(e.map(r=>[r.name,r]))}function Bn(e,r){if(e)return r.relationships.find(n=>n.name===e||n.sysmlName===e)}function yt(e,r,n){var i;if(!r)return!0;if(!e)return!1;if(e===r)return!0;const a=Array.isArray(n)?Gr(n):n;let o=e;const s=new Set;for(;o&&!s.has(o);){if(o===r)return!0;s.add(o),o=(i=a.get(o))==null?void 0:i.superType}return!1}function $e(e,r,n){const a=Gr(n.kinds),o=[];for(const s of n.relationships)s.isAbstract||(yt(e.kind,s.sourceEnd.type,a)&&yt(r.kind,s.targetEnd.type,a)&&o.push({definition:s,direction:"outgoing",sourceId:e.id,targetId:r.id}),yt(r.kind,s.sourceEnd.type,a)&&yt(e.kind,s.targetEnd.type,a)&&o.push({definition:s,direction:"incoming",sourceId:r.id,targetId:e.id}));return o.sort((s,i)=>ls(s.definition,i.definition))}const un={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 pn(e){var a,o;const r=[],n=[...((a=un[e])==null?void 0:a.superTypes)??[]];for(;n.length>0;){const s=n.shift();r.includes(s)||(r.push(s),n.push(...((o=un[s])==null?void 0:o.superTypes)??[]))}return r}function Yr(e,r){return e===r||pn(e).includes(r)}const Jr=[{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"}],ds={activityfinalnode:"activityFinal",activityfinalnodeusage:"activityFinal",flowfinalnode:"flowFinal",flowfinalnodeusage:"flowFinal"},cs={fork:"ForkNode",join:"JoinNode",decide:"DecisionNode",merge:"MergeNode"};function us(){return[...Jr].sort((e,r)=>pn(r.metaclass).length-pn(e.metaclass).length)}function ps(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 ms(e){for(const r of ps(e??""))if(r in un)return r}function fs(e,r){var s;const n=new Map((r??[]).map(i=>[i.name,i])),a=[];let o=e;for(;o&&!a.includes(o);)a.push(o),o=(s=n.get(o))==null?void 0:s.superType;return a}function Xr(e,r){var i,l;const n=(l=(i=e.attributes)==null?void 0:i.controlKind)==null?void 0:l.toLowerCase(),a=n?cs[n]:void 0,o=[...a?[a]:[],...fs(e.kind,r==null?void 0:r.kinds),e.kind,e.construct],s=us();for(const c of o){const d=ds[(c??"").replace(/[ _-]/g,"").toLowerCase()];if(d)return d;const p=ms(c);if(!p)continue;const f=s.find(b=>Yr(p,b.metaclass));if(f)return f.role}}function Ic(e,r){const n=Xr(e,r);if(n==="activityFinal"||n==="flowFinal")return!0;const a=Jr.find(o=>o.role===n);return a!==void 0&&Yr(a.metaclass,"ControlNode")}const hs=["general","interconnection","actionflow","statetransition","sequence","grid","browser","geometry"];new Set(hs);const ys={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"}]},gs={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"}]},xs={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"}]},bs={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"}]},Kn=[ys,gs,xs,bs];function vs(e,r){return e.map(n=>{const a=n.trim().toLowerCase();if(r){const i=r.columnMappings.find(l=>l.sourceColumn.toLowerCase()===a);if(i)return{...i,sourceColumn:n}}const o=ws.find(i=>i.sourceColumn.toLowerCase()===a);if(o)return{...o,sourceColumn:n};const s=Cs(n);return{sourceColumn:n,targetAttribute:s}})}const ws=[{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 ks(e,r,n,a){const o=[],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"),p=i.has("kind");c||o.push("No column mapped to 'id' — id will be auto-generated from row number"),d||o.push("No column mapped to 'name'"),!p&&!a&&o.push("No column mapped to 'kind' and no defaultKind set");const f=["id","name","kind","construct","doc"],b=Array.from(i).filter(g=>!f.includes(g)),w=[...f.filter(g=>i.has(g)),...b];for(const g of["id","name","kind"])w.includes(g)||w.unshift(g);const S=[w.map(Gn).join(",")];return e.forEach((g,h)=>{const m={};for(const D of l){const A=g[D.sourceColumn]??"";m[D.targetAttribute]=Ss(A,D.transform)}(!m.id||m.id.trim()==="")&&(m.id=`row_${h+1}`),(!m.kind||m.kind.trim()==="")&&a&&(m.kind=a);const B=m.kind;B&&Object.keys(n.kinds).length>0&&!n.kinds[B]&&o.push(`Row ${h+2}: unknown kind '${B}' (not declared by the resolved ontology)`);const T=w.map(D=>Gn(m[D]??""));S.push(T.join(","))}),{csv:S.join(`
13
+ Please change the parent <Route path="${m}"> to <Route path="${m==="/"?"*":`${m}/*`}">.`)}let p=De(),f;if(r){let m=typeof r=="string"?Ue(r):r;re(c==="/"||((h=m.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 "${m.pathname}" was given in the \`location\` prop.`),f=m}else f=p;let k=f.pathname||"/",w=k;if(c!=="/"){let m=c.replace(/^\//,"").split("/");w="/"+k.replace(/^\//,"").split("/").slice(m.length).join("/")}let S=Dr(e,{pathname:w});we(d||S!=null,`No routes matched location "${f.pathname}${f.search}${f.hash}" `),we(S==null||S[S.length-1].route.element!==void 0||S[S.length-1].route.Component!==void 0||S[S.length-1].route.lazy!==void 0,`Matched leaf route at location "${f.pathname}${f.search}${f.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 x=po(S&&S.map(m=>Object.assign({},m,{params:Object.assign({},i,m.params),pathname:Ce([c,a.encodeLocation?a.encodeLocation(m.pathname.replace(/%/g,"%25").replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:m.pathname]),pathnameBase:m.pathnameBase==="/"?c:Ce([c,a.encodeLocation?a.encodeLocation(m.pathnameBase.replace(/%/g,"%25").replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:m.pathnameBase])})),o,n);return r&&x?u.createElement(Qe.Provider,{value:{location:{pathname:"/",search:"",hash:"",state:null,key:"default",unstable_mask:void 0,...f},navigationType:"POP"}},x):x}function io(){let e=go(),r=Ka(e)?`${e.status} ${e.statusText}`:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,a="rgba(200,200,200, 0.5)",o={padding:"0.5rem",backgroundColor:a},s={padding:"2px 4px",backgroundColor:a},i=null;return console.error("Error handled by React Router default ErrorBoundary:",e),i=u.createElement(u.Fragment,null,u.createElement("p",null,"💿 Hey developer 👋"),u.createElement("p",null,"You can provide a way better UX than this when your app throws errors by providing your own ",u.createElement("code",{style:s},"ErrorBoundary")," or"," ",u.createElement("code",{style:s},"errorElement")," prop on your route.")),u.createElement(u.Fragment,null,u.createElement("h2",null,"Unexpected Application Error!"),u.createElement("h3",{style:{fontStyle:"italic"}},r),n?u.createElement("pre",{style:o},n):null,i)}var lo=u.createElement(io,null),Ur=class extends u.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=no(e.digest);n&&(e=n)}let r=e!==void 0?u.createElement(je.Provider,{value:this.props.routeContext},u.createElement(Cn.Provider,{value:e,children:this.props.component})):this.props.children;return this.context?u.createElement(co,{error:e},r):r}};Ur.contextType=Ja;var Kt=new WeakMap;function co({children:e,error:r}){let{basename:n}=u.useContext(ye);if(typeof r=="object"&&r&&"digest"in r&&typeof r.digest=="string"){let a=to(r.digest);if(a){let o=Kt.get(r);if(o)throw o;let s=Tr(a.location,n);if(Nr&&!Kt.get(r))if(s.isExternal||a.reloadDocument)window.location.href=s.absoluteURL||s.to;else{const i=Promise.resolve().then(()=>window.__reactRouterDataRouter.navigate(s.to,{replace:a.replace}));throw Kt.set(r,i),i}return u.createElement("meta",{httpEquiv:"refresh",content:`0;url=${s.absoluteURL||s.to}`})}}return e}function uo({routeContext:e,match:r,children:n}){let a=u.useContext(Xe);return a&&a.static&&a.staticContext&&(r.route.errorElement||r.route.ErrorBoundary)&&(a.staticContext._deepestRenderedBoundaryId=r.route.id),u.createElement(je.Provider,{value:e},n)}function po(e,r=[],n){let a=n==null?void 0:n.state;if(e==null){if(!a)return null;if(a.errors)e=a.matches;else if(r.length===0&&!a.initialized&&a.matches.length>0)e=a.matches;else return null}let o=e,s=a==null?void 0:a.errors;if(s!=null){let p=o.findIndex(f=>f.route.id&&(s==null?void 0:s[f.route.id])!==void 0);re(p>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(s).join(",")}`),o=o.slice(0,Math.min(o.length,p+1))}let i=!1,l=-1;if(n&&a){i=a.renderFallback;for(let p=0;p<o.length;p++){let f=o[p];if((f.route.HydrateFallback||f.route.hydrateFallbackElement)&&(l=p),f.route.id){let{loaderData:k,errors:w}=a,S=f.route.loader&&!k.hasOwnProperty(f.route.id)&&(!w||w[f.route.id]===void 0);if(f.route.lazy||S){n.isStatic&&(i=!0),l>=0?o=o.slice(0,l+1):o=[o[0]];break}}}}let c=n==null?void 0:n.onError,d=a&&c?(p,f)=>{var k,w;c(p,{location:a.location,params:((w=(k=a.matches)==null?void 0:k[0])==null?void 0:w.params)??{},unstable_pattern:Ga(a.matches),errorInfo:f})}:void 0;return o.reduceRight((p,f,k)=>{let w,S=!1,x=null,h=null;a&&(w=s&&f.route.id?s[f.route.id]:void 0,x=f.route.errorElement||lo,i&&(l<0&&k===0?(zr("route-fallback",!1,"No `HydrateFallback` element provided to render during initial hydration"),S=!0,h=null):l===k&&(S=!0,h=f.route.hydrateFallbackElement||null)));let m=r.concat(o.slice(0,k+1)),B=()=>{let T;return w?T=x:S?T=h:f.route.Component?T=u.createElement(f.route.Component,null):f.route.element?T=f.route.element:T=p,u.createElement(uo,{match:f,routeContext:{outlet:p,matches:m,isDataRoute:a!=null},children:T})};return a&&(f.route.ErrorBoundary||f.route.errorElement||k===0)?u.createElement(Ur,{location:a.location,revalidation:a.revalidation,component:x,error:w,children:B(),routeContext:{outlet:null,matches:m,isDataRoute:!0},onError:d}):B()},null)}function Dn(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function mo(e){let r=u.useContext(Xe);return re(r,Dn(e)),r}function fo(e){let r=u.useContext(zt);return re(r,Dn(e)),r}function ho(e){let r=u.useContext(je);return re(r,Dn(e)),r}function Bn(e){let r=ho(e),n=r.matches[r.matches.length-1];return re(n.route.id,`${e} can only be used on routes that contain a unique "id"`),n.route.id}function yo(){return Bn("useRouteId")}function go(){var a;let e=u.useContext(Cn),r=fo("useRouteError"),n=Bn("useRouteError");return e!==void 0?e:(a=r.errors)==null?void 0:a[n]}function xo(){let{router:e}=mo("useNavigate"),r=Bn("useNavigate"),n=u.useRef(!1);return Pr(()=>{n.current=!0}),u.useCallback(async(o,s={})=>{we(n.current,_r),n.current&&(typeof o=="number"?await e.navigate(o):await e.navigate(o,{fromRouteId:r,...s}))},[e,r])}var $n={};function zr(e,r,n){!r&&!$n[e]&&($n[e]=!0,we(!1,n))}u.memo(bo);function bo({routes:e,future:r,state:n,isStatic:a,onError:o}){return Or(e,void 0,{state:n,isStatic:a,onError:o})}function be(e){re(!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 qr({basename:e="/",children:r=null,location:n,navigationType:a="POP",navigator:o,static:s=!1,unstable_useTransitions:i}){re(!ht(),"You cannot render a <Router> inside another <Router>. You should never have more than one in your app.");let l=e.replace(/^\/*/,"/"),c=u.useMemo(()=>({basename:l,navigator:o,static:s,unstable_useTransitions:i,future:{}}),[l,o,s,i]);typeof n=="string"&&(n=Ue(n));let{pathname:d="/",search:p="",hash:f="",state:k=null,key:w="default",unstable_mask:S}=n,x=u.useMemo(()=>{let h=Fe(d,l);return h==null?null:{location:{pathname:h,search:p,hash:f,state:k,key:w,unstable_mask:S},navigationType:a}},[l,d,p,f,k,w,a,S]);return we(x!=null,`<Router basename="${l}"> is not able to match the URL "${d}${p}${f}" because it does not start with the basename, so the <Router> won't render anything.`),x==null?null:u.createElement(ye.Provider,{value:c},u.createElement(Qe.Provider,{children:r,value:x}))}function vo({children:e,location:r}){return so(pn(e),r)}function pn(e,r=[]){let n=[];return u.Children.forEach(e,(a,o)=>{if(!u.isValidElement(a))return;let s=[...r,o];if(a.type===u.Fragment){n.push.apply(n,pn(a.props.children,s));return}re(a.type===be,`[${typeof a.type=="string"?a.type:a.type.name}] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>`),re(!a.props.index||!a.props.children,"An index route cannot have child routes.");let i={id:a.props.id||s.join("-"),caseSensitive:a.props.caseSensitive,element:a.props.element,Component:a.props.Component,index:a.props.index,path:a.props.path,middleware:a.props.middleware,loader:a.props.loader,action:a.props.action,hydrateFallbackElement:a.props.hydrateFallbackElement,HydrateFallback:a.props.HydrateFallback,errorElement:a.props.errorElement,ErrorBoundary:a.props.ErrorBoundary,hasErrorBoundary:a.props.hasErrorBoundary===!0||a.props.ErrorBoundary!=null||a.props.errorElement!=null,shouldRevalidate:a.props.shouldRevalidate,handle:a.props.handle,lazy:a.props.lazy};a.props.children&&(i.children=pn(a.props.children,s)),n.push(i)}),n}var Nt="get",Tt="application/x-www-form-urlencoded";function qt(e){return typeof HTMLElement<"u"&&e instanceof HTMLElement}function wo(e){return qt(e)&&e.tagName.toLowerCase()==="button"}function ko(e){return qt(e)&&e.tagName.toLowerCase()==="form"}function So(e){return qt(e)&&e.tagName.toLowerCase()==="input"}function Eo(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function Co(e,r){return e.button===0&&(!r||r==="_self")&&!Eo(e)}var bt=null;function jo(){if(bt===null)try{new FormData(document.createElement("form"),0),bt=!1}catch{bt=!0}return bt}var Do=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function Gt(e){return e!=null&&!Do.has(e)?(we(!1,`"${e}" is not a valid \`encType\` for \`<Form>\`/\`<fetcher.Form>\` and will default to "${Tt}"`),null):e}function Bo(e,r){let n,a,o,s,i;if(ko(e)){let l=e.getAttribute("action");a=l?Fe(l,r):null,n=e.getAttribute("method")||Nt,o=Gt(e.getAttribute("enctype"))||Tt,s=new FormData(e)}else if(wo(e)||So(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(a=c?Fe(c,r):null,n=e.getAttribute("formmethod")||l.getAttribute("method")||Nt,o=Gt(e.getAttribute("formenctype"))||Gt(l.getAttribute("enctype"))||Tt,s=new FormData(l,e),!jo()){let{name:d,type:p,value:f}=e;if(p==="image"){let k=d?`${d}.`:"";s.append(`${k}x`,"0"),s.append(`${k}y`,"0")}else d&&s.append(d,f)}}else{if(qt(e))throw new Error('Cannot submit element that is not <form>, <button>, or <input type="submit|image">');n=Nt,a=null,o=Tt,i=e}return s&&o==="text/plain"&&(i=s,s=void 0),{action:a,method:n.toLowerCase(),encType:o,formData:s,body:i}}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");function An(e,r){if(e===!1||e===null||typeof e>"u")throw new Error(r)}function Ao(e,r,n,a){let o=typeof e=="string"?new URL(e,typeof window>"u"?"server://singlefetch/":window.location.origin):e;return n?o.pathname.endsWith("/")?o.pathname=`${o.pathname}_.${a}`:o.pathname=`${o.pathname}.${a}`:o.pathname==="/"?o.pathname=`_root.${a}`:r&&Fe(o.pathname,r)==="/"?o.pathname=`${r.replace(/\/$/,"")}/_root.${a}`:o.pathname=`${o.pathname.replace(/\/$/,"")}.${a}`,o}async function Fo(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 No(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 To(e,r,n){let a=await Promise.all(e.map(async o=>{let s=r.routes[o.route.id];if(s){let i=await Fo(s,n);return i.links?i.links():[]}return[]}));return _o(a.flat(1).filter(No).filter(o=>o.rel==="stylesheet"||o.rel==="preload").map(o=>o.rel==="stylesheet"?{...o,rel:"prefetch",as:"style"}:{...o,rel:"prefetch"}))}function Wn(e,r,n,a,o,s){let i=(c,d)=>n[d]?c.route.id!==n[d].route.id:!0,l=(c,d)=>{var p;return n[d].pathname!==c.pathname||((p=n[d].route.path)==null?void 0:p.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 f;let p=a.routes[c.route.id];if(!p||!p.hasLoader)return!1;if(i(c,d)||l(c,d))return!0;if(c.route.shouldRevalidate){let k=c.route.shouldRevalidate({currentUrl:new URL(o.pathname+o.search+o.hash,window.origin),currentParams:((f=n[0])==null?void 0:f.params)||{},nextUrl:new URL(e,window.origin),nextParams:c.params,defaultShouldRevalidate:!0});if(typeof k=="boolean")return k}return!0}):[]}function Ro(e,r,{includeHydrateFallback:n}={}){return Io(e.map(a=>{let o=r.routes[a.route.id];if(!o)return[];let s=[o.module];return o.clientActionModule&&(s=s.concat(o.clientActionModule)),o.clientLoaderModule&&(s=s.concat(o.clientLoaderModule)),n&&o.hydrateFallbackModule&&(s=s.concat(o.hydrateFallbackModule)),o.imports&&(s=s.concat(o.imports)),s}).flat(1))}function Io(e){return[...new Set(e)]}function Mo(e){let r={},n=Object.keys(e).sort();for(let a of n)r[a]=e[a];return r}function _o(e,r){let n=new Set;return new Set(r),e.reduce((a,o)=>{let s=JSON.stringify(Mo(o));return n.has(s)||(n.add(s),a.push({key:s,link:o})),a},[])}function Lr(){let e=u.useContext(Xe);return An(e,"You must render this element inside a <DataRouterContext.Provider> element"),e}function Po(){let e=u.useContext(zt);return An(e,"You must render this element inside a <DataRouterStateContext.Provider> element"),e}var Fn=u.createContext(void 0);Fn.displayName="FrameworkContext";function Vr(){let e=u.useContext(Fn);return An(e,"You must render this element inside a <HydratedRouter> element"),e}function Oo(e,r){let n=u.useContext(Fn),[a,o]=u.useState(!1),[s,i]=u.useState(!1),{onFocus:l,onBlur:c,onMouseEnter:d,onMouseLeave:p,onTouchStart:f}=r,k=u.useRef(null);u.useEffect(()=>{if(e==="render"&&i(!0),e==="viewport"){let x=m=>{m.forEach(B=>{i(B.isIntersecting)})},h=new IntersectionObserver(x,{threshold:.5});return k.current&&h.observe(k.current),()=>{h.disconnect()}}},[e]),u.useEffect(()=>{if(a){let x=setTimeout(()=>{i(!0)},100);return()=>{clearTimeout(x)}}},[a]);let w=()=>{o(!0)},S=()=>{o(!1),i(!1)};return n?e!=="intent"?[s,k,{}]:[s,k,{onFocus:et(l,w),onBlur:et(c,S),onMouseEnter:et(d,w),onMouseLeave:et(p,S),onTouchStart:et(f,w)}]:[!1,k,{}]}function et(e,r){return n=>{e&&e(n),n.defaultPrevented||r(n)}}function Uo({page:e,...r}){let{router:n}=Lr(),a=u.useMemo(()=>Dr(n.routes,e,n.basename),[n.routes,e,n.basename]);return a?u.createElement(qo,{page:e,matches:a,...r}):null}function zo(e){let{manifest:r,routeModules:n}=Vr(),[a,o]=u.useState([]);return u.useEffect(()=>{let s=!1;return To(e,r,n).then(i=>{s||o(i)}),()=>{s=!0}},[e,r,n]),a}function qo({page:e,matches:r,...n}){let a=De(),{future:o,manifest:s,routeModules:i}=Vr(),{basename:l}=Lr(),{loaderData:c,matches:d}=Po(),p=u.useMemo(()=>Wn(e,r,d,s,a,"data"),[e,r,d,s,a]),f=u.useMemo(()=>Wn(e,r,d,s,a,"assets"),[e,r,d,s,a]),k=u.useMemo(()=>{if(e===a.pathname+a.search+a.hash)return[];let x=new Set,h=!1;if(r.forEach(B=>{var A;let T=s.routes[B.route.id];!T||!T.hasLoader||(!p.some(U=>U.route.id===B.route.id)&&B.route.id in c&&((A=i[B.route.id])!=null&&A.shouldRevalidate)||T.hasClientLoader?h=!0:x.add(B.route.id))}),x.size===0)return[];let m=Ao(e,l,o.unstable_trailingSlashAwareDataRequests,"data");return h&&x.size>0&&m.searchParams.set("_routes",r.filter(B=>x.has(B.route.id)).map(B=>B.route.id).join(",")),[m.pathname+m.search]},[l,o.unstable_trailingSlashAwareDataRequests,c,a,s,p,r,e,i]),w=u.useMemo(()=>Ro(f,s),[f,s]),S=zo(f);return u.createElement(u.Fragment,null,k.map(x=>u.createElement("link",{key:x,rel:"prefetch",as:"fetch",href:x,...n})),w.map(x=>u.createElement("link",{key:x,rel:"modulepreload",href:x,...n})),S.map(({key:x,link:h})=>u.createElement("link",{key:x,nonce:n.nonce,...h,crossOrigin:h.crossOrigin??n.crossOrigin})))}function Lo(...e){return r=>{e.forEach(n=>{typeof n=="function"?n(r):n!=null&&(n.current=r)})}}var Vo=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";try{Vo&&(window.__reactRouterVersion="7.13.2")}catch{}function $o({basename:e,children:r,unstable_useTransitions:n,window:a}){let o=u.useRef();o.current==null&&(o.current=Sa({window:a,v5Compat:!0}));let s=o.current,[i,l]=u.useState({action:s.action,location:s.location}),c=u.useCallback(d=>{n===!1?l(d):u.startTransition(()=>l(d))},[n]);return u.useLayoutEffect(()=>s.listen(c),[s,c]),u.createElement(qr,{basename:e,children:r,location:i.location,navigationType:i.action,navigator:s,unstable_useTransitions:n})}function Wo({basename:e,children:r,unstable_useTransitions:n,window:a}){let o=u.useRef();o.current==null&&(o.current=Ea({window:a,v5Compat:!0}));let s=o.current,[i,l]=u.useState({action:s.action,location:s.location}),c=u.useCallback(d=>{n===!1?l(d):u.startTransition(()=>l(d))},[n]);return u.useLayoutEffect(()=>s.listen(c),[s,c]),u.createElement(qr,{basename:e,children:r,location:i.location,navigationType:i.action,navigator:s,unstable_useTransitions:n})}var $r=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,Wr=u.forwardRef(function({onClick:r,discover:n="render",prefetch:a="none",relative:o,reloadDocument:s,replace:i,unstable_mask:l,state:c,target:d,to:p,preventScrollReset:f,viewTransition:k,unstable_defaultShouldRevalidate:w,...S},x){let{basename:h,navigator:m,unstable_useTransitions:B}=u.useContext(ye),T=typeof p=="string"&&$r.test(p),A=Tr(p,h);p=A.to;let U=ro(p,{relative:o}),E=De(),b=null;if(l){let V=En(l,[],E.unstable_mask?E.unstable_mask.pathname:"/",!0);h!=="/"&&(V.pathname=V.pathname==="/"?h:Ce([h,V.pathname])),b=m.createHref(V)}let[g,I,O]=Oo(a,S),R=Yo(p,{replace:i,unstable_mask:l,state:c,target:d,preventScrollReset:f,relative:o,viewTransition:k,unstable_defaultShouldRevalidate:w,unstable_useTransitions:B});function F(V){r&&r(V),V.defaultPrevented||R(V)}let _=!(A.isExternal||s),D=u.createElement("a",{...S,...O,href:(_?b:void 0)||A.absoluteURL||U,onClick:_?F:r,ref:Lo(x,I),target:d,"data-discover":!T&&n==="render"?"true":void 0});return g&&!T?u.createElement(u.Fragment,null,D,u.createElement(Uo,{page:U})):D});Wr.displayName="Link";var Ho=u.forwardRef(function({"aria-current":r="page",caseSensitive:n=!1,className:a="",end:o=!1,style:s,to:i,viewTransition:l,children:c,...d},p){let f=yt(i,{relative:d.relative}),k=De(),w=u.useContext(zt),{navigator:S,basename:x}=u.useContext(ye),h=w!=null&&es(f)&&l===!0,m=S.encodeLocation?S.encodeLocation(f).pathname:f.pathname,B=k.pathname,T=w&&w.navigation&&w.navigation.location?w.navigation.location.pathname:null;n||(B=B.toLowerCase(),T=T?T.toLowerCase():null,m=m.toLowerCase()),T&&x&&(T=Fe(T,x)||T);const A=m!=="/"&&m.endsWith("/")?m.length-1:m.length;let U=B===m||!o&&B.startsWith(m)&&B.charAt(A)==="/",E=T!=null&&(T===m||!o&&T.startsWith(m)&&T.charAt(m.length)==="/"),b={isActive:U,isPending:E,isTransitioning:h},g=U?r:void 0,I;typeof a=="function"?I=a(b):I=[a,U?"active":null,E?"pending":null,h?"transitioning":null].filter(Boolean).join(" ");let O=typeof s=="function"?s(b):s;return u.createElement(Wr,{...d,"aria-current":g,className:I,ref:p,style:O,to:i,viewTransition:l},typeof c=="function"?c(b):c)});Ho.displayName="NavLink";var Ko=u.forwardRef(({discover:e="render",fetcherKey:r,navigate:n,reloadDocument:a,replace:o,state:s,method:i=Nt,action:l,onSubmit:c,relative:d,preventScrollReset:p,viewTransition:f,unstable_defaultShouldRevalidate:k,...w},S)=>{let{unstable_useTransitions:x}=u.useContext(ye),h=Qo(),m=Zo(l,{relative:d}),B=i.toLowerCase()==="get"?"get":"post",T=typeof l=="string"&&$r.test(l),A=U=>{if(c&&c(U),U.defaultPrevented)return;U.preventDefault();let E=U.nativeEvent.submitter,b=(E==null?void 0:E.getAttribute("formmethod"))||i,g=()=>h(E||U.currentTarget,{fetcherKey:r,method:b,navigate:n,replace:o,state:s,relative:d,preventScrollReset:p,viewTransition:f,unstable_defaultShouldRevalidate:k});x&&n!==!1?u.startTransition(()=>g()):g()};return u.createElement("form",{ref:S,method:B,action:m,onSubmit:a?c:A,...w,"data-discover":!T&&e==="render"?"true":void 0})});Ko.displayName="Form";function Go(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function Hr(e){let r=u.useContext(Xe);return re(r,Go(e)),r}function Yo(e,{target:r,replace:n,unstable_mask:a,state:o,preventScrollReset:s,relative:i,viewTransition:l,unstable_defaultShouldRevalidate:c,unstable_useTransitions:d}={}){let p=ke(),f=De(),k=yt(e,{relative:i});return u.useCallback(w=>{if(Co(w,r)){w.preventDefault();let S=n!==void 0?n:He(f)===He(k),x=()=>p(e,{replace:S,unstable_mask:a,state:o,preventScrollReset:s,relative:i,viewTransition:l,unstable_defaultShouldRevalidate:c});d?u.startTransition(()=>x()):x()}},[f,p,k,n,a,o,r,e,s,i,l,c,d])}var Jo=0,Xo=()=>`__${String(++Jo)}__`;function Qo(){let{router:e}=Hr("useSubmit"),{basename:r}=u.useContext(ye),n=yo(),a=e.fetch,o=e.navigate;return u.useCallback(async(s,i={})=>{let{action:l,method:c,encType:d,formData:p,body:f}=Bo(s,r);if(i.navigate===!1){let k=i.fetcherKey||Xo();await a(k,n,i.action||l,{unstable_defaultShouldRevalidate:i.unstable_defaultShouldRevalidate,preventScrollReset:i.preventScrollReset,formData:p,body:f,formMethod:i.method||c,formEncType:i.encType||d,flushSync:i.flushSync})}else await o(i.action||l,{unstable_defaultShouldRevalidate:i.unstable_defaultShouldRevalidate,preventScrollReset:i.preventScrollReset,formData:p,body:f,formMethod:i.method||c,formEncType:i.encType||d,replace:i.replace,state:i.state,fromRouteId:n,flushSync:i.flushSync,viewTransition:i.viewTransition})},[a,o,r,n])}function Zo(e,{relative:r}={}){let{basename:n}=u.useContext(ye),a=u.useContext(je);re(a,"useFormAction must be used inside a RouteContext");let[o]=a.matches.slice(-1),s={...yt(e||".",{relative:r})},i=De();if(e==null){s.search=i.search;let l=new URLSearchParams(s.search),c=l.getAll("index");if(c.some(p=>p==="")){l.delete("index"),c.filter(f=>f).forEach(f=>l.append("index",f));let p=l.toString();s.search=p?`?${p}`:""}}return(!e||e===".")&&o.route.index&&(s.search=s.search?s.search.replace(/^\?/,"?index&"):"?index"),n!=="/"&&(s.pathname=s.pathname==="/"?n:Ce([n,s.pathname])),He(s)}function es(e,{relative:r}={}){let n=u.useContext(Ir);re(n!=null,"`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`. Did you accidentally import `RouterProvider` from `react-router`?");let{basename:a}=Hr("useViewTransitionState"),o=yt(e,{relative:r});if(!n.isTransitioning)return!1;let s=Fe(n.currentLocation.pathname,a)||n.currentLocation.pathname,i=Fe(n.nextLocation.pathname,a)||n.nextLocation.pathname;return _t(o.pathname,i)!=null||_t(o.pathname,s)!=null}const ts="modulepreload",ns=function(e){return"/"+e},Hn={},oe=function(r,n,a){let o=Promise.resolve();if(n&&n.length>0){let i=function(d){return Promise.all(d.map(p=>Promise.resolve(p).then(f=>({status:"fulfilled",value:f}),f=>({status:"rejected",reason:f}))))};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"));o=i(n.map(d=>{if(d=ns(d),d in Hn)return;Hn[d]=!0;const p=d.endsWith(".css"),f=p?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${d}"]${f}`))return;const k=document.createElement("link");if(k.rel=p?"stylesheet":ts,p||(k.as="script"),k.crossOrigin="",k.href=d,c&&k.setAttribute("nonce",c),document.head.appendChild(k),p)return new Promise((w,S)=>{k.addEventListener("load",w),k.addEventListener("error",()=>S(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 o.then(i=>{for(const l of i||[])l.status==="rejected"&&s(l.reason);return r().catch(s)})},rs={dependsOn:{}};function as(e,r){return new Set([e,...(r??rs).dependsOn[e]??[]])}function os(e,r){const n=r instanceof Set?r:new Set(r);return n.size===0?!1:e.some(a=>n.has(a))}function Kn(e){return(e.sourceEnd.type?1:0)+(e.targetEnd.type?1:0)}function ss(e,r){return Kn(r)-Kn(e)||e.label.localeCompare(r.label)}function Kr(e){return new Map(e.map(r=>[r.name,r]))}function Nn(e,r){if(e)return r.relationships.find(n=>n.name===e||n.sysmlName===e)}function vt(e,r,n){var i;if(!r)return!0;if(!e)return!1;if(e===r)return!0;const a=Array.isArray(n)?Kr(n):n;let o=e;const s=new Set;for(;o&&!s.has(o);){if(o===r)return!0;s.add(o),o=(i=a.get(o))==null?void 0:i.superType}return!1}function Ke(e,r,n){const a=Kr(n.kinds),o=[];for(const s of n.relationships)s.isAbstract||(vt(e.kind,s.sourceEnd.type,a)&&vt(r.kind,s.targetEnd.type,a)&&o.push({definition:s,direction:"outgoing",sourceId:e.id,targetId:r.id}),vt(r.kind,s.sourceEnd.type,a)&&vt(e.kind,s.targetEnd.type,a)&&o.push({definition:s,direction:"incoming",sourceId:r.id,targetId:e.id}));return o.sort((s,i)=>ss(s.definition,i.definition))}const mn={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 fn(e){var a,o;const r=[],n=[...((a=mn[e])==null?void 0:a.superTypes)??[]];for(;n.length>0;){const s=n.shift();r.includes(s)||(r.push(s),n.push(...((o=mn[s])==null?void 0:o.superTypes)??[]))}return r}function Gr(e,r){return e===r||fn(e).includes(r)}const Yr=[{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"}],is={activityfinalnode:"activityFinal",activityfinalnodeusage:"activityFinal",flowfinalnode:"flowFinal",flowfinalnodeusage:"flowFinal"},ls={fork:"ForkNode",join:"JoinNode",decide:"DecisionNode",merge:"MergeNode"};function ds(){return[...Yr].sort((e,r)=>fn(r.metaclass).length-fn(e.metaclass).length)}function cs(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 us(e){for(const r of cs(e??""))if(r in mn)return r}function ps(e,r){var s;const n=new Map((r??[]).map(i=>[i.name,i])),a=[];let o=e;for(;o&&!a.includes(o);)a.push(o),o=(s=n.get(o))==null?void 0:s.superType;return a}function Jr(e,r){var i,l;const n=(l=(i=e.attributes)==null?void 0:i.controlKind)==null?void 0:l.toLowerCase(),a=n?ls[n]:void 0,o=[...a?[a]:[],...ps(e.kind,r==null?void 0:r.kinds),e.kind,e.construct],s=ds();for(const c of o){const d=is[(c??"").replace(/[ _-]/g,"").toLowerCase()];if(d)return d;const p=us(c);if(!p)continue;const f=s.find(k=>Gr(p,k.metaclass));if(f)return f.role}}function Ic(e,r){const n=Jr(e,r);if(n==="activityFinal"||n==="flowFinal")return!0;const a=Yr.find(o=>o.role===n);return a!==void 0&&Gr(a.metaclass,"ControlNode")}const ms=["general","interconnection","actionflow","statetransition","sequence","grid","browser","geometry"];new Set(ms);const fs={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"}]},hs={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"}]},ys={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"}]},gs={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"}]},Gn=[fs,hs,ys,gs];function xs(e,r){return e.map(n=>{const a=n.trim().toLowerCase();if(r){const i=r.columnMappings.find(l=>l.sourceColumn.toLowerCase()===a);if(i)return{...i,sourceColumn:n}}const o=bs.find(i=>i.sourceColumn.toLowerCase()===a);if(o)return{...o,sourceColumn:n};const s=Ss(n);return{sourceColumn:n,targetAttribute:s}})}const bs=[{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 vs(e,r,n,a){const o=[],s=[],i=new Set,l=[];for(const x of r){if(!x.targetAttribute){s.push(x.sourceColumn);continue}i.has(x.targetAttribute)||(i.add(x.targetAttribute),l.push(x))}const c=i.has("id"),d=i.has("name"),p=i.has("kind");c||o.push("No column mapped to 'id' — id will be auto-generated from row number"),d||o.push("No column mapped to 'name'"),!p&&!a&&o.push("No column mapped to 'kind' and no defaultKind set");const f=["id","name","kind","construct","doc"],k=Array.from(i).filter(x=>!f.includes(x)),w=[...f.filter(x=>i.has(x)),...k];for(const x of["id","name","kind"])w.includes(x)||w.unshift(x);const S=[w.map(Yn).join(",")];return e.forEach((x,h)=>{const m={};for(const A of l){const U=x[A.sourceColumn]??"";m[A.targetAttribute]=ws(U,A.transform)}(!m.id||m.id.trim()==="")&&(m.id=`row_${h+1}`),(!m.kind||m.kind.trim()==="")&&a&&(m.kind=a);const B=m.kind;B&&Object.keys(n.kinds).length>0&&!n.kinds[B]&&o.push(`Row ${h+2}: unknown kind '${B}' (not declared by the resolved ontology)`);const T=w.map(A=>Yn(m[A]??""));S.push(T.join(","))}),{csv:S.join(`
14
14
  `)+`
15
- `,skippedColumns:s,warnings:o}}function Ss(e,r){if(!r)return e;switch(r){case"sanitize-id":return Es(e);case"upper":return e.toUpperCase();case"lower":return e.toLowerCase();default:return e}}function Es(e){let r=e.trim().replace(/[\s\-]+/g,"_").replace(/[^a-zA-Z0-9_]/g,"").toLowerCase();return/^\d/.test(r)&&(r="e_"+r),r}function Cs(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 Gn(e){return e.includes(",")||e.includes('"')||e.includes(`
16
- `)?`"${e.replace(/"/g,'""')}"`:e}let q=null,gt=null,Ht=0;const js=1e4;let De=!1,At=null,Me=null,ge=null,et=!1;const We=new Map;function Ds(e){const r=We.get(e.requestId);r&&(clearTimeout(r.timer),We.delete(e.requestId),e.success||e.conflict?r.resolve(e):r.reject(new Error(e.error||`Could not ${e.operation} diagram source.`)))}function Bs(e){for(const r of We.values())clearTimeout(r.timer),r.reject(new Error(e));We.clear()}function Kt(e){return e?e.snapshot?(Me=e.workspaceSessionId,ge=e.revision,et=!1,!0):et?!1:Me!==e.workspaceSessionId||ge===null?(et=!0,Xn(),!1):e.revision===ge?!0:e.baseRevision===ge&&e.revision===ge+1?(ge=e.revision,!0):(et=!0,Xn(),!1):!0}const An=new Map,Fn=new Map,Nn=new Map,Tn=new Map,it=new Map,Rt=new Map,lt=new Map,dt=new Map,It=new Map;function je(e,r){const n=r.get(e.requestId);n&&(clearTimeout(n.timer),r.delete(e.requestId),n.resolve(e))}function As(e){for(const r of[An,Fn,Nn,Tn,It,Rt]){for(const n of r.values())clearTimeout(n.timer),n.reject(new Error(e));r.clear()}for(const r of it.values())clearTimeout(r.timer),r.reject(new Error(e));it.clear();for(const r of dt.values())clearTimeout(r.timer),r.reject(new Error("The development server disconnected."));dt.clear();for(const r of lt.values())clearTimeout(r.timer),r.reject(new Error(e));lt.clear()}function Ut(e,r,n){if(!q||q.readyState!==WebSocket.OPEN)return Promise.reject(new Error("The development server is not connected."));const a=`${e}-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`;return new Promise((o,s)=>{const i=setTimeout(()=>{n.delete(a),s(new Error("The server did not answer the relationship request."))},15e3);n.set(a,{resolve:o,reject:s,timer:i}),q.send(JSON.stringify({type:e,payload:{...r,requestId:a}}))})}function ct(e){var r,n;return(n=(r=E.getState().model)==null?void 0:r.irIdentities)==null?void 0:n[e]}function zt(e,r){var a;const n=E.getState().model;if(!(!Me||ge===null||!n))return{workspaceSessionId:Me,baseRevision:ge,sourceFile:e,expectedSourceHash:((a=n.sourceHashes)==null?void 0:a[e])??"",targetElementIds:r}}function Fs(){const e=window.__MEMO_DATA__;if(!e)return!1;const r=E.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 Qr(e){if(window.__MEMO_DATA__)return;Rs();const r=`ws://${window.location.host}`;if(q&&(q.readyState===WebSocket.OPEN||q.readyState===WebSocket.CONNECTING))return;q=new WebSocket(r);const n=E.getState();q.onopen=()=>{n.setConnected(!0),Ht=0,At=null,De=!1,Me=null,ge=null,et=!1,n.setRestartRequired(null),gt&&(clearTimeout(gt),gt=null)},q.onmessage=a=>{try{const o=JSON.parse(a.data);Ns(o)}catch{}},q.onclose=()=>{n.setConnected(!1),Bs("The development server disconnected."),As("The development server disconnected."),q=null,Ht++;const a=Math.min(2e3*Math.pow(2,Ht-1),js);gt=setTimeout(()=>Qr(),a)},q.onerror=()=>{}}function Ns(e){var n;const r=E.getState();switch(e.type){case"app:restart-required":De=!0,r.setRestartRequired(e);return;case"app:edit-conflict":r.setEditConflict(e.payload);return;case"model:update":if(De||!Kt(e.revision))return;if((n=e.revision)!=null&&n.modelDelta&&!e.revision.snapshot&&r.model){const a={...r.model.elements,...e.revision.modelDelta.upsertElements};for(const o of e.revision.modelDelta.removeElementIds)delete a[o];r.setModel({...r.model,...e.revision.modelDelta.patch,elements:a})}else r.setModel(e.payload);break;case"source:coherence":r.setSourceCoherence(e.payload);break;case"source:changed":if(De)return;r.applySourceChange(e.payload);break;case"validation:update":if(De||!Kt(e.revision))return;r.setValidation(e.payload);break;case"completeness:update":if(De||!Kt(e.revision))return;r.setCompleteness(e.payload);break;case"methodology:update":if(De)return;r.setMethodology(e.payload);break;case"rules:update":if(De)return;r.setEffectiveRules(e.payload.rules,e.payload.diagnostics);break;case"rule:policy:write:result":je(e.payload,dt);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":Ds(e.payload);break;case"relationship:create:result":je(e.payload,An);break;case"relationship:delete:result":je(e.payload,Fn);break;case"relationship:update:result":je(e.payload,Nn);break;case"element:delete:result":je(e.payload,Tn);break;case"element:mutation:result":je(e.payload,it);break;case"package:mutation:result":je(e.payload,Rt);break;case"methodology:source:result":je(e.payload,lt);break;case"screen-capture:upload:result":je(e.payload,It);break;case"ontology:packages":{const a=e.payload.ontologyHash;if(a){if(At===null)At=a;else if(At!==a){De=!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 a=e.payload;r.resolveLlmRequest(a.requestId,{sysml:a.sysml,initialSysml:a.initialSysml,explanation:a.explanation,suggestedFile:a.suggestedFile,attempts:a.attempts,diagnostics:a.diagnostics??[],changeRecord:a.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":Yn(()=>r.setDhfDocuments(e.payload.docs));break;case"dhf:settings":Yn(()=>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 mn=!1;const Zr=600,at=new Map;let xt=null;function Yn(e){mn=!0;try{e()}finally{mn=!1}}function He(e){q&&q.readyState===WebSocket.OPEN&&q.send(JSON.stringify(e))}function Ts(e){const r=at.get(e.id);r&&clearTimeout(r),at.set(e.id,setTimeout(()=>{at.delete(e.id);const n=E.getState().dhfDocuments.find(a=>a.id===e.id);n&&He({type:"dhf:doc:save",payload:{doc:n}})},Zr))}let Jn=!1;function Rs(){Jn||(Jn=!0,E.subscribe((e,r)=>{if(!mn){if(e.dhfDocuments!==r.dhfDocuments){const n=new Map(r.dhfDocuments.map(a=>[a.id,a]));for(const a of e.dhfDocuments)n.get(a.id)!==a&&Ts(a),n.delete(a.id);for(const a of n.keys()){const o=at.get(a);o&&(clearTimeout(o),at.delete(a)),He({type:"dhf:doc:delete",payload:{docId:a}})}}e.dhfSettings!==r.dhfSettings&&(xt&&clearTimeout(xt),xt=setTimeout(()=>{xt=null,He({type:"dhf:settings:save",payload:{settings:E.getState().dhfSettings}})},Zr))}}))}function Is(e){He({type:"dhf:templates:list",payload:{requestId:e}})}function Ms(e,r){He({type:"dhf:template:read",payload:{requestId:e,path:r}})}function _s(e,r,n){He({type:"dhf:template:save",payload:{requestId:e,title:r,content:n}})}function Xn(){q&&q.readyState===WebSocket.OPEN&&q.send(JSON.stringify({type:"request:refresh"}))}function bt(e){return ea("element:update",e)}function Gt(e){return ea("element:create",e)}function ea(e,r){var l;if(!q||q.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)}`,a=E.getState().model,o=r.file??"model/catalog/project.sysml",s=((l=a==null?void 0:a.sourceHashes)==null?void 0:l[o])??"",i=Me&&ge!==null?{workspaceSessionId:Me,baseRevision:ge,sourceFile:o,expectedSourceHash:s,targetElementIds:[r.id]}:void 0;return new Promise((c,d)=>{const p=setTimeout(()=>{it.delete(n),d(new Error("The server did not answer the element mutation."))},15e3);it.set(n,{resolve:c,reject:d,timer:p}),q.send(JSON.stringify({type:e,payload:{...r,file:o,requestId:n,precondition:i,...e==="element:update"?{irIdentity:ct(r.id)}:{}}}))})}function Je(e,r){if(!q||q.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((a,o)=>{const s=setTimeout(()=>{Rt.delete(n),o(new Error("The server did not answer the containment change."))},15e3);Rt.set(n,{resolve:a,reject:o,timer:s}),q.send(JSON.stringify({type:e,payload:{...r,requestId:n}}))})}function Ps(e){const r=e.owningFile??"model/catalog/relationships.sysml";return Ut("relationship:create",{...e,owningFile:r,sourceIdentity:ct(e.sourceId),targetIdentity:ct(e.targetId),precondition:zt(r,[e.sourceId,e.targetId])},An)}function Os(e){var a;const r=(a=E.getState().model)==null?void 0:a.relationships.find(o=>o.id===e.relationshipId),n=(r==null?void 0:r.file)??e.sourceFile;return Ut("relationship:delete",{...e,precondition:n?zt(n,[r==null?void 0:r.sourceId,r==null?void 0:r.targetId].filter(Boolean)):void 0},Fn)}function Mc(e){var a;const r=(a=E.getState().model)==null?void 0:a.relationships.find(o=>o.id===e.relationshipId),n=r==null?void 0:r.file;return Ut("relationship:update",{...e,sourceIdentity:ct(e.sourceId),targetIdentity:ct(e.targetId),precondition:n?zt(n,[e.sourceId,e.targetId]):void 0},Nn)}function Us(e){var n;const r=(n=E.getState().model)==null?void 0:n.elements[e];return Ut("element:delete",{elementId:e,precondition:r!=null&&r.file?zt(r.file,[e]):void 0},Tn)}function _c(e){if(!q||q.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,a)=>{const o=setTimeout(()=>{It.delete(r),a(new Error("The server did not answer the screen-capture upload request."))},3e4);It.set(r,{resolve:n,reject:a,timer:o}),q.send(JSON.stringify({type:"screen-capture:upload",payload:{...e,requestId:r}}))})}function zs(e){q&&q.readyState===WebSocket.OPEN&&q.send(JSON.stringify({type:"diagram:create",payload:e}))}function Qn(e){q&&q.readyState===WebSocket.OPEN&&q.send(JSON.stringify({type:"diagram:update",payload:e}))}function qs(e){if(q&&q.readyState===WebSocket.OPEN){const r={id:e};q.send(JSON.stringify({type:"diagram:delete",payload:r}))}}function Pc(e,r){if(q&&q.readyState===WebSocket.OPEN){const n={diagramId:e,text:r};q.send(JSON.stringify({type:"diagram:parse",payload:n}))}}function ta(e,r,n){if(!q||q.readyState!==WebSocket.OPEN)return Promise.reject(new Error("The development server is not connected."));const a=`diagram-source-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`;return new Promise((o,s)=>{const i=setTimeout(()=>{We.delete(a),s(new Error(`Timed out while trying to ${e} the SysML source.`))},1e4);We.set(a,{resolve:o,reject:s,timer:i}),q.send(JSON.stringify({type:e==="load"?"diagram:source:request":"diagram:source:save",payload:{requestId:a,diagramId:r,...e==="save"?n:{}}}))})}function Oc(e){return ta("load",e)}function Uc(e,r,n){return ta("save",e,{text:r,baseRevision:n})}function fn(e,r,n){if(!q||q.readyState!==WebSocket.OPEN)return Promise.reject(new Error("The development server is not connected."));const a=`methodology-${e}-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`;return new Promise((o,s)=>{const i=setTimeout(()=>{lt.delete(a),s(new Error(`Timed out while trying to ${e} methodology source.`))},15e3);lt.set(a,{resolve:o,reject:s,timer:i}),q.send(JSON.stringify({type:`methodology:source:${e==="load"?"request":"save"}`,payload:{requestId:a,sourceFile:r,...n}}))})}function Ls(e){q&&q.readyState===WebSocket.OPEN&&q.send(JSON.stringify({type:"element:remap-kinds",payload:{mappings:e}}))}function Yt(e){q&&q.readyState===WebSocket.OPEN&&q.send(JSON.stringify({type:"ontology:save-selection",payload:{selected:e}}))}function zc(e){q&&q.readyState===WebSocket.OPEN&&q.send(JSON.stringify({type:"ontology:install",payload:{source:e}}))}function Vs(e){q&&q.readyState===WebSocket.OPEN&&q.send(JSON.stringify({type:"open-file",payload:{path:e}}))}function qc(e){q&&q.readyState===WebSocket.OPEN&&q.send(JSON.stringify({type:"ontology:remove",payload:{packageName:e}}))}function Lc(e,r){q&&q.readyState===WebSocket.OPEN&&q.send(JSON.stringify({type:"diagram:layout:update",payload:{diagramId:e,layout:r}}))}function $s(e){q&&q.readyState===WebSocket.OPEN&&q.send(JSON.stringify({type:"csv:import",payload:e}))}function Vc(e,r,n,a){q&&q.readyState===WebSocket.OPEN&&q.send(JSON.stringify({type:"llm:chat",payload:{requestId:e,question:r,history:n,allowEdits:a}}))}function $c(e,r){q&&q.readyState===WebSocket.OPEN&&q.send(JSON.stringify({type:"llm:chat:apply",payload:{requestId:e,changes:r}}))}function Wc(e,r){q&&q.readyState===WebSocket.OPEN&&q.send(JSON.stringify({type:"llm:settings:save",payload:{requestId:e,...r}}))}function Hc(e,r){q&&q.readyState===WebSocket.OPEN&&q.send(JSON.stringify({type:"llm:generate",payload:{requestId:e,description:r}}))}function Kc(e,r,n){q&&q.readyState===WebSocket.OPEN&&q.send(JSON.stringify({type:"llm:draft",payload:{requestId:e,documentTypeId:r,targetSections:n}}))}function Ws(e){if(!q||q.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,a)=>{const o=setTimeout(()=>{dt.delete(r),a(new Error("Timed out while writing the rule policy."))},15e3);dt.set(r,{resolve:n,reject:a,timer:o}),q.send(JSON.stringify({type:"rule:policy:write",payload:{requestId:r,...e}}))})}const Zn="memo:userViewpoints",hn="memo:activeView";function Hs(){try{const e=JSON.parse(sessionStorage.getItem(hn)??"null");if((e==null?void 0:e.type)==="diagram"&&typeof e.diagramId=="string")return e}catch{}return{type:"welcome"}}function er(e){try{e.type==="diagram"?sessionStorage.setItem(hn,JSON.stringify(e)):sessionStorage.removeItem(hn)}catch{}}function Ks(){try{const e=localStorage.getItem(Zn);if(e){const r=JSON.parse(e);return localStorage.removeItem(Zn),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 vt=Hs(),E=jr((e,r)=>({model:null,validation:null,completeness:null,connected:!1,restartRequired:null,sourceCoherence:null,editConflict:null,methodology:null,effectiveRules:[],ruleDiagnostics:[],lastSourceChange:null,activeMode:vt.type==="diagram"?"diagram":"catalog",activeView:vt,explorerTab:"model",selectedElementId:null,selectedRelationshipId:null,selectedElementIds:new Set,recentlyVisited:[],selectedViewpointId:null,selectedDiagramId:vt.type==="diagram"?vt.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:Ks(),diagramLayouts:{},mergeDiagramLayouts:n=>e(a=>({diagramLayouts:{...a.diagramLayouts,...n}})),setNodeLayout:(n,a,o)=>e(s=>{const i=s.diagramLayouts[n]??{nodes:{},edges:{}};return{diagramLayouts:{...s.diagramLayouts,[n]:{...i,nodes:{...i.nodes,[a]:{...i.nodes[a]??{},...o}}}}}}),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,a,o)=>e({llmAvailable:n,llmProvider:a,llmModel:o}),registerLlmRequest:(n,a,o)=>e(s=>{const i=new Map(s.llmPending);return i.set(n,{resolve:a,reject:o}),{llmPending:i}}),resolveLlmRequest:(n,a)=>e(o=>{const s=o.llmPending.get(n);if(s){s.resolve(a);const i=new Map(o.llmPending);return i.delete(n),{llmPending:i}}return{}}),rejectLlmRequest:(n,a)=>e(o=>{const s=o.llmPending.get(n);if(s){s.reject(new Error(a));const i=new Map(o.llmPending);return i.delete(n),{llmPending:i}}return{}}),analysisIssues:[],editingElementId:null,pendingEdits:new Map,pendingRelationships:[],createRelationship:async n=>{const a=`pending-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`,o=Ys(r().model,n.type);e(i=>({pendingRelationships:[...i.pendingRelationships,{pendingId:a,type:n.type,label:(o==null?void 0:o.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===a?{...d,status:"failed",error:i}:d)})),{success:!1,error:i,diagnostics:l});try{const i=await Ps(n);return i.success?(e(l=>({pendingRelationships:l.pendingRelationships.filter(c=>c.pendingId!==a)})),{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 a=await Os({relationshipId:n});return a.success?(e(o=>o.model?{model:{...o.model,relationships:o.model.relationships.filter(s=>s.id!==n)},selectedRelationshipId:o.selectedRelationshipId===n?null:o.selectedRelationshipId}:{}),{success:!0,sourceFile:a.sourceFile}):{success:!1,error:a.error??"The relationship could not be deleted."}}catch(a){return{success:!1,error:a instanceof Error?a.message:String(a)}}},deleteModelElement:async n=>{try{const a=await Us(n);return a.success?(e(o=>{if(!o.model)return{};const s={...o.model.elements};return delete s[n],{model:{...o.model,elements:s,relationships:o.model.relationships.filter(i=>i.sourceId!==n&&i.targetId!==n),diagrams:(o.model.diagrams??[]).map(i=>{var l;return{...i,elementIds:(l=i.elementIds)==null?void 0:l.filter(c=>c!==n)}})},selectedElementId:o.selectedElementId===n?null:o.selectedElementId,selectedElementIds:new Set([...o.selectedElementIds].filter(i=>i!==n))}}),{success:!0}):{success:!1,error:a.error??"The element could not be deleted."}}catch(a){return{success:!1,error:a instanceof Error?a.message:String(a)}}},dismissPendingRelationship:n=>e(a=>({pendingRelationships:a.pendingRelationships.filter(o=>o.pendingId!==n)})),setRestartRequired:n=>e({restartRequired:n}),setSourceCoherence:n=>e({sourceCoherence:n.coherent?null:n}),setEditConflict:n=>e({editConflict:n}),applySourceChange:n=>e(a=>{var o;return{lastSourceChange:{...n,seq:(((o=a.lastSourceChange)==null?void 0:o.seq)??0)+1}}}),setMethodology:n=>e({methodology:n}),setEffectiveRules:(n,a)=>e({effectiveRules:n??[],ruleDiagnostics:a??[]}),setModel:n=>e(a=>{var l,c,d,p;let o=a.activeView,s=a.selectedDiagramId,i=a.selectedViewpointId;if(o.type==="diagram"){const f=o.diagramId,b=(l=n.diagrams)==null?void 0:l.find(g=>g.id===f),w=(d=(c=a.model)==null?void 0:c.diagrams)==null?void 0:d.find(g=>g.id===f),S=b??(w!=null&&w.sourceFile?(p=n.diagrams)==null?void 0:p.find(g=>g.sourceFile===w.sourceFile):void 0);S&&(S.id!==f&&(o={type:"diagram",diagramId:S.id},er(o)),s=S.id,i=S.viewpointId==="__model"?null:S.viewpointId)}else(o.type==="welcome"||o.type==="dashboard")&&Object.keys(n.elements).length>0&&(o={type:"dashboard"});return{model:n,activeView:o,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=>{er(n),e({activeView:n})},setExplorerTab:n=>e({explorerTab:n}),selectElement:n=>{e(n?a=>{const o=[n,...a.recentlyVisited.filter(s=>s!==n)].slice(0,20);return{selectedElementId:n,activeView:{type:"element-detail",elementId:n},recentlyVisited:o}}:{selectedElementId:n})},inspectElement:n=>e(a=>({selectedElementId:n,selectedRelationshipId:null,propertiesPanelCollapsed:n?!1:a.propertiesPanelCollapsed,recentlyVisited:n?[n,...a.recentlyVisited.filter(o=>o!==n)].slice(0,20):a.recentlyVisited})),inspectRelationship:n=>e({selectedRelationshipId:n,selectedElementId:null,propertiesPanelCollapsed:n?!1:r().propertiesPanelCollapsed}),toggleElementSelection:n=>e(a=>{const o=new Set(a.selectedElementIds);return o.has(n)?o.delete(n):o.add(n),{selectedElementIds:o}}),selectAllElements:n=>e({selectedElementIds:new Set(n)}),clearElementSelection:()=>e({selectedElementIds:new Set}),updateElementKind:(n,a)=>{const{model:o}=r();if(!o)return;const s=o.elements[n];if(!s)return;const i={...s,kind:a};e(l=>({model:l.model?{...l.model,elements:{...l.model.elements,[n]:i}}:null})),bt(i)},bulkUpdateAttributes:(n,a)=>{const{model:o}=r();if(!o)return;const s={...o.elements};for(const i of n){const l=s[i];if(!l)continue;const c={...l,attributes:{...l.attributes,...a}};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:a}=r(),o=(s=a==null?void 0:a.diagrams)==null?void 0:s.find(i=>i.id===n);e(o?{selectedDiagramId:n,selectedViewpointId:o.viewpointId==="__model"?null:o.viewpointId}:{selectedDiagramId:n})},setSearchTerm:n=>e({searchTerm:n}),toggleSidebar:()=>e(n=>({sidebarCollapsed:!n.sidebarCollapsed})),togglePropertiesPanel:()=>e(n=>({propertiesPanelCollapsed:!n.propertiesPanelCollapsed})),toggleLayerVisibility:n=>e(a=>{const o=new Set(a.hiddenLayers);return o.has(n)?o.delete(n):o.add(n),{hiddenLayers:o}}),setOntologyGroupBy:n=>e({ontologyGroupBy:n,collapsedGroups:new Set}),toggleGroupCollapsed:n=>e(a=>{const o=new Set(a.collapsedGroups);return o.has(n)?o.delete(n):o.add(n),{collapsedGroups:o}}),setAvailableOntologies:n=>e(a=>{let o=new Set(n.filter(l=>l.selected).map(l=>l.name));const s=["@memoarchitect/ontology"];for(const l of n)s.includes(l.name)&&o.add(l.name);o.size===0&&n.length>0&&(o=new Set(n.map(l=>l.name)));const i=a.focusedOntologyId??(o.size>0?[...o][0]:null);return{availableOntologies:n,selectedOntologies:o,focusedOntologyId:i}}),toggleOntologySelection:n=>e(a=>{const o=new Set(a.selectedOntologies);return o.has(n)?o.delete(n):o.add(n),{selectedOntologies:o}}),setFocusedOntology:n=>e({focusedOntologyId:n}),setSelectedOntologyKind:n=>e({selectedOntologyKind:n}),setOntologyViewMode:n=>e({ontologyViewMode:n}),toggleOntologyRelationships:()=>e(n=>({showOntologyRelationships:!n.showOntologyRelationships})),setHighlightedRelationshipType:n=>e(a=>({highlightedRelationshipType:a.highlightedRelationshipType===n?null:n})),toggleHiddenEdgeType:n=>e(a=>{const o=new Set(a.hiddenEdgeTypes);return o.has(n)?o.delete(n):o.add(n),{hiddenEdgeTypes:o}}),saveOntologySelection:()=>{const{model:n,availableOntologies:a,selectedOntologies:o}=r();if(!n)return{success:!0};const s=a.filter(c=>!o.has(c.name)),i=new Set;for(const c of s)for(const d of c.layers)for(const p of d.kinds)i.add(p.name);const l=[];if(i.size>0){for(const c of Object.values(n.elements))if(i.has(c.kind)){const d=s.find(p=>p.layers.some(f=>f.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(a=>{const o=new Set(a.catalogCollapsed);return o.has(n)?o.delete(n):o.add(n),{catalogCollapsed:o}}),setCatalogCollapsedAll:n=>e(a=>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(a=>({tagFilters:a.tagFilters.includes(n)?a.tagFilters.filter(s=>s!==n):[...a.tagFilters,n]})),clearTagFilters:()=>e({tagFilters:[]}),setEditingElement:n=>e({editingElementId:n}),updateElementField:(n,a,o)=>e(s=>{const i=new Map(s.pendingEdits),l=i.get(n)||{};return i.set(n,{...l,[a]:o}),{pendingEdits:i}}),updateElementAttribute:(n,a,o)=>e(s=>{const i=new Map(s.pendingEdits),l=i.get(n)||{},c={...l.attributes||{},[a]:o};return i.set(n,{...l,attributes:c}),{pendingEdits:i}}),moveElementToPackage:(n,a)=>Je("element:move-package",{elementId:n,targetPackage:a}),createPackage:(n,a)=>Je("package:create",{name:n,...a?{parent:a}:{}}),renamePackage:(n,a)=>Je("package:rename",{qualifiedName:n,name:a}),movePackage:(n,a)=>Je("package:move",{qualifiedName:n,targetParent:a}),deletePackage:n=>Je("package:delete",{qualifiedName:n}),addElement:(n,a,o)=>{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(p=>p.kind===n),c=o?Object.values(s.model.elements).find(p=>p.package===o):void 0,d={id:i,name:a,kind:n,construct:(l==null?void 0:l.construct)||"part",layer:(l==null?void 0:l.layer)||"Other",doc:"",attributes:{},...o?{package:o}:{},file:(c==null?void 0:c.file)||(l==null?void 0:l.file)||"model/generated.sysml"};e(p=>({model:p.model?{...p.model,elements:{...p.model.elements,[i]:d}}:null,selectedElementId:i,activeView:{type:"element-detail",elementId:i}})),Gt(d)},createModelElement:n=>{const a=n.id??`${n.kind.toLowerCase().replace(/\W+/g,"_")}_${Math.random().toString(36).slice(2,8)}`,o={...n,id:a};return e(s=>({model:s.model?{...s.model,elements:{...s.model.elements,[a]:o}}:null,selectedElementId:a})),Gt(o),a},persistElementAttributes:(n,a)=>{var i;const o=(i=r().model)==null?void 0:i.elements[n];if(!o)return;const s={...o,attributes:{...o.attributes,...a}};e(l=>({model:l.model?{...l.model,elements:{...l.model.elements,[n]:s}}:null})),bt(s)},addUserViewpoint:n=>e(a=>({userViewpoints:[...a.userViewpoints,n]})),updateUserViewpoint:n=>e(a=>({userViewpoints:a.userViewpoints.map(o=>o.id===n.id?n:o)})),deleteUserViewpoint:n=>e(a=>({userViewpoints:a.userViewpoints.filter(o=>o.id!==n),selectedViewpointId:a.selectedViewpointId===n?null:a.selectedViewpointId})),createDiagram:({id:n,name:a,diagramType:o,viewKind:s,viewpointId:i,elementIds:l=[],activate:c=!0})=>{const d=n??`diag_${Math.random().toString(36).substr(2,9)}`,p={id:d,name:a,diagramType:o,viewKind:s,viewpointId:i,auto:!1,elementIds:l};return e(f=>({model:f.model?{...f.model,diagrams:[...f.model.diagrams??[],p]}:null,selectedDiagramId:c?d:f.selectedDiagramId,activeView:c?{type:"diagram",diagramId:d}:f.activeView})),zs({id:d,name:a,diagramType:o,viewKind:s,viewpointId:i,elementIds:l}),d},addElementToDiagram:(n,a)=>{var l;const{model:o}=r(),s=(l=o==null?void 0:o.diagrams)==null?void 0:l.find(c=>c.id===n);if(!s)return;const i=s.elementIds??[];i.includes(a)||r().updateDiagramElementIds(n,[...i,a])},updateDiagramElementIds:(n,a)=>{const{model:o}=r();if(!(o!=null&&o.diagrams))return;const s=o.diagrams.findIndex(c=>c.id===n);if(s<0)return;const i={...o.diagrams[s],elementIds:a},l=[...o.diagrams];l[s]=i,e(c=>({model:c.model?{...c.model,diagrams:l}:null})),Qn({id:n,elementIds:a})},deleteDiagram:n=>{e(a=>({model:a.model?{...a.model,diagrams:(a.model.diagrams??[]).filter(o=>o.id!==n)}:null,selectedDiagramId:a.selectedDiagramId===n?null:a.selectedDiagramId,activeView:a.activeView.type==="diagram"&&a.activeView.diagramId===n?{type:"welcome"}:a.activeView})),qs(n)},applyDiagramParseResult:(n,a,o)=>{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:a},c=[...s.diagrams];c[i]=l,e(d=>({model:d.model?{...d.model,diagrams:c}:null,diagramParseErrors:{...d.diagramParseErrors,[n]:o}})),Qn({id:n,elementIds:a})}else e(l=>({diagramParseErrors:{...l.diagramParseErrors,[n]:o}}))},addDhfDocument:n=>e(a=>({dhfDocuments:[...a.dhfDocuments,n]})),setDhfDocuments:n=>e({dhfDocuments:n}),hydrateDhfSettings:n=>e(a=>({dhfSettings:{...a.dhfSettings,...n}})),updateDhfSettings:n=>e(a=>({dhfSettings:{...a.dhfSettings,...n}})),updateDhfDocumentMeta:(n,a)=>e(o=>({dhfDocuments:o.dhfDocuments.map(s=>s.id===n?{...s,...a}:s)})),updateDhfDocumentContent:(n,a)=>e(o=>({dhfDocuments:o.dhfDocuments.map(s=>s.id===n?{...s,content:a}:s)})),removeDhfDocument:n=>e(a=>({dhfDocuments:a.dhfDocuments.filter(o=>o.id!==n),activeView:a.activeView.type==="dhf-document"&&a.activeView.docId===n?{type:"dhf-dashboard"}:a.activeView})),setBulkImportOpen:n=>e({bulkImportOpen:n}),setImportResult:n=>e({importResult:n}),clearImportResult:()=>e({importResult:null}),cancelEdit:n=>e(a=>{const o=new Map(a.pendingEdits);return o.delete(n),{pendingEdits:o}}),applyEdit:async n=>{const{pendingEdits:a,model:o}=r(),s=a.get(n);if(!s||!o)return;const i=o.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={...o,elements:{...o.elements,[n]:l}};if(e({model:c}),!(n.startsWith("new_")?await Gt(l):await bt(l)).success){e({model:o});return}const p=new Map(r().pendingEdits);p.delete(n),e({pendingEdits:p})}})),Gs={relationships:[],kinds:[]};function na(e){return(e==null?void 0:e.registries)??Gs}function Ys(e,r){return Bn(r,na(e))}function Gc(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 Js(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 Yc(e,r){const n=qt(e,r);return n?n.sourceFiles&&n.sourceFiles.length>0?n.sourceFiles:n.sourceFile?[n.sourceFile]:[]:[]}function Xs(e,r){var a;const n=r?(a=e==null?void 0:e.elements[r])==null?void 0:a.file:void 0;return n?[...ss(n,e==null?void 0:e.sourceGraph)]:[]}function Qs(e,r){return e?is(e.files,r):!1}function ra(e,r){return e!=null&&e.diagrams?e.diagrams.filter(n=>{var a;return n.viewpointId===r||((a=n.viewpointIds)==null?void 0:a.includes(r))}):[]}const Rn={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"},aa={"/dashboard":"dashboard","/scenarios":"scenario-editor"},Zs={...Object.fromEntries(Object.entries(Rn).map(([e,r])=>[r,e])),...aa};function ei(e){return e.toLowerCase().replace(/\s+/g,"-")}function ti(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 Rn[e.type]??null}}function ni(e,r=""){const n=e.length>1?e.replace(/\/+$/,""):e,a=Zs[n];if(a)return{type:a};if(n==="/table"){const s=new URLSearchParams(r);return{type:"tabular",viewpointId:s.get("viewpoint")??void 0,diagramId:s.get("diagram")??void 0}}const o=n.split("/").filter(Boolean);return o[0]==="dhf"&&o.length===2?{type:"dhf-document",docId:decodeURIComponent(o[1])}:o[0]==="ontology"&&o.length>=2?{type:"ontology-detail",packageName:decodeURIComponent(o[1]),layerId:o[2]?decodeURIComponent(o[2]):void 0}:null}function ri(e){const r=e.split("/").filter(Boolean);return r[0]==="catalog"&&r.length===3||r[0]==="diagrams"&&r.length===3}function ai(e){const r=e.split("/").filter(Boolean);return r[0]==="catalog"&&r.length<=2||r[0]==="diagrams"&&r.length===1}function oi(){return[...Object.values(Rn),...Object.keys(aa)].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 ii(){return typeof window>"u"?{}:window.__MEMO_FLAGS__??{}}function ie(e){const r=si.find(n=>n.id===e);return r?r.stage==="stable"?!0:ii().experimental===!0:!1}function wt(){const e=E(i=>i.model),r=E(i=>i.setActiveView),n=E(i=>i.setActiveMode),a=Se(),o=e==null?void 0:e.metadata;function s(){n("dashboard"),r({type:"dashboard"}),a("/")}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"}),((o==null?void 0:o.projectName)||(o==null?void 0:o.gitUser))&&t.jsxs("span",{title:"Current project and Git revision",style:{color:"rgba(255,255,255,0.62)",fontSize:"12px",whiteSpace:"nowrap"},children:[(o==null?void 0:o.projectName)&&t.jsx("span",{style:{color:"rgba(255,255,255,0.8)",fontWeight:600},children:o.projectName}),(o==null?void 0:o.projectName)&&(o==null?void 0:o.gitUser)&&t.jsx("span",{style:{margin:"0 8px",color:"rgba(255,255,255,0.32)"},children:"|"}),(o==null?void 0:o.gitUser)&&t.jsxs(t.Fragment,{children:["@",o.gitUser,o.gitBranch&&t.jsxs(t.Fragment,{children:[" · ",o.gitBranch]}),o.gitCommitShort&&t.jsxs("span",{style:{marginLeft:4,fontFamily:"ui-monospace, SFMono-Regular, Menlo, monospace"},children:[o.gitCommitShort,o.gitDirty?"*":""]})]})]}),t.jsx("img",{src:"/logo.png",alt:"MEMO",style:{height:40,opacity:.9,cursor:"pointer"},onClick:s,title:"Go to home"})]})}const oa="memo-working-sets",sa="memo-quick-slots";function li(){return`ws-${Date.now()}-${Math.random().toString(36).slice(2,8)}`}function kt(e){try{localStorage.setItem(oa,JSON.stringify(e))}catch{}}function di(){try{const e=localStorage.getItem(oa);return e?JSON.parse(e):[]}catch{return[]}}function tr(){try{const e=localStorage.getItem(sa);return e?JSON.parse(e):[null,null,null,null]}catch{return[null,null,null,null]}}function nr(e){try{localStorage.setItem(sa,JSON.stringify(e))}catch{}}const Jt=jr((e,r)=>({workingSets:[],activeWorkingSetId:null,quickSlots:tr(),loadFromStorage:()=>{const n=di(),a=tr();e({workingSets:n,quickSlots:a})},saveWorkingSet:(n,a)=>{const o=li(),s=Date.now(),i={id:o,name:n,createdAt:s,updatedAt:s,state:a},l=[...r().workingSets,i];return e({workingSets:l,activeWorkingSetId:o}),kt(l),o},updateWorkingSet:(n,a)=>{const o=r().workingSets.map(s=>s.id===n?{...s,state:a,updatedAt:Date.now()}:s);e({workingSets:o}),kt(o)},renameWorkingSet:(n,a)=>{const o=r().workingSets.map(s=>s.id===n?{...s,name:a,updatedAt:Date.now()}:s);e({workingSets:o}),kt(o)},deleteWorkingSet:n=>{const a=r().workingSets.filter(s=>s.id!==n),o=r().activeWorkingSetId===n?null:r().activeWorkingSetId;e({workingSets:a,activeWorkingSetId:o}),kt(a)},setActiveWorkingSet:n=>e({activeWorkingSetId:n}),saveQuickSlot:(n,a,o)=>{const s=["Last Session","Slot 1","Slot 2","Slot 3"],i=[...r().quickSlots];for(;i.length<4;)i.push(null);i[n]={name:o??s[n],state:a,savedAt:Date.now()},nr(i),e({quickSlots:i})},clearQuickSlot:n=>{const a=[...r().quickSlots];a[n]=null,nr(a),e({quickSlots:a})}})),N={badge:"12px",xs:"12px",sm:"13px",md:"14px",lg:"15px",explorer:{group:"13px",kind:"12px",item:"13px",element:"13px",count:"12px",search:"13px"}},y={primary:"#082744",secondary:"#324E67",muted:"#5C7188",faint:"#8CA0B1",surface:"#FFFFFF",surfaceAlt:"#EEF4F7",border:"#D8E2E9",borderLight:"#E6EDF2",accent:"#2DD4A8",accentDark:"#0B1E2D"},ci={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)"},Jc={md:"10px"},Xc={defaultWidth:2,flowWidth:2.5,arrowSize:16,labelBgPadding:[6,4],labelBgRadius:6,labelBgStyle:{fill:"#FFFFFF",fillOpacity:.92,stroke:"#E5E5E0",strokeWidth:.5}};function Xt(){const e=E.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 Qt(e){const r=E.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 ui(){const[e,r]=u.useState(!1),n=u.useRef(null),a=Jt(l=>l.quickSlots),o=Jt(l=>l.saveQuickSlot),s=Jt(l=>l.clearQuickSlot);u.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]),u.useEffect(()=>{const l=()=>{o(0,Xt(),"Last Session")};return window.addEventListener("beforeunload",l),()=>window.removeEventListener("beforeunload",l)},[o]),u.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)o(d,Xt());else{const p=a[d];p&&Qt(p.state)}};return window.addEventListener("keydown",l),()=>window.removeEventListener("keydown",l)},[a,o]);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:N.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:N.xs,color:"rgba(255,255,255,0.5)",fontWeight:600},children:"Last Session"}),a[0]?t.jsx("button",{onClick:()=>{Qt(a[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 —"})]}),a[0]&&t.jsx("div",{style:{fontSize:"10px",color:"rgba(255,255,255,0.3)",marginTop:2},children:new Date(a[0].savedAt).toLocaleString()})]}),[1,2,3].map(l=>{const c=a[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:N.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:N.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:()=>{Qt(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:()=>o(l,Xt(),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 pi=[{value:"",label:"— Select phase —"},{value:"concept",label:"Concept"},{value:"design",label:"Design & Development"},{value:"verification",label:"Verification & Validation"},{value:"production",label:"Production"}],fe={width:"100%",padding:"7px 10px",border:"1px solid #D1D5DB",borderRadius:"6px",fontSize:"13px",color:"#1B3A4B",background:"#fff",boxSizing:"border-box",outline:"none",fontFamily:"inherit"},pe={fontSize:"11px",fontWeight:600,color:"#6B7280",textTransform:"uppercase",letterSpacing:"0.04em",display:"block",marginBottom:"4px"},Zt={fontSize:"12px",fontWeight:700,color:"#1B3A4B",paddingBottom:"6px",borderBottom:"1px solid #E5E7EB",marginBottom:"12px",marginTop:"4px"},mi={display:"grid",gridTemplateColumns:"1fr 1fr",gap:"12px"};function ia({onClose:e}){const r=E(d=>d.dhfSettings),n=E(d=>d.updateDhfSettings),[a,o]=u.useState({...r}),[s,i]=u.useState("identity");function l(d,p){o(f=>({...f,[d]:p}))}function c(){n(a),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:Zt,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:mi,children:[t.jsxs("div",{children:[t.jsx("label",{style:pe,children:"Company / Manufacturer"}),t.jsx("input",{style:fe,value:a.company,onChange:d=>l("company",d.target.value),placeholder:"Acme Medical Devices Inc."})]}),t.jsxs("div",{children:[t.jsx("label",{style:pe,children:"Product / Device Name"}),t.jsx("input",{style:fe,value:a.product,onChange:d=>l("product",d.target.value),placeholder:"InfuSafe IV Pump"})]}),t.jsxs("div",{children:[t.jsx("label",{style:pe,children:"Device Type"}),t.jsx("input",{style:fe,value:a.deviceType,onChange:d=>l("deviceType",d.target.value),placeholder:"Class II active implantable"})]}),t.jsxs("div",{children:[t.jsx("label",{style:pe,children:"Document Version"}),t.jsx("input",{style:fe,value:a.version,onChange:d=>l("version",d.target.value),placeholder:"1.0.0"})]}),t.jsxs("div",{style:{gridColumn:"1 / -1"},children:[t.jsx("label",{style:pe,children:"Development Phase"}),t.jsx("select",{style:fe,value:a.phase,onChange:d=>l("phase",d.target.value),children:pi.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:pe,children:"Document ID Prefix"}),t.jsx("input",{style:{...fe,fontFamily:"monospace"},value:a.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:[a.documentNumberingPrefix||"DOC","-RMP-001"]})]})]})]})]}),s==="branding"&&t.jsxs("div",{children:[t.jsx("p",{style:Zt,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:pe,children:"Full Logo URL"}),t.jsx("input",{style:fe,value:a.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."}),a.logoUrl&&t.jsx("img",{src:a.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:pe,children:"Compact Logo URL"}),t.jsx("input",{style:fe,value:a.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."}),a.compactLogoUrl&&t.jsx("img",{src:a.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:pe,children:"Primary Color"}),t.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"10px"},children:[t.jsx("input",{type:"color",value:a.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:{...fe,flex:1,fontFamily:"monospace"},value:a.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:Zt,children:"Document Layout"}),t.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"16px"},children:[t.jsxs("div",{children:[t.jsxs("label",{style:{...pe,display:"flex",alignItems:"center",gap:"8px",textTransform:"none",fontSize:"13px",fontWeight:600,color:"#1B3A4B",marginBottom:0},children:[t.jsx("input",{type:"checkbox",checked:a.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:pe,children:"Page Header Template"}),t.jsx("input",{style:{...fe,fontFamily:"monospace",fontSize:"12px"},value:a.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:pe,children:"Page Footer Template"}),t.jsx("input",{style:{...fe,fontFamily:"monospace",fontSize:"12px"},value:a.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 Qc=Object.freeze(Object.defineProperty({__proto__:null,DhfSettingsPanel:ia},Symbol.toStringTag,{value:"Module"})),fi="/help/",hi="http://127.0.0.1:8888/lab/tree/",yi=[{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"}],gi=new Set(["dsm","traceability","statistics","compliance-wizard","model-diff","review-dashboard","workflow-wizard","ontology","ontology-detail","import"]),rr=[{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 xi({activeViewType:e}){const r=E(l=>l.setActiveView);E(l=>l.setActiveMode);const[n,a]=u.useState(!1),o=u.useRef(null),i=rr.map(l=>l.id).includes(e);return u.useEffect(()=>{function l(c){o.current&&!o.current.contains(c.target)&&a(!1)}return n&&document.addEventListener("mousedown",l),()=>document.removeEventListener("mousedown",l)},[n]),t.jsxs("div",{ref:o,style:{position:"relative"},children:[t.jsxs("button",{onClick:()=>a(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:rr.filter(l=>(l.id!=="ontology"||ie("ontology"))&&(l.id!=="import"||ie("import"))).map((l,c)=>{const d=e===l.view.type;return t.jsxs("button",{onClick:()=>{r(d?{type:"welcome"}:l.view),a(!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:p=>{d||(p.currentTarget.style.background="rgba(255,255,255,0.06)")},onMouseLeave:p=>{d||(p.currentTarget.style.background="transparent")},children:[t.jsx("span",{style:{width:"18px",textAlign:"center",opacity:.7},children:l.icon}),l.label]},l.id)})})]})}function bi(){const e=E(m=>m.activeMode),r=E(m=>m.setActiveMode),n=E(m=>m.activeView),a=E(m=>m.setActiveView),o=E(m=>m.setExplorerTab),s=E(m=>m.sidebarCollapsed),i=E(m=>m.toggleSidebar),l=Se(),[c,d]=u.useState(!1),[p,f]=u.useState(!1),[b,w]=u.useState(!1);u.useEffect(()=>{const m=()=>d(B=>!B);return window.addEventListener("memo:toggle-navigation",m),()=>window.removeEventListener("memo:toggle-navigation",m)},[]);const S=["catalog","diagram","dhf","scenario"],g=gi.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==="diagram"||e==="diagram"?"diagram":e==="catalog"?"catalog":n.type==="dashboard"?"dashboard":e;function h(m){if(m===g&&S.includes(m)){i();return}switch(S.includes(m)&&s&&i(),r(m),m){case"dashboard":a({type:"dashboard"});break;case"catalog":a({type:"welcome"}),l("/catalog");break;case"diagram":o("views"),a({type:"welcome"}),l("/diagrams");break;case"ui-screens":a({type:"ui-screens"}),l("/ui-screens");break;case"dhf":a({type:"dhf-dashboard"});break;case"scenario":a({type:"scenario-editor"});break;case"ai":a({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:[yi.filter(m=>!("feature"in m)||ie(m.feature)).map(m=>t.jsxs("button",{onClick:()=>{h(m.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===m.id?"rgba(45,212,168,0.15)":"transparent",color:g===m.id?"#2DD4A8":"rgba(255,255,255,0.78)"},children:[t.jsx("span",{style:{width:20,textAlign:"center"},children:m.icon}),m.label]},m.id)),ie("analysis")&&t.jsxs(t.Fragment,{children:[t.jsxs("button",{onClick:()=>f(m=>!m),"aria-expanded":p,className:"flex w-full items-center gap-3 rounded-md px-3 py-3 text-left",style:{border:"none",cursor:"pointer",fontSize:15,background:p?"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:p?"▾":"▸"})]}),p&&t.jsxs("div",{style:{margin:"0 0 4px 36px",borderLeft:"1px solid rgba(45,212,168,0.25)"},children:[t.jsxs("button",{onClick:()=>{a({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:()=>{a({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"]}),ie("model-tools")&&t.jsxs("button",{onClick:()=>{a({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("a",{href:hi,target:"_blank",rel:"noopener noreferrer",onClick:()=>d(!1),className:"flex w-full items-center gap-2 px-3 py-2",style:{color:"rgba(255,255,255,0.68)",textDecoration:"none",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(ui,{})]}),ie("model-tools")&&t.jsx("div",{className:"px-2 py-1",children:t.jsx(xi,{activeViewType:n.type})}),t.jsxs("button",{onClick:()=>w(!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:fi,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(ia,{onClose:()=>w(!1)})]}):null}const le={operational:"#0F766E",business:"#8E44AD",requirements:"#4A90D9",risk:"#E74C3C",functional:"#E67E22",behavior:"#FF6B6B",logical:"#7B68EE",physical:"#95A5A6",software:"#F39C12",interfaces:"#1ABC9C",verification:"#2ECC71",ui:"#3498DB"},Mt={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"},tt=["operational","business","requirements","risk","functional","behavior","logical","physical","software","interfaces","verification","ui"],vi={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"},ar=["#2563EB","#0891B2","#7C3AED","#DB2777","#EA580C","#0D9488","#65A30D","#9333EA","#C2410C","#1D4ED8"];function Zc(e){const r=vi[e];if(r)return r;let n=0;for(let a=0;a<e.length;a++)n=n*31+e.charCodeAt(a)>>>0;return ar[n%ar.length]}const In={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"}},Pe={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 wi(e){const r=e.diagramType.trim().toLowerCase();return r==="ofd"||r==="ffd"?r:"afd"}const eu=["#FFFFFF","#f8fafc","#f0f9ff","#fdf2f8","#f0fdf4"];function Ne({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:a=>a.currentTarget.style.background="#F0F0ED",onMouseLeave:a=>a.currentTarget.style.background="transparent",onClick:a=>{a.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 Si({x:e,y:r,target:n,onViewVisual:a,onViewTable:o,onToggleSelection:s,onViewProperties:i,onClose:l}){const c=u.useRef(null);u.useEffect(()=>{if(!c.current)return;const p=c.current,{innerWidth:f,innerHeight:b}=window,w=p.getBoundingClientRect();w.right>f&&(p.style.left=`${e-w.width}px`),w.bottom>b&&(p.style.top=`${r-w.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:p=>p.stopPropagation(),children:[t.jsx(Ne,{icon:"⬜",label:"View Visual Layout",onClick:()=>{a(n.pkgName),l()}}),t.jsx(Ne,{icon:"☰",label:"View as Table",onClick:()=>{o(n.pkgName),l()}}),t.jsx(ki,{}),t.jsx(Ne,{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:p=>p.stopPropagation(),children:[t.jsx(Ne,{icon:"⬜",label:"View Visual Layout",onClick:()=>{a(n.pkgName),l()}}),t.jsx(Ne,{icon:"☰",label:"View as Table",onClick:()=>o(n.pkgName,n.layerId)})]}):t.jsxs("div",{ref:c,style:d,onMouseDown:p=>p.stopPropagation(),children:[t.jsx(Ne,{icon:"🔍",label:"View Properties",onClick:()=>i(n.kindName,n.pkgName)}),t.jsx(Ne,{icon:"☰",label:"View as Table",onClick:()=>o(n.pkgName,n.layerId)}),t.jsx(Ne,{icon:"⬜",label:"Show in Visual Layout",onClick:()=>{a(n.pkgName),l()}})]})}function Ei({kindsToRemap:e,onConfirm:r,onCancel:n}){const a=E(p=>p.availableOntologies),o=E(p=>p.selectedOntologies),s=a.filter(p=>o.has(p.name)).flatMap(p=>p.layers.flatMap(f=>f.kinds.map(b=>b.name))).filter((p,f,b)=>b.indexOf(p)===f).sort(),[i,l]=u.useState(Object.fromEntries(e.map(p=>[p,""])));function c(p,f){l(b=>({...b,[p]:f}))}const d=e.every(p=>i[p]);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(p=>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:p}),t.jsx("span",{style:{color:"#9CA3AF"},children:"→"}),t.jsxs("select",{value:i[p],onChange:f=>c(p,f.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(f=>t.jsx("option",{value:f,children:f},f))]})]},p))}),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 Ci({orphans:e,onKeep:r,onRemap:n,onCancel:a}){const[o,s]=u.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 o?t.jsx(Ei,{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&&a()},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:a,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 ji(){const e=E(S=>S.methodology),r=u.useMemo(()=>[...new Set(((e==null?void 0:e.folders)??[]).flatMap(S=>S.sourceFiles))].sort(),[e]),[n,a]=u.useState(""),[o,s]=u.useState(""),[i,l]=u.useState(""),[c,d]=u.useState(!1),[p,f]=u.useState(""),b=async S=>{if(!S)return;const g=await fn("load",S);a(S),s(g.text??""),l(g.revision??""),d(!1),f(g.success?"":g.error??"Could not load source.")},w=async()=>{if(!n||!i)return;const S=await fn("save",n,{text:o,baseRevision:i});S.success?(l(S.revision??i),d(!1),f("Saved. The reusable semantic runtime is restarting.")):f(S.error??"Save rejected; the draft remains in the editor.")};return r.length===0?null:t.jsxs("section",{style:{borderBottom:`1px solid ${y.border}`},children:[t.jsx("div",{className:"px-3 py-2 font-semibold",style:{fontSize:N.xs,color:y.primary},children:"Methodology & Rule Policies"}),t.jsxs("select",{value:n,onChange:S=>void b(S.target.value),className:"mx-3 mb-2",style:{width:"calc(100% - 24px)",fontSize:N.xs},children:[t.jsx("option",{value:"",children:"Select resolved SysML source…"}),r.map(S=>t.jsx("option",{value:S,children:S},S))]}),n&&t.jsxs(t.Fragment,{children:[t.jsx("textarea",{value:o,onChange:S=>{s(S.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 w(),children:"Save SysML"}),t.jsx("button",{onClick:()=>void navigator.clipboard.writeText(o),children:"Copy draft"}),t.jsx("button",{onClick:()=>void b(n),children:"Reload"})]}),p&&t.jsx("div",{className:"px-3 pb-2",role:"status",style:{fontSize:11,color:"#B45309"},children:p})]})]})}function Di(){var L;const e=E(F=>F.effectiveRules),r=E(F=>F.ruleDiagnostics),n=E(F=>F.methodology),a=u.useMemo(()=>[...new Set(((n==null?void 0:n.folders)??[]).flatMap(F=>F.sourceFiles))].sort(),[n]),[o,s]=u.useState(""),[i,l]=u.useState("disabled"),[c,d]=u.useState(""),[p,f]=u.useState(""),[b,w]=u.useState(""),[S,g]=u.useState(""),[h,m]=u.useState(""),[B,T]=u.useState(""),[D,A]=u.useState(""),[C,x]=u.useState(!1),v=e.find(F=>F.sourceRuleType===o),_=(v==null?void 0:v.tailoring)==="invariant",O=!o||!B||_&&i!=="enabled"||i!=="enabled"&&!b.trim()||i==="replaced"&&!p.trim(),P=async()=>{x(!0),A("");try{const F=await fn("load",B);if(!F.success||!F.revision){A(F.error??"Could not read the methodology source.");return}const $=await Ws({targetRuleType:o,disposition:i,severityOverride:c||void 0,replacementRuleType:i==="replaced"?p.trim():void 0,rationaleText:b.trim(),authority:S.trim()||void 0,approvalReference:h.trim()||void 0,sourceFile:B,baseRevision:F.revision});A($.success?"Policy written. The reusable semantic runtime is restarting.":$.error??"The policy was rejected; nothing was written."),$.success&&(w(""),m(""))}catch(F){A(F instanceof Error?F.message:String(F))}finally{x(!1)}};if(e.length===0)return null;const M={width:"calc(100% - 24px)",margin:"0 12px 6px",fontSize:N.xs};return t.jsxs("section",{style:{borderBottom:`1px solid ${y.border}`},children:[t.jsxs("div",{className:"px-3 py-2 font-semibold",style:{fontSize:N.xs,color:y.primary},children:["Rule Tailoring",t.jsxs("span",{style:{fontWeight:400,color:y.muted},children:[" — ",e.length," rules in the effective set"]})]}),t.jsxs("select",{"aria-label":"Rule",value:o,style:M,onChange:F=>s(F.target.value),children:[t.jsx("option",{value:"",children:"Select a rule…"}),e.map(F=>t.jsxs("option",{value:F.sourceRuleType,children:[F.sourceRuleId," — ",F.sourceRuleType,F.tailoring==="invariant"?" (invariant)":"",F.disposition!=="enabled"?` [${F.disposition}]`:""]},F.sourceRuleType))]}),v&&t.jsxs("div",{className:"px-3 pb-1",style:{fontSize:11,color:y.muted},children:["Currently ",v.disposition," at ",v.effectiveSeverity,v.effectiveSeverity!==v.declaredSeverity&&` (declared ${v.declaredSeverity})`,((L=v.policyChain)==null?void 0:L.length)>0&&` · ${v.policyChain.length} policy in chain`]}),_&&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:M,onChange:F=>l(F.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:M,onChange:F=>d(F.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:p,style:M,placeholder:"Replacement constraint def name",onChange:F=>f(F.target.value)}),t.jsx("textarea",{"aria-label":"Rationale",value:b,placeholder:"Rationale — required to disable or replace a rule",style:{...M,height:54,fontFamily:"inherit"},onChange:F=>w(F.target.value)}),t.jsx("input",{"aria-label":"Authority",value:S,style:M,placeholder:"Authority (optional)",onChange:F=>g(F.target.value)}),t.jsx("input",{"aria-label":"Approval reference",value:h,style:M,placeholder:"Approval reference (optional)",onChange:F=>m(F.target.value)}),t.jsxs("select",{"aria-label":"Target methodology file",value:B,style:M,onChange:F=>T(F.target.value),children:[t.jsx("option",{value:"",children:"Write the policy into…"}),a.map(F=>t.jsx("option",{value:F,children:F},F))]}),t.jsx("div",{className:"flex gap-2 px-3 py-2",children:t.jsx("button",{disabled:O||C,onClick:()=>void P(),children:C?"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((F,$)=>t.jsxs("div",{children:["[",F.code,"] ",F.message]},$))})]})}const or={ontology:"📦",profile:"🔧",extension:"🧩"};function Bi(e){const r=new Map(e.map(l=>[l.name,l])),n=new Map;function a(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=a(c.derivesFrom)+1;return n.set(l,d),d}for(const l of e)a(l.name);const o=new Map;for(const l of e){const c=n.get(l.name)??0,d=o.get(c)??[];d.push(l),o.set(c,d)}const s=Math.max(...o.keys()),i=[];for(let l=0;l<=s;l++){const c=o.get(l)??[];i.push(...c.sort((d,p)=>d.name.localeCompare(p.name)))}return i}function Ai(e){const r=new Map(e.map(l=>[l.name,l])),n=new Map;function a(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=a(c.extends)+1;return n.set(l,d),d}for(const l of e)a(l.name);const o=new Map;for(const l of e){const c=n.get(l.name)??0,d=o.get(c)??[];d.push(l),o.set(c,d)}const s=o.size>0?Math.max(...o.keys()):0,i=[];for(let l=0;l<=s;l++){const c=o.get(l)??[];i.push(...c.sort((d,p)=>d.name.localeCompare(p.name)))}return i}function Fi({pkgName:e,onCancel:r,onConfirm:n}){const a=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:o=>{o.target===o.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:N.sm,color:y.primary},children:"Remove ontology?"}),t.jsxs("div",{className:"mb-4",style:{fontSize:N.xs,color:y.secondary,lineHeight:1.5},children:["Removing ",t.jsx("strong",{children:a})," 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:N.xs,background:y.surfaceAlt,color:y.secondary,border:`1px solid ${y.border}`,cursor:"pointer"},children:"Cancel"}),t.jsx("button",{onClick:n,className:"px-3 py-1.5 rounded-md font-medium",style:{fontSize:N.xs,background:"#DC2626",color:"#FFFFFF",border:"none",cursor:"pointer"},children:"Remove"})]})]})})}function Ni(){const e=E(k=>k.availableOntologies),r=E(k=>k.selectedOntologies),n=E(k=>k.toggleOntologySelection),a=E(k=>k.saveOntologySelection),o=E(k=>k.selectedOntologyKind),s=E(k=>k.setSelectedOntologyKind),i=E(k=>k.setActiveView),l=E(k=>k.setOntologyViewMode),c=E(k=>k.activeView),[d,p]=u.useState(""),[f,b]=u.useState(()=>new Set(e.filter(k=>k.selected).map(k=>k.name))),[w,S]=u.useState(new Set),[g,h]=u.useState(()=>new Set(e.filter(k=>k.selected).map(k=>k.name))),m=u.useMemo(()=>{if(r.size!==g.size)return!0;for(const k of r)if(!g.has(k))return!0;return!1},[r,g]),[B,T]=u.useState(null),[D,A]=u.useState(null),[C,x]=u.useState(null),v=u.useRef(new Map),_=u.useMemo(()=>{const k=d.trim()?e.map(j=>({...j,layers:j.layers.map(I=>({...I,kinds:I.kinds.filter(K=>K.name.toLowerCase().includes(d.toLowerCase())||K.label.toLowerCase().includes(d.toLowerCase())||K.layer.toLowerCase().includes(d.toLowerCase()))})).filter(I=>I.kinds.length>0)})).filter(j=>j.layers.length>0||j.name.toLowerCase().includes(d.toLowerCase())):e;return Ai(k)},[e,d]);u.useEffect(()=>{d.trim()&&(b(new Set(_.map(k=>k.name))),S(new Set(_.flatMap(k=>k.layers.map(j=>`${k.name}:${j.id}`)))))},[d,_]),u.useEffect(()=>{if(o&&v.current.has(o)){for(const k of e)for(const j of k.layers)if(j.kinds.find(I=>I.name===o)){b(I=>new Set([...I,k.name])),S(I=>new Set([...I,`${k.name}:${j.id}`]));break}setTimeout(()=>{var k;(k=v.current.get(o))==null||k.scrollIntoView({behavior:"smooth",block:"nearest"})},80)}},[o,e]);function O(k){i({type:"ontology-detail",packageName:k})}function P(k,j){i({type:"ontology-detail",packageName:k,layerId:j})}function M(k,j){s(o===k?null:k),i({type:"ontology-detail",packageName:j})}function L(k){b(j=>{const I=new Set(j);return I.has(k)?I.delete(k):I.add(k),I})}function F(k){S(j=>{const I=new Set(j);return I.has(k)?I.delete(k):I.add(k),I})}function $(k,j,I){k.stopPropagation(),I?A(j):n(j)}function Y(){const k=a();k.orphanedElements&&k.orphanedElements.length>0?T(k.orphanedElements):(Yt([...r]),h(new Set(r)))}function z(){Yt([...r]),h(new Set(r)),T(null)}function R(k){Ls(k),Yt([...r]),h(new Set(r)),T(null)}function U(k,j){k.preventDefault(),k.stopPropagation(),x({x:k.clientX,y:k.clientY,target:j})}function W(k,j){l("table"),i({type:"ontology-detail",packageName:k,layerId:j}),x(null)}function V(k){l("visual"),i({type:"ontology-detail",packageName:k}),x(null)}function X(k){r.has(k)?A(k):n(k),x(null)}function ee(k,j){s(k),i({type:"ontology-detail",packageName:j}),x(null)}if(u.useEffect(()=>{function k(j){j.key==="Escape"&&(s(null),x(null),A(null))}return document.addEventListener("keydown",k),()=>document.removeEventListener("keydown",k)},[s]),u.useEffect(()=>{if(!C)return;function k(){x(null)}return document.addEventListener("mousedown",k),()=>document.removeEventListener("mousedown",k)},[C]),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:y.faint},children:[t.jsx("div",{className:"text-xl mb-2",children:"◉"}),t.jsx("div",{style:{fontSize:N.xs},children:"No ontology packages"}),t.jsx("div",{style:{fontSize:N.xs,opacity:.7,marginTop:"4px"},children:"Start memo-architect dev to load"})]})});const G=c.type==="ontology-detail"?c.packageName:null;return t.jsxs("div",{className:"flex flex-col flex-1 overflow-hidden",style:{fontSize:N.explorer.item},children:[t.jsx(Di,{}),t.jsx(ji,{}),t.jsx("div",{className:"px-3 py-2 sticky top-0 z-10",style:{background:y.surface,borderBottom:`1px solid ${y.border}`},children:t.jsx("input",{type:"text",placeholder:"Search kinds...",value:d,onChange:k=>p(k.target.value),className:"w-full px-2.5 py-1.5 rounded-lg focus:outline-none",style:{fontSize:N.explorer.search,border:`1px solid ${y.border}`,background:y.surfaceAlt,color:y.primary},onFocus:k=>k.currentTarget.style.borderColor="#2563EB",onBlur:k=>k.currentTarget.style.borderColor=y.border})}),t.jsx("div",{className:"flex-1 overflow-y-auto py-1",children:_.map(k=>{const j=r.has(k.name),I=G===k.name,K=f.has(k.name),Q=k.name.replace(/^@memo(?:architect)?\//,""),te=or[k.type]??or.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:I?`${y.accent}18`:"transparent",borderLeft:I?`3px solid ${y.accentDark}`:"3px solid transparent",opacity:j?1:.55},onMouseEnter:H=>{I||(H.currentTarget.style.background="#F0F0ED")},onMouseLeave:H=>{H.currentTarget.style.background=I?`${y.accent}18`:"transparent"},onClick:H=>{H.stopPropagation(),L(k.name)},onDoubleClick:()=>O(k.name),onContextMenu:H=>U(H,{type:"package",pkgName:k.name,isSelected:j}),children:[t.jsx("input",{type:"checkbox",checked:j,onChange:H=>$(H,k.name,j),onClick:H=>H.stopPropagation(),style:{cursor:"pointer",accentColor:"#2563EB",flexShrink:0},title:j?"Deselect for project":"Select for project"}),t.jsx("span",{style:{color:y.muted,fontSize:"10px"},children:K?"▾":"▸"}),t.jsx("span",{children:te}),t.jsx("span",{className:"font-semibold truncate flex-1",style:{color:y.primary,fontSize:N.explorer.group},children:Q}),t.jsx("span",{style:{color:y.faint},children:k.kindCount})]}),K&&k.layers.map(H=>{const oe=le[H.id]??H.color??y.muted,Ee=`${k.name}:${H.id}`,ue=w.has(Ee),Ce=Bi(H.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:de=>de.currentTarget.style.background="#F0F0ED",onMouseLeave:de=>de.currentTarget.style.background="transparent",onClick:de=>{de.stopPropagation(),F(Ee)},onDoubleClick:()=>P(k.name,H.id),onContextMenu:de=>U(de,{type:"layer",pkgName:k.name,layerId:H.id,layerLabel:H.label}),children:[t.jsx("span",{style:{color:y.faint,fontSize:"9px"},children:ue?"▾":"▸"}),t.jsx("span",{className:"w-2 h-2 rounded flex-shrink-0",style:{backgroundColor:oe}}),t.jsx("span",{className:"flex-1 truncate capitalize",style:{color:y.muted,fontSize:N.explorer.kind},children:H.label}),t.jsx("span",{style:{color:y.faint},children:H.kindCount})]}),ue&&(()=>{const de=new Map;for(const J of Ce){const se=J.derivesFrom?de.get(J.derivesFrom)??0:0;de.set(J.name,J.derivesFrom?se+1:0)}const Ae=J=>{const se=o===J.name,Mn=de.get(J.name)??0,_n=Mn===0,va=36+Mn*12;return t.jsxs("div",{ref:Fe=>{Fe&&v.current.set(J.name,Fe)},className:"flex items-center gap-1.5 px-3 py-0.5 cursor-pointer",style:{borderRadius:"4px",margin:`0 4px 0 ${va}px`,background:se?`${y.accent}18`:"transparent",borderLeft:se?`2px solid ${oe}`:"2px solid transparent",transition:"background 150ms ease"},onMouseEnter:Fe=>{se||(Fe.currentTarget.style.background="#F0F0ED")},onMouseLeave:Fe=>{Fe.currentTarget.style.background=se?`${y.accent}18`:"transparent"},onClick:()=>M(J.name,k.name),onContextMenu:Fe=>U(Fe,{type:"kind",kindName:J.name,pkgName:k.name,layerId:H.id}),children:[!_n&&t.jsx("span",{style:{color:y.faint,fontSize:"9px",flexShrink:0},children:"↳"}),t.jsx("span",{className:"truncate",style:{color:se?y.accentDark:y.primary,fontWeight:_n?500:400,fontSize:N.explorer.item},children:J.name}),J.instanceCount>0&&t.jsxs("span",{style:{color:y.faint,fontSize:"10px"},children:["·",J.instanceCount]})]},J.name)},Z=[],re=new Map;for(const J of Ce){const se=J.group??"";re.has(se)||(re.set(se,[]),Z.push(se)),re.get(se).push(J)}return Z.filter(J=>J!=="").length<=1?Ce.map(Ae):Z.map(J=>t.jsxs("div",{children:[J&&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:y.faint,fontSize:N.explorer.kind,letterSpacing:"0.02em"},children:J.replace(/_/g," ")}),t.jsx("span",{style:{color:y.faint,fontSize:"10px"},children:re.get(J).length})]}),re.get(J).map(Ae)]},`grp:${Ee}:${J||"_root"}`))})()]},Ee)})]},k.name)})}),m&&t.jsx("div",{className:"px-3 py-2 flex-shrink-0",style:{borderTop:`1px solid ${y.border}`,background:y.surfaceAlt},children:t.jsx("button",{onClick:Y,className:"w-full py-1.5 rounded-md font-medium",style:{fontSize:N.xs,background:"#2563EB",color:"#FFFFFF",border:"none",cursor:"pointer"},children:"Save Selection"})}),D&&t.jsx(Fi,{pkgName:D,onCancel:()=>A(null),onConfirm:()=>{n(D),A(null)}}),B&&t.jsx(Ci,{orphans:B,onKeep:z,onRemap:R,onCancel:()=>T(null)}),C&&t.jsx(Si,{x:C.x,y:C.y,target:C.target,onViewVisual:V,onViewTable:W,onToggleSelection:X,onViewProperties:ee,onClose:()=>x(null)})]})}function Ti(){const e=E(l=>l.model),r=E(l=>l.recentlyVisited),n=E(l=>l.selectElement),a=u.useMemo(()=>e?r.map(l=>e.elements[l]).filter(Boolean):[],[r,e]),o=a,s="Recently visited",i=a.length>0?`${a.length} item${a.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 ${y.border}`},children:[t.jsx("div",{style:{fontSize:"10px",fontWeight:700,textTransform:"uppercase",letterSpacing:"0.08em",color:y.muted,marginBottom:"2px"},children:s}),t.jsx("div",{style:{fontSize:"11px",color:y.muted,opacity:.8},children:i})]}),t.jsx("div",{className:"flex-1 overflow-y-auto",style:{padding:"4px 0"},children:o.length===0?t.jsx("div",{style:{padding:"24px 16px",textAlign:"center",fontSize:"12px",color:y.muted,lineHeight:"1.6"},children:"Nothing visited yet. Use Model Explorer or Viewpoints to begin."}):o.map(l=>{const c=le[l.layer]||y.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=y.surfaceAlt,onMouseLeave:d=>d.currentTarget.style.background="transparent",children:t.jsxs("div",{style:{flex:1,minWidth:0},children:[t.jsx("div",{style:{fontSize:N.explorer.item,fontWeight:500,color:y.primary,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:l.name}),t.jsxs("div",{style:{fontSize:"10px",color:y.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 Ri({element:e,selected:r=!1,fontSize:n=N.explorer.item,fontWeight:a}){const o=e.shortId??"ID-PENDING";return t.jsxs("span",{className:"truncate flex-1",style:{color:r?y.accentDark:y.primary,fontSize:n,fontWeight:a??(r?500:400)},title:`${o} ${e.name}`,children:[t.jsxs("span",{style:{color:y.muted,fontWeight:500,marginRight:"4px"},children:["[",o,"]"]}),e.name]})}function yn({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:N.explorer.count,fontWeight:600,minWidth:"20px",textAlign:"center"},title:n,children:e})}const Ii=`---
15
+ `,skippedColumns:s,warnings:o}}function ws(e,r){if(!r)return e;switch(r){case"sanitize-id":return ks(e);case"upper":return e.toUpperCase();case"lower":return e.toLowerCase();default:return e}}function ks(e){let r=e.trim().replace(/[\s\-]+/g,"_").replace(/[^a-zA-Z0-9_]/g,"").toLowerCase();return/^\d/.test(r)&&(r="e_"+r),r}function Ss(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 Yn(e){return e.includes(",")||e.includes('"')||e.includes(`
16
+ `)?`"${e.replace(/"/g,'""')}"`:e}let q=null,wt=null,Yt=0;const Es=1e4;let Ae=!1,Rt=null,Oe=null,ve=null,ot=!1;const Ge=new Map;function Cs(e){const r=Ge.get(e.requestId);r&&(clearTimeout(r.timer),Ge.delete(e.requestId),e.success||e.conflict?r.resolve(e):r.reject(new Error(e.error||`Could not ${e.operation} diagram source.`)))}function js(e){for(const r of Ge.values())clearTimeout(r.timer),r.reject(new Error(e));Ge.clear()}function Jt(e){return e?e.snapshot?(Oe=e.workspaceSessionId,ve=e.revision,ot=!1,!0):ot?!1:Oe!==e.workspaceSessionId||ve===null?(ot=!0,Qn(),!1):e.revision===ve?!0:e.baseRevision===ve&&e.revision===ve+1?(ve=e.revision,!0):(ot=!0,Qn(),!1):!0}const Tn=new Map,Rn=new Map,In=new Map,Mn=new Map,ut=new Map,Pt=new Map,pt=new Map,mt=new Map,Ot=new Map;function Be(e,r){const n=r.get(e.requestId);n&&(clearTimeout(n.timer),r.delete(e.requestId),n.resolve(e))}function Ds(e){for(const r of[Tn,Rn,In,Mn,Ot,Pt]){for(const n of r.values())clearTimeout(n.timer),n.reject(new Error(e));r.clear()}for(const r of ut.values())clearTimeout(r.timer),r.reject(new Error(e));ut.clear();for(const r of mt.values())clearTimeout(r.timer),r.reject(new Error("The development server disconnected."));mt.clear();for(const r of pt.values())clearTimeout(r.timer),r.reject(new Error(e));pt.clear()}function Lt(e,r,n){if(!q||q.readyState!==WebSocket.OPEN)return Promise.reject(new Error("The development server is not connected."));const a=`${e}-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`;return new Promise((o,s)=>{const i=setTimeout(()=>{n.delete(a),s(new Error("The server did not answer the relationship request."))},15e3);n.set(a,{resolve:o,reject:s,timer:i}),q.send(JSON.stringify({type:e,payload:{...r,requestId:a}}))})}function ft(e){var r,n;return(n=(r=C.getState().model)==null?void 0:r.irIdentities)==null?void 0:n[e]}function Vt(e,r){var a;const n=C.getState().model;if(!(!Oe||ve===null||!n))return{workspaceSessionId:Oe,baseRevision:ve,sourceFile:e,expectedSourceHash:((a=n.sourceHashes)==null?void 0:a[e])??"",targetElementIds:r}}function Bs(){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 Xr(e){if(window.__MEMO_DATA__)return;Ns();const r=`ws://${window.location.host}`;if(q&&(q.readyState===WebSocket.OPEN||q.readyState===WebSocket.CONNECTING))return;q=new WebSocket(r);const n=C.getState();q.onopen=()=>{n.setConnected(!0),Yt=0,Rt=null,Ae=!1,Oe=null,ve=null,ot=!1,n.setRestartRequired(null),wt&&(clearTimeout(wt),wt=null)},q.onmessage=a=>{try{const o=JSON.parse(a.data);As(o)}catch{}},q.onclose=()=>{n.setConnected(!1),js("The development server disconnected."),Ds("The development server disconnected."),q=null,Yt++;const a=Math.min(2e3*Math.pow(2,Yt-1),Es);wt=setTimeout(()=>Xr(),a)},q.onerror=()=>{}}function As(e){var n;const r=C.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||!Jt(e.revision))return;if((n=e.revision)!=null&&n.modelDelta&&!e.revision.snapshot&&r.model){const a={...r.model.elements,...e.revision.modelDelta.upsertElements};for(const o of e.revision.modelDelta.removeElementIds)delete a[o];r.setModel({...r.model,...e.revision.modelDelta.patch,elements:a})}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||!Jt(e.revision))return;r.setValidation(e.payload);break;case"completeness:update":if(Ae||!Jt(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":Be(e.payload,mt);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":Cs(e.payload);break;case"relationship:create:result":Be(e.payload,Tn);break;case"relationship:delete:result":Be(e.payload,Rn);break;case"relationship:update:result":Be(e.payload,In);break;case"element:delete:result":Be(e.payload,Mn);break;case"element:mutation:result":Be(e.payload,ut);break;case"package:mutation:result":Be(e.payload,Pt);break;case"methodology:source:result":Be(e.payload,pt);break;case"screen-capture:upload:result":Be(e.payload,Ot);break;case"ontology:packages":{const a=e.payload.ontologyHash;if(a){if(Rt===null)Rt=a;else if(Rt!==a){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 a=e.payload;r.resolveLlmRequest(a.requestId,{sysml:a.sysml,initialSysml:a.initialSysml,explanation:a.explanation,suggestedFile:a.suggestedFile,attempts:a.attempts,diagnostics:a.diagnostics??[],changeRecord:a.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":Jn(()=>r.setDhfDocuments(e.payload.docs));break;case"dhf:settings":Jn(()=>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 hn=!1;const Qr=600,lt=new Map;let kt=null;function Jn(e){hn=!0;try{e()}finally{hn=!1}}function Ye(e){q&&q.readyState===WebSocket.OPEN&&q.send(JSON.stringify(e))}function Fs(e){const r=lt.get(e.id);r&&clearTimeout(r),lt.set(e.id,setTimeout(()=>{lt.delete(e.id);const n=C.getState().dhfDocuments.find(a=>a.id===e.id);n&&Ye({type:"dhf:doc:save",payload:{doc:n}})},Qr))}let Xn=!1;function Ns(){Xn||(Xn=!0,C.subscribe((e,r)=>{if(!hn){if(e.dhfDocuments!==r.dhfDocuments){const n=new Map(r.dhfDocuments.map(a=>[a.id,a]));for(const a of e.dhfDocuments)n.get(a.id)!==a&&Fs(a),n.delete(a.id);for(const a of n.keys()){const o=lt.get(a);o&&(clearTimeout(o),lt.delete(a)),Ye({type:"dhf:doc:delete",payload:{docId:a}})}}e.dhfSettings!==r.dhfSettings&&(kt&&clearTimeout(kt),kt=setTimeout(()=>{kt=null,Ye({type:"dhf:settings:save",payload:{settings:C.getState().dhfSettings}})},Qr))}}))}function Ts(e){Ye({type:"dhf:templates:list",payload:{requestId:e}})}function Rs(e,r){Ye({type:"dhf:template:read",payload:{requestId:e,path:r}})}function Is(e,r,n){Ye({type:"dhf:template:save",payload:{requestId:e,title:r,content:n}})}function Qn(){q&&q.readyState===WebSocket.OPEN&&q.send(JSON.stringify({type:"request:refresh"}))}function St(e){return Zr("element:update",e)}function Xt(e){return Zr("element:create",e)}function Zr(e,r){var l;if(!q||q.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)}`,a=C.getState().model,o=r.file??"model/catalog/project.sysml",s=((l=a==null?void 0:a.sourceHashes)==null?void 0:l[o])??"",i=Oe&&ve!==null?{workspaceSessionId:Oe,baseRevision:ve,sourceFile:o,expectedSourceHash:s,targetElementIds:[r.id]}:void 0;return new Promise((c,d)=>{const p=setTimeout(()=>{ut.delete(n),d(new Error("The server did not answer the element mutation."))},15e3);ut.set(n,{resolve:c,reject:d,timer:p}),q.send(JSON.stringify({type:e,payload:{...r,file:o,requestId:n,precondition:i,...e==="element:update"?{irIdentity:ft(r.id)}:{}}}))})}function tt(e,r){if(!q||q.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((a,o)=>{const s=setTimeout(()=>{Pt.delete(n),o(new Error("The server did not answer the containment change."))},15e3);Pt.set(n,{resolve:a,reject:o,timer:s}),q.send(JSON.stringify({type:e,payload:{...r,requestId:n}}))})}function Ms(e){const r=e.owningFile??"model/catalog/relationships.sysml";return Lt("relationship:create",{...e,owningFile:r,sourceIdentity:ft(e.sourceId),targetIdentity:ft(e.targetId),precondition:Vt(r,[e.sourceId,e.targetId])},Tn)}function _s(e){var a;const r=(a=C.getState().model)==null?void 0:a.relationships.find(o=>o.id===e.relationshipId),n=(r==null?void 0:r.file)??e.sourceFile;return Lt("relationship:delete",{...e,precondition:n?Vt(n,[r==null?void 0:r.sourceId,r==null?void 0:r.targetId].filter(Boolean)):void 0},Rn)}function Mc(e){var a;const r=(a=C.getState().model)==null?void 0:a.relationships.find(o=>o.id===e.relationshipId),n=r==null?void 0:r.file;return Lt("relationship:update",{...e,sourceIdentity:ft(e.sourceId),targetIdentity:ft(e.targetId),precondition:n?Vt(n,[e.sourceId,e.targetId]):void 0},In)}function Ps(e){var n;const r=(n=C.getState().model)==null?void 0:n.elements[e];return Lt("element:delete",{elementId:e,precondition:r!=null&&r.file?Vt(r.file,[e]):void 0},Mn)}function _c(e){if(!q||q.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,a)=>{const o=setTimeout(()=>{Ot.delete(r),a(new Error("The server did not answer the screen-capture upload request."))},3e4);Ot.set(r,{resolve:n,reject:a,timer:o}),q.send(JSON.stringify({type:"screen-capture:upload",payload:{...e,requestId:r}}))})}function Os(e){q&&q.readyState===WebSocket.OPEN&&q.send(JSON.stringify({type:"diagram:create",payload:e}))}function Zn(e){q&&q.readyState===WebSocket.OPEN&&q.send(JSON.stringify({type:"diagram:update",payload:e}))}function Us(e){if(q&&q.readyState===WebSocket.OPEN){const r={id:e};q.send(JSON.stringify({type:"diagram:delete",payload:r}))}}function Pc(e,r){if(q&&q.readyState===WebSocket.OPEN){const n={diagramId:e,text:r};q.send(JSON.stringify({type:"diagram:parse",payload:n}))}}function ea(e,r,n){if(!q||q.readyState!==WebSocket.OPEN)return Promise.reject(new Error("The development server is not connected."));const a=`diagram-source-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`;return new Promise((o,s)=>{const i=setTimeout(()=>{Ge.delete(a),s(new Error(`Timed out while trying to ${e} the SysML source.`))},1e4);Ge.set(a,{resolve:o,reject:s,timer:i}),q.send(JSON.stringify({type:e==="load"?"diagram:source:request":"diagram:source:save",payload:{requestId:a,diagramId:r,...e==="save"?n:{}}}))})}function Oc(e){return ea("load",e)}function Uc(e,r,n){return ea("save",e,{text:r,baseRevision:n})}function yn(e,r,n){if(!q||q.readyState!==WebSocket.OPEN)return Promise.reject(new Error("The development server is not connected."));const a=`methodology-${e}-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`;return new Promise((o,s)=>{const i=setTimeout(()=>{pt.delete(a),s(new Error(`Timed out while trying to ${e} methodology source.`))},15e3);pt.set(a,{resolve:o,reject:s,timer:i}),q.send(JSON.stringify({type:`methodology:source:${e==="load"?"request":"save"}`,payload:{requestId:a,sourceFile:r,...n}}))})}function zs(e){q&&q.readyState===WebSocket.OPEN&&q.send(JSON.stringify({type:"element:remap-kinds",payload:{mappings:e}}))}function Qt(e){q&&q.readyState===WebSocket.OPEN&&q.send(JSON.stringify({type:"ontology:save-selection",payload:{selected:e}}))}function zc(e){q&&q.readyState===WebSocket.OPEN&&q.send(JSON.stringify({type:"ontology:install",payload:{source:e}}))}function qs(e){q&&q.readyState===WebSocket.OPEN&&q.send(JSON.stringify({type:"open-file",payload:{path:e}}))}function qc(e){q&&q.readyState===WebSocket.OPEN&&q.send(JSON.stringify({type:"ontology:remove",payload:{packageName:e}}))}function Lc(e,r){q&&q.readyState===WebSocket.OPEN&&q.send(JSON.stringify({type:"diagram:layout:update",payload:{diagramId:e,layout:r}}))}function Ls(e){q&&q.readyState===WebSocket.OPEN&&q.send(JSON.stringify({type:"csv:import",payload:e}))}function Vc(e,r,n,a){q&&q.readyState===WebSocket.OPEN&&q.send(JSON.stringify({type:"llm:chat",payload:{requestId:e,question:r,history:n,allowEdits:a}}))}function $c(e,r){q&&q.readyState===WebSocket.OPEN&&q.send(JSON.stringify({type:"llm:chat:apply",payload:{requestId:e,changes:r}}))}function Wc(e,r){q&&q.readyState===WebSocket.OPEN&&q.send(JSON.stringify({type:"llm:settings:save",payload:{requestId:e,...r}}))}function Hc(e,r){q&&q.readyState===WebSocket.OPEN&&q.send(JSON.stringify({type:"llm:generate",payload:{requestId:e,description:r}}))}function Kc(e,r,n){q&&q.readyState===WebSocket.OPEN&&q.send(JSON.stringify({type:"llm:draft",payload:{requestId:e,documentTypeId:r,targetSections:n}}))}function Vs(e){if(!q||q.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,a)=>{const o=setTimeout(()=>{mt.delete(r),a(new Error("Timed out while writing the rule policy."))},15e3);mt.set(r,{resolve:n,reject:a,timer:o}),q.send(JSON.stringify({type:"rule:policy:write",payload:{requestId:r,...e}}))})}const er="memo:userViewpoints",gn="memo:activeView";function $s(){try{const e=JSON.parse(sessionStorage.getItem(gn)??"null");if((e==null?void 0:e.type)==="diagram"&&typeof e.diagramId=="string")return e}catch{}return{type:"welcome"}}function tr(e){try{e.type==="diagram"?sessionStorage.setItem(gn,JSON.stringify(e)):sessionStorage.removeItem(gn)}catch{}}function Ws(){try{const e=localStorage.getItem(er);if(e){const r=JSON.parse(e);return localStorage.removeItem(er),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 Et=$s(),C=Cr((e,r)=>({model:null,validation:null,completeness:null,connected:!1,restartRequired:null,sourceCoherence:null,editConflict:null,methodology:null,effectiveRules:[],ruleDiagnostics:[],lastSourceChange:null,activeMode:Et.type==="diagram"?"diagram":"catalog",activeView:Et,explorerTab:"model",selectedElementId:null,selectedRelationshipId:null,selectedElementIds:new Set,recentlyVisited:[],selectedViewpointId:null,selectedDiagramId:Et.type==="diagram"?Et.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:Ws(),diagramLayouts:{},mergeDiagramLayouts:n=>e(a=>({diagramLayouts:{...a.diagramLayouts,...n}})),setNodeLayout:(n,a,o)=>e(s=>{const i=s.diagramLayouts[n]??{nodes:{},edges:{}};return{diagramLayouts:{...s.diagramLayouts,[n]:{...i,nodes:{...i.nodes,[a]:{...i.nodes[a]??{},...o}}}}}}),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,a,o)=>e({llmAvailable:n,llmProvider:a,llmModel:o}),registerLlmRequest:(n,a,o)=>e(s=>{const i=new Map(s.llmPending);return i.set(n,{resolve:a,reject:o}),{llmPending:i}}),resolveLlmRequest:(n,a)=>e(o=>{const s=o.llmPending.get(n);if(s){s.resolve(a);const i=new Map(o.llmPending);return i.delete(n),{llmPending:i}}return{}}),rejectLlmRequest:(n,a)=>e(o=>{const s=o.llmPending.get(n);if(s){s.reject(new Error(a));const i=new Map(o.llmPending);return i.delete(n),{llmPending:i}}return{}}),analysisIssues:[],editingElementId:null,pendingEdits:new Map,pendingRelationships:[],createRelationship:async n=>{const a=`pending-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`,o=Ks(r().model,n.type);e(i=>({pendingRelationships:[...i.pendingRelationships,{pendingId:a,type:n.type,label:(o==null?void 0:o.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===a?{...d,status:"failed",error:i}:d)})),{success:!1,error:i,diagnostics:l});try{const i=await Ms(n);return i.success?(e(l=>({pendingRelationships:l.pendingRelationships.filter(c=>c.pendingId!==a)})),{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 a=await _s({relationshipId:n});return a.success?(e(o=>o.model?{model:{...o.model,relationships:o.model.relationships.filter(s=>s.id!==n)},selectedRelationshipId:o.selectedRelationshipId===n?null:o.selectedRelationshipId}:{}),{success:!0,sourceFile:a.sourceFile}):{success:!1,error:a.error??"The relationship could not be deleted."}}catch(a){return{success:!1,error:a instanceof Error?a.message:String(a)}}},deleteModelElement:async n=>{try{const a=await Ps(n);return a.success?(e(o=>{if(!o.model)return{};const s={...o.model.elements};return delete s[n],{model:{...o.model,elements:s,relationships:o.model.relationships.filter(i=>i.sourceId!==n&&i.targetId!==n),diagrams:(o.model.diagrams??[]).map(i=>{var l;return{...i,elementIds:(l=i.elementIds)==null?void 0:l.filter(c=>c!==n)}})},selectedElementId:o.selectedElementId===n?null:o.selectedElementId,selectedElementIds:new Set([...o.selectedElementIds].filter(i=>i!==n))}}),{success:!0}):{success:!1,error:a.error??"The element could not be deleted."}}catch(a){return{success:!1,error:a instanceof Error?a.message:String(a)}}},dismissPendingRelationship:n=>e(a=>({pendingRelationships:a.pendingRelationships.filter(o=>o.pendingId!==n)})),setRestartRequired:n=>e({restartRequired:n}),setSourceCoherence:n=>e({sourceCoherence:n.coherent?null:n}),setEditConflict:n=>e({editConflict:n}),applySourceChange:n=>e(a=>{var o;return{lastSourceChange:{...n,seq:(((o=a.lastSourceChange)==null?void 0:o.seq)??0)+1}}}),setMethodology:n=>e({methodology:n}),setEffectiveRules:(n,a)=>e({effectiveRules:n??[],ruleDiagnostics:a??[]}),setModel:n=>e(a=>{var l,c,d,p;let o=a.activeView,s=a.selectedDiagramId,i=a.selectedViewpointId;if(o.type==="diagram"){const f=o.diagramId,k=(l=n.diagrams)==null?void 0:l.find(x=>x.id===f),w=(d=(c=a.model)==null?void 0:c.diagrams)==null?void 0:d.find(x=>x.id===f),S=k??(w!=null&&w.sourceFile?(p=n.diagrams)==null?void 0:p.find(x=>x.sourceFile===w.sourceFile):void 0);S&&(S.id!==f&&(o={type:"diagram",diagramId:S.id},tr(o)),s=S.id,i=S.viewpointId==="__model"?null:S.viewpointId)}else(o.type==="welcome"||o.type==="dashboard")&&Object.keys(n.elements).length>0&&(o={type:"dashboard"});return{model:n,activeView:o,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=>{tr(n),e({activeView:n})},setExplorerTab:n=>e({explorerTab:n}),selectElement:n=>{e(n?a=>{const o=[n,...a.recentlyVisited.filter(s=>s!==n)].slice(0,20);return{selectedElementId:n,activeView:{type:"element-detail",elementId:n},recentlyVisited:o}}:{selectedElementId:n})},inspectElement:n=>e(a=>({selectedElementId:n,selectedRelationshipId:null,propertiesPanelCollapsed:n?!1:a.propertiesPanelCollapsed,recentlyVisited:n?[n,...a.recentlyVisited.filter(o=>o!==n)].slice(0,20):a.recentlyVisited})),inspectRelationship:n=>e({selectedRelationshipId:n,selectedElementId:null,propertiesPanelCollapsed:n?!1:r().propertiesPanelCollapsed}),toggleElementSelection:n=>e(a=>{const o=new Set(a.selectedElementIds);return o.has(n)?o.delete(n):o.add(n),{selectedElementIds:o}}),selectAllElements:n=>e({selectedElementIds:new Set(n)}),clearElementSelection:()=>e({selectedElementIds:new Set}),updateElementKind:(n,a)=>{const{model:o}=r();if(!o)return;const s=o.elements[n];if(!s)return;const i={...s,kind:a};e(l=>({model:l.model?{...l.model,elements:{...l.model.elements,[n]:i}}:null})),St(i)},bulkUpdateAttributes:(n,a)=>{const{model:o}=r();if(!o)return;const s={...o.elements};for(const i of n){const l=s[i];if(!l)continue;const c={...l,attributes:{...l.attributes,...a}};s[i]=c,St(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:a}=r(),o=(s=a==null?void 0:a.diagrams)==null?void 0:s.find(i=>i.id===n);e(o?{selectedDiagramId:n,selectedViewpointId:o.viewpointId==="__model"?null:o.viewpointId}:{selectedDiagramId:n})},setSearchTerm:n=>e({searchTerm:n}),toggleSidebar:()=>e(n=>({sidebarCollapsed:!n.sidebarCollapsed})),togglePropertiesPanel:()=>e(n=>({propertiesPanelCollapsed:!n.propertiesPanelCollapsed})),toggleLayerVisibility:n=>e(a=>{const o=new Set(a.hiddenLayers);return o.has(n)?o.delete(n):o.add(n),{hiddenLayers:o}}),setOntologyGroupBy:n=>e({ontologyGroupBy:n,collapsedGroups:new Set}),toggleGroupCollapsed:n=>e(a=>{const o=new Set(a.collapsedGroups);return o.has(n)?o.delete(n):o.add(n),{collapsedGroups:o}}),setAvailableOntologies:n=>e(a=>{let o=new Set(n.filter(l=>l.selected).map(l=>l.name));const s=["@memoarchitect/ontology"];for(const l of n)s.includes(l.name)&&o.add(l.name);o.size===0&&n.length>0&&(o=new Set(n.map(l=>l.name)));const i=a.focusedOntologyId??(o.size>0?[...o][0]:null);return{availableOntologies:n,selectedOntologies:o,focusedOntologyId:i}}),toggleOntologySelection:n=>e(a=>{const o=new Set(a.selectedOntologies);return o.has(n)?o.delete(n):o.add(n),{selectedOntologies:o}}),setFocusedOntology:n=>e({focusedOntologyId:n}),setSelectedOntologyKind:n=>e({selectedOntologyKind:n}),setOntologyViewMode:n=>e({ontologyViewMode:n}),toggleOntologyRelationships:()=>e(n=>({showOntologyRelationships:!n.showOntologyRelationships})),setHighlightedRelationshipType:n=>e(a=>({highlightedRelationshipType:a.highlightedRelationshipType===n?null:n})),toggleHiddenEdgeType:n=>e(a=>{const o=new Set(a.hiddenEdgeTypes);return o.has(n)?o.delete(n):o.add(n),{hiddenEdgeTypes:o}}),saveOntologySelection:()=>{const{model:n,availableOntologies:a,selectedOntologies:o}=r();if(!n)return{success:!0};const s=a.filter(c=>!o.has(c.name)),i=new Set;for(const c of s)for(const d of c.layers)for(const p of d.kinds)i.add(p.name);const l=[];if(i.size>0){for(const c of Object.values(n.elements))if(i.has(c.kind)){const d=s.find(p=>p.layers.some(f=>f.kinds.some(k=>k.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(a=>{const o=new Set(a.catalogCollapsed);return o.has(n)?o.delete(n):o.add(n),{catalogCollapsed:o}}),setCatalogCollapsedAll:n=>e(a=>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(a=>({tagFilters:a.tagFilters.includes(n)?a.tagFilters.filter(s=>s!==n):[...a.tagFilters,n]})),clearTagFilters:()=>e({tagFilters:[]}),setEditingElement:n=>e({editingElementId:n}),updateElementField:(n,a,o)=>e(s=>{const i=new Map(s.pendingEdits),l=i.get(n)||{};return i.set(n,{...l,[a]:o}),{pendingEdits:i}}),updateElementAttribute:(n,a,o)=>e(s=>{const i=new Map(s.pendingEdits),l=i.get(n)||{},c={...l.attributes||{},[a]:o};return i.set(n,{...l,attributes:c}),{pendingEdits:i}}),moveElementToPackage:(n,a)=>tt("element:move-package",{elementId:n,targetPackage:a}),createPackage:(n,a)=>tt("package:create",{name:n,...a?{parent:a}:{}}),renamePackage:(n,a)=>tt("package:rename",{qualifiedName:n,name:a}),movePackage:(n,a)=>tt("package:move",{qualifiedName:n,targetParent:a}),deletePackage:n=>tt("package:delete",{qualifiedName:n}),addElement:(n,a,o)=>{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(p=>p.kind===n),c=o?Object.values(s.model.elements).find(p=>p.package===o):void 0,d={id:i,name:a,kind:n,construct:(l==null?void 0:l.construct)||"part",layer:(l==null?void 0:l.layer)||"Other",doc:"",attributes:{},...o?{package:o}:{},file:(c==null?void 0:c.file)||(l==null?void 0:l.file)||"model/generated.sysml"};e(p=>({model:p.model?{...p.model,elements:{...p.model.elements,[i]:d}}:null,selectedElementId:i,activeView:{type:"element-detail",elementId:i}})),Xt(d)},createModelElement:n=>{const a=n.id??`${n.kind.toLowerCase().replace(/\W+/g,"_")}_${Math.random().toString(36).slice(2,8)}`,o={...n,id:a};return e(s=>({model:s.model?{...s.model,elements:{...s.model.elements,[a]:o}}:null,selectedElementId:a})),Xt(o),a},persistElementAttributes:(n,a)=>{var i;const o=(i=r().model)==null?void 0:i.elements[n];if(!o)return;const s={...o,attributes:{...o.attributes,...a}};e(l=>({model:l.model?{...l.model,elements:{...l.model.elements,[n]:s}}:null})),St(s)},addUserViewpoint:n=>e(a=>({userViewpoints:[...a.userViewpoints,n]})),updateUserViewpoint:n=>e(a=>({userViewpoints:a.userViewpoints.map(o=>o.id===n.id?n:o)})),deleteUserViewpoint:n=>e(a=>({userViewpoints:a.userViewpoints.filter(o=>o.id!==n),selectedViewpointId:a.selectedViewpointId===n?null:a.selectedViewpointId})),createDiagram:({id:n,name:a,diagramType:o,viewKind:s,viewpointId:i,elementIds:l=[],activate:c=!0})=>{const d=n??`diag_${Math.random().toString(36).substr(2,9)}`,p={id:d,name:a,diagramType:o,viewKind:s,viewpointId:i,auto:!1,elementIds:l};return e(f=>({model:f.model?{...f.model,diagrams:[...f.model.diagrams??[],p]}:null,selectedDiagramId:c?d:f.selectedDiagramId,activeView:c?{type:"diagram",diagramId:d}:f.activeView})),Os({id:d,name:a,diagramType:o,viewKind:s,viewpointId:i,elementIds:l}),d},addElementToDiagram:(n,a)=>{var l;const{model:o}=r(),s=(l=o==null?void 0:o.diagrams)==null?void 0:l.find(c=>c.id===n);if(!s)return;const i=s.elementIds??[];i.includes(a)||r().updateDiagramElementIds(n,[...i,a])},updateDiagramElementIds:(n,a)=>{const{model:o}=r();if(!(o!=null&&o.diagrams))return;const s=o.diagrams.findIndex(c=>c.id===n);if(s<0)return;const i={...o.diagrams[s],elementIds:a},l=[...o.diagrams];l[s]=i,e(c=>({model:c.model?{...c.model,diagrams:l}:null})),Zn({id:n,elementIds:a})},deleteDiagram:n=>{e(a=>({model:a.model?{...a.model,diagrams:(a.model.diagrams??[]).filter(o=>o.id!==n)}:null,selectedDiagramId:a.selectedDiagramId===n?null:a.selectedDiagramId,activeView:a.activeView.type==="diagram"&&a.activeView.diagramId===n?{type:"welcome"}:a.activeView})),Us(n)},applyDiagramParseResult:(n,a,o)=>{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:a},c=[...s.diagrams];c[i]=l,e(d=>({model:d.model?{...d.model,diagrams:c}:null,diagramParseErrors:{...d.diagramParseErrors,[n]:o}})),Zn({id:n,elementIds:a})}else e(l=>({diagramParseErrors:{...l.diagramParseErrors,[n]:o}}))},addDhfDocument:n=>e(a=>({dhfDocuments:[...a.dhfDocuments,n]})),setDhfDocuments:n=>e({dhfDocuments:n}),hydrateDhfSettings:n=>e(a=>({dhfSettings:{...a.dhfSettings,...n}})),updateDhfSettings:n=>e(a=>({dhfSettings:{...a.dhfSettings,...n}})),updateDhfDocumentMeta:(n,a)=>e(o=>({dhfDocuments:o.dhfDocuments.map(s=>s.id===n?{...s,...a}:s)})),updateDhfDocumentContent:(n,a)=>e(o=>({dhfDocuments:o.dhfDocuments.map(s=>s.id===n?{...s,content:a}:s)})),removeDhfDocument:n=>e(a=>({dhfDocuments:a.dhfDocuments.filter(o=>o.id!==n),activeView:a.activeView.type==="dhf-document"&&a.activeView.docId===n?{type:"dhf-dashboard"}:a.activeView})),setBulkImportOpen:n=>e({bulkImportOpen:n}),setImportResult:n=>e({importResult:n}),clearImportResult:()=>e({importResult:null}),cancelEdit:n=>e(a=>{const o=new Map(a.pendingEdits);return o.delete(n),{pendingEdits:o}}),applyEdit:async n=>{const{pendingEdits:a,model:o}=r(),s=a.get(n);if(!s||!o)return;const i=o.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={...o,elements:{...o.elements,[n]:l}};if(e({model:c}),!(n.startsWith("new_")?await Xt(l):await St(l)).success){e({model:o});return}const p=new Map(r().pendingEdits);p.delete(n),e({pendingEdits:p})}})),Hs={relationships:[],kinds:[]};function ta(e){return(e==null?void 0:e.registries)??Hs}function Ks(e,r){return Nn(r,ta(e))}function Gc(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 Gs(e,r){return e?e.relationships.filter(n=>n.sourceId===r||n.targetId===r):[]}function $t(e,r){return!e||!r||!e.diagrams?null:e.diagrams.find(n=>n.id===r)??null}function Yc(e,r){const n=$t(e,r);return n?n.sourceFiles&&n.sourceFiles.length>0?n.sourceFiles:n.sourceFile?[n.sourceFile]:[]:[]}function Ys(e,r){var a;const n=r?(a=e==null?void 0:e.elements[r])==null?void 0:a.file:void 0;return n?[...as(n,e==null?void 0:e.sourceGraph)]:[]}function Js(e,r){return e?os(e.files,r):!1}function na(e,r){return e!=null&&e.diagrams?e.diagrams.filter(n=>{var a;return n.viewpointId===r||((a=n.viewpointIds)==null?void 0:a.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"},ra={"/dashboard":"dashboard","/scenarios":"scenario-editor"},Xs={...Object.fromEntries(Object.entries(_n).map(([e,r])=>[r,e])),...ra};function Qs(e){return e.toLowerCase().replace(/\s+/g,"-")}function Zs(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 ei(e,r=""){const n=e.length>1?e.replace(/\/+$/,""):e,a=Xs[n];if(a)return{type:a};if(n==="/table"){const s=new URLSearchParams(r);return{type:"tabular",viewpointId:s.get("viewpoint")??void 0,diagramId:s.get("diagram")??void 0}}const o=n.split("/").filter(Boolean);return o[0]==="dhf"&&o.length===2?{type:"dhf-document",docId:decodeURIComponent(o[1])}:o[0]==="ontology"&&o.length>=2?{type:"ontology-detail",packageName:decodeURIComponent(o[1]),layerId:o[2]?decodeURIComponent(o[2]):void 0}:null}function ti(e){const r=e.split("/").filter(Boolean);return r[0]==="catalog"&&r.length===3||r[0]==="diagrams"&&r.length===3}function ni(e){const r=e.split("/").filter(Boolean);return r[0]==="catalog"&&r.length<=2||r[0]==="diagrams"&&r.length===1}function ri(){return[...Object.values(_n),...Object.keys(ra)].filter(e=>e!=="/")}const ai=[{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 oi(){return typeof window>"u"?{}:window.__MEMO_FLAGS__??{}}function de(e){const r=ai.find(n=>n.id===e);return r?r.stage==="stable"?!0:oi().experimental===!0:!1}function Ct(){const e=C(i=>i.model),r=C(i=>i.setActiveView),n=C(i=>i.setActiveMode),a=ke(),o=e==null?void 0:e.metadata;function s(){n("dashboard"),r({type:"dashboard"}),a("/")}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"}),((o==null?void 0:o.projectName)||(o==null?void 0:o.gitUser))&&t.jsxs("span",{title:"Current project and Git revision",style:{color:"rgba(255,255,255,0.62)",fontSize:"12px",whiteSpace:"nowrap"},children:[(o==null?void 0:o.projectName)&&t.jsx("span",{style:{color:"rgba(255,255,255,0.8)",fontWeight:600},children:o.projectName}),(o==null?void 0:o.projectName)&&(o==null?void 0:o.gitUser)&&t.jsx("span",{style:{margin:"0 8px",color:"rgba(255,255,255,0.32)"},children:"|"}),(o==null?void 0:o.gitUser)&&t.jsxs(t.Fragment,{children:["@",o.gitUser,o.gitBranch&&t.jsxs(t.Fragment,{children:[" · ",o.gitBranch]}),o.gitCommitShort&&t.jsxs("span",{style:{marginLeft:4,fontFamily:"ui-monospace, SFMono-Regular, Menlo, monospace"},children:[o.gitCommitShort,o.gitDirty?"*":""]})]})]}),t.jsx("img",{src:"/logo.png",alt:"MEMO",style:{height:40,opacity:.9,cursor:"pointer"},onClick:s,title:"Go to home"})]})}const aa="memo-working-sets",oa="memo-quick-slots";function si(){return`ws-${Date.now()}-${Math.random().toString(36).slice(2,8)}`}function jt(e){try{localStorage.setItem(aa,JSON.stringify(e))}catch{}}function ii(){try{const e=localStorage.getItem(aa);return e?JSON.parse(e):[]}catch{return[]}}function nr(){try{const e=localStorage.getItem(oa);return e?JSON.parse(e):[null,null,null,null]}catch{return[null,null,null,null]}}function rr(e){try{localStorage.setItem(oa,JSON.stringify(e))}catch{}}const Zt=Cr((e,r)=>({workingSets:[],activeWorkingSetId:null,quickSlots:nr(),loadFromStorage:()=>{const n=ii(),a=nr();e({workingSets:n,quickSlots:a})},saveWorkingSet:(n,a)=>{const o=si(),s=Date.now(),i={id:o,name:n,createdAt:s,updatedAt:s,state:a},l=[...r().workingSets,i];return e({workingSets:l,activeWorkingSetId:o}),jt(l),o},updateWorkingSet:(n,a)=>{const o=r().workingSets.map(s=>s.id===n?{...s,state:a,updatedAt:Date.now()}:s);e({workingSets:o}),jt(o)},renameWorkingSet:(n,a)=>{const o=r().workingSets.map(s=>s.id===n?{...s,name:a,updatedAt:Date.now()}:s);e({workingSets:o}),jt(o)},deleteWorkingSet:n=>{const a=r().workingSets.filter(s=>s.id!==n),o=r().activeWorkingSetId===n?null:r().activeWorkingSetId;e({workingSets:a,activeWorkingSetId:o}),jt(a)},setActiveWorkingSet:n=>e({activeWorkingSetId:n}),saveQuickSlot:(n,a,o)=>{const s=["Last Session","Slot 1","Slot 2","Slot 3"],i=[...r().quickSlots];for(;i.length<4;)i.push(null);i[n]={name:o??s[n],state:a,savedAt:Date.now()},rr(i),e({quickSlots:i})},clearQuickSlot:n=>{const a=[...r().quickSlots];a[n]=null,rr(a),e({quickSlots:a})}})),N={badge:"12px",xs:"12px",sm:"13px",md:"14px",lg:"15px",explorer:{group:"13px",kind:"12px",item:"13px",element:"13px",count:"12px",search:"13px"}},y={primary:"#082744",secondary:"#324E67",muted:"#5C7188",faint:"#8CA0B1",surface:"#FFFFFF",surfaceAlt:"#EEF4F7",border:"#D8E2E9",borderLight:"#E6EDF2",accent:"#2DD4A8",accentDark:"#0B1E2D"},li={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)"},Jc={md:"10px"},Xc={defaultWidth:2,flowWidth:2.5,arrowSize:16,labelBgPadding:[6,4],labelBgRadius:6,labelBgStyle:{fill:"#FFFFFF",fillOpacity:.92,stroke:"#E5E5E0",strokeWidth:.5}};function en(){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 tn(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 di(){const[e,r]=u.useState(!1),n=u.useRef(null),a=Zt(l=>l.quickSlots),o=Zt(l=>l.saveQuickSlot),s=Zt(l=>l.clearQuickSlot);u.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]),u.useEffect(()=>{const l=()=>{o(0,en(),"Last Session")};return window.addEventListener("beforeunload",l),()=>window.removeEventListener("beforeunload",l)},[o]),u.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)o(d,en());else{const p=a[d];p&&tn(p.state)}};return window.addEventListener("keydown",l),()=>window.removeEventListener("keydown",l)},[a,o]);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:N.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:N.xs,color:"rgba(255,255,255,0.5)",fontWeight:600},children:"Last Session"}),a[0]?t.jsx("button",{onClick:()=>{tn(a[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 —"})]}),a[0]&&t.jsx("div",{style:{fontSize:"10px",color:"rgba(255,255,255,0.3)",marginTop:2},children:new Date(a[0].savedAt).toLocaleString()})]}),[1,2,3].map(l=>{const c=a[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:N.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:N.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:()=>{tn(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:()=>o(l,en(),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 ci=[{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"},nn={fontSize:"12px",fontWeight:700,color:"#1B3A4B",paddingBottom:"6px",borderBottom:"1px solid #E5E7EB",marginBottom:"12px",marginTop:"4px"},ui={display:"grid",gridTemplateColumns:"1fr 1fr",gap:"12px"};function sa({onClose:e}){const r=C(d=>d.dhfSettings),n=C(d=>d.updateDhfSettings),[a,o]=u.useState({...r}),[s,i]=u.useState("identity");function l(d,p){o(f=>({...f,[d]:p}))}function c(){n(a),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:nn,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:ui,children:[t.jsxs("div",{children:[t.jsx("label",{style:he,children:"Company / Manufacturer"}),t.jsx("input",{style:ge,value:a.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:a.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:a.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:a.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:a.phase,onChange:d=>l("phase",d.target.value),children:ci.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:a.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:[a.documentNumberingPrefix||"DOC","-RMP-001"]})]})]})]})]}),s==="branding"&&t.jsxs("div",{children:[t.jsx("p",{style:nn,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:a.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."}),a.logoUrl&&t.jsx("img",{src:a.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:a.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."}),a.compactLogoUrl&&t.jsx("img",{src:a.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:a.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:a.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:nn,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:a.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:a.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:a.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 Qc=Object.freeze(Object.defineProperty({__proto__:null,DhfSettingsPanel:sa},Symbol.toStringTag,{value:"Module"})),pi="/help/",mi="http://127.0.0.1:8888/lab/tree/",fi=[{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"}],hi=new Set(["dsm","traceability","statistics","compliance-wizard","model-diff","review-dashboard","workflow-wizard","ontology","ontology-detail","import"]),ar=[{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 yi({activeViewType:e}){const r=C(l=>l.setActiveView);C(l=>l.setActiveMode);const[n,a]=u.useState(!1),o=u.useRef(null),i=ar.map(l=>l.id).includes(e);return u.useEffect(()=>{function l(c){o.current&&!o.current.contains(c.target)&&a(!1)}return n&&document.addEventListener("mousedown",l),()=>document.removeEventListener("mousedown",l)},[n]),t.jsxs("div",{ref:o,style:{position:"relative"},children:[t.jsxs("button",{onClick:()=>a(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:ar.filter(l=>(l.id!=="ontology"||de("ontology"))&&(l.id!=="import"||de("import"))).map((l,c)=>{const d=e===l.view.type;return t.jsxs("button",{onClick:()=>{r(d?{type:"welcome"}:l.view),a(!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:p=>{d||(p.currentTarget.style.background="rgba(255,255,255,0.06)")},onMouseLeave:p=>{d||(p.currentTarget.style.background="transparent")},children:[t.jsx("span",{style:{width:"18px",textAlign:"center",opacity:.7},children:l.icon}),l.label]},l.id)})})]})}function gi(){const e=C(m=>m.activeMode),r=C(m=>m.setActiveMode),n=C(m=>m.activeView),a=C(m=>m.setActiveView),o=C(m=>m.setExplorerTab),s=C(m=>m.sidebarCollapsed),i=C(m=>m.toggleSidebar),l=ke(),[c,d]=u.useState(!1),[p,f]=u.useState(!1),[k,w]=u.useState(!1);u.useEffect(()=>{const m=()=>d(B=>!B);return window.addEventListener("memo:toggle-navigation",m),()=>window.removeEventListener("memo:toggle-navigation",m)},[]);const S=["catalog","diagram","dhf","scenario"],x=hi.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(m){if(m===x&&S.includes(m)){i();return}switch(S.includes(m)&&s&&i(),r(m),m){case"dashboard":a({type:"dashboard"});break;case"catalog":a({type:"welcome"}),l("/catalog");break;case"diagram":o("views"),a({type:"welcome"}),l("/diagrams");break;case"ui-screens":a({type:"ui-screens"}),l("/ui-screens");break;case"dhf":a({type:"dhf-dashboard"});break;case"scenario":a({type:"scenario-editor"});break;case"ai":a({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:[fi.filter(m=>!("feature"in m)||de(m.feature)).map(m=>t.jsxs("button",{onClick:()=>{h(m.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:x===m.id?"rgba(45,212,168,0.15)":"transparent",color:x===m.id?"#2DD4A8":"rgba(255,255,255,0.78)"},children:[t.jsx("span",{style:{width:20,textAlign:"center"},children:m.icon}),m.label]},m.id)),de("analysis")&&t.jsxs(t.Fragment,{children:[t.jsxs("button",{onClick:()=>f(m=>!m),"aria-expanded":p,className:"flex w-full items-center gap-3 rounded-md px-3 py-3 text-left",style:{border:"none",cursor:"pointer",fontSize:15,background:p?"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:p?"▾":"▸"})]}),p&&t.jsxs("div",{style:{margin:"0 0 4px 36px",borderLeft:"1px solid rgba(45,212,168,0.25)"},children:[t.jsxs("button",{onClick:()=>{a({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:()=>{a({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"]}),de("model-tools")&&t.jsxs("button",{onClick:()=>{a({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("a",{href:mi,target:"_blank",rel:"noopener noreferrer",onClick:()=>d(!1),className:"flex w-full items-center gap-2 px-3 py-2",style:{color:"rgba(255,255,255,0.68)",textDecoration:"none",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(di,{})]}),de("model-tools")&&t.jsx("div",{className:"px-2 py-1",children:t.jsx(yi,{activeViewType:n.type})}),t.jsxs("button",{onClick:()=>w(!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:pi,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"]})]}),k&&t.jsx(sa,{onClose:()=>w(!1)})]}):null}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"},Je={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"},Ie=["operational","business","requirements","risk","functional","behavior","logical","physical","software","interfaces","verification","ui"],xi={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"},or=["#2563EB","#0891B2","#7C3AED","#DB2777","#EA580C","#0D9488","#65A30D","#9333EA","#C2410C","#1D4ED8"];function Zc(e){const r=xi[e];if(r)return r;let n=0;for(let a=0;a<e.length;a++)n=n*31+e.charCodeAt(a)>>>0;return or[n%or.length]}const Pn={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"}},ze={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 bi(e){const r=e.diagramType.trim().toLowerCase();return r==="ofd"||r==="ffd"?r:"afd"}const eu=["#FFFFFF","#f8fafc","#f0f9ff","#fdf2f8","#f0fdf4"];function Ne({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:a=>a.currentTarget.style.background="#F0F0ED",onMouseLeave:a=>a.currentTarget.style.background="transparent",onClick:a=>{a.stopPropagation(),r()},children:[n&&t.jsx("span",{style:{fontSize:"12px",width:"14px",flexShrink:0},children:n}),e]})}function vi(){return t.jsx("div",{style:{height:"1px",background:"#E5E5E0",margin:"3px 0"}})}function wi({x:e,y:r,target:n,onViewVisual:a,onViewTable:o,onToggleSelection:s,onViewProperties:i,onClose:l}){const c=u.useRef(null);u.useEffect(()=>{if(!c.current)return;const p=c.current,{innerWidth:f,innerHeight:k}=window,w=p.getBoundingClientRect();w.right>f&&(p.style.left=`${e-w.width}px`),w.bottom>k&&(p.style.top=`${r-w.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:p=>p.stopPropagation(),children:[t.jsx(Ne,{icon:"⬜",label:"View Visual Layout",onClick:()=>{a(n.pkgName),l()}}),t.jsx(Ne,{icon:"☰",label:"View as Table",onClick:()=>{o(n.pkgName),l()}}),t.jsx(vi,{}),t.jsx(Ne,{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:p=>p.stopPropagation(),children:[t.jsx(Ne,{icon:"⬜",label:"View Visual Layout",onClick:()=>{a(n.pkgName),l()}}),t.jsx(Ne,{icon:"☰",label:"View as Table",onClick:()=>o(n.pkgName,n.layerId)})]}):t.jsxs("div",{ref:c,style:d,onMouseDown:p=>p.stopPropagation(),children:[t.jsx(Ne,{icon:"🔍",label:"View Properties",onClick:()=>i(n.kindName,n.pkgName)}),t.jsx(Ne,{icon:"☰",label:"View as Table",onClick:()=>o(n.pkgName,n.layerId)}),t.jsx(Ne,{icon:"⬜",label:"Show in Visual Layout",onClick:()=>{a(n.pkgName),l()}})]})}function ki({kindsToRemap:e,onConfirm:r,onCancel:n}){const a=C(p=>p.availableOntologies),o=C(p=>p.selectedOntologies),s=a.filter(p=>o.has(p.name)).flatMap(p=>p.layers.flatMap(f=>f.kinds.map(k=>k.name))).filter((p,f,k)=>k.indexOf(p)===f).sort(),[i,l]=u.useState(Object.fromEntries(e.map(p=>[p,""])));function c(p,f){l(k=>({...k,[p]:f}))}const d=e.every(p=>i[p]);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(p=>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:p}),t.jsx("span",{style:{color:"#9CA3AF"},children:"→"}),t.jsxs("select",{value:i[p],onChange:f=>c(p,f.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(f=>t.jsx("option",{value:f,children:f},f))]})]},p))}),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 Si({orphans:e,onKeep:r,onRemap:n,onCancel:a}){const[o,s]=u.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 o?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&&a()},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:a,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 Ei(){const e=C(S=>S.methodology),r=u.useMemo(()=>[...new Set(((e==null?void 0:e.folders)??[]).flatMap(S=>S.sourceFiles))].sort(),[e]),[n,a]=u.useState(""),[o,s]=u.useState(""),[i,l]=u.useState(""),[c,d]=u.useState(!1),[p,f]=u.useState(""),k=async S=>{if(!S)return;const x=await yn("load",S);a(S),s(x.text??""),l(x.revision??""),d(!1),f(x.success?"":x.error??"Could not load source.")},w=async()=>{if(!n||!i)return;const S=await yn("save",n,{text:o,baseRevision:i});S.success?(l(S.revision??i),d(!1),f("Saved. The reusable semantic runtime is restarting.")):f(S.error??"Save rejected; the draft remains in the editor.")};return r.length===0?null:t.jsxs("section",{style:{borderBottom:`1px solid ${y.border}`},children:[t.jsx("div",{className:"px-3 py-2 font-semibold",style:{fontSize:N.xs,color:y.primary},children:"Methodology & Rule Policies"}),t.jsxs("select",{value:n,onChange:S=>void k(S.target.value),className:"mx-3 mb-2",style:{width:"calc(100% - 24px)",fontSize:N.xs},children:[t.jsx("option",{value:"",children:"Select resolved SysML source…"}),r.map(S=>t.jsx("option",{value:S,children:S},S))]}),n&&t.jsxs(t.Fragment,{children:[t.jsx("textarea",{value:o,onChange:S=>{s(S.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 w(),children:"Save SysML"}),t.jsx("button",{onClick:()=>void navigator.clipboard.writeText(o),children:"Copy draft"}),t.jsx("button",{onClick:()=>void k(n),children:"Reload"})]}),p&&t.jsx("div",{className:"px-3 pb-2",role:"status",style:{fontSize:11,color:"#B45309"},children:p})]})]})}function Ci(){var _;const e=C(D=>D.effectiveRules),r=C(D=>D.ruleDiagnostics),n=C(D=>D.methodology),a=u.useMemo(()=>[...new Set(((n==null?void 0:n.folders)??[]).flatMap(D=>D.sourceFiles))].sort(),[n]),[o,s]=u.useState(""),[i,l]=u.useState("disabled"),[c,d]=u.useState(""),[p,f]=u.useState(""),[k,w]=u.useState(""),[S,x]=u.useState(""),[h,m]=u.useState(""),[B,T]=u.useState(""),[A,U]=u.useState(""),[E,b]=u.useState(!1),g=e.find(D=>D.sourceRuleType===o),I=(g==null?void 0:g.tailoring)==="invariant",O=!o||!B||I&&i!=="enabled"||i!=="enabled"&&!k.trim()||i==="replaced"&&!p.trim(),R=async()=>{b(!0),U("");try{const D=await yn("load",B);if(!D.success||!D.revision){U(D.error??"Could not read the methodology source.");return}const V=await Vs({targetRuleType:o,disposition:i,severityOverride:c||void 0,replacementRuleType:i==="replaced"?p.trim():void 0,rationaleText:k.trim(),authority:S.trim()||void 0,approvalReference:h.trim()||void 0,sourceFile:B,baseRevision:D.revision});U(V.success?"Policy written. The reusable semantic runtime is restarting.":V.error??"The policy was rejected; nothing was written."),V.success&&(w(""),m(""))}catch(D){U(D instanceof Error?D.message:String(D))}finally{b(!1)}};if(e.length===0)return null;const F={width:"calc(100% - 24px)",margin:"0 12px 6px",fontSize:N.xs};return t.jsxs("section",{style:{borderBottom:`1px solid ${y.border}`},children:[t.jsxs("div",{className:"px-3 py-2 font-semibold",style:{fontSize:N.xs,color:y.primary},children:["Rule Tailoring",t.jsxs("span",{style:{fontWeight:400,color:y.muted},children:[" — ",e.length," rules in the effective set"]})]}),t.jsxs("select",{"aria-label":"Rule",value:o,style:F,onChange:D=>s(D.target.value),children:[t.jsx("option",{value:"",children:"Select a rule…"}),e.map(D=>t.jsxs("option",{value:D.sourceRuleType,children:[D.sourceRuleId," — ",D.sourceRuleType,D.tailoring==="invariant"?" (invariant)":"",D.disposition!=="enabled"?` [${D.disposition}]`:""]},D.sourceRuleType))]}),g&&t.jsxs("div",{className:"px-3 pb-1",style:{fontSize:11,color:y.muted},children:["Currently ",g.disposition," at ",g.effectiveSeverity,g.effectiveSeverity!==g.declaredSeverity&&` (declared ${g.declaredSeverity})`,((_=g.policyChain)==null?void 0:_.length)>0&&` · ${g.policyChain.length} policy in chain`]}),I&&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:F,onChange:D=>l(D.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:F,onChange:D=>d(D.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:p,style:F,placeholder:"Replacement constraint def name",onChange:D=>f(D.target.value)}),t.jsx("textarea",{"aria-label":"Rationale",value:k,placeholder:"Rationale — required to disable or replace a rule",style:{...F,height:54,fontFamily:"inherit"},onChange:D=>w(D.target.value)}),t.jsx("input",{"aria-label":"Authority",value:S,style:F,placeholder:"Authority (optional)",onChange:D=>x(D.target.value)}),t.jsx("input",{"aria-label":"Approval reference",value:h,style:F,placeholder:"Approval reference (optional)",onChange:D=>m(D.target.value)}),t.jsxs("select",{"aria-label":"Target methodology file",value:B,style:F,onChange:D=>T(D.target.value),children:[t.jsx("option",{value:"",children:"Write the policy into…"}),a.map(D=>t.jsx("option",{value:D,children:D},D))]}),t.jsx("div",{className:"flex gap-2 px-3 py-2",children:t.jsx("button",{disabled:O||E,onClick:()=>void R(),children:E?"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((D,V)=>t.jsxs("div",{children:["[",D.code,"] ",D.message]},V))})]})}const sr={ontology:"📦",profile:"🔧",extension:"🧩"};function ji(e){const r=new Map(e.map(l=>[l.name,l])),n=new Map;function a(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=a(c.derivesFrom)+1;return n.set(l,d),d}for(const l of e)a(l.name);const o=new Map;for(const l of e){const c=n.get(l.name)??0,d=o.get(c)??[];d.push(l),o.set(c,d)}const s=Math.max(...o.keys()),i=[];for(let l=0;l<=s;l++){const c=o.get(l)??[];i.push(...c.sort((d,p)=>d.name.localeCompare(p.name)))}return i}function Di(e){const r=new Map(e.map(l=>[l.name,l])),n=new Map;function a(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=a(c.extends)+1;return n.set(l,d),d}for(const l of e)a(l.name);const o=new Map;for(const l of e){const c=n.get(l.name)??0,d=o.get(c)??[];d.push(l),o.set(c,d)}const s=o.size>0?Math.max(...o.keys()):0,i=[];for(let l=0;l<=s;l++){const c=o.get(l)??[];i.push(...c.sort((d,p)=>d.name.localeCompare(p.name)))}return i}function Bi({pkgName:e,onCancel:r,onConfirm:n}){const a=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:o=>{o.target===o.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:N.sm,color:y.primary},children:"Remove ontology?"}),t.jsxs("div",{className:"mb-4",style:{fontSize:N.xs,color:y.secondary,lineHeight:1.5},children:["Removing ",t.jsx("strong",{children:a})," 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:N.xs,background:y.surfaceAlt,color:y.secondary,border:`1px solid ${y.border}`,cursor:"pointer"},children:"Cancel"}),t.jsx("button",{onClick:n,className:"px-3 py-1.5 rounded-md font-medium",style:{fontSize:N.xs,background:"#DC2626",color:"#FFFFFF",border:"none",cursor:"pointer"},children:"Remove"})]})]})})}function Ai(){const e=C(v=>v.availableOntologies),r=C(v=>v.selectedOntologies),n=C(v=>v.toggleOntologySelection),a=C(v=>v.saveOntologySelection),o=C(v=>v.selectedOntologyKind),s=C(v=>v.setSelectedOntologyKind),i=C(v=>v.setActiveView),l=C(v=>v.setOntologyViewMode),c=C(v=>v.activeView),[d,p]=u.useState(""),[f,k]=u.useState(()=>new Set(e.filter(v=>v.selected).map(v=>v.name))),[w,S]=u.useState(new Set),[x,h]=u.useState(()=>new Set(e.filter(v=>v.selected).map(v=>v.name))),m=u.useMemo(()=>{if(r.size!==x.size)return!0;for(const v of r)if(!x.has(v))return!0;return!1},[r,x]),[B,T]=u.useState(null),[A,U]=u.useState(null),[E,b]=u.useState(null),g=u.useRef(new Map),I=u.useMemo(()=>{const v=d.trim()?e.map(j=>({...j,layers:j.layers.map(P=>({...P,kinds:P.kinds.filter(Y=>Y.name.toLowerCase().includes(d.toLowerCase())||Y.label.toLowerCase().includes(d.toLowerCase())||Y.layer.toLowerCase().includes(d.toLowerCase()))})).filter(P=>P.kinds.length>0)})).filter(j=>j.layers.length>0||j.name.toLowerCase().includes(d.toLowerCase())):e;return Di(v)},[e,d]);u.useEffect(()=>{d.trim()&&(k(new Set(I.map(v=>v.name))),S(new Set(I.flatMap(v=>v.layers.map(j=>`${v.name}:${j.id}`)))))},[d,I]),u.useEffect(()=>{if(o&&g.current.has(o)){for(const v of e)for(const j of v.layers)if(j.kinds.find(P=>P.name===o)){k(P=>new Set([...P,v.name])),S(P=>new Set([...P,`${v.name}:${j.id}`]));break}setTimeout(()=>{var v;(v=g.current.get(o))==null||v.scrollIntoView({behavior:"smooth",block:"nearest"})},80)}},[o,e]);function O(v){i({type:"ontology-detail",packageName:v})}function R(v,j){i({type:"ontology-detail",packageName:v,layerId:j})}function F(v,j){s(o===v?null:v),i({type:"ontology-detail",packageName:j})}function _(v){k(j=>{const P=new Set(j);return P.has(v)?P.delete(v):P.add(v),P})}function D(v){S(j=>{const P=new Set(j);return P.has(v)?P.delete(v):P.add(v),P})}function V(v,j,P){v.stopPropagation(),P?U(j):n(j)}function G(){const v=a();v.orphanedElements&&v.orphanedElements.length>0?T(v.orphanedElements):(Qt([...r]),h(new Set(r)))}function z(){Qt([...r]),h(new Set(r)),T(null)}function K(v){zs(v),Qt([...r]),h(new Set(r)),T(null)}function W(v,j){v.preventDefault(),v.stopPropagation(),b({x:v.clientX,y:v.clientY,target:j})}function J(v,j){l("table"),i({type:"ontology-detail",packageName:v,layerId:j}),b(null)}function X(v){l("visual"),i({type:"ontology-detail",packageName:v}),b(null)}function M(v){r.has(v)?U(v):n(v),b(null)}function H(v,j){s(v),i({type:"ontology-detail",packageName:j}),b(null)}if(u.useEffect(()=>{function v(j){j.key==="Escape"&&(s(null),b(null),U(null))}return document.addEventListener("keydown",v),()=>document.removeEventListener("keydown",v)},[s]),u.useEffect(()=>{if(!E)return;function v(){b(null)}return document.addEventListener("mousedown",v),()=>document.removeEventListener("mousedown",v)},[E]),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:y.faint},children:[t.jsx("div",{className:"text-xl mb-2",children:"◉"}),t.jsx("div",{style:{fontSize:N.xs},children:"No ontology packages"}),t.jsx("div",{style:{fontSize:N.xs,opacity:.7,marginTop:"4px"},children:"Start memo-architect dev to load"})]})});const $=c.type==="ontology-detail"?c.packageName:null;return t.jsxs("div",{className:"flex flex-col flex-1 overflow-hidden",style:{fontSize:N.explorer.item},children:[t.jsx(Ci,{}),t.jsx(Ei,{}),t.jsx("div",{className:"px-3 py-2 sticky top-0 z-10",style:{background:y.surface,borderBottom:`1px solid ${y.border}`},children:t.jsx("input",{type:"text",placeholder:"Search kinds...",value:d,onChange:v=>p(v.target.value),className:"w-full px-2.5 py-1.5 rounded-lg focus:outline-none",style:{fontSize:N.explorer.search,border:`1px solid ${y.border}`,background:y.surfaceAlt,color:y.primary},onFocus:v=>v.currentTarget.style.borderColor="#2563EB",onBlur:v=>v.currentTarget.style.borderColor=y.border})}),t.jsx("div",{className:"flex-1 overflow-y-auto py-1",children:I.map(v=>{const j=r.has(v.name),P=$===v.name,Y=f.has(v.name),te=v.name.replace(/^@memo(?:architect)?\//,""),Q=sr[v.type]??sr.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:P?`${y.accent}18`:"transparent",borderLeft:P?`3px solid ${y.accentDark}`:"3px solid transparent",opacity:j?1:.55},onMouseEnter:L=>{P||(L.currentTarget.style.background="#F0F0ED")},onMouseLeave:L=>{L.currentTarget.style.background=P?`${y.accent}18`:"transparent"},onClick:L=>{L.stopPropagation(),_(v.name)},onDoubleClick:()=>O(v.name),onContextMenu:L=>W(L,{type:"package",pkgName:v.name,isSelected:j}),children:[t.jsx("input",{type:"checkbox",checked:j,onChange:L=>V(L,v.name,j),onClick:L=>L.stopPropagation(),style:{cursor:"pointer",accentColor:"#2563EB",flexShrink:0},title:j?"Deselect for project":"Select for project"}),t.jsx("span",{style:{color:y.muted,fontSize:"10px"},children:Y?"▾":"▸"}),t.jsx("span",{children:Q}),t.jsx("span",{className:"font-semibold truncate flex-1",style:{color:y.primary,fontSize:N.explorer.group},children:te}),t.jsx("span",{style:{color:y.faint},children:v.kindCount})]}),Y&&v.layers.map(L=>{const ne=ce[L.id]??L.color??y.muted,me=`${v.name}:${L.id}`,pe=w.has(me),se=ji(L.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(),D(me)},onDoubleClick:()=>R(v.name,L.id),onContextMenu:ae=>W(ae,{type:"layer",pkgName:v.name,layerId:L.id,layerLabel:L.label}),children:[t.jsx("span",{style:{color:y.faint,fontSize:"9px"},children:pe?"▾":"▸"}),t.jsx("span",{className:"w-2 h-2 rounded flex-shrink-0",style:{backgroundColor:ne}}),t.jsx("span",{className:"flex-1 truncate capitalize",style:{color:y.muted,fontSize:N.explorer.kind},children:L.label}),t.jsx("span",{style:{color:y.faint},children:L.kindCount})]}),pe&&(()=>{const ae=new Map;for(const Z of se){const le=Z.derivesFrom?ae.get(Z.derivesFrom)??0:0;ae.set(Z.name,Z.derivesFrom?le+1:0)}const Ze=Z=>{const le=o===Z.name,ee=ae.get(Z.name)??0,ie=ee===0,Se=36+ee*12;return t.jsxs("div",{ref:fe=>{fe&&g.current.set(Z.name,fe)},className:"flex items-center gap-1.5 px-3 py-0.5 cursor-pointer",style:{borderRadius:"4px",margin:`0 4px 0 ${Se}px`,background:le?`${y.accent}18`:"transparent",borderLeft:le?`2px solid ${ne}`:"2px solid transparent",transition:"background 150ms ease"},onMouseEnter:fe=>{le||(fe.currentTarget.style.background="#F0F0ED")},onMouseLeave:fe=>{fe.currentTarget.style.background=le?`${y.accent}18`:"transparent"},onClick:()=>F(Z.name,v.name),onContextMenu:fe=>W(fe,{type:"kind",kindName:Z.name,pkgName:v.name,layerId:L.id}),children:[!ie&&t.jsx("span",{style:{color:y.faint,fontSize:"9px",flexShrink:0},children:"↳"}),t.jsx("span",{className:"truncate",style:{color:le?y.accentDark:y.primary,fontWeight:ie?500:400,fontSize:N.explorer.item},children:Z.name}),Z.instanceCount>0&&t.jsxs("span",{style:{color:y.faint,fontSize:"10px"},children:["·",Z.instanceCount]})]},Z.name)},_e=[],Pe=new Map;for(const Z of se){const le=Z.group??"";Pe.has(le)||(Pe.set(le,[]),_e.push(le)),Pe.get(le).push(Z)}return _e.filter(Z=>Z!=="").length<=1?se.map(Ze):_e.map(Z=>t.jsxs("div",{children:[Z&&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:y.faint,fontSize:N.explorer.kind,letterSpacing:"0.02em"},children:Z.replace(/_/g," ")}),t.jsx("span",{style:{color:y.faint,fontSize:"10px"},children:Pe.get(Z).length})]}),Pe.get(Z).map(Ze)]},`grp:${me}:${Z||"_root"}`))})()]},me)})]},v.name)})}),m&&t.jsx("div",{className:"px-3 py-2 flex-shrink-0",style:{borderTop:`1px solid ${y.border}`,background:y.surfaceAlt},children:t.jsx("button",{onClick:G,className:"w-full py-1.5 rounded-md font-medium",style:{fontSize:N.xs,background:"#2563EB",color:"#FFFFFF",border:"none",cursor:"pointer"},children:"Save Selection"})}),A&&t.jsx(Bi,{pkgName:A,onCancel:()=>U(null),onConfirm:()=>{n(A),U(null)}}),B&&t.jsx(Si,{orphans:B,onKeep:z,onRemap:K,onCancel:()=>T(null)}),E&&t.jsx(wi,{x:E.x,y:E.y,target:E.target,onViewVisual:X,onViewTable:J,onToggleSelection:M,onViewProperties:H,onClose:()=>b(null)})]})}function Fi(){const e=C(l=>l.model),r=C(l=>l.recentlyVisited),n=C(l=>l.selectElement),a=u.useMemo(()=>e?r.map(l=>e.elements[l]).filter(Boolean):[],[r,e]),o=a,s="Recently visited",i=a.length>0?`${a.length} item${a.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 ${y.border}`},children:[t.jsx("div",{style:{fontSize:"10px",fontWeight:700,textTransform:"uppercase",letterSpacing:"0.08em",color:y.muted,marginBottom:"2px"},children:s}),t.jsx("div",{style:{fontSize:"11px",color:y.muted,opacity:.8},children:i})]}),t.jsx("div",{className:"flex-1 overflow-y-auto",style:{padding:"4px 0"},children:o.length===0?t.jsx("div",{style:{padding:"24px 16px",textAlign:"center",fontSize:"12px",color:y.muted,lineHeight:"1.6"},children:"Nothing visited yet. Use Model Explorer or Viewpoints to begin."}):o.map(l=>{const c=ce[l.layer]||y.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=y.surfaceAlt,onMouseLeave:d=>d.currentTarget.style.background="transparent",children:t.jsxs("div",{style:{flex:1,minWidth:0},children:[t.jsx("div",{style:{fontSize:N.explorer.item,fontWeight:500,color:y.primary,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:l.name}),t.jsxs("div",{style:{fontSize:"10px",color:y.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 Ni({element:e,selected:r=!1,fontSize:n=N.explorer.item,fontWeight:a}){const o=e.shortId??"ID-PENDING";return t.jsxs("span",{className:"truncate flex-1",style:{color:r?y.accentDark:y.primary,fontSize:n,fontWeight:a??(r?500:400)},title:`${o} ${e.name}`,children:[t.jsxs("span",{style:{color:y.muted,fontWeight:500,marginRight:"4px"},children:["[",o,"]"]}),e.name]})}function xn({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:N.explorer.count,fontWeight:600,minWidth:"20px",textAlign:"center"},title:n,children:e})}const Ti=`---
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
- `,Mi=`---
61
+ `,Ri=`---
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
- `,_i=`---
128
+ `,Ii=`---
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
- `,Pi=`---
208
+ `,Mi=`---
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
- `,Oi=`---
259
+ `,_i=`---
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
- `,Ui=`---
323
+ `,Pi=`---
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
- `,zi=`---
380
+ `,Oi=`---
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
- `,qi=`---
491
+ `,Ui=`---
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
- `,Li=`---
541
+ `,zi=`---
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
- `,Vi=`---
622
+ `,qi=`---
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
- `,$i=`---
711
+ `,Li=`---
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
- `,Wi=`---
796
+ `,Vi=`---
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
- `,Hi=`---
862
+ `,$i=`---
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
- `,Ki=`---
926
+ `,Wi=`---
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
- `,Gi=`---
1009
+ `,Hi=`---
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
- `,Yi=`---
1109
+ `,Ki=`---
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
- `,Ji=`---
1187
+ `,Gi=`---
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
- `,Xi=`---
1357
+ `,Yi=`---
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
- `,Qi=`---
1397
+ `,Ji=`---
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
- `,Zi=`---
1466
+ `,Xi=`---
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
- `,el=`---
1534
+ `,Qi=`---
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
- `,tl=`---
1650
+ `,Zi=`---
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
- `,nl=`---
1718
+ `,el=`---
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
- `,rl=`---
1827
+ `,tl=`---
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
- `,al=`---
1906
+ `,nl=`---
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
- `,ol=`---
2078
+ `,rl=`---
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
- `,sl=`---
2189
+ `,al=`---
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
- `,il=`---
2256
+ `,ol=`---
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
- `,ll=`---
2303
+ `,sl=`---
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
- `,dl=`---
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
- `,cl=`---
2465
+ `,ll=`---
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
- `,ul=`---
2546
+ `,dl=`---
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
- `,pl=`---
2607
+ `,cl=`---
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
- `,ml=`---
2681
+ `,ul=`---
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
- `,fl=`---
2742
+ `,pl=`---
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
- `,hl=`---
2858
+ `,ml=`---
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
- `,yl=`---
2928
+ `,fl=`---
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
- `,gl=`---
3093
+ `,hl=`---
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
- `,xl=`---
3144
+ `,yl=`---
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
- `,bl=`---
3195
+ `,gl=`---
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
- `,vl=`---
3364
+ `,xl=`---
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
- `,wl=`---
3465
+ `,bl=`---
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
- `,kl=`---
3481
+ `,vl=`---
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
- `,Sl=`---
3496
+ `,wl=`---
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
- `,El=`---
3512
+ `,kl=`---
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
- `,Cl=`---
3523
+ `,Sl=`---
3524
3524
  id: sad-system
3525
3525
  title: System Architecture Description
3526
3526
  standard: ISO/IEC/IEEE 42010:2022
@@ -3597,7 +3597,7 @@ Runtime behaviour: the components executing in the system and the connectors thr
3597
3597
  #### 3.2.1 Runtime Environments
3598
3598
 
3599
3599
  \`\`\`memo-query
3600
- kind: [RuntimeEnvironment, DeploymentUnit]
3600
+ kind: [RuntimeEnvironment, SoftwareDeploymentUnit]
3601
3601
  display: table
3602
3602
  columns: name, layer, doc
3603
3603
  sort: name
@@ -3623,12 +3623,12 @@ Software elements mapped to their execution environments.
3623
3623
  #### 3.3.1 Deployment Units
3624
3624
 
3625
3625
  \`\`\`memo-query
3626
- kind: DeploymentUnit
3626
+ kind: SoftwareDeploymentUnit
3627
3627
  traverse: outgoing deploysTo
3628
3628
  display: table
3629
3629
  columns: name, kind, layer, doc
3630
3630
  sort: name
3631
- empty: "No deployments defined. Add DeploysTo links from DeploymentUnit to the processing node."
3631
+ empty: "No deployments defined. Add DeploysTo links from SoftwareDeploymentUnit to the processing node."
3632
3632
  \`\`\`
3633
3633
 
3634
3634
  ---
@@ -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
- `,jl=`---
3696
+ `,El=`---
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
- `,Dl=`---
3783
+ `,Cl=`---
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
- `,Bl=`---
3908
+ `,jl=`---
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
- `,Al=Object.assign({"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/21cfr820/change-record.md":Ii,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/21cfr820/design-input.md":Mi,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/21cfr820/design-output.md":_i,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/21cfr820/design-review.md":Pi,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/21cfr820/design-validation.md":Oi,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/21cfr820/design-verification.md":Ui,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/21cfr820/dhf-index.md":zi,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/21cfr820/transfer-plan.md":qi,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/21cfr820/user-needs.md":Li,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/21cfr820/vv-plan.md":Vi,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/21cfr820/vv-report.md":$i,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/fda-cybersecurity/incident-response.md":Wi,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/fda-cybersecurity/postmarket-surveillance.md":Hi,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/fda-cybersecurity/security-arch.md":Ki,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/fda-cybersecurity/threat-model.md":Gi,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/fda-cybersecurity/vuln-assessment.md":Yi,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iec-60601/hrs.md":Ji,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iec-62304/change-control.md":Xi,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iec-62304/detailed-design.md":Qi,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iec-62304/integration-test.md":Zi,"../../../../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":tl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iec-62304/sdp.md":nl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iec-62304/soup.md":rl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iec-62304/srs.md":al,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iec-62304/sw-traceability.md":ol,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iec-62304/system-test.md":sl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iec-62366/formative-eval.md":il,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iec-62366/summative-eval.md":ll,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iec-62366/task-analysis.md":dl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iec-62366/ue-plan.md":cl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iec-62366/ui-spec.md":ul,"../../../../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":ml,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iso-14971/fmea.md":fl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iso-14971/fta.md":hl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iso-14971/har.md":yl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iso-14971/risk-benefit.md":gl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iso-14971/risk-matrix.md":xl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iso-14971/rmp.md":bl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iso-14971/rmr.md":vl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/shared/snippets/approval-block.md":wl,"../../../../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":Sl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/shared/snippets/revision-history-table.md":El,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/system/sad.md":Cl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/system/standards-checklist.md":jl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/system/standards-traceability.md":Dl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/system/syrs.md":Bl}),mt={};for(const[e,r]of Object.entries(Al)){const n=e.match(/templates\/dhf\/(.+)\.md$/);n&&(mt[n[1]]=r)}Object.keys(mt).length;function Fl(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 Nl(e,r){const n=e.match(new RegExp(`^${r}:\\s*\\[(.*)\\]$`,"m"));return n?n[1].split(",").map(a=>a.trim().replace(/^["']|["']$/g,"")).filter(Boolean):[]}function Tl(){const e=[];for(const[r,n]of Object.entries(mt)){const a=r.indexOf("/");if(a<0)continue;const o=r.slice(0,a);if(o==="shared")continue;const s=Fl(n);e.push({id:r,directory:o,title:sr(s,"title"),standard:sr(s,"standard"),clauses:Nl(s,"clauses")})}return e.sort((r,n)=>r.id.localeCompare(n.id))}function Rl(e){return e.replace(/^---[\s\S]*?---\n?/,"")}function la(e){return e.replace(/\{\{include:([^}]+)\}\}/g,(r,n)=>{const a=n.replace(/\.md$/,""),o=mt[a];return o?la(Rl(o)):`<!-- [include: ${n} — not found] -->`})}function Il(e){const r=mt[e];return r?la(r):null}const gn="#6B7280",ir=["#dc2626","#2563eb","#7c3aed","#0891b2","#0d9488","#4f46e5","#059669","#b45309","#d97706"];function Ml(e){let r=0;for(let n=0;n<e.length;n++)r=r*31+e.charCodeAt(n)>>>0;return ir[r%ir.length]}function _l(e,r){const n=new Map;for(const s of r)n.set(s,(n.get(s)??0)+1);const a=[...n.entries()].sort((s,i)=>i[1]-s[1]);return a.length===1||a.length>1&&a[0][1]>a[1][1]?a[0][0].split(":")[0].trim():e.split("-").map(s=>s.charAt(0).toUpperCase()+s.slice(1)).join(" ")}function nt(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 Pl(){const e=new Map;for(const r of Tl()){e.has(r.directory)||e.set(r.directory,{designations:[],templates:[]});const n=e.get(r.directory);r.standard&&n.designations.push(r.standard);const a=r.title??r.id.slice(r.id.indexOf("/")+1);n.templates.push({id:r.id,title:a,prefix:nt(a)})}return[...e.entries()].sort(([r],[n])=>r.localeCompare(n)).map(([r,{designations:n,templates:a}])=>({id:r,label:_l(r,n),color:Ml(r),templates:a.sort((o,s)=>o.title.localeCompare(s.title))}))}const qe=Pl();function Ol(e){var r;return((r=qe.find(n=>n.label===e))==null?void 0:r.color)??gn}const Ul={position:"fixed",inset:0,zIndex:9999,display:"flex",alignItems:"center",justifyContent:"center",background:"rgba(0,0,0,0.4)"},zl={background:"#fff",borderRadius:"12px",padding:"20px",width:"460px",maxHeight:"560px",display:"flex",flexDirection:"column",boxShadow:"0 20px 60px rgba(0,0,0,0.2)"},lr=["Category","Template","Confirm"];function en(e,r=1e4){const{registerLlmRequest:n}=E.getState(),a=`dhf-${Date.now()}-${Math.random().toString(36).slice(2)}`;return new Promise((o,s)=>{n(a,o,s),e(a),setTimeout(()=>s(new Error("Request timed out.")),r)})}function ql({initialGroupId:e,existingDocs:r,numberingPrefix:n,onCreate:a,onClose:o}){const s=E(j=>j.connected),i=qe.find(j=>j.id===e)??null,[l,c]=u.useState(i?1:0),[d,p]=u.useState(i),[f,b]=u.useState(""),[w,S]=u.useState({builtIn:new Set,repo:new Set,blank:!1}),[g,h]=u.useState("Untitled Document"),[m,B]=u.useState(null),[T,D]=u.useState(null),[A,C]=u.useState(!1),[x,v]=u.useState(""),[_,O]=u.useState(""),[P,M]=u.useState({}),[L,F]=u.useState(!1),[$,Y]=u.useState(null),R=d===null&&l>0?f.trim()||"Other":(d==null?void 0:d.label)??"",U=(d==null?void 0:d.color)??gn;u.useEffect(()=>{l!==1||m!==null||!s||en(j=>Is(j)).then(B).catch(j=>D((j==null?void 0:j.message)??"Could not list repository files."))},[l,m,s]);const W=u.useMemo(()=>{const j=[];for(const I of(d==null?void 0:d.templates)??[])w.builtIn.has(I.id)&&j.push({key:I.id,defaultTitle:I.title,prefix:I.prefix,templateId:I.id});for(const I of w.repo){const K=m==null?void 0:m.find(te=>te.path===I),Q=(K==null?void 0:K.title)??I.split("/").pop().replace(/\.md$/,"");j.push({key:`repo:${I}`,defaultTitle:Q,prefix:nt(Q),templateId:`repo:${I}`})}if(w.blank&&j.push({key:"blank",defaultTitle:g.trim()||"Untitled Document",prefix:nt(g),templateId:"blank"}),A&&x.trim()){const I=x.trim();j.push({key:"new-template",defaultTitle:I,prefix:nt(I),templateId:"new-template"})}return j},[w,d,m,g,A,x]),V=j=>P[j.key]??j.defaultTitle,X=j=>j.templateId==="blank"||j.templateId==="new-template"||j.templateId.startsWith("repo:")?nt(V(j)):j.prefix,ee=u.useMemo(()=>{const j=new Map;return W.map(I=>{const K=`${n}-${X(I)}-`,Q=r.filter(H=>H.id.startsWith(K)).length,te=j.get(K)??0;return j.set(K,te+1),`${K}${String(Q+te+1).padStart(3,"0")}`})},[W,P,r,n]);async function G(){F(!0),Y(null);try{const j=[];for(const I of W){let K=null;if(I.templateId.startsWith("repo:"))K=await en(Q=>Ms(Q,I.templateId.slice(5)));else if(I.templateId==="new-template"){const Q=_.trim()||`# ${V(I)}
4036
+ `,Dl=Object.assign({"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/21cfr820/change-record.md":Ti,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/21cfr820/design-input.md":Ri,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/21cfr820/design-output.md":Ii,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/21cfr820/design-review.md":Mi,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/21cfr820/design-validation.md":_i,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/21cfr820/design-verification.md":Pi,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/21cfr820/dhf-index.md":Oi,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/21cfr820/transfer-plan.md":Ui,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/21cfr820/user-needs.md":zi,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/21cfr820/vv-plan.md":qi,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/21cfr820/vv-report.md":Li,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/fda-cybersecurity/incident-response.md":Vi,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/fda-cybersecurity/postmarket-surveillance.md":$i,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/fda-cybersecurity/security-arch.md":Wi,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/fda-cybersecurity/threat-model.md":Hi,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/fda-cybersecurity/vuln-assessment.md":Ki,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iec-60601/hrs.md":Gi,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iec-62304/change-control.md":Yi,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iec-62304/detailed-design.md":Ji,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iec-62304/integration-test.md":Xi,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iec-62304/sad.md":Qi,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iec-62304/sbom.md":Zi,"../../../../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":tl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iec-62304/srs.md":nl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iec-62304/sw-traceability.md":rl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iec-62304/system-test.md":al,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iec-62366/formative-eval.md":ol,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iec-62366/summative-eval.md":sl,"../../../../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":ll,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iec-62366/ui-spec.md":dl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iec-62366/urra.md":cl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iec-62366/use-spec.md":ul,"../../../../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":ml,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iso-14971/har.md":fl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iso-14971/risk-benefit.md":hl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iso-14971/risk-matrix.md":yl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iso-14971/rmp.md":gl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/iso-14971/rmr.md":xl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/shared/snippets/approval-block.md":bl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/shared/snippets/document-control-header.md":vl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/shared/snippets/references-section.md":wl,"../../../../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":Sl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/system/standards-checklist.md":El,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/system/standards-traceability.md":Cl,"../../../../node_modules/@memoarchitect/ontology/src/artifacts/templates/dhf/system/syrs.md":jl}),gt={};for(const[e,r]of Object.entries(Dl)){const n=e.match(/templates\/dhf\/(.+)\.md$/);n&&(gt[n[1]]=r)}Object.keys(gt).length;function Bl(e){const r=e.match(/^---\r?\n([\s\S]*?)\r?\n---/);return r?r[1]:""}function ir(e,r){const n=e.match(new RegExp(`^${r}:\\s*(.+)$`,"m"));if(n)return n[1].trim().replace(/^["']|["']$/g,"")||void 0}function Al(e,r){const n=e.match(new RegExp(`^${r}:\\s*\\[(.*)\\]$`,"m"));return n?n[1].split(",").map(a=>a.trim().replace(/^["']|["']$/g,"")).filter(Boolean):[]}function Fl(){const e=[];for(const[r,n]of Object.entries(gt)){const a=r.indexOf("/");if(a<0)continue;const o=r.slice(0,a);if(o==="shared")continue;const s=Bl(n);e.push({id:r,directory:o,title:ir(s,"title"),standard:ir(s,"standard"),clauses:Al(s,"clauses")})}return e.sort((r,n)=>r.id.localeCompare(n.id))}function Nl(e){return e.replace(/^---[\s\S]*?---\n?/,"")}function ia(e){return e.replace(/\{\{include:([^}]+)\}\}/g,(r,n)=>{const a=n.replace(/\.md$/,""),o=gt[a];return o?ia(Nl(o)):`<!-- [include: ${n} — not found] -->`})}function Tl(e){const r=gt[e];return r?ia(r):null}const bn="#6B7280",lr=["#dc2626","#2563eb","#7c3aed","#0891b2","#0d9488","#4f46e5","#059669","#b45309","#d97706"];function Rl(e){let r=0;for(let n=0;n<e.length;n++)r=r*31+e.charCodeAt(n)>>>0;return lr[r%lr.length]}function Il(e,r){const n=new Map;for(const s of r)n.set(s,(n.get(s)??0)+1);const a=[...n.entries()].sort((s,i)=>i[1]-s[1]);return a.length===1||a.length>1&&a[0][1]>a[1][1]?a[0][0].split(":")[0].trim():e.split("-").map(s=>s.charAt(0).toUpperCase()+s.slice(1)).join(" ")}function st(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 Ml(){const e=new Map;for(const r of Fl()){e.has(r.directory)||e.set(r.directory,{designations:[],templates:[]});const n=e.get(r.directory);r.standard&&n.designations.push(r.standard);const a=r.title??r.id.slice(r.id.indexOf("/")+1);n.templates.push({id:r.id,title:a,prefix:st(a)})}return[...e.entries()].sort(([r],[n])=>r.localeCompare(n)).map(([r,{designations:n,templates:a}])=>({id:r,label:Il(r,n),color:Rl(r),templates:a.sort((o,s)=>o.title.localeCompare(s.title))}))}const $e=Ml();function _l(e){var r;return((r=$e.find(n=>n.label===e))==null?void 0:r.color)??bn}const Pl={position:"fixed",inset:0,zIndex:9999,display:"flex",alignItems:"center",justifyContent:"center",background:"rgba(0,0,0,0.4)"},Ol={background:"#fff",borderRadius:"12px",padding:"20px",width:"460px",maxHeight:"560px",display:"flex",flexDirection:"column",boxShadow:"0 20px 60px rgba(0,0,0,0.2)"},dr=["Category","Template","Confirm"];function rn(e,r=1e4){const{registerLlmRequest:n}=C.getState(),a=`dhf-${Date.now()}-${Math.random().toString(36).slice(2)}`;return new Promise((o,s)=>{n(a,o,s),e(a),setTimeout(()=>s(new Error("Request timed out.")),r)})}function Ul({initialGroupId:e,existingDocs:r,numberingPrefix:n,onCreate:a,onClose:o}){const s=C(j=>j.connected),i=$e.find(j=>j.id===e)??null,[l,c]=u.useState(i?1:0),[d,p]=u.useState(i),[f,k]=u.useState(""),[w,S]=u.useState({builtIn:new Set,repo:new Set,blank:!1}),[x,h]=u.useState("Untitled Document"),[m,B]=u.useState(null),[T,A]=u.useState(null),[U,E]=u.useState(!1),[b,g]=u.useState(""),[I,O]=u.useState(""),[R,F]=u.useState({}),[_,D]=u.useState(!1),[V,G]=u.useState(null),K=d===null&&l>0?f.trim()||"Other":(d==null?void 0:d.label)??"",W=(d==null?void 0:d.color)??bn;u.useEffect(()=>{l!==1||m!==null||!s||rn(j=>Ts(j)).then(B).catch(j=>A((j==null?void 0:j.message)??"Could not list repository files."))},[l,m,s]);const J=u.useMemo(()=>{const j=[];for(const P of(d==null?void 0:d.templates)??[])w.builtIn.has(P.id)&&j.push({key:P.id,defaultTitle:P.title,prefix:P.prefix,templateId:P.id});for(const P of w.repo){const Y=m==null?void 0:m.find(Q=>Q.path===P),te=(Y==null?void 0:Y.title)??P.split("/").pop().replace(/\.md$/,"");j.push({key:`repo:${P}`,defaultTitle:te,prefix:st(te),templateId:`repo:${P}`})}if(w.blank&&j.push({key:"blank",defaultTitle:x.trim()||"Untitled Document",prefix:st(x),templateId:"blank"}),U&&b.trim()){const P=b.trim();j.push({key:"new-template",defaultTitle:P,prefix:st(P),templateId:"new-template"})}return j},[w,d,m,x,U,b]),X=j=>R[j.key]??j.defaultTitle,M=j=>j.templateId==="blank"||j.templateId==="new-template"||j.templateId.startsWith("repo:")?st(X(j)):j.prefix,H=u.useMemo(()=>{const j=new Map;return J.map(P=>{const Y=`${n}-${M(P)}-`,te=r.filter(L=>L.id.startsWith(Y)).length,Q=j.get(Y)??0;return j.set(Y,Q+1),`${Y}${String(te+Q+1).padStart(3,"0")}`})},[J,R,r,n]);async function $(){D(!0),G(null);try{const j=[];for(const P of J){let Y=null;if(P.templateId.startsWith("repo:"))Y=await rn(te=>Rs(te,P.templateId.slice(5)));else if(P.templateId==="new-template"){const te=I.trim()||`# ${X(P)}
4037
4037
 
4038
4038
  _[TODO: Add template content]_
4039
- `,te=await en(H=>_s(H,V(I),Q));j.push({title:V(I),prefix:X(I),templateId:`repo:${te.path}`,groupLabel:R,content:Q});continue}else I.templateId==="blank"&&(K=`# ${V(I)}
4039
+ `,Q=await rn(L=>Is(L,X(P),te));j.push({title:X(P),prefix:M(P),templateId:`repo:${Q.path}`,groupLabel:K,content:te});continue}else P.templateId==="blank"&&(Y=`# ${X(P)}
4040
4040
 
4041
4041
  _[TODO: Add content]_
4042
- `);j.push({title:V(I),prefix:X(I),templateId:I.templateId,groupLabel:R,content:K})}a(j)}catch(j){Y((j==null?void 0:j.message)??"Could not read template."),F(!1)}}const k=l===0?!0:l===1?W.length>0:W.length>0&&!L;return t.jsx("div",{style:Ul,onClick:j=>{j.target===j.currentTarget&&o()},children:t.jsxs("div",{style:zl,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:o,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:lr.map((j,I)=>t.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"5px",fontSize:"11px",fontWeight:I===l?700:500,color:I===l?"#1B3A4B":I<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:I===l?"#1B3A4B":I<l?"#059669":"#D1D5DB"},children:I<l?"✓":I+1}),j,I<lr.length-1&&t.jsx("span",{style:{color:"#D1D5DB"},children:"—"})]},j))}),l===0&&t.jsxs("div",{style:{flex:1,overflowY:"auto",display:"flex",flexDirection:"column",gap:"4px"},children:[qe.map(j=>t.jsx(dr,{label:j.label,color:j.color,detail:`${j.templates.length} meMO templates`,selected:(d==null?void 0:d.id)===j.id,onClick:()=>{p(j),S({builtIn:new Set,repo:new Set,blank:!1})}},j.id)),t.jsx(dr,{label:"Other",color:gn,detail:"Custom category — blank or repository template",selected:d===null&&f!=="",onClick:()=>{p(null),b(f||"Other"),S({builtIn:new Set,repo:new Set,blank:!1})}}),d===null&&f!==""&&t.jsx("input",{value:f,onChange:j=>b(j.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:U,display:"inline-block"}}),t.jsx("strong",{style:{color:"#1B3A4B"},children:R}),t.jsx("span",{children:"— pick one or more sources"})]}),d&&d.templates.length>0&&t.jsx(tn,{title:"meMO templates",hint:"Prefilled sections and model queries",children:d.templates.map(j=>t.jsx(St,{label:j.title,sub:j.id,color:U,checked:w.builtIn.has(j.id),onToggle:()=>S(I=>{const K=new Set(I.builtIn);return K.has(j.id)?K.delete(j.id):K.add(j.id),{...I,builtIn:K}})},j.id))}),t.jsx(tn,{title:"Blank document",hint:"Start from an empty page",children:t.jsx(St,{label:w.blank?"":"Blank document",color:U,checked:w.blank,onToggle:()=>S(j=>({...j,blank:!j.blank})),children:w.blank&&t.jsx("input",{value:g,onChange:j=>h(j.target.value),onClick:j=>j.stopPropagation(),style:{flex:1,padding:"4px 8px",border:"1px solid #D1D5DB",borderRadius:"5px",fontSize:"12px",color:"#1B3A4B",outline:"none"}})})}),t.jsxs(tn,{title:"Project templates",hint:"Reusable templates in dhf/templates/",children:[!s&&t.jsx(Xe,{text:"Dev server not connected — project templates unavailable."}),s&&T&&t.jsx(Xe,{text:T,error:!0}),s&&!T&&m===null&&t.jsx(Xe,{text:"Loading project templates…"}),s&&(m==null?void 0:m.length)===0&&t.jsx(Xe,{text:"No project templates yet."}),s&&(m==null?void 0:m.map(j=>t.jsx(St,{label:j.title,sub:j.path,color:U,checked:w.repo.has(j.path),onToggle:()=>S(I=>{const K=new Set(I.repo);return K.has(j.path)?K.delete(j.path):K.add(j.path),{...I,repo:K}})},j.path))),t.jsx(St,{label:"Add new template",sub:"Save and reuse in this project",color:U,checked:A,disabled:!s,disabledNote:s?void 0:"server unavailable",onToggle:()=>C(j=>!j)}),A&&t.jsxs("div",{style:{marginLeft:"22px",display:"flex",flexDirection:"column",gap:"6px"},children:[t.jsx("input",{value:x,onChange:j=>v(j.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:_,onChange:j=>O(j.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:[W.length," document",W.length===1?"":"s"," will be created in",t.jsxs("strong",{style:{color:"#1B3A4B"},children:[" ",R]})," and saved to ",t.jsx("code",{style:{background:"#F3F4F6",padding:"0 4px",borderRadius:"3px",fontSize:"11px"},children:"dhf/documents/"}),":"]}),W.map((j,I)=>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:U,whiteSpace:"nowrap"},children:ee[I]}),t.jsx("input",{value:V(j),onChange:K=>M(Q=>({...Q,[j.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:j.templateId==="blank"?"blank":j.templateId==="new-template"?"new template":j.templateId.startsWith("repo:")?"project":"meMO"})]},j.key)),$&&t.jsx(Xe,{text:$,error:!0})]}),t.jsxs("div",{style:{display:"flex",gap:"8px",justifyContent:"flex-end",marginTop:"16px"},children:[l>0&&t.jsx("button",{onClick:()=>c(j=>j-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:o,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(j=>j+1),disabled:!k,style:{padding:"7px 16px",borderRadius:"6px",border:"none",background:k?"#1B3A4B":"#E5E7EB",color:k?"#fff":"#9CA3AF",fontSize:"13px",fontWeight:600,cursor:k?"pointer":"default"},children:"Next →"}):t.jsx("button",{onClick:G,disabled:!k,style:{padding:"7px 16px",borderRadius:"6px",border:"none",background:k?U:"#E5E7EB",color:k?"#fff":"#9CA3AF",fontSize:"13px",fontWeight:600,cursor:k?"pointer":"default"},children:L?"Creating…":`Create ${W.length>0?`(${W.length})`:""}`})]})]})})}function dr({label:e,color:r,detail:n,selected:a,onClick:o}){return t.jsxs("button",{onClick:o,style:{display:"flex",alignItems:"center",gap:"10px",padding:"9px 10px",borderRadius:"6px",border:`1px solid ${a?r:"#E5E7EB"}`,background:a?`${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 tn({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 St({label:e,sub:r,color:n,checked:a,disabled:o,disabledNote:s,onToggle:i,children:l}){return t.jsxs("label",{style:{display:"flex",alignItems:"center",gap:"10px",padding:"6px 8px",borderRadius:"6px",cursor:o?"not-allowed":"pointer",background:a?`${n}10`:"transparent",opacity:o?.45:1},children:[t.jsx("input",{type:"checkbox",checked:a,disabled:o,onChange:()=>!o&&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}),o&&s&&t.jsx("span",{style:{fontSize:"10px",color:"#9CA3AF"},children:s})]})}function Xe({text:e,error:r}){return t.jsx("div",{style:{fontSize:"11px",color:r?"#DC2626":"#9CA3AF",fontStyle:"italic",padding:"4px 8px"},children:e})}const cr={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 Ll(e){return e.length<=3?e.toUpperCase():(e[0]+e.slice(1).replace(/[aeiouAEIOU]/g,"")).slice(0,3).toUpperCase()}function Vl(e){if(cr[e])return cr[e];const r=e.replace(/([A-Z])/g," $1").trim().split(" ").filter(Boolean);return r.length===0?"EL":r.map(Ll).join("-")}function $l(e){return e.split("-")[0]}function Wl(e){return`/catalog/${e.split("-")[0]}/${e}`}function Hl(e){return`/catalog/${e}`}function da(e,r){return`/diagrams/${e.toLowerCase().replace(/\s+/g,"-")}/${encodeURIComponent(r)}`}const Kl=u.lazy(()=>ae(()=>import("./ScenarioEditor-bB4iBbgO.js"),__vite__mapDeps([0,1,2])).then(e=>({default:e.ScenarioEditor})));function Re({expanded:e,size:r=14,color:n=y.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 ur(){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 Le({open:e,color:r=y.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 xn({color:e=y.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 Ie(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 Gl({elementId:e,currentKind:r,onClose:n}){const a=E(d=>d.updateElementKind),o=E(d=>d.model),[s,i]=u.useState(r),l=u.useRef(null),c=u.useMemo(()=>{var d;return(((d=o==null?void 0:o.registries)==null?void 0:d.kinds)??[]).filter(p=>!p.isAbstract).map(p=>p.name).sort((p,f)=>p.localeCompare(f))},[o]);return u.useEffect(()=>{const d=p=>{l.current&&!l.current.contains(p.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:()=>{a(e,s),n()},className:"px-3 py-1.5 rounded font-medium",style:{fontSize:"12px",color:"#FFFFFF",background:"#2DD4A8"},children:"Apply"})]})]})}function Yl({menu:e,onClose:r}){var g;const n=E(h=>h.model),a=E(h=>h.selectElement),o=E(h=>h.addElement),s=E(h=>h.moveElementToPackage),i=E(h=>h.createPackage),l=E(h=>h.renamePackage),c=E(h=>h.deletePackage),d=E(h=>h.deleteModelElement),[p,f]=u.useState(null),b=u.useRef(null);if(u.useEffect(()=>{const h=m=>{b.current&&!b.current.contains(m.target)&&r()};return document.addEventListener("mousedown",h),()=>document.removeEventListener("mousedown",h)},[r]),!n)return null;let w="",S=[];if(e.type==="element"&&e.elementId){const h=n.elements[e.elementId];if(!h)return null;w=h.name;const m=!(((g=n.registries)==null?void 0:g.kinds)??[]).some(B=>B.name===h.kind);S=[{label:"View details",action:()=>a(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&&Ie(s(h.id,B.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
+ `);j.push({title:X(P),prefix:M(P),templateId:P.templateId,groupLabel:K,content:Y})}a(j)}catch(j){G((j==null?void 0:j.message)??"Could not read template."),D(!1)}}const v=l===0?!0:l===1?J.length>0:J.length>0&&!_;return t.jsx("div",{style:Pl,onClick:j=>{j.target===j.currentTarget&&o()},children:t.jsxs("div",{style:Ol,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:o,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:dr.map((j,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}),j,P<dr.length-1&&t.jsx("span",{style:{color:"#D1D5DB"},children:"—"})]},j))}),l===0&&t.jsxs("div",{style:{flex:1,overflowY:"auto",display:"flex",flexDirection:"column",gap:"4px"},children:[$e.map(j=>t.jsx(cr,{label:j.label,color:j.color,detail:`${j.templates.length} meMO templates`,selected:(d==null?void 0:d.id)===j.id,onClick:()=>{p(j),S({builtIn:new Set,repo:new Set,blank:!1})}},j.id)),t.jsx(cr,{label:"Other",color:bn,detail:"Custom category — blank or repository template",selected:d===null&&f!=="",onClick:()=>{p(null),k(f||"Other"),S({builtIn:new Set,repo:new Set,blank:!1})}}),d===null&&f!==""&&t.jsx("input",{value:f,onChange:j=>k(j.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:W,display:"inline-block"}}),t.jsx("strong",{style:{color:"#1B3A4B"},children:K}),t.jsx("span",{children:"— pick one or more sources"})]}),d&&d.templates.length>0&&t.jsx(an,{title:"meMO templates",hint:"Prefilled sections and model queries",children:d.templates.map(j=>t.jsx(Dt,{label:j.title,sub:j.id,color:W,checked:w.builtIn.has(j.id),onToggle:()=>S(P=>{const Y=new Set(P.builtIn);return Y.has(j.id)?Y.delete(j.id):Y.add(j.id),{...P,builtIn:Y}})},j.id))}),t.jsx(an,{title:"Blank document",hint:"Start from an empty page",children:t.jsx(Dt,{label:w.blank?"":"Blank document",color:W,checked:w.blank,onToggle:()=>S(j=>({...j,blank:!j.blank})),children:w.blank&&t.jsx("input",{value:x,onChange:j=>h(j.target.value),onClick:j=>j.stopPropagation(),style:{flex:1,padding:"4px 8px",border:"1px solid #D1D5DB",borderRadius:"5px",fontSize:"12px",color:"#1B3A4B",outline:"none"}})})}),t.jsxs(an,{title:"Project templates",hint:"Reusable templates in dhf/templates/",children:[!s&&t.jsx(nt,{text:"Dev server not connected — project templates unavailable."}),s&&T&&t.jsx(nt,{text:T,error:!0}),s&&!T&&m===null&&t.jsx(nt,{text:"Loading project templates…"}),s&&(m==null?void 0:m.length)===0&&t.jsx(nt,{text:"No project templates yet."}),s&&(m==null?void 0:m.map(j=>t.jsx(Dt,{label:j.title,sub:j.path,color:W,checked:w.repo.has(j.path),onToggle:()=>S(P=>{const Y=new Set(P.repo);return Y.has(j.path)?Y.delete(j.path):Y.add(j.path),{...P,repo:Y}})},j.path))),t.jsx(Dt,{label:"Add new template",sub:"Save and reuse in this project",color:W,checked:U,disabled:!s,disabledNote:s?void 0:"server unavailable",onToggle:()=>E(j=>!j)}),U&&t.jsxs("div",{style:{marginLeft:"22px",display:"flex",flexDirection:"column",gap:"6px"},children:[t.jsx("input",{value:b,onChange:j=>g(j.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:I,onChange:j=>O(j.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:[J.length," document",J.length===1?"":"s"," will be created in",t.jsxs("strong",{style:{color:"#1B3A4B"},children:[" ",K]})," and saved to ",t.jsx("code",{style:{background:"#F3F4F6",padding:"0 4px",borderRadius:"3px",fontSize:"11px"},children:"dhf/documents/"}),":"]}),J.map((j,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:W,whiteSpace:"nowrap"},children:H[P]}),t.jsx("input",{value:X(j),onChange:Y=>F(te=>({...te,[j.key]:Y.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:j.templateId==="blank"?"blank":j.templateId==="new-template"?"new template":j.templateId.startsWith("repo:")?"project":"meMO"})]},j.key)),V&&t.jsx(nt,{text:V,error:!0})]}),t.jsxs("div",{style:{display:"flex",gap:"8px",justifyContent:"flex-end",marginTop:"16px"},children:[l>0&&t.jsx("button",{onClick:()=>c(j=>j-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:o,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(j=>j+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:$,disabled:!v,style:{padding:"7px 16px",borderRadius:"6px",border:"none",background:v?W:"#E5E7EB",color:v?"#fff":"#9CA3AF",fontSize:"13px",fontWeight:600,cursor:v?"pointer":"default"},children:_?"Creating…":`Create ${J.length>0?`(${J.length})`:""}`})]})]})})}function cr({label:e,color:r,detail:n,selected:a,onClick:o}){return t.jsxs("button",{onClick:o,style:{display:"flex",alignItems:"center",gap:"10px",padding:"9px 10px",borderRadius:"6px",border:`1px solid ${a?r:"#E5E7EB"}`,background:a?`${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 an({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 Dt({label:e,sub:r,color:n,checked:a,disabled:o,disabledNote:s,onToggle:i,children:l}){return t.jsxs("label",{style:{display:"flex",alignItems:"center",gap:"10px",padding:"6px 8px",borderRadius:"6px",cursor:o?"not-allowed":"pointer",background:a?`${n}10`:"transparent",opacity:o?.45:1},children:[t.jsx("input",{type:"checkbox",checked:a,disabled:o,onChange:()=>!o&&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}),o&&s&&t.jsx("span",{style:{fontSize:"10px",color:"#9CA3AF"},children:s})]})}function nt({text:e,error:r}){return t.jsx("div",{style:{fontSize:"11px",color:r?"#DC2626":"#9CA3AF",fontStyle:"italic",padding:"4px 8px"},children:e})}const ur={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 zl(e){return e.length<=3?e.toUpperCase():(e[0]+e.slice(1).replace(/[aeiouAEIOU]/g,"")).slice(0,3).toUpperCase()}function ql(e){if(ur[e])return ur[e];const r=e.replace(/([A-Z])/g," $1").trim().split(" ").filter(Boolean);return r.length===0?"EL":r.map(zl).join("-")}function Ll(e){return e.split("-")[0]}function la(e){return`/catalog/${e.split("-")[0]}/${e}`}function Vl(e){return`/catalog/${e}`}function da(e,r){return`/diagrams/${e.toLowerCase().replace(/\s+/g,"-")}/${encodeURIComponent(r)}`}const $l=u.lazy(()=>oe(()=>import("./ScenarioEditor-BIAh6tLX.js"),__vite__mapDeps([0,1,2])).then(e=>({default:e.ScenarioEditor})));function Me({expanded:e,size:r=14,color:n=y.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 pr(){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 We({open:e,color:r=y.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 vn({color:e=y.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 Re(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 Wl({elementId:e,currentKind:r,onClose:n}){const a=C(d=>d.updateElementKind),o=C(d=>d.model),[s,i]=u.useState(r),l=u.useRef(null),c=u.useMemo(()=>{var d;return(((d=o==null?void 0:o.registries)==null?void 0:d.kinds)??[]).filter(p=>!p.isAbstract).map(p=>p.name).sort((p,f)=>p.localeCompare(f))},[o]);return u.useEffect(()=>{const d=p=>{l.current&&!l.current.contains(p.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:()=>{a(e,s),n()},className:"px-3 py-1.5 rounded font-medium",style:{fontSize:"12px",color:"#FFFFFF",background:"#2DD4A8"},children:"Apply"})]})]})}function Hl({menu:e,onClose:r}){var x;const n=C(h=>h.model),a=C(h=>h.selectElement),o=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),[p,f]=u.useState(null),k=u.useRef(null);if(u.useEffect(()=>{const h=m=>{k.current&&!k.current.contains(m.target)&&r()};return document.addEventListener("mousedown",h),()=>document.removeEventListener("mousedown",h)},[r]),!n)return null;let w="",S=[];if(e.type==="element"&&e.elementId){const h=n.elements[e.elementId];if(!h)return null;w=h.name;const m=!(((x=n.registries)==null?void 0:x.kinds)??[]).some(B=>B.name===h.kind);S=[{label:"View details",action:()=>a(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&&Re(s(h.id,B.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}”?
4043
4043
 
4044
- All incoming and outgoing relationships will also be deleted. This cannot be undone.`)&&d(h.id).then(B=>{B.success||window.alert(B.error??"The element could not be deleted.")})}},...m?[{label:"⚠ Change Type…",action:()=>f({elementId:h.id,currentKind:h.kind})}]:[]]}else if(e.type==="folder"&&e.packageName&&e.kind){const h=e.packageName;w=`Package: ${h.split("::").pop()}`,S=[{label:"Add Element here",action:()=>{const m=window.prompt("Enter element name:");m&&o(e.kind,m,h)}},{label:"New Package…",action:()=>{const m=window.prompt("Enter package name:");m&&Ie(i(m.trim(),h))}},{label:"Rename Package…",action:()=>{const m=window.prompt("Enter new package name:",h.split("::").pop()??"");m&&Ie(l(h,m.trim()))}},{label:"Delete Package (keep contents)",danger:!0,action:()=>{window.confirm(`Remove the package "${h}"?
4044
+ All incoming and outgoing relationships will also be deleted. This cannot be undone.`)&&d(h.id).then(B=>{B.success||window.alert(B.error??"The element could not be deleted.")})}},...m?[{label:"⚠ Change Type…",action:()=>f({elementId:h.id,currentKind:h.kind})}]:[]]}else if(e.type==="folder"&&e.packageName&&e.kind){const h=e.packageName;w=`Package: ${h.split("::").pop()}`,S=[{label:"Add Element here",action:()=>{const m=window.prompt("Enter element name:");m&&o(e.kind,m,h)}},{label:"New Package…",action:()=>{const m=window.prompt("Enter package name:");m&&Re(i(m.trim(),h))}},{label:"Rename Package…",action:()=>{const m=window.prompt("Enter new package name:",h.split("::").pop()??"");m&&Re(l(h,m.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.`)&&Ie(c(h))}}]}else e.type==="kind"&&e.kind&&(w=`Category: ${e.kind}`,S=[{label:"Add Element",action:()=>{const h=window.prompt("Enter element name:");h&&o(e.kind,h,"")}},{label:"New Package…",action:()=>{const h=window.prompt("Enter package name:");h&&Ie(i(h.trim()))}}]);return S.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:y.surface,border:`1px solid ${y.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:y.primary,fontSize:N.xs,borderBottom:`1px solid ${y.border}`},children:w.toUpperCase()}),S.map((h,m)=>t.jsx("div",{className:"px-3 py-2 cursor-pointer transition-colors",style:{color:h.danger?"#DC2626":y.secondary,fontSize:N.explorer.item},onMouseEnter:B=>B.currentTarget.style.background="#F0F0ED",onMouseLeave:B=>B.currentTarget.style.background="transparent",onClick:()=>{h.action(),p||r()},children:h.label},m))]}),p&&t.jsx(Gl,{elementId:p.elementId,currentKind:p.currentKind,onClose:()=>{f(null),r()}})]}):null}function pr(e,r=[]){const n=[],a=s=>{let i=n,l="";for(const c of s.split("::").filter(Boolean)){l=l?`${l}::${c}`:c;const d=`f:${l}`;let p=i.find(f=>f.id===d);p||(p={id:d,name:c,type:"folder",children:[]},i.push(p)),i=p.children}return i};for(const s of r)a(s.qualifiedName);for(const s of[...e].sort((i,l)=>i.name.localeCompare(l.name)))a(s.package??"").push({id:s.id,name:s.name,type:"element",children:[],element:s});const o=s=>{s.sort((i,l)=>i.type!==l.type?i.type==="folder"?-1:1:i.name.localeCompare(l.name));for(const i of s)i.children.length>0&&o(i.children)};return o(n),n}function ca({nodes:e,level:r,expanded:n,toggleExpand:a,selectedElementId:o,selectElement:s,selectedElementIds:i,toggleElementSelection:l,violationCounts:c,baseColor:d,onContextMenu:p,onDragStart:f,onDrop:b,isUndefined:w}){return t.jsx(t.Fragment,{children:e.map(S=>{if(S.type==="folder"){const g=n.has(S.id);return t.jsxs("div",{style:{marginLeft:r>0?"16px":"0"},draggable:!0,onDragStart:h=>f(h,S),onDragOver:h=>h.preventDefault(),onDrop:h=>b(h,S.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:()=>a(S.id),onContextMenu:h=>p(h,"folder",S.id),children:[t.jsx(Re,{expanded:g,size:12,color:y.muted}),t.jsx(Le,{open:g,color:d}),t.jsx("span",{className:"font-medium flex-1 truncate",style:{color:y.secondary,fontSize:N.explorer.kind},children:S.name})]}),g&&t.jsx(ca,{nodes:S.children,level:r+1,expanded:n,toggleExpand:a,selectedElementId:o,selectElement:s,selectedElementIds:i,toggleElementSelection:l,violationCounts:c,baseColor:d,onContextMenu:p,onDragStart:f,onDrop:b,isUndefined:w})]},S.id)}else{const g=S.element,h=o===g.id,m=i.has(g.id),B=c.get(g.id)||0,T=le[g.layer]||d;return 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:m?"#FFF3CD":h?y.accent+"18":"transparent",fontWeight:h||m?500:400},draggable:!0,onDragStart:D=>f(D,{type:"element",element:g,id:g.id,name:g.name,children:[]}),onMouseEnter:D=>{!h&&!m&&(D.currentTarget.style.background="#F0F0ED")},onMouseLeave:D=>{D.currentTarget.style.background=m?"#FFF3CD":h?y.accent+"18":"transparent"},onClick:D=>{D.metaKey||D.ctrlKey||D.shiftKey?(D.preventDefault(),l(g.id)):s(g.id)},onContextMenu:D=>p(D,"element",g.id),children:[t.jsx("input",{type:"checkbox",checked:m,onChange:D=>{D.stopPropagation(),l(g.id)},onClick:D=>D.stopPropagation(),className:"flex-shrink-0",style:{width:"12px",height:"12px",cursor:"pointer",opacity:m?1:0,transition:"opacity 120ms",accentColor:"#2DD4A8"},onMouseEnter:D=>{D.currentTarget.style.opacity="1"},onMouseLeave:D=>{D.currentTarget.style.opacity=m?"1":"0"}}),t.jsx(xn,{color:w?"#F59E0B":T}),t.jsx(Ri,{element:g,selected:h}),w&&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:N.explorer.count,fontWeight:600,minWidth:"16px",textAlign:"center"},children:B})]},g.id)}})})}function Jl(e,r,n){return e.endsWith("View")||r==="viewpoints"||r==="views"||n==="viewpoints"||n==="views"}function nn(e,r,n){return Jl(e,r,n)||e==="ItemDefinition"}function mr(e,r,n){return!n.has(e.kind)&&Xr(e,{kinds:r})!==void 0}function Xl(e,r){var o;const n=new Map,a=new Map;for(const s of r)for(const i of s.layers)a.has(i.id)||a.set(i.id,i);for(const s of e){const i=((o=s.namespace)==null?void 0:o[0])??s.layer;if(!i||i==="unknown")continue;let l=n.get(i);if(!l){const c=a.get(i);l={id:i,label:(c==null?void 0:c.label)??ua(i),color:(c==null?void 0:c.color)??le[i]??"#6B7280",kinds:[]},n.set(i,l)}l.kinds.includes(s.name)||l.kinds.push(s.name)}return[...n.values()]}function Ql(e){var n;const r={};for(const a of e)r[a.name]=((n=a.namespace)==null?void 0:n[0])??a.layer;return r}function Zl(e){var n;const r={};for(const a of e)r[a.name]=(n=a.namespace)==null?void 0:n[1];return r}function ed(e){const r={},n=new Set;for(const a of e)a.isAbstract&&n.add(a.name),r[a.name]=a.superType;for(const[a,o]of Object.entries(r))o&&n.has(o)&&(r[a]=void 0);return r}function ua(e){return e.split(/[_-]/).map(r=>r.charAt(0).toUpperCase()+r.slice(1)).join(" ")}function td(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 a=e.replace(/([a-z0-9])([A-Z])/g,"$1 $2");return r===1||/(?:ss|Data|Status)$/i.test(a)||a.endsWith("s")?a:a+"s"}const fr=["documents","assets","templates","analyses","adrs","reviews"];function nd(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 rd(e,r,n,a,o=[]){const s=r.toLowerCase(),i=new Set;for(const D of e)for(let A=D.package;A;A=A.includes("::")?A.slice(0,A.lastIndexOf("::")):"")i.add(A);const l=o.filter(D=>!i.has(D.qualifiedName)),c=D=>{const A=new Set;for(const C of D)for(let x=C.package;x;x=x.includes("::")?x.slice(0,x.lastIndexOf("::")):"")A.add(x);return[...[...A].map(C=>({qualifiedName:C})),...l].sort((C,x)=>C.qualifiedName.localeCompare(x.qualifiedName))},d=new Set(["views","viewpoints","manifest"]),p=Ql(n),f=Zl(n),b=ed(n),w=new Set(n.map(D=>D.name)),S=Xl(n,a).filter(D=>!d.has(D.id)),g=new Set(S.map(D=>D.id)),h=(D,A,C)=>{var _;const x=new Map;for(const[O,P]of D.entries()){const M=C==="artifacts"?nd(O,(_=n.find($=>$.name===O))==null?void 0:_.superType):f[O]??"",L=b[O]??O;x.has(M)||x.set(M,new Map);const F=x.get(M);F.set(L,[...F.get(L)??[],...P])}return[...new Map([...x.entries()].map(([O,P])=>[O,new Map([...P.entries()].map(([M,L])=>[M,pr(L,c(L))]))])).entries()].sort(([O],[P])=>C==="artifacts"?fr.indexOf(O)-fr.indexOf(P):O.localeCompare(P)).map(([O,P])=>({id:O,label:O?ua(O):"",color:O?le[O]??A:A,kinds:P}))},m=[];for(const D of S){const A=new Map;for(const C of e){const x=p[C.kind]??C.layer,v=f[C.kind];if(nn(C.kind,x,v))continue;const _=p[C.kind];_&&_===D.id&&(s&&!C.name.toLowerCase().includes(s)&&!C.kind.toLowerCase().includes(s)||(A.has(C.kind)||A.set(C.kind,[]),A.get(C.kind).push(C)))}A.size>0&&m.push({group:D,subGroups:h(A,D.color,D.id)})}const B=new Map,T=new Map;for(const D of e){const A=p[D.kind]??D.layer,C=f[D.kind];nn(D.kind,A,C)||mr(D,n,w)&&(s&&!D.name.toLowerCase().includes(s)&&!D.kind.toLowerCase().includes(s)||(B.has(D.kind)||B.set(D.kind,[]),B.get(D.kind).push(D)))}if(B.size>0){const D="#64748B";m.push({group:{id:"standard-sysml-diagram-elements",label:"Other — SysML Diagram Elements",color:D,kinds:[]},subGroups:[{id:"diagram-elements",label:"Diagram Elements",color:D,kinds:new Map([...B.entries()].map(([A,C])=>[A,pr(C,c(C))]))}]})}for(const D of e){const A=p[D.kind]??D.layer,C=f[D.kind];if(nn(D.kind,A,C))continue;const x=p[D.kind];x&&g.has(x)||x&&d.has(x)||mr(D,n,w)||s&&!D.name.toLowerCase().includes(s)&&!D.kind.toLowerCase().includes(s)||(T.has(D.kind)||T.set(D.kind,[]),T.get(D.kind).push(D))}if(T.size>0){const D="#F59E0B";m.push({group:{id:"undefined",label:"Undefined — Not in Ontology",color:D,kinds:[]},subGroups:h(T,D)})}return m}function hr({searchTerm:e}){var z;const r=E(R=>R.model),n=E(R=>R.selectedElementId),a=E(R=>R.selectElement),o=E(R=>R.setActiveView),s=E(R=>R.selectedElementIds),i=E(R=>R.toggleElementSelection),l=E(R=>R.selectAllElements),c=E(R=>R.clearElementSelection),d=E(R=>R.moveElementToPackage),p=E(R=>R.movePackage),f=E(R=>R.validation),b=E(R=>R.availableOntologies),w=E(R=>R.setExplorerTab),S=E(R=>R.setActiveMode),g=E(R=>R.setSelectedOntologyKind),h=((z=r==null?void 0:r.registries)==null?void 0:z.kinds)??[],m=u.useCallback(R=>{a(R),o({type:"element-detail",elementId:R})},[a,o]),[B,T]=u.useState(new Set),[D,A]=u.useState(null),[C,x]=u.useState(null),v=u.useCallback((R,U)=>{U==null||U.stopPropagation(),T(W=>{const V=new Set(W);return V.has(R)?V.delete(R):V.add(R),V})},[]),_=u.useCallback((R,U,W,V)=>{R.preventDefault(),A({x:R.clientX,y:R.clientY,type:U,elementId:U==="element"?W:void 0,packageName:U==="folder"?W.replace("f:",""):void 0,kind:V||(U==="kind"?W.replace("k:","").split(":").pop():void 0)})},[]),O=u.useMemo(()=>{var R;return r?rd(Object.values(r.elements),e,((R=r.registries)==null?void 0:R.kinds)??[],b,r.packages??[]):[]},[r,e,b]);u.useEffect(()=>{const R=()=>{if(!e.trim())return;const W=new Set;for(const{group:V,subGroups:X}of O){W.add(`g:${V.id}`);for(const ee of X){ee.id&&W.add(`sg:${V.id}:${ee.id}`);for(const G of ee.kinds.keys())W.add(`k:${V.id}:${ee.id?`${ee.id}:`:""}${G}`)}}T(W)},U=()=>T(new Set);return window.addEventListener("memo:expand-explorer-search",R),window.addEventListener("memo:collapse-explorer-tree",U),()=>{window.removeEventListener("memo:expand-explorer-search",R),window.removeEventListener("memo:collapse-explorer-tree",U)}},[O,e]);const P=u.useCallback((R,U,W)=>{var V;x({id:U.id,kind:W}),R.dataTransfer.setData("application/memo-node",JSON.stringify({id:U.id,type:U.type,kind:W,name:U.name,elementId:(V=U.element)==null?void 0:V.id,packageName:U.type==="folder"?U.id.replace("f:",""):void 0})),R.dataTransfer.effectAllowed="move"},[]),M=u.useCallback((R,U)=>{(C==null?void 0:C.kind)===U&&(R.preventDefault(),R.dataTransfer.dropEffect="move")},[C]),L=u.useCallback((R,U,W)=>{R.preventDefault(),x(null);try{const V=JSON.parse(R.dataTransfer.getData("application/memo-node"));if(V.kind!==W)return;if(V.type==="element")Ie(d(V.elementId,U));else if(V.type==="folder"){if(U===V.packageName||U.startsWith(`${V.packageName}::`))return;Ie(p(V.packageName,U))}}catch(V){console.error("Drop error:",V)}},[d,p]),F=u.useMemo(()=>{const R=new Map;if(f)for(const U of f.violations)R.set(U.elementId,(R.get(U.elementId)||0)+1);return R},[f]),$=u.useMemo(()=>{const R=[],U=W=>{for(const V of W)V.type==="element"&&V.element?R.push(V.element.id):U(V.children)};for(const{subGroups:W}of O)for(const V of W)for(const X of V.kinds.values())U(X);return R},[O]),Y=s.size;return t.jsxs("div",{className:"flex-1 flex flex-col overflow-hidden",children:[Y>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:[Y," selected"]}),t.jsx("span",{style:{color:"#B45309"},children:"— Cmd/Ctrl+click to multi-select"}),t.jsx("button",{onClick:c,className:"ml-auto px-2 py-0.5 rounded",style:{color:"#92400E",background:"#FDE68A",fontSize:"12px",fontWeight:500},children:"Clear"})]}),e&&$.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:[$.length," matching"]}),t.jsx("button",{onClick:()=>l($),className:"ml-auto px-2 py-0.5 rounded",style:{color:"#0369A1",background:"#BAE6FD",fontSize:"12px",fontWeight:500},children:"Select All"})]}),t.jsxs("div",{className:"flex-1 overflow-y-auto py-1",style:{fontSize:N.explorer.item},children:[O.map(({group:R,subGroups:U})=>{const W=`g:${R.id}`,V=B.has(W),X=R.id==="undefined",ee=j=>j.reduce((I,K)=>I+(K.type==="element"?1:ee(K.children)),0),G=j=>Array.from(j.kinds.values()).reduce((I,K)=>I+ee(K),0),k=U.reduce((j,I)=>j+G(I),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:j=>j.currentTarget.style.background=X?"#FDE68A":"#F0F0ED",onMouseLeave:j=>j.currentTarget.style.background=X?"#FFF3CD":"transparent",onClick:()=>v(W),onContextMenu:j=>_(j,"group",W),children:[t.jsx(Re,{expanded:V,size:14,color:R.color}),X?t.jsx("span",{style:{fontSize:"14px",lineHeight:1,flexShrink:0},children:"⚠"}):t.jsx(Le,{open:V,color:R.color}),t.jsx("span",{className:"font-semibold flex-1 truncate",style:{color:X?"#92400E":y.primary,fontSize:N.explorer.group},children:R.label}),t.jsx("span",{className:"px-1.5 py-0.5 rounded-full",style:{background:R.color+"25",color:R.color,fontSize:N.explorer.count,fontWeight:600,minWidth:"20px",textAlign:"center"},children:k})]}),(()=>{const j=(I,K,Q)=>{const te=`k:${R.id}:${Q?Q+":":""}${I}`,H=B.has(te),oe=Z=>{var re;for(const J of Z){if(J.type==="element")return(re=J.element)==null?void 0:re.layer;const se=oe(J.children);if(se)return se}},Ee=oe(K),ue=X?"#F59E0B":Ee&&le[Ee]||R.color,Ce=h.some(Z=>Z.name===I),de=Z=>Z.flatMap(re=>re.type==="element"&&re.element?[re.element.id]:de(re.children)),Ae=de(K);return t.jsxs("div",{style:{marginLeft:"16px"},onDragOver:Z=>M(Z,I),onDrop:Z=>L(Z,"",I),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:Z=>Z.currentTarget.style.background="#F0F0ED",onMouseLeave:Z=>Z.currentTarget.style.background="transparent",onClick:()=>v(te),onContextMenu:Z=>_(Z,"kind",te,I),children:[t.jsx(Re,{expanded:H,size:12,color:y.muted}),t.jsx(Le,{open:H,color:ue}),t.jsxs("span",{className:"font-medium flex-1 truncate",style:{color:X?"#B45309":y.secondary,fontSize:N.explorer.kind},children:[td(I,Ae.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:Z=>{Z.stopPropagation(),l(Ae)},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:y.faint,fontSize:"17px"},children:"☑"}),Ce&&ie("ontology")&&t.jsx("button",{onClick:Z=>{Z.stopPropagation();for(const re of b)for(const J of re.layers)if(J.kinds.some(se=>se.name===I)){g(I),w("ontologies"),S("ontology"),o({type:"ontology-detail",packageName:re.name,layerId:J.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:y.faint,fontSize:"17px"},children:"⬡"})]}),t.jsx(yn,{count:Ae.length,color:ue,title:`${Ae.length} ${Ae.length===1?"element":"elements"}`})]}),H&&t.jsx(ca,{nodes:K,level:0,expanded:B,toggleExpand:v,selectedElementId:n,selectElement:m,selectedElementIds:s,toggleElementSelection:i,violationCounts:F,baseColor:ue,onContextMenu:(Z,re,J)=>_(Z,re,J,I),onDragStart:(Z,re)=>P(Z,re,I),onDrop:(Z,re)=>L(Z,re,I),isUndefined:X})]},I)};return V?U.map(I=>{if(!I.id)return t.jsx("div",{children:Array.from(I.kinds.entries()).map(([H,oe])=>j(H,oe,""))},"__root");const K=`sg:${R.id}:${I.id}`,Q=B.has(K),te=G(I);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:H=>H.currentTarget.style.background="#F0F0ED",onMouseLeave:H=>H.currentTarget.style.background="transparent",onClick:()=>v(K),children:[t.jsx(Re,{expanded:Q,size:13,color:I.color}),t.jsx(Le,{open:Q,color:I.color}),t.jsx("span",{className:"font-semibold flex-1 truncate",style:{color:y.primary,fontSize:N.explorer.kind},children:I.label}),t.jsx("span",{className:"px-1.5 py-0.5 rounded-full",style:{background:I.color+"25",color:I.color,fontSize:N.explorer.count,fontWeight:600,minWidth:"20px",textAlign:"center"},children:te})]}),Q&&Array.from(I.kinds.entries()).map(([H,oe])=>j(H,oe,I.id))]},I.id)}):null})()]},R.id)}),D&&t.jsx(Yl,{menu:D,onClose:()=>A(null)})]})]})}function ad({diagram:e}){const r=e.viewKind?In[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:N.badge},title:r.fullName,children:r.label});const n=["afd","ofd","ffd"].includes(e.diagramType.toLowerCase())?wi(e):e.diagramType,a=Pe[n];return a?t.jsx("span",{className:"px-1.5 py-0.5 rounded font-semibold",style:{background:a.color+"20",color:a.color,fontSize:N.badge},title:a.fullName,children:a.code}):null}function od({viewpointId:e,onClose:r}){const n=E(d=>d.createDiagram),[a,o]=u.useState("Untitled"),[s,i]=u.useState("bdd"),l=u.useRef(null);u.useEffect(()=>{const d=p=>{l.current&&!l.current.contains(p.target)&&r()};return document.addEventListener("mousedown",d),()=>document.removeEventListener("mousedown",d)},[r]);const c=()=>{a.trim()&&(n({name:a.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:y.primary,fontSize:"13px"},children:"New Model View"}),t.jsx("label",{className:"block mb-1",style:{fontSize:N.xs,color:y.secondary},children:"Name"}),t.jsx("input",{autoFocus:!0,value:a,onChange:d=>o(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:y.primary,fontSize:"13px"}}),t.jsx("label",{className:"block mb-1",style:{fontSize:N.xs,color:y.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:y.primary,fontSize:"13px"},children:Object.entries(Pe).map(([d,p])=>t.jsxs("option",{value:d,children:[p.fullName," (",p.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:y.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:y.accent},children:"Create"})]})]})}const sd=new Set(["__unassigned","__model"]),be="__uncategorized";function pa(e){const r=n=>n.explorerLane==="architecture"?0:n.explorerLane==="assurance"?1:2;return e.slice().sort((n,a)=>{const o=r(n)-r(a);if(o!==0)return o;if(r(n)<2){const s=(n.explorerOrder??Number.MAX_SAFE_INTEGER)-(a.explorerOrder??Number.MAX_SAFE_INTEGER);if(s!==0)return s}return n.label.localeCompare(a.label)})}function ma(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(o=>{const s=o.split(" ");return s.length>1&&s[0]===n})?e.map(o=>o.slice(n.length+1)):e}function id(e){const r=pa(((e==null?void 0:e.viewpoints)??[]).filter(a=>!sd.has(a.id))),n=new Set;for(const a of r)for(const o of ra(e,a.id))n.add(o.id);return{viewpoints:r,uncategorized:((e==null?void 0:e.diagrams)??[]).filter(a=>!n.has(a.id))}}function ld({searchTerm:e}){const r=E(A=>A.model),n=E(A=>A.activeView),a=E(A=>A.setActiveView),o=E(A=>A.selectViewpoint),s=E(A=>A.deleteDiagram),i=Se(),[l,c]=u.useState(new Set),[d,p]=u.useState(null),f=A=>{c(C=>{const x=new Set(C);return x.has(A)?x.delete(A):x.add(A),x})},{viewpoints:b,uncategorized:w}=u.useMemo(()=>id(r),[r]),S=u.useMemo(()=>ma(b.map(A=>A.label)),[b]),g=A=>{if(!e)return A;const C=e.toLowerCase();return A.filter(x=>x.name.toLowerCase().includes(C)||x.diagramType.toLowerCase().includes(C))},h=n.type==="diagram"?n.diagramId:null,m=g(w),B=u.useMemo(()=>{const A=new Map;for(const C of m){const v=[...(C.elementIds??[]).map(_=>{var O;return(O=r==null?void 0:r.elements[_])==null?void 0:O.layer}).filter(_=>!!_)].sort((_,O)=>{const P=tt.indexOf(_),M=tt.indexOf(O);return(P<0?Number.MAX_SAFE_INTEGER:P)-(M<0?Number.MAX_SAFE_INTEGER:M)})[0]??"other";A.set(v,[...A.get(v)??[],C])}return[...A.entries()].sort(([C],[x])=>{const v=tt.indexOf(C),_=tt.indexOf(x);return(v<0?Number.MAX_SAFE_INTEGER:v)-(_<0?Number.MAX_SAFE_INTEGER:_)})},[m,r==null?void 0:r.elements]),T=(A,C)=>A.map(x=>t.jsx(dd,{diag:x,isSelected:h===x.id,onSelect:()=>{a({type:"diagram",diagramId:x.id}),o(C==="__model"?null:C),i(da(x.diagramType,x.shortId??x.id))},onDelete:x.auto?void 0:()=>s(x.id)},x.id)),D=(A,C)=>{const x=_=>_.group;if(!A.some(_=>x(_)))return T(A,C);const v=new Map;for(const _ of A){const O=x(_)||"Other";v.set(O,[...v.get(O)??[],_])}return[...v.entries()].sort(([_],[O])=>_.localeCompare(O)).map(([_,O])=>t.jsxs("div",{style:{margin:"5px 4px 2px"},children:[t.jsx("div",{className:"px-2 py-1 font-semibold",style:{color:y.muted,fontSize:N.xs},children:_}),t.jsx("div",{style:{marginLeft:"8px"},children:T(O,C)})]},_))};return t.jsxs("div",{className:"flex-1 overflow-y-auto py-1",style:{fontSize:N.explorer.item},children:[b.map((A,C)=>{var P;const x=l.has(A.id),v=(P=A.visibleLayers)!=null&&P[0]&&le[A.visibleLayers[0]]||y.muted,_=ra(r,A.id),O=g(_);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:{borderRadius:"4px",margin:"0 4px"},onMouseEnter:M=>M.currentTarget.style.background="#F0F0ED",onMouseLeave:M=>M.currentTarget.style.background="transparent",onClick:()=>{o(A.id),f(A.id)},children:[t.jsx(Re,{expanded:x,size:14,color:v}),t.jsx(Le,{open:x,color:v}),t.jsx("span",{className:"font-semibold flex-1 truncate",style:{color:y.primary,fontSize:N.explorer.group},children:S[C]}),t.jsx(yn,{count:_.length,color:v,title:`${_.length} views`})]}),x&&t.jsxs("div",{style:{marginLeft:"16px"},children:[D(O,A.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:y.accent,fontSize:N.xs,background:"transparent"},onMouseEnter:M=>M.currentTarget.style.background=y.accent+"12",onMouseLeave:M=>M.currentTarget.style.background="transparent",onClick:()=>p(A.id),children:[t.jsx("span",{style:{fontSize:"14px",lineHeight:1},children:"+"})," New View"]})]})]},A.id)}),m.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:A=>A.currentTarget.style.background="#F0F0ED",onMouseLeave:A=>A.currentTarget.style.background="transparent",onClick:()=>{o(null),f(be)},children:[t.jsx(Re,{expanded:l.has(be),size:14,color:y.muted}),t.jsx(Le,{open:l.has(be),color:y.muted}),t.jsx("span",{className:"font-semibold flex-1",style:{color:y.primary,fontSize:N.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:y.faint,fontSize:N.badge},children:"no viewpoint"}),t.jsx(yn,{count:m.length,color:y.muted,title:`${m.length} views`})]}),l.has(be)&&t.jsxs("div",{style:{marginLeft:"16px"},children:[m.some(A=>A.group)?D(m,be):B.map(([A,C])=>t.jsxs("div",{style:{margin:"5px 4px 2px"},children:[t.jsx("div",{className:"px-2 py-1 font-semibold",style:{color:le[A]??y.muted,fontSize:N.xs,borderLeft:`3px solid ${le[A]??y.border}`},children:Mt[A]??`${A.charAt(0).toUpperCase()}${A.slice(1)}`}),t.jsx("div",{style:{marginLeft:"8px"},children:T(C,be)})]},A)),t.jsxs("button",{className:"flex items-center gap-1 px-2 py-1 w-full text-left",style:{borderRadius:"4px",margin:"2px 4px",color:y.accent,fontSize:N.xs,background:"transparent"},onMouseEnter:A=>A.currentTarget.style.background=y.accent+"12",onMouseLeave:A=>A.currentTarget.style.background="transparent",onClick:()=>p("__model"),children:[t.jsx("span",{style:{fontSize:"14px",lineHeight:1},children:"+"})," New View"]})]})]}),d!==null&&t.jsx(od,{viewpointId:d,onClose:()=>p(null)})]})}function dd({diag:e,isSelected:r,onSelect:n,onDelete:a}){var l;const[o,s]=u.useState(!1);Pe[e.diagramType];const i=((l=e.elementIds)==null?void 0:l.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?y.accent+"18":o?"#F0F0ED":"transparent",fontSize:N.explorer.item},onMouseEnter:()=>s(!0),onMouseLeave:()=>s(!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:y.faint,fontSize:N.badge,fontWeight:600},children:"AUTO"}),t.jsx("span",{className:"flex-1",style:{minWidth:0},children:t.jsxs("span",{className:"truncate block",style:{color:r?y.accentDark:y.primary},children:[t.jsxs("span",{style:{color:y.muted},children:["[",e.shortId??e.id,"] "]}),e.name]})}),i>0&&t.jsx("span",{className:"px-1.5 py-0.5 rounded-full",style:{background:"#F0F0ED",color:y.muted,fontSize:N.explorer.count,fontWeight:600,minWidth:"18px",textAlign:"center"},children:i}),a&&o&&t.jsx("button",{onClick:c=>{c.stopPropagation(),a()},title:"Delete diagram",style:{background:"none",border:"none",cursor:"pointer",color:"#DC2626",fontSize:"12px",padding:"0 2px",lineHeight:1},children:"×"})]})}function cd(){const e=E(m=>m.setActiveView),r=E(m=>m.activeView),n=E(m=>m.dhfDocuments),a=E(m=>m.addDhfDocument),o=E(m=>m.removeDhfDocument),s=E(m=>m.dhfSettings),[i,l]=u.useState(new Set(qe.map(m=>m.id))),[c,d]=u.useState(null),[p,f]=u.useState(null),b=r.type==="dhf-document"?r.docId:null,w=u.useMemo(()=>{const m=new Set(qe.map(B=>B.label));return[...new Set(n.map(B=>B.group))].filter(B=>B&&!m.has(B)).sort()},[n]);function S(m){l(B=>{const T=new Set(B);return T.has(m)?T.delete(m):T.add(m),T})}function g(m,B){m.preventDefault(),m.stopPropagation(),f({x:m.clientX,y:m.clientY,groupId:B})}function h(m){const B=s.documentNumberingPrefix||"DOC",T=[];for(const D of m){const A=`${B}-${D.prefix}-`,C=[...n,...T].filter(M=>M.id.startsWith(A)),x=`${A}${String(C.length+1).padStart(3,"0")}`,v=M=>M.replace(/^---[\s\S]*?---\n?/,""),_=D.content!==null?v(D.content):(()=>{const M=Il(D.templateId);return M?v(M):`# ${D.title}
4046
+ Everything it declares moves into the enclosing package. Qualified names that refer to it will need updating by hand.`)&&Re(c(h))}}]}else e.type==="kind"&&e.kind&&(w=`Category: ${e.kind}`,S=[{label:"Add Element",action:()=>{const h=window.prompt("Enter element name:");h&&o(e.kind,h,"")}},{label:"New Package…",action:()=>{const h=window.prompt("Enter package name:");h&&Re(i(h.trim()))}}]);return S.length?t.jsxs(t.Fragment,{children:[t.jsxs("div",{ref:k,className:"fixed z-50 rounded-lg overflow-hidden py-1",style:{left:e.x,top:e.y,background:y.surface,border:`1px solid ${y.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:y.primary,fontSize:N.xs,borderBottom:`1px solid ${y.border}`},children:w.toUpperCase()}),S.map((h,m)=>t.jsx("div",{className:"px-3 py-2 cursor-pointer transition-colors",style:{color:h.danger?"#DC2626":y.secondary,fontSize:N.explorer.item},onMouseEnter:B=>B.currentTarget.style.background="#F0F0ED",onMouseLeave:B=>B.currentTarget.style.background="transparent",onClick:()=>{h.action(),p||r()},children:h.label},m))]}),p&&t.jsx(Wl,{elementId:p.elementId,currentKind:p.currentKind,onClose:()=>{f(null),r()}})]}):null}function wn({nodes:e,level:r,expanded:n,toggleExpand:a,selectedElementId:o,selectElement:s,selectedElementIds:i,toggleElementSelection:l,violationCounts:c,baseColor:d,onContextMenu:p,onDragStart:f,onDrop:k,isUndefined:w}){return t.jsx(t.Fragment,{children:e.map(S=>{if(S.type==="folder"){const x=n.has(S.id);return t.jsxs("div",{style:{marginLeft:r>0?"16px":"0"},draggable:!0,onDragStart:h=>f(h,S),onDragOver:h=>h.preventDefault(),onDrop:h=>k(h,S.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:()=>a(S.id),onContextMenu:h=>p(h,"folder",S.id),children:[t.jsx(Me,{expanded:x,size:12,color:y.muted}),t.jsx(We,{open:x,color:d}),t.jsx("span",{className:"font-medium flex-1 truncate",style:{color:y.secondary,fontSize:N.explorer.kind},children:S.name})]}),x&&t.jsx(wn,{nodes:S.children,level:r+1,expanded:n,toggleExpand:a,selectedElementId:o,selectElement:s,selectedElementIds:i,toggleElementSelection:l,violationCounts:c,baseColor:d,onContextMenu:p,onDragStart:f,onDrop:k,isUndefined:w})]},S.id)}else{const x=S.element,h=o===x.id,m=i.has(x.id),B=c.get(x.id)||0,T=ce[x.layer]||d;return t.jsxs(u.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:m?"#FFF3CD":h?y.accent+"18":"transparent",fontWeight:h||m?500:400},draggable:!0,onDragStart:A=>f(A,{type:"element",element:x,id:x.id,name:x.name,children:[]}),onMouseEnter:A=>{!h&&!m&&(A.currentTarget.style.background="#F0F0ED")},onMouseLeave:A=>{A.currentTarget.style.background=m?"#FFF3CD":h?y.accent+"18":"transparent"},onClick:A=>{A.metaKey||A.ctrlKey||A.shiftKey?(A.preventDefault(),l(x.id)):s(x.id)},onContextMenu:A=>p(A,"element",x.id),children:[t.jsx("input",{type:"checkbox",checked:m,onChange:A=>{A.stopPropagation(),l(x.id)},onClick:A=>A.stopPropagation(),className:"flex-shrink-0",style:{width:"12px",height:"12px",cursor:"pointer",opacity:m?1:0,transition:"opacity 120ms",accentColor:"#2DD4A8"},onMouseEnter:A=>{A.currentTarget.style.opacity="1"},onMouseLeave:A=>{A.currentTarget.style.opacity=m?"1":"0"}}),t.jsx(vn,{color:w?"#F59E0B":T}),t.jsx(Ni,{element:x,selected:h}),w&&t.jsx("span",{title:`Kind "${x.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:N.explorer.count,fontWeight:600,minWidth:"16px",textAlign:"center"},children:B})]}),S.children.length>0&&t.jsx(wn,{nodes:S.children,level:r+1,expanded:n,toggleExpand:a,selectedElementId:o,selectElement:s,selectedElementIds:i,toggleElementSelection:l,violationCounts:c,baseColor:d,onContextMenu:p,onDragStart:f,onDrop:k,isUndefined:w})]},x.id)}})})}function Kl(e,r,n){return e.endsWith("View")||r==="viewpoints"||r==="views"||n==="viewpoints"||n==="views"}function Gl(e,r,n){return Kl(e,r,n)||e==="ItemDefinition"}function Yl(e,r,n){return!n.has(e.kind)&&Jr(e,{kinds:r})!==void 0}function Jl(e,r){var o;const n=new Map,a=new Map;for(const s of r)for(const i of s.layers)a.has(i.id)||a.set(i.id,i);for(const s of e){const i=((o=s.namespace)==null?void 0:o[0])??s.layer;if(!i||i==="unknown")continue;let l=n.get(i);if(!l){const c=a.get(i);l={id:i,label:(c==null?void 0:c.label)??ca(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 Xl(e){var n;const r={};for(const a of e)r[a.name]=((n=a.namespace)==null?void 0:n[0])??a.layer;return r}function Ql(e){var n;const r={};for(const a of e)r[a.name]=(n=a.namespace)==null?void 0:n[1];return r}function ca(e){return e.split(/[_-]/).map(r=>r.charAt(0).toUpperCase()+r.slice(1)).join(" ")}function Zl(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 a=e.replace(/([a-z0-9])([A-Z])/g,"$1 $2");return r===1||/(?:ss|Data|Status)$/i.test(a)||a.endsWith("s")?a:a+"s"}const mr=["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 td(e,r,n,a,o=[],s){var E;const i=r.toLowerCase(),l=new Set(["views","viewpoints","manifest"]),c=Xl(n),d=Ql(n),p=Jl(n,a).filter(b=>!l.has(b.id)),f=new Set(p.map(b=>b.id)),k=new Map;for(const b of e){if(s&&!s.has(b.kind))continue;const g=c[b.kind]??b.layer,I=d[b.kind];Gl(b.kind,g,I)||i&&!b.name.toLowerCase().includes(i)&&!b.kind.toLowerCase().includes(i)||k.set(b.id,b)}const w=new Map;for(const b of k.values())w.set(b.id,{id:b.id,name:b.name,type:"element",element:b,children:[]});const S=[];for(const b of w.values()){const g=(E=b.element)==null?void 0:E.owner,I=g?w.get(g):void 0;I?I.children.push(b):S.push(b)}const x=b=>{b.sort((g,I)=>g.type!==I.type?g.type==="folder"?-1:1:g.name.localeCompare(I.name)),b.forEach(g=>x(g.children))};for(const b of w.values())x(b.children);const h=b=>{var O,R,F,_;const g=(R=(O=n.find(D=>D.name===b))==null?void 0:O.namespace)==null?void 0:R[0];let I=b;for(;;){const D=n.find(G=>G.name===I);if(!D||D.isAbstract||!D.superType||((_=(F=n.find(G=>G.name===D.superType))==null?void 0:F.namespace)==null?void 0:_[0])!==g)return I;I=D.superType}},m=(b,g,I)=>{var F;const O=new Map;for(const _ of b){const D=_.element.kind,V=I==="artifacts"?ed(D,(F=n.find(z=>z.name===D))==null?void 0:F.superType):d[D]??"";O.has(V)||O.set(V,new Map);const G=O.get(V);G.set(D,[...G.get(D)??[],_])}const R=new Map;for(const[_,D]of O.entries()){const V=new Map;for(const[W,J]of D.entries())J.length===1&&V.set(W,h(W));const G=new Map;for(const W of V.values())G.set(W,(G.get(W)??0)+1);const z=new Map;for(const[W,J]of D.entries()){const X=V.get(W),M=X&&(G.get(X)??0)>1?X:W;z.set(M,[...z.get(M)??[],...J])}const K=new Map;for(const[W,J]of z.entries()){const X=[...J];x(X),K.set(W,X)}R.set(_,K)}return[...R.entries()].sort(([_],[D])=>I==="artifacts"?mr.indexOf(_)-mr.indexOf(D):_.localeCompare(D)).map(([_,D])=>({id:_,label:_?ca(_):"",color:_?ce[_]??g:g,kinds:D}))},B=[];for(const b of p){const g=[];for(const I of S){const O=I.element,R=c[O.kind];!R||R!==b.id||g.push(I)}g.length>0&&B.push({group:b,subGroups:m(g,b.color,b.id)})}const T=[],A=[],U=new Set(n.map(b=>b.name));for(const b of S){const g=b.element,I=c[g.kind];I&&f.has(I)||I&&l.has(I)||(Yl(g,n,U)?T.push(b):A.push(b))}if(T.length>0){const b="#64748B";B.push({group:{id:"standard-sysml-diagram-elements",label:"Other — SysML Diagram Elements",color:b,kinds:[]},subGroups:m(T,b).map(g=>({...g,id:"diagram-elements",label:"Diagram Elements"}))})}if(A.length>0){const b="#F59E0B";B.push({group:{id:"undefined",label:"Undefined — Not in Ontology",color:b,kinds:[]},subGroups:m(A,b).map(g=>({...g,id:"undefined-elements",label:"Elements"}))})}return B}function fr({searchTerm:e}){var X;const r=ke(),n=C(M=>M.model),a=C(M=>M.selectedElementId),o=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),p=C(M=>M.moveElementToPackage),f=C(M=>M.movePackage),k=C(M=>M.validation),w=C(M=>M.availableOntologies),S=C(M=>M.setExplorerTab),x=C(M=>M.setActiveMode),h=C(M=>M.setSelectedOntologyKind),m=((X=n==null?void 0:n.registries)==null?void 0:X.kinds)??[],B=u.useCallback(M=>{var $;o(M),s({type:"element-detail",elementId:M});const H=($=n==null?void 0:n.elements)==null?void 0:$[M];H&&r(la(H.shortId??H.id))},[o,s,n,r]),[T,A]=u.useState(new Set),U=u.useRef(!1),[E,b]=u.useState(null),[g,I]=u.useState(null),[O,R]=u.useState(new Set),F=u.useCallback((M,H)=>{H==null||H.stopPropagation(),A($=>{const v=new Set($);return v.has(M)?v.delete(M):v.add(M),v})},[]),_=u.useCallback((M,H,$,v)=>{M.preventDefault(),b({x:M.clientX,y:M.clientY,type:H,elementId:H==="element"?$:void 0,packageName:H==="folder"?$.replace("f:",""):void 0,kind:v||(H==="kind"?$.replace("k:","").split(":").pop():void 0)})},[]),D=u.useMemo(()=>{var M;return n?td(Object.values(n.elements),e,((M=n.registries)==null?void 0:M.kinds)??[],w,n.packages??[],O.size?O:void 0):[]},[n,e,w,O]);u.useEffect(()=>{if(U.current||D.length===0)return;const M=new Set;for(const{group:H,subGroups:$}of D)for(const v of $)for(const j of v.kinds.keys())M.add(`k:${H.id}:${v.id?`${v.id}:`:""}${j}`);U.current=!0,A(M)},[D]),u.useEffect(()=>{const M=()=>{if(!e.trim())return;const $=new Set;for(const{group:v,subGroups:j}of D){$.add(`g:${v.id}`);for(const P of j){P.id&&$.add(`sg:${v.id}:${P.id}`);for(const Y of P.kinds.keys())$.add(`k:${v.id}:${P.id?`${P.id}:`:""}${Y}`)}}A($)},H=()=>A(new Set);return window.addEventListener("memo:expand-explorer-search",M),window.addEventListener("memo:collapse-explorer-tree",H),()=>{window.removeEventListener("memo:expand-explorer-search",M),window.removeEventListener("memo:collapse-explorer-tree",H)}},[D,e]);const V=u.useCallback((M,H,$)=>{var v;I({id:H.id,kind:$}),M.dataTransfer.setData("application/memo-node",JSON.stringify({id:H.id,type:H.type,kind:$,name:H.name,elementId:(v=H.element)==null?void 0:v.id,packageName:H.type==="folder"?H.id.replace("f:",""):void 0})),M.dataTransfer.effectAllowed="move"},[]),G=u.useCallback((M,H)=>{(g==null?void 0:g.kind)===H&&(M.preventDefault(),M.dataTransfer.dropEffect="move")},[g]),z=u.useCallback((M,H,$)=>{M.preventDefault(),I(null);try{const v=JSON.parse(M.dataTransfer.getData("application/memo-node"));if(v.kind!==$)return;if(v.type==="element")Re(p(v.elementId,H));else if(v.type==="folder"){if(H===v.packageName||H.startsWith(`${v.packageName}::`))return;Re(f(v.packageName,H))}}catch(v){console.error("Drop error:",v)}},[p,f]),K=u.useMemo(()=>{const M=new Map;if(k)for(const H of k.violations)M.set(H.elementId,(M.get(H.elementId)||0)+1);return M},[k]),W=u.useMemo(()=>{const M=[],H=$=>{for(const v of $)v.type==="element"&&v.element?M.push(v.element.id):H(v.children)};for(const{subGroups:$}of D)for(const v of $)for(const j of v.kinds.values())H(j);return M},[D]),J=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 ${y.border}`,fontSize:N.xs},children:[t.jsxs("summary",{style:{cursor:"pointer",color:y.secondary},children:["Filter element types",O.size?` (${O.size})`:""]}),t.jsxs("div",{className:"mt-1 max-h-32 overflow-y-auto",children:[t.jsx("button",{onClick:()=>R(new Set),style:{color:y.accent,fontSize:N.xs},children:"Show all"}),m.filter(M=>!M.isAbstract).sort((M,H)=>M.name.localeCompare(H.name)).map(M=>t.jsxs("label",{className:"flex items-center gap-1 py-0.5",children:[t.jsx("input",{type:"checkbox",checked:!O.size||O.has(M.name),onChange:()=>R(H=>{const $=H.size?new Set(H):new Set(m.filter(v=>!v.isAbstract).map(v=>v.name));return $.has(M.name)?$.delete(M.name):$.add(M.name),$})}),M.label||M.name]},M.name))]})]}),J>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:[J," 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&&W.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:[W.length," matching"]}),t.jsx("button",{onClick:()=>c(W),className:"ml-auto px-2 py-0.5 rounded",style:{color:"#0369A1",background:"#BAE6FD",fontSize:"12px",fontWeight:500},children:"Select All"})]}),t.jsxs("div",{className:"flex-1 overflow-y-auto py-1",style:{fontSize:N.explorer.item},children:[D.map(({group:M,subGroups:H})=>{const $=`g:${M.id}`,v=T.has($),j=M.id==="undefined",P=Q=>Q.reduce((L,ne)=>L+(ne.type==="element"?1:P(ne.children)),0),Y=Q=>Array.from(Q.kinds.values()).reduce((L,ne)=>L+P(ne),0),te=H.reduce((Q,L)=>Q+Y(L),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",...j?{background:"#FFF3CD"}:{}},onMouseEnter:Q=>Q.currentTarget.style.background=j?"#FDE68A":"#F0F0ED",onMouseLeave:Q=>Q.currentTarget.style.background=j?"#FFF3CD":"transparent",onClick:()=>F($),onContextMenu:Q=>_(Q,"group",$),children:[t.jsx(Me,{expanded:v,size:14,color:M.color}),j?t.jsx("span",{style:{fontSize:"14px",lineHeight:1,flexShrink:0},children:"⚠"}):t.jsx(We,{open:v,color:M.color}),t.jsx("span",{className:"font-semibold flex-1 truncate",style:{color:j?"#92400E":y.primary,fontSize:N.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:N.explorer.count,fontWeight:600,minWidth:"20px",textAlign:"center"},children:te})]}),(()=>{const Q=(L,ne,me)=>{const pe=`k:${M.id}:${me?me+":":""}${L}`,se=T.has(pe),ae=ee=>{var ie;for(const Se of ee){if(Se.type==="element")return(ie=Se.element)==null?void 0:ie.layer;const fe=ae(Se.children);if(fe)return fe}},Ze=ae(ne),_e=j?"#F59E0B":Ze&&ce[Ze]||M.color,Pe=m.some(ee=>ee.name===L),Z=ee=>ee.flatMap(ie=>ie.type==="element"&&ie.element?[ie.element.id]:Z(ie.children)),le=Z(ne);return t.jsxs("div",{style:{marginLeft:"16px"},onDragOver:ee=>G(ee,L),onDrop:ee=>z(ee,"",L),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:ee=>ee.currentTarget.style.background="#F0F0ED",onMouseLeave:ee=>ee.currentTarget.style.background="transparent",onClick:()=>F(pe),onContextMenu:ee=>_(ee,"kind",pe,L),children:[t.jsx(Me,{expanded:se,size:12,color:y.muted}),t.jsx(We,{open:se,color:_e}),t.jsxs("span",{className:"font-medium flex-1 truncate",style:{color:j?"#B45309":y.secondary,fontSize:N.explorer.kind},children:[Zl(L,le.length),j&&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:ee=>{ee.stopPropagation(),c(le)},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:y.faint,fontSize:"17px"},children:"☑"}),Pe&&de("ontology")&&t.jsx("button",{onClick:ee=>{ee.stopPropagation();for(const ie of w)for(const Se of ie.layers)if(Se.kinds.some(fe=>fe.name===L)){h(L),S("ontologies"),x("ontology"),s({type:"ontology-detail",packageName:ie.name,layerId:Se.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:y.faint,fontSize:"17px"},children:"⬡"})]}),t.jsx(xn,{count:le.length,color:_e,title:`${le.length} ${le.length===1?"element":"elements"}`})]}),se&&t.jsx(wn,{nodes:ne,level:0,expanded:T,toggleExpand:F,selectedElementId:a,selectElement:B,selectedElementIds:i,toggleElementSelection:l,violationCounts:K,baseColor:_e,onContextMenu:(ee,ie,Se)=>_(ee,ie,Se,L),onDragStart:(ee,ie)=>V(ee,ie,L),onDrop:(ee,ie)=>z(ee,ie,L),isUndefined:j})]},L)};return v?H.map(L=>{if(!L.id)return t.jsx("div",{children:Array.from(L.kinds.entries()).map(([se,ae])=>Q(se,ae,""))},"__root");const ne=`sg:${M.id}:${L.id}`,me=T.has(ne),pe=Y(L);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:se=>se.currentTarget.style.background="#F0F0ED",onMouseLeave:se=>se.currentTarget.style.background="transparent",onClick:()=>F(ne),children:[t.jsx(Me,{expanded:me,size:13,color:L.color}),t.jsx(We,{open:me,color:L.color}),t.jsx("span",{className:"font-semibold flex-1 truncate",style:{color:y.primary,fontSize:N.explorer.kind},children:L.label}),t.jsx("span",{className:"px-1.5 py-0.5 rounded-full",style:{background:L.color+"25",color:L.color,fontSize:N.explorer.count,fontWeight:600,minWidth:"20px",textAlign:"center"},children:pe})]}),me&&Array.from(L.kinds.entries()).map(([se,ae])=>Q(se,ae,L.id))]},L.id)}):null})()]},M.id)}),E&&t.jsx(Hl,{menu:E,onClose:()=>b(null)})]})]})}function nd({diagram:e}){const r=e.viewKind?Pn[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:N.badge},title:r.fullName,children:r.label});const n=["afd","ofd","ffd"].includes(e.diagramType.toLowerCase())?bi(e):e.diagramType,a=ze[n];return a?t.jsx("span",{className:"px-1.5 py-0.5 rounded font-semibold",style:{background:a.color+"20",color:a.color,fontSize:N.badge},title:a.fullName,children:a.code}):null}function rd({viewpointId:e,onClose:r}){const n=C(d=>d.createDiagram),[a,o]=u.useState("Untitled"),[s,i]=u.useState("bdd"),l=u.useRef(null);u.useEffect(()=>{const d=p=>{l.current&&!l.current.contains(p.target)&&r()};return document.addEventListener("mousedown",d),()=>document.removeEventListener("mousedown",d)},[r]);const c=()=>{a.trim()&&(n({name:a.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:y.primary,fontSize:"13px"},children:"New Model View"}),t.jsx("label",{className:"block mb-1",style:{fontSize:N.xs,color:y.secondary},children:"Name"}),t.jsx("input",{autoFocus:!0,value:a,onChange:d=>o(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:y.primary,fontSize:"13px"}}),t.jsx("label",{className:"block mb-1",style:{fontSize:N.xs,color:y.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:y.primary,fontSize:"13px"},children:Object.entries(ze).map(([d,p])=>t.jsxs("option",{value:d,children:[p.fullName," (",p.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:y.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:y.accent},children:"Create"})]})]})}const ad=new Set(["__unassigned","__model"]),Ee="__uncategorized";function ua(e){const r=n=>n.explorerLane==="architecture"?0:n.explorerLane==="assurance"?1:2;return e.slice().sort((n,a)=>{const o=r(n)-r(a);if(o!==0)return o;if(r(n)<2){const s=(n.explorerOrder??Number.MAX_SAFE_INTEGER)-(a.explorerOrder??Number.MAX_SAFE_INTEGER);if(s!==0)return s}return n.label.localeCompare(a.label)})}function pa(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(o=>{const s=o.split(" ");return s.length>1&&s[0]===n})?e.map(o=>o.slice(n.length+1)):e}function od(e){const r=ua(((e==null?void 0:e.viewpoints)??[]).filter(a=>!ad.has(a.id))),n=new Set;for(const a of r)for(const o of na(e,a.id))n.add(o.id);return{viewpoints:r,uncategorized:((e==null?void 0:e.diagrams)??[]).filter(a=>!n.has(a.id))}}function sd(e){const r=[];for(const a of e){let o=r,s="",i;for(const l of(a.package??"").split("::").filter(Boolean)){s=s?`${s}::${l}`:l;let c=o.find(d=>d.id===s);c||(c={id:s,name:l,children:[],diagrams:[]},o.push(c)),i=c,o=c.children}if(o===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(a)}else i.diagrams.push(a)}const n=a=>{a.sort((o,s)=>o.name.localeCompare(s.name)),a.forEach(o=>{o.diagrams.sort((s,i)=>s.name.localeCompare(i.name)),n(o.children)})};return n(r),r}function id({searchTerm:e}){const r=C(E=>E.model),n=C(E=>E.activeView),a=C(E=>E.setActiveView),o=C(E=>E.selectViewpoint),s=C(E=>E.deleteDiagram),i=C(E=>E.createPackage),l=ke(),[c,d]=u.useState(new Set),[p,f]=u.useState(null),k=E=>{d(b=>{const g=new Set(b);return g.has(E)?g.delete(E):g.add(E),g})},{viewpoints:w,uncategorized:S}=u.useMemo(()=>od(r),[r]),x=u.useMemo(()=>pa(w.map(E=>E.label)),[w]),h=E=>{if(!e)return E;const b=e.toLowerCase();return E.filter(g=>g.name.toLowerCase().includes(b)||g.diagramType.toLowerCase().includes(b))},m=n.type==="diagram"?n.diagramId:null,B=h(S),T=u.useMemo(()=>{const E=new Map;for(const b of B){const I=[...(b.elementIds??[]).map(O=>{var R;return(R=r==null?void 0:r.elements[O])==null?void 0:R.layer}).filter(O=>!!O)].sort((O,R)=>{const F=Ie.indexOf(O),_=Ie.indexOf(R);return(F<0?Number.MAX_SAFE_INTEGER:F)-(_<0?Number.MAX_SAFE_INTEGER:_)})[0]??"other";E.set(I,[...E.get(I)??[],b])}return[...E.entries()].sort(([b],[g])=>{const I=Ie.indexOf(b),O=Ie.indexOf(g);return(I<0?Number.MAX_SAFE_INTEGER:I)-(O<0?Number.MAX_SAFE_INTEGER:O)})},[B,r==null?void 0:r.elements]),A=(E,b)=>E.map(g=>t.jsx(ld,{diag:g,isSelected:m===g.id,onSelect:()=>{a({type:"diagram",diagramId:g.id}),o(b==="__model"?null:b),l(da(g.diagramType,g.shortId??g.id))},onDelete:g.auto?void 0:()=>s(g.id)},g.id)),U=(E,b)=>{const g=sd(E),I=(F,_=0)=>t.jsxs("div",{style:{marginLeft:_?"12px":0},children:[t.jsx("div",{className:"px-2 py-1 font-semibold",style:{color:y.muted,fontSize:N.xs},children:F.name}),t.jsx("div",{style:{marginLeft:"8px"},children:A(F.diagrams,b)}),F.children.map(D=>I(D,_+1))]},F.id);if(E.some(F=>F.package))return g.map(F=>I(F));const O=F=>F.group;if(!E.some(F=>O(F)))return A(E,b);const R=new Map;for(const F of E){const _=O(F)||"Other";R.set(_,[...R.get(_)??[],F])}return[...R.entries()].sort(([F],[_])=>F.localeCompare(_)).map(([F,_])=>t.jsxs("div",{style:{margin:"5px 4px 2px"},children:[t.jsx("div",{className:"px-2 py-1 font-semibold",style:{color:y.muted,fontSize:N.xs},children:F}),t.jsx("div",{style:{marginLeft:"8px"},children:A(_,b)})]},F))};return t.jsxs("div",{className:"flex-1 overflow-y-auto py-1",style:{fontSize:N.explorer.item},children:[w.map((E,b)=>{var F;const g=c.has(E.id),I=(F=E.visibleLayers)!=null&&F[0]&&ce[E.visibleLayers[0]]||y.muted,O=na(r,E.id),R=h(O);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:{borderRadius:"4px",margin:"0 4px"},onMouseEnter:_=>_.currentTarget.style.background="#F0F0ED",onMouseLeave:_=>_.currentTarget.style.background="transparent",onClick:()=>{o(E.id),k(E.id)},children:[t.jsx(Me,{expanded:g,size:14,color:I}),t.jsx(We,{open:g,color:I}),t.jsx("span",{className:"font-semibold flex-1 truncate",style:{color:y.primary,fontSize:N.explorer.group},children:x[b]}),t.jsx(xn,{count:O.length,color:I,title:`${O.length} views`})]}),g&&t.jsxs("div",{style:{marginLeft:"16px"},children:[U(R,E.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:y.accent,fontSize:N.xs,background:"transparent"},onMouseEnter:_=>_.currentTarget.style.background=y.accent+"12",onMouseLeave:_=>_.currentTarget.style.background="transparent",onClick:()=>f(E.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:y.accent,fontSize:N.xs,background:"transparent"},onMouseEnter:_=>_.currentTarget.style.background=y.accent+"12",onMouseLeave:_=>_.currentTarget.style.background="transparent",onClick:()=>{const _=window.prompt("New SysML package name");_!=null&&_.trim()&&Re(i(_.trim()))},children:[t.jsx("span",{style:{fontSize:"14px",lineHeight:1},children:"+"})," New Package"]})]})]},E.id)}),B.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:E=>E.currentTarget.style.background="#F0F0ED",onMouseLeave:E=>E.currentTarget.style.background="transparent",onClick:()=>{o(null),k(Ee)},children:[t.jsx(Me,{expanded:c.has(Ee),size:14,color:y.muted}),t.jsx(We,{open:c.has(Ee),color:y.muted}),t.jsx("span",{className:"font-semibold flex-1",style:{color:y.primary,fontSize:N.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:y.faint,fontSize:N.badge},children:"no viewpoint"}),t.jsx(xn,{count:B.length,color:y.muted,title:`${B.length} views`})]}),c.has(Ee)&&t.jsxs("div",{style:{marginLeft:"16px"},children:[B.some(E=>E.group)?U(B,Ee):T.map(([E,b])=>t.jsxs("div",{style:{margin:"5px 4px 2px"},children:[t.jsx("div",{className:"px-2 py-1 font-semibold",style:{color:ce[E]??y.muted,fontSize:N.xs,borderLeft:`3px solid ${ce[E]??y.border}`},children:Je[E]??`${E.charAt(0).toUpperCase()}${E.slice(1)}`}),t.jsx("div",{style:{marginLeft:"8px"},children:A(b,Ee)})]},E)),t.jsxs("button",{className:"flex items-center gap-1 px-2 py-1 w-full text-left",style:{borderRadius:"4px",margin:"2px 4px",color:y.accent,fontSize:N.xs,background:"transparent"},onMouseEnter:E=>E.currentTarget.style.background=y.accent+"12",onMouseLeave:E=>E.currentTarget.style.background="transparent",onClick:()=>f("__model"),children:[t.jsx("span",{style:{fontSize:"14px",lineHeight:1},children:"+"})," New View"]})]})]}),p!==null&&t.jsx(rd,{viewpointId:p,onClose:()=>f(null)})]})}function ld({diag:e,isSelected:r,onSelect:n,onDelete:a}){var l;const[o,s]=u.useState(!1);ze[e.diagramType];const i=((l=e.elementIds)==null?void 0:l.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?y.accent+"18":o?"#F0F0ED":"transparent",fontSize:N.explorer.item},onMouseEnter:()=>s(!0),onMouseLeave:()=>s(!1),onClick:n,title:e.description,children:[t.jsx(nd,{diagram:e}),e.auto&&!e.sourceFile&&t.jsx("span",{className:"px-1 py-0.5 rounded",style:{background:"#F0F0ED",color:y.faint,fontSize:N.badge,fontWeight:600},children:"AUTO"}),t.jsx("span",{className:"flex-1",style:{minWidth:0},children:t.jsxs("span",{className:"truncate block",style:{color:r?y.accentDark:y.primary},children:[t.jsxs("span",{style:{color:y.muted},children:["[",e.shortId??e.id,"] "]}),e.name]})}),i>0&&t.jsx("span",{className:"px-1.5 py-0.5 rounded-full",style:{background:"#F0F0ED",color:y.muted,fontSize:N.explorer.count,fontWeight:600,minWidth:"18px",textAlign:"center"},children:i}),a&&o&&t.jsx("button",{onClick:c=>{c.stopPropagation(),a()},title:"Delete diagram",style:{background:"none",border:"none",cursor:"pointer",color:"#DC2626",fontSize:"12px",padding:"0 2px",lineHeight:1},children:"×"})]})}function dd(){const e=C(m=>m.setActiveView),r=C(m=>m.activeView),n=C(m=>m.dhfDocuments),a=C(m=>m.addDhfDocument),o=C(m=>m.removeDhfDocument),s=C(m=>m.dhfSettings),[i,l]=u.useState(new Set($e.map(m=>m.id))),[c,d]=u.useState(null),[p,f]=u.useState(null),k=r.type==="dhf-document"?r.docId:null,w=u.useMemo(()=>{const m=new Set($e.map(B=>B.label));return[...new Set(n.map(B=>B.group))].filter(B=>B&&!m.has(B)).sort()},[n]);function S(m){l(B=>{const T=new Set(B);return T.has(m)?T.delete(m):T.add(m),T})}function x(m,B){m.preventDefault(),m.stopPropagation(),f({x:m.clientX,y:m.clientY,groupId:B})}function h(m){const B=s.documentNumberingPrefix||"DOC",T=[];for(const A of m){const U=`${B}-${A.prefix}-`,E=[...n,...T].filter(F=>F.id.startsWith(U)),b=`${U}${String(E.length+1).padStart(3,"0")}`,g=F=>F.replace(/^---[\s\S]*?---\n?/,""),I=A.content!==null?g(A.content):(()=>{const F=Tl(A.templateId);return F?g(F):`# ${A.title}
4047
4047
 
4048
4048
  _[TODO: Add content]_
4049
4049
  `})(),O=`---
4050
- id: ${x}
4051
- title: ${D.title}
4052
- template: ${D.templateId}
4050
+ id: ${b}
4051
+ title: ${A.title}
4052
+ template: ${A.templateId}
4053
4053
  ---
4054
4054
 
4055
- ${_}`,P={id:x,title:D.title,group:D.groupLabel,templateId:D.templateId,content:O,createdAt:Date.now(),authors:"",approvers:""};a(P),T.push(P),T.length===1&&e({type:"dhf-document",docId:P.id})}d(null)}return u.useEffect(()=>{if(!p)return;function m(){f(null)}return window.addEventListener("click",m),()=>window.removeEventListener("click",m)},[p]),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:y.accentDark,fontSize:N.explorer.item,fontWeight:600,color:"#fff",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",gap:"6px"},onMouseEnter:m=>{m.currentTarget.style.background="#254B60"},onMouseLeave:m=>{m.currentTarget.style.background=y.accentDark},children:[t.jsx("span",{style:{fontSize:"14px",lineHeight:1},children:"+"})," New Document"]})}),qe.filter(m=>n.some(B=>B.group===m.label)).map(m=>{const B=i.has(m.id),T=n.filter(D=>D.group===m.label);return t.jsxs("div",{children:[t.jsxs("button",{onClick:()=>S(m.id),onContextMenu:D=>g(D,m.id),className:"w-full flex items-center gap-2 px-3 py-2 text-left",style:{fontSize:N.xs,fontWeight:600,color:y.secondary,borderRadius:"4px"},onMouseEnter:D=>D.currentTarget.style.background=y.surfaceAlt,onMouseLeave:D=>D.currentTarget.style.background="transparent",title:"Right-click to add documents",children:[t.jsx("span",{style:{display:"inline-block",width:"7px",height:"7px",borderRadius:"50%",background:m.color,flexShrink:0}}),t.jsx("span",{className:"flex-1 uppercase tracking-wide",style:{fontSize:"10px"},children:m.label}),T.length>0&&t.jsx("span",{style:{fontSize:"10px",color:m.color,fontWeight:700},children:T.length}),t.jsx(Re,{expanded:B,size:11})]}),B&&T.map(D=>{const A=b===D.id;return t.jsxs("div",{style:{display:"flex",alignItems:"center",paddingLeft:"28px",paddingRight:"4px",background:A?`${m.color}18`:"transparent",borderLeft:A?`2px solid ${m.color}`:"2px solid transparent",cursor:"pointer"},onMouseEnter:C=>{A||(C.currentTarget.style.background=y.surfaceAlt)},onMouseLeave:C=>{C.currentTarget.style.background=A?`${m.color}18`:"transparent"},children:[t.jsxs("button",{onClick:()=>e({type:"dhf-document",docId:D.id}),style:{flex:1,display:"flex",alignItems:"center",gap:"6px",background:"none",border:"none",padding:"5px 0",fontSize:N.explorer.element,color:A?m.color:y.primary,fontWeight:A?600:400,cursor:"pointer",textAlign:"left"},children:[t.jsx(xn,{color:m.color}),t.jsx("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:D.id})]}),t.jsx("button",{onClick:C=>{C.stopPropagation(),o(D.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:C=>{C.currentTarget.style.opacity="1",C.currentTarget.style.color="#ef4444"},onMouseLeave:C=>{C.currentTarget.style.opacity="0",C.currentTarget.style.color="#9CA3AF"},children:"×"})]},D.id)})]},m.id)}),w.map(m=>{const B=`custom:${m}`,T=i.has(B),D=Ol(m),A=n.filter(C=>C.group===m);return t.jsxs("div",{children:[t.jsxs("button",{onClick:()=>S(B),className:"w-full flex items-center gap-2 px-3 py-2 text-left",style:{fontSize:N.xs,fontWeight:600,color:y.secondary,borderRadius:"4px"},onMouseEnter:C=>C.currentTarget.style.background=y.surfaceAlt,onMouseLeave:C=>C.currentTarget.style.background="transparent",children:[t.jsx("span",{style:{display:"inline-block",width:"7px",height:"7px",borderRadius:"50%",background:D,flexShrink:0}}),t.jsx("span",{className:"flex-1 uppercase tracking-wide",style:{fontSize:"10px"},children:m}),t.jsx("span",{style:{fontSize:"10px",color:D,fontWeight:700},children:A.length}),t.jsx(Re,{expanded:T,size:11})]}),T&&A.map(C=>{const x=b===C.id;return t.jsxs("div",{style:{display:"flex",alignItems:"center",paddingLeft:"28px",paddingRight:"4px",background:x?`${D}18`:"transparent",borderLeft:x?`2px solid ${D}`:"2px solid transparent",cursor:"pointer"},onMouseEnter:v=>{x||(v.currentTarget.style.background=y.surfaceAlt)},onMouseLeave:v=>{v.currentTarget.style.background=x?`${D}18`:"transparent"},children:[t.jsxs("button",{onClick:()=>e({type:"dhf-document",docId:C.id}),style:{flex:1,display:"flex",alignItems:"center",gap:"6px",background:"none",border:"none",padding:"5px 0",fontSize:N.explorer.element,color:x?D:y.primary,fontWeight:x?600:400,cursor:"pointer",textAlign:"left"},children:[t.jsx(xn,{color:D}),t.jsx("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:C.id})]}),t.jsx("button",{onClick:v=>{v.stopPropagation(),o(C.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:v=>{v.currentTarget.style.opacity="1",v.currentTarget.style.color="#ef4444"},onMouseLeave:v=>{v.currentTarget.style.opacity="0",v.currentTarget.style.color="#9CA3AF"},children:"×"})]},C.id)})]},B)}),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."]})]}),p&&t.jsx("div",{style:{position:"fixed",zIndex:9998,left:p.x,top:p.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:m=>m.stopPropagation(),children:t.jsx("button",{onClick:()=>{d({initialGroupId:p.groupId}),f(null)},style:{display:"block",width:"100%",padding:"8px 14px",background:"none",border:"none",textAlign:"left",fontSize:"13px",color:"#1B3A4B",cursor:"pointer"},onMouseEnter:m=>m.currentTarget.style.background="#F3F4F6",onMouseLeave:m=>m.currentTarget.style.background="none",children:"Add document…"})}),c&&t.jsx(ql,{initialGroupId:c.initialGroupId,existingDocs:n,numberingPrefix:s.documentNumberingPrefix||"DOC",onCreate:h,onClose:()=>d(null)})]})}const fa="memo-explorer-width",ot=300,st=240,bn=720,ud=320;function rn(){return typeof window>"u"||!window.innerWidth?bn:Math.max(st,Math.min(bn,window.innerWidth-ud))}function pd(e){return Number.isFinite(e)?Math.min(bn,Math.max(st,e)):ot}function md(){if(typeof window>"u")return ot;try{const e=Number.parseInt(localStorage.getItem(fa)??"",10);return Number.isFinite(e)?pd(e):ot}catch{return ot}}function fd(){var T,D,A;const e=E(C=>C.sidebarCollapsed),r=E(C=>C.toggleSidebar);E(C=>C.explorerTab);const n=E(C=>C.setExplorerTab),a=E(C=>C.searchTerm),o=E(C=>C.setSearchTerm),s=E(C=>C.model),i=E(C=>C.activeMode),l=E(C=>C.activeView),c=l.type==="diagram"&&((D=(T=s==null?void 0:s.diagrams)==null?void 0:T.find(C=>C.id===l.diagramId))==null?void 0:D.viewpointId)&&((A=s.diagrams.find(C=>C.id===l.diagramId))==null?void 0:A.viewpointId)!=="__model",d=c||i==="diagram"?"Viewpoints":"Model Explorer",[p,f]=u.useState(md),[b,w]=u.useState(rn),S=Math.min(p,b),g=u.useRef(null),h=u.useCallback(C=>{f(Math.max(st,Math.min(rn(),C)))},[]),m=u.useCallback(()=>{var C;(C=g.current)==null||C.call(g),g.current=null},[]),B=u.useCallback(C=>{if(C.button!==0)return;C.preventDefault(),m();const x=C.clientX,v=S,_=document.body.style.cursor,O=document.body.style.userSelect;document.body.style.cursor="col-resize",document.body.style.userSelect="none";const P=L=>{h(v+L.clientX-x)},M=()=>{window.removeEventListener("pointermove",P),window.removeEventListener("pointerup",M),window.removeEventListener("pointercancel",M),document.body.style.cursor=_,document.body.style.userSelect=O,g.current=null};g.current=M,window.addEventListener("pointermove",P),window.addEventListener("pointerup",M),window.addEventListener("pointercancel",M)},[h,S,m]);return u.useEffect(()=>{try{localStorage.setItem(fa,String(Math.round(p)))}catch{}},[p]),u.useEffect(()=>{const C=()=>w(rn());return window.addEventListener("resize",C),()=>{window.removeEventListener("resize",C),m()}},[m]),u.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 ${y.border}`,cursor:"pointer"},children:[t.jsx("span",{style:{color:y.muted,fontSize:18,lineHeight:1},children:"›"}),t.jsx("span",{style:{color:y.muted,fontSize:10,writingMode:"vertical-rl"},children:d})]}):t.jsxs("div",{className:"flex flex-col overflow-hidden flex-shrink-0",style:{position:"relative",width:`${S}px`,background:y.surface,borderRight:`1px solid ${y.border}`},children:[t.jsxs("div",{className:"flex items-center justify-between px-3 py-2",style:{background:y.surfaceAlt,borderBottom:`1px solid ${y.border}`,flexShrink:0},children:[t.jsx("span",{style:{fontSize:N.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 ${y.border}`,borderRadius:5,background:"#FFFFFF",color:y.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 ${y.border}`},children:t.jsxs("div",{className:"flex gap-1",children:[t.jsx("input",{type:"text",placeholder:"Search elements...",value:a,onChange:C=>o(C.target.value),onKeyDown:C=>{C.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:y.surfaceAlt,border:`1px solid ${y.border}`,color:y.primary,fontSize:N.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:y.surfaceAlt,border:`1px solid ${y.border}`,color:y.secondary,cursor:"pointer"},children:t.jsx(ur,{})})]})}),t.jsx(hr,{searchTerm:a})]}):i==="dashboard"?t.jsx(Ti,{}):i==="dhf"?t.jsx(cd,{}):i==="diagram"||c?t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"px-3 py-2",style:{borderBottom:`1px solid ${y.border}`},children:t.jsx("input",{type:"text",placeholder:"Search viewpoints and views...",value:a,onChange:C=>o(C.target.value),className:"w-full px-3 py-2 rounded-lg focus:outline-none",style:{background:y.surfaceAlt,border:`1px solid ${y.border}`,color:y.primary,fontSize:N.explorer.search}})}),t.jsx(ld,{searchTerm:a})]}):i==="ontology"?t.jsx(Ni,{}):i==="scenario"?t.jsx(u.Suspense,{fallback:t.jsx("div",{className:"p-3",style:{color:y.faint,fontSize:N.explorer.item},children:"Loading use cases…"}),children:t.jsx(Kl,{explorerOnly:!0})}):t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"px-3 py-2",style:{borderBottom:`1px solid ${y.border}`},children:t.jsxs("div",{className:"flex gap-1",children:[t.jsx("input",{type:"text",placeholder:"Search elements...",value:a,onChange:C=>o(C.target.value),onKeyDown:C=>{C.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:y.surfaceAlt,border:`1px solid ${y.border}`,color:y.primary,fontSize:N.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:y.surfaceAlt,border:`1px solid ${y.border}`,color:y.secondary,cursor:"pointer"},children:t.jsx(ur,{})})]})}),t.jsx(hr,{searchTerm:a})]}),t.jsx("div",{className:"memo-explorer-resizer",role:"separator","aria-label":"Resize Model Explorer","aria-orientation":"vertical","aria-valuemin":st,"aria-valuemax":b,"aria-valuenow":Math.round(S),tabIndex:0,title:"Drag to resize · Double-click to reset",onPointerDown:B,onDoubleClick:()=>h(ot),onKeyDown:C=>{C.key==="ArrowLeft"?(C.preventDefault(),h(S-20)):C.key==="ArrowRight"?(C.preventDefault(),h(S+20)):C.key==="Home"?(C.preventDefault(),h(st)):C.key==="End"&&(C.preventDefault(),h(b))}})]})}function hd(e,r){if(r.length===0)return!0;const n=`${e.label??e.value} ${e.group??""} ${e.keywords??""}`.toLowerCase();return r.every(a=>n.includes(a))}function yd(e,r){const n=r.trim().toLowerCase().split(/\s+/).filter(Boolean);if(n.length===0)return e;const a=[],o=[];for(const s of e){if(!hd(s,n))continue;(s.label??s.value).toLowerCase().startsWith(n[0])?a.push(s):o.push(s)}return[...a,...o]}function Lt({label:e,options:r,selected:n,onChange:a,allLabel:o="All",placeholder:s="Type to filter…",width:i=150,title:l,describedAs:c,maxVisible:d=300,parentOf:p,iconOnly:f,align:b="left"}){var Y;const[w,S]=u.useState(!1),[g,h]=u.useState(""),[m,B]=u.useState(0),[T,D]=u.useState(new Set),A=u.useRef(null),C=u.useRef(null),x=u.useMemo(()=>new Set(n),[n]),v=u.useMemo(()=>yd(r,g),[r,g]),_=v.length>d?v.slice(0,d):v,O=v.length-_.length,P=u.useMemo(()=>{if(!p)return null;const z=new Map(r.map(G=>[G.value,G])),R=new Set(v.map(G=>G.value));for(const G of[...R]){let k=p.get(G);for(;k&&z.has(k)&&!R.has(k);)R.add(k),k=p.get(k)}const U=new Map;for(const G of R){const k=p.get(G);if(k&&R.has(k)){const j=U.get(k)??[];j.push(G),U.set(k,j)}}const W=(G,k)=>{var j,I;return(((j=z.get(G))==null?void 0:j.label)??G).localeCompare(((I=z.get(k))==null?void 0:I.label)??k)};U.forEach(G=>G.sort(W));const V=[...R].filter(G=>!p.get(G)||!R.has(p.get(G))).sort(W),X=[],ee=(G,k)=>{const j=z.get(G);if(!j)return;const I=U.get(G)??[];X.push({option:j,depth:k,children:I}),I.length>0&&T.has(G)&&I.forEach(K=>ee(K,k+1))};return V.forEach(G=>ee(G,0)),X},[r,v,p,T]);u.useEffect(()=>{B(0)},[g,w]),u.useEffect(()=>{if(!w)return;const z=R=>{var U;(U=A.current)!=null&&U.contains(R.target)||(S(!1),h(""))};return document.addEventListener("mousedown",z),()=>document.removeEventListener("mousedown",z)},[w]),u.useEffect(()=>{var z;w&&((z=C.current)==null||z.focus())},[w]);const M=u.useCallback(z=>{a(x.has(z)?n.filter(R=>R!==z):[...n,z])},[a,n,x]),L=u.useCallback(z=>{if(!p)return M(z);const R=new Set([z]);let U=!0;for(;U;){U=!1;for(const[V,X]of p)R.has(X)&&!R.has(V)&&(R.add(V),U=!0)}const W=[...R].every(V=>x.has(V));a(W?n.filter(V=>!R.has(V)):[...new Set([...n,...R])])},[p,M,n,x,a]),F=z=>{if(z.key==="Escape"){S(!1),h("");return}z.key==="ArrowDown"&&(z.preventDefault(),B(R=>Math.min(R+1,_.length-1))),z.key==="ArrowUp"&&(z.preventDefault(),B(R=>Math.max(R-1,0))),z.key==="Enter"&&_[m]&&(z.preventDefault(),M(_[m].value))},$=n.length===0?o:n.length===1?((Y=r.find(z=>z.value===n[0]))==null?void 0:Y.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:N.xs,color:y.muted,whiteSpace:"nowrap"},children:e}),t.jsx("button",{type:"button","aria-haspopup":"listbox","aria-expanded":w,title:l??(n.length>0?n.join(", "):o),onClick:()=>S(z=>!z),style:f?{width:24,height:24,display:"flex",alignItems:"center",justifyContent:"center",borderRadius:"4px",background:"transparent",border:"none",color:n.length>0?y.accent:y.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?y.accent:y.border}`,background:y.surface,fontSize:N.xs,color:n.length>0?y.primary:y.muted,cursor:"pointer",textAlign:"left"},children:f?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:$}),t.jsx("span",{style:{fontSize:"9px",color:y.faint},children:"▼"})]})}),w&&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:y.surface,border:`1px solid ${y.border}`,borderRadius:"7px",boxShadow:ci.lg,overflow:"hidden"},children:[t.jsx("input",{ref:C,value:g,onChange:z=>h(z.target.value),onKeyDown:F,placeholder:s,"aria-label":`Filter ${c??e}`,style:{width:"100%",padding:"7px 9px",border:"none",borderBottom:`1px solid ${y.borderLight}`,fontSize:N.xs,outline:"none",color:y.primary}}),t.jsxs("div",{style:{maxHeight:"260px",overflowY:"auto"},children:[v.length===0&&t.jsxs("div",{style:{padding:"10px",fontSize:N.xs,color:y.faint},children:["Nothing matches ","“",g,"”"]}),(P??_.map(z=>({option:z,depth:0,children:[]}))).map(({option:z,depth:R,children:U},W)=>{var ee;const V=x.has(z.value),X=!P&&z.group&&z.group!==((ee=_[W-1])==null?void 0:ee.group)?z.group:null;return t.jsxs("div",{children:[X&&t.jsx("div",{style:{position:"sticky",top:0,zIndex:1,padding:"4px 9px 2px",fontSize:"10px",fontWeight:600,color:y.faint,background:y.surface,borderBottom:`1px solid ${y.borderLight}`},children:X}),t.jsxs("div",{role:"option","aria-selected":V,onMouseEnter:()=>B(W),onClick:()=>L(z.value),style:{display:"flex",alignItems:"center",gap:"7px",padding:"5px 9px 5px "+(9+R*16)+"px",cursor:"pointer",fontSize:N.xs,background:W===m?y.surfaceAlt:"transparent",color:y.primary},children:[P&&t.jsx("button",{type:"button","aria-label":U.length>0?`${T.has(z.value)?"Collapse":"Expand"} ${z.label??z.value}`:void 0,disabled:U.length===0,onClick:G=>{G.stopPropagation(),U.length!==0&&D(k=>{const j=new Set(k);return j.has(z.value)?j.delete(z.value):j.add(z.value),j})},style:{width:"13px",padding:0,border:"none",background:"none",color:y.muted,cursor:U.length>0?"pointer":"default"},children:U.length>0?T.has(z.value)?"▾":"▸":""}),t.jsx("input",{type:"checkbox",readOnly:!0,checked:V,style:{accentColor:y.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:y.faint,fontSize:"11px"},children:z.hint})]})]},z.value)}),O>0&&t.jsxs("div",{style:{padding:"7px 9px",fontSize:"11px",color:y.faint,borderTop:`1px solid ${y.borderLight}`},children:[O.toLocaleString()," more match. Keep typing to narrow, or use"," ","Select matches to take all ",v.length.toLocaleString(),"."]})]}),t.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"10px",padding:"6px 9px",borderTop:`1px solid ${y.borderLight}`},children:[t.jsxs("button",{type:"button",onClick:()=>a(v.map(z=>z.value)),style:{fontSize:"11px",color:"#2563EB",background:"none",border:"none",cursor:"pointer",padding:0},children:["Select ",g?`matches (${v.length})`:`all (${r.length})`]}),t.jsx("button",{type:"button",onClick:()=>a([]),style:{fontSize:"11px",color:y.muted,background:"none",border:"none",cursor:"pointer",padding:0},children:"None"}),n.length>0&&t.jsxs("span",{style:{marginLeft:"auto",fontSize:"11px",color:y.faint},children:[n.length," picked"]})]})]})]})}const yr="#E5E5E0",gd="#2DD4A8",_t=40;function gr(e,r){var s;const n=e.id.toLowerCase(),a=((s=e.shortId)==null?void 0:s.toLowerCase())??"",o=e.name.toLowerCase();return n===r||a===r?0:n.startsWith(r)||a.startsWith(r)?1:o.startsWith(r)?2:n.includes(r)||o.includes(r)?3:4}function xd(e,r){const n=r.query.trim().toLowerCase();return n?Object.values(e).filter(a=>a.id!==r.excludeId).filter(a=>[a.id,a.shortId,a.name,a.kind].filter(Boolean).join(" ").toLowerCase().includes(n)).sort((a,o)=>gr(a,n)-gr(o,n)||a.name.localeCompare(o.name)).slice(0,r.limit??_t):[]}function bd(e){const r=new Map;for(const n of e){let a=r.get(n.kind);a||(a={kind:n.kind,layer:n.layer,elements:[]},r.set(n.kind,a)),a.elements.push(n)}return[...r.values()]}function vd(e,r){return xd(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=>$e(r.source,n,r.registries).length>0).slice(0,r.limit??_t)}function wd({element:e,model:r,registries:n,enabled:a,onCreate:o}){var x;const[s,i]=u.useState(""),[l,c]=u.useState(!1),[d,p]=u.useState(0),[f,b]=u.useState([]),w=u.useRef(null),S=u.useRef(null);u.useEffect(()=>{i(""),c(!1),p(0),b([])},[e.id]);const g=u.useMemo(()=>Array.from(new Set(Object.values(r.elements).map(v=>v.kind))).sort(),[r.elements]),h=u.useMemo(()=>vd(r.elements,{query:s,source:e,registries:n,filterKinds:f}),[r.elements,e,s,n,f]),m=u.useMemo(()=>bd(h),[h]),B=u.useMemo(()=>m.flatMap(v=>v.elements),[m]);u.useEffect(()=>{p(0)},[s]),u.useEffect(()=>{var v,_;l&&((_=(v=S.current)==null?void 0:v.querySelector('[data-active="true"]'))==null||_.scrollIntoView({block:"nearest"}))},[d,l]);const T=u.useCallback(v=>{const _=$e(e,v,n);if(_.length>0){const O=["trace","satisfies","implements","verifies","validates"],M=_.find(L=>O.some(F=>L.definition.name.toLowerCase().includes(F)||L.definition.label.toLowerCase().includes(F)))??_[0];o({type:M.definition.name,sourceId:M.sourceId,targetId:M.targetId,direction:M.direction})}i(""),c(!1)},[e,n,o]),D=u.useCallback(()=>{i(""),c(!1)},[]),A=u.useCallback(v=>{if(v.key==="Escape"){if(l){c(!1);return}D();return}if(!l||B.length===0){v.key==="ArrowDown"&&B.length>0&&(v.preventDefault(),c(!0));return}if(v.key==="ArrowDown")v.preventDefault(),p(_=>(_+1)%B.length);else if(v.key==="ArrowUp")v.preventDefault(),p(_=>(_-1+B.length)%B.length);else if(v.key==="Enter"){v.preventDefault();const _=B[d];_&&T(_)}},[l,B,d,T,D]),C=(x=B[d])==null?void 0:x.id;return t.jsx("div",{className:"mt-1.5",style:{opacity:a?1:.6},children:t.jsxs("div",{className:"relative",children:[t.jsxs("div",{className:"flex gap-2",children:[t.jsx("input",{ref:w,value:s,disabled:!a,onChange:v=>{i(v.target.value),c(!0)},onFocus:()=>{s.trim()&&c(!0)},onBlur:()=>{window.setTimeout(()=>c(!1),120)},onKeyDown:A,placeholder:a?"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&&C?`memo-quick-add-${C}`:void 0,role:"combobox",autoComplete:"off",className:"flex-1 px-2 py-1 rounded focus:outline-none",style:{fontSize:N.xs,background:"#FFFFFF",border:`1px solid ${l&&s.trim()?gd:yr}`,color:"#374151",minWidth:0}}),t.jsx("div",{style:{flexShrink:0},children:t.jsx(Lt,{label:"",options:g.map(v=>({value:v,label:v})),selected:f,onChange:b,allLabel:"All Types",iconOnly:!0})})]}),l&&s.trim()&&t.jsxs("div",{id:"memo-quick-add-matches",ref:S,role:"listbox",className:"absolute left-0 right-0 z-20 mt-1 rounded overflow-y-auto",style:{maxHeight:240,background:"#FFFFFF",border:`1px solid ${yr}`,boxShadow:"0 8px 24px rgba(15,23,42,0.14)"},children:[B.length===0?t.jsxs("div",{className:"px-2 py-2",style:{fontSize:N.xs,color:"#9CA3AF"},children:["No MEMO-legal trace target matches “",s.trim(),"”."]}):m.map(v=>t.jsxs("div",{children:[t.jsx(kd,{kind:v.kind,layer:v.layer,count:v.elements.length}),v.elements.map(_=>t.jsx(Sd,{element:_,active:_.id===C,onSelect:()=>T(_)},_.id))]},v.kind)),h.length===_t&&t.jsxs("div",{className:"px-2 py-1",style:{fontSize:"10px",color:"#9CA3AF"},children:["Showing the first ",_t," matches — keep typing to narrow."]})]})]})})}function kd({kind:e,layer:r,count:n}){const a=le[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:a,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 Sd({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:a=>{a.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:N.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 Ed={text:"14px",heading:"13px",meta:"12px",valuePadding:"9px 12px",fieldGap:"10px",sectionPadding:"0 0 18px 0",radius:"10px",twoColumnAttributes:!0},Cd={text:"12px",heading:"12px",meta:"11px",valuePadding:"4px 7px",fieldGap:"5px",sectionPadding:"0 0 10px 0",radius:"7px",twoColumnAttributes:!1};function Oe(e){return e==="page"?Ed:Cd}const ha={kind:"editable"},jd={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 xr(e){const r=jd[e];return r?{kind:"identity",reason:r}:ha}function tu(e){return e==="doc"?ha:{kind:"derived",reason:`"${e}" is derived from the SysML source when the model is built.`}}function vn(e){return e.kind==="editable"}function ya(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 Dd({title:e,count:r,actions:n,density:a,defaultOpen:o=!0,collapsible:s=!0,children:i}){const[l,c]=u.useState(o),d=Oe(a),p=a==="page",f=s?l:!0;return t.jsxs("section",{style:{padding:p?"16px 18px":d.sectionPadding,border:p?"1px solid rgba(60,60,67,0.12)":"none",borderBottom:p?"1px solid rgba(60,60,67,0.12)":`1px solid ${y.borderLight}`,borderRadius:p?14:0,background:p?y.surface:"transparent",boxShadow:p?"0 1px 2px rgba(15,23,42,0.04)":"none",marginBottom:p?14:0},children:[t.jsxs("header",{className:"flex items-center gap-2",style:{cursor:s?"pointer":"default",padding:p?"0 0 10px 0":"6px 10px",borderRadius:p?0:"6px",margin:p?0:"2px 4px"},onClick:s?()=>c(b=>!b):void 0,onMouseEnter:b=>{!p&&s&&(b.currentTarget.style.background=y.surfaceAlt)},onMouseLeave:b=>{p||(b.currentTarget.style.background="transparent")},children:[t.jsx("h3",{style:{flex:1,margin:0,fontSize:p?d.heading:"10px",fontWeight:p?700:"bold",color:p?y.primary:"#6B7280",letterSpacing:p?0:"0.05em",textTransform:p?"none":"uppercase"},children:e}),typeof r=="number"&&(p?t.jsx("span",{style:{fontSize:d.meta,color:y.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:p?d.meta:14},children:f?"▾":"▸"})]}),f&&t.jsx("div",{style:{padding:p?0:"0 14px 8px"},children:i})]})}function br({value:e,editability:r,density:n,mono:a}){const o=Oe(n),s=r.kind==="editable"?"":r.reason;return t.jsxs("div",{title:s||ya(r),style:{display:"flex",alignItems:"center",gap:6,padding:o.valuePadding,borderRadius:o.radius,background:y.surfaceAlt,border:"1px solid transparent",color:y.muted,fontSize:o.text,fontFamily:a?"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:y.faint,fontStyle:"italic"},children:"none"})}),t.jsx("span",{"aria-hidden":!0,style:{fontSize:o.meta,color:"#C7CBD1",flexShrink:0},children:"🔒"})]})}function Qe({value:e,onSave:r,density:n,multiline:a,placeholder:o,autoFocus:s,compact:i=!1}){const[l,c]=u.useState(!1),[d,p]=u.useState(!1),[f,b]=u.useState(e),w=Oe(n),S=u.useRef(!1),g=u.useRef(null),[h,m]=u.useState(null),[B,T]=u.useState(0),D=E(M=>M.model),A=E(M=>M.inspectElement);u.useEffect(()=>{b(e)},[e]);const C=u.useMemo(()=>h===null||!D?[]:Object.values(D.elements).filter(M=>{const L=(M.shortId??"").toLowerCase(),F=M.id.toLowerCase(),$=M.name.toLowerCase();return L.includes(h)||F.includes(h)||$.includes(h)}).slice(0,10),[h,D]),x=u.useCallback(()=>{S.current||h===null&&(S.current=!0,c(!1),f!==e&&r(f))},[f,e,r,h]),v=u.useCallback(M=>{var L;if(h!==null){if(M.key==="ArrowDown"){M.preventDefault(),T(F=>(F+1)%Math.max(1,C.length));return}if(M.key==="ArrowUp"){M.preventDefault(),T(F=>(F-1+C.length)%Math.max(1,C.length));return}if(M.key==="Enter"||M.key==="Tab"){M.preventDefault();const F=C[B];if(F){const $=((L=g.current)==null?void 0:L.selectionStart)??0,Y=f.slice(0,$),z=f.slice($),R=Y.match(/(?:^|\s)@([a-zA-Z0-9_-]*)$/);if(R){const U=$-R[1].length-1,W=`[${F.name}](@${F.shortId??F.id}) `,V=f.slice(0,U)+W+z;b(V),m(null),setTimeout(()=>{g.current&&(g.current.selectionStart=U+W.length,g.current.selectionEnd=g.current.selectionStart,g.current.focus())},0)}}else m(null);return}if(M.key==="Escape"){M.preventDefault(),m(null);return}}M.key==="Enter"&&!a&&(M.preventDefault(),x()),M.key==="Escape"&&(S.current=!0,b(e),c(!1))},[x,a,e,h,C,B,f]),_=M=>{const L=M.target.value;b(L);const F=M.target.selectionStart??0,Y=L.slice(0,F).match(/(?:^|\s)@([a-zA-Z0-9_-]*)$/);Y?(m(Y[1].toLowerCase()),T(0)):m(null)},O=()=>{S.current=!1,b(e),c(!0)};if(l){const M={ref:g,value:f,autoFocus:!0,onChange:_,onBlur:()=>{setTimeout(x,200)},onKeyDown:v,placeholder:o,style:{width:"100%",padding:i?"5px 8px":w.valuePadding,borderRadius:i?"6px":w.radius,border:`1px solid ${y.accent}`,boxShadow:`0 0 0 3px ${y.accent}25`,background:y.surface,color:y.primary,fontSize:w.text,fontFamily:"inherit",outline:"none",...a?{minHeight:n==="page"?"110px":"54px",resize:"vertical",lineHeight:1.6}:{}}};return t.jsxs("div",{style:{position:"relative",width:"100%"},children:[a?t.jsx("textarea",{...M}):t.jsx("input",{type:"text",...M}),h!==null&&C.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:C.map((L,F)=>t.jsxs("div",{style:{padding:"6px 12px",fontSize:13,cursor:"pointer",background:F===B?"#F3F4F6":"#fff",display:"flex",justifyContent:"space-between"},onClick:()=>{var U,W;const $=((U=g.current)==null?void 0:U.selectionStart)??f.length,Y=f.slice(0,$),z=f.slice($),R=Y.match(/(?:^|\s)@([a-zA-Z0-9_-]*)$/);if(R){const V=$-R[1].length-1,X=f.slice(0,V)+`[${L.name}](@${L.shortId??L.id}) `+z;b(X)}m(null),(W=g.current)==null||W.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 P=M=>{if(!M)return o??"Click to add…";if(!D)return M;const L=/(\[[^\]]+\]\(@[a-zA-Z0-9_-]+\)|@[a-zA-Z0-9_-]+)/g;return M.split(L).map(($,Y)=>{let z="",R="";if($.startsWith("@"))z=$.slice(1);else if($.startsWith("[")&&$.includes("](@")){const U=$.match(/\[([^\]]+)\]\(@([a-zA-Z0-9_-]+)\)/);U&&(R=U[1],z=U[2])}if(z){const U=Object.values(D.elements).find(W=>(W.shortId??W.id)===z)||D.elements[z];if(U)return t.jsx("span",{onClick:W=>{W.stopPropagation(),A(U.id)},style:{color:y.accent,cursor:"pointer",fontWeight:600,background:"#E0F2FE",padding:"1px 4px",borderRadius:"4px"},title:U.name,children:R||`@${U.shortId??U.id}`},Y)}return t.jsx("span",{children:$},Y)})};return t.jsxs("div",{role:"button",tabIndex:0,title:"Click to edit",onClick:O,onFocus:()=>p(!0),onBlur:()=>p(!1),onKeyDown:M=>{(M.key==="Enter"||M.key===" ")&&(M.preventDefault(),O())},onMouseEnter:()=>p(!0),onMouseLeave:()=>p(!1),style:{display:"flex",alignItems:"flex-start",gap:6,padding:i?"5px 8px":w.valuePadding,borderRadius:i?"6px":w.radius,background:d?"#F3F4F6":"transparent",border:`1px solid ${d?"#E5E7EB":"transparent"}`,boxShadow:"none",color:e?y.primary:y.faint,fontSize:w.text,cursor:"text",transition:"background-color 150ms ease, border-color 150ms ease",lineHeight:a?1.6:1.4,whiteSpace:a?"pre-wrap":"nowrap",overflow:"hidden",minWidth:0},children:[t.jsx("span",{style:{flex:1,minWidth:0,overflow:"hidden",textOverflow:"ellipsis"},children:P(e)}),t.jsx("span",{"aria-hidden":!0,style:{flexShrink:0,fontSize:w.meta,color:y.accent,opacity:d?1:0,transition:"opacity 150ms ease"},children:"✎"})]})}function nu({label:e,editability:r,density:n,children:a}){const o=Oe(n);return t.jsxs("div",{style:{minWidth:0},children:[t.jsxs("div",{className:"flex items-center gap-1.5",style:{marginBottom:4,fontSize:o.meta,color:y.muted},children:[t.jsx("span",{style:{fontFamily:"ui-monospace, SFMono-Regular, Menlo, monospace"},children:e}),t.jsx("span",{className:"sr-only",children:ya(r)}),!vn(r)&&t.jsx("span",{title:r.kind==="editable"?"":r.reason,style:{fontSize:"10px",padding:"0 4px",borderRadius:4,background:y.surfaceAlt,color:y.faint,border:`1px solid ${y.border}`},children:r.kind==="identity"?"identifier":"derived"})]}),a]})}function ru({density:e}){const r=Oe(e);return t.jsxs("div",{className:"flex items-center gap-4 flex-wrap",style:{fontSize:r.meta,color:y.faint},children:[t.jsxs("span",{className:"flex items-center gap-1.5",children:[t.jsx("span",{style:{color:y.accent},children:"✎"})," editable here"]}),t.jsx("span",{children:"Identity and source metadata are read-only"})]})}function Bd(e,r,n,a){var c;const o=new Map,s=(d,p)=>{var w;const f=p==="outgoing"?d.targetId:d.sourceId,b=o.get(f)??{id:f,element:n.elements[f],links:[]};b.links.push({relationship:d,direction:p,label:((w=Bn(d.type,a))==null?void 0:w.label)??d.type}),o.set(f,b)};e.forEach(d=>s(d,"outgoing")),r.forEach(d=>s(d,"incoming"));const i=new Map;for(const d of o.values()){const p=((c=d.element)==null?void 0:c.layer)||"other";i.set(p,[...i.get(p)??[],d])}const l=d=>{const p=tt.indexOf(d);return p<0?Number.MAX_SAFE_INTEGER:p};return[...i.entries()].map(([d,p])=>({layer:d,elements:p.sort((f,b)=>{var w,S;return(((w=f.element)==null?void 0:w.name)??f.id).localeCompare(((S=b.element)==null?void 0:S.name)??b.id)})})).sort((d,p)=>l(d.layer)-l(p.layer)||d.layer.localeCompare(p.layer))}function Ad({element:e,model:r,registries:n,outgoing:a,incoming:o,density:s,onNavigate:i,onCreate:l,onDelete:c}){const[d,p]=u.useState(""),f=u.useMemo(()=>Bd(a,o,r,n),[a,o,r,n]),b=d.trim().toLowerCase(),w=u.useMemo(()=>f.map(g=>({...g,elements:g.elements.filter(h=>{var m,B,T;return!b||[(m=h.element)==null?void 0:m.name,(B=h.element)==null?void 0:B.kind,(T=h.element)==null?void 0:T.shortId,h.id,g.layer,...h.links.map(D=>D.label)].filter(Boolean).join(" ").toLowerCase().includes(b)})})).filter(g=>g.elements.length>0),[f,b]),S=f.reduce((g,h)=>g+h.elements.length,0);return t.jsxs("div",{style:{border:s==="page"?"none":`1px solid ${y.border}`,borderRadius:12,background:s==="page"?"transparent":y.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:y.primary,fontSize:13,fontWeight:700},children:"Linked elements"}),t.jsxs("div",{style:{color:y.muted,fontSize:11},children:[S," element",S===1?"":"s"," across ",f.length," layer",f.length===1?"":"s"]})]}),S>6&&t.jsx("input",{value:d,onChange:g=>p(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 ${y.border}`,background:"#F9FAFB",color:y.primary,fontSize:13,outline:"none"}})]}),S===0&&t.jsx("div",{style:{color:y.faint,fontSize:12},children:"No linked elements."}),t.jsx("div",{style:{display:"flex",flexDirection:"column",gap:14},children:w.map(g=>{const h=le[g.layer]||y.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:y.primary,fontSize:14,letterSpacing:"0.02em"},children:Mt[g.layer]??g.layer}),t.jsx("span",{style:{color:y.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(m=>t.jsx(Fd,{element:e,linked:m,registries:n,color:h,onNavigate:i,onCreate:l,onDelete:c},m.id))})]},g.layer)})})]})}function Fd({element:e,linked:r,registries:n,color:a,onNavigate:o,onCreate:s,onDelete:i}){var b,w,S,g;const[l,c]=u.useState(!1),d=u.useMemo(()=>!e||!r.element?[]:$e(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]),p=r.links.map(h=>`${h.relationship.type}::${h.direction}`),f=u.useCallback(h=>{if(h.length===0||!s||!i)return;const m=new Set(h),B=new Set(p);for(const D of r.links)m.has(`${D.relationship.type}::${D.direction}`)||i(D.relationship.id);const T=$e(e,r.element,n);for(const D of h)if(!B.has(D)){const A=T.find(C=>`${C.definition.name}::${C.direction}`===D);A&&s({type:A.definition.name,sourceId:A.sourceId,targetId:A.targetId,direction:A.direction})}},[p,r.links,e,r.element,n,s,i]);return t.jsx("button",{onClick:()=>o(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?a+"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(Lt,{label:"",options:d,selected:p,onChange:f,iconOnly:!0,align:"right",title:"Change relationship type"})})]}),t.jsx("strong",{className:"truncate",style:{display:"block",color:y.primary,fontSize:13},children:((w=r.element)==null?void 0:w.name)??r.id}),t.jsx("div",{className:"font-mono truncate",style:{color:"#9CA3AF",fontSize:"10px",marginTop:2},title:r.id,children:((S=r.element)==null?void 0:S.shortId)??r.id}),t.jsx("div",{style:{color:y.muted,fontSize:10,marginTop:2},children:((g=r.element)==null?void 0:g.kind)??"Unknown element type"})]})})}function Nd({element:e,outgoing:r,incoming:n,density:a}){const o=E(P=>P.model),s=E(P=>P.connected),i=E(P=>P.selectElement),l=E(P=>P.selectedDiagramId),c=E(P=>P.pendingRelationships),d=E(P=>P.createRelationship),p=E(P=>P.deleteRelationship),f=E(P=>P.dismissPendingRelationship),b=E(P=>P.addElementToDiagram),[w,S]=u.useState(!1),[g,h]=u.useState(null),[m,B]=u.useState(["Requirement","Risk","Function","SystemFunction","ComponentFunction"]),T=u.useMemo(()=>na(o),[o]);u.useEffect(()=>{h(null),S(!1),B(["Requirement","Risk","Function","SystemFunction","ComponentFunction"])},[e.id]);const D=c.filter(P=>P.sourceId===e.id||P.targetId===e.id),A=r.length+n.length,C=u.useCallback(async P=>{var z;h(null);const M=await d({...P,selectedElementId:e.id,diagramId:l??void 0});if(!M.success){h({kind:"error",message:M.error??"The relationship could not be created."});return}const L=P.sourceId===e.id?P.targetId:P.sourceId,F=qt(o,l),$=(z=M.diagnostics)==null?void 0:z.find(R=>R.code==="REL-005"),Y=!!F&&!!F.elementIds&&F.elementIds.length>0&&!F.elementIds.includes(L);h(Y&&!$&&l?{kind:"success",message:`Relationship created in ${M.sourceFile??"the model"}.`,offerAddToView:{elementId:L,diagramId:l}}:$?{kind:"success",message:`Relationship created in ${M.sourceFile??"the model"}.`,profileMessage:$.message}:null)},[d,e.id,l,o]),x=u.useCallback(async P=>{const M=await p(P);M.success||h({kind:"error",message:M.error??"The relationship could not be deleted."})},[p]),v=u.useMemo(()=>{const P=new Map,M=(L,F)=>{const $=F==="outgoing"?L.targetId:L.sourceId,Y=o==null?void 0:o.elements[$],z=(Y==null?void 0:Y.kind)||"Unknown Type",R=P.get(z)??new Map,U=R.get($)??[];U.push({rel:L,direction:F}),R.set($,U),P.set(z,R)};return o&&(r.forEach(L=>M(L,"outgoing")),n.forEach(L=>M(L,"incoming"))),P},[r,n,o]),_=Array.from(v.keys()).sort(),O=new Map([...v.entries()].filter(([P])=>m.includes(P)));return o?t.jsx(t.Fragment,{children:t.jsxs(Dd,{title:"Relationships",count:A,density:a,collapsible:a==="panel",actions:t.jsxs("div",{className:"flex items-center gap-1",children:[A>0&&t.jsx("button",{onClick:()=>S(!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:P=>P.currentTarget.style.background="#F3F4F6",onMouseLeave:P=>P.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(Lt,{label:"",options:_.map(P=>({value:P,label:P})),selected:m,onChange:B,allLabel:"None",iconOnly:!0,align:"right"})]}),children:[t.jsx("div",{style:{marginBottom:a==="page"?14:8,maxWidth:a==="page"?720:void 0},children:t.jsx(wd,{element:e,model:o,registries:T,enabled:s,onCreate:C})}),w&&t.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/60 backdrop-blur-sm",style:{padding:"2rem"},onClick:()=>S(!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:P=>P.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:()=>S(!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(Ad,{element:e,model:o,registries:T,outgoing:r,incoming:n,density:a,onNavigate:P=>{S(!1),i(P)},onCreate:d,onDelete:x})})]})}),A===0&&D.length===0&&t.jsx("div",{style:{fontSize:Oe(a).meta,color:y.faint,padding:"2px 0 6px"},children:"No relationships yet — add the first one below."}),A>0&&O.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:[...O.entries()].map(([P,M])=>t.jsxs("div",{children:[t.jsx("div",{style:{fontSize:"10px",color:y.muted,textTransform:"uppercase",fontWeight:700,letterSpacing:"0.04em",marginBottom:6},children:P}),t.jsx("div",{style:{display:"flex",flexDirection:"column",gap:6},children:[...M.entries()].map(([L,F])=>t.jsx(Rd,{sourceElement:e,oppositeId:L,links:F,model:o,registries:T,density:a,deletable:s,onNavigate:()=>i(L),onCreate:d,onDelete:x},L))})]},P))}),D.map(P=>t.jsx(Id,{pending:P,model:o,onDismiss:()=>f(P.pendingId)},P.pendingId)),g&&t.jsx(Td,{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:o})]})}):null}function Td({status:e,onAddToView:r,onDismiss:n,model:a}){var i;const o=e.kind==="success",s=e.offerAddToView?((i=a.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:o?"#F0FDF4":"#FEF2F2",border:`1px solid ${o?"#BBF7D0":"#FECACA"}`,color:o?"#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:N.xs},children:["Relationship created. Add ",s," to this view?"]})]})}function Rd({sourceElement:e,oppositeId:r,links:n,model:a,registries:o,deletable:s,density:i,onNavigate:l,onCreate:c,onDelete:d}){const p=a.elements[r],f=p&&le[p.layer]||"#666",[b,w]=u.useState(!1),[S,g]=u.useState(!1),[h,m]=u.useState(null),B=Oe(i),T=n.filter(x=>s&&x.rel.named===!0),D=u.useMemo(()=>!e||!p?[]:$e(e,p,o).map(x=>({value:`${x.definition.name}::${x.direction}`,label:`${x.definition.label} ${x.direction==="outgoing"?"to":"from"}`})),[e,p,o]),A=n.map(x=>`${x.rel.type}::${x.direction}`),C=u.useCallback(x=>{if(x.length===0||!c||!d)return;const v=new Set(x),_=new Set(A);for(const P of n)v.has(`${P.rel.type}::${P.direction}`)||d(P.rel.id);const O=$e(e,p,o);for(const P of x)if(!_.has(P)){const M=O.find(L=>`${L.definition.name}::${L.direction}`===P);M&&c({type:M.definition.name,sourceId:M.sourceId,targetId:M.targetId,direction:M.direction})}},[A,n,e,p,o,c,d]);return t.jsxs("div",{onMouseEnter:()=>g(!0),onMouseLeave:()=>g(!1),style:{borderLeft:`3px solid ${f}`,borderRadius:6,background:y.surface,borderTop:`1px solid ${y.borderLight}`,borderRight:`1px solid ${y.borderLight}`,borderBottom:`1px solid ${y.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 ${(p==null?void 0:p.name)??r}`,children:[t.jsx("strong",{className:"truncate font-mono",style:{color:y.primary,fontSize:"11px",fontWeight:600},children:(p==null?void 0:p.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:x=>x.stopPropagation(),style:{flexShrink:0},children:t.jsx(Lt,{label:"",options:D,selected:A,onChange:C,allLabel:"Relationships",iconOnly:!0,align:"right"})}),t.jsx("button",{onClick:()=>w(x=>!x),style:{background:"none",border:"none",cursor:"pointer",color:y.faint,padding:2},"aria-label":b?"Hide relationship details":"Show relationship details",children:b?"▾":"▸"}),T.length>0&&(S||b||h==="header")&&t.jsxs("div",{className:"relative flex items-center",children:[t.jsx("button",{onClick:x=>{x.stopPropagation(),m("header")},"aria-label":`Remove relationships to ${(p==null?void 0:p.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:x=>x.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 ",T.length>1?`all ${T.length} relationships`:"relationship","?"]}),t.jsxs("div",{className:"flex gap-1.5 justify-end",children:[t.jsx("button",{onClick:()=>m(null),className:"px-2 py-1 rounded",style:{fontSize:"10px",background:"#F3F4F6",color:"#4B5563",border:"none",cursor:"pointer"},children:"Cancel"}),t.jsx("button",{onClick:()=>{m(null),T.forEach(x=>d(x.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 ${y.borderLight}`,paddingTop:7},children:n.map(({rel:x,direction:v},_)=>{const O=Bn(x.type,o),P=s&&x.named===!0;return t.jsxs("div",{style:{fontSize:"10px",color:"#6B7280",marginTop:_>0?8:0,paddingTop:_>0?8:0,borderTop:_>0?`1px dashed ${y.borderLight}`:"none"},children:[t.jsx(Et,{label:"Kind",value:(O==null?void 0:O.label)??x.type,valueColor:f}),t.jsx(Et,{label:"Roles",value:`${x.sourceEnd||(O==null?void 0:O.sourceEnd.name)||"source"} → ${x.targetEnd||(O==null?void 0:O.targetEnd.name)||"target"}`}),t.jsx(Et,{label:"ID",value:x.id,mono:!0}),t.jsx(Et,{label:"Source",value:x.file||"—",mono:!0}),!x.named&&t.jsx("div",{style:{color:"#D97706",marginTop:4},children:"Anonymous connection — name it in SysML to allow deletion from here."}),P&&t.jsxs("div",{className:"relative inline-block mt-2",children:[t.jsx("button",{onClick:M=>{M.stopPropagation(),m(x.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===x.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:M=>M.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:()=>m(null),className:"px-2 py-1 rounded",style:{fontSize:"10px",background:"#F3F4F6",border:"none",cursor:"pointer"},children:"Cancel"}),t.jsx("button",{onClick:()=>{m(null),d(x.id)},className:"px-2 py-1 rounded",style:{fontSize:"10px",background:"#EF4444",color:"#FFFFFF",border:"none",cursor:"pointer"},children:"Remove"})]})]})]})]},x.id)})})]})}function Et({label:e,value:r,mono:n,valueColor:a}){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:a??"#374151"},title:r,children:r})]})}function Id({pending:e,model:r,onDismiss:n}){const a=e.direction==="outgoing"?e.targetId:e.sourceId,o=r.elements[a],s=e.status==="failed";return t.jsxs("div",{className:"flex items-center gap-1.5 ml-2 rounded",style:{padding:"4px 8px",fontSize:N.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:N.xs},children:e.label}),t.jsx("span",{className:"truncate flex-1",children:(o==null?void 0:o.name)??a}),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 Te="panel";function ce({title:e,count:r,defaultOpen:n=!0,actions:a,children:o}){const[s,i]=u.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}),a&&t.jsx("span",{onClick:l=>l.stopPropagation(),children:a}),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:o})]})}function Md({label:e,kind:r,kindColor:n,onClick:a,arrow:o,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:N.xs},onMouseEnter:c=>{l||(c.currentTarget.style.background="#F0F0ED")},onMouseLeave:c=>{l||(c.currentTarget.style.background="transparent")},onClick:a,children:[o&&t.jsx("span",{style:{color:"#9CA3AF"},children:o}),s&&t.jsx("span",{className:"px-1 py-0.5 rounded",style:{background:(i||"#2563EB")+"18",color:i||"#2563EB",fontSize:N.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:N.badge},children:r})]})}function _d(){const e=E(s=>s.model),r=E(s=>s.activeView),n=r.type==="diagram"?r.diagramId:null,a=qt(e,n);if(!a)return null;const o=Pe[a.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 ${(o==null?void 0:o.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:a.name}),t.jsxs("div",{className:"flex items-center gap-2 text-xs mt-2",children:[o&&t.jsx("span",{className:"px-2 py-0.5 rounded-md font-semibold",style:{background:o.color+"18",color:o.color},children:o.code}),t.jsx("span",{style:{color:"#6B7280",fontWeight:500},children:(o==null?void 0:o.fullName)||a.diagramType})]}),a.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:[a.description&&t.jsx(ce,{title:"Description",defaultOpen:!0,children:t.jsx("div",{className:"text-xs leading-relaxed",style:{color:"#374151"},children:a.description})}),t.jsx(ce,{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:N.xs},children:a.shortId??a.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:a.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:a.diagramType})]}),a.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:a.sourceFile,style:{color:"#1a1a1a",fontSize:N.xs},children:a.sourceFile})]})]})}),a.properties&&Object.keys(a.properties).length>0&&t.jsx(ce,{title:"Properties",count:Object.keys(a.properties).length,children:t.jsx("div",{className:"space-y-1.5",children:Object.entries(a.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))})}),a.elementIds&&a.elementIds.length>0&&t.jsx(ce,{title:"Scoped Elements",count:a.elementIds.length,defaultOpen:!1,children:t.jsx("div",{className:"text-xs",style:{color:"#6B7280"},children:a.elementIds.join(", ")})}),a.relationshipTypes&&a.relationshipTypes.length>0&&t.jsx(ce,{title:"Relationship Types",count:a.relationshipTypes.length,children:t.jsx("div",{className:"flex flex-wrap gap-1",children:a.relationshipTypes.map(s=>t.jsx("span",{className:"px-1.5 py-0.5 rounded text-xs",style:{background:"#EFF6FF",color:"#2563EB",fontSize:N.xs},children:s},s))})})]})]})}const Pd=4e3;function Od({elementId:e}){const r=E(i=>i.model),n=E(i=>i.lastSourceChange),[a,o]=u.useState(null),s=u.useMemo(()=>Xs(r,e),[r,e]);return u.useEffect(()=>{if(!Qs(n,s))return;o(n.at);const i=setTimeout(()=>o(null),Pd);return()=>clearTimeout(i)},[n==null?void 0:n.seq]),u.useEffect(()=>{o(null)},[e]),a?t.jsx("span",{title:"A source file this element depends on changed; the model was rebuilt",className:"px-1.5 rounded",style:{fontSize:N.badge,background:"#ECFDF5",color:"#047857",border:"1px solid #A7F3D0"},children:"↻ Updated"}):null}function Ud(){var A,C;const e=E(x=>x.model),r=E(x=>x.selectedElementId),n=E(x=>x.validation),a=E(x=>x.selectElement),o=E(x=>x.updateElementField),s=E(x=>x.updateElementAttribute),i=E(x=>x.applyEdit),l=E(x=>x.deleteModelElement),[c,d]=u.useState(!1);u.useEffect(()=>{d(!1)},[r]),u.useEffect(()=>{if(!r)return;const x=v=>{(v.metaKey||v.ctrlKey)&&v.key==="s"&&(v.preventDefault(),i(r),d(!1))};return window.addEventListener("keydown",x),()=>window.removeEventListener("keydown",x)},[r,i]);const p=u.useMemo(()=>r&&e?Js(e,r):[],[e,r]);if(!r||!e)return null;const f=e.elements[r];if(!f)return null;const b=p.filter(x=>x.sourceId===r),w=p.filter(x=>x.targetId===r),S=le[f.layer]||"#666",g=(n==null?void 0:n.violations.filter(x=>x.elementId===r))||[],h=new Set(["boundaryColor","boundaryOpacity","boundaryWidth","fill","stroke","opacity","color","backgroundColor","bounds.x","bounds.y","bounds.width","bounds.height"]),m=[["id",f.id],...f.uuid?[["uuid",f.uuid]]:[],["kind",f.kind],["layer",f.layer],...Object.entries(f.attributes).filter(([x])=>x!=="name"&&x!=="id"&&!h.has(x)&&x!=="description"&&x!=="shortDescription")],B=Object.entries(f.attributes).filter(([x])=>h.has(x)),T=(x,v)=>{s(r,x,v),i(r)},D=x=>{const v=x.trim();!v||v===f.name||(o(r,"name",v),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 ${S}`,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(Qe,{value:f.name,onSave:D,density:Te,placeholder:"Element name"})}),t.jsx("div",{className:"text-sm font-medium mt-3 text-gray-700",children:t.jsx(Qe,{value:f.attributes.shortDescription||"",onSave:x=>T("shortDescription",x),density:Te,multiline:!0,placeholder:"Add a short description..."})}),t.jsx("div",{className:"text-xs text-gray-500 mt-1.5 leading-relaxed",children:t.jsx(Qe,{value:f.attributes.description||"",onSave:x=>T("description",x),density:Te,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(f.id),title:`Copy ID: ${f.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(f.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:[f.parameters&&f.parameters.length>0&&t.jsx(ce,{title:"Parameters",count:f.parameters.length,children:t.jsx("div",{className:"space-y-1.5",children:f.parameters.map(x=>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:x.direction==="in"?"#EFF6FF":x.direction==="out"?"#FFF7ED":"#F0FDF4",color:x.direction==="in"?"#2563EB":x.direction==="out"?"#EA580C":"#16A34A"},children:x.direction}),t.jsx("span",{style:{color:"#374151",fontWeight:500},children:x.name}),t.jsx("span",{style:{color:"#6B7280"},children:":"}),t.jsx("span",{style:{color:"#6B7280"},children:x.type})]},x.name))})}),f.allocatedTo&&t.jsx(ce,{title:"Allocated To",defaultOpen:!0,children:t.jsx(Md,{label:((A=e.elements[f.allocatedTo])==null?void 0:A.name)||f.allocatedTo,kind:(C=e.elements[f.allocatedTo])==null?void 0:C.kind,kindColor:"#E67E22",arrow:"→",onClick:()=>a(f.allocatedTo)})}),B.length>0&&t.jsx(ce,{title:"Appearance",count:B.length,defaultOpen:!1,children:t.jsx("div",{className:"space-y-1.5",children:B.map(([x,v])=>{const _=xr(x);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:x}),t.jsx("div",{style:{flex:1,minWidth:0},children:x==="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(v))?String(v):"#14B8A6",onChange:O=>{const P=document.getElementById(`screen-node-${f.id}`);P&&(P.style.borderColor=O.target.value)},onBlur:O=>T(x,O.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(v)})]}):x==="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(v??"2"),onChange:O=>{const P=document.getElementById(`screen-node-${f.id}`);P&&(P.style.borderWidth=O.target.value+"px")},onMouseUp:O=>T(x,O.target.value),style:{width:"100%"}}),t.jsxs("span",{className:"font-mono text-[10px] text-gray-500 w-6",children:[v,"px"]})]}):vn(_)?t.jsx(Qe,{value:String(v??""),onSave:O=>T(x,O),density:Te,placeholder:"Click to set…"}):t.jsx(br,{value:String(v??""),editability:_,density:Te,mono:x!=="kind"&&x!=="layer"})})]},x)})})}),m.length>0&&t.jsx(ce,{title:"Attributes",count:m.length,defaultOpen:!1,children:t.jsx("div",{className:"space-y-1.5",children:m.map(([x,v])=>{const _=xr(x);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:x}),t.jsx("div",{style:{flex:1,minWidth:0},children:vn(_)?t.jsx(Qe,{value:String(v??""),onSave:O=>T(x,O),density:Te,multiline:x==="description"||x==="rationale",placeholder:"Click to set…"}):t.jsx(br,{value:String(v??""),editability:_,density:Te,mono:x!=="kind"&&x!=="layer"})})]},x)})})}),t.jsx(zd,{subject:f}),g.length>0&&t.jsx(ce,{title:"Guidance",count:g.length,defaultOpen:!0,children:t.jsx("div",{className:"space-y-2",children:g.map((x,v)=>t.jsxs("div",{className:"text-xs p-2.5 rounded-lg",style:{background:x.severity==="error"?"#FEF2F2":x.severity==="warning"?"#FFFBEB":"#EFF6FF",border:`1px solid ${x.severity==="error"?"#FECACA":x.severity==="warning"?"#FDE68A":"#BFDBFE"}`},children:[t.jsx("div",{style:{color:x.severity==="error"?"#DC2626":x.severity==="warning"?"#D97706":"#2563EB"},children:x.description}),t.jsxs("div",{className:"mt-0.5",style:{color:"#6B7280"},children:["[",x.ruleId,"]"]})]},`${x.ruleId}-${v}`))})}),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"]})}),f.file&&t.jsx(ce,{title:"Source",defaultOpen:!1,actions:t.jsx(Od,{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:x=>{x.currentTarget.style.background="#EFF6FF"},onMouseLeave:x=>{x.currentTarget.style.background="transparent"},onClick:()=>{navigator.clipboard.writeText(f.file).catch(()=>{})},title:"Click to copy path",children:[t.jsx("span",{style:{flexShrink:0},children:"⟨/⟩"}),t.jsx("span",{className:"font-mono truncate",children:f.file}),t.jsx("span",{style:{flexShrink:0,color:"#9CA3AF",fontSize:"9px"},children:"copy"})]})}),t.jsx(Nd,{element:f,outgoing:b,incoming:w,density:Te})]})]})}const Ct={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 zd({subject:e}){var P,M,L;const r=E(F=>F.model),n=E(F=>F.createModelElement),a=E(F=>F.createRelationship),o=E(F=>F.persistElementAttributes),[s,i]=u.useState(""),[l,c]=u.useState(""),[d,p]=u.useState(""),[f,b]=u.useState(null),[w,S]=u.useState(!1),[g,h]=u.useState(""),[m,B]=u.useState(null),[T,D]=u.useState("");if(!r)return null;const A=new Set(Object.values(Ct).map(F=>F.relation.toLowerCase())),x=[...new Set(r.relationships.filter(F=>A.has(F.type.toLowerCase())&&F.targetId===e.id).map(F=>F.sourceId))].map(F=>r.elements[F]).filter(F=>!!F),v=new Map;for(const F of r.relationships.filter($=>$.type.toLowerCase()==="composes"))((P=r.elements[F.sourceId])==null?void 0:P.kind)!=="ModelComment"||((M=r.elements[F.targetId])==null?void 0:M.kind)!=="ModelComment"||v.set(F.sourceId,[...v.get(F.sourceId)??[],r.elements[F.targetId]]);const _=async()=>{var R,U,W;if(!l.trim())return;const F=m?"comment":f??"comment";D("Saving…");const $=Ct[F],Y=s.trim()||`Model ${$.label}`,z=n({name:Y,kind:$.kind,construct:"part",layer:e.layer,file:e.file||"model/generated.sysml",doc:"",attributes:{shortDescription:Y,body:l.trim(),author:d.trim()||"currentReviewer",createdAt:new Date().toISOString(),...F==="comment"?{commentStatus:"CommentStatusKind::open"}:{},...F==="rationale"&&g.trim()?{basis:g.trim()}:{},...F==="note"&&g.trim()?{noteKind:g.trim()}:{}}});try{const V=(R=E.getState().model)==null?void 0:R.elements[z],X=Date.now()+1e4;for(;((U=E.getState().model)==null?void 0:U.elements[z])===V&&Date.now()<X;)await new Promise(k=>setTimeout(k,100));const ee=(W=E.getState().model)==null?void 0:W.elements[z];if(!ee||ee===V)throw new Error("The saved annotation did not appear in the rebuilt model.");const G=await a({type:m?"Composes":$.relation,sourceId:m??z,targetId:m?z:e.id,direction:"outgoing",selectedElementId:m??z});if(!G.success)throw new Error(G.error);i(""),c(""),h(""),B(null),b(null),D("Saved.")}catch(V){D(V instanceof Error?V.message:String(V))}},O=(F,$=!1)=>{var R;const Y=F.kind==="ModelRationale"?"rationale":F.kind==="ModelNote"?"note":"comment",z=Y==="rationale"?"#7C3AED":Y==="note"?"#2563EB":"#2DD4A8";return t.jsxs("div",{style:{marginLeft:$?14:0,borderLeft:`2px solid ${$?"#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:Y}),t.jsx("strong",{style:{color:"#374151"},children:F.attributes.author||"Unknown"}),t.jsx("span",{style:{color:"#9CA3AF"},children:F.attributes.createdAt||""})]}),t.jsx("div",{style:{fontSize:11,fontWeight:600,color:"#374151"},children:F.attributes.shortDescription||F.name}),t.jsx("div",{style:{fontSize:11,color:"#4B5563",whiteSpace:"pre-wrap"},children:F.attributes.body}),Y==="rationale"&&F.attributes.basis&&t.jsxs("div",{style:{fontSize:10,color:"#7C3AED"},children:["Basis: ",F.attributes.basis]}),Y==="note"&&F.attributes.noteKind&&t.jsxs("div",{style:{fontSize:10,color:"#2563EB"},children:["Kind: ",F.attributes.noteKind]}),Y==="comment"&&t.jsxs("div",{className:"flex gap-2",style:{marginTop:3},children:[!$&&t.jsx("button",{onClick:()=>{B(F.id),b("comment")},style:{border:0,background:"transparent",color:"#2563EB",fontSize:10,cursor:"pointer"},children:"Reply"}),!((R=F.attributes.commentStatus)!=null&&R.endsWith("resolved"))&&t.jsx("button",{onClick:()=>o(F.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"})]}),(v.get(F.id)??[]).map(U=>O(U,!0))]},F.id)};return t.jsxs(ce,{title:"Annotations",count:x.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 ${f==="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 ${f==="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 ${f==="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:()=>S(!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 (",x.length,")"]})]}),(f||m)&&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:m?"#0F766E":f==="rationale"?"#7C3AED":f==="note"?"#2563EB":"#2DD4A8"},children:m?`Replying to ${(L=r.elements[m])==null?void 0:L.name}`:`New ${Ct[f].label}`}),t.jsx("button",{onClick:()=>{b(null),B(null)},className:"text-gray-400 hover:text-gray-600",children:"✕"})]}),t.jsx("input",{value:d,onChange:F=>p(F.target.value),placeholder:"Author",style:{width:"100%",marginBottom:4,fontSize:11}}),t.jsx("input",{value:s,onChange:F=>i(F.target.value),placeholder:"Short summary",style:{width:"100%",marginBottom:4,fontSize:11}}),!m&&f!=="comment"&&t.jsx("input",{value:g,onChange:F=>h(F.target.value),placeholder:f==="rationale"?"Basis / evidence (optional)":"Note kind (optional)",style:{width:"100%",marginBottom:4,fontSize:11}}),t.jsx("textarea",{value:l,onChange:F=>c(F.target.value),placeholder:m?"Reply":Ct[f].placeholder,rows:3,style:{width:"100%",fontSize:11}}),t.jsxs("div",{className:"flex gap-2 mt-1",children:[t.jsx("button",{onClick:_,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"})]}),T&&t.jsx("div",{style:{fontSize:10,color:"#6B7280",marginTop:4},children:T})]}),w&&t.jsx("div",{className:"fixed inset-0 z-[100] flex items-center justify-center bg-black/30",onClick:()=>S(!1),children:t.jsxs("div",{className:"bg-white rounded-lg shadow-2xl w-[400px] max-h-[85vh] flex flex-col",onClick:F=>F.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:()=>S(!1),className:"text-gray-400 hover:text-gray-700",children:"✕"})]}),t.jsx("div",{className:"p-4 overflow-y-auto",children:x.length>0?x.map(F=>O(F)):t.jsx("div",{className:"text-gray-500 text-sm text-center py-8",children:"No annotations yet."})})]})})]})}function qd(){const e=E(d=>d.model),r=E(d=>d.selectedRelationshipId);if(!e||!r)return null;const n=e.relationships.find(d=>d.id===r);if(!n)return null;const a=e.elements[n.sourceId],o=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:[(a==null?void 0:a.name)??n.sourceId," → ",(o==null?void 0:o.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(ce,{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(ce,{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:(a==null?void 0:a.name)??n.sourceId})]}),t.jsxs("div",{children:[t.jsx("span",{style:{color:"#6B7280"},children:"Target"}),t.jsx("div",{style:{color:"#1a1a1a",fontWeight:500},children:(o==null?void 0:o.name)??n.targetId})]})]})}),t.jsx(ce,{title:"Traceability",defaultOpen:!1,children:t.jsx("div",{className:"text-xs",style:{color:"#6B7280"},children:n.file||"Model relationship"})})]})]})}function Ld(){const e=E(l=>l.selectedElementId),r=E(l=>l.activeView),n=E(l=>l.selectedRelationshipId),a=E(l=>l.propertiesPanelCollapsed),o=E(l=>l.togglePropertiesPanel);if(a)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:o,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:o,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(qd,{}):i?t.jsx(Ud,{}):s?t.jsx(_d,{}):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"})})]})}function an(e=y.border){return{borderTop:`1px solid ${e}`}}function Vd({placeholder:e,value:r,onChange:n}){return t.jsx("input",{type:"text",value:r,placeholder:e,onChange:a=>n(a.target.value),className:"flex-1 px-2 py-1 rounded focus:outline-none",style:{background:"#F7F7F5",border:"1px solid #E5E5E0",color:y.primary,fontSize:N.xs,minWidth:0}})}function $d({values:e}){const r=[...new Set(e.filter(Boolean))];return r.length===0?t.jsx("span",{style:{color:y.faint,fontSize:"12px"},children:"—"}):r.length===1?t.jsx("span",{style:{color:y.muted,fontSize:"12px"},children:r[0]}):t.jsxs("span",{style:{color:"#F59E0B",fontSize:"12px"},children:[r.length," different values"]})}function Wd(){const e=E(g=>g.model),r=E(g=>g.selectedElementIds),n=E(g=>g.clearElementSelection),a=E(g=>g.bulkUpdateAttributes),o=u.useMemo(()=>[...r],[r]),s=u.useMemo(()=>o.map(g=>e==null?void 0:e.elements[g]).filter(Boolean),[o,e]),i=u.useMemo(()=>{if(s.length===0)return[];const g="_",h=s.map(B=>new Set(Object.keys(B.attributes).filter(T=>!T.startsWith(g))));return[...h[0]].filter(B=>h.every(T=>T.has(B))).sort()},[s]),l=u.useMemo(()=>{const g={};for(const h of i)g[h]=s.map(m=>m.attributes[h]??"");return g},[s,i]),c=u.useMemo(()=>[...new Set(s.map(g=>g.kind))].sort(),[s]),[d,p]=u.useState({}),f=u.useCallback((g,h)=>{p(m=>({...m,[g]:h}))},[]),b=Object.values(d).some(g=>g!==""),w=u.useCallback(()=>{const g=Object.fromEntries(Object.entries(d).filter(([,h])=>h!==""));Object.keys(g).length!==0&&(a(o,g),p({}))},[d,o,a]),S=u.useCallback(()=>{p({})},[]);return s.length<2?null:t.jsxs("div",{className:"flex flex-col overflow-hidden",style:{width:"280px",background:y.surface,borderLeft:`1px solid ${y.border}`,fontSize:N.xs},children:[t.jsxs("div",{className:"flex items-center justify-between px-4 py-3 flex-shrink-0",style:{borderBottom:`1px solid ${y.border}`},children:[t.jsxs("div",{children:[t.jsx("div",{className:"font-semibold",style:{color:y.primary,fontSize:N.sm},children:"Bulk Edit"}),t.jsxs("div",{style:{color:y.muted,fontSize:"12px",marginTop:"2px"},children:[o.length," elements selected"]})]}),t.jsx("button",{onClick:n,className:"px-2 py-1 rounded",style:{color:y.muted,background:"#F0F0ED",fontSize:"12px"},title:"Clear selection",children:"✕ Clear"})]}),t.jsxs("div",{className:"px-4 py-3 flex-shrink-0",style:an(),children:[t.jsx("div",{style:{color:y.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:y.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:an(),children:[t.jsxs("div",{style:{color:y.muted,fontSize:"12px",fontWeight:600,marginBottom:"8px",textTransform:"uppercase",letterSpacing:"0.5px"},children:["Common Attributes",i.length>0&&t.jsxs("span",{style:{color:y.faint,fontWeight:400,marginLeft:"4px"},children:["(",i.length,")"]})]}),i.length===0?t.jsx("div",{style:{color:y.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:y.secondary,fontSize:"12px",fontWeight:500},children:g}),t.jsx($d,{values:l[g]})]}),t.jsx(Vd,{placeholder:`Set for all ${o.length} elements…`,value:d[g]??"",onChange:h=>f(g,h)})]},g))})]}),i.length>0&&t.jsxs("div",{className:"flex items-center gap-2 px-4 py-3 flex-shrink-0",style:an(),children:[t.jsx("button",{onClick:S,disabled:!b,className:"flex-1 py-1.5 rounded",style:{fontSize:N.xs,fontWeight:500,color:b?y.secondary:y.faint,background:b?"#F0F0ED":"#F7F7F5",cursor:b?"pointer":"default"},children:"Reset"}),t.jsxs("button",{onClick:w,disabled:!b,className:"flex-1 py-1.5 rounded font-semibold",style:{fontSize:N.xs,color:"#FFFFFF",background:b?"#2DD4A8":"#A7F3D0",cursor:b?"pointer":"default"},children:["Apply to ",o.length]})]})]})}const vr="memo-gapbar-pulse";if(typeof document<"u"&&!document.getElementById(vr)){const e=document.createElement("style");e.id=vr,e.textContent=`
4055
+ ${I}`,R={id:b,title:A.title,group:A.groupLabel,templateId:A.templateId,content:O,createdAt:Date.now(),authors:"",approvers:""};a(R),T.push(R),T.length===1&&e({type:"dhf-document",docId:R.id})}d(null)}return u.useEffect(()=>{if(!p)return;function m(){f(null)}return window.addEventListener("click",m),()=>window.removeEventListener("click",m)},[p]),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:y.accentDark,fontSize:N.explorer.item,fontWeight:600,color:"#fff",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",gap:"6px"},onMouseEnter:m=>{m.currentTarget.style.background="#254B60"},onMouseLeave:m=>{m.currentTarget.style.background=y.accentDark},children:[t.jsx("span",{style:{fontSize:"14px",lineHeight:1},children:"+"})," New Document"]})}),$e.filter(m=>n.some(B=>B.group===m.label)).map(m=>{const B=i.has(m.id),T=n.filter(A=>A.group===m.label);return t.jsxs("div",{children:[t.jsxs("button",{onClick:()=>S(m.id),onContextMenu:A=>x(A,m.id),className:"w-full flex items-center gap-2 px-3 py-2 text-left",style:{fontSize:N.xs,fontWeight:600,color:y.secondary,borderRadius:"4px"},onMouseEnter:A=>A.currentTarget.style.background=y.surfaceAlt,onMouseLeave:A=>A.currentTarget.style.background="transparent",title:"Right-click to add documents",children:[t.jsx("span",{style:{display:"inline-block",width:"7px",height:"7px",borderRadius:"50%",background:m.color,flexShrink:0}}),t.jsx("span",{className:"flex-1 uppercase tracking-wide",style:{fontSize:"10px"},children:m.label}),T.length>0&&t.jsx("span",{style:{fontSize:"10px",color:m.color,fontWeight:700},children:T.length}),t.jsx(Me,{expanded:B,size:11})]}),B&&T.map(A=>{const U=k===A.id;return t.jsxs("div",{style:{display:"flex",alignItems:"center",paddingLeft:"28px",paddingRight:"4px",background:U?`${m.color}18`:"transparent",borderLeft:U?`2px solid ${m.color}`:"2px solid transparent",cursor:"pointer"},onMouseEnter:E=>{U||(E.currentTarget.style.background=y.surfaceAlt)},onMouseLeave:E=>{E.currentTarget.style.background=U?`${m.color}18`:"transparent"},children:[t.jsxs("button",{onClick:()=>e({type:"dhf-document",docId:A.id}),style:{flex:1,display:"flex",alignItems:"center",gap:"6px",background:"none",border:"none",padding:"5px 0",fontSize:N.explorer.element,color:U?m.color:y.primary,fontWeight:U?600:400,cursor:"pointer",textAlign:"left"},children:[t.jsx(vn,{color:m.color}),t.jsx("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:A.id})]}),t.jsx("button",{onClick:E=>{E.stopPropagation(),o(A.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:E=>{E.currentTarget.style.opacity="1",E.currentTarget.style.color="#ef4444"},onMouseLeave:E=>{E.currentTarget.style.opacity="0",E.currentTarget.style.color="#9CA3AF"},children:"×"})]},A.id)})]},m.id)}),w.map(m=>{const B=`custom:${m}`,T=i.has(B),A=_l(m),U=n.filter(E=>E.group===m);return t.jsxs("div",{children:[t.jsxs("button",{onClick:()=>S(B),className:"w-full flex items-center gap-2 px-3 py-2 text-left",style:{fontSize:N.xs,fontWeight:600,color:y.secondary,borderRadius:"4px"},onMouseEnter:E=>E.currentTarget.style.background=y.surfaceAlt,onMouseLeave:E=>E.currentTarget.style.background="transparent",children:[t.jsx("span",{style:{display:"inline-block",width:"7px",height:"7px",borderRadius:"50%",background:A,flexShrink:0}}),t.jsx("span",{className:"flex-1 uppercase tracking-wide",style:{fontSize:"10px"},children:m}),t.jsx("span",{style:{fontSize:"10px",color:A,fontWeight:700},children:U.length}),t.jsx(Me,{expanded:T,size:11})]}),T&&U.map(E=>{const b=k===E.id;return t.jsxs("div",{style:{display:"flex",alignItems:"center",paddingLeft:"28px",paddingRight:"4px",background:b?`${A}18`:"transparent",borderLeft:b?`2px solid ${A}`:"2px solid transparent",cursor:"pointer"},onMouseEnter:g=>{b||(g.currentTarget.style.background=y.surfaceAlt)},onMouseLeave:g=>{g.currentTarget.style.background=b?`${A}18`:"transparent"},children:[t.jsxs("button",{onClick:()=>e({type:"dhf-document",docId:E.id}),style:{flex:1,display:"flex",alignItems:"center",gap:"6px",background:"none",border:"none",padding:"5px 0",fontSize:N.explorer.element,color:b?A:y.primary,fontWeight:b?600:400,cursor:"pointer",textAlign:"left"},children:[t.jsx(vn,{color:A}),t.jsx("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:E.id})]}),t.jsx("button",{onClick:g=>{g.stopPropagation(),o(E.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:g=>{g.currentTarget.style.opacity="1",g.currentTarget.style.color="#ef4444"},onMouseLeave:g=>{g.currentTarget.style.opacity="0",g.currentTarget.style.color="#9CA3AF"},children:"×"})]},E.id)})]},B)}),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."]})]}),p&&t.jsx("div",{style:{position:"fixed",zIndex:9998,left:p.x,top:p.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:m=>m.stopPropagation(),children:t.jsx("button",{onClick:()=>{d({initialGroupId:p.groupId}),f(null)},style:{display:"block",width:"100%",padding:"8px 14px",background:"none",border:"none",textAlign:"left",fontSize:"13px",color:"#1B3A4B",cursor:"pointer"},onMouseEnter:m=>m.currentTarget.style.background="#F3F4F6",onMouseLeave:m=>m.currentTarget.style.background="none",children:"Add document…"})}),c&&t.jsx(Ul,{initialGroupId:c.initialGroupId,existingDocs:n,numberingPrefix:s.documentNumberingPrefix||"DOC",onCreate:h,onClose:()=>d(null)})]})}const ma="memo-explorer-width",dt=300,ct=240,kn=720,cd=320;function on(){return typeof window>"u"||!window.innerWidth?kn:Math.max(ct,Math.min(kn,window.innerWidth-cd))}function ud(e){return Number.isFinite(e)?Math.min(kn,Math.max(ct,e)):dt}function pd(){if(typeof window>"u")return dt;try{const e=Number.parseInt(localStorage.getItem(ma)??"",10);return Number.isFinite(e)?ud(e):dt}catch{return dt}}function md(){var T,A,U;const e=C(E=>E.sidebarCollapsed),r=C(E=>E.toggleSidebar);C(E=>E.explorerTab);const n=C(E=>E.setExplorerTab),a=C(E=>E.searchTerm),o=C(E=>E.setSearchTerm),s=C(E=>E.model),i=C(E=>E.activeMode),l=C(E=>E.activeView),c=l.type==="diagram"&&((A=(T=s==null?void 0:s.diagrams)==null?void 0:T.find(E=>E.id===l.diagramId))==null?void 0:A.viewpointId)&&((U=s.diagrams.find(E=>E.id===l.diagramId))==null?void 0:U.viewpointId)!=="__model",d=c||i==="diagram"?"Viewpoints":"Model Explorer",[p,f]=u.useState(pd),[k,w]=u.useState(on),S=Math.min(p,k),x=u.useRef(null),h=u.useCallback(E=>{f(Math.max(ct,Math.min(on(),E)))},[]),m=u.useCallback(()=>{var E;(E=x.current)==null||E.call(x),x.current=null},[]),B=u.useCallback(E=>{if(E.button!==0)return;E.preventDefault(),m();const b=E.clientX,g=S,I=document.body.style.cursor,O=document.body.style.userSelect;document.body.style.cursor="col-resize",document.body.style.userSelect="none";const R=_=>{h(g+_.clientX-b)},F=()=>{window.removeEventListener("pointermove",R),window.removeEventListener("pointerup",F),window.removeEventListener("pointercancel",F),document.body.style.cursor=I,document.body.style.userSelect=O,x.current=null};x.current=F,window.addEventListener("pointermove",R),window.addEventListener("pointerup",F),window.addEventListener("pointercancel",F)},[h,S,m]);return u.useEffect(()=>{try{localStorage.setItem(ma,String(Math.round(p)))}catch{}},[p]),u.useEffect(()=>{const E=()=>w(on());return window.addEventListener("resize",E),()=>{window.removeEventListener("resize",E),m()}},[m]),u.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 ${y.border}`,cursor:"pointer"},children:[t.jsx("span",{style:{color:y.muted,fontSize:18,lineHeight:1},children:"›"}),t.jsx("span",{style:{color:y.muted,fontSize:10,writingMode:"vertical-rl"},children:d})]}):t.jsxs("div",{className:"flex flex-col overflow-hidden flex-shrink-0",style:{position:"relative",width:`${S}px`,background:y.surface,borderRight:`1px solid ${y.border}`},children:[t.jsxs("div",{className:"flex items-center justify-between px-3 py-2",style:{background:y.surfaceAlt,borderBottom:`1px solid ${y.border}`,flexShrink:0},children:[t.jsx("span",{style:{fontSize:N.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 ${y.border}`,borderRadius:5,background:"#FFFFFF",color:y.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 ${y.border}`},children:t.jsxs("div",{className:"flex gap-1",children:[t.jsx("input",{type:"text",placeholder:"Search elements...",value:a,onChange:E=>o(E.target.value),onKeyDown:E=>{E.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:y.surfaceAlt,border:`1px solid ${y.border}`,color:y.primary,fontSize:N.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:y.surfaceAlt,border:`1px solid ${y.border}`,color:y.secondary,cursor:"pointer"},children:t.jsx(pr,{})})]})}),t.jsx(fr,{searchTerm:a})]}):i==="dashboard"?t.jsx(Fi,{}):i==="dhf"?t.jsx(dd,{}):i==="diagram"||c?t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"px-3 py-2",style:{borderBottom:`1px solid ${y.border}`},children:t.jsx("input",{type:"text",placeholder:"Search viewpoints and views...",value:a,onChange:E=>o(E.target.value),className:"w-full px-3 py-2 rounded-lg focus:outline-none",style:{background:y.surfaceAlt,border:`1px solid ${y.border}`,color:y.primary,fontSize:N.explorer.search}})}),t.jsx(id,{searchTerm:a})]}):i==="ontology"?t.jsx(Ai,{}):i==="scenario"?t.jsx(u.Suspense,{fallback:t.jsx("div",{className:"p-3",style:{color:y.faint,fontSize:N.explorer.item},children:"Loading use cases…"}),children:t.jsx($l,{explorerOnly:!0})}):t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"px-3 py-2",style:{borderBottom:`1px solid ${y.border}`},children:t.jsxs("div",{className:"flex gap-1",children:[t.jsx("input",{type:"text",placeholder:"Search elements...",value:a,onChange:E=>o(E.target.value),onKeyDown:E=>{E.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:y.surfaceAlt,border:`1px solid ${y.border}`,color:y.primary,fontSize:N.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:y.surfaceAlt,border:`1px solid ${y.border}`,color:y.secondary,cursor:"pointer"},children:t.jsx(pr,{})})]})}),t.jsx(fr,{searchTerm:a})]}),t.jsx("div",{className:"memo-explorer-resizer",role:"separator","aria-label":"Resize Model Explorer","aria-orientation":"vertical","aria-valuemin":ct,"aria-valuemax":k,"aria-valuenow":Math.round(S),tabIndex:0,title:"Drag to resize · Double-click to reset",onPointerDown:B,onDoubleClick:()=>h(dt),onKeyDown:E=>{E.key==="ArrowLeft"?(E.preventDefault(),h(S-20)):E.key==="ArrowRight"?(E.preventDefault(),h(S+20)):E.key==="Home"?(E.preventDefault(),h(ct)):E.key==="End"&&(E.preventDefault(),h(k))}})]})}function fd(e,r){if(r.length===0)return!0;const n=`${e.label??e.value} ${e.group??""} ${e.keywords??""}`.toLowerCase();return r.every(a=>n.includes(a))}function hd(e,r){const n=r.trim().toLowerCase().split(/\s+/).filter(Boolean);if(n.length===0)return e;const a=[],o=[];for(const s of e){if(!fd(s,n))continue;(s.label??s.value).toLowerCase().startsWith(n[0])?a.push(s):o.push(s)}return[...a,...o]}function Wt({label:e,options:r,selected:n,onChange:a,allLabel:o="All",placeholder:s="Type to filter…",width:i=150,title:l,describedAs:c,maxVisible:d=300,parentOf:p,iconOnly:f,align:k="left"}){var G;const[w,S]=u.useState(!1),[x,h]=u.useState(""),[m,B]=u.useState(0),[T,A]=u.useState(new Set),U=u.useRef(null),E=u.useRef(null),b=u.useMemo(()=>new Set(n),[n]),g=u.useMemo(()=>hd(r,x),[r,x]),I=g.length>d?g.slice(0,d):g,O=g.length-I.length,R=u.useMemo(()=>{if(!p)return null;const z=new Map(r.map($=>[$.value,$])),K=new Set(g.map($=>$.value));for(const $ of[...K]){let v=p.get($);for(;v&&z.has(v)&&!K.has(v);)K.add(v),v=p.get(v)}const W=new Map;for(const $ of K){const v=p.get($);if(v&&K.has(v)){const j=W.get(v)??[];j.push($),W.set(v,j)}}const J=($,v)=>{var j,P;return(((j=z.get($))==null?void 0:j.label)??$).localeCompare(((P=z.get(v))==null?void 0:P.label)??v)};W.forEach($=>$.sort(J));const X=[...K].filter($=>!p.get($)||!K.has(p.get($))).sort(J),M=[],H=($,v)=>{const j=z.get($);if(!j)return;const P=W.get($)??[];M.push({option:j,depth:v,children:P}),P.length>0&&T.has($)&&P.forEach(Y=>H(Y,v+1))};return X.forEach($=>H($,0)),M},[r,g,p,T]);u.useEffect(()=>{B(0)},[x,w]),u.useEffect(()=>{if(!w)return;const z=K=>{var W;(W=U.current)!=null&&W.contains(K.target)||(S(!1),h(""))};return document.addEventListener("mousedown",z),()=>document.removeEventListener("mousedown",z)},[w]),u.useEffect(()=>{var z;w&&((z=E.current)==null||z.focus())},[w]);const F=u.useCallback(z=>{a(b.has(z)?n.filter(K=>K!==z):[...n,z])},[a,n,b]),_=u.useCallback(z=>{if(!p)return F(z);const K=new Set([z]);let W=!0;for(;W;){W=!1;for(const[X,M]of p)K.has(M)&&!K.has(X)&&(K.add(X),W=!0)}const J=[...K].every(X=>b.has(X));a(J?n.filter(X=>!K.has(X)):[...new Set([...n,...K])])},[p,F,n,b,a]),D=z=>{if(z.key==="Escape"){S(!1),h("");return}z.key==="ArrowDown"&&(z.preventDefault(),B(K=>Math.min(K+1,I.length-1))),z.key==="ArrowUp"&&(z.preventDefault(),B(K=>Math.max(K-1,0))),z.key==="Enter"&&I[m]&&(z.preventDefault(),F(I[m].value))},V=n.length===0?o:n.length===1?((G=r.find(z=>z.value===n[0]))==null?void 0:G.label)??n[0]:`${n.length} selected`;return t.jsxs("div",{ref:U,style:{position:"relative",display:"flex",alignItems:"center",gap:"5px"},children:[t.jsx("span",{style:{fontSize:N.xs,color:y.muted,whiteSpace:"nowrap"},children:e}),t.jsx("button",{type:"button","aria-haspopup":"listbox","aria-expanded":w,title:l??(n.length>0?n.join(", "):o),onClick:()=>S(z=>!z),style:f?{width:24,height:24,display:"flex",alignItems:"center",justifyContent:"center",borderRadius:"4px",background:"transparent",border:"none",color:n.length>0?y.accent:y.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?y.accent:y.border}`,background:y.surface,fontSize:N.xs,color:n.length>0?y.primary:y.muted,cursor:"pointer",textAlign:"left"},children:f?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:V}),t.jsx("span",{style:{fontSize:"9px",color:y.faint},children:"▼"})]})}),w&&t.jsxs("div",{role:"listbox",style:{position:"absolute",top:"calc(100% + 4px)",...k==="right"?{right:0}:{left:0},zIndex:60,width:Math.max(i+70,220),background:y.surface,border:`1px solid ${y.border}`,borderRadius:"7px",boxShadow:li.lg,overflow:"hidden"},children:[t.jsx("input",{ref:E,value:x,onChange:z=>h(z.target.value),onKeyDown:D,placeholder:s,"aria-label":`Filter ${c??e}`,style:{width:"100%",padding:"7px 9px",border:"none",borderBottom:`1px solid ${y.borderLight}`,fontSize:N.xs,outline:"none",color:y.primary}}),t.jsxs("div",{style:{maxHeight:"260px",overflowY:"auto"},children:[g.length===0&&t.jsxs("div",{style:{padding:"10px",fontSize:N.xs,color:y.faint},children:["Nothing matches ","“",x,"”"]}),(R??I.map(z=>({option:z,depth:0,children:[]}))).map(({option:z,depth:K,children:W},J)=>{var H;const X=b.has(z.value),M=!R&&z.group&&z.group!==((H=I[J-1])==null?void 0:H.group)?z.group:null;return t.jsxs("div",{children:[M&&t.jsx("div",{style:{position:"sticky",top:0,zIndex:1,padding:"4px 9px 2px",fontSize:"10px",fontWeight:600,color:y.faint,background:y.surface,borderBottom:`1px solid ${y.borderLight}`},children:M}),t.jsxs("div",{role:"option","aria-selected":X,onMouseEnter:()=>B(J),onClick:()=>_(z.value),style:{display:"flex",alignItems:"center",gap:"7px",padding:"5px 9px 5px "+(9+K*16)+"px",cursor:"pointer",fontSize:N.xs,background:J===m?y.surfaceAlt:"transparent",color:y.primary},children:[R&&t.jsx("button",{type:"button","aria-label":W.length>0?`${T.has(z.value)?"Collapse":"Expand"} ${z.label??z.value}`:void 0,disabled:W.length===0,onClick:$=>{$.stopPropagation(),W.length!==0&&A(v=>{const j=new Set(v);return j.has(z.value)?j.delete(z.value):j.add(z.value),j})},style:{width:"13px",padding:0,border:"none",background:"none",color:y.muted,cursor:W.length>0?"pointer":"default"},children:W.length>0?T.has(z.value)?"▾":"▸":""}),t.jsx("input",{type:"checkbox",readOnly:!0,checked:X,style:{accentColor:y.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:y.faint,fontSize:"11px"},children:z.hint})]})]},z.value)}),O>0&&t.jsxs("div",{style:{padding:"7px 9px",fontSize:"11px",color:y.faint,borderTop:`1px solid ${y.borderLight}`},children:[O.toLocaleString()," more match. Keep typing to narrow, or use"," ","Select matches to take all ",g.length.toLocaleString(),"."]})]}),t.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"10px",padding:"6px 9px",borderTop:`1px solid ${y.borderLight}`},children:[t.jsxs("button",{type:"button",onClick:()=>a(g.map(z=>z.value)),style:{fontSize:"11px",color:"#2563EB",background:"none",border:"none",cursor:"pointer",padding:0},children:["Select ",x?`matches (${g.length})`:`all (${r.length})`]}),t.jsx("button",{type:"button",onClick:()=>a([]),style:{fontSize:"11px",color:y.muted,background:"none",border:"none",cursor:"pointer",padding:0},children:"None"}),n.length>0&&t.jsxs("span",{style:{marginLeft:"auto",fontSize:"11px",color:y.faint},children:[n.length," picked"]})]})]})]})}const hr="#E5E5E0",yd="#2DD4A8",Ut=40;function yr(e,r){var s;const n=e.id.toLowerCase(),a=((s=e.shortId)==null?void 0:s.toLowerCase())??"",o=e.name.toLowerCase();return n===r||a===r?0:n.startsWith(r)||a.startsWith(r)?1:o.startsWith(r)?2:n.includes(r)||o.includes(r)?3:4}function gd(e,r){const n=r.query.trim().toLowerCase();return n?Object.values(e).filter(a=>a.id!==r.excludeId).filter(a=>[a.id,a.shortId,a.name,a.kind].filter(Boolean).join(" ").toLowerCase().includes(n)).sort((a,o)=>yr(a,n)-yr(o,n)||a.name.localeCompare(o.name)).slice(0,r.limit??Ut):[]}function xd(e){const r=new Map;for(const n of e){let a=r.get(n.kind);a||(a={kind:n.kind,layer:n.layer,elements:[]},r.set(n.kind,a)),a.elements.push(n)}return[...r.values()]}function bd(e,r){return gd(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=>Ke(r.source,n,r.registries).length>0).slice(0,r.limit??Ut)}function vd({element:e,model:r,registries:n,enabled:a,onCreate:o}){var b;const[s,i]=u.useState(""),[l,c]=u.useState(!1),[d,p]=u.useState(0),[f,k]=u.useState([]),w=u.useRef(null),S=u.useRef(null);u.useEffect(()=>{i(""),c(!1),p(0),k([])},[e.id]);const x=u.useMemo(()=>Array.from(new Set(Object.values(r.elements).map(g=>g.kind))).sort(),[r.elements]),h=u.useMemo(()=>bd(r.elements,{query:s,source:e,registries:n,filterKinds:f}),[r.elements,e,s,n,f]),m=u.useMemo(()=>xd(h),[h]),B=u.useMemo(()=>m.flatMap(g=>g.elements),[m]);u.useEffect(()=>{p(0)},[s]),u.useEffect(()=>{var g,I;l&&((I=(g=S.current)==null?void 0:g.querySelector('[data-active="true"]'))==null||I.scrollIntoView({block:"nearest"}))},[d,l]);const T=u.useCallback(g=>{const I=Ke(e,g,n);if(I.length>0){const O=["trace","satisfies","implements","verifies","validates"],F=I.find(_=>O.some(D=>_.definition.name.toLowerCase().includes(D)||_.definition.label.toLowerCase().includes(D)))??I[0];o({type:F.definition.name,sourceId:F.sourceId,targetId:F.targetId,direction:F.direction})}i(""),c(!1)},[e,n,o]),A=u.useCallback(()=>{i(""),c(!1)},[]),U=u.useCallback(g=>{if(g.key==="Escape"){if(l){c(!1);return}A();return}if(!l||B.length===0){g.key==="ArrowDown"&&B.length>0&&(g.preventDefault(),c(!0));return}if(g.key==="ArrowDown")g.preventDefault(),p(I=>(I+1)%B.length);else if(g.key==="ArrowUp")g.preventDefault(),p(I=>(I-1+B.length)%B.length);else if(g.key==="Enter"){g.preventDefault();const I=B[d];I&&T(I)}},[l,B,d,T,A]),E=(b=B[d])==null?void 0:b.id;return t.jsx("div",{className:"mt-1.5",style:{opacity:a?1:.6},children:t.jsxs("div",{className:"relative",children:[t.jsxs("div",{className:"flex gap-2",children:[t.jsx("input",{ref:w,value:s,disabled:!a,onChange:g=>{i(g.target.value),c(!0)},onFocus:()=>{s.trim()&&c(!0)},onBlur:()=>{window.setTimeout(()=>c(!1),120)},onKeyDown:U,placeholder:a?"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&&E?`memo-quick-add-${E}`:void 0,role:"combobox",autoComplete:"off",className:"flex-1 px-2 py-1 rounded focus:outline-none",style:{fontSize:N.xs,background:"#FFFFFF",border:`1px solid ${l&&s.trim()?yd:hr}`,color:"#374151",minWidth:0}}),t.jsx("div",{style:{flexShrink:0},children:t.jsx(Wt,{label:"",options:x.map(g=>({value:g,label:g})),selected:f,onChange:k,allLabel:"All Types",iconOnly:!0})})]}),l&&s.trim()&&t.jsxs("div",{id:"memo-quick-add-matches",ref:S,role:"listbox",className:"absolute left-0 right-0 z-20 mt-1 rounded overflow-y-auto",style:{maxHeight:240,background:"#FFFFFF",border:`1px solid ${hr}`,boxShadow:"0 8px 24px rgba(15,23,42,0.14)"},children:[B.length===0?t.jsxs("div",{className:"px-2 py-2",style:{fontSize:N.xs,color:"#9CA3AF"},children:["No MEMO-legal trace target matches “",s.trim(),"”."]}):m.map(g=>t.jsxs("div",{children:[t.jsx(wd,{kind:g.kind,layer:g.layer,count:g.elements.length}),g.elements.map(I=>t.jsx(kd,{element:I,active:I.id===E,onSelect:()=>T(I)},I.id))]},g.kind)),h.length===Ut&&t.jsxs("div",{className:"px-2 py-1",style:{fontSize:"10px",color:"#9CA3AF"},children:["Showing the first ",Ut," matches — keep typing to narrow."]})]})]})})}function wd({kind:e,layer:r,count:n}){const a=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:a,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 kd({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:a=>{a.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:N.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 Sd={text:"14px",heading:"13px",meta:"12px",valuePadding:"9px 12px",fieldGap:"10px",sectionPadding:"0 0 18px 0",radius:"10px",twoColumnAttributes:!0},Ed={text:"12px",heading:"12px",meta:"11px",valuePadding:"4px 7px",fieldGap:"5px",sectionPadding:"0 0 10px 0",radius:"7px",twoColumnAttributes:!1};function qe(e){return e==="page"?Sd:Ed}const fa={kind:"editable"},Cd={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 gr(e){const r=Cd[e];return r?{kind:"identity",reason:r}:fa}function tu(e){return e==="doc"?fa:{kind:"derived",reason:`"${e}" is derived from the SysML source when the model is built.`}}function Sn(e){return e.kind==="editable"}function ha(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 jd({title:e,count:r,actions:n,density:a,defaultOpen:o=!0,collapsible:s=!0,children:i}){const[l,c]=u.useState(o),d=qe(a),p=a==="page",f=s?l:!0;return t.jsxs("section",{style:{padding:p?"16px 18px":d.sectionPadding,border:p?"1px solid rgba(60,60,67,0.12)":"none",borderBottom:p?"1px solid rgba(60,60,67,0.12)":`1px solid ${y.borderLight}`,borderRadius:p?14:0,background:p?y.surface:"transparent",boxShadow:p?"0 1px 2px rgba(15,23,42,0.04)":"none",marginBottom:p?14:0},children:[t.jsxs("header",{className:"flex items-center gap-2",style:{cursor:s?"pointer":"default",padding:p?"0 0 10px 0":"6px 10px",borderRadius:p?0:"6px",margin:p?0:"2px 4px"},onClick:s?()=>c(k=>!k):void 0,onMouseEnter:k=>{!p&&s&&(k.currentTarget.style.background=y.surfaceAlt)},onMouseLeave:k=>{p||(k.currentTarget.style.background="transparent")},children:[t.jsx("h3",{style:{flex:1,margin:0,fontSize:p?d.heading:"10px",fontWeight:p?700:"bold",color:p?y.primary:"#6B7280",letterSpacing:p?0:"0.05em",textTransform:p?"none":"uppercase"},children:e}),typeof r=="number"&&(p?t.jsx("span",{style:{fontSize:d.meta,color:y.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:k=>k.stopPropagation(),children:n}),s&&t.jsx("span",{style:{color:"#D1D5DB",fontSize:p?d.meta:14},children:f?"▾":"▸"})]}),f&&t.jsx("div",{style:{padding:p?0:"0 14px 8px"},children:i})]})}function xr({value:e,editability:r,density:n,mono:a}){const o=qe(n),s=r.kind==="editable"?"":r.reason;return t.jsxs("div",{title:s||ha(r),style:{display:"flex",alignItems:"center",gap:6,padding:o.valuePadding,borderRadius:o.radius,background:y.surfaceAlt,border:"1px solid transparent",color:y.muted,fontSize:o.text,fontFamily:a?"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:y.faint,fontStyle:"italic"},children:"none"})}),t.jsx("span",{"aria-hidden":!0,style:{fontSize:o.meta,color:"#C7CBD1",flexShrink:0},children:"🔒"})]})}function rt({value:e,onSave:r,density:n,multiline:a,placeholder:o,autoFocus:s,compact:i=!1}){const[l,c]=u.useState(!1),[d,p]=u.useState(!1),[f,k]=u.useState(e),w=qe(n),S=u.useRef(!1),x=u.useRef(null),[h,m]=u.useState(null),[B,T]=u.useState(0),A=C(F=>F.model),U=C(F=>F.inspectElement);u.useEffect(()=>{k(e)},[e]);const E=u.useMemo(()=>h===null||!A?[]:Object.values(A.elements).filter(F=>{const _=(F.shortId??"").toLowerCase(),D=F.id.toLowerCase(),V=F.name.toLowerCase();return _.includes(h)||D.includes(h)||V.includes(h)}).slice(0,10),[h,A]),b=u.useCallback(()=>{S.current||h===null&&(S.current=!0,c(!1),f!==e&&r(f))},[f,e,r,h]),g=u.useCallback(F=>{var _;if(h!==null){if(F.key==="ArrowDown"){F.preventDefault(),T(D=>(D+1)%Math.max(1,E.length));return}if(F.key==="ArrowUp"){F.preventDefault(),T(D=>(D-1+E.length)%Math.max(1,E.length));return}if(F.key==="Enter"||F.key==="Tab"){F.preventDefault();const D=E[B];if(D){const V=((_=x.current)==null?void 0:_.selectionStart)??0,G=f.slice(0,V),z=f.slice(V),K=G.match(/(?:^|\s)@([a-zA-Z0-9_-]*)$/);if(K){const W=V-K[1].length-1,J=`[${D.name}](@${D.shortId??D.id}) `,X=f.slice(0,W)+J+z;k(X),m(null),setTimeout(()=>{x.current&&(x.current.selectionStart=W+J.length,x.current.selectionEnd=x.current.selectionStart,x.current.focus())},0)}}else m(null);return}if(F.key==="Escape"){F.preventDefault(),m(null);return}}F.key==="Enter"&&!a&&(F.preventDefault(),b()),F.key==="Escape"&&(S.current=!0,k(e),c(!1))},[b,a,e,h,E,B,f]),I=F=>{const _=F.target.value;k(_);const D=F.target.selectionStart??0,G=_.slice(0,D).match(/(?:^|\s)@([a-zA-Z0-9_-]*)$/);G?(m(G[1].toLowerCase()),T(0)):m(null)},O=()=>{S.current=!1,k(e),c(!0)};if(l){const F={ref:x,value:f,autoFocus:!0,onChange:I,onBlur:()=>{setTimeout(b,200)},onKeyDown:g,placeholder:o,style:{width:"100%",padding:i?"5px 8px":w.valuePadding,borderRadius:i?"6px":w.radius,border:`1px solid ${y.accent}`,boxShadow:`0 0 0 3px ${y.accent}25`,background:y.surface,color:y.primary,fontSize:w.text,fontFamily:"inherit",outline:"none",...a?{minHeight:n==="page"?"110px":"54px",resize:"vertical",lineHeight:1.6}:{}}};return t.jsxs("div",{style:{position:"relative",width:"100%"},children:[a?t.jsx("textarea",{...F}):t.jsx("input",{type:"text",...F}),h!==null&&E.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:E.map((_,D)=>t.jsxs("div",{style:{padding:"6px 12px",fontSize:13,cursor:"pointer",background:D===B?"#F3F4F6":"#fff",display:"flex",justifyContent:"space-between"},onClick:()=>{var W,J;const V=((W=x.current)==null?void 0:W.selectionStart)??f.length,G=f.slice(0,V),z=f.slice(V),K=G.match(/(?:^|\s)@([a-zA-Z0-9_-]*)$/);if(K){const X=V-K[1].length-1,M=f.slice(0,X)+`[${_.name}](@${_.shortId??_.id}) `+z;k(M)}m(null),(J=x.current)==null||J.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 R=F=>{if(!F)return o??"Click to add…";if(!A)return F;const _=/(\[[^\]]+\]\(@[a-zA-Z0-9_-]+\)|@[a-zA-Z0-9_-]+)/g;return F.split(_).map((V,G)=>{let z="",K="";if(V.startsWith("@"))z=V.slice(1);else if(V.startsWith("[")&&V.includes("](@")){const W=V.match(/\[([^\]]+)\]\(@([a-zA-Z0-9_-]+)\)/);W&&(K=W[1],z=W[2])}if(z){const W=Object.values(A.elements).find(J=>(J.shortId??J.id)===z)||A.elements[z];if(W)return t.jsx("span",{onClick:J=>{J.stopPropagation(),U(W.id)},style:{color:y.accent,cursor:"pointer",fontWeight:600,background:"#E0F2FE",padding:"1px 4px",borderRadius:"4px"},title:W.name,children:K||`@${W.shortId??W.id}`},G)}return t.jsx("span",{children:V},G)})};return t.jsxs("div",{role:"button",tabIndex:0,title:"Click to edit",onClick:O,onFocus:()=>p(!0),onBlur:()=>p(!1),onKeyDown:F=>{(F.key==="Enter"||F.key===" ")&&(F.preventDefault(),O())},onMouseEnter:()=>p(!0),onMouseLeave:()=>p(!1),style:{display:"flex",alignItems:"flex-start",gap:6,padding:i?"5px 8px":w.valuePadding,borderRadius:i?"6px":w.radius,background:d?"#F3F4F6":"transparent",border:`1px solid ${d?"#E5E7EB":"transparent"}`,boxShadow:"none",color:e?y.primary:y.faint,fontSize:w.text,cursor:"text",transition:"background-color 150ms ease, border-color 150ms ease",lineHeight:a?1.6:1.4,whiteSpace:a?"pre-wrap":"nowrap",overflow:"hidden",minWidth:0},children:[t.jsx("span",{style:{flex:1,minWidth:0,overflow:"hidden",textOverflow:"ellipsis"},children:R(e)}),t.jsx("span",{"aria-hidden":!0,style:{flexShrink:0,fontSize:w.meta,color:y.accent,opacity:d?1:0,transition:"opacity 150ms ease"},children:"✎"})]})}function nu({label:e,editability:r,density:n,children:a}){const o=qe(n);return t.jsxs("div",{style:{minWidth:0},children:[t.jsxs("div",{className:"flex items-center gap-1.5",style:{marginBottom:4,fontSize:o.meta,color:y.muted},children:[t.jsx("span",{style:{fontFamily:"ui-monospace, SFMono-Regular, Menlo, monospace"},children:e}),t.jsx("span",{className:"sr-only",children:ha(r)}),!Sn(r)&&t.jsx("span",{title:r.kind==="editable"?"":r.reason,style:{fontSize:"10px",padding:"0 4px",borderRadius:4,background:y.surfaceAlt,color:y.faint,border:`1px solid ${y.border}`},children:r.kind==="identity"?"identifier":"derived"})]}),a]})}function ru({density:e}){const r=qe(e);return t.jsxs("div",{className:"flex items-center gap-4 flex-wrap",style:{fontSize:r.meta,color:y.faint},children:[t.jsxs("span",{className:"flex items-center gap-1.5",children:[t.jsx("span",{style:{color:y.accent},children:"✎"})," editable here"]}),t.jsx("span",{children:"Identity and source metadata are read-only"})]})}function Dd(e,r,n,a){var c;const o=new Map,s=(d,p)=>{var w;const f=p==="outgoing"?d.targetId:d.sourceId,k=o.get(f)??{id:f,element:n.elements[f],links:[]};k.links.push({relationship:d,direction:p,label:((w=Nn(d.type,a))==null?void 0:w.label)??d.type}),o.set(f,k)};e.forEach(d=>s(d,"outgoing")),r.forEach(d=>s(d,"incoming"));const i=new Map;for(const d of o.values()){const p=((c=d.element)==null?void 0:c.layer)||"other";i.set(p,[...i.get(p)??[],d])}const l=d=>{const p=Ie.indexOf(d);return p<0?Number.MAX_SAFE_INTEGER:p};return[...i.entries()].map(([d,p])=>({layer:d,elements:p.sort((f,k)=>{var w,S;return(((w=f.element)==null?void 0:w.name)??f.id).localeCompare(((S=k.element)==null?void 0:S.name)??k.id)})})).sort((d,p)=>l(d.layer)-l(p.layer)||d.layer.localeCompare(p.layer))}function Bd({element:e,model:r,registries:n,outgoing:a,incoming:o,density:s,onNavigate:i,onCreate:l,onDelete:c}){const[d,p]=u.useState(""),f=u.useMemo(()=>Dd(a,o,r,n),[a,o,r,n]),k=d.trim().toLowerCase(),w=u.useMemo(()=>f.map(x=>({...x,elements:x.elements.filter(h=>{var m,B,T;return!k||[(m=h.element)==null?void 0:m.name,(B=h.element)==null?void 0:B.kind,(T=h.element)==null?void 0:T.shortId,h.id,x.layer,...h.links.map(A=>A.label)].filter(Boolean).join(" ").toLowerCase().includes(k)})})).filter(x=>x.elements.length>0),[f,k]),S=f.reduce((x,h)=>x+h.elements.length,0);return t.jsxs("div",{style:{border:s==="page"?"none":`1px solid ${y.border}`,borderRadius:12,background:s==="page"?"transparent":y.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:y.primary,fontSize:13,fontWeight:700},children:"Linked elements"}),t.jsxs("div",{style:{color:y.muted,fontSize:11},children:[S," element",S===1?"":"s"," across ",f.length," layer",f.length===1?"":"s"]})]}),S>6&&t.jsx("input",{value:d,onChange:x=>p(x.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 ${y.border}`,background:"#F9FAFB",color:y.primary,fontSize:13,outline:"none"}})]}),S===0&&t.jsx("div",{style:{color:y.faint,fontSize:12},children:"No linked elements."}),t.jsx("div",{style:{display:"flex",flexDirection:"column",gap:14},children:w.map(x=>{const h=ce[x.layer]||y.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:y.primary,fontSize:14,letterSpacing:"0.02em"},children:Je[x.layer]??x.layer}),t.jsx("span",{style:{color:y.faint,fontSize:12,background:h+"15",padding:"1px 6px",borderRadius:10},children:x.elements.length})]}),t.jsx("div",{style:{display:"grid",gridTemplateColumns:s==="page"?"repeat(auto-fill, 264px)":"1fr",justifyContent:"start",gap:7},children:x.elements.map(m=>t.jsx(Ad,{element:e,linked:m,registries:n,color:h,onNavigate:i,onCreate:l,onDelete:c},m.id))})]},x.layer)})})]})}function Ad({element:e,linked:r,registries:n,color:a,onNavigate:o,onCreate:s,onDelete:i}){var k,w,S,x;const[l,c]=u.useState(!1),d=u.useMemo(()=>!e||!r.element?[]:Ke(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]),p=r.links.map(h=>`${h.relationship.type}::${h.direction}`),f=u.useCallback(h=>{if(h.length===0||!s||!i)return;const m=new Set(h),B=new Set(p);for(const A of r.links)m.has(`${A.relationship.type}::${A.direction}`)||i(A.relationship.id);const T=Ke(e,r.element,n);for(const A of h)if(!B.has(A)){const U=T.find(E=>`${E.definition.name}::${E.direction}`===A);U&&s({type:U.definition.name,sourceId:U.sourceId,targetId:U.targetId,direction:U.direction})}},[p,r.links,e,r.element,n,s,i]);return t.jsx("button",{onClick:()=>o(r.id),onMouseEnter:()=>c(!0),onMouseLeave:()=>c(!1),className:"text-left transition-all duration-200",title:`Open ${((k=r.element)==null?void 0:k.name)??r.id}`,style:{padding:"12px 14px",borderRadius:10,background:"#FFFFFF",border:`1px solid ${l?a+"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(Wt,{label:"",options:d,selected:p,onChange:f,iconOnly:!0,align:"right",title:"Change relationship type"})})]}),t.jsx("strong",{className:"truncate",style:{display:"block",color:y.primary,fontSize:13},children:((w=r.element)==null?void 0:w.name)??r.id}),t.jsx("div",{className:"font-mono truncate",style:{color:"#9CA3AF",fontSize:"10px",marginTop:2},title:r.id,children:((S=r.element)==null?void 0:S.shortId)??r.id}),t.jsx("div",{style:{color:y.muted,fontSize:10,marginTop:2},children:((x=r.element)==null?void 0:x.kind)??"Unknown element type"})]})})}function Fd({element:e,outgoing:r,incoming:n,density:a}){const o=C(R=>R.model),s=C(R=>R.connected),i=C(R=>R.selectElement),l=C(R=>R.selectedDiagramId),c=C(R=>R.pendingRelationships),d=C(R=>R.createRelationship),p=C(R=>R.deleteRelationship),f=C(R=>R.dismissPendingRelationship),k=C(R=>R.addElementToDiagram),[w,S]=u.useState(!1),[x,h]=u.useState(null),[m,B]=u.useState(["Requirement","Risk","Function","SystemFunction","ComponentFunction"]),T=u.useMemo(()=>ta(o),[o]);u.useEffect(()=>{h(null),S(!1),B(["Requirement","Risk","Function","SystemFunction","ComponentFunction"])},[e.id]);const A=c.filter(R=>R.sourceId===e.id||R.targetId===e.id),U=r.length+n.length,E=u.useCallback(async R=>{var z;h(null);const F=await d({...R,selectedElementId:e.id,diagramId:l??void 0});if(!F.success){h({kind:"error",message:F.error??"The relationship could not be created."});return}const _=R.sourceId===e.id?R.targetId:R.sourceId,D=$t(o,l),V=(z=F.diagnostics)==null?void 0:z.find(K=>K.code==="REL-005"),G=!!D&&!!D.elementIds&&D.elementIds.length>0&&!D.elementIds.includes(_);h(G&&!V&&l?{kind:"success",message:`Relationship created in ${F.sourceFile??"the model"}.`,offerAddToView:{elementId:_,diagramId:l}}:V?{kind:"success",message:`Relationship created in ${F.sourceFile??"the model"}.`,profileMessage:V.message}:null)},[d,e.id,l,o]),b=u.useCallback(async R=>{const F=await p(R);F.success||h({kind:"error",message:F.error??"The relationship could not be deleted."})},[p]),g=u.useMemo(()=>{const R=new Map,F=(_,D)=>{const V=D==="outgoing"?_.targetId:_.sourceId,G=o==null?void 0:o.elements[V],z=(G==null?void 0:G.kind)||"Unknown Type",K=R.get(z)??new Map,W=K.get(V)??[];W.push({rel:_,direction:D}),K.set(V,W),R.set(z,K)};return o&&(r.forEach(_=>F(_,"outgoing")),n.forEach(_=>F(_,"incoming"))),R},[r,n,o]),I=Array.from(g.keys()).sort(),O=new Map([...g.entries()].filter(([R])=>m.includes(R)));return o?t.jsx(t.Fragment,{children:t.jsxs(jd,{title:"Relationships",count:U,density:a,collapsible:a==="panel",actions:t.jsxs("div",{className:"flex items-center gap-1",children:[U>0&&t.jsx("button",{onClick:()=>S(!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:R=>R.currentTarget.style.background="#F3F4F6",onMouseLeave:R=>R.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"})})}),U>0&&t.jsx(Wt,{label:"",options:I.map(R=>({value:R,label:R})),selected:m,onChange:B,allLabel:"None",iconOnly:!0,align:"right"})]}),children:[t.jsx("div",{style:{marginBottom:a==="page"?14:8,maxWidth:a==="page"?720:void 0},children:t.jsx(vd,{element:e,model:o,registries:T,enabled:s,onCreate:E})}),w&&t.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/60 backdrop-blur-sm",style:{padding:"2rem"},onClick:()=>S(!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:R=>R.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:()=>S(!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(Bd,{element:e,model:o,registries:T,outgoing:r,incoming:n,density:a,onNavigate:R=>{S(!1),i(R)},onCreate:d,onDelete:b})})]})}),U===0&&A.length===0&&t.jsx("div",{style:{fontSize:qe(a).meta,color:y.faint,padding:"2px 0 6px"},children:"No relationships yet — add the first one below."}),U>0&&O.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:[...O.entries()].map(([R,F])=>t.jsxs("div",{children:[t.jsx("div",{style:{fontSize:"10px",color:y.muted,textTransform:"uppercase",fontWeight:700,letterSpacing:"0.04em",marginBottom:6},children:R}),t.jsx("div",{style:{display:"flex",flexDirection:"column",gap:6},children:[...F.entries()].map(([_,D])=>t.jsx(Td,{sourceElement:e,oppositeId:_,links:D,model:o,registries:T,density:a,deletable:s,onNavigate:()=>i(_),onCreate:d,onDelete:b},_))})]},R))}),A.map(R=>t.jsx(Rd,{pending:R,model:o,onDismiss:()=>f(R.pendingId)},R.pendingId)),x&&t.jsx(Nd,{status:x,onAddToView:()=>{x.offerAddToView&&(k(x.offerAddToView.diagramId,x.offerAddToView.elementId),h({kind:"success",message:"Element added to this view."}))},onDismiss:()=>h(null),model:o})]})}):null}function Nd({status:e,onAddToView:r,onDismiss:n,model:a}){var i;const o=e.kind==="success",s=e.offerAddToView?((i=a.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:o?"#F0FDF4":"#FEF2F2",border:`1px solid ${o?"#BBF7D0":"#FECACA"}`,color:o?"#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:N.xs},children:["Relationship created. Add ",s," to this view?"]})]})}function Td({sourceElement:e,oppositeId:r,links:n,model:a,registries:o,deletable:s,density:i,onNavigate:l,onCreate:c,onDelete:d}){const p=a.elements[r],f=p&&ce[p.layer]||"#666",[k,w]=u.useState(!1),[S,x]=u.useState(!1),[h,m]=u.useState(null),B=qe(i),T=n.filter(b=>s&&b.rel.named===!0),A=u.useMemo(()=>!e||!p?[]:Ke(e,p,o).map(b=>({value:`${b.definition.name}::${b.direction}`,label:`${b.definition.label} ${b.direction==="outgoing"?"to":"from"}`})),[e,p,o]),U=n.map(b=>`${b.rel.type}::${b.direction}`),E=u.useCallback(b=>{if(b.length===0||!c||!d)return;const g=new Set(b),I=new Set(U);for(const R of n)g.has(`${R.rel.type}::${R.direction}`)||d(R.rel.id);const O=Ke(e,p,o);for(const R of b)if(!I.has(R)){const F=O.find(_=>`${_.definition.name}::${_.direction}`===R);F&&c({type:F.definition.name,sourceId:F.sourceId,targetId:F.targetId,direction:F.direction})}},[U,n,e,p,o,c,d]);return t.jsxs("div",{onMouseEnter:()=>x(!0),onMouseLeave:()=>x(!1),style:{borderLeft:`3px solid ${f}`,borderRadius:6,background:y.surface,borderTop:`1px solid ${y.borderLight}`,borderRight:`1px solid ${y.borderLight}`,borderBottom:`1px solid ${y.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 ${(p==null?void 0:p.name)??r}`,children:[t.jsx("strong",{className:"truncate font-mono",style:{color:y.primary,fontSize:"11px",fontWeight:600},children:(p==null?void 0:p.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:b=>b.stopPropagation(),style:{flexShrink:0},children:t.jsx(Wt,{label:"",options:A,selected:U,onChange:E,allLabel:"Relationships",iconOnly:!0,align:"right"})}),t.jsx("button",{onClick:()=>w(b=>!b),style:{background:"none",border:"none",cursor:"pointer",color:y.faint,padding:2},"aria-label":k?"Hide relationship details":"Show relationship details",children:k?"▾":"▸"}),T.length>0&&(S||k||h==="header")&&t.jsxs("div",{className:"relative flex items-center",children:[t.jsx("button",{onClick:b=>{b.stopPropagation(),m("header")},"aria-label":`Remove relationships to ${(p==null?void 0:p.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:b=>b.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 ",T.length>1?`all ${T.length} relationships`:"relationship","?"]}),t.jsxs("div",{className:"flex gap-1.5 justify-end",children:[t.jsx("button",{onClick:()=>m(null),className:"px-2 py-1 rounded",style:{fontSize:"10px",background:"#F3F4F6",color:"#4B5563",border:"none",cursor:"pointer"},children:"Cancel"}),t.jsx("button",{onClick:()=>{m(null),T.forEach(b=>d(b.rel.id))},className:"px-2 py-1 rounded",style:{fontSize:"10px",background:"#EF4444",color:"#FFFFFF",border:"none",cursor:"pointer"},children:"Remove"})]})]})]})]}),k&&t.jsx("div",{className:"px-3 pb-2 space-y-2",style:{borderTop:`1px solid ${y.borderLight}`,paddingTop:7},children:n.map(({rel:b,direction:g},I)=>{const O=Nn(b.type,o),R=s&&b.named===!0;return t.jsxs("div",{style:{fontSize:"10px",color:"#6B7280",marginTop:I>0?8:0,paddingTop:I>0?8:0,borderTop:I>0?`1px dashed ${y.borderLight}`:"none"},children:[t.jsx(Bt,{label:"Kind",value:(O==null?void 0:O.label)??b.type,valueColor:f}),t.jsx(Bt,{label:"Roles",value:`${b.sourceEnd||(O==null?void 0:O.sourceEnd.name)||"source"} → ${b.targetEnd||(O==null?void 0:O.targetEnd.name)||"target"}`}),t.jsx(Bt,{label:"ID",value:b.id,mono:!0}),t.jsx(Bt,{label:"Source",value:b.file||"—",mono:!0}),!b.named&&t.jsx("div",{style:{color:"#D97706",marginTop:4},children:"Anonymous connection — name it in SysML to allow deletion from here."}),R&&t.jsxs("div",{className:"relative inline-block mt-2",children:[t.jsx("button",{onClick:F=>{F.stopPropagation(),m(b.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===b.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:F=>F.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:()=>m(null),className:"px-2 py-1 rounded",style:{fontSize:"10px",background:"#F3F4F6",border:"none",cursor:"pointer"},children:"Cancel"}),t.jsx("button",{onClick:()=>{m(null),d(b.id)},className:"px-2 py-1 rounded",style:{fontSize:"10px",background:"#EF4444",color:"#FFFFFF",border:"none",cursor:"pointer"},children:"Remove"})]})]})]})]},b.id)})})]})}function Bt({label:e,value:r,mono:n,valueColor:a}){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:a??"#374151"},title:r,children:r})]})}function Rd({pending:e,model:r,onDismiss:n}){const a=e.direction==="outgoing"?e.targetId:e.sourceId,o=r.elements[a],s=e.status==="failed";return t.jsxs("div",{className:"flex items-center gap-1.5 ml-2 rounded",style:{padding:"4px 8px",fontSize:N.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:N.xs},children:e.label}),t.jsx("span",{className:"truncate flex-1",children:(o==null?void 0:o.name)??a}),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 Te="panel";function ue({title:e,count:r,defaultOpen:n=!0,actions:a,children:o}){const[s,i]=u.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}),a&&t.jsx("span",{onClick:l=>l.stopPropagation(),children:a}),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:o})]})}function Id({label:e,kind:r,kindColor:n,onClick:a,arrow:o,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:N.xs},onMouseEnter:c=>{l||(c.currentTarget.style.background="#F0F0ED")},onMouseLeave:c=>{l||(c.currentTarget.style.background="transparent")},onClick:a,children:[o&&t.jsx("span",{style:{color:"#9CA3AF"},children:o}),s&&t.jsx("span",{className:"px-1 py-0.5 rounded",style:{background:(i||"#2563EB")+"18",color:i||"#2563EB",fontSize:N.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:N.badge},children:r})]})}function Md(){const e=C(s=>s.model),r=C(s=>s.activeView),n=r.type==="diagram"?r.diagramId:null,a=$t(e,n);if(!a)return null;const o=ze[a.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 ${(o==null?void 0:o.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:a.name}),t.jsxs("div",{className:"flex items-center gap-2 text-xs mt-2",children:[o&&t.jsx("span",{className:"px-2 py-0.5 rounded-md font-semibold",style:{background:o.color+"18",color:o.color},children:o.code}),t.jsx("span",{style:{color:"#6B7280",fontWeight:500},children:(o==null?void 0:o.fullName)||a.diagramType})]}),a.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:[a.description&&t.jsx(ue,{title:"Description",defaultOpen:!0,children:t.jsx("div",{className:"text-xs leading-relaxed",style:{color:"#374151"},children:a.description})}),t.jsx(ue,{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:N.xs},children:a.shortId??a.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:a.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:a.diagramType})]}),a.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:a.sourceFile,style:{color:"#1a1a1a",fontSize:N.xs},children:a.sourceFile})]})]})}),a.properties&&Object.keys(a.properties).length>0&&t.jsx(ue,{title:"Properties",count:Object.keys(a.properties).length,children:t.jsx("div",{className:"space-y-1.5",children:Object.entries(a.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))})}),a.elementIds&&a.elementIds.length>0&&t.jsx(ue,{title:"Scoped Elements",count:a.elementIds.length,defaultOpen:!1,children:t.jsx("div",{className:"text-xs",style:{color:"#6B7280"},children:a.elementIds.join(", ")})}),a.relationshipTypes&&a.relationshipTypes.length>0&&t.jsx(ue,{title:"Relationship Types",count:a.relationshipTypes.length,children:t.jsx("div",{className:"flex flex-wrap gap-1",children:a.relationshipTypes.map(s=>t.jsx("span",{className:"px-1.5 py-0.5 rounded text-xs",style:{background:"#EFF6FF",color:"#2563EB",fontSize:N.xs},children:s},s))})})]})]})}const _d=4e3;function Pd({elementId:e}){const r=C(i=>i.model),n=C(i=>i.lastSourceChange),[a,o]=u.useState(null),s=u.useMemo(()=>Ys(r,e),[r,e]);return u.useEffect(()=>{if(!Js(n,s))return;o(n.at);const i=setTimeout(()=>o(null),_d);return()=>clearTimeout(i)},[n==null?void 0:n.seq]),u.useEffect(()=>{o(null)},[e]),a?t.jsx("span",{title:"A source file this element depends on changed; the model was rebuilt",className:"px-1.5 rounded",style:{fontSize:N.badge,background:"#ECFDF5",color:"#047857",border:"1px solid #A7F3D0"},children:"↻ Updated"}):null}function Od(){var U,E;const e=C(b=>b.model),r=C(b=>b.selectedElementId),n=C(b=>b.validation),a=C(b=>b.selectElement),o=C(b=>b.updateElementField),s=C(b=>b.updateElementAttribute),i=C(b=>b.applyEdit),l=C(b=>b.deleteModelElement),[c,d]=u.useState(!1);u.useEffect(()=>{d(!1)},[r]),u.useEffect(()=>{if(!r)return;const b=g=>{(g.metaKey||g.ctrlKey)&&g.key==="s"&&(g.preventDefault(),i(r),d(!1))};return window.addEventListener("keydown",b),()=>window.removeEventListener("keydown",b)},[r,i]);const p=u.useMemo(()=>r&&e?Gs(e,r):[],[e,r]);if(!r||!e)return null;const f=e.elements[r];if(!f)return null;const k=p.filter(b=>b.sourceId===r),w=p.filter(b=>b.targetId===r),S=ce[f.layer]||"#666",x=(n==null?void 0:n.violations.filter(b=>b.elementId===r))||[],h=new Set(["boundaryColor","boundaryOpacity","boundaryWidth","fill","stroke","opacity","color","backgroundColor","bounds.x","bounds.y","bounds.width","bounds.height"]),m=[["id",f.id],...f.uuid?[["uuid",f.uuid]]:[],["kind",f.kind],["layer",f.layer],...Object.entries(f.attributes).filter(([b])=>b!=="name"&&b!=="id"&&!h.has(b)&&b!=="description"&&b!=="shortDescription")],B=Object.entries(f.attributes).filter(([b])=>h.has(b)),T=(b,g)=>{s(r,b,g),i(r)},A=b=>{const g=b.trim();!g||g===f.name||(o(r,"name",g),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 ${S}`,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(rt,{value:f.name,onSave:A,density:Te,placeholder:"Element name"})}),t.jsx("div",{className:"text-sm font-medium mt-3 text-gray-700",children:t.jsx(rt,{value:f.attributes.shortDescription||"",onSave:b=>T("shortDescription",b),density:Te,multiline:!0,placeholder:"Add a short description..."})}),t.jsx("div",{className:"text-xs text-gray-500 mt-1.5 leading-relaxed",children:t.jsx(rt,{value:f.attributes.description||"",onSave:b=>T("description",b),density:Te,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(f.id),title:`Copy ID: ${f.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(f.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:[f.parameters&&f.parameters.length>0&&t.jsx(ue,{title:"Parameters",count:f.parameters.length,children:t.jsx("div",{className:"space-y-1.5",children:f.parameters.map(b=>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:b.direction==="in"?"#EFF6FF":b.direction==="out"?"#FFF7ED":"#F0FDF4",color:b.direction==="in"?"#2563EB":b.direction==="out"?"#EA580C":"#16A34A"},children:b.direction}),t.jsx("span",{style:{color:"#374151",fontWeight:500},children:b.name}),t.jsx("span",{style:{color:"#6B7280"},children:":"}),t.jsx("span",{style:{color:"#6B7280"},children:b.type})]},b.name))})}),f.allocatedTo&&t.jsx(ue,{title:"Allocated To",defaultOpen:!0,children:t.jsx(Id,{label:((U=e.elements[f.allocatedTo])==null?void 0:U.name)||f.allocatedTo,kind:(E=e.elements[f.allocatedTo])==null?void 0:E.kind,kindColor:"#E67E22",arrow:"→",onClick:()=>a(f.allocatedTo)})}),B.length>0&&t.jsx(ue,{title:"Appearance",count:B.length,defaultOpen:!1,children:t.jsx("div",{className:"space-y-1.5",children:B.map(([b,g])=>{const I=gr(b);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:b}),t.jsx("div",{style:{flex:1,minWidth:0},children:b==="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(g))?String(g):"#14B8A6",onChange:O=>{const R=document.getElementById(`screen-node-${f.id}`);R&&(R.style.borderColor=O.target.value)},onBlur:O=>T(b,O.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(g)})]}):b==="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(g??"2"),onChange:O=>{const R=document.getElementById(`screen-node-${f.id}`);R&&(R.style.borderWidth=O.target.value+"px")},onMouseUp:O=>T(b,O.target.value),style:{width:"100%"}}),t.jsxs("span",{className:"font-mono text-[10px] text-gray-500 w-6",children:[g,"px"]})]}):Sn(I)?t.jsx(rt,{value:String(g??""),onSave:O=>T(b,O),density:Te,placeholder:"Click to set…"}):t.jsx(xr,{value:String(g??""),editability:I,density:Te,mono:b!=="kind"&&b!=="layer"})})]},b)})})}),m.length>0&&t.jsx(ue,{title:"Attributes",count:m.length,defaultOpen:!1,children:t.jsx("div",{className:"space-y-1.5",children:m.map(([b,g])=>{const I=gr(b);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:b}),t.jsx("div",{style:{flex:1,minWidth:0},children:Sn(I)?t.jsx(rt,{value:String(g??""),onSave:O=>T(b,O),density:Te,multiline:b==="description"||b==="rationale",placeholder:"Click to set…"}):t.jsx(xr,{value:String(g??""),editability:I,density:Te,mono:b!=="kind"&&b!=="layer"})})]},b)})})}),t.jsx(Ud,{subject:f}),x.length>0&&t.jsx(ue,{title:"Guidance",count:x.length,defaultOpen:!0,children:t.jsx("div",{className:"space-y-2",children:x.map((b,g)=>t.jsxs("div",{className:"text-xs p-2.5 rounded-lg",style:{background:b.severity==="error"?"#FEF2F2":b.severity==="warning"?"#FFFBEB":"#EFF6FF",border:`1px solid ${b.severity==="error"?"#FECACA":b.severity==="warning"?"#FDE68A":"#BFDBFE"}`},children:[t.jsx("div",{style:{color:b.severity==="error"?"#DC2626":b.severity==="warning"?"#D97706":"#2563EB"},children:b.description}),t.jsxs("div",{className:"mt-0.5",style:{color:"#6B7280"},children:["[",b.ruleId,"]"]})]},`${b.ruleId}-${g}`))})}),x.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"]})}),f.file&&t.jsx(ue,{title:"Source",defaultOpen:!1,actions:t.jsx(Pd,{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:b=>{b.currentTarget.style.background="#EFF6FF"},onMouseLeave:b=>{b.currentTarget.style.background="transparent"},onClick:()=>{navigator.clipboard.writeText(f.file).catch(()=>{})},title:"Click to copy path",children:[t.jsx("span",{style:{flexShrink:0},children:"⟨/⟩"}),t.jsx("span",{className:"font-mono truncate",children:f.file}),t.jsx("span",{style:{flexShrink:0,color:"#9CA3AF",fontSize:"9px"},children:"copy"})]})}),t.jsx(Fd,{element:f,outgoing:k,incoming:w,density:Te})]})]})}const At={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 Ud({subject:e}){var R,F,_;const r=C(D=>D.model),n=C(D=>D.createModelElement),a=C(D=>D.createRelationship),o=C(D=>D.persistElementAttributes),[s,i]=u.useState(""),[l,c]=u.useState(""),[d,p]=u.useState(""),[f,k]=u.useState(null),[w,S]=u.useState(!1),[x,h]=u.useState(""),[m,B]=u.useState(null),[T,A]=u.useState("");if(!r)return null;const U=new Set(Object.values(At).map(D=>D.relation.toLowerCase())),b=[...new Set(r.relationships.filter(D=>U.has(D.type.toLowerCase())&&D.targetId===e.id).map(D=>D.sourceId))].map(D=>r.elements[D]).filter(D=>!!D),g=new Map;for(const D of r.relationships.filter(V=>V.type.toLowerCase()==="composes"))((R=r.elements[D.sourceId])==null?void 0:R.kind)!=="ModelComment"||((F=r.elements[D.targetId])==null?void 0:F.kind)!=="ModelComment"||g.set(D.sourceId,[...g.get(D.sourceId)??[],r.elements[D.targetId]]);const I=async()=>{var K,W,J;if(!l.trim())return;const D=m?"comment":f??"comment";A("Saving…");const V=At[D],G=s.trim()||`Model ${V.label}`,z=n({name:G,kind:V.kind,construct:"part",layer:e.layer,file:e.file||"model/generated.sysml",doc:"",attributes:{shortDescription:G,body:l.trim(),author:d.trim()||"currentReviewer",createdAt:new Date().toISOString(),...D==="comment"?{commentStatus:"CommentStatusKind::open"}:{},...D==="rationale"&&x.trim()?{basis:x.trim()}:{},...D==="note"&&x.trim()?{noteKind:x.trim()}:{}}});try{const X=(K=C.getState().model)==null?void 0:K.elements[z],M=Date.now()+1e4;for(;((W=C.getState().model)==null?void 0:W.elements[z])===X&&Date.now()<M;)await new Promise(v=>setTimeout(v,100));const H=(J=C.getState().model)==null?void 0:J.elements[z];if(!H||H===X)throw new Error("The saved annotation did not appear in the rebuilt model.");const $=await a({type:m?"Composes":V.relation,sourceId:m??z,targetId:m?z:e.id,direction:"outgoing",selectedElementId:m??z});if(!$.success)throw new Error($.error);i(""),c(""),h(""),B(null),k(null),A("Saved.")}catch(X){A(X instanceof Error?X.message:String(X))}},O=(D,V=!1)=>{var K;const G=D.kind==="ModelRationale"?"rationale":D.kind==="ModelNote"?"note":"comment",z=G==="rationale"?"#7C3AED":G==="note"?"#2563EB":"#2DD4A8";return t.jsxs("div",{style:{marginLeft:V?14:0,borderLeft:`2px solid ${V?"#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:G}),t.jsx("strong",{style:{color:"#374151"},children:D.attributes.author||"Unknown"}),t.jsx("span",{style:{color:"#9CA3AF"},children:D.attributes.createdAt||""})]}),t.jsx("div",{style:{fontSize:11,fontWeight:600,color:"#374151"},children:D.attributes.shortDescription||D.name}),t.jsx("div",{style:{fontSize:11,color:"#4B5563",whiteSpace:"pre-wrap"},children:D.attributes.body}),G==="rationale"&&D.attributes.basis&&t.jsxs("div",{style:{fontSize:10,color:"#7C3AED"},children:["Basis: ",D.attributes.basis]}),G==="note"&&D.attributes.noteKind&&t.jsxs("div",{style:{fontSize:10,color:"#2563EB"},children:["Kind: ",D.attributes.noteKind]}),G==="comment"&&t.jsxs("div",{className:"flex gap-2",style:{marginTop:3},children:[!V&&t.jsx("button",{onClick:()=>{B(D.id),k("comment")},style:{border:0,background:"transparent",color:"#2563EB",fontSize:10,cursor:"pointer"},children:"Reply"}),!((K=D.attributes.commentStatus)!=null&&K.endsWith("resolved"))&&t.jsx("button",{onClick:()=>o(D.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"})]}),(g.get(D.id)??[]).map(W=>O(W,!0))]},D.id)};return t.jsxs(ue,{title:"Annotations",count:b.length,defaultOpen:!0,children:[t.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[t.jsx("button",{onClick:()=>k("note"),title:"Add Note",className:`p-1.5 rounded flex items-center justify-center transition-colors ${f==="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:()=>k("comment"),title:"Add Comment",className:`p-1.5 rounded flex items-center justify-center transition-colors ${f==="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:()=>k("rationale"),title:"Add Rationale",className:`p-1.5 rounded flex items-center justify-center transition-colors ${f==="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:()=>S(!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 (",b.length,")"]})]}),(f||m)&&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:m?"#0F766E":f==="rationale"?"#7C3AED":f==="note"?"#2563EB":"#2DD4A8"},children:m?`Replying to ${(_=r.elements[m])==null?void 0:_.name}`:`New ${At[f].label}`}),t.jsx("button",{onClick:()=>{k(null),B(null)},className:"text-gray-400 hover:text-gray-600",children:"✕"})]}),t.jsx("input",{value:d,onChange:D=>p(D.target.value),placeholder:"Author",style:{width:"100%",marginBottom:4,fontSize:11}}),t.jsx("input",{value:s,onChange:D=>i(D.target.value),placeholder:"Short summary",style:{width:"100%",marginBottom:4,fontSize:11}}),!m&&f!=="comment"&&t.jsx("input",{value:x,onChange:D=>h(D.target.value),placeholder:f==="rationale"?"Basis / evidence (optional)":"Note kind (optional)",style:{width:"100%",marginBottom:4,fontSize:11}}),t.jsx("textarea",{value:l,onChange:D=>c(D.target.value),placeholder:m?"Reply":At[f].placeholder,rows:3,style:{width:"100%",fontSize:11}}),t.jsxs("div",{className:"flex gap-2 mt-1",children:[t.jsx("button",{onClick:I,disabled:!l.trim(),style:{fontSize:11,padding:"4px 8px",background:"#374151",color:"white",borderRadius:4,flex:1},children:"Save"}),t.jsx("button",{onClick:()=>{k(null),B(null)},style:{fontSize:11,padding:"4px 8px",background:"#E5E7EB",color:"#374151",borderRadius:4},children:"Cancel"})]}),T&&t.jsx("div",{style:{fontSize:10,color:"#6B7280",marginTop:4},children:T})]}),w&&t.jsx("div",{className:"fixed inset-0 z-[100] flex items-center justify-center bg-black/30",onClick:()=>S(!1),children:t.jsxs("div",{className:"bg-white rounded-lg shadow-2xl w-[400px] max-h-[85vh] flex flex-col",onClick:D=>D.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:()=>S(!1),className:"text-gray-400 hover:text-gray-700",children:"✕"})]}),t.jsx("div",{className:"p-4 overflow-y-auto",children:b.length>0?b.map(D=>O(D)):t.jsx("div",{className:"text-gray-500 text-sm text-center py-8",children:"No annotations yet."})})]})})]})}function zd(){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 a=e.elements[n.sourceId],o=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:[(a==null?void 0:a.name)??n.sourceId," → ",(o==null?void 0:o.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(ue,{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(ue,{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:(a==null?void 0:a.name)??n.sourceId})]}),t.jsxs("div",{children:[t.jsx("span",{style:{color:"#6B7280"},children:"Target"}),t.jsx("div",{style:{color:"#1a1a1a",fontWeight:500},children:(o==null?void 0:o.name)??n.targetId})]})]})}),t.jsx(ue,{title:"Traceability",defaultOpen:!1,children:t.jsx("div",{className:"text-xs",style:{color:"#6B7280"},children:n.file||"Model relationship"})})]})]})}function qd(){const e=C(l=>l.selectedElementId),r=C(l=>l.activeView),n=C(l=>l.selectedRelationshipId),a=C(l=>l.propertiesPanelCollapsed),o=C(l=>l.togglePropertiesPanel);if(a)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:o,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:o,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(zd,{}):i?t.jsx(Od,{}):s?t.jsx(Md,{}):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"})})]})}function sn(e=y.border){return{borderTop:`1px solid ${e}`}}function Ld({placeholder:e,value:r,onChange:n}){return t.jsx("input",{type:"text",value:r,placeholder:e,onChange:a=>n(a.target.value),className:"flex-1 px-2 py-1 rounded focus:outline-none",style:{background:"#F7F7F5",border:"1px solid #E5E5E0",color:y.primary,fontSize:N.xs,minWidth:0}})}function Vd({values:e}){const r=[...new Set(e.filter(Boolean))];return r.length===0?t.jsx("span",{style:{color:y.faint,fontSize:"12px"},children:"—"}):r.length===1?t.jsx("span",{style:{color:y.muted,fontSize:"12px"},children:r[0]}):t.jsxs("span",{style:{color:"#F59E0B",fontSize:"12px"},children:[r.length," different values"]})}function $d(){const e=C(x=>x.model),r=C(x=>x.selectedElementIds),n=C(x=>x.clearElementSelection),a=C(x=>x.bulkUpdateAttributes),o=u.useMemo(()=>[...r],[r]),s=u.useMemo(()=>o.map(x=>e==null?void 0:e.elements[x]).filter(Boolean),[o,e]),i=u.useMemo(()=>{if(s.length===0)return[];const x="_",h=s.map(B=>new Set(Object.keys(B.attributes).filter(T=>!T.startsWith(x))));return[...h[0]].filter(B=>h.every(T=>T.has(B))).sort()},[s]),l=u.useMemo(()=>{const x={};for(const h of i)x[h]=s.map(m=>m.attributes[h]??"");return x},[s,i]),c=u.useMemo(()=>[...new Set(s.map(x=>x.kind))].sort(),[s]),[d,p]=u.useState({}),f=u.useCallback((x,h)=>{p(m=>({...m,[x]:h}))},[]),k=Object.values(d).some(x=>x!==""),w=u.useCallback(()=>{const x=Object.fromEntries(Object.entries(d).filter(([,h])=>h!==""));Object.keys(x).length!==0&&(a(o,x),p({}))},[d,o,a]),S=u.useCallback(()=>{p({})},[]);return s.length<2?null:t.jsxs("div",{className:"flex flex-col overflow-hidden",style:{width:"280px",background:y.surface,borderLeft:`1px solid ${y.border}`,fontSize:N.xs},children:[t.jsxs("div",{className:"flex items-center justify-between px-4 py-3 flex-shrink-0",style:{borderBottom:`1px solid ${y.border}`},children:[t.jsxs("div",{children:[t.jsx("div",{className:"font-semibold",style:{color:y.primary,fontSize:N.sm},children:"Bulk Edit"}),t.jsxs("div",{style:{color:y.muted,fontSize:"12px",marginTop:"2px"},children:[o.length," elements selected"]})]}),t.jsx("button",{onClick:n,className:"px-2 py-1 rounded",style:{color:y.muted,background:"#F0F0ED",fontSize:"12px"},title:"Clear selection",children:"✕ Clear"})]}),t.jsxs("div",{className:"px-4 py-3 flex-shrink-0",style:sn(),children:[t.jsx("div",{style:{color:y.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(x=>t.jsx("span",{className:"px-2 py-0.5 rounded-full",style:{background:"#EEF2FF",color:"#4F46E5",fontSize:"12px",fontWeight:500},children:x},x))}),t.jsxs("div",{style:{color:y.faint,fontSize:"12px",marginTop:"6px"},children:[s.map(x=>x.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:sn(),children:[t.jsxs("div",{style:{color:y.muted,fontSize:"12px",fontWeight:600,marginBottom:"8px",textTransform:"uppercase",letterSpacing:"0.5px"},children:["Common Attributes",i.length>0&&t.jsxs("span",{style:{color:y.faint,fontWeight:400,marginLeft:"4px"},children:["(",i.length,")"]})]}),i.length===0?t.jsx("div",{style:{color:y.faint,fontSize:"12px"},children:"No common attributes across selected elements."}):t.jsx("div",{className:"space-y-3",children:i.map(x=>t.jsxs("div",{children:[t.jsxs("div",{className:"flex items-center justify-between mb-1",children:[t.jsx("span",{style:{color:y.secondary,fontSize:"12px",fontWeight:500},children:x}),t.jsx(Vd,{values:l[x]})]}),t.jsx(Ld,{placeholder:`Set for all ${o.length} elements…`,value:d[x]??"",onChange:h=>f(x,h)})]},x))})]}),i.length>0&&t.jsxs("div",{className:"flex items-center gap-2 px-4 py-3 flex-shrink-0",style:sn(),children:[t.jsx("button",{onClick:S,disabled:!k,className:"flex-1 py-1.5 rounded",style:{fontSize:N.xs,fontWeight:500,color:k?y.secondary:y.faint,background:k?"#F0F0ED":"#F7F7F5",cursor:k?"pointer":"default"},children:"Reset"}),t.jsxs("button",{onClick:w,disabled:!k,className:"flex-1 py-1.5 rounded font-semibold",style:{fontSize:N.xs,color:"#FFFFFF",background:k?"#2DD4A8":"#A7F3D0",cursor:k?"pointer":"default"},children:["Apply to ",o.length]})]})]})}const br="memo-gapbar-pulse";if(typeof document<"u"&&!document.getElementById(br)){const e=document.createElement("style");e.id=br,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 jt={error:{color:"#DC2626",bg:"#FEF2F2",icon:"✖"},warning:{color:"#D97706",bg:"#FFFBEB",icon:"⚠"},info:{color:"#2563EB",bg:"#EFF6FF",icon:"ℹ"}};function Hd(){const e=E(v=>v.validation),r=E(v=>v.analysisIssues),n=E(v=>v.selectElement),a=E(v=>v.model),o=E(v=>v.completeness),s=E(v=>v.gapBarExpanded),i=E(v=>v.toggleGapBar),l=E(v=>v.gapBarHeight),c=E(v=>v.setGapBarHeight),[d,p]=u.useState("problems"),f=u.useRef(!1),b=u.useRef(0),w=u.useRef(0),S=a?Object.keys(a.elements).length:0,g=(e==null?void 0:e.violations.filter(v=>v.severity==="error"))??[],h=(e==null?void 0:e.violations.filter(v=>v.severity==="warning"))??[],m=(e==null?void 0:e.violations.length)??0,B=r.filter(v=>v.severity==="warning").length,T=m>0||r.length>0,D=!!o,A=T&&D,C=(o==null?void 0:o.layers.filter(v=>v.totalElements>0))??[],x=u.useCallback(v=>{v.preventDefault(),f.current=!0,b.current=v.clientY,w.current=l;const _=P=>{if(!f.current)return;const M=b.current-P.clientY;c(w.current+M)},O=()=>{f.current=!1,document.removeEventListener("mousemove",_),document.removeEventListener("mouseup",O)};document.addEventListener("mousemove",_),document.addEventListener("mouseup",O)},[l,c]);return t.jsxs("div",{style:{background:y.surface,borderTop:`1px solid ${y.border}`,flexShrink:0},children:[s&&t.jsx("div",{style:{height:"4px",cursor:"row-resize",background:"transparent",flexShrink:0},onMouseDown:x,onMouseEnter:v=>{v.currentTarget.style.background=y.accent+"40"},onMouseLeave:v=>{v.currentTarget.style.background="transparent"}}),t.jsxs("div",{className:"flex items-center px-4 gap-3 cursor-pointer select-none",style:{height:"32px",fontSize:N.sm},onClick:i,children:[t.jsx("span",{style:{color:y.faint,fontSize:"10px",transition:"transform 150ms ease",transform:s?"rotate(0deg)":"rotate(-90deg)",display:"inline-block"},children:"▼"}),t.jsx("span",{style:{color:y.secondary,fontWeight:600,fontSize:N.xs},children:"Problems"}),g.length>0&&t.jsxs("span",{className:"flex items-center gap-1",style:{color:"#DC2626",fontSize:N.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:N.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:N.xs},children:[t.jsx("span",{style:{fontSize:"9px",opacity:.7},children:"DSM"}),t.jsx("span",{style:{fontSize:"10px"},children:"⚠"})," ",B]}),!T&&e&&t.jsx("span",{style:{color:"#10B981",fontSize:N.xs},children:"✓ No problems"}),!e&&t.jsx("span",{style:{color:y.faint,fontSize:N.xs},children:"Waiting for validation…"}),D&&t.jsxs(t.Fragment,{children:[t.jsx("div",{style:{width:"1px",height:"14px",background:y.border,flexShrink:0}}),t.jsx("span",{style:{color:y.secondary,fontWeight:600,fontSize:N.xs},children:"Completeness"}),t.jsxs("span",{style:{color:o.overall>=80?"#10B981":o.overall>=50?"#D97706":"#DC2626",fontSize:N.xs,fontWeight:600},children:[o.overall,"%"]}),t.jsx("div",{className:"flex items-center gap-0.5",children:C.map(v=>{const _=v.percentage<40;return t.jsx("div",{title:`${Mt[v.layerId]||v.layerLabel}: ${v.percentage}%`,style:{width:8,height:8,borderRadius:"2px",background:v.layerColor,opacity:Math.max(v.percentage/100,.12),flexShrink:0,animation:_?"memo-pulse-red 1.4s ease-in-out infinite":"none",cursor:"default"}},v.layerId)})})]}),t.jsxs("span",{className:"ml-auto flex items-center gap-1",style:{fontSize:N.xs},children:[e&&t.jsxs("span",{style:{color:y.faint},children:[e.rulesEvaluated," rules | ",e.rulesPassed," passed |"," "]}),t.jsxs("strong",{style:{color:y.secondary,fontWeight:700},children:[S," elements"]}),a&&t.jsxs(t.Fragment,{children:[t.jsx("span",{style:{color:y.faint},children:" · "}),t.jsxs("strong",{style:{color:y.secondary,fontWeight:700},children:[a.relationships.length," rels"]})]})]})]}),s&&t.jsxs("div",{style:{borderTop:`1px solid ${y.borderLight}`},children:[A&&t.jsx("div",{className:"flex",style:{borderBottom:`1px solid ${y.border}`,background:"#FAFAF8"},children:["problems","completeness"].map(v=>t.jsx("button",{onClick:_=>{_.stopPropagation(),p(v)},className:"px-4 py-1.5 font-medium transition-colors",style:{fontSize:N.xs,borderBottom:d===v?`2px solid ${y.accent}`:"2px solid transparent",color:d===v?y.accentDark:y.faint,background:"transparent"},children:v==="problems"?`Problems (${m+r.length})`:`Completeness ${o.overall}%`},v))}),(d==="problems"||!A)&&t.jsx("div",{className:"overflow-y-auto",style:{maxHeight:`${l}px`},children:T?t.jsxs(t.Fragment,{children:[m>0&&(e==null?void 0:e.violations.map((v,_)=>{const O=jt[v.severity]||jt.info;return t.jsxs("div",{className:"flex items-center gap-2 px-4 py-1.5 cursor-pointer transition-colors",style:{color:O.color,fontSize:N.xs},onMouseEnter:P=>P.currentTarget.style.background=O.bg,onMouseLeave:P=>P.currentTarget.style.background="transparent",onClick:()=>n(v.elementId),children:[t.jsx("span",{children:O.icon}),t.jsxs("span",{style:{color:y.faint},children:["[",v.ruleId,"]"]}),t.jsxs("span",{className:"font-medium",children:[v.elementKind,"/",v.elementName]}),t.jsx("span",{className:"truncate flex-1",style:{color:y.muted},children:v.description})]},`${v.ruleId}-${v.elementId}-${_}`)})),r.length>0&&t.jsxs(t.Fragment,{children:[m>0&&t.jsx("div",{style:{padding:"4px 16px",fontSize:"10px",fontWeight:600,color:y.faint,background:y.surfaceAlt,borderTop:`1px solid ${y.border}`,textTransform:"uppercase",letterSpacing:"0.06em"},children:"DSM Analysis"}),r.map(v=>{const _=jt[v.severity]||jt.info;return t.jsxs("div",{className:"flex items-center gap-2 px-4 py-1.5 cursor-pointer transition-colors",style:{color:_.color,fontSize:N.xs},onMouseEnter:O=>O.currentTarget.style.background=_.bg,onMouseLeave:O=>O.currentTarget.style.background="transparent",onClick:()=>n(v.elementId),children:[t.jsx("span",{children:_.icon}),t.jsxs("span",{style:{color:y.faint},children:["[",v.source,"]"]}),t.jsx("span",{className:"font-medium",children:v.elementName}),t.jsx("span",{className:"truncate flex-1",style:{color:y.muted},children:v.message}),v.tag&&t.jsx("span",{style:{flexShrink:0,fontSize:"9px",padding:"1px 5px",borderRadius:"4px",background:"#E5E7EB",color:"#374151"},children:v.tag})]},v.id)})]})]}):t.jsx("div",{className:"px-4 py-3",style:{color:y.faint,fontSize:N.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 ${y.borderLight}`},children:[t.jsxs("span",{style:{fontWeight:700,fontSize:"18px",color:o.overall>=80?"#10B981":o.overall>=50?"#D97706":"#DC2626"},children:[o.overall,"%"]}),t.jsx("div",{className:"flex-1 flex items-center gap-0.5",style:{height:"8px"},children:C.map(v=>{const _=Math.max(v.totalElements/o.totalElements*100,2);return t.jsx("div",{style:{width:`${_}%`,height:"100%",background:v.layerColor+"30",borderRadius:"4px",overflow:"hidden"},children:t.jsx("div",{style:{width:`${v.percentage}%`,height:"100%",background:v.layerColor,borderRadius:"4px"}})},v.layerId)})}),t.jsxs("span",{style:{color:y.faint,fontSize:N.xs},children:[o.completeElements,"/",o.totalElements]})]}),t.jsx("div",{className:"px-4 py-2 grid gap-1.5",style:{gridTemplateColumns:"repeat(auto-fill, minmax(220px, 1fr))"},children:C.map(v=>t.jsxs("div",{className:"flex items-center gap-2",style:{fontSize:N.xs},children:[t.jsx("span",{className:"w-2.5 h-2.5 rounded flex-shrink-0",style:{backgroundColor:v.layerColor}}),t.jsx("span",{className:"flex-1 truncate",style:{color:"#374151"},children:Mt[v.layerId]||v.layerLabel}),t.jsxs("span",{style:{color:"#6B7280"},children:[v.percentage,"%"]}),t.jsxs("span",{style:{color:"#9CA3AF"},children:["(",v.completeElements,"/",v.totalElements,")"]})]},v.layerId))})]})]})]})}function Kd(){const[e,r]=u.useState(!1),[n,a]=u.useState(""),[o,s]=u.useState(0),i=u.useRef(null),l=E(h=>h.model),c=E(h=>h.selectElement),d=E(h=>h.setActiveView),p=E(h=>h.selectViewpoint),f=E(h=>h.setExplorerTab);u.useEffect(()=>{const h=m=>{(m.metaKey||m.ctrlKey)&&m.key==="k"&&(m.preventDefault(),r(B=>!B),a(""),s(0)),m.key==="Escape"&&e&&r(!1)};return window.addEventListener("keydown",h),()=>window.removeEventListener("keydown",h)},[e]),u.useEffect(()=>{e&&setTimeout(()=>{var h;return(h=i.current)==null?void 0:h.focus()},50)},[e]);const b=u.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 m of l.diagrams??[]){const B=Pe[m.diagramType];h.push({id:`diag:${m.id}`,label:m.name,sublabel:(B==null?void 0:B.fullName)||m.diagramType,kind:"diagram",color:B==null?void 0:B.color,action:()=>{d({type:"diagram",diagramId:m.id}),p(m.viewpointId==="__model"?null:m.viewpointId),f("views")}})}for(const m of l.viewpoints??[])h.push({id:`vp:${m.id}`,label:m.label,sublabel:"Viewpoint",kind:"viewpoint",action:()=>{p(m.id),f("views")}});for(const m of Object.values(l.elements))h.push({id:`el:${m.id}`,label:m.name,sublabel:`${m.kind} · ${m.layer}`,kind:"element",color:le[m.layer],action:()=>{c(m.id),f("model")}});return h},[l,d,c,p,f]),w=u.useMemo(()=>{if(!n)return b.slice(0,20);const h=n.toLowerCase();return b.filter(m=>{var B;return m.label.toLowerCase().includes(h)||((B=m.sublabel)==null?void 0:B.toLowerCase().includes(h))}).slice(0,20)},[b,n]);u.useEffect(()=>{s(0)},[w]);const S=u.useCallback(h=>{h.key==="ArrowDown"&&(h.preventDefault(),s(m=>Math.min(m+1,w.length-1))),h.key==="ArrowUp"&&(h.preventDefault(),s(m=>Math.max(m-1,0))),h.key==="Enter"&&w[o]&&(w[o].action(),r(!1))},[w,o]);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=>a(h.target.value),onKeyDown:S,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:[w.length===0&&t.jsx("div",{className:"px-4 py-6 text-center text-xs",style:{color:"#9CA3AF"},children:"No results found"}),w.map((h,m)=>t.jsxs("div",{className:"flex items-center gap-2 px-4 py-2 cursor-pointer",style:{background:m===o?"#F0F0ED":"transparent"},onMouseEnter:()=>s(m),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 Gd(e){const r=e.trim().split(/\r?\n/).filter(Boolean);if(r.length<2)return{headers:[],rows:[]};const a=r[0].includes(" ")?" ":",",o=l=>l.split(a).map(c=>c.replace(/^"(.*)"$/,"$1").replace(/""/g,'"').trim()),s=o(r[0]),i=r.slice(1).map(l=>{const c=o(l),d={};return s.forEach((p,f)=>{d[p]=c[f]??""}),d});return{headers:s,rows:i}}const wr=["id","name","kind","construct","doc","— skip —"];function Yd(){const e=E(k=>k.bulkImportOpen),r=E(k=>k.setBulkImportOpen),n=E(k=>k.importResult),a=E(k=>k.clearImportResult),o=E(k=>k.model),s=u.useRef(null),[i,l]=u.useState("input"),[c,d]=u.useState(""),[p,f]=u.useState(null),[b,w]=u.useState("bulk_import"),[S,g]=u.useState(""),[h,m]=u.useState([]),[B,T]=u.useState([]),[D,A]=u.useState([]),[C,x]=u.useState([]),[v,_]=u.useState([]),[O,P]=u.useState([]),[M,L]=u.useState(""),[F,$]=u.useState(!1);ka.useMemo(()=>o?Array.from(new Set(Object.values(o.elements).map(k=>k.kind))).sort():[],[o]),u.useEffect(()=>{e||(l("input"),d(""),f(null),w("bulk_import"),g(""),m([]),T([]),A([]),x([]),_([]),P([]),L(""),$(!1),a())},[e,a]),u.useEffect(()=>{n&&$(!1)},[n]);const Y=u.useCallback(()=>{r(!1)},[r]),z=u.useCallback(k=>{var K;const j=(K=k.target.files)==null?void 0:K[0];if(!j)return;const I=new FileReader;I.onload=Q=>{var oe;const te=(oe=Q.target)==null?void 0:oe.result;d(te),g("");const H=j.name.replace(/\.[^.]+$/,"").replace(/[^a-zA-Z0-9_]/g,"_");H&&w(H)},I.readAsText(j)},[]),R=u.useCallback(()=>{if(!c.trim()){g("Paste CSV data or upload a file first.");return}const{headers:k,rows:j}=Gd(c);if(k.length===0){g("Could not parse headers. Make sure the first row contains column names.");return}if(j.length===0){g("No data rows found after the header row.");return}m(k),T(j),A(vs(k,p??void 0)),g(""),l("mapping")},[c,p]),U=u.useCallback(()=>{const k=p==null?void 0:p.defaultKind,j=ks(B,D,{},k);L(j.csv),P(j.warnings);const I=j.csv.trim().split(`
4061
- `);if(I.length<2){_(["No rows to preview after applying mappings."]),x([]),l("preview");return}const K=I[0].split(",").map(H=>H.replace(/^"|"$/g,"").trim()),Q=[],te=[];I.slice(1,21).forEach((H,oe)=>{const Ee=H.split(",").map(Ce=>Ce.replace(/^"|"$/g,"").trim()),ue={rowIndex:oe+1,id:"",name:"",kind:"",doc:""};K.forEach((Ce,de)=>{ue[Ce]=Ee[de]??""}),ue.id||te.push(`Row ${oe+2}: missing id`),ue.name||te.push(`Row ${oe+2}: missing name`),ue.kind||te.push(`Row ${oe+2}: missing kind`),Q.push(ue)}),x(Q),_(te),l("preview")},[B,D,p]),W=u.useCallback(()=>{M&&($(!0),a(),$s({elementsCsv:M,packageName:b||"bulk_import"}))},[M,b,a]),V=u.useCallback((k,j)=>{A(I=>I.map((K,Q)=>Q===k?{...K,targetAttribute:j}:K))},[]);if(!e)return null;const X={input:"1 · Input",mapping:"2 · Map columns",preview:"3 · Preview & Import"},ee=["input","mapping","preview"],G=ee.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:k=>{k.target===s.current&&Y()},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:Y,style:Jd,children:"✕"})]}),t.jsx("div",{className:"flex",style:{borderBottom:"1px solid #F0F0EC",background:"#FAFAF8",flexShrink:0},children:ee.map((k,j)=>t.jsx("div",{className:"flex-1 flex items-center justify-center py-2.5",style:{fontSize:N.xs,fontWeight:j===G?700:400,color:j===G?"#1B3A4B":j<G?"#2D6A7A":"#9CA3AF",borderBottom:j===G?"2px solid #2D6A7A":"2px solid transparent"},children:X[k]},k))}),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:on,children:"Artifact type (recipe preset)"}),t.jsxs("select",{value:(p==null?void 0:p.id)??"",onChange:k=>{const j=Kn.find(I=>I.id===k.target.value)??null;f(j)},style:sn,children:[t.jsx("option",{value:"",children:"— Custom / no preset —"}),Kn.map(k=>t.jsx("option",{value:k.id,children:k.name},k.id))]}),p&&t.jsx("p",{style:{fontSize:N.xs,color:"#6B7280",marginTop:4},children:p.description})]}),t.jsxs("div",{children:[t.jsxs("label",{style:on,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:k=>w(k.target.value.replace(/[^a-zA-Z0-9_]/g,"_")),style:sn,placeholder:"bulk_import"})]}),t.jsxs("div",{children:[t.jsxs("label",{style:on,children:["CSV data ",t.jsx("span",{style:{color:"#E74C3C"},children:"*"})]}),t.jsx("textarea",{value:c,onChange:k=>{d(k.target.value),g("")},placeholder:`Paste CSV or tab-separated data here.
4060
+ `,document.head.appendChild(e)}const Ft={error:{color:"#DC2626",bg:"#FEF2F2",icon:"✖"},warning:{color:"#D97706",bg:"#FFFBEB",icon:"⚠"},info:{color:"#2563EB",bg:"#EFF6FF",icon:"ℹ"}};function Wd(){const e=C(g=>g.validation),r=C(g=>g.analysisIssues),n=C(g=>g.selectElement),a=C(g=>g.model),o=C(g=>g.completeness),s=C(g=>g.gapBarExpanded),i=C(g=>g.toggleGapBar),l=C(g=>g.gapBarHeight),c=C(g=>g.setGapBarHeight),[d,p]=u.useState("problems"),f=u.useRef(!1),k=u.useRef(0),w=u.useRef(0),S=a?Object.keys(a.elements).length:0,x=(e==null?void 0:e.violations.filter(g=>g.severity==="error"))??[],h=(e==null?void 0:e.violations.filter(g=>g.severity==="warning"))??[],m=(e==null?void 0:e.violations.length)??0,B=r.filter(g=>g.severity==="warning").length,T=m>0||r.length>0,A=!!o,U=T&&A,E=(o==null?void 0:o.layers.filter(g=>g.totalElements>0))??[],b=u.useCallback(g=>{g.preventDefault(),f.current=!0,k.current=g.clientY,w.current=l;const I=R=>{if(!f.current)return;const F=k.current-R.clientY;c(w.current+F)},O=()=>{f.current=!1,document.removeEventListener("mousemove",I),document.removeEventListener("mouseup",O)};document.addEventListener("mousemove",I),document.addEventListener("mouseup",O)},[l,c]);return t.jsxs("div",{style:{background:y.surface,borderTop:`1px solid ${y.border}`,flexShrink:0},children:[s&&t.jsx("div",{style:{height:"4px",cursor:"row-resize",background:"transparent",flexShrink:0},onMouseDown:b,onMouseEnter:g=>{g.currentTarget.style.background=y.accent+"40"},onMouseLeave:g=>{g.currentTarget.style.background="transparent"}}),t.jsxs("div",{className:"flex items-center px-4 gap-3 cursor-pointer select-none",style:{height:"32px",fontSize:N.sm},onClick:i,children:[t.jsx("span",{style:{color:y.faint,fontSize:"10px",transition:"transform 150ms ease",transform:s?"rotate(0deg)":"rotate(-90deg)",display:"inline-block"},children:"▼"}),t.jsx("span",{style:{color:y.secondary,fontWeight:600,fontSize:N.xs},children:"Problems"}),x.length>0&&t.jsxs("span",{className:"flex items-center gap-1",style:{color:"#DC2626",fontSize:N.xs},children:[t.jsx("span",{style:{fontSize:"10px"},children:"✖"})," ",x.length]}),h.length>0&&t.jsxs("span",{className:"flex items-center gap-1",style:{color:"#D97706",fontSize:N.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:N.xs},children:[t.jsx("span",{style:{fontSize:"9px",opacity:.7},children:"DSM"}),t.jsx("span",{style:{fontSize:"10px"},children:"⚠"})," ",B]}),!T&&e&&t.jsx("span",{style:{color:"#10B981",fontSize:N.xs},children:"✓ No problems"}),!e&&t.jsx("span",{style:{color:y.faint,fontSize:N.xs},children:"Waiting for validation…"}),A&&t.jsxs(t.Fragment,{children:[t.jsx("div",{style:{width:"1px",height:"14px",background:y.border,flexShrink:0}}),t.jsx("span",{style:{color:y.secondary,fontWeight:600,fontSize:N.xs},children:"Completeness"}),t.jsxs("span",{style:{color:o.overall>=80?"#10B981":o.overall>=50?"#D97706":"#DC2626",fontSize:N.xs,fontWeight:600},children:[o.overall,"%"]}),t.jsx("div",{className:"flex items-center gap-0.5",children:E.map(g=>{const I=g.percentage<40;return t.jsx("div",{title:`${Je[g.layerId]||g.layerLabel}: ${g.percentage}%`,style:{width:8,height:8,borderRadius:"2px",background:g.layerColor,opacity:Math.max(g.percentage/100,.12),flexShrink:0,animation:I?"memo-pulse-red 1.4s ease-in-out infinite":"none",cursor:"default"}},g.layerId)})})]}),t.jsxs("span",{className:"ml-auto flex items-center gap-1",style:{fontSize:N.xs},children:[e&&t.jsxs("span",{style:{color:y.faint},children:[e.rulesEvaluated," rules | ",e.rulesPassed," passed |"," "]}),t.jsxs("strong",{style:{color:y.secondary,fontWeight:700},children:[S," elements"]}),a&&t.jsxs(t.Fragment,{children:[t.jsx("span",{style:{color:y.faint},children:" · "}),t.jsxs("strong",{style:{color:y.secondary,fontWeight:700},children:[a.relationships.length," rels"]})]})]})]}),s&&t.jsxs("div",{style:{borderTop:`1px solid ${y.borderLight}`},children:[U&&t.jsx("div",{className:"flex",style:{borderBottom:`1px solid ${y.border}`,background:"#FAFAF8"},children:["problems","completeness"].map(g=>t.jsx("button",{onClick:I=>{I.stopPropagation(),p(g)},className:"px-4 py-1.5 font-medium transition-colors",style:{fontSize:N.xs,borderBottom:d===g?`2px solid ${y.accent}`:"2px solid transparent",color:d===g?y.accentDark:y.faint,background:"transparent"},children:g==="problems"?`Problems (${m+r.length})`:`Completeness ${o.overall}%`},g))}),(d==="problems"||!U)&&t.jsx("div",{className:"overflow-y-auto",style:{maxHeight:`${l}px`},children:T?t.jsxs(t.Fragment,{children:[m>0&&(e==null?void 0:e.violations.map((g,I)=>{const O=Ft[g.severity]||Ft.info;return t.jsxs("div",{className:"flex items-center gap-2 px-4 py-1.5 cursor-pointer transition-colors",style:{color:O.color,fontSize:N.xs},onMouseEnter:R=>R.currentTarget.style.background=O.bg,onMouseLeave:R=>R.currentTarget.style.background="transparent",onClick:()=>n(g.elementId),children:[t.jsx("span",{children:O.icon}),t.jsxs("span",{style:{color:y.faint},children:["[",g.ruleId,"]"]}),t.jsxs("span",{className:"font-medium",children:[g.elementKind,"/",g.elementName]}),t.jsx("span",{className:"truncate flex-1",style:{color:y.muted},children:g.description})]},`${g.ruleId}-${g.elementId}-${I}`)})),r.length>0&&t.jsxs(t.Fragment,{children:[m>0&&t.jsx("div",{style:{padding:"4px 16px",fontSize:"10px",fontWeight:600,color:y.faint,background:y.surfaceAlt,borderTop:`1px solid ${y.border}`,textTransform:"uppercase",letterSpacing:"0.06em"},children:"DSM Analysis"}),r.map(g=>{const I=Ft[g.severity]||Ft.info;return t.jsxs("div",{className:"flex items-center gap-2 px-4 py-1.5 cursor-pointer transition-colors",style:{color:I.color,fontSize:N.xs},onMouseEnter:O=>O.currentTarget.style.background=I.bg,onMouseLeave:O=>O.currentTarget.style.background="transparent",onClick:()=>n(g.elementId),children:[t.jsx("span",{children:I.icon}),t.jsxs("span",{style:{color:y.faint},children:["[",g.source,"]"]}),t.jsx("span",{className:"font-medium",children:g.elementName}),t.jsx("span",{className:"truncate flex-1",style:{color:y.muted},children:g.message}),g.tag&&t.jsx("span",{style:{flexShrink:0,fontSize:"9px",padding:"1px 5px",borderRadius:"4px",background:"#E5E7EB",color:"#374151"},children:g.tag})]},g.id)})]})]}):t.jsx("div",{className:"px-4 py-3",style:{color:y.faint,fontSize:N.xs},children:e?"✓ No problems found":"Waiting for validation…"})}),(d==="completeness"||!U)&&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 ${y.borderLight}`},children:[t.jsxs("span",{style:{fontWeight:700,fontSize:"18px",color:o.overall>=80?"#10B981":o.overall>=50?"#D97706":"#DC2626"},children:[o.overall,"%"]}),t.jsx("div",{className:"flex-1 flex items-center gap-0.5",style:{height:"8px"},children:E.map(g=>{const I=Math.max(g.totalElements/o.totalElements*100,2);return t.jsx("div",{style:{width:`${I}%`,height:"100%",background:g.layerColor+"30",borderRadius:"4px",overflow:"hidden"},children:t.jsx("div",{style:{width:`${g.percentage}%`,height:"100%",background:g.layerColor,borderRadius:"4px"}})},g.layerId)})}),t.jsxs("span",{style:{color:y.faint,fontSize:N.xs},children:[o.completeElements,"/",o.totalElements]})]}),t.jsx("div",{className:"px-4 py-2 grid gap-1.5",style:{gridTemplateColumns:"repeat(auto-fill, minmax(220px, 1fr))"},children:E.map(g=>t.jsxs("div",{className:"flex items-center gap-2",style:{fontSize:N.xs},children:[t.jsx("span",{className:"w-2.5 h-2.5 rounded flex-shrink-0",style:{backgroundColor:g.layerColor}}),t.jsx("span",{className:"flex-1 truncate",style:{color:"#374151"},children:Je[g.layerId]||g.layerLabel}),t.jsxs("span",{style:{color:"#6B7280"},children:[g.percentage,"%"]}),t.jsxs("span",{style:{color:"#9CA3AF"},children:["(",g.completeElements,"/",g.totalElements,")"]})]},g.layerId))})]})]})]})}function Hd(){const[e,r]=u.useState(!1),[n,a]=u.useState(""),[o,s]=u.useState(0),i=u.useRef(null),l=C(h=>h.model),c=C(h=>h.selectElement),d=C(h=>h.setActiveView),p=C(h=>h.selectViewpoint),f=C(h=>h.setExplorerTab);u.useEffect(()=>{const h=m=>{(m.metaKey||m.ctrlKey)&&m.key==="k"&&(m.preventDefault(),r(B=>!B),a(""),s(0)),m.key==="Escape"&&e&&r(!1)};return window.addEventListener("keydown",h),()=>window.removeEventListener("keydown",h)},[e]),u.useEffect(()=>{e&&setTimeout(()=>{var h;return(h=i.current)==null?void 0:h.focus()},50)},[e]);const k=u.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 m of l.diagrams??[]){const B=ze[m.diagramType];h.push({id:`diag:${m.id}`,label:m.name,sublabel:(B==null?void 0:B.fullName)||m.diagramType,kind:"diagram",color:B==null?void 0:B.color,action:()=>{d({type:"diagram",diagramId:m.id}),p(m.viewpointId==="__model"?null:m.viewpointId),f("views")}})}for(const m of l.viewpoints??[])h.push({id:`vp:${m.id}`,label:m.label,sublabel:"Viewpoint",kind:"viewpoint",action:()=>{p(m.id),f("views")}});for(const m of Object.values(l.elements))h.push({id:`el:${m.id}`,label:m.name,sublabel:`${m.kind} · ${m.layer}`,kind:"element",color:ce[m.layer],action:()=>{c(m.id),f("model")}});return h},[l,d,c,p,f]),w=u.useMemo(()=>{if(!n)return k.slice(0,20);const h=n.toLowerCase();return k.filter(m=>{var B;return m.label.toLowerCase().includes(h)||((B=m.sublabel)==null?void 0:B.toLowerCase().includes(h))}).slice(0,20)},[k,n]);u.useEffect(()=>{s(0)},[w]);const S=u.useCallback(h=>{h.key==="ArrowDown"&&(h.preventDefault(),s(m=>Math.min(m+1,w.length-1))),h.key==="ArrowUp"&&(h.preventDefault(),s(m=>Math.max(m-1,0))),h.key==="Enter"&&w[o]&&(w[o].action(),r(!1))},[w,o]);if(!e)return null;const x={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=>a(h.target.value),onKeyDown:S,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:[w.length===0&&t.jsx("div",{className:"px-4 py-6 text-center text-xs",style:{color:"#9CA3AF"},children:"No results found"}),w.map((h,m)=>t.jsxs("div",{className:"flex items-center gap-2 px-4 py-2 cursor-pointer",style:{background:m===o?"#F0F0ED":"transparent"},onMouseEnter:()=>s(m),onClick:()=>{h.action(),r(!1)},children:[t.jsx("span",{style:{color:h.color||"#9CA3AF",fontSize:"12px"},children:x[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 Kd(e){const r=e.trim().split(/\r?\n/).filter(Boolean);if(r.length<2)return{headers:[],rows:[]};const a=r[0].includes(" ")?" ":",",o=l=>l.split(a).map(c=>c.replace(/^"(.*)"$/,"$1").replace(/""/g,'"').trim()),s=o(r[0]),i=r.slice(1).map(l=>{const c=o(l),d={};return s.forEach((p,f)=>{d[p]=c[f]??""}),d});return{headers:s,rows:i}}const vr=["id","name","kind","construct","doc","— skip —"];function Gd(){const e=C(v=>v.bulkImportOpen),r=C(v=>v.setBulkImportOpen),n=C(v=>v.importResult),a=C(v=>v.clearImportResult),o=C(v=>v.model),s=u.useRef(null),[i,l]=u.useState("input"),[c,d]=u.useState(""),[p,f]=u.useState(null),[k,w]=u.useState("bulk_import"),[S,x]=u.useState(""),[h,m]=u.useState([]),[B,T]=u.useState([]),[A,U]=u.useState([]),[E,b]=u.useState([]),[g,I]=u.useState([]),[O,R]=u.useState([]),[F,_]=u.useState(""),[D,V]=u.useState(!1);va.useMemo(()=>o?Array.from(new Set(Object.values(o.elements).map(v=>v.kind))).sort():[],[o]),u.useEffect(()=>{e||(l("input"),d(""),f(null),w("bulk_import"),x(""),m([]),T([]),U([]),b([]),I([]),R([]),_(""),V(!1),a())},[e,a]),u.useEffect(()=>{n&&V(!1)},[n]);const G=u.useCallback(()=>{r(!1)},[r]),z=u.useCallback(v=>{var Y;const j=(Y=v.target.files)==null?void 0:Y[0];if(!j)return;const P=new FileReader;P.onload=te=>{var ne;const Q=(ne=te.target)==null?void 0:ne.result;d(Q),x("");const L=j.name.replace(/\.[^.]+$/,"").replace(/[^a-zA-Z0-9_]/g,"_");L&&w(L)},P.readAsText(j)},[]),K=u.useCallback(()=>{if(!c.trim()){x("Paste CSV data or upload a file first.");return}const{headers:v,rows:j}=Kd(c);if(v.length===0){x("Could not parse headers. Make sure the first row contains column names.");return}if(j.length===0){x("No data rows found after the header row.");return}m(v),T(j),U(xs(v,p??void 0)),x(""),l("mapping")},[c,p]),W=u.useCallback(()=>{const v=p==null?void 0:p.defaultKind,j=vs(B,A,{},v);_(j.csv),R(j.warnings);const P=j.csv.trim().split(`
4061
+ `);if(P.length<2){I(["No rows to preview after applying mappings."]),b([]),l("preview");return}const Y=P[0].split(",").map(L=>L.replace(/^"|"$/g,"").trim()),te=[],Q=[];P.slice(1,21).forEach((L,ne)=>{const me=L.split(",").map(se=>se.replace(/^"|"$/g,"").trim()),pe={rowIndex:ne+1,id:"",name:"",kind:"",doc:""};Y.forEach((se,ae)=>{pe[se]=me[ae]??""}),pe.id||Q.push(`Row ${ne+2}: missing id`),pe.name||Q.push(`Row ${ne+2}: missing name`),pe.kind||Q.push(`Row ${ne+2}: missing kind`),te.push(pe)}),b(te),I(Q),l("preview")},[B,A,p]),J=u.useCallback(()=>{F&&(V(!0),a(),Ls({elementsCsv:F,packageName:k||"bulk_import"}))},[F,k,a]),X=u.useCallback((v,j)=>{U(P=>P.map((Y,te)=>te===v?{...Y,targetAttribute:j}:Y))},[]);if(!e)return null;const M={input:"1 · Input",mapping:"2 · Map columns",preview:"3 · Preview & Import"},H=["input","mapping","preview"],$=H.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:v=>{v.target===s.current&&G()},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:G,style:Yd,children:"✕"})]}),t.jsx("div",{className:"flex",style:{borderBottom:"1px solid #F0F0EC",background:"#FAFAF8",flexShrink:0},children:H.map((v,j)=>t.jsx("div",{className:"flex-1 flex items-center justify-center py-2.5",style:{fontSize:N.xs,fontWeight:j===$?700:400,color:j===$?"#1B3A4B":j<$?"#2D6A7A":"#9CA3AF",borderBottom:j===$?"2px solid #2D6A7A":"2px solid transparent"},children:M[v]},v))}),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:ln,children:"Artifact type (recipe preset)"}),t.jsxs("select",{value:(p==null?void 0:p.id)??"",onChange:v=>{const j=Gn.find(P=>P.id===v.target.value)??null;f(j)},style:dn,children:[t.jsx("option",{value:"",children:"— Custom / no preset —"}),Gn.map(v=>t.jsx("option",{value:v.id,children:v.name},v.id))]}),p&&t.jsx("p",{style:{fontSize:N.xs,color:"#6B7280",marginTop:4},children:p.description})]}),t.jsxs("div",{children:[t.jsxs("label",{style:ln,children:["Package name ",t.jsx("span",{style:{color:"#9CA3AF",fontWeight:400},children:"(for the generated .sysml file)"})]}),t.jsx("input",{type:"text",value:k,onChange:v=>w(v.target.value.replace(/[^a-zA-Z0-9_]/g,"_")),style:dn,placeholder:"bulk_import"})]}),t.jsxs("div",{children:[t.jsxs("label",{style:ln,children:["CSV data ",t.jsx("span",{style:{color:"#E74C3C"},children:"*"})]}),t.jsx("textarea",{value:c,onChange:v=>{d(v.target.value),x("")},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:{...sn,resize:"vertical",fontFamily:"monospace",fontSize:"12px",lineHeight:"1.5"}}),S&&t.jsx("p",{style:{fontSize:N.xs,color:"#E74C3C",marginTop:4},children:S})]}),t.jsxs("div",{className:"flex items-center gap-3",children:[t.jsx("span",{style:{fontSize:N.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:N.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:N.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:N.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:N.xs,fontWeight:600,color:"#374151"},children:"Source column"}),t.jsx("span",{style:{flex:1,fontSize:N.xs,fontWeight:600,color:"#374151"},children:"Maps to"}),t.jsx("span",{style:{width:80,fontSize:N.xs,fontWeight:600,color:"#374151"},children:"Transform"})]}),D.map((k,j)=>{const I=["id","name","kind"].includes(k.targetAttribute),K=!k.targetAttribute,Q=D.filter((H,oe)=>oe!==j&&["id","name","kind","doc","construct"].includes(H.targetAttribute)).map(H=>H.targetAttribute),te=wr.filter(H=>H==="— skip —"||!Q.includes(H)||H===k.targetAttribute);return t.jsxs("div",{className:"flex items-center",style:{padding:"6px 12px",borderBottom:j<D.length-1?"1px solid #F0F0EC":"none",background:I?"#F0FDF4":"transparent"},children:[t.jsx("div",{style:{flex:1,fontSize:N.xs,color:"#374151",fontFamily:"monospace"},children:k.sourceColumn}),t.jsx("div",{style:{flex:1,paddingRight:8},children:t.jsxs("select",{value:k.targetAttribute||"",onChange:H=>V(j,H.target.value==="— skip —"?"":H.target.value),style:{width:"100%",fontSize:N.xs,padding:"3px 6px",borderRadius:5,border:`1px solid ${K?"#E5E5E0":I?"#22C55E":"#E5E5E0"}`,background:K?"#F9FAFB":"#FFFFFF",color:K?"#9CA3AF":"#1a1a1a"},children:[te.map(H=>t.jsx("option",{value:H,children:H},H)),k.targetAttribute&&!wr.includes(k.targetAttribute)&&t.jsx("option",{value:k.targetAttribute,children:k.targetAttribute})]})}),t.jsx("div",{style:{width:80,fontSize:"10px",color:"#9CA3AF"},children:k.transform??"—"})]},j)})]}),B.length>0&&t.jsxs("details",{children:[t.jsxs("summary",{style:{fontSize:N.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(k=>t.jsx("th",{style:Ue,children:k},k))})}),t.jsx("tbody",{children:B.slice(0,3).map((k,j)=>t.jsx("tr",{children:h.map(I=>t.jsx("td",{style:rt,children:k[I]??""},I))},j))})]})})]})]}),i==="preview"&&t.jsxs("div",{className:"flex flex-col gap-4",children:[v.length>0&&t.jsxs("div",{style:{background:"#FEF2F2",border:"1px solid #FECACA",borderRadius:8,padding:"10px 14px"},children:[t.jsxs("p",{style:{fontSize:N.xs,fontWeight:700,color:"#DC2626",margin:"0 0 4px"},children:[v.length," validation error(s) — rows with missing required fields will be skipped"]}),v.slice(0,5).map((k,j)=>t.jsx("p",{style:{fontSize:"11px",color:"#DC2626",margin:"1px 0"},children:k},j)),v.length>5&&t.jsxs("p",{style:{fontSize:"11px",color:"#DC2626",margin:"2px 0 0"},children:["+",v.length-5," more…"]})]}),O.length>0&&t.jsxs("div",{style:{background:"#FFFBEB",border:"1px solid #FDE68A",borderRadius:8,padding:"10px 14px"},children:[t.jsxs("p",{style:{fontSize:N.xs,fontWeight:700,color:"#D97706",margin:"0 0 4px"},children:[O.length," warning(s)"]}),O.slice(0,3).map((k,j)=>t.jsx("p",{style:{fontSize:"11px",color:"#D97706",margin:"1px 0"},children:k},j))]}),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:N.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((k,j)=>t.jsx("p",{style:{fontSize:"11px",color:"#DC2626",margin:"1px 0"},children:k},j)),n.warnings.slice(0,3).map((k,j)=>t.jsx("p",{style:{fontSize:"11px",color:"#D97706",margin:"1px 0"},children:k},j))]}),C.length>0&&t.jsxs(t.Fragment,{children:[t.jsxs("p",{style:{fontSize:N.xs,color:"#6B7280",margin:0},children:["Showing first ",C.length," of ",B.length," row(s)",B.length>C.length&&` (+${B.length-C.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:Ue,children:"#"}),t.jsx("th",{style:Ue,children:"id"}),t.jsx("th",{style:Ue,children:"name"}),t.jsx("th",{style:Ue,children:"kind"}),t.jsx("th",{style:Ue,children:"doc"})]})}),t.jsx("tbody",{children:C.map(k=>{const j=!k.id||!k.name||!k.kind;return t.jsxs("tr",{style:{background:j?"#FEF9F9":"transparent"},children:[t.jsx("td",{style:Sr,children:k.rowIndex}),t.jsx("td",{style:{...Sr,color:k.id?"#1a1a1a":"#DC2626"},children:k.id||"⚠ missing"}),t.jsx("td",{style:{...rt,maxWidth:160,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:String(k.name||"—")}),t.jsx("td",{style:{...rt,color:k.kind?"#1B3A4B":"#DC2626"},children:k.kind||"⚠ missing"}),t.jsx("td",{style:{...rt,maxWidth:180,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",color:"#6B7280"},children:String(k.doc||"—")})]},k.rowIndex)})})]})})]}),C.length===0&&v.length===0&&t.jsx("p",{style:{fontSize:N.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[G-1]),style:kr,children:"← Back"})}),t.jsxs("div",{className:"flex gap-2 items-center",children:[t.jsx("button",{onClick:Y,style:kr,children:n!=null&&n.success?"Done":"Cancel"}),!n&&t.jsxs(t.Fragment,{children:[i==="input"&&t.jsx("button",{onClick:R,style:ln,children:"Next →"}),i==="mapping"&&t.jsx("button",{onClick:U,style:ln,children:"Preview →"}),i==="preview"&&t.jsx("button",{onClick:W,disabled:F||C.length===0,style:{...ln,opacity:F||C.length===0?.5:1,cursor:F||C.length===0?"not-allowed":"pointer"},children:F?"Importing…":`Import ${B.length} element(s)`})]})]})]})]})})}const on={display:"block",fontSize:N.xs,fontWeight:600,color:"#374151",marginBottom:6},sn={width:"100%",padding:"7px 10px",borderRadius:8,border:"1px solid #E5E5E0",fontSize:N.sm,color:"#1a1a1a",background:"#FAFAF8",boxSizing:"border-box"},Jd={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"},ln={padding:"7px 18px",borderRadius:8,background:"#1B3A4B",border:"none",color:"#FFFFFF",fontSize:N.xs,fontWeight:600,cursor:"pointer"},kr={padding:"7px 14px",borderRadius:8,background:"transparent",border:"1px solid #E5E5E0",color:"#374151",fontSize:N.xs,cursor:"pointer"},Ue={padding:"5px 8px",textAlign:"left",fontWeight:600,fontSize:"10px",color:"#6B7280",borderBottom:"1px solid #E5E5E0",whiteSpace:"nowrap"},rt={padding:"4px 8px",fontSize:"11px",color:"#1a1a1a",borderBottom:"1px solid #F5F5F2"},Sr={...rt,fontFamily:"monospace",fontSize:"10px",color:"#6B7280"};function Xd(){var p,f,b;const e=E(w=>w.activeView),r=E(w=>w.model),n=E(w=>w.selectedElementId),a=E(w=>w.activeMode),o=E(w=>w.setActiveMode),s=E(w=>w.selectElement),i=E(w=>w.setActiveView),l=Se(),c=[],d=(()=>{switch(e.type){case"diagram":return;case"element-detail":return{label:"Model Explorer",icon:"☰",onClick:()=>{o("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:()=>{o("scenario"),i({type:"scenario-editor"}),l("/use-cases")}};case"dhf-dashboard":case"dhf-dashboard-legacy":case"dhf-document":return{label:"Documents",icon:"⊞",onClick:()=>{o("dhf"),i({type:"dhf-dashboard"}),l("/dhf")}};case"welcome":return a==="diagram"?{label:"Viewpoints",icon:"⊟",onClick:()=>l("/diagrams")}:a==="catalog"?{label:"Model Explorer",icon:"☰",onClick:()=>l("/catalog")}:void 0;default:return}})();switch(e.type){case"diagram":{const w=qt(r,e.diagramId);if(w){const S=w.viewpointId==="__model"?"Unassigned Views":((f=(p=r==null?void 0:r.viewpoints)==null?void 0:p.find(T=>T.id===w.viewpointId))==null?void 0:f.label)||w.viewpointId,g=(b=r==null?void 0:r.viewpoints)==null?void 0:b.find(T=>T.id===w.viewpointId);c.push({label:g?`${g.id} · ${S}`:S});const h=w.viewKind?In[w.viewKind]:void 0,m=Pe[w.diagramType],B=(h==null?void 0:h.label)??(m==null?void 0:m.code)??w.diagramType;c.push({label:`${w.shortId??w.id} · ${B}: ${w.name}`})}break}case"element-detail":{const w=e.elementId,S=r==null?void 0:r.elements[w];if(S){const g=S.shortId??S.id,h=g.split("-")[0];c.push({label:"Catalog",onClick:()=>l("/catalog")}),c.push({label:h,onClick:()=>l(`/catalog/${h}`)}),c.push({label:`${g} ${S.name}`})}break}}if(n&&r&&e.type!=="element-detail"){const w=r.elements[n];w&&c.push({label:w.name,onClick:()=>s(w.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((w,S)=>t.jsxs("span",{className:"flex items-center gap-1",children:[(d||S>0)&&t.jsx("span",{className:"text-xs",style:{color:"#D1D5DB"},children:"/"}),w.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:w.onClick,children:w.label}):t.jsx("span",{className:"text-xs",style:{color:S===c.length-1?"#374151":"#9CA3AF"},children:w.label})]},S)),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 Er="memo-onboarding-completed",Ze=[{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 Qd(){const[e,r]=u.useState(!1),[n,a]=u.useState(0);u.useEffect(()=>{try{if(!localStorage.getItem(Er)){const b=setTimeout(()=>r(!0),800);return()=>clearTimeout(b)}}catch{}},[]);const o=u.useCallback(()=>{r(!1);try{localStorage.setItem(Er,"true")}catch{}},[]),s=u.useCallback(()=>{n>=Ze.length-1?o():a(n+1)},[n,o]),i=u.useCallback(()=>{n>0&&a(n-1)},[n]);if(!e)return null;const l=Ze[n],c=n===Ze.length-1,d=n===0,p=()=>{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:o}),t.jsxs("div",{className:"fixed z-50 rounded-xl p-5 max-w-sm",style:{...p(),background:"#FFFFFF",boxShadow:"0 8px 32px rgba(0,0,0,0.2)",border:"1px solid #E5E5E0"},onClick:f=>f.stopPropagation(),children:[t.jsx("div",{className:"flex items-center gap-1 mb-3",children:Ze.map((f,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:o,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 ",Ze.length]})]})]})}function Zd(){const e=E(o=>o.restartRequired);if(!e)return null;const r=e.reason==="dependency-closure-uncomputable",n=e.reason==="transaction-independence-uncomputable",a=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:a}),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 ec(){const e=E(s=>s.editConflict),r=E(s=>s.setEditConflict);if(!e)return null;const n=e.reason==="stale-identity",a=JSON.stringify(e.rejectedDraft,null,2),o=()=>{const s=URL.createObjectURL(new Blob([a],{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(a),children:"Copy draft"}),t.jsx("button",{onClick:o,children:"Download rejected edit"}),t.jsx("button",{onClick:()=>Vs(e.sourceFile),children:"Reveal file"}),t.jsx("button",{onClick:()=>r(null),children:"Dismiss"})]})]})}const tc=4;function nc(){const e=E(i=>i.sourceCoherence);if(!e)return null;const{files:r,diagnostics:n,lastGoodRevision:a}=e,o=n.slice(0,tc),s=n.length-o.length;return t.jsxs("div",{role:"status","aria-live":"polite",style:{position:"fixed",bottom:16,left:"50%",transform:"translateX(-50%)",zIndex:9e3,maxWidth:620,width:"calc(100% - 32px)",background:"#1E293B",border:"1px solid #F59E0B",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:"#FBBF24",marginBottom:4},children:a>0?`Showing the last model that compiled (revision ${a})`:"Showing everything that parsed"}),t.jsxs("div",{style:{fontSize:"0.75rem",color:"#CBD5E1",marginBottom:o.length?8:0},children:[r.length===1?r[0]:`${r.length} files`," did not parse. Edits are held until the source compiles again — no restart needed."]}),o.map((i,l)=>t.jsxs("div",{style:{fontSize:"0.7rem",color:"#94A3B8",fontFamily:"monospace",lineHeight:1.5},children:[i.file,i.line!==void 0?`:${i.line}`:"",i.column!==void 0?`:${i.column}`:""," — ",i.message]},`${i.file}:${i.line??0}:${l}`)),s>0&&t.jsxs("div",{style:{fontSize:"0.7rem",color:"#64748B",marginTop:4},children:["and ",s," more"]})]})}function ga({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 rc(){const e=E(o=>o.model),r=Se(),n=u.useMemo(()=>{if(!e)return[];const o={};for(const s of Object.values(e.elements)){const i=Vl(s.kind),l=$l(i);o[l]||(o[l]={count:0,kinds:new Set,layer:s.layer}),o[l].count++,o[l].kinds.add(s.kind)}return Object.entries(o).sort((s,i)=>i[1].count-s[1].count)},[e]);if(!e)return t.jsx("div",{style:{flex:1,display:"flex",alignItems:"center",justifyContent:"center",background:"#F7F7F5"},children:t.jsx("p",{style:{color:y.muted,fontSize:N.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:y.primary,margin:"0 0 4px"},children:"Catalog"}),t.jsxs("p",{style:{color:y.muted,fontSize:N.sm,margin:0},children:[a," elements across ",n.length," families"]})]}),t.jsx(ga,{size:132})]}),t.jsx("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(200px, 1fr))",gap:"12px"},children:n.map(([o,s])=>{const i=le[s.layer]??"#9CA3AF";return t.jsx(ac,{family:o,count:s.count,kinds:s.kinds,color:i,onClick:()=>r(Hl(o))},o)})})]})}function ac({family:e,count:r,kinds:n,color:a,onClick:o}){return t.jsxs("div",{onClick:o,style:{background:y.surface,border:`1px solid ${y.border}`,borderRadius:"10px",padding:"16px",cursor:"pointer",transition:"box-shadow 0.15s, border-color 0.15s",borderTop:`3px solid ${a}`},onMouseEnter:s=>{s.currentTarget.style.boxShadow="0 4px 12px rgba(0,0,0,0.08)",s.currentTarget.style.borderTopColor=a},onMouseLeave:s=>{s.currentTarget.style.boxShadow="none"},children:[t.jsx("div",{style:{fontWeight:700,fontSize:"15px",color:y.primary,marginBottom:"4px"},children:e}),t.jsx("div",{style:{fontSize:"22px",fontWeight:800,color:a,lineHeight:1,marginBottom:"6px"},children:r}),t.jsxs("div",{style:{fontSize:"11px",color:y.muted,lineHeight:"1.5"},children:[Array.from(n).slice(0,3).join(", "),n.size>3&&` +${n.size-3} more`]})]})}function oc(){var o;const e=E(s=>s.model),r=Se(),n=u.useMemo(()=>{var b;const s=(e==null?void 0:e.diagrams)??[],i=new Map,l=new Map(((e==null?void 0:e.viewpoints)??[]).map(w=>[w.id,w]));for(const w of s){const S=w.viewpointIds;for(const g of S!=null&&S.length?S:[w.viewpointId]){const h=(b=e==null?void 0:e.viewpoints)==null?void 0:b.find(T=>T.id===g),m=h?g:be,B=i.get(m);B?B.items.push(w):i.set(m,{id:m,label:(h==null?void 0:h.label)??"Uncategorized",items:[w]})}}const c=pa([...i.values()].filter(w=>w.id!==be).map(w=>({...w,...l.get(w.id)}))),d=ma(c.map(w=>w.label)),p=c.map((w,S)=>({...w,label:d[S],items:[...w.items].sort((g,h)=>g.name.localeCompare(h.name))})),f=i.get(be);return f?[...p,{...f,items:[...f.items].sort((w,S)=>w.name.localeCompare(S.name))}]:p},[e]);if(!e)return t.jsx("div",{style:{flex:1,display:"flex",alignItems:"center",justifyContent:"center",background:"#F7F7F5"},children:t.jsx("p",{style:{color:y.muted,fontSize:N.sm},children:"Loading…"})});const a=((o=e.diagrams)==null?void 0:o.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:y.primary,margin:"0 0 4px"},children:"Viewpoints"}),t.jsxs("p",{style:{color:y.muted,fontSize:N.sm,margin:0},children:[a," model ",a===1?"view":"views"," across ",n.length," ",n.length===1?"viewpoint":"viewpoints"]})]}),t.jsx(ga,{size:132})]}),a===0&&t.jsx("p",{style:{color:y.muted,fontSize:N.sm},children:"This model defines no model views yet."}),n.map(s=>t.jsxs("section",{style:{marginBottom:"28px"},children:[t.jsxs("h2",{style:{fontSize:"11px",fontWeight:700,color:y.muted,textTransform:"uppercase",letterSpacing:"0.06em",margin:"0 0 10px 0"},children:[s.label,t.jsx("code",{style:{marginLeft:8,color:y.faint,textTransform:"none"},children:s.id===be?"no viewpoint":s.id}),t.jsx("span",{style:{marginLeft:8,fontWeight:400},children:s.items.length})]}),t.jsx("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(220px, 1fr))",gap:"12px"},children:s.items.map(i=>t.jsx(sc,{diagram:i,onClick:()=>r(da(i.diagramType,i.shortId??i.id))},i.id))})]},s.id))]})}function sc({diagram:e,onClick:r}){var c;const n=e.viewKind?In[e.viewKind]:void 0,a=Pe[e.diagramType],o=n??a,s=(n==null?void 0:n.label)??(a==null?void 0:a.code),i=(o==null?void 0:o.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:y.surface,border:`1px solid ${y.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:[o&&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:y.muted},children:"auto"})]}),t.jsx("div",{style:{fontWeight:600,fontSize:"14px",color:y.primary,marginBottom:4},children:e.name}),t.jsx("div",{style:{fontFamily:"ui-monospace, SFMono-Regular, Menlo, monospace",fontSize:"10px",color:y.faint,marginBottom:4},children:e.shortId??e.id}),t.jsxs("div",{style:{fontSize:"11px",color:y.muted,lineHeight:1.5},children:[(o==null?void 0:o.fullName)??e.diagramType,l>0&&` · ${l} element${l===1?"":"s"}`]})]})}function ic({family:e}){const r=E(c=>c.model),n=Se(),[a,o]=u.useState(""),s=u.useMemo(()=>r?Object.values(r.elements).filter(c=>{const d=c.shortId??"";return d.startsWith(e+"-")||d.startsWith(e+" ")}):[],[r,e]),i=u.useMemo(()=>{if(!a.trim())return s;const c=a.toLowerCase();return s.filter(d=>d.name.toLowerCase().includes(c)||(d.shortId??"").toLowerCase().includes(c)||d.kind.toLowerCase().includes(c))},[s,a]),l=u.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(dn,{family:e,children:t.jsxs("p",{style:{color:y.muted,fontSize:N.sm},children:["No elements found with family prefix ",t.jsx("code",{children:e}),"."]})}):t.jsxs(dn,{family:e,children:[t.jsx("div",{style:{display:"flex",flexWrap:"wrap",gap:"6px",marginBottom:"16px"},children:Object.entries(l).map(([c,d])=>{const p=le[c]??"#9CA3AF";return t.jsxs("span",{style:{fontSize:N.xs,padding:"2px 8px",borderRadius:"12px",background:p+"20",color:p,border:`1px solid ${p}40`,fontWeight:500},children:[c," · ",d]},c)})}),t.jsx("input",{type:"search",placeholder:`Search ${s.length} elements…`,value:a,onChange:c=>o(c.target.value),style:{width:"100%",boxSizing:"border-box",padding:"7px 12px",fontSize:N.sm,border:`1px solid ${y.border}`,borderRadius:"6px",background:y.surface,color:y.primary,outline:"none",marginBottom:"12px"}}),t.jsxs("div",{style:{background:y.surface,border:`1px solid ${y.border}`,borderRadius:"8px",overflow:"hidden"},children:[t.jsxs("div",{style:{display:"grid",gridTemplateColumns:"140px 1fr 120px 120px",padding:"8px 16px",background:y.surfaceAlt,borderBottom:`1px solid ${y.border}`,fontSize:N.xs,fontWeight:600,color:y.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:y.muted,fontSize:N.sm,textAlign:"center"},children:['No results for "',a,'"']}):i.map((c,d)=>t.jsx(lc,{element:c,zebra:d%2===1,onClick:()=>n(Wl(c.shortId??c.id))},c.id))]}),t.jsxs("p",{style:{color:y.faint,fontSize:"11px",marginTop:"8px"},children:[i.length," of ",s.length," elements shown"]})]}):t.jsx(dn,{family:e,children:t.jsx("p",{style:{color:y.muted,fontSize:N.sm},children:"Loading model…"})})}function lc({element:e,zebra:r,onClick:n}){const a=le[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":y.surface,cursor:"pointer",borderBottom:`1px solid ${y.borderLight}`,alignItems:"center",transition:"background 0.1s"},onMouseEnter:o=>o.currentTarget.style.background="#F0FDF4",onMouseLeave:o=>o.currentTarget.style.background=r?"#FAFAF8":y.surface,children:[t.jsx("code",{style:{fontSize:"11px",color:"#2DD4A8",fontWeight:600,fontFamily:"monospace"},children:e.shortId??e.id}),t.jsx("span",{style:{fontSize:N.sm,color:y.primary,fontWeight:500,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.name}),t.jsx("span",{style:{fontSize:N.xs,color:y.secondary},children:e.kind}),t.jsx("span",{style:{fontSize:"11px",color:a,fontWeight:500,background:a+"15",padding:"2px 6px",borderRadius:"4px",width:"fit-content"},children:e.layer})]})}function dn({family:e,children:r}){const n=Se();return t.jsxs("div",{style:{flex:1,overflow:"auto",background:"#F7F7F5",padding:"32px 40px"},children:[t.jsxs("nav",{style:{fontSize:N.xs,color:y.muted,marginBottom:"20px"},children:[t.jsx("button",{onClick:()=>n("/catalog"),style:{background:"none",border:"none",color:"#2DD4A8",cursor:"pointer",padding:0,fontSize:N.xs},children:"Catalog"})," / ",t.jsx("span",{style:{color:y.primary,fontWeight:600},children:e})]}),t.jsx("h1",{style:{fontSize:"20px",fontWeight:700,color:y.primary,marginBottom:"6px",marginTop:0},children:e}),r]})}const dc=u.lazy(()=>ae(()=>import("./DiagramEditor-puQuE8gB.js"),__vite__mapDeps([3,1,2,4])).then(e=>({default:e.DiagramEditor}))),cc=u.lazy(()=>ae(()=>import("./DSMView-DJhmrXYm.js").then(e=>e.D),__vite__mapDeps([5,1,2,4])).then(e=>({default:e.DSMView}))),uc=u.lazy(()=>ae(()=>import("./OntologyViewer-VOrKTRuQ.js"),__vite__mapDeps([6,1,2])).then(e=>({default:e.OntologyViewer}))),pc=u.lazy(()=>ae(()=>import("./TraceabilityMatrix-eilGn6Sr.js"),__vite__mapDeps([7,1,2,5,4])).then(e=>({default:e.TraceabilityMatrix}))),mc=u.lazy(()=>ae(()=>import("./ScenarioEditor-bB4iBbgO.js"),__vite__mapDeps([0,1,2])).then(e=>({default:e.ScenarioEditor}))),fc=u.lazy(()=>ae(()=>import("./ModelDiff-Cl2dhlk3.js"),__vite__mapDeps([8,1,2])).then(e=>({default:e.ModelDiff}))),hc=u.lazy(()=>ae(()=>import("./ComplianceWizard-DKxZ1z25.js"),__vite__mapDeps([9,1,2])).then(e=>({default:e.ComplianceWizard}))),yc=u.lazy(()=>ae(()=>import("./StatisticsDashboard-iXimfU20.js"),__vite__mapDeps([10,1,2])).then(e=>({default:e.StatisticsDashboard}))),gc=u.lazy(()=>ae(()=>import("./DhfDashboard-DacdOtkU.js"),__vite__mapDeps([11,1,2])).then(e=>({default:e.DhfDashboard}))),xc=u.lazy(()=>ae(()=>import("./DhfWorkbench-CIhopT8J.js"),__vite__mapDeps([12,1,2])).then(e=>({default:e.DhfWorkbench}))),bc=u.lazy(()=>ae(()=>import("./AiWorkspace-Z3BbnmaP.js"),__vite__mapDeps([13,1,2])).then(e=>({default:e.AiWorkspace}))),xa=u.lazy(()=>ae(()=>import("./ElementDetailView-D5XvAL_i.js"),__vite__mapDeps([14,1,2])).then(e=>({default:e.ElementDetailView}))),he=u.lazy(()=>ae(()=>import("./Dashboard-CYT7KjqU.js"),__vite__mapDeps([15,1,2])).then(e=>({default:e.Dashboard}))),vc=u.lazy(()=>ae(()=>import("./ReviewDashboard--LMXZ3F4.js"),__vite__mapDeps([16,1,2])).then(e=>({default:e.ReviewDashboard}))),wc=u.lazy(()=>ae(()=>import("./WorkflowWizard-C7jI6C59.js"),__vite__mapDeps([17,1,2])).then(e=>({default:e.WorkflowWizard}))),kc=u.lazy(()=>ae(()=>import("./TabularView-DnIfq-TB.js"),__vite__mapDeps([18,1,2])).then(e=>({default:e.TabularView}))),Sc=u.lazy(()=>ae(()=>import("./ImportView-9y1nhQS4.js"),__vite__mapDeps([19,1,2])).then(e=>({default:e.ImportView}))),Ec=u.lazy(()=>ae(()=>import("./AnalysisWorkspace-DjaUOo7U.js"),__vite__mapDeps([20,1,2])).then(e=>({default:e.AnalysisWorkspace}))),Cc=u.lazy(()=>ae(()=>import("./UiScreensWorkspace-Cs1ivqzc.js"),__vite__mapDeps([21,1,2,22,4])).then(e=>({default:e.UiScreensWorkspace})));function ze(){const e=E(c=>c.activeView),r=E(c=>c.model),n=E(c=>c.activeMode);E(c=>c.selectedViewpointId);const a=E(c=>c.selectedDiagramId),o=E(c=>c.selectDiagram),s=E(c=>c.setActiveMode),i=E(c=>c.setExplorerTab);u.useEffect(()=>{var c;if(e.type==="diagram"){a!==e.diagramId&&o(e.diagramId);const d=(c=r==null?void 0:r.diagrams)==null?void 0:c.find(p=>p.id===e.diagramId);d!=null&&d.viewpointId&&d.viewpointId!=="__model"&&n!=="scenario"&&(n!=="diagram"&&s("diagram"),i("views"))}},[e,n,r,a,o,s,i]);const l=()=>{switch(e.type){case"diagram":return t.jsx(dc,{diagramId:e.diagramId});case"dsm":return t.jsx(cc,{});case"traceability":return ie("model-tools")?t.jsx(pc,{}):t.jsx(he,{});case"tabular":return t.jsx(kc,{});case"ontology":case"ontology-detail":return ie("ontology")?t.jsx(uc,{}):t.jsx(he,{});case"scenario-editor":return t.jsx(mc,{});case"model-diff":return ie("model-tools")?t.jsx(fc,{}):t.jsx(he,{});case"compliance-wizard":return ie("model-tools")?t.jsx(hc,{}):t.jsx(he,{});case"statistics":return ie("model-tools")?t.jsx(yc,{}):t.jsx(he,{});case"dhf-dashboard":case"dhf-document":return t.jsx(xc,{});case"dhf-dashboard-legacy":return t.jsx(gc,{});case"ai":case"ask":case"sysml-generator":return ie("ai-tools")?t.jsx(bc,{}):t.jsx(he,{});case"element-detail":return t.jsx(xa,{});case"dashboard":return t.jsx(he,{});case"review-dashboard":return ie("model-tools")?t.jsx(vc,{}):t.jsx(he,{});case"workflow-wizard":return ie("model-tools")?t.jsx(wc,{}):t.jsx(he,{});case"import":return ie("import")?t.jsx(Sc,{}):t.jsx(he,{});case"analysis":return ie("analysis")?t.jsx(Ec,{}):t.jsx(he,{});case"ui-screens":return t.jsx(Cc,{});case"welcome":default:return t.jsx(Cr,{})}};return(e.type==="welcome"||e.type==="dashboard")&&e.type==="welcome"?t.jsx(Cr,{}):t.jsx(u.Suspense,{fallback:t.jsx(ba,{}),children:l()})}function ba(){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 Ft="linear-gradient(135deg, #EEF7F3 0%, #EAF2F8 55%, #F2EEF8 100%)";function Cr(){var c;const e=E(d=>d.model),r=E(d=>d.setActiveView),n=E(d=>d.selectElement),a=E(d=>d.setExplorerTab),o=((c=e==null?void 0:e.diagrams)==null?void 0:c.length)??0,s=e?Object.keys(e.elements).length:0,i=u.useMemo(()=>{if(!e)return[];const d=new Map;for(const p of Object.values(e.elements))d.has(p.kind)||d.set(p.kind,p);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:Ft,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:o})," 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:()=>a("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"}),o>0&&t.jsxs("button",{onClick:()=>a("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 (",o,")"]})]}),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:p=>{p.currentTarget.style.background="rgba(255,255,255,0.95)",p.currentTarget.style.boxShadow="0 2px 8px rgba(0,0,0,0.08)",p.currentTarget.style.transform="translateY(-1px)"},onMouseLeave:p=>{p.currentTarget.style.background="rgba(255,255,255,0.7)",p.currentTarget.style.boxShadow="none",p.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 jc(){const e=E(p=>p.connected),r=E(p=>p.model),n=E(p=>p.activeView),a=E(p=>p.selectedElementIds),{pathname:o}=ke(),s=o.startsWith("/catalog"),i=E(p=>p.activeMode),l=E(p=>p.toggleGapBar);u.useEffect(()=>{const p=f=>{(f.metaKey||f.ctrlKey)&&f.shiftKey&&f.key==="P"&&(f.preventDefault(),l())};return window.addEventListener("keydown",p),()=>window.removeEventListener("keydown",p)},[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";u.useEffect(()=>{Fs()||Qr()},[]);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:Ft,color:"#1a1a1a"},children:[t.jsx(wt,{}),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(Fc,{}),t.jsx(wt,{}),t.jsx(bi,{}),t.jsx(Xd,{}),t.jsxs("div",{className:"flex flex-1 overflow-hidden",children:[c&&t.jsx(fd,{}),t.jsx("div",{className:"flex-1 flex flex-col",style:{minWidth:0},children:t.jsxs(ko,{children:[t.jsx(ye,{path:"/catalog",element:t.jsx(rc,{})}),t.jsx(ye,{path:"/catalog/:family",element:t.jsx(Dc,{})}),t.jsx(ye,{path:"/catalog/:family/:shortId",element:t.jsx(Bc,{})}),t.jsx(ye,{path:"/diagrams",element:t.jsx(oc,{})}),t.jsx(ye,{path:"/diagrams/:diagramType/:diagramId",element:t.jsx(Ac,{})}),oi().map(p=>t.jsx(ye,{path:p,element:t.jsx(ze,{})},p)),t.jsx(ye,{path:"/ontology/:packageName",element:t.jsx(ze,{})}),t.jsx(ye,{path:"/ontology/:packageName/:layerId",element:t.jsx(ze,{})}),t.jsx(ye,{path:"/dhf/:docId",element:t.jsx(ze,{})}),t.jsx(ye,{path:"*",element:t.jsx(ze,{})})]})}),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"&&(a.size>=2?t.jsx(Wd,{}):t.jsx(Ld,{}))]}),t.jsx(Hd,{}),t.jsx(Kd,{}),t.jsx(Yd,{}),t.jsx(Qd,{}),t.jsx(Zd,{}),t.jsx(nc,{}),t.jsx(ec,{})]}):t.jsxs("div",{className:"flex flex-col h-screen",style:{background:Ft,color:"#1a1a1a"},children:[t.jsx(wt,{}),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:Ft,color:"#1a1a1a"},children:[t.jsx(wt,{}),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 Dc(){const{family:e=""}=Sn();return t.jsx(ic,{family:e.toUpperCase()})}function Bc(){const{shortId:e=""}=Sn(),r=E(o=>o.model),n=E(o=>o.setActiveView),a=E(o=>o.selectElement);return u.useEffect(()=>{if(!r)return;const o=Object.values(r.elements).find(s=>(s.shortId??s.id)===e);o&&(a(o.id),n({type:"element-detail",elementId:o.id}))},[e,r,n,a]),t.jsx(u.Suspense,{fallback:t.jsx(ba,{}),children:t.jsx(xa,{})})}function Ac(){const{diagramId:e=""}=Sn(),r=E(o=>o.model),n=E(o=>o.selectDiagram),a=E(o=>o.setActiveView);return u.useEffect(()=>{var s;if(!r)return;const o=(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()});o&&(n(o.id),a({type:"diagram",diagramId:o.id}))},[e,r,n,a]),t.jsx(ze,{})}function Fc(){const e=E(b=>b.activeView),r=E(b=>b.model),n=E(b=>b.setActiveView),a=E(b=>b.setActiveMode),o=E(b=>b.selectedElementId),s=Se(),i=ke(),l=so(),c=u.useRef(!1),d=u.useRef(!1),[p,f]=u.useState(null);return u.useEffect(()=>{const b=!c.current;if(c.current=!0,!b&&l!=="POP")return;const w=ni(i.pathname,i.search);if(i.pathname==="/diagrams"&&(a("diagram"),E.getState().setExplorerTab("views"),E.getState().sidebarCollapsed&&E.getState().toggleSidebar(),e.type!=="welcome"&&(d.current=!0,n({type:"welcome"}))),(w==null?void 0:w.type)==="scenario-editor"&&a("scenario"),w&&JSON.stringify(w)!==JSON.stringify(e)&&(d.current=!0,n(w)),w&&w.type!=="element-detail"&&w.type!=="welcome"){const g=new URLSearchParams(i.search).get("element");g?f(g):E.getState().selectedElementId&&E.getState().inspectElement(null)}},[i.pathname,i.search,l]),u.useEffect(()=>{var b;if(p&&r){const w=((b=Object.values(r.elements).find(S=>(S.shortId??S.id)===p))==null?void 0:b.id)??p;w!==E.getState().selectedElementId&&E.getState().inspectElement(w),f(null)}},[p,r]),u.useEffect(()=>{var w;if(!c.current)return;if(d.current){d.current=!1;return}if(e.type==="welcome"&&i.pathname!=="/"||ri(i.pathname)&&!(e.type==="diagram"||e.type==="element-detail")||ai(i.pathname))return;let b=null;if(e.type==="element-detail"&&r){const S=r.elements[e.elementId];if(S){const g=S.shortId??S.id;b=`/catalog/${g.split("-")[0]}/${g}`}}else if(e.type==="diagram"&&r){const S=(w=r.diagrams)==null?void 0:w.find(g=>g.id===e.diagramId);S&&(b=`/diagrams/${ei(S.diagramType)}/${encodeURIComponent(S.shortId??S.id)}`)}else b=ti(e);if(b&&e.type!=="element-detail"&&e.type!=="welcome"&&o){const S=r==null?void 0:r.elements[o],g=(S==null?void 0:S.shortId)??o,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,o]),null}const Nc=window.location.protocol==="file:"?Ko:Ho;Ea.createRoot(document.getElementById("root")).render(t.jsx(u.StrictMode,{children:t.jsx(Nc,{children:t.jsx(jc,{})})}));export{qc as $,zd as A,nu as B,y as C,Pe as D,Ri as E,N as F,tu as G,Se as H,_c as I,Lc as J,Gt as K,tt as L,ga as M,Mc as N,vi as O,Dd as P,Xc as Q,br as R,ci as S,Lt as T,eu as U,Jc as V,Ic as W,Xr as X,In as Y,zc as Z,ae as _,Yc as a,Qc as a0,Uc as b,Pc as c,Vs as d,Gc as e,Mt as f,qt as g,le as h,na as i,$e as j,Js as k,Oc as l,bt as m,yn as n,wi as o,Kc as p,Wc as q,Zc as r,Qs as s,Vc as t,E as u,$c as v,Hc as w,ru as x,Qe as y,Nd as z};
4066
+ req_001,System shall be safe,Requirement,Safety requirement`,rows:10,style:{...dn,resize:"vertical",fontFamily:"monospace",fontSize:"12px",lineHeight:"1.5"}}),S&&t.jsx("p",{style:{fontSize:N.xs,color:"#E74C3C",marginTop:4},children:S})]}),t.jsxs("div",{className:"flex items-center gap-3",children:[t.jsx("span",{style:{fontSize:N.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:N.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:N.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:N.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:N.xs,fontWeight:600,color:"#374151"},children:"Source column"}),t.jsx("span",{style:{flex:1,fontSize:N.xs,fontWeight:600,color:"#374151"},children:"Maps to"}),t.jsx("span",{style:{width:80,fontSize:N.xs,fontWeight:600,color:"#374151"},children:"Transform"})]}),A.map((v,j)=>{const P=["id","name","kind"].includes(v.targetAttribute),Y=!v.targetAttribute,te=A.filter((L,ne)=>ne!==j&&["id","name","kind","doc","construct"].includes(L.targetAttribute)).map(L=>L.targetAttribute),Q=vr.filter(L=>L==="— skip —"||!te.includes(L)||L===v.targetAttribute);return t.jsxs("div",{className:"flex items-center",style:{padding:"6px 12px",borderBottom:j<A.length-1?"1px solid #F0F0EC":"none",background:P?"#F0FDF4":"transparent"},children:[t.jsx("div",{style:{flex:1,fontSize:N.xs,color:"#374151",fontFamily:"monospace"},children:v.sourceColumn}),t.jsx("div",{style:{flex:1,paddingRight:8},children:t.jsxs("select",{value:v.targetAttribute||"",onChange:L=>X(j,L.target.value==="— skip —"?"":L.target.value),style:{width:"100%",fontSize:N.xs,padding:"3px 6px",borderRadius:5,border:`1px solid ${Y?"#E5E5E0":P?"#22C55E":"#E5E5E0"}`,background:Y?"#F9FAFB":"#FFFFFF",color:Y?"#9CA3AF":"#1a1a1a"},children:[Q.map(L=>t.jsx("option",{value:L,children:L},L)),v.targetAttribute&&!vr.includes(v.targetAttribute)&&t.jsx("option",{value:v.targetAttribute,children:v.targetAttribute})]})}),t.jsx("div",{style:{width:80,fontSize:"10px",color:"#9CA3AF"},children:v.transform??"—"})]},j)})]}),B.length>0&&t.jsxs("details",{children:[t.jsxs("summary",{style:{fontSize:N.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(v=>t.jsx("th",{style:Le,children:v},v))})}),t.jsx("tbody",{children:B.slice(0,3).map((v,j)=>t.jsx("tr",{children:h.map(P=>t.jsx("td",{style:it,children:v[P]??""},P))},j))})]})})]})]}),i==="preview"&&t.jsxs("div",{className:"flex flex-col gap-4",children:[g.length>0&&t.jsxs("div",{style:{background:"#FEF2F2",border:"1px solid #FECACA",borderRadius:8,padding:"10px 14px"},children:[t.jsxs("p",{style:{fontSize:N.xs,fontWeight:700,color:"#DC2626",margin:"0 0 4px"},children:[g.length," validation error(s) — rows with missing required fields will be skipped"]}),g.slice(0,5).map((v,j)=>t.jsx("p",{style:{fontSize:"11px",color:"#DC2626",margin:"1px 0"},children:v},j)),g.length>5&&t.jsxs("p",{style:{fontSize:"11px",color:"#DC2626",margin:"2px 0 0"},children:["+",g.length-5," more…"]})]}),O.length>0&&t.jsxs("div",{style:{background:"#FFFBEB",border:"1px solid #FDE68A",borderRadius:8,padding:"10px 14px"},children:[t.jsxs("p",{style:{fontSize:N.xs,fontWeight:700,color:"#D97706",margin:"0 0 4px"},children:[O.length," warning(s)"]}),O.slice(0,3).map((v,j)=>t.jsx("p",{style:{fontSize:"11px",color:"#D97706",margin:"1px 0"},children:v},j))]}),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:N.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((v,j)=>t.jsx("p",{style:{fontSize:"11px",color:"#DC2626",margin:"1px 0"},children:v},j)),n.warnings.slice(0,3).map((v,j)=>t.jsx("p",{style:{fontSize:"11px",color:"#D97706",margin:"1px 0"},children:v},j))]}),E.length>0&&t.jsxs(t.Fragment,{children:[t.jsxs("p",{style:{fontSize:N.xs,color:"#6B7280",margin:0},children:["Showing first ",E.length," of ",B.length," row(s)",B.length>E.length&&` (+${B.length-E.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:Le,children:"#"}),t.jsx("th",{style:Le,children:"id"}),t.jsx("th",{style:Le,children:"name"}),t.jsx("th",{style:Le,children:"kind"}),t.jsx("th",{style:Le,children:"doc"})]})}),t.jsx("tbody",{children:E.map(v=>{const j=!v.id||!v.name||!v.kind;return t.jsxs("tr",{style:{background:j?"#FEF9F9":"transparent"},children:[t.jsx("td",{style:kr,children:v.rowIndex}),t.jsx("td",{style:{...kr,color:v.id?"#1a1a1a":"#DC2626"},children:v.id||"⚠ missing"}),t.jsx("td",{style:{...it,maxWidth:160,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:String(v.name||"—")}),t.jsx("td",{style:{...it,color:v.kind?"#1B3A4B":"#DC2626"},children:v.kind||"⚠ missing"}),t.jsx("td",{style:{...it,maxWidth:180,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",color:"#6B7280"},children:String(v.doc||"—")})]},v.rowIndex)})})]})})]}),E.length===0&&g.length===0&&t.jsx("p",{style:{fontSize:N.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(H[$-1]),style:wr,children:"← Back"})}),t.jsxs("div",{className:"flex gap-2 items-center",children:[t.jsx("button",{onClick:G,style:wr,children:n!=null&&n.success?"Done":"Cancel"}),!n&&t.jsxs(t.Fragment,{children:[i==="input"&&t.jsx("button",{onClick:K,style:cn,children:"Next →"}),i==="mapping"&&t.jsx("button",{onClick:W,style:cn,children:"Preview →"}),i==="preview"&&t.jsx("button",{onClick:J,disabled:D||E.length===0,style:{...cn,opacity:D||E.length===0?.5:1,cursor:D||E.length===0?"not-allowed":"pointer"},children:D?"Importing…":`Import ${B.length} element(s)`})]})]})]})]})})}const ln={display:"block",fontSize:N.xs,fontWeight:600,color:"#374151",marginBottom:6},dn={width:"100%",padding:"7px 10px",borderRadius:8,border:"1px solid #E5E5E0",fontSize:N.sm,color:"#1a1a1a",background:"#FAFAF8",boxSizing:"border-box"},Yd={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"},cn={padding:"7px 18px",borderRadius:8,background:"#1B3A4B",border:"none",color:"#FFFFFF",fontSize:N.xs,fontWeight:600,cursor:"pointer"},wr={padding:"7px 14px",borderRadius:8,background:"transparent",border:"1px solid #E5E5E0",color:"#374151",fontSize:N.xs,cursor:"pointer"},Le={padding:"5px 8px",textAlign:"left",fontWeight:600,fontSize:"10px",color:"#6B7280",borderBottom:"1px solid #E5E5E0",whiteSpace:"nowrap"},it={padding:"4px 8px",fontSize:"11px",color:"#1a1a1a",borderBottom:"1px solid #F5F5F2"},kr={...it,fontFamily:"monospace",fontSize:"10px",color:"#6B7280"};function Jd(){var p,f,k;const e=C(w=>w.activeView),r=C(w=>w.model),n=C(w=>w.selectedElementId),a=C(w=>w.activeMode),o=C(w=>w.setActiveMode),s=C(w=>w.selectElement),i=C(w=>w.setActiveView),l=ke(),c=[],d=(()=>{switch(e.type){case"diagram":return;case"element-detail":return{label:"Model Explorer",icon:"☰",onClick:()=>{o("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:()=>{o("scenario"),i({type:"scenario-editor"}),l("/use-cases")}};case"dhf-dashboard":case"dhf-dashboard-legacy":case"dhf-document":return{label:"Documents",icon:"⊞",onClick:()=>{o("dhf"),i({type:"dhf-dashboard"}),l("/dhf")}};case"welcome":return a==="diagram"?{label:"Viewpoints",icon:"⊟",onClick:()=>l("/diagrams")}:a==="catalog"?{label:"Model Explorer",icon:"☰",onClick:()=>l("/catalog")}:void 0;default:return}})();switch(e.type){case"diagram":{const w=$t(r,e.diagramId);if(w){const S=w.viewpointId==="__model"?"Unassigned Views":((f=(p=r==null?void 0:r.viewpoints)==null?void 0:p.find(T=>T.id===w.viewpointId))==null?void 0:f.label)||w.viewpointId,x=(k=r==null?void 0:r.viewpoints)==null?void 0:k.find(T=>T.id===w.viewpointId);c.push({label:x?`${x.id} · ${S}`:S});const h=w.viewKind?Pn[w.viewKind]:void 0,m=ze[w.diagramType],B=(h==null?void 0:h.label)??(m==null?void 0:m.code)??w.diagramType;c.push({label:`${w.shortId??w.id} · ${B}: ${w.name}`})}break}case"element-detail":{const w=e.elementId,S=r==null?void 0:r.elements[w];if(S){const x=S.shortId??S.id,h=x.split("-")[0];c.push({label:"Catalog",onClick:()=>l("/catalog")}),c.push({label:h,onClick:()=>l(`/catalog/${h}`)}),c.push({label:`${x} ${S.name}`})}break}}if(n&&r&&e.type!=="element-detail"){const w=r.elements[n];w&&c.push({label:w.name,onClick:()=>s(w.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((w,S)=>t.jsxs("span",{className:"flex items-center gap-1",children:[(d||S>0)&&t.jsx("span",{className:"text-xs",style:{color:"#D1D5DB"},children:"/"}),w.onClick?t.jsx("button",{className:"text-xs px-1 py-0.5 rounded transition-colors",style:{color:"#374151"},onMouseEnter:x=>x.currentTarget.style.background="#F0F0ED",onMouseLeave:x=>x.currentTarget.style.background="transparent",onClick:w.onClick,children:w.label}):t.jsx("span",{className:"text-xs",style:{color:S===c.length-1?"#374151":"#9CA3AF"},children:w.label})]},S)),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 Sr="memo-onboarding-completed",at=[{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 Xd(){const[e,r]=u.useState(!1),[n,a]=u.useState(0);u.useEffect(()=>{try{if(!localStorage.getItem(Sr)){const k=setTimeout(()=>r(!0),800);return()=>clearTimeout(k)}}catch{}},[]);const o=u.useCallback(()=>{r(!1);try{localStorage.setItem(Sr,"true")}catch{}},[]),s=u.useCallback(()=>{n>=at.length-1?o():a(n+1)},[n,o]),i=u.useCallback(()=>{n>0&&a(n-1)},[n]);if(!e)return null;const l=at[n],c=n===at.length-1,d=n===0,p=()=>{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:o}),t.jsxs("div",{className:"fixed z-50 rounded-xl p-5 max-w-sm",style:{...p(),background:"#FFFFFF",boxShadow:"0 8px 32px rgba(0,0,0,0.2)",border:"1px solid #E5E5E0"},onClick:f=>f.stopPropagation(),children:[t.jsx("div",{className:"flex items-center gap-1 mb-3",children:at.map((f,k)=>t.jsx("div",{className:"h-1 rounded-full transition-all",style:{width:k===n?"20px":"8px",background:k===n?"#2DD4A8":k<n?"#2DD4A880":"#E5E5E0"}},k))}),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:o,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 ",at.length]})]})]})}function Qd(){const e=C(o=>o.restartRequired);if(!e)return null;const r=e.reason==="dependency-closure-uncomputable",n=e.reason==="transaction-independence-uncomputable",a=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:a}),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 Zd(){const e=C(s=>s.editConflict),r=C(s=>s.setEditConflict);if(!e)return null;const n=e.reason==="stale-identity",a=JSON.stringify(e.rejectedDraft,null,2),o=()=>{const s=URL.createObjectURL(new Blob([a],{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(a),children:"Copy draft"}),t.jsx("button",{onClick:o,children:"Download rejected edit"}),t.jsx("button",{onClick:()=>qs(e.sourceFile),children:"Reveal file"}),t.jsx("button",{onClick:()=>r(null),children:"Dismiss"})]})]})}const ec=4;function tc(){const e=C(i=>i.sourceCoherence);if(!e)return null;const{files:r,diagnostics:n,lastGoodRevision:a}=e,o=n.slice(0,ec),s=n.length-o.length;return t.jsxs("div",{role:"status","aria-live":"polite",style:{position:"fixed",bottom:16,left:"50%",transform:"translateX(-50%)",zIndex:9e3,maxWidth:620,width:"calc(100% - 32px)",background:"#1E293B",border:"1px solid #F59E0B",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:"#FBBF24",marginBottom:4},children:a>0?`Showing the last model that compiled (revision ${a})`:"Showing everything that parsed"}),t.jsxs("div",{style:{fontSize:"0.75rem",color:"#CBD5E1",marginBottom:o.length?8:0},children:[r.length===1?r[0]:`${r.length} files`," did not parse. Edits are held until the source compiles again — no restart needed."]}),o.map((i,l)=>t.jsxs("div",{style:{fontSize:"0.7rem",color:"#94A3B8",fontFamily:"monospace",lineHeight:1.5},children:[i.file,i.line!==void 0?`:${i.line}`:"",i.column!==void 0?`:${i.column}`:""," — ",i.message]},`${i.file}:${i.line??0}:${l}`)),s>0&&t.jsxs("div",{style:{fontSize:"0.7rem",color:"#64748B",marginTop:4},children:["and ",s," more"]})]})}function ya({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 nc(e){return Je[e]?Je[e]:e?e.split(/[_-]/).map(r=>r.charAt(0).toUpperCase()+r.slice(1)).join(" "):"Other"}function rc(){const e=C(s=>s.model),r=ke(),n=u.useMemo(()=>{if(!e)return[];const s={};for(const c of Object.values(e.elements)){const d=ql(c.kind),p=Ll(d);s[p]||(s[p]={count:0,kinds:new Set,layer:c.layer}),s[p].count++,s[p].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,p)=>p[1].count-d[1].count);const l=new Map(Ie.map((c,d)=>[c,d]));return[...i.entries()].sort(([c],[d])=>{const p=l.get(c)??Ie.length,f=l.get(d)??Ie.length;return p!==f?p-f:c.localeCompare(d)})},[e]),a=u.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:y.muted,fontSize:N.sm},children:"Loading…"})});const o=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:y.primary,margin:"0 0 4px"},children:"Catalog"}),t.jsxs("p",{style:{color:y.muted,fontSize:N.sm,margin:0},children:[o," elements across ",a.length," families"]})]}),t.jsx(ya,{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:y.secondary,textTransform:"uppercase",letterSpacing:"0.04em",margin:0},children:nc(s)})]}),t.jsx("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(200px, 1fr))",gap:"12px"},children:i.map(([c,d])=>t.jsx(ac,{family:c,count:d.count,kinds:d.kinds,color:l,onClick:()=>r(Vl(c))},c))})]},s||"__none")})]})}function ac({family:e,count:r,kinds:n,color:a,onClick:o}){return t.jsxs("div",{onClick:o,style:{background:y.surface,border:`1px solid ${y.border}`,borderRadius:"10px",padding:"16px",cursor:"pointer",transition:"box-shadow 0.15s, border-color 0.15s",borderTop:`3px solid ${a}`},onMouseEnter:s=>{s.currentTarget.style.boxShadow="0 4px 12px rgba(0,0,0,0.08)",s.currentTarget.style.borderTopColor=a},onMouseLeave:s=>{s.currentTarget.style.boxShadow="none"},children:[t.jsx("div",{style:{fontWeight:700,fontSize:"15px",color:y.primary,marginBottom:"4px"},children:e}),t.jsx("div",{style:{fontSize:"22px",fontWeight:800,color:a,lineHeight:1,marginBottom:"6px"},children:r}),t.jsxs("div",{style:{fontSize:"11px",color:y.muted,lineHeight:"1.5"},children:[Array.from(n).slice(0,3).join(", "),n.size>3&&` +${n.size-3} more`]})]})}function oc(){var o;const e=C(s=>s.model),r=ke(),n=u.useMemo(()=>{var k;const s=(e==null?void 0:e.diagrams)??[],i=new Map,l=new Map(((e==null?void 0:e.viewpoints)??[]).map(w=>[w.id,w]));for(const w of s){const S=w.viewpointIds;for(const x of S!=null&&S.length?S:[w.viewpointId]){const h=(k=e==null?void 0:e.viewpoints)==null?void 0:k.find(T=>T.id===x),m=h?x:Ee,B=i.get(m);B?B.items.push(w):i.set(m,{id:m,label:(h==null?void 0:h.label)??"Uncategorized",items:[w]})}}const c=ua([...i.values()].filter(w=>w.id!==Ee).map(w=>({...w,...l.get(w.id)}))),d=pa(c.map(w=>w.label)),p=c.map((w,S)=>({...w,label:d[S],items:[...w.items].sort((x,h)=>x.name.localeCompare(h.name))})),f=i.get(Ee);return f?[...p,{...f,items:[...f.items].sort((w,S)=>w.name.localeCompare(S.name))}]:p},[e]);if(!e)return t.jsx("div",{style:{flex:1,display:"flex",alignItems:"center",justifyContent:"center",background:"#F7F7F5"},children:t.jsx("p",{style:{color:y.muted,fontSize:N.sm},children:"Loading…"})});const a=((o=e.diagrams)==null?void 0:o.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:y.primary,margin:"0 0 4px"},children:"Viewpoints"}),t.jsxs("p",{style:{color:y.muted,fontSize:N.sm,margin:0},children:[a," model ",a===1?"view":"views"," across ",n.length," ",n.length===1?"viewpoint":"viewpoints"]})]}),t.jsx(ya,{size:132})]}),a===0&&t.jsx("p",{style:{color:y.muted,fontSize:N.sm},children:"This model defines no model views yet."}),n.map(s=>t.jsxs("section",{style:{marginBottom:"28px"},children:[t.jsxs("h2",{style:{fontSize:"11px",fontWeight:700,color:y.muted,textTransform:"uppercase",letterSpacing:"0.06em",margin:"0 0 10px 0"},children:[s.label,t.jsx("code",{style:{marginLeft:8,color:y.faint,textTransform:"none"},children:s.id===Ee?"no viewpoint":s.id}),t.jsx("span",{style:{marginLeft:8,fontWeight:400},children:s.items.length})]}),t.jsx("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(220px, 1fr))",gap:"12px"},children:s.items.map(i=>t.jsx(sc,{diagram:i,onClick:()=>r(da(i.diagramType,i.shortId??i.id))},i.id))})]},s.id))]})}function sc({diagram:e,onClick:r}){var c;const n=e.viewKind?Pn[e.viewKind]:void 0,a=ze[e.diagramType],o=n??a,s=(n==null?void 0:n.label)??(a==null?void 0:a.code),i=(o==null?void 0:o.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:y.surface,border:`1px solid ${y.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:[o&&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:y.muted},children:"auto"})]}),t.jsx("div",{style:{fontWeight:600,fontSize:"14px",color:y.primary,marginBottom:4},children:e.name}),t.jsx("div",{style:{fontFamily:"ui-monospace, SFMono-Regular, Menlo, monospace",fontSize:"10px",color:y.faint,marginBottom:4},children:e.shortId??e.id}),t.jsxs("div",{style:{fontSize:"11px",color:y.muted,lineHeight:1.5},children:[(o==null?void 0:o.fullName)??e.diagramType,l>0&&` · ${l} element${l===1?"":"s"}`]})]})}function ic({family:e}){const r=C(c=>c.model),n=ke(),[a,o]=u.useState(""),s=u.useMemo(()=>r?Object.values(r.elements).filter(c=>{const d=c.shortId??"";return d.startsWith(e+"-")||d.startsWith(e+" ")}):[],[r,e]),i=u.useMemo(()=>{if(!a.trim())return s;const c=a.toLowerCase();return s.filter(d=>d.name.toLowerCase().includes(c)||(d.shortId??"").toLowerCase().includes(c)||d.kind.toLowerCase().includes(c))},[s,a]),l=u.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(un,{family:e,children:t.jsxs("p",{style:{color:y.muted,fontSize:N.sm},children:["No elements found with family prefix ",t.jsx("code",{children:e}),"."]})}):t.jsxs(un,{family:e,children:[t.jsx("div",{style:{display:"flex",flexWrap:"wrap",gap:"6px",marginBottom:"16px"},children:Object.entries(l).map(([c,d])=>{const p=ce[c]??"#9CA3AF";return t.jsxs("span",{style:{fontSize:N.xs,padding:"2px 8px",borderRadius:"12px",background:p+"20",color:p,border:`1px solid ${p}40`,fontWeight:500},children:[c," · ",d]},c)})}),t.jsx("input",{type:"search",placeholder:`Search ${s.length} elements…`,value:a,onChange:c=>o(c.target.value),style:{width:"100%",boxSizing:"border-box",padding:"7px 12px",fontSize:N.sm,border:`1px solid ${y.border}`,borderRadius:"6px",background:y.surface,color:y.primary,outline:"none",marginBottom:"12px"}}),t.jsxs("div",{style:{background:y.surface,border:`1px solid ${y.border}`,borderRadius:"8px",overflow:"hidden"},children:[t.jsxs("div",{style:{display:"grid",gridTemplateColumns:"140px 1fr 120px 120px",padding:"8px 16px",background:y.surfaceAlt,borderBottom:`1px solid ${y.border}`,fontSize:N.xs,fontWeight:600,color:y.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:y.muted,fontSize:N.sm,textAlign:"center"},children:['No results for "',a,'"']}):i.map((c,d)=>t.jsx(lc,{element:c,zebra:d%2===1,onClick:()=>n(la(c.shortId??c.id))},c.id))]}),t.jsxs("p",{style:{color:y.faint,fontSize:"11px",marginTop:"8px"},children:[i.length," of ",s.length," elements shown"]})]}):t.jsx(un,{family:e,children:t.jsx("p",{style:{color:y.muted,fontSize:N.sm},children:"Loading model…"})})}function lc({element:e,zebra:r,onClick:n}){const a=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":y.surface,cursor:"pointer",borderBottom:`1px solid ${y.borderLight}`,alignItems:"center",transition:"background 0.1s"},onMouseEnter:o=>o.currentTarget.style.background="#F0FDF4",onMouseLeave:o=>o.currentTarget.style.background=r?"#FAFAF8":y.surface,children:[t.jsx("code",{style:{fontSize:"11px",color:"#2DD4A8",fontWeight:600,fontFamily:"monospace"},children:e.shortId??e.id}),t.jsx("span",{style:{fontSize:N.sm,color:y.primary,fontWeight:500,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.name}),t.jsx("span",{style:{fontSize:N.xs,color:y.secondary},children:e.kind}),t.jsx("span",{style:{fontSize:"11px",color:a,fontWeight:500,background:a+"15",padding:"2px 6px",borderRadius:"4px",width:"fit-content"},children:e.layer})]})}function un({family:e,children:r}){const n=ke();return t.jsxs("div",{style:{flex:1,overflow:"auto",background:"#F7F7F5",padding:"32px 40px"},children:[t.jsxs("nav",{style:{fontSize:N.xs,color:y.muted,marginBottom:"20px"},children:[t.jsx("button",{onClick:()=>n("/catalog"),style:{background:"none",border:"none",color:"#2DD4A8",cursor:"pointer",padding:0,fontSize:N.xs},children:"Catalog"})," / ",t.jsx("span",{style:{color:y.primary,fontWeight:600},children:e})]}),t.jsx("h1",{style:{fontSize:"20px",fontWeight:700,color:y.primary,marginBottom:"6px",marginTop:0},children:e}),r]})}const dc=u.lazy(()=>oe(()=>import("./DiagramEditor-DP_PiI7K.js"),__vite__mapDeps([3,1,2,4])).then(e=>({default:e.DiagramEditor}))),cc=u.lazy(()=>oe(()=>import("./DSMView-Bv9j1Vk_.js").then(e=>e.D),__vite__mapDeps([5,1,2,4])).then(e=>({default:e.DSMView}))),uc=u.lazy(()=>oe(()=>import("./OntologyViewer-DxIWCcJM.js"),__vite__mapDeps([6,1,2])).then(e=>({default:e.OntologyViewer}))),pc=u.lazy(()=>oe(()=>import("./TraceabilityMatrix-qEKmDy8z.js"),__vite__mapDeps([7,1,2,5,4])).then(e=>({default:e.TraceabilityMatrix}))),mc=u.lazy(()=>oe(()=>import("./ScenarioEditor-BIAh6tLX.js"),__vite__mapDeps([0,1,2])).then(e=>({default:e.ScenarioEditor}))),fc=u.lazy(()=>oe(()=>import("./ModelDiff-CJCXuz_h.js"),__vite__mapDeps([8,1,2])).then(e=>({default:e.ModelDiff}))),hc=u.lazy(()=>oe(()=>import("./ComplianceWizard-CAJDtLdv.js"),__vite__mapDeps([9,1,2])).then(e=>({default:e.ComplianceWizard}))),yc=u.lazy(()=>oe(()=>import("./StatisticsDashboard-CtI1hlfO.js"),__vite__mapDeps([10,1,2])).then(e=>({default:e.StatisticsDashboard}))),gc=u.lazy(()=>oe(()=>import("./DhfDashboard-CQpiYHtW.js"),__vite__mapDeps([11,1,2])).then(e=>({default:e.DhfDashboard}))),xc=u.lazy(()=>oe(()=>import("./DhfWorkbench-DHxWuiiL.js"),__vite__mapDeps([12,1,2])).then(e=>({default:e.DhfWorkbench}))),bc=u.lazy(()=>oe(()=>import("./AiWorkspace-Dp5oBDww.js"),__vite__mapDeps([13,1,2])).then(e=>({default:e.AiWorkspace}))),ga=u.lazy(()=>oe(()=>import("./ElementDetailView-BQsWfbPD.js"),__vite__mapDeps([14,1,2])).then(e=>({default:e.ElementDetailView}))),xe=u.lazy(()=>oe(()=>import("./Dashboard-BnOwnA1R.js"),__vite__mapDeps([15,1,2])).then(e=>({default:e.Dashboard}))),vc=u.lazy(()=>oe(()=>import("./ReviewDashboard-Qyj8RRFp.js"),__vite__mapDeps([16,1,2])).then(e=>({default:e.ReviewDashboard}))),wc=u.lazy(()=>oe(()=>import("./WorkflowWizard-BjtGPRsS.js"),__vite__mapDeps([17,1,2])).then(e=>({default:e.WorkflowWizard}))),kc=u.lazy(()=>oe(()=>import("./TabularView-DXxpRshk.js"),__vite__mapDeps([18,1,2])).then(e=>({default:e.TabularView}))),Sc=u.lazy(()=>oe(()=>import("./ImportView-YFBlvgF_.js"),__vite__mapDeps([19,1,2])).then(e=>({default:e.ImportView}))),Ec=u.lazy(()=>oe(()=>import("./AnalysisWorkspace-CNHTkSRD.js"),__vite__mapDeps([20,1,2])).then(e=>({default:e.AnalysisWorkspace}))),Cc=u.lazy(()=>oe(()=>import("./UiScreensWorkspace-BHhs5tcY.js"),__vite__mapDeps([21,1,2,22,4])).then(e=>({default:e.UiScreensWorkspace})));function Ve(){const e=C(c=>c.activeView),r=C(c=>c.model),n=C(c=>c.activeMode);C(c=>c.selectedViewpointId);const a=C(c=>c.selectedDiagramId),o=C(c=>c.selectDiagram),s=C(c=>c.setActiveMode),i=C(c=>c.setExplorerTab);u.useEffect(()=>{var c;if(e.type==="diagram"){a!==e.diagramId&&o(e.diagramId);const d=(c=r==null?void 0:r.diagrams)==null?void 0:c.find(p=>p.id===e.diagramId);d!=null&&d.viewpointId&&d.viewpointId!=="__model"&&n!=="scenario"&&(n!=="diagram"&&s("diagram"),i("views"))}},[e,n,r,a,o,s,i]);const l=()=>{switch(e.type){case"diagram":return t.jsx(dc,{diagramId:e.diagramId});case"dsm":return t.jsx(cc,{});case"traceability":return de("model-tools")?t.jsx(pc,{}):t.jsx(xe,{});case"tabular":return t.jsx(kc,{});case"ontology":case"ontology-detail":return de("ontology")?t.jsx(uc,{}):t.jsx(xe,{});case"scenario-editor":return t.jsx(mc,{});case"model-diff":return de("model-tools")?t.jsx(fc,{}):t.jsx(xe,{});case"compliance-wizard":return de("model-tools")?t.jsx(hc,{}):t.jsx(xe,{});case"statistics":return de("model-tools")?t.jsx(yc,{}):t.jsx(xe,{});case"dhf-dashboard":case"dhf-document":return t.jsx(xc,{});case"dhf-dashboard-legacy":return t.jsx(gc,{});case"ai":case"ask":case"sysml-generator":return de("ai-tools")?t.jsx(bc,{}):t.jsx(xe,{});case"element-detail":return t.jsx(ga,{});case"dashboard":return t.jsx(xe,{});case"review-dashboard":return de("model-tools")?t.jsx(vc,{}):t.jsx(xe,{});case"workflow-wizard":return de("model-tools")?t.jsx(wc,{}):t.jsx(xe,{});case"import":return de("import")?t.jsx(Sc,{}):t.jsx(xe,{});case"analysis":return de("analysis")?t.jsx(Ec,{}):t.jsx(xe,{});case"ui-screens":return t.jsx(Cc,{});case"welcome":default:return t.jsx(Er,{})}};return(e.type==="welcome"||e.type==="dashboard")&&e.type==="welcome"?t.jsx(Er,{}):t.jsx(u.Suspense,{fallback:t.jsx(xa,{}),children:l()})}function xa(){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 It="linear-gradient(135deg, #EEF7F3 0%, #EAF2F8 55%, #F2EEF8 100%)";function Er(){var c;const e=C(d=>d.model),r=C(d=>d.setActiveView),n=C(d=>d.selectElement),a=C(d=>d.setExplorerTab),o=((c=e==null?void 0:e.diagrams)==null?void 0:c.length)??0,s=e?Object.keys(e.elements).length:0,i=u.useMemo(()=>{if(!e)return[];const d=new Map;for(const p of Object.values(e.elements))d.has(p.kind)||d.set(p.kind,p);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:It,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:o})," 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:()=>a("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"}),o>0&&t.jsxs("button",{onClick:()=>a("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 (",o,")"]})]}),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:p=>{p.currentTarget.style.background="rgba(255,255,255,0.95)",p.currentTarget.style.boxShadow="0 2px 8px rgba(0,0,0,0.08)",p.currentTarget.style.transform="translateY(-1px)"},onMouseLeave:p=>{p.currentTarget.style.background="rgba(255,255,255,0.7)",p.currentTarget.style.boxShadow="none",p.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 jc(){const e=C(p=>p.connected),r=C(p=>p.model),n=C(p=>p.activeView),a=C(p=>p.selectedElementIds),{pathname:o}=De(),s=o.startsWith("/catalog"),i=C(p=>p.activeMode),l=C(p=>p.toggleGapBar);u.useEffect(()=>{const p=f=>{(f.metaKey||f.ctrlKey)&&f.shiftKey&&f.key==="P"&&(f.preventDefault(),l())};return window.addEventListener("keydown",p),()=>window.removeEventListener("keydown",p)},[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";u.useEffect(()=>{Bs()||Xr()},[]);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:It,color:"#1a1a1a"},children:[t.jsx(Ct,{}),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(Fc,{}),t.jsx(Ct,{}),t.jsx(gi,{}),t.jsx(Jd,{}),t.jsxs("div",{className:"flex flex-1 overflow-hidden",children:[c&&t.jsx(md,{}),t.jsx("div",{className:"flex-1 flex flex-col",style:{minWidth:0},children:t.jsxs(vo,{children:[t.jsx(be,{path:"/catalog",element:t.jsx(rc,{})}),t.jsx(be,{path:"/catalog/:family",element:t.jsx(Dc,{})}),t.jsx(be,{path:"/catalog/:family/:shortId",element:t.jsx(Bc,{})}),t.jsx(be,{path:"/diagrams",element:t.jsx(oc,{})}),t.jsx(be,{path:"/diagrams/:diagramType/:diagramId",element:t.jsx(Ac,{})}),ri().map(p=>t.jsx(be,{path:p,element:t.jsx(Ve,{})},p)),t.jsx(be,{path:"/ontology/:packageName",element:t.jsx(Ve,{})}),t.jsx(be,{path:"/ontology/:packageName/:layerId",element:t.jsx(Ve,{})}),t.jsx(be,{path:"/dhf/:docId",element:t.jsx(Ve,{})}),t.jsx(be,{path:"*",element:t.jsx(Ve,{})})]})}),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"&&(a.size>=2?t.jsx($d,{}):t.jsx(qd,{}))]}),t.jsx(Wd,{}),t.jsx(Hd,{}),t.jsx(Gd,{}),t.jsx(Xd,{}),t.jsx(Qd,{}),t.jsx(tc,{}),t.jsx(Zd,{})]}):t.jsxs("div",{className:"flex flex-col h-screen",style:{background:It,color:"#1a1a1a"},children:[t.jsx(Ct,{}),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:It,color:"#1a1a1a"},children:[t.jsx(Ct,{}),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 Dc(){const{family:e=""}=jn();return t.jsx(ic,{family:e.toUpperCase()})}function Bc(){const{shortId:e=""}=jn(),r=C(o=>o.model),n=C(o=>o.setActiveView),a=C(o=>o.selectElement);return u.useEffect(()=>{if(!r)return;const o=Object.values(r.elements).find(s=>(s.shortId??s.id)===e);o&&(a(o.id),n({type:"element-detail",elementId:o.id}))},[e,r,n,a]),t.jsx(u.Suspense,{fallback:t.jsx(xa,{}),children:t.jsx(ga,{})})}function Ac(){const{diagramId:e=""}=jn(),r=C(o=>o.model),n=C(o=>o.selectDiagram),a=C(o=>o.setActiveView);return u.useEffect(()=>{var s;if(!r)return;const o=(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()});o&&(n(o.id),a({type:"diagram",diagramId:o.id}))},[e,r,n,a]),t.jsx(Ve,{})}function Fc(){const e=C(k=>k.activeView),r=C(k=>k.model),n=C(k=>k.setActiveView),a=C(k=>k.setActiveMode),o=C(k=>k.selectedElementId),s=ke(),i=De(),l=ao(),c=u.useRef(!1),d=u.useRef(!1),[p,f]=u.useState(null);return u.useEffect(()=>{const k=!c.current;if(c.current=!0,!k&&l!=="POP")return;const w=ei(i.pathname,i.search);if(i.pathname==="/diagrams"&&(a("diagram"),C.getState().setExplorerTab("views"),C.getState().sidebarCollapsed&&C.getState().toggleSidebar(),e.type!=="welcome"&&(d.current=!0,n({type:"welcome"}))),(w==null?void 0:w.type)==="scenario-editor"&&a("scenario"),w&&JSON.stringify(w)!==JSON.stringify(e)&&(d.current=!0,n(w)),w&&w.type!=="element-detail"&&w.type!=="welcome"){const x=new URLSearchParams(i.search).get("element");x?f(x):C.getState().selectedElementId&&C.getState().inspectElement(null)}},[i.pathname,i.search,l]),u.useEffect(()=>{var k;if(p&&r){const w=((k=Object.values(r.elements).find(S=>(S.shortId??S.id)===p))==null?void 0:k.id)??p;w!==C.getState().selectedElementId&&C.getState().inspectElement(w),f(null)}},[p,r]),u.useEffect(()=>{var w;if(!c.current)return;if(d.current){d.current=!1;return}if(e.type==="welcome"&&i.pathname!=="/"||ti(i.pathname)&&!(e.type==="diagram"||e.type==="element-detail")||ni(i.pathname))return;let k=null;if(e.type==="element-detail"&&r){const S=r.elements[e.elementId];if(S){const x=S.shortId??S.id;k=`/catalog/${x.split("-")[0]}/${x}`}}else if(e.type==="diagram"&&r){const S=(w=r.diagrams)==null?void 0:w.find(x=>x.id===e.diagramId);S&&(k=`/diagrams/${Qs(S.diagramType)}/${encodeURIComponent(S.shortId??S.id)}`)}else k=Zs(e);if(k&&e.type!=="element-detail"&&e.type!=="welcome"&&o){const S=r==null?void 0:r.elements[o],x=(S==null?void 0:S.shortId)??o,h=k.includes("?")?"&":"?";k+=`${h}element=${encodeURIComponent(x)}`}if(k&&i.pathname+i.search!==k){const x=k.split("?")[0]===i.pathname;s(k,{replace:x})}},[e,r,o]),null}const Nc=window.location.protocol==="file:"?Wo:$o;ka.createRoot(document.getElementById("root")).render(t.jsx(u.StrictMode,{children:t.jsx(Nc,{children:t.jsx(jc,{})})}));export{qc as $,Ud as A,nu as B,y as C,ze as D,Ni as E,N as F,tu as G,ke as H,_c as I,Lc as J,Xt as K,Ie as L,ya as M,Mc as N,xi as O,jd as P,Xc as Q,xr as R,li as S,Wt as T,eu as U,Jc as V,Ic as W,Jr as X,Pn as Y,zc as Z,oe as _,Yc as a,Qc as a0,Uc as b,Pc as c,qs as d,Gc as e,Je as f,$t as g,ce as h,ta as i,Ke as j,Gs as k,Oc as l,St as m,xn as n,bi as o,Kc as p,Wc as q,Zc as r,Js as s,Vc as t,C as u,$c as v,Hc as w,ru as x,rt as y,Fd as z};