@skill-map/cli 0.17.0 → 0.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/tutorial/sm-tutorial.md +8 -0
- package/dist/cli.js +8246 -5744
- package/dist/cli.js.map +1 -1
- package/dist/conformance/index.js +36 -14
- package/dist/conformance/index.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +529 -61
- package/dist/index.js.map +1 -1
- package/dist/kernel/index.d.ts +418 -85
- package/dist/kernel/index.js +529 -61
- package/dist/kernel/index.js.map +1 -1
- package/dist/migrations/002_sidecar_columns.sql +53 -0
- package/dist/migrations/003_drop_node_author.sql +20 -0
- package/dist/migrations/004_sidecar_root_json.sql +23 -0
- package/dist/migrations/005_node_favorites.sql +20 -0
- package/dist/ui/chunk-3R7E3HPC.js +7 -0
- package/dist/ui/chunk-JKJGGXCS.js +1025 -0
- package/dist/ui/chunk-SX2A3WBX.js +247 -0
- package/dist/ui/{chunk-WMWULWZX.js → chunk-TWZHUCAT.js} +1 -1
- package/dist/ui/chunk-UJOZYR5I.js +1 -0
- package/dist/ui/chunk-WTAL2RK4.js +1 -0
- package/dist/ui/{chunk-LUDNWV6G.js → chunk-Z3UJHHTC.js} +38 -38
- package/dist/ui/index.html +1 -1
- package/dist/ui/main-AAYGMON4.js +1 -0
- package/migrations/002_sidecar_columns.sql +53 -0
- package/migrations/003_drop_node_author.sql +20 -0
- package/migrations/004_sidecar_root_json.sql +23 -0
- package/migrations/005_node_favorites.sql +20 -0
- package/package.json +6 -6
- package/dist/ui/chunk-5ZGVBIPP.js +0 -1031
- package/dist/ui/chunk-BWUDZKB6.js +0 -247
- package/dist/ui/main-7LR4JN4M.js +0 -1
package/dist/ui/main-7LR4JN4M.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$,A as R,Ab as ge,B as W,Bb as fe,Cb as ve,Db as ye,Eb as be,Fb as Ie,Fc as Se,Gb as ke,Gc as we,H as N,Ha as d,Hb as _e,Ia as m,J as a,Ja as B,P as F,W as le,X as ce,Yc as K,Zc as Q,_ as j,a as q,b as ee,bb as g,bd as Ee,c as L,cd as Pe,da as A,dd as xe,ea as l,ed as p,f as Y,fa as c,fd as Ae,ga as E,gd as I,hd as Te,id as Me,j as te,l as b,n as ne,o as O,p as s,pa as de,r as re,ra as U,s as ie,sa as C,ub as me,v as oe,vb as pe,w as se,wb as T,xb as ue,yb as he,z as ae}from"./chunk-5ZGVBIPP.js";import"./chunk-Q7L6LLAK.js";var Re=[{path:"",pathMatch:"full",redirectTo:"graph"},{path:"graph",loadComponent:()=>import("./chunk-BWUDZKB6.js").then(n=>n.GraphView),data:{title:"Graph"}},{path:"list",loadComponent:()=>import("./chunk-LUDNWV6G.js").then(n=>n.ListView),data:{title:"List"}},{path:"**",redirectTo:"graph"}];var v={errors:{unknownMode:n=>`SKILL_MAP_MODE: unknown value "${n}"`,restPrefix:n=>`BFF error [${n}]: `,malformedResponse:"BFF returned a malformed response",demoFetchFailed:(n,e)=>`Demo bundle fetch failed for "${n}": ${e}`,demoParseFailed:(n,e)=>`Demo bundle parse failed for "${n}": ${e}`,graphFormatNotInDemo:n=>`Graph format "${n}" is not bundled in demo mode (only "ascii").`}};function Ce(n){if(typeof n!="object"||n===null)return!1;let e=n;if(typeof e.type!="string"||e.type.length===0)return!1;let t=e.timestamp;return!(typeof t!="number"&&typeof t!="string"||!("data"in e))}var k=new ne("SKILL_MAP_MODE");function De(){return typeof document>"u"?"live":document.querySelector('meta[name="skill-map-mode"]')?.content==="demo"?"demo":"live"}var u={connected:n=>`[ws] connected to ${n}`,closed:(n,e)=>`[ws] closed (code=${n}, reason="${e}")`,malformedFrame:n=>`[ws] malformed frame dropped: ${n}`,socketError:n=>`[ws] socket error: ${n}`,reconnectScheduled:(n,e)=>`[ws] reconnect attempt ${e} scheduled in ${n}ms`,reconnectGiveUp:n=>`[ws] giving up after ${n} failed reconnect attempts`};var Le=[1e3,2e3,4e3,8e3,16e3,3e4],Z=10,Je=new Set([1e3,1001]);function Xe(){return typeof window>"u"||!window.location?"ws://127.0.0.1:4242/ws":`${window.location.protocol==="https:"?"wss:":"ws:"}//${window.location.host}/ws`}var _=class n{mode=s(k);destroyRef=s(se);subject=new ee;socket=null;reconnectTimer=null;reconnectAttempt=0;disposed=!1;socketFactory=e=>new WebSocket(e);url=Xe();events$;_setSocketFactory(e){this.socketFactory=e}_setUrl(e){this.url=e}constructor(){this.mode!=="live"?this.events$=L:this.events$=new q(e=>{!this.socket&&!this.disposed&&this.connect();let t=this.subject.subscribe(e);return()=>t.unsubscribe()}).pipe(te({resetOnRefCountZero:!1})),this.destroyRef.onDestroy(()=>this.disconnect())}disconnect(){if(!this.disposed){if(this.disposed=!0,this.reconnectTimer!==null&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.socket){try{this.socket.close(1e3,"client disconnect")}catch{}this.socket=null}this.subject.complete()}}ngOnDestroy(){this.disconnect()}connect(){if(this.disposed)return;let e;try{e=this.socketFactory(this.url)}catch(t){let r=t instanceof Error?t.message:String(t);console.warn(u.socketError(r)),this.scheduleReconnect();return}this.socket=e,e.onopen=()=>{this.reconnectAttempt=0,console.info(u.connected(this.url))},e.onmessage=t=>{this.handleFrame(t.data)},e.onerror=t=>{let r=typeof t=="object"&&t!==null&&"message"in t?String(t.message??"unknown"):"unknown";console.warn(u.socketError(r))},e.onclose=t=>{console.info(u.closed(t.code,t.reason)),this.socket=null,!this.disposed&&(Je.has(t.code)||this.scheduleReconnect())}}handleFrame(e){if(typeof e!="string"){console.warn(u.malformedFrame("non-string frame"));return}let t;try{t=JSON.parse(e)}catch(r){let i=r instanceof Error?r.message:String(r);console.warn(u.malformedFrame(i));return}if(!Ce(t)){console.warn(u.malformedFrame("envelope shape"));return}this.subject.next(t)}scheduleReconnect(){if(this.disposed)return;if(this.reconnectAttempt>=Z){console.warn(u.reconnectGiveUp(Z)),this.subject.error(new Error(u.reconnectGiveUp(Z)));return}let e=Math.min(this.reconnectAttempt,Le.length-1),t=Le[e];this.reconnectAttempt+=1,console.info(u.reconnectScheduled(t,this.reconnectAttempt)),this.reconnectTimer=setTimeout(()=>{this.reconnectTimer=null,this.connect()},t)}get _reconnectAttempt(){return this.reconnectAttempt}static \u0275fac=function(t){return new(t||n)};static \u0275prov=b({token:n,factory:n.\u0275fac,providedIn:"root"})};function Oe(n){let e=new TextEncoder().encode(n),t="";for(let r=0;r<e.length;r++)t+=String.fromCharCode(e[r]);return btoa(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}var y="/api",H=class n{http;ws;kindRegistry;constructor(e,t,r){this.http=e??s(T),this.ws=t??s(_),this.kindRegistry=r??s(I)}async health(){return this.getJson(`${y}/health`)}async loadScan(){let[e]=await Promise.all([this.getJson(`${y}/scan`),this.listNodes({limit:0}).catch(()=>null)]);return e}async listNodes(e={}){let t=Ze(e),r=await this.getJson(`${y}/nodes${t}`);return this.ingestRegistry(r.kindRegistry),r}async getNode(e,t={}){let r=Oe(e),i=t.includeBody?"?include=body":"";try{let o=await this.getJson(`${y}/nodes/${r}${i}`);return this.ingestRegistry(o.kindRegistry),o}catch(o){if(o instanceof p&&o.code==="not-found")return null;throw o}}async listLinks(e={}){let t=qe(e),r=await this.getJson(`${y}/links${t}`);return this.ingestRegistry(r.kindRegistry),r}async listIssues(e={}){let t=et(e),r=await this.getJson(`${y}/issues${t}`);return this.ingestRegistry(r.kindRegistry),r}async loadGraph(e="ascii"){let t=`${y}/graph?format=${encodeURIComponent(e)}`;try{return await Y(this.http.get(t,{responseType:"text"}))}catch(r){throw this.translateError(r)}}async loadConfig(){let e=await this.getJson(`${y}/config`);return this.ingestRegistry(e.kindRegistry),e.value}async listPlugins(){let e=await this.getJson(`${y}/plugins`);return this.ingestRegistry(e.kindRegistry),e}ingestRegistry(e){e&&this.kindRegistry.ingest(e)}events(){return this.ws.events$}async getJson(e){try{return await Y(this.http.get(e))}catch(t){throw this.translateError(t)}}translateError(e){if(e instanceof p)return e;if(e instanceof pe){let r=tt(e.error);return r?new p(r.error.code,r.error.message,r.error.details):new p("internal",e.message||v.errors.malformedResponse)}let t=e instanceof Error?e.message:String(e);return new p("internal",t)}static \u0275fac=function(t){return new(t||n)(O(T),O(_),O(I))};static \u0275prov=b({token:n,factory:n.\u0275fac,providedIn:"root"})};function Ze(n){let e=new URLSearchParams;n.kind&&n.kind.length>0&&e.set("kind",n.kind.join(",")),n.hasIssues!==void 0&&e.set("hasIssues",String(n.hasIssues)),n.path&&e.set("path",n.path),n.limit!==void 0&&e.set("limit",String(n.limit)),n.offset!==void 0&&e.set("offset",String(n.offset));let t=e.toString();return t?`?${t}`:""}function qe(n){let e=new URLSearchParams;n.kind&&n.kind.length>0&&e.set("kind",n.kind.join(",")),n.from&&e.set("from",n.from),n.to&&e.set("to",n.to);let t=e.toString();return t?`?${t}`:""}function et(n){let e=new URLSearchParams;n.severity&&e.set("severity",n.severity),n.ruleId&&e.set("ruleId",n.ruleId),n.node&&e.set("node",n.node);let t=e.toString();return t?`?${t}`:""}function tt(n){if(typeof n!="object"||n===null)return null;let e=n;if(e.ok!==!1)return null;let t=e.error;if(typeof t!="object"||t===null)return null;let r=t;return typeof r.code!="string"||typeof r.message!="string"?null:{ok:!1,error:{code:r.code,message:r.message,details:r.details}}}var nt="data.json",rt="data.meta.json",z=class{constructor(e=globalThis.fetch.bind(globalThis),t){this.fetchImpl=e;this.kindRegistry=t??s(I)}metaPromise=null;dataPromise=null;kindRegistry;async health(){return(await this.loadMeta()).health}async loadScan(){let[e,t]=await Promise.all([this.loadData(),this.loadMeta()]);return this.kindRegistry.ingest(t.nodes.kindRegistry),e}async listNodes(e={}){let t=await this.loadMeta();if(it(e))return this.kindRegistry.ingest(t.nodes.kindRegistry),t.nodes;let r=await this.loadData(),i=r.issues,o=r.nodes;if(e.kind&&e.kind.length>0){let S=new Set(e.kind);o=o.filter(w=>S.has(w.kind))}if(e.path){let S=at(e.path);o=o.filter(w=>S.test(w.path))}if(e.hasIssues===!0){let S=We(i);o=o.filter(w=>S.has(w.path))}else if(e.hasIssues===!1){let S=We(i);o=o.filter(w=>!S.has(w.path))}let f=o.length,x=e.offset??0,M=e.limit??1e3,h=o.slice(x,x+M);return this.kindRegistry.ingest(t.nodes.kindRegistry),{schemaVersion:"1",kind:"nodes",items:h,filters:{kind:e.kind??null,hasIssues:e.hasIssues??null,path:e.path?[e.path]:null},counts:{total:f,returned:h.length,page:{offset:x,limit:M}},kindRegistry:t.nodes.kindRegistry}}async getNode(e,t={}){let[r,i]=await Promise.all([this.loadData(),this.loadMeta()]),o=r.nodes.find(h=>h.path===e);if(!o)return null;let f=r.links.filter(h=>h.target===e),x=r.links.filter(h=>h.source===e),M=r.issues.filter(h=>h.nodeIds.includes(e));return this.kindRegistry.ingest(i.nodes.kindRegistry),{schemaVersion:"1",kind:"node",item:o,links:{incoming:f,outgoing:x},issues:M,kindRegistry:i.nodes.kindRegistry}}async listLinks(e={}){let t=await this.loadMeta();if(ot(e))return this.kindRegistry.ingest(t.links.kindRegistry),t.links;let i=(await this.loadData()).links;if(e.kind&&e.kind.length>0){let o=new Set(e.kind);i=i.filter(f=>o.has(f.kind))}return e.from&&(i=i.filter(o=>o.source===e.from)),e.to&&(i=i.filter(o=>o.target===e.to)),this.kindRegistry.ingest(t.links.kindRegistry),{schemaVersion:"1",kind:"links",items:i,filters:{kind:e.kind??null,from:e.from??null,to:e.to??null},counts:{total:i.length,returned:i.length},kindRegistry:t.links.kindRegistry}}async listIssues(e={}){let t=await this.loadMeta();if(st(e))return this.kindRegistry.ingest(t.issues.kindRegistry),t.issues;let i=(await this.loadData()).issues;return e.severity&&(i=i.filter(o=>o.severity===e.severity)),e.ruleId&&(i=i.filter(o=>o.ruleId===e.ruleId)),e.node&&(i=i.filter(o=>o.nodeIds.includes(e.node))),this.kindRegistry.ingest(t.issues.kindRegistry),{schemaVersion:"1",kind:"issues",items:i,filters:{severity:e.severity??null,ruleId:e.ruleId??null,node:e.node??null},counts:{total:i.length,returned:i.length},kindRegistry:t.issues.kindRegistry}}async loadGraph(e="ascii"){if(e!=="ascii")throw new p("bad-query",v.errors.graphFormatNotInDemo(e));return(await this.loadMeta()).graph.ascii}async loadConfig(){let e=await this.loadMeta();return this.kindRegistry.ingest(e.config.kindRegistry),e.config.value}async listPlugins(){let e=await this.loadMeta();return this.kindRegistry.ingest(e.plugins.kindRegistry),e.plugins}events(){return L}loadMeta(){return this.metaPromise||(this.metaPromise=this.fetchJson(rt)),this.metaPromise}loadData(){return this.dataPromise||(this.dataPromise=this.fetchJson(nt)),this.dataPromise}async fetchJson(e){let t;try{t=await this.fetchImpl(e)}catch(r){let i=r instanceof Error?r.message:String(r);throw new p("internal",v.errors.demoFetchFailed(e,i))}if(!t.ok)throw new p("internal",v.errors.demoFetchFailed(e,`HTTP ${t.status}`));try{return await t.json()}catch(r){let i=r instanceof Error?r.message:String(r);throw new p("internal",v.errors.demoParseFailed(e,i))}}};function it(n){return!(n.kind&&n.kind.length>0||n.hasIssues!==void 0||n.path||n.offset!==void 0&&n.offset!==0||n.limit!==void 0)}function ot(n){return!(n.kind&&n.kind.length>0||n.from||n.to)}function st(n){return!(n.severity||n.ruleId||n.node)}function We(n){let e=new Set;for(let t of n)for(let r of t.nodeIds)e.add(r);return e}function at(n){let t=n.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".");return new RegExp(`^${t}$`)}function Ne(){let n=s(k);if(n==="live")return new H(s(T),s(_));if(n==="demo")return new z;let e=n;throw new Error(v.errors.unknownMode(String(e)))}var Fe={providers:[ae(),ke(Re,_e()),ue(he()),we({}),le(async()=>{let n=s(Se),{default:e}=await import("./chunk-FWFBO7KA.js");n.setThemeConfig({theme:{preset:e,options:{darkModeSelector:".app-dark"}}})}),{provide:k,useFactory:De},{provide:xe,useFactory:Ne}]};var je={brand:"skill-map",nav:{graph:"Graph",list:"List"},actions:{},badge:{nodes:"nodes"},a11y:{viewSwitcher:"View switcher"},viewportWarning:{title:"Looks like you're on a small screen",subtitle:"skill-map is built for desktop",body:"The graph and inspector need room to breathe. Pop this open on a screen at least 768px wide \u2014 see you there."}};var P={toggleToAuto:"Switch to auto theme (follow system)",toggleToLight:"Switch to light theme",toggleToDark:"Switch to dark theme",currentAuto:"Auto theme (follows system)",currentLight:"Light theme",currentDark:"Dark theme"};var $e="search",Ue="kinds",Be="stabilities",Ke="hasIssues",V=class n{filters=s(Me);router=s(ye);activatedRoute=s(fe);kindRegistry=s(I);suppressUrlReadback=!1;constructor(){this.applyUrlToFilters(this.currentParams()),this.router.events.subscribe(e=>{if(e instanceof ge){if(this.suppressUrlReadback)return;this.applyUrlToFilters(this.currentParams())}}),W(()=>{let e=this.computeQueryParams();this.writeQueryParams(e)})}currentParams(){let e=this.router.parseUrl(this.router.url),t=new URLSearchParams;for(let[r,i]of Object.entries(e.queryParams))Array.isArray(i)?t.set(r,i.join(",")):i!=null&&t.set(r,String(i));return this.activatedRoute,t}applyUrlToFilters(e){let t=e.get($e)??"";t!==this.filters.searchText()&&this.filters.setSearchText(t);let r=lt(e.get(Ue),this.kindRegistry.kinds().map(f=>f.name));Qe(r,this.filters.selectedKinds())||this.filters.setKinds(r);let i=ct(e.get(Be));Qe(i,this.filters.selectedStabilities())||this.filters.setStabilities(i);let o=e.get(Ke)==="true";o!==this.filters.hasIssuesOnly()&&this.filters.setHasIssuesOnly(o)}computeQueryParams(){let e=this.filters.searchText().trim(),t=this.filters.selectedKinds(),r=this.filters.selectedStabilities(),i=this.filters.hasIssuesOnly();return{[$e]:e.length>0?e:null,[Ue]:t.length>0?t.join(","):null,[Be]:r.length>0?r.join(","):null,[Ke]:i?"true":null}}writeQueryParams(e){let t=this.currentParams(),r=new Map(Object.entries(e)),i=!1;for(let[o,f]of r)if((t.get(o)??null)!==f){i=!0;break}i&&(this.suppressUrlReadback=!0,this.router.navigate([],{relativeTo:this.activatedRoute,queryParams:e,queryParamsHandling:"merge",replaceUrl:!0}).finally(()=>{setTimeout(()=>{this.suppressUrlReadback=!1},0)}))}static \u0275fac=function(t){return new(t||n)};static \u0275prov=b({token:n,factory:n.\u0275fac,providedIn:"root"})};function lt(n,e){if(!n)return[];let t=new Set(e);return n.split(",").map(r=>r.trim()).filter(r=>t.has(r))}function ct(n){if(!n)return[];let e=new Set(Te);return n.split(",").map(t=>t.trim()).filter(t=>e.has(t))}function Qe(n,e){if(n.length!==e.length)return!1;for(let t=0;t<n.length;t++)if(n[t]!==e[t])return!1;return!0}var He="skill-map.ui.theme",dt="app-dark",mt="dark",ze="(prefers-color-scheme: dark)",G=class n{doc=s(oe);mode=R(this.readInitial());systemPrefersDark=R(this.readSystemPref());resolved=g(()=>{let e=this.mode();return e==="auto"?this.systemPrefersDark()?"dark":"light":e});constructor(){this.subscribeToSystemPref(),W(()=>{let e=this.resolved()==="dark",t=this.doc.documentElement;t.classList.toggle(dt,e),t.classList.toggle(mt,e);try{this.doc.defaultView?.localStorage.setItem(He,this.mode())}catch{}})}toggle(){this.mode.update(e=>e==="auto"?"light":e==="light"?"dark":"auto")}set(e){this.mode.set(e)}readInitial(){try{let e=this.doc.defaultView?.localStorage.getItem(He);if(e==="auto"||e==="light"||e==="dark")return e}catch{}return"auto"}readSystemPref(){try{return this.doc.defaultView?.matchMedia(ze).matches??!1}catch{return!1}}subscribeToSystemPref(){let e=this.doc.defaultView;if(!e||typeof e.matchMedia!="function")return;e.matchMedia(ze).addEventListener("change",r=>{this.systemPrefersDark.set(r.matches)})}static \u0275fac=function(t){return new(t||n)};static \u0275prov=b({token:n,factory:n.\u0275fac,providedIn:"root"})};var Ve={body:"You are viewing a static demo of skill-map's UI. Install it:",installCommand:"npm i -g @skill-map/cli",homeCta:"\u2190 Back to skill-map.dev",homeHref:"/",dismissAria:"Dismiss demo banner"};function ht(n,e){if(n&1){let t=de();l(0,"div",0),E(1,"span",1),l(2,"p",2),d(3),l(4,"code",3),d(5),c()(),l(6,"a",4),d(7),c(),l(8,"p-button",5),U("onClick",function(){re(t);let i=C();return ie(i.dismiss())}),c()()}if(n&2){let t=C();a(3),B(" ",t.texts.body," "),a(2),m(t.texts.installCommand),a(),A("href",t.texts.homeHref,N),a(),m(t.texts.homeCta),a(),A("ariaLabel",t.texts.dismissAria)("text",!0)("rounded",!0)}}var Ge="sm.demoBannerDismissed",J=class n{mode=s(k);texts=Ve;dismissed=R(this.readDismissed());visible=g(()=>this.mode==="demo"&&!this.dismissed());dismiss(){this.dismissed.set(!0);try{globalThis.localStorage?.setItem(Ge,"1")}catch{}}readDismissed(){if(this.mode!=="demo")return!0;try{return globalThis.localStorage?.getItem(Ge)==="1"}catch{return!1}}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=F({type:n,selectors:[["sm-demo-banner"]],decls:1,vars:1,consts:[["role","status","data-testid","demo-banner",1,"demo-banner"],["aria-hidden","true",1,"demo-banner__icon","pi","pi-info-circle"],[1,"demo-banner__body"],["data-testid","demo-banner-install",1,"demo-banner__cmd"],["data-testid","demo-banner-home",1,"demo-banner__home",3,"href"],["icon","pi pi-times","severity","secondary","size","small","data-testid","demo-banner-dismiss",3,"onClick","ariaLabel","text","rounded"]],template:function(t,r){t&1&&j(0,ht,9,7,"div",0),t&2&&$(r.visible()?0:-1)},dependencies:[Q,K],styles:["[_nghost-%COMP%]{display:block}.demo-banner[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.75rem;padding:.5rem 1rem;border-bottom:1px solid var(--p-content-border-color);background:var(--p-highlight-background);color:var(--p-text-color);font-size:.875rem}.demo-banner__icon[_ngcontent-%COMP%]{font-size:1.1rem;color:var(--p-primary-color)}.demo-banner__body[_ngcontent-%COMP%]{flex:1 1 auto;margin:0;line-height:1.4}.demo-banner__cmd[_ngcontent-%COMP%]{font-family:var(--font-family-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);background:var(--p-content-background);border:1px solid var(--p-content-border-color);border-radius:.25rem;padding:.05rem .4rem;font-size:.85em;margin-left:.25rem}.demo-banner__home[_ngcontent-%COMP%]{color:var(--p-primary-color);font-weight:500;text-decoration:none;white-space:nowrap}.demo-banner__home[_ngcontent-%COMP%]:hover, .demo-banner__home[_ngcontent-%COMP%]:focus-visible{text-decoration:underline}"],changeDetection:0})};function gt(n,e){if(n&1&&(l(0,"p",10),d(1),c()),n&2){let t=C();a(),m(t.rootLabel())}}var X=class n{loader=s(Ae);theme=s(G);_filterUrlSync=s(V);texts=je;count=this.loader.count;rootLabel=g(()=>{let e=this.loader.scan()?.roots??[];if(e.length===0)return"";let t=e[0].replace(/[\\/]+$/,"");if(!t||t===".")return"";let r=t.split(/[\\/]/);return r[r.length-1]??""});themeMode=this.theme.mode;markSrc=g(()=>this.theme.resolved()==="dark"?"skill-map-mark-light.svg":"skill-map-mark-dark.svg");themeIcon=g(()=>{switch(this.themeMode()){case"auto":return"pi pi-desktop";case"light":return"pi pi-sun";case"dark":return"pi pi-moon"}});themeLabel=g(()=>{switch(this.themeMode()){case"auto":return P.toggleToLight;case"light":return P.toggleToDark;case"dark":return P.toggleToAuto}});themeTooltip=g(()=>{switch(this.themeMode()){case"auto":return P.currentAuto;case"light":return P.currentLight;case"dark":return P.currentDark}});ngOnInit(){this.loader.load()}toggleTheme(){this.theme.toggle()}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=F({type:n,selectors:[["app-root"]],decls:31,vars:16,consts:[["role","alert","data-testid","viewport-warning",1,"viewport-warning"],[1,"viewport-warning__card"],["aria-hidden","true",1,"pi","pi-desktop","viewport-warning__icon"],[1,"viewport-warning__title"],[1,"viewport-warning__subtitle"],[1,"viewport-warning__body"],["data-testid","shell",1,"shell"],["data-testid","shell-topbar",1,"shell__topbar"],[1,"shell__brand"],["alt","","aria-hidden","true",1,"shell__brand-mark",3,"src"],[1,"shell__tag"],["data-testid","shell-nav",1,"shell__nav"],["routerLink","/graph","routerLinkActive","is-active","data-testid","nav-graph"],["routerLink","/list","routerLinkActive","is-active","data-testid","nav-list"],[1,"shell__actions"],["severity","secondary","size","small","data-testid","action-theme-toggle",3,"onClick","icon","ariaLabel","pTooltip","text","rounded"],["aria-live","polite","data-testid","shell-nodes-badge",1,"shell__badge"],[1,"shell__main"]],template:function(t,r){t&1&&(l(0,"div",0)(1,"div",1),E(2,"i",2),l(3,"h2",3),d(4),c(),l(5,"p",4),d(6),c(),l(7,"p",5),d(8),c()()(),l(9,"div",6),E(10,"sm-demo-banner"),l(11,"header",7)(12,"div",8),E(13,"img",9),l(14,"div")(15,"h1"),d(16),c(),j(17,gt,2,1,"p",10),c()(),l(18,"nav",11)(19,"a",12),d(20),c(),l(21,"a",13),d(22),c()(),l(23,"div",14)(24,"p-button",15),U("onClick",function(){return r.toggleTheme()}),c(),l(25,"div",16)(26,"strong"),d(27),c(),d(28),c()()(),l(29,"main",17),E(30,"router-outlet"),c()()),t&2&&(a(4),m(r.texts.viewportWarning.title),a(2),m(r.texts.viewportWarning.subtitle),a(2),m(r.texts.viewportWarning.body),a(5),A("src",r.markSrc(),N),a(3),m(r.texts.brand),a(),$(r.rootLabel()?17:-1),a(),ce("aria-label",r.texts.a11y.viewSwitcher),a(2),m(r.texts.nav.graph),a(2),m(r.texts.nav.list),a(2),A("icon",r.themeIcon())("ariaLabel",r.themeLabel())("pTooltip",r.themeTooltip())("text",!0)("rounded",!0),a(3),m(r.count()),a(),B(" ",r.texts.badge.nodes," "))},dependencies:[ve,be,Ie,Q,K,Pe,Ee,J],styles:["[_nghost-%COMP%]{display:block;height:100dvh;--shell-topbar-bg: #FFFFFF;--shell-topbar-border: var(--sm-violet-100);--shell-topbar-text: var(--sm-violet-800);--shell-topbar-text-strong: var(--sm-violet-900);--shell-topbar-text-muted: var(--sm-violet-600);--shell-topbar-hover-bg: color-mix(in srgb, var(--sm-violet-500) 10%, transparent);--shell-topbar-active-bg: var(--sm-violet-100);--shell-topbar-active-text: var(--sm-violet-800);--shell-topbar-badge-bg: var(--sm-violet-100)}.app-dark[_nghost-%COMP%], .app-dark [_nghost-%COMP%]{--shell-topbar-bg: #1A1B22;--shell-topbar-border: color-mix(in srgb, var(--sm-violet-300) 8%, transparent);--shell-topbar-text: var(--sm-violet-100);--shell-topbar-text-strong: var(--sm-violet-100);--shell-topbar-text-muted: var(--sm-violet-300);--shell-topbar-hover-bg: color-mix(in srgb, var(--sm-violet-400) 12%, transparent);--shell-topbar-active-bg: color-mix(in srgb, var(--sm-violet-500) 22%, transparent);--shell-topbar-active-text: var(--sm-violet-100);--shell-topbar-badge-bg: color-mix(in srgb, var(--sm-violet-500) 14%, transparent)}.shell[_ngcontent-%COMP%]{display:flex;flex-direction:column;height:100dvh}.shell__topbar[_ngcontent-%COMP%]{display:flex;align-items:center;gap:2rem;padding:.75rem 1.5rem;background:var(--shell-topbar-bg);border-bottom:1px solid var(--shell-topbar-border);color:var(--shell-topbar-text)}.shell__brand[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.75rem}.shell__brand-mark[_ngcontent-%COMP%]{width:2rem;height:2rem;display:block}.shell__brand[_ngcontent-%COMP%] h1[_ngcontent-%COMP%]{margin:0;font-size:1.05rem;font-weight:600;letter-spacing:-.01em;color:var(--shell-topbar-text-strong)}.shell__tag[_ngcontent-%COMP%]{margin:0;font-size:.72rem;color:var(--shell-topbar-text-muted);letter-spacing:.02em;text-transform:uppercase}.shell__nav[_ngcontent-%COMP%]{display:flex;gap:.25rem;margin-left:auto}.shell__nav[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{padding:.5rem .9rem;border-radius:.5rem;font-size:.9rem;font-weight:500;color:var(--shell-topbar-text-muted);transition:background .15s ease,color .15s ease}.shell__nav[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:hover{background:var(--shell-topbar-hover-bg);color:var(--shell-topbar-text-strong)}.shell__nav[_ngcontent-%COMP%] a.is-active[_ngcontent-%COMP%]{background:var(--shell-topbar-active-bg);color:var(--shell-topbar-active-text)}.shell__actions[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.75rem}.shell__badge[_ngcontent-%COMP%]{padding:.4rem .8rem;border-radius:999px;background:var(--shell-topbar-badge-bg);color:var(--shell-topbar-text-muted);font-size:.85rem}.shell__badge[_ngcontent-%COMP%] strong[_ngcontent-%COMP%]{color:var(--shell-topbar-text-strong);margin-right:.25rem}.shell__main[_ngcontent-%COMP%]{flex:1;min-height:0;overflow-y:auto;width:100%}@media(max-width:1280px){.shell__topbar[_ngcontent-%COMP%]{gap:1rem;padding:.5rem 1rem}.shell__tag[_ngcontent-%COMP%]{display:none}.shell__nav[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{padding:.4rem .7rem;font-size:.85rem}}.viewport-warning[_ngcontent-%COMP%]{display:none}@media(max-width:767px){.viewport-warning[_ngcontent-%COMP%]{position:fixed;inset:0;z-index:100000;display:flex;align-items:center;justify-content:center;padding:1.5rem;background:var(--sm-bg-content)}.viewport-warning__card[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;text-align:center;gap:.85rem;max-width:22rem}.viewport-warning__icon[_ngcontent-%COMP%]{font-size:3rem;color:var(--p-primary-color);margin-bottom:.25rem}.viewport-warning__title[_ngcontent-%COMP%]{margin:0;font-size:1.35rem;font-weight:700;color:var(--p-text-color);line-height:1.25}.viewport-warning__subtitle[_ngcontent-%COMP%]{margin:0;font-size:1rem;font-weight:500;color:var(--p-primary-color);line-height:1.35}.viewport-warning__body[_ngcontent-%COMP%]{margin:0;color:var(--p-text-muted-color);line-height:1.5;font-size:.9rem}.shell[_ngcontent-%COMP%]{display:none}}"],changeDetection:0})};me(X,Fe).catch(n=>console.error(n));
|