@skill-map/cli 0.21.0 → 0.22.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.js +6974 -6661
- package/dist/cli.js.map +1 -1
- package/dist/index.js +1588 -1471
- package/dist/index.js.map +1 -1
- package/dist/kernel/index.d.ts +217 -191
- package/dist/kernel/index.js +1588 -1471
- package/dist/kernel/index.js.map +1 -1
- package/dist/ui/chunk-GETTEQ3S.js +123 -0
- package/dist/ui/{chunk-W62WVNU4.js → chunk-HC6PNQMW.js} +7 -7
- package/dist/ui/chunk-HJHWJTFH.js +1 -0
- package/dist/ui/index.html +1 -1
- package/dist/ui/{main-NIYE2VFS.js → main-Q2WC254P.js} +2 -2
- package/package.json +6 -5
- package/dist/ui/chunk-6FTVUS57.js +0 -123
- package/dist/ui/chunk-N366HMME.js +0 -1
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
import{c as y,d as ft,e as xt,f as vt}from"./chunk-N366HMME.js";import{a as dt,b as ct,c as pe,d as me,e as mt}from"./chunk-GXRWH2VL.js";import{a as _e,b as he,c as ut,d as _t,e as ht,f as bt,g as Z,h as ee}from"./chunk-VVOEPDQD.js";import{e as gt,f as ue,h as X,i as Y,j as J,l as pt}from"./chunk-OPPQMCMQ.js";import{$a as qe,Aa as Ke,Gb as q,Gc as ot,Hb as Je,Hc as ce,I as Ae,Ib as Ze,J as Re,Ja as u,Jc as rt,K as Le,M as Ve,Ma as h,Na as b,O as k,Oa as Ue,Oc as at,Pa as G,Qa as I,Ra as O,S,Sa as f,Sb as v,T as E,Ta as l,Ua as a,Uc as st,Va as P,Vb as de,Vc as re,Wa as g,Wb as D,Wc as lt,Xa as p,Xb as et,Ya as L,Z as ze,ba as x,bc as Me,bd as ge,ca as F,cb as T,cc as tt,cd as W,db as A,ea as Se,eb as w,gb as d,gd as z,hd as R,ia as Be,ja as oe,jb as Qe,kb as We,lb as ae,mb as se,na as o,nc as nt,ob as Xe,oc as it,pb as Ye,rb as Ee,sb as V,tb as le,ub as K,va as M,vb as s,wa as $e,wb as m,xb as _,ya as He,yb as j,za as Ge,zc as Q}from"./chunk-25AWRVIC.js";import"./chunk-3R7E3HPC.js";import{a as $,b as H}from"./chunk-Q7L6LLAK.js";function At(t,n){if(t&1&&(g(0,"p",6),s(1),p()),t&2){let e=d();o(),j(" ",e.texts.aboutErrorPrefix," ",e.loadError()," ")}}var be=class t{dataSource=k(z);updateCheck=k(xt);theme=k(vt);visible=D.required();texts=y;health=x(null);loadError=x(null);markSrc=v(()=>this.theme.resolved()==="dark"?"skill-map-mark-light.svg":"skill-map-mark-dark.svg");cliVersion=v(()=>this.updateCheck.current()??this.health()?.implVersion??this.texts.aboutUnknown);specVersion=v(()=>this.health()?.specVersion??this.texts.aboutLoading);schemaVersion=v(()=>this.health()?.schemaVersion??this.texts.aboutLoading);scope=v(()=>this.health()?.scope??this.texts.aboutLoading);cwd=v(()=>this.health()?.cwd??this.texts.aboutLoading);dbDisplay=v(()=>{let n=this.health();return n?this.texts.aboutDbValue(n.db,Rt(n.dbPath,n.cwd)):this.texts.aboutLoading});homeDir=v(()=>this.health()?.homeDir??this.texts.aboutLoading);constructor(){F(()=>{this.visible()&&this.health()===null&&this.load()})}async load(){this.loadError.set(null);try{let n=await this.dataSource.health();this.health.set(n)}catch(n){let e=n instanceof R||n instanceof Error?n.message:String(n);this.loadError.set(e)}}static \u0275fac=function(e){return new(e||t)};static \u0275cmp=M({type:t,selectors:[["sm-settings-about"]],inputs:{visible:[1,"visible"]},decls:67,vars:29,consts:[["aria-labelledby","settings-about-heading","data-testid","settings-about",1,"settings-about"],[1,"settings-about__header"],["alt","","aria-hidden","true","data-testid","settings-about-logo",1,"settings-about__logo",3,"src"],[1,"settings-about__heading-text"],["id","settings-about-heading",1,"settings-about__title"],[1,"settings-about__intro"],["data-testid","settings-about-error",1,"settings-about__error"],["target","_blank","rel","noopener noreferrer","data-testid","settings-about-star",1,"settings-about__star",3,"href"],["aria-hidden","true",1,"fa-solid","fa-star","settings-about__star-icon"],[1,"settings-about__star-text"],[1,"settings-about__star-heading"],[1,"settings-about__star-body"],[1,"settings-about__star-cta"],["aria-hidden","true",1,"fa-solid","fa-star"],[1,"settings-about__list"],[1,"settings-about__row"],[1,"settings-about__label"],[1,"settings-about__value"],["target","_blank","rel","noopener noreferrer","data-testid","settings-about-website",1,"settings-about__link",3,"href"],["target","_blank","rel","noopener noreferrer","data-testid","settings-about-github",1,"settings-about__link",3,"href"],["data-testid","settings-about-cli",1,"settings-about__value"],["data-testid","settings-about-spec",1,"settings-about__value"],["data-testid","settings-about-schema",1,"settings-about__value"],["data-testid","settings-about-scope",1,"settings-about__value"],["data-testid","settings-about-cwd",1,"settings-about__value"],["data-testid","settings-about-db",1,"settings-about__value"],["data-testid","settings-about-home",1,"settings-about__value"]],template:function(e,i){e&1&&(g(0,"section",0)(1,"header",1),L(2,"img",2),g(3,"div",3)(4,"h2",4),s(5),p(),g(6,"p",5),s(7),p()()(),h(8,At,2,2,"p",6),g(9,"a",7),L(10,"i",8),g(11,"span",9)(12,"span",10),s(13),p(),g(14,"span",11),s(15),p()(),g(16,"span",12),L(17,"i",13),s(18),p()(),g(19,"dl",14)(20,"div",15)(21,"dt",16),s(22),p(),g(23,"dd",17)(24,"a",18),s(25),p()()(),g(26,"div",15)(27,"dt",16),s(28),p(),g(29,"dd",17)(30,"a",19),s(31),p()()(),g(32,"div",15)(33,"dt",16),s(34),p(),g(35,"dd",20),s(36),p()(),g(37,"div",15)(38,"dt",16),s(39),p(),g(40,"dd",21),s(41),p()(),g(42,"div",15)(43,"dt",16),s(44),p(),g(45,"dd",22),s(46),p()(),g(47,"div",15)(48,"dt",16),s(49),p(),g(50,"dd",23),s(51),p()(),g(52,"div",15)(53,"dt",16),s(54),p(),g(55,"dd",24),s(56),p()(),g(57,"div",15)(58,"dt",16),s(59),p(),g(60,"dd",25),s(61),p()(),g(62,"div",15)(63,"dt",16),s(64),p(),g(65,"dd",26),s(66),p()()()()),e&2&&(o(2),A("src",i.markSrc(),oe),o(3),_(" ",i.texts.aboutHeading," "),o(2),m(i.texts.aboutIntro),o(),b(i.loadError()?8:-1),o(),A("href",i.texts.aboutGithubUrl,oe),u("aria-label",i.texts.aboutStarA11y),o(4),m(i.texts.aboutStarHeading),o(2),m(i.texts.aboutStarBody),o(3),_(" ",i.texts.aboutStarCta," "),o(4),m(i.texts.aboutWebsiteLabel),o(2),A("href",i.texts.aboutWebsiteUrl,oe),o(),m(i.texts.aboutWebsiteUrl),o(3),m(i.texts.aboutGithubLabel),o(2),A("href",i.texts.aboutGithubUrl,oe),o(),m(i.texts.aboutGithubUrl),o(3),m(i.texts.aboutCliLabel),o(2),_(" ",i.cliVersion()," "),o(3),m(i.texts.aboutSpecLabel),o(2),_(" ",i.specVersion()," "),o(3),m(i.texts.aboutSchemaLabel),o(2),_(" ",i.schemaVersion()," "),o(3),m(i.texts.aboutScopeLabel),o(2),_(" ",i.scope()," "),o(3),m(i.texts.aboutFolderLabel),o(2),_(" ",i.cwd()," "),o(3),m(i.texts.aboutDbLabel),o(2),_(" ",i.dbDisplay()," "),o(3),m(i.texts.aboutHomeLabel),o(2),_(" ",i.homeDir()," "))},styles:["[_nghost-%COMP%]{display:block;height:100%;overflow-y:auto;padding:1.25rem 1.5rem}.settings-about[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.75rem}.settings-about__header[_ngcontent-%COMP%]{display:flex;align-items:center;gap:1rem}.settings-about__logo[_ngcontent-%COMP%]{width:64px;height:64px;flex-shrink:0}.settings-about__heading-text[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.25rem;min-width:0}.settings-about__title[_ngcontent-%COMP%]{font-size:1.15rem;font-weight:600;margin:0}.settings-about__intro[_ngcontent-%COMP%]{margin:0;color:var(--p-text-muted-color);font-size:.875rem}.settings-about__error[_ngcontent-%COMP%]{margin:0;padding:.5rem .75rem;border-radius:var(--p-border-radius);background:var(--p-message-error-background);color:var(--p-message-error-color);font-size:.875rem}.settings-about__list[_ngcontent-%COMP%]{margin:0;padding:0;display:flex;flex-direction:column;gap:.25rem}.settings-about__row[_ngcontent-%COMP%]{display:grid;grid-template-columns:180px 1fr;align-items:baseline;gap:.75rem;padding:.5rem .75rem;border-radius:var(--p-border-radius)}.settings-about__row[_ngcontent-%COMP%]:nth-child(odd){background:var(--p-content-hover-background)}.settings-about__label[_ngcontent-%COMP%]{margin:0;font-size:.875rem;color:var(--p-text-muted-color)}.settings-about__value[_ngcontent-%COMP%]{margin:0;font-family:var(--p-monospace-font-family, ui-monospace, monospace);font-size:.875rem;word-break:break-all}.settings-about__link[_ngcontent-%COMP%]{color:var(--p-primary-color);text-decoration:none}.settings-about__link[_ngcontent-%COMP%]:hover, .settings-about__link[_ngcontent-%COMP%]:focus-visible{text-decoration:underline}.settings-about__star[_ngcontent-%COMP%]{--star-accent: #f4b400;display:flex;align-items:center;gap:.875rem;padding:.875rem 1rem;border-radius:var(--p-border-radius);border:1px solid color-mix(in oklab,var(--star-accent) 45%,transparent);background:color-mix(in oklab,var(--star-accent) 12%,transparent);color:var(--p-text-color);text-decoration:none;cursor:pointer;transition:background .15s ease,border-color .15s ease,transform .15s ease}.settings-about__star[_ngcontent-%COMP%]:hover, .settings-about__star[_ngcontent-%COMP%]:focus-visible{background:color-mix(in oklab,var(--star-accent) 22%,transparent);border-color:color-mix(in oklab,var(--star-accent) 70%,transparent);transform:translateY(-1px);outline:none}.app-dark[_nghost-%COMP%] .settings-about__star[_ngcontent-%COMP%], .app-dark [_nghost-%COMP%] .settings-about__star[_ngcontent-%COMP%]{background:color-mix(in oklab,var(--star-accent) 18%,transparent);border-color:color-mix(in oklab,var(--star-accent) 55%,transparent)}.app-dark[_nghost-%COMP%] .settings-about__star[_ngcontent-%COMP%]:hover, .app-dark [_nghost-%COMP%] .settings-about__star[_ngcontent-%COMP%]:hover, .app-dark[_nghost-%COMP%] .settings-about__star[_ngcontent-%COMP%]:focus-visible, .app-dark [_nghost-%COMP%] .settings-about__star[_ngcontent-%COMP%]:focus-visible{background:color-mix(in oklab,var(--star-accent) 30%,transparent);border-color:var(--star-accent)}.settings-about__star-icon[_ngcontent-%COMP%]{font-size:1.5rem;color:var(--star-accent);flex-shrink:0}.settings-about__star-text[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.125rem;flex:1;min-width:0}.settings-about__star-heading[_ngcontent-%COMP%]{font-weight:600;font-size:.95rem}.settings-about__star-body[_ngcontent-%COMP%]{font-size:.8125rem;color:var(--p-text-muted-color);line-height:1.4}.settings-about__star-cta[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.375rem;padding:.375rem .75rem;border-radius:999px;background:var(--star-accent);color:#1a1a1a;font-weight:600;font-size:.8125rem;white-space:nowrap;flex-shrink:0}.settings-about__star[_ngcontent-%COMP%]:hover .settings-about__star-cta[_ngcontent-%COMP%], .settings-about__star[_ngcontent-%COMP%]:focus-visible .settings-about__star-cta[_ngcontent-%COMP%]{background:color-mix(in oklab,var(--star-accent) 88%,white)}"],changeDetection:0})};function Rt(t,n){if(!t||!n)return t;let e=n.replace(/[/\\]+$/,"");return t.startsWith(e)?t.slice(e.length).replace(/^[/\\]+/,""):t}var yt={schemaVersion:1,entries:[{version:"0.21.0",date:"2026-05-10",kind:"user-facing",highlights:[{body:"Expanded node cards now show the file path above the description and a provider chip (Claude, Gemini, Open Skills). Favorite toggle uses a star instead of a heart.",packages:["@skill-map/cli","@skill-map/spec"]},{body:"Disabling a plugin now removes its card chips from the UI immediately. Previously the chips lingered until the next `sm scan`, making the toggle look broken.",packages:["@skill-map/cli","@skill-map/spec"]},{body:"The card footer is cleaner: the three outgoing counters (`@`-mentions, markdown links, `/`-commands) share a single `\u2193` arrow glyph on the left, and the URL counter keeps its link glyph on the right. Three legacy hardcoded chips (in / out links, external URLs) were removed.",packages:["@skill-map/cli"]},{body:"`sm plugins show core/<ext>` now resolves like `enable`/`disable` do, and `sm plugins list` marks individually-disabled extensions with `\u2715`. The `sm tutorial` content is realigned with the v0.20.0 verbs (no more `sm graph --root` / `sm export --kind` / `kind: hook` claims).",packages:["@skill-map/cli"]},{body:"The view slot `card.footer.left.counter` was renamed to `card.footer.left` \u2014 symmetrical with `card.footer.right`. Plugin authors using the old literal in `plugin.json` need to update it; the scaffolder emits the new name automatically.",packages:["@skill-map/cli","@skill-map/spec"]},{body:"The topbar now shows the full project path under the **skill-map** wordmark, so a screenshot or a quick glance at the UI is always self-identifying. Previously only the last folder segment was shown, and projects scanned from their own root saw no path at all.",packages:["@skill-map/cli"]}]},{version:"0.20.0",date:"2026-05-10",kind:"user-facing",highlights:[{body:'**Update-check is now a user preference.** Whether you see "Update available" notifications no longer depends on the project you are scanning. The toggle moved to **Settings \u2192 General**; the CLI equivalent is `sm config set -g updateCheck.enabled <bool>`.',packages:["@skill-map/cli"]},{body:"**`sm scan` now flags orphan job files.** A new check scans `.skill-map/jobs/` for MD files that no DB row references and reports each as a `warn` issue. To delete the files, run `sm bump prune --orphan-files` (unchanged).",packages:["@skill-map/cli"]},{body:"**`sm scan -g` now scans your HOME directory.** Run `sm scan -g` (without positional roots) to walk every active provider's HOME dir \u2014 typically `~/.claude`, `~/.gemini`, `~/.agents` \u2014 using the global config + DB.",packages:["@skill-map/cli"]},{body:"**Three new privacy-sensitive project settings** in Settings \u2192 Project: *include HOME provider directories*, *extra scan roots*, and *reference paths for link validation*. Every change that expands disk access beyond your project root requires explicit confirmation.",packages:["@skill-map/cli"]},{body:'**Reset Layout uses a proper dialog.** The "Reset all node positions" action used to fire a browser-native `confirm()` popup; it now uses the in-app dialog style with a destructive-styled "Reset" button and a "Cancel" escape.',packages:["@skill-map/cli"]},{body:'**Plugins can be locked by the host.** Settings \u2192 Plugins shows a "Locked" pill on plugins marked as mandatory (today only `core/markdown`, the universal `.md` fallback). The toggle stays visible but disabled, with a tooltip explaining why.',packages:["@skill-map/cli"]}]},{version:"0.19.0",date:"2026-05-09",kind:"user-facing",highlights:[{body:"**Settings \u2192 Changelog.** The Changelog tab in Settings now lists what's new in skill-map: one entry per release, newest first, bullet points for the user-facing changes. Bundled with the demo so it's available offline too.",packages:["@skill-map/cli"]},{body:"**Tags zoom-to-matching.** Clicking a tag chip in the inspector now pans + zooms the graph to fit every node that carries the tag. Click the same chip again to clear the selection and return to the previous view.",packages:["@skill-map/cli"]}]},{version:"0.18.0",date:"2026-05-07",kind:"user-facing",highlights:[{body:"**Bump sidecars in batch.** New `sm bump --pending` walks every node whose `.sm` sidecar reports drift and refreshes them in one pass. Single-node `sm bump <path>` also lands.",packages:["@skill-map/cli"]},{body:'**Annotation field dropped: `released`.** Redundant with `audit.lastBumpedAt`. The inspector and node card now read the activity timestamp from the `audit:` block \u2014 no more confusion between "officially released" and "last bumped".',packages:["@skill-map/cli"]}]},{version:"0.17.0",date:"2026-04-29",kind:"user-facing",highlights:[{body:"**Per-node chips in the graph card and inspector.** Plugins can now decorate nodes with counters, alerts, and key-value rows. Two come built-in: external-URL count per node, and in/out link counts.",packages:["@skill-map/cli"]},{body:"**Multi-provider graphs.** Claude, Gemini, and the open-standard `agent-skills` flavour now coexist in the same graph. Cards paint with each Provider's accent; the kind palette in the graph view filters on the actual node kind names.",packages:["@skill-map/cli"]}]}]};var Ct=yt;var Vt=(t,n)=>n.version;function zt(t,n){if(t&1&&(g(0,"p",3),s(1),p()),t&2){let e=d();o(),_(" ",e.texts.changelogEmpty," ")}}function Bt(t,n){if(t&1&&(g(0,"p",10),s(1),p()),t&2){let e=d(3);o(),_(" ",e.texts.changelogInternalRelease," ")}}function $t(t,n){if(t&1&&(g(0,"li",15),s(1),p()),t&2){let e=n.$implicit;o(),m(e)}}function Ht(t,n){if(t&1&&(g(0,"ul",14),I(1,$t,2,1,"li",15,G),p()),t&2){let e=d().$implicit,i=d(4);u("aria-label",i.texts.changelogAffectedPackages),o(),O(e.packages)}}function Gt(t,n){if(t&1&&(g(0,"li",12),L(1,"div",13),h(2,Ht,3,1,"ul",14),p()),t&2){let e=n.$implicit;o(),A("innerHTML",e.bodyHtml,Be),o(),b(e.packages.length?2:-1)}}function Kt(t,n){if(t&1&&(g(0,"ul",11),I(1,Gt,3,2,"li",12,Ue),p()),t&2){let e=d().$implicit;o(),O(e.highlights)}}function Ut(t,n){if(t&1&&(g(0,"li",6)(1,"header",7)(2,"span",8),s(3),p(),g(4,"span",9),s(5),p()(),h(6,Bt,2,1,"p",10)(7,Kt,3,0,"ul",11),p()),t&2){let e=n.$implicit;V("settings-changelog__entry--internal",e.kind==="internal"),u("data-testid","settings-changelog-entry-"+e.version),o(3),_("v",e.version),o(2),m(e.date),o(),b(e.kind==="internal"?6:7)}}function qt(t,n){if(t&1&&(g(0,"ol",4),I(1,Ut,8,6,"li",5,Vt),p()),t&2){let e=d();o(),O(e.entries())}}var fe=class t{markdown=k(mt);texts=y;entries=x([]);hasEntries=v(()=>this.entries().length>0);ngOnInit(){this.renderAll()}async renderAll(){let n=[];for(let e of Ct.entries){let i=[];for(let r of e.highlights)i.push({bodyHtml:await this.markdown.render(r.body),packages:r.packages});n.push({version:e.version,date:this.formatDate(e.date),kind:e.kind,highlights:i})}this.entries.set(n)}formatDate(n){let e=new Date(n+"T00:00:00Z");return Number.isNaN(e.getTime())?n:new Intl.DateTimeFormat("en-GB",{day:"numeric",month:"long",year:"numeric",timeZone:"UTC"}).format(e)}static \u0275fac=function(e){return new(e||t)};static \u0275cmp=M({type:t,selectors:[["sm-settings-changelog"]],decls:7,vars:4,consts:[["data-testid","settings-changelog",1,"settings-changelog"],["id","settings-changelog-heading",1,"settings-changelog__title"],[1,"settings-changelog__intro"],["data-testid","settings-changelog-empty",1,"settings-changelog__empty"],["role","list",1,"settings-changelog__list"],[1,"settings-changelog__entry",3,"settings-changelog__entry--internal"],[1,"settings-changelog__entry"],[1,"settings-changelog__entry-header"],[1,"settings-changelog__version"],[1,"settings-changelog__date"],[1,"settings-changelog__internal-body"],["role","list",1,"settings-changelog__highlights"],[1,"settings-changelog__highlight"],[1,"settings-changelog__highlight-body",3,"innerHTML"],["role","list",1,"settings-changelog__packages"],[1,"settings-changelog__package"]],template:function(e,i){e&1&&(g(0,"section",0)(1,"h2",1),s(2),p(),g(3,"p",2),s(4),p(),h(5,zt,2,1,"p",3)(6,qt,3,0,"ol",4),p()),e&2&&(u("aria-labelledby","settings-changelog-heading"),o(2),_(" ",i.texts.changelogHeading," "),o(2),m(i.texts.changelogIntro),o(),b(i.hasEntries()?6:5))},styles:["[_nghost-%COMP%]{display:block;height:100%;overflow-y:auto;padding:1.25rem 1.5rem}.settings-changelog__title[_ngcontent-%COMP%]{margin:0 0 .25rem;font-size:1.05rem;font-weight:600;color:var(--p-text-color)}.settings-changelog__intro[_ngcontent-%COMP%]{margin:0 0 1.25rem;font-size:.85rem;color:var(--sm-text-muted);line-height:1.5}.settings-changelog__empty[_ngcontent-%COMP%]{margin:1.5rem 0 0;font-size:.9rem;color:var(--sm-text-muted);font-style:italic}.settings-changelog__list[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:1.25rem}.settings-changelog__entry[_ngcontent-%COMP%]{border-left:2px solid var(--p-primary-color);padding:.25rem 0 .25rem .85rem}.settings-changelog__entry--internal[_ngcontent-%COMP%]{border-left-color:var(--sm-border)}.settings-changelog__entry-header[_ngcontent-%COMP%]{display:flex;align-items:baseline;gap:.6rem;margin-bottom:.45rem}.settings-changelog__version[_ngcontent-%COMP%]{font-family:var(--sm-font-mono);font-size:.95rem;font-weight:600;color:var(--p-text-color)}.settings-changelog__date[_ngcontent-%COMP%]{font-size:.78rem;color:var(--sm-text-muted)}.settings-changelog__internal-body[_ngcontent-%COMP%]{margin:0;font-size:.85rem;color:var(--sm-text-muted);font-style:italic}.settings-changelog__highlights[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.7rem}.settings-changelog__highlight[_ngcontent-%COMP%]{font-size:.88rem;line-height:1.5;color:var(--p-text-color)}.settings-changelog__highlight-body[_ngcontent-%COMP%]{margin:0}[_nghost-%COMP%] .settings-changelog__highlight-body p{margin:0}[_nghost-%COMP%] .settings-changelog__highlight-body p+p{margin-top:.45rem}[_nghost-%COMP%] .settings-changelog__highlight-body code{font-family:var(--sm-font-mono);font-size:.82rem;padding:.05rem .3rem;border-radius:3px;background:var(--sm-bg-hover);color:var(--p-text-color)}[_nghost-%COMP%] .settings-changelog__highlight-body a{color:var(--p-primary-color);text-decoration:underline}[_nghost-%COMP%] .settings-changelog__highlight-body strong{font-weight:600}.settings-changelog__packages[_ngcontent-%COMP%]{list-style:none;margin:.4rem 0 0;padding:0;display:flex;flex-wrap:wrap;gap:.3rem}.settings-changelog__package[_ngcontent-%COMP%]{font-family:var(--sm-font-mono);font-size:.7rem;padding:.1rem .4rem;border-radius:3px;background:var(--sm-bg-hover);color:var(--sm-text-muted);border:1px solid var(--sm-border);line-height:1.4}"],changeDetection:0})};var xe=class t{sectionId=D.required();sectionLabel=D.required();texts=y;headingId=v(()=>`settings-coming-soon-${this.sectionId()}-heading`);static \u0275fac=function(e){return new(e||t)};static \u0275cmp=M({type:t,selectors:[["sm-settings-coming-soon"]],inputs:{sectionId:[1,"sectionId"],sectionLabel:[1,"sectionLabel"]},decls:6,vars:5,consts:[[1,"settings-coming-soon"],["aria-hidden","true",1,"fa-solid","fa-clock","settings-coming-soon__icon"],[1,"settings-coming-soon__title",3,"id"],[1,"settings-coming-soon__body"]],template:function(e,i){e&1&&(g(0,"section",0),L(1,"i",1),g(2,"h2",2),s(3),p(),g(4,"p",3),s(5),p()()),e&2&&(u("aria-labelledby",i.headingId())("data-testid","settings-coming-soon-"+i.sectionId()),o(2),A("id",i.headingId()),o(),_(" ",i.texts.comingSoonTitle," "),o(2),_(" ",i.texts.comingSoonBody(i.sectionLabel())," "))},styles:["[_nghost-%COMP%]{display:flex;height:100%;align-items:center;justify-content:center;padding:1.5rem}.settings-coming-soon[_ngcontent-%COMP%]{max-width:420px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:.5rem;color:var(--p-text-muted-color)}.settings-coming-soon__icon[_ngcontent-%COMP%]{font-size:2rem;opacity:.6}.settings-coming-soon__title[_ngcontent-%COMP%]{font-size:1.05rem;font-weight:600;margin:0;color:var(--p-text-color)}.settings-coming-soon__body[_ngcontent-%COMP%]{margin:0;font-size:.875rem;line-height:1.5}"],changeDetection:0})};var wt=`
|
|
2
|
-
.p-toggleswitch {
|
|
3
|
-
display: inline-block;
|
|
4
|
-
width: dt('toggleswitch.width');
|
|
5
|
-
height: dt('toggleswitch.height');
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
.p-toggleswitch-input {
|
|
9
|
-
cursor: pointer;
|
|
10
|
-
appearance: none;
|
|
11
|
-
position: absolute;
|
|
12
|
-
top: 0;
|
|
13
|
-
inset-inline-start: 0;
|
|
14
|
-
width: 100%;
|
|
15
|
-
height: 100%;
|
|
16
|
-
padding: 0;
|
|
17
|
-
margin: 0;
|
|
18
|
-
opacity: 0;
|
|
19
|
-
z-index: 1;
|
|
20
|
-
outline: 0 none;
|
|
21
|
-
border-radius: dt('toggleswitch.border.radius');
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
.p-toggleswitch-slider {
|
|
25
|
-
cursor: pointer;
|
|
26
|
-
width: 100%;
|
|
27
|
-
height: 100%;
|
|
28
|
-
border-width: dt('toggleswitch.border.width');
|
|
29
|
-
border-style: solid;
|
|
30
|
-
border-color: dt('toggleswitch.border.color');
|
|
31
|
-
background: dt('toggleswitch.background');
|
|
32
|
-
transition:
|
|
33
|
-
background dt('toggleswitch.transition.duration'),
|
|
34
|
-
color dt('toggleswitch.transition.duration'),
|
|
35
|
-
border-color dt('toggleswitch.transition.duration'),
|
|
36
|
-
outline-color dt('toggleswitch.transition.duration'),
|
|
37
|
-
box-shadow dt('toggleswitch.transition.duration');
|
|
38
|
-
border-radius: dt('toggleswitch.border.radius');
|
|
39
|
-
outline-color: transparent;
|
|
40
|
-
box-shadow: dt('toggleswitch.shadow');
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
.p-toggleswitch-handle {
|
|
44
|
-
position: absolute;
|
|
45
|
-
top: 50%;
|
|
46
|
-
display: flex;
|
|
47
|
-
justify-content: center;
|
|
48
|
-
align-items: center;
|
|
49
|
-
background: dt('toggleswitch.handle.background');
|
|
50
|
-
color: dt('toggleswitch.handle.color');
|
|
51
|
-
width: dt('toggleswitch.handle.size');
|
|
52
|
-
height: dt('toggleswitch.handle.size');
|
|
53
|
-
inset-inline-start: dt('toggleswitch.gap');
|
|
54
|
-
margin-block-start: calc(-1 * calc(dt('toggleswitch.handle.size') / 2));
|
|
55
|
-
border-radius: dt('toggleswitch.handle.border.radius');
|
|
56
|
-
transition:
|
|
57
|
-
background dt('toggleswitch.transition.duration'),
|
|
58
|
-
color dt('toggleswitch.transition.duration'),
|
|
59
|
-
inset-inline-start dt('toggleswitch.slide.duration'),
|
|
60
|
-
box-shadow dt('toggleswitch.slide.duration');
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
.p-toggleswitch.p-toggleswitch-checked .p-toggleswitch-slider {
|
|
64
|
-
background: dt('toggleswitch.checked.background');
|
|
65
|
-
border-color: dt('toggleswitch.checked.border.color');
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
.p-toggleswitch.p-toggleswitch-checked .p-toggleswitch-handle {
|
|
69
|
-
background: dt('toggleswitch.handle.checked.background');
|
|
70
|
-
color: dt('toggleswitch.handle.checked.color');
|
|
71
|
-
inset-inline-start: calc(dt('toggleswitch.width') - calc(dt('toggleswitch.handle.size') + dt('toggleswitch.gap')));
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
.p-toggleswitch:not(.p-disabled):has(.p-toggleswitch-input:hover) .p-toggleswitch-slider {
|
|
75
|
-
background: dt('toggleswitch.hover.background');
|
|
76
|
-
border-color: dt('toggleswitch.hover.border.color');
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
.p-toggleswitch:not(.p-disabled):has(.p-toggleswitch-input:hover) .p-toggleswitch-handle {
|
|
80
|
-
background: dt('toggleswitch.handle.hover.background');
|
|
81
|
-
color: dt('toggleswitch.handle.hover.color');
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
.p-toggleswitch:not(.p-disabled):has(.p-toggleswitch-input:hover).p-toggleswitch-checked .p-toggleswitch-slider {
|
|
85
|
-
background: dt('toggleswitch.checked.hover.background');
|
|
86
|
-
border-color: dt('toggleswitch.checked.hover.border.color');
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
.p-toggleswitch:not(.p-disabled):has(.p-toggleswitch-input:hover).p-toggleswitch-checked .p-toggleswitch-handle {
|
|
90
|
-
background: dt('toggleswitch.handle.checked.hover.background');
|
|
91
|
-
color: dt('toggleswitch.handle.checked.hover.color');
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
.p-toggleswitch:not(.p-disabled):has(.p-toggleswitch-input:focus-visible) .p-toggleswitch-slider {
|
|
95
|
-
box-shadow: dt('toggleswitch.focus.ring.shadow');
|
|
96
|
-
outline: dt('toggleswitch.focus.ring.width') dt('toggleswitch.focus.ring.style') dt('toggleswitch.focus.ring.color');
|
|
97
|
-
outline-offset: dt('toggleswitch.focus.ring.offset');
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
.p-toggleswitch.p-invalid > .p-toggleswitch-slider {
|
|
101
|
-
border-color: dt('toggleswitch.invalid.border.color');
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
.p-toggleswitch.p-disabled {
|
|
105
|
-
opacity: 1;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
.p-toggleswitch.p-disabled .p-toggleswitch-slider {
|
|
109
|
-
background: dt('toggleswitch.disabled.background');
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
.p-toggleswitch.p-disabled .p-toggleswitch-handle {
|
|
113
|
-
background: dt('toggleswitch.handle.disabled.background');
|
|
114
|
-
}
|
|
115
|
-
`;var Qt=["handle"],Wt=["input"],Xt=t=>({checked:t});function Yt(t,n){t&1&&qe(0)}function Jt(t,n){if(t&1&&Ke(0,Yt,1,0,"ng-container",3),t&2){let e=d();f("ngTemplateOutlet",e.handleTemplate||e._handleTemplate)("ngTemplateOutletContext",Ze(2,Xt,e.checked()))}}var Zt=`
|
|
116
|
-
${wt}
|
|
117
|
-
|
|
118
|
-
p-toggleswitch.ng-invalid.ng-dirty > .p-toggleswitch-slider {
|
|
119
|
-
border-color: dt('toggleswitch.invalid.border.color');
|
|
120
|
-
}
|
|
121
|
-
`,en={root:{position:"relative"}},tn={root:({instance:t})=>["p-toggleswitch p-component",{"p-toggleswitch p-component":!0,"p-toggleswitch-checked":t.checked(),"p-disabled":t.$disabled(),"p-invalid":t.invalid()}],input:"p-toggleswitch-input",slider:"p-toggleswitch-slider",handle:"p-toggleswitch-handle"},kt=(()=>{class t extends rt{name="toggleswitch";style=Zt;classes=tn;inlineStyles=en;static \u0275fac=(()=>{let e;return function(r){return(e||(e=Se(t)))(r||t)}})();static \u0275prov=Re({token:t,factory:t.\u0275fac})}return t})();var Pt=new Ve("TOGGLESWITCH_INSTANCE"),nn={provide:gt,useExisting:Ae(()=>B),multi:!0},B=(()=>{class t extends pt{componentName="ToggleSwitch";$pcToggleSwitch=k(Pt,{optional:!0,skipSelf:!0})??void 0;bindDirectiveInstance=k(re,{self:!0});onAfterViewChecked(){this.bindDirectiveInstance.setAttrs(this.ptms(["host","root"]))}styleClass;tabindex;inputId;readonly;trueValue=!0;falseValue=!1;ariaLabel;size=D();ariaLabelledBy;autofocus;onChange=new ze;input;handleTemplate;_handleTemplate;focused=!1;_componentStyle=k(kt);templates;onHostClick(e){this.onClick(e)}onAfterContentInit(){this.templates.forEach(e=>{e.getType()==="handle"?this._handleTemplate=e.template:this._handleTemplate=e.template})}onClick(e){!this.$disabled()&&!this.readonly&&(this.writeModelValue(this.checked()?this.falseValue:this.trueValue),this.onModelChange(this.modelValue()),this.onChange.emit({originalEvent:e,checked:this.modelValue()}),this.input.nativeElement.focus())}onFocus(){this.focused=!0}onBlur(){this.focused=!1,this.onModelTouched()}checked(){return this.modelValue()===this.trueValue}writeControlValue(e,i){i(e),this.cd.markForCheck()}get dataP(){return this.cn({checked:this.checked(),disabled:this.$disabled(),invalid:this.invalid()})}static \u0275fac=(()=>{let e;return function(r){return(e||(e=Se(t)))(r||t)}})();static \u0275cmp=M({type:t,selectors:[["p-toggleswitch"],["p-toggleSwitch"],["p-toggle-switch"]],contentQueries:function(i,r,c){if(i&1&&Qe(c,Qt,4)(c,ot,4),i&2){let C;ae(C=se())&&(r.handleTemplate=C.first),ae(C=se())&&(r.templates=C)}},viewQuery:function(i,r){if(i&1&&We(Wt,5),i&2){let c;ae(c=se())&&(r.input=c.first)}},hostVars:7,hostBindings:function(i,r){i&1&&w("click",function(C){return r.onHostClick(C)}),i&2&&(u("data-p-checked",r.checked())("data-p-disabled",r.$disabled())("data-p",r.dataP),le(r.sx("root")),K(r.cn(r.cx("root"),r.styleClass)))},inputs:{styleClass:"styleClass",tabindex:[2,"tabindex","tabindex",tt],inputId:"inputId",readonly:[2,"readonly","readonly",Me],trueValue:"trueValue",falseValue:"falseValue",ariaLabel:"ariaLabel",size:[1,"size"],ariaLabelledBy:"ariaLabelledBy",autofocus:[2,"autofocus","autofocus",Me]},outputs:{onChange:"onChange"},features:[q([nn,kt,{provide:Pt,useExisting:t},{provide:at,useExisting:t}]),He([re]),Ge],decls:5,vars:22,consts:[["input",""],["type","checkbox","role","switch",3,"focus","blur","checked","pAutoFocus","pBind"],[3,"pBind"],[4,"ngTemplateOutlet","ngTemplateOutletContext"]],template:function(i,r){i&1&&(l(0,"input",1,0),w("focus",function(){return r.onFocus()})("blur",function(){return r.onBlur()}),a(),l(2,"div",2)(3,"div",2),h(4,Jt,1,4,"ng-container"),a()()),i&2&&(K(r.cx("input")),f("checked",r.checked())("pAutoFocus",r.autofocus)("pBind",r.ptm("input")),u("id",r.inputId)("required",r.required()?"":void 0)("disabled",r.$disabled()?"":void 0)("aria-checked",r.checked())("aria-labelledby",r.ariaLabelledBy)("aria-label",r.ariaLabel)("name",r.name())("tabindex",r.tabindex),o(2),K(r.cx("slider")),f("pBind",r.ptm("slider")),u("data-p",r.dataP),o(),K(r.cx("handle")),f("pBind",r.ptm("handle")),u("data-p",r.dataP),o(),b(r.handleTemplate||r._handleTemplate?4:-1))},dependencies:[it,nt,st,ce,lt,re],encapsulation:2,changeDetection:0})}return t})(),ne=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=$e({type:t});static \u0275inj=Le({imports:[B,ce,ce]})}return t})();var on=(t,n)=>n.key;function rn(t,n){if(t&1&&(l(0,"p-message",3),s(1),a()),t&2){let e=d();f("closable",!1),o(),j(" ",e.texts.general.loadErrorPrefix," ",n," ")}}function an(t,n){if(t&1&&(l(0,"p-message",4),s(1),a()),t&2){let e=d();f("closable",!1),o(),j(" ",e.texts.general.saveErrorPrefix," ",n," ")}}function sn(t,n){if(t&1){let e=T();l(0,"li",6)(1,"div",7)(2,"div",8),s(3),a(),l(4,"div",9),s(5),a()(),l(6,"p-toggleswitch",10),w("ngModelChange",function(r){let c=S(e).$implicit,C=d();return E(C.onToggle(c,r))}),a()()}if(t&2){let e=n.$implicit,i=d();u("data-testid","settings-general-row-"+e.key),o(3),m(i.toggleLabel(e.key)),o(2),_(" ",i.toggleDescription(e.key)," "),o(),f("ngModel",i.valueOf(e))("disabled",i.loading()||i.isPending(e.key)||i.preferences()===null),u("data-testid","settings-general-toggle-"+e.key)}}var ln=[{key:"updateCheck.enabled",read:t=>t.updateCheck.enabled,patch:t=>({updateCheck:{enabled:t}})}],ve=class t{dataSource=k(z);visible=D.required();texts=y;toggles=ln;loading=x(!1);loadError=x(null);saveError=x(null);preferences=x(null);pending=x(new Set);constructor(){F(()=>{this.visible()&&this.refresh()})}toggleLabel(n){return y.general.toggles[n].label}toggleDescription(n){return y.general.toggles[n].description}valueOf(n){let e=this.preferences();return e?n.read(e):!1}isPending(n){return this.pending().has(n)}onToggle(n,e){this.runToggle(n,e)}async refresh(){this.loading.set(!0),this.loadError.set(null),this.saveError.set(null);try{let n=await this.dataSource.getPreferences();this.preferences.set(n)}catch(n){this.loadError.set(St(n)),this.preferences.set(null)}finally{this.loading.set(!1)}}async runToggle(n,e){if(this.pending().has(n.key))return;let i=new Set(this.pending());i.add(n.key),this.pending.set(i),this.saveError.set(null);try{let r=await this.dataSource.setPreferences(n.patch(e));this.preferences.set(r)}catch(r){this.saveError.set(St(r))}finally{let r=new Set(this.pending());r.delete(n.key),this.pending.set(r)}}static \u0275fac=function(e){return new(e||t)};static \u0275cmp=M({type:t,selectors:[["sm-settings-general"]],inputs:{visible:[1,"visible"]},decls:10,vars:5,consts:[["data-testid","settings-general",1,"settings-general"],["id","settings-general-heading",1,"settings-general__title"],[1,"settings-general__intro"],["severity","error","data-testid","settings-general-load-error",3,"closable"],["severity","error","data-testid","settings-general-save-error",3,"closable"],["role","list",1,"settings-general__list"],[1,"settings-general__row"],[1,"settings-general__row-text"],[1,"settings-general__row-label"],[1,"settings-general__row-description"],[3,"ngModelChange","ngModel","disabled"]],template:function(e,i){if(e&1&&(l(0,"section",0)(1,"h2",1),s(2),a(),l(3,"p",2),s(4),a(),h(5,rn,2,3,"p-message",3),h(6,an,2,3,"p-message",4),l(7,"ul",5),I(8,sn,7,6,"li",6,on),a()()),e&2){let r,c;u("aria-labelledby","settings-general-heading"),o(2),_(" ",i.texts.general.heading," "),o(2),m(i.texts.general.intro),o(),b((r=i.loadError())?5:-1,r),o(),b((c=i.saveError())?6:-1,c),o(2),O(i.toggles)}},dependencies:[J,X,Y,ee,Z,ne,B],styles:["[_nghost-%COMP%]{display:block;height:100%;overflow-y:auto;padding:1.25rem 1.5rem}.settings-general__title[_ngcontent-%COMP%]{margin:0 0 .25rem;font-size:1.05rem;font-weight:600;color:var(--p-text-color)}.settings-general__intro[_ngcontent-%COMP%]{margin:0 0 1.25rem;font-size:.85rem;color:var(--sm-text-muted);line-height:1.5}.settings-general__list[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:1rem}.settings-general__row[_ngcontent-%COMP%]{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;padding:.85rem 1rem;border:1px solid var(--p-content-border-color);border-radius:.5rem;background:var(--p-content-background)}.settings-general__row-text[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.25rem;flex:1 1 auto;min-width:0}.settings-general__row-label[_ngcontent-%COMP%]{font-size:.9rem;font-weight:600;color:var(--p-text-color)}.settings-general__row-description[_ngcontent-%COMP%]{font-size:.8rem;color:var(--sm-text-muted);line-height:1.45}"],changeDetection:0})};function St(t){return t instanceof R||t instanceof Error?t.message:String(t)}var Ie={provider:"#7C3AED",extractor:"#A78BFA",analyzer:"#5FD17C",action:"#00C853",formatter:"#5BC0EB",hook:"#FFB627"};function Tt(t){let n=t.toLowerCase();return Ie[n]??"currentColor"}var jt=(t,n)=>n.id;function gn(t,n){if(t&1){let e=T();l(0,"button",15),w("click",function(){let r=S(e).$implicit,c=d();return E(c.setKindFilter(r))}),s(1),a()}if(t&2){let e=n.$implicit,i=d();Ee("--kind-color",e==="all"?null:i.kindTint(e)),V("is-active",i.isKindFilterActive(e))("is-all",e==="all"),u("aria-pressed",i.isKindFilterActive(e))("aria-label",i.texts.pluginsKindFilterOptionA11y(e,!i.isKindFilterActive(e)))("data-testid","settings-plugins-kind-chip-"+e),o(),_(" ",e==="all"?i.texts.pluginsKindFilterAll:e," ")}}function pn(t,n){if(t&1&&(l(0,"p-message",10),s(1),a()),t&2){let e=d();f("closable",!1),o(),_(" ",e.texts.unsavedChangesMessage(e.dirtyIds().size)," ")}}function mn(t,n){if(t&1&&(l(0,"p",11),P(1,"i",16),s(2),a()),t&2){let e=d();o(2),_(" ",e.texts.loading," ")}}function un(t,n){if(t&1&&(l(0,"p-message",12),s(1),a()),t&2){let e=d();f("closable",!1),o(),j(" ",e.texts.errorPrefix," ",e.loadError()," ")}}function _n(t,n){if(t&1&&(l(0,"p",13),s(1),a()),t&2){let e=d();o(),_(" ",e.texts.empty," ")}}function hn(t,n){if(t&1){let e=T();l(0,"p-message",21),w("onClose",function(){S(e);let r=d(2);return E(r.toggleError.set(null))}),s(1),a()}if(t&2){let e=d(2);f("closable",!0),o(),j(" ",e.texts.toggleErrorPrefix," ",e.toggleError()," ")}}function bn(t,n){if(t&1&&(l(0,"p",18),P(1,"i",22),s(2),a()),t&2){let e=d(2);o(2),_(" ",e.texts.pluginsSearchEmpty(e.searchText())," ")}}function fn(t,n){if(t&1){let e=T();l(0,"button",40),w("click",function(r){S(e);let c=d().$implicit;return d(2).toggleExpanded(c.id),E(r.stopPropagation())}),P(1,"i",41),a()}if(t&2){let e=d().$implicit,i=d(2);u("aria-expanded",i.isExpanded(e.id))("aria-label",i.isExpanded(e.id)?i.texts.collapseLabel:i.texts.expandLabel)("data-testid","settings-bundle-expand-"+e.id),o(),K(i.isExpanded(e.id)?"fa-solid fa-chevron-down":"fa-solid fa-chevron-right")}}function xn(t,n){t&1&&P(0,"span",26)}function vn(t,n){if(t&1&&P(0,"span",29),t&2){let e=d().$implicit;u("data-testid","settings-row-dirty-"+e.id)}}function yn(t,n){if(t&1&&(l(0,"span",32),s(1),a()),t&2){let e=d().$implicit;o(),_("v",e.version)}}function Cn(t,n){if(t&1&&(l(0,"span",33),P(1,"i",42),s(2),a()),t&2){let e=d().$implicit,i=d(2);f("title",i.texts.lockedTooltip),u("data-testid","settings-row-locked-"+e.id),o(2),_(" ",i.texts.lockedLabel," ")}}function wn(t,n){if(t&1&&(l(0,"span",34),s(1),a()),t&2){let e=d().$implicit,i=d(2);o(),m(i.statusLabel(e))}}function kn(t,n){if(t&1&&(l(0,"p",35),s(1),a()),t&2){let e=d().$implicit;o(),m(e.description)}}function Pn(t,n){if(t&1&&(l(0,"span",36),s(1),a()),t&2){let e=d().$implicit;o(),m(e.reason)}}function Sn(t,n){if(t&1&&(l(0,"p",37),P(1,"i",43),s(2),a()),t&2){let e=d().$implicit,i=d(2);u("data-testid","settings-row-starts-disabled-"+e.id),o(2),_(" ",i.texts.startsAsDisabledRowHint," ")}}function En(t,n){if(t&1){let e=T();l(0,"p-toggleswitch",44),w("ngModelChange",function(r){S(e);let c=d().$implicit,C=d(2);return E(C.onBundleToggle(c,r))}),a()}if(t&2){let e=d().$implicit,i=d(2);f("ngModel",i.pendingEnabled(e.id))("disabled",i.applying()||!!e.locked)("ariaLabel",i.texts.a11y.pluginToggle(e.id,!i.pendingEnabled(e.id))),u("data-testid","settings-toggle-"+e.id)}}function Mn(t,n){if(t&1&&P(0,"span",29),t&2){let e=d().$implicit,i=d(2).$implicit;u("data-testid","settings-extrow-dirty-"+i.id+"-"+e.id)}}function Tn(t,n){if(t&1&&(l(0,"span",33),P(1,"i",42),s(2),a()),t&2){let e=d().$implicit,i=d(2).$implicit,r=d(2);f("title",r.texts.lockedTooltip),u("data-testid","settings-extrow-locked-"+i.id+"-"+e.id),o(2),_(" ",r.texts.lockedLabel," ")}}function In(t,n){if(t&1&&(l(0,"p",52),s(1),a()),t&2){let e=d().$implicit;o(),m(e.description)}}function On(t,n){if(t&1){let e=T();l(0,"li",46),w("click",function(r){let c=S(e).$implicit,C=d(2).$implicit,N=d(2);return E(N.onSubrowClick(C.id,c,r))}),l(1,"div",47)(2,"div",48),h(3,Mn,1,1,"span",29),l(4,"span",49),s(5),a(),l(6,"span",50),s(7),a(),l(8,"span",51),s(9),a(),h(10,Tn,3,3,"span",33),a(),h(11,In,2,1,"p",52),a(),l(12,"p-toggleswitch",44),w("ngModelChange",function(r){let c=S(e).$implicit,C=d(2).$implicit,N=d(2);return E(N.onExtensionToggle(C.id,c,r))}),a()()}if(t&2){let e=n.$implicit,i=d(2).$implicit,r=d(2);V("is-clickable",r.extensionToggleInteractive(e))("is-dirty",r.isDirty(r.qualifiedExt(i.id,e.id))),u("data-testid","settings-extrow-"+i.id+"-"+e.id),o(3),b(r.isDirty(r.qualifiedExt(i.id,e.id))?3:-1),o(2),m(e.id),o(),Ee("--kind-color",r.kindTint(e.kind)),o(),m(e.kind),o(2),_("v",e.version),o(),b(e.locked?10:-1),o(),b(e.description?11:-1),o(),f("ngModel",r.pendingEnabled(r.qualifiedExt(i.id,e.id)))("disabled",r.applying()||!!e.locked)("ariaLabel",r.texts.a11y.extensionToggle(r.qualifiedExt(i.id,e.id),!r.pendingEnabled(r.qualifiedExt(i.id,e.id)))),u("data-testid","settings-ext-toggle-"+i.id+"-"+e.id)}}function Dn(t,n){if(t&1&&(l(0,"ul",39),I(1,On,13,17,"li",45,jt),a()),t&2){let e=d().$implicit;u("data-testid","settings-extensions-"+e.id),o(),O(e.extensions)}}function jn(t,n){if(t&1){let e=T();l(0,"li",23)(1,"div",24),w("click",function(r){let c=S(e).$implicit,C=d(2);return E(C.onRowClick(c,r))}),h(2,fn,2,5,"button",25)(3,xn,1,0,"span",26),l(4,"div",27)(5,"div",28),h(6,vn,1,1,"span",29),l(7,"span",30),s(8),a(),l(9,"span",31),s(10),a(),h(11,yn,2,1,"span",32),h(12,Cn,3,3,"span",33),h(13,wn,2,1,"span",34),a(),h(14,kn,2,1,"p",35),h(15,Pn,2,1,"span",36),h(16,Sn,3,2,"p",37),a(),h(17,En,1,4,"p-toggleswitch",38),a(),h(18,Dn,3,1,"ul",39),a()}if(t&2){let e=n.$implicit,i=d(2);V("is-extension-bundle",e.granularity==="extension")("is-failed",!i.canToggleBundle(e)&&e.granularity==="bundle")("is-clickable",i.rowIsClickable(e))("is-dirty",e.granularity==="bundle"&&i.isDirty(e.id)),u("data-testid","settings-row-"+e.id),o(2),b(e.granularity==="extension"&&(e.extensions!=null&&e.extensions.length)?2:3),o(4),b(e.granularity==="bundle"&&i.isDirty(e.id)?6:-1),o(2),m(e.id),o(2),m(i.sourceLabel(e.source)),o(),b(e.version?11:-1),o(),b(e.locked?12:-1),o(),b(!i.canToggleBundle(e)&&e.granularity==="bundle"?13:-1),o(),b(e.description?14:-1),o(),b(e.reason?15:-1),o(),b(i.showStartsAsDisabledHint(e)?16:-1),o(),b(i.canToggleBundle(e)?17:-1),o(),b(e.granularity==="extension"&&(e.extensions!=null&&e.extensions.length)&&i.isExpanded(e.id)?18:-1)}}function Fn(t,n){if(t&1&&(h(0,hn,2,3,"p-message",17),h(1,bn,3,1,"p",18),l(2,"ul",19),I(3,jn,19,21,"li",20,jt),a()),t&2){let e=d();b(e.toggleError()?0:-1),o(),b(e.searchActive()&&e.filteredPlugins().length===0?1:-1),o(2),O(e.filteredPlugins())}}function Nn(t,n){if(t&1&&(l(0,"em",53),s(1),a()),t&2){let e=d(2);o(),_(" ",e.texts.startsAsDisabledFooterHint," ")}}function An(t,n){if(t&1){let e=T();l(0,"footer",14),h(1,Nn,2,1,"em",53),l(2,"p-button",54),w("onClick",function(){S(e);let r=d();return E(r.discardChanges())}),a(),l(3,"p-button",55),w("onClick",function(){S(e);let r=d();return E(r.applyChanges())}),a()()}if(t&2){let e=d();o(),b(e.restartRecommended()?1:-1),o(),f("text",!0)("label",e.texts.discardChanges)("ariaLabel",e.texts.discardA11y)("disabled",e.applying()),o(),f("label",e.texts.applyAndClose)("ariaLabel",e.texts.applyA11y)("disabled",e.applying())("loading",e.applying())}}var Ft=["all",...Object.keys(Ie)],ye=["claude","gemini","agent-skills","core"],Ce=["provider","extractor","analyzer","action","formatter","hook"],Oe="sm.settings.plugins.collapsed",De="sm.settings.plugins.kind-filter",ie=class t{dataSource=k(z);scanTrigger=k(ft);visible=D.required();applied=de();texts=y;loading=x(!1);loadError=x(null);toggleError=x(null);plugins=x([]);collapsed=x(Hn());originalState=x(new Map);pendingState=x(new Map);applying=x(!1);dirtyIds=v(()=>{let n=this.originalState(),e=this.pendingState(),i=new Set;for(let[r,c]of e)n.get(r)!==c&&i.add(r);return i});hasPendingChanges=v(()=>this.dirtyIds().size>0);hasFailureRows=v(()=>this.plugins().some(n=>ke(n.status)));searchText=x("");searchActive=v(()=>this.searchText().trim().length>0);kindFilter=x(Kn());kindFilterActive=v(()=>this.kindFilter()!=="all");kindFilterOptions=Ft;visiblePlugins=v(()=>zn(this.plugins().flatMap(Vn)));filteredPlugins=v(()=>{let n=this.searchText().trim().toLowerCase(),e=this.kindFilter(),i=this.visiblePlugins();return e!=="all"&&(i=i.flatMap(r=>Ln(r,e))),n.length>0&&(i=i.flatMap(r=>Rn(r,n))),i});constructor(){F(()=>{this.visible()&&this.refresh()}),F(()=>Gn(this.collapsed())),F(()=>Un(this.kindFilter()))}async refresh(){this.loading.set(!0),this.loadError.set(null),this.toggleError.set(null);try{let n=await this.dataSource.listPlugins();this.plugins.set([...n.items]);let e=It(n.items);this.originalState.set(e),this.pendingState.set(new Map(e))}catch(n){this.loadError.set(Dt(n)),this.plugins.set([]),this.originalState.set(new Map),this.pendingState.set(new Map)}finally{this.loading.set(!1)}}setKindFilter(n){this.kindFilter.set(n)}isKindFilterActive(n){return this.kindFilter()===n}toggleExpanded(n){let e=new Set(this.collapsed());e.has(n)?e.delete(n):e.add(n),this.collapsed.set(e)}isExpanded(n){return!this.collapsed().has(n)}pendingEnabled(n){return this.pendingState().get(n)??!1}isDirty(n){return this.dirtyIds().has(n)}showStartsAsDisabledHint(n){return n.startsAsDisabled?this.pendingEnabled(n.id):!1}restartRecommended=v(()=>{let n=this.pendingState();for(let e of this.plugins())if(e.startsAsDisabled===!0&&n.get(e.id)===!0)return!0;return!1});onBundleToggle(n,e){if(this.applying())return;let i=new Map(this.pendingState());i.set(n.id,e),this.pendingState.set(i)}onExtensionToggle(n,e,i){if(this.applying())return;let r=we(n,e.id),c=new Map(this.pendingState());c.set(r,i),this.pendingState.set(c)}async applyChanges(){if(this.applying())return;let n=this.dirtyIds();if(n.size===0)return;let e=[],i=this.pendingState();for(let c of n)e.push({id:c,enabled:i.get(c)??!1});this.applying.set(!0),this.toggleError.set(null);let r=!1;try{let c=await this.dataSource.applyPluginChanges(e);this.plugins.set([...c.items]);let C=It(c.items);this.originalState.set(C),this.pendingState.set(new Map(C)),this.scanTrigger.run(),r=!0}catch(c){this.toggleError.set(Dt(c))}finally{this.applying.set(!1)}r&&this.applied.emit()}discardChanges(){this.pendingState.set(new Map(this.originalState())),this.toggleError.set(null)}canToggleBundle(n){return n.granularity==="extension"?!1:!ke(n.status)}bundleToggleInteractive(n){return this.canToggleBundle(n)&&!n.locked}extensionToggleInteractive(n){return!n.locked}rowIsClickable(n){return!!(this.bundleToggleInteractive(n)||n.granularity==="extension"&&(n.extensions?.length??0)>0)}onRowClick(n,e){if(!Ot(e)){if(this.bundleToggleInteractive(n)){this.onBundleToggle(n,!this.pendingEnabled(n.id));return}n.granularity==="extension"&&(n.extensions?.length??0)>0&&this.toggleExpanded(n.id)}}onSubrowClick(n,e,i){if(Ot(i)||!this.extensionToggleInteractive(e))return;let r=we(n,e.id);this.onExtensionToggle(n,e,!this.pendingEnabled(r))}statusLabel(n){return ke(n.status)?y.statusFailure[n.status]??n.status:n.status==="enabled"?y.enabledLabel:y.disabledLabel}sourceLabel(n){switch(n){case"built-in":return y.sourceBuiltIn;case"project":return y.sourceProject;case"global":return y.sourceGlobal}}qualifiedExt(n,e){return we(n,e)}kindTint(n){return Tt(n)}static \u0275fac=function(e){return new(e||t)};static \u0275cmp=M({type:t,selectors:[["sm-settings-plugins"]],inputs:{visible:[1,"visible"]},outputs:{applied:"applied"},decls:19,vars:9,consts:[["aria-labelledby","settings-plugins-heading",1,"settings-plugins"],[1,"settings-plugins__scroll"],[1,"settings-plugins__header"],["id","settings-plugins-heading",1,"settings-plugins__title"],[1,"settings-plugins__intro"],["iconPosition","left",1,"settings-plugins__search"],["styleClass","fa-solid fa-magnifying-glass"],["pInputText","","type","text","data-testid","settings-plugins-search",3,"ngModelChange","placeholder","ngModel"],["role","group","data-testid","settings-plugins-kind-filter",1,"settings-plugins__kind-filter"],["type","button",1,"settings-plugins__kind-chip",3,"is-active","is-all","--kind-color"],["severity","warn","styleClass","settings-plugins__banner","data-testid","settings-banner-unsaved",3,"closable"],["data-testid","settings-loading",1,"settings-plugins__hint"],["severity","error","data-testid","settings-error",3,"closable"],["data-testid","settings-empty",1,"settings-plugins__hint"],["data-testid","settings-plugins-footer",1,"settings-plugins__footer"],["type","button",1,"settings-plugins__kind-chip",3,"click"],["aria-hidden","true",1,"fa-solid","fa-spinner","fa-spin"],["severity","error","data-testid","settings-toggle-error",3,"closable"],["data-testid","settings-search-empty",1,"settings-plugins__hint"],["role","list",1,"settings-plugins__list"],[1,"settings-plugins__row",3,"is-extension-bundle","is-failed","is-clickable","is-dirty"],["severity","error","data-testid","settings-toggle-error",3,"onClose","closable"],["aria-hidden","true",1,"fa-solid","fa-magnifying-glass"],[1,"settings-plugins__row"],[1,"settings-plugins__row-main",3,"click"],["type","button",1,"settings-plugins__expand"],["aria-hidden","true",1,"settings-plugins__expand-spacer"],[1,"settings-plugins__row-text"],[1,"settings-plugins__row-headline"],["aria-hidden","true",1,"settings-plugins__dirty-dot"],[1,"settings-plugins__row-id"],[1,"settings-plugins__row-source"],[1,"settings-plugins__row-version"],[1,"settings-plugins__row-locked",3,"title"],[1,"settings-plugins__row-status"],[1,"settings-plugins__row-description"],[1,"settings-plugins__row-reason"],[1,"settings-plugins__row-hint"],[3,"ngModel","disabled","ariaLabel"],["role","list",1,"settings-plugins__sublist"],["type","button",1,"settings-plugins__expand",3,"click"],["aria-hidden","true"],["aria-hidden","true",1,"fa-solid","fa-lock"],["aria-hidden","true",1,"fa-solid","fa-triangle-exclamation"],[3,"ngModelChange","ngModel","disabled","ariaLabel"],[1,"settings-plugins__subrow",3,"is-clickable","is-dirty"],[1,"settings-plugins__subrow",3,"click"],[1,"settings-plugins__subrow-text"],[1,"settings-plugins__subrow-headline"],[1,"settings-plugins__subrow-id"],[1,"settings-plugins__subrow-kind"],[1,"settings-plugins__subrow-version"],[1,"settings-plugins__subrow-description"],["data-testid","settings-plugins-restart-hint",1,"settings-plugins__footer-hint"],["severity","secondary","data-testid","settings-plugins-discard",3,"onClick","text","label","ariaLabel","disabled"],["data-testid","settings-plugins-apply",3,"onClick","label","ariaLabel","disabled","loading"]],template:function(e,i){e&1&&(l(0,"section",0)(1,"div",1)(2,"header",2)(3,"h2",3),s(4),a(),l(5,"p",4),s(6),a()(),l(7,"p-iconfield",5),P(8,"p-inputicon",6),l(9,"input",7),w("ngModelChange",function(c){return i.searchText.set(c)}),a()(),l(10,"div",8),I(11,gn,2,10,"button",9,G),a(),h(13,pn,2,2,"p-message",10),h(14,mn,3,1,"p",11)(15,un,2,3,"p-message",12)(16,_n,2,1,"p",13)(17,Fn,5,2),a(),h(18,An,4,9,"footer",14),a()),e&2&&(o(4),_(" ",i.texts.pluginsHeading," "),o(2),m(i.texts.pluginsIntro),o(3),f("placeholder",i.texts.pluginsSearchPlaceholder)("ngModel",i.searchText()),u("aria-label",i.texts.pluginsSearchA11y),o(),u("aria-label",i.texts.pluginsKindFilterA11y),o(),O(i.kindFilterOptions),o(2),b(i.hasPendingChanges()?13:-1),o(),b(i.loading()?14:i.loadError()?15:i.plugins().length===0?16:17),o(4),b(i.hasPendingChanges()?18:-1))},dependencies:[J,ue,X,Y,W,ge,_t,ut,bt,ht,he,_e,ee,Z,ne,B],styles:["[_nghost-%COMP%]{display:flex;flex-direction:column;height:100%;overflow:hidden}.settings-plugins[_ngcontent-%COMP%]{display:flex;flex-direction:column;flex:1;min-height:0}.settings-plugins__scroll[_ngcontent-%COMP%]{flex:1;overflow-y:auto;padding:1.25rem 1.5rem;display:flex;flex-direction:column;gap:.75rem;min-height:0}.settings-plugins__header[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.25rem}.settings-plugins__title[_ngcontent-%COMP%]{font-size:1.15rem;font-weight:600;margin:0}.settings-plugins__intro[_ngcontent-%COMP%]{margin:0;color:var(--p-text-muted-color);font-size:.875rem}.settings-plugins__search[_ngcontent-%COMP%]{display:block;width:100%}.settings-plugins__search[_ngcontent-%COMP%] :where(input[_ngcontent-%COMP%]){width:100%}.settings-plugins__kind-filter[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:.375rem}.settings-plugins__kind-chip[_ngcontent-%COMP%]{--chip-accent: var(--kind-color, var(--p-text-color));appearance:none;cursor:pointer;font:inherit;font-size:.75rem;font-weight:500;letter-spacing:.02em;text-transform:lowercase;padding:.25rem .625rem;border-radius:999px;background:color-mix(in oklab,var(--chip-accent) 8%,transparent);border:1px solid color-mix(in oklab,var(--chip-accent) 35%,transparent);color:color-mix(in oklab,var(--chip-accent) 70%,var(--p-text-color));transition:background .12s ease,border-color .12s ease,color .12s ease}.settings-plugins__kind-chip[_ngcontent-%COMP%]:hover{background:color-mix(in oklab,var(--chip-accent) 18%,transparent);border-color:color-mix(in oklab,var(--chip-accent) 55%,transparent)}.settings-plugins__kind-chip[_ngcontent-%COMP%]:focus-visible{outline:2px solid var(--p-focus-ring-color, var(--chip-accent));outline-offset:2px}.settings-plugins__kind-chip.is-active[_ngcontent-%COMP%]{background:color-mix(in oklab,var(--chip-accent) 80%,transparent);border-color:var(--chip-accent);color:#f9fafb}.app-dark[_nghost-%COMP%] .settings-plugins__kind-chip[_ngcontent-%COMP%], .app-dark [_nghost-%COMP%] .settings-plugins__kind-chip[_ngcontent-%COMP%]{background:color-mix(in oklab,var(--chip-accent) 14%,transparent);border-color:color-mix(in oklab,var(--chip-accent) 50%,transparent);color:color-mix(in oklab,var(--chip-accent) 80%,var(--p-text-color))}.app-dark[_nghost-%COMP%] .settings-plugins__kind-chip[_ngcontent-%COMP%]:hover, .app-dark [_nghost-%COMP%] .settings-plugins__kind-chip[_ngcontent-%COMP%]:hover{background:color-mix(in oklab,var(--chip-accent) 26%,transparent);border-color:color-mix(in oklab,var(--chip-accent) 70%,transparent)}.app-dark[_nghost-%COMP%] .settings-plugins__kind-chip.is-active[_ngcontent-%COMP%], .app-dark [_nghost-%COMP%] .settings-plugins__kind-chip.is-active[_ngcontent-%COMP%]{background:color-mix(in oklab,var(--chip-accent) 70%,transparent);border-color:var(--chip-accent);color:#0b0f17}.settings-plugins__banner[_ngcontent-%COMP%]{display:block}.settings-plugins__banner-body[_ngcontent-%COMP%]{font-weight:400}.settings-plugins__hint[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;margin:0;padding:1rem 0;color:var(--p-text-muted-color);font-size:.875rem}.settings-plugins__list[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.25rem}.settings-plugins__row[_ngcontent-%COMP%]{border:1px solid var(--p-content-border-color);border-radius:var(--p-border-radius);background:var(--p-content-background);padding:.75rem .875rem;display:flex;flex-direction:column;gap:.5rem}.settings-plugins__row.is-clickable[_ngcontent-%COMP%]{cursor:pointer;transition:background .12s ease}.settings-plugins__row.is-clickable[_ngcontent-%COMP%]:hover{background:var(--p-content-hover-background)}.settings-plugins__row.is-failed[_ngcontent-%COMP%]{border-color:var(--p-message-error-border-color);background:var(--p-message-error-background)}.settings-plugins__row.is-extension-bundle[_ngcontent-%COMP%]{background:var(--p-content-background)}.settings-plugins__row-main[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.75rem}.settings-plugins__expand[_ngcontent-%COMP%], .settings-plugins__expand-spacer[_ngcontent-%COMP%]{width:1.75rem;height:1.75rem;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.settings-plugins__expand[_ngcontent-%COMP%]{border:none;background:transparent;cursor:pointer;color:var(--p-text-muted-color);border-radius:var(--p-border-radius)}.settings-plugins__expand[_ngcontent-%COMP%]:hover{color:var(--p-text-color);background:var(--p-content-hover-background)}.settings-plugins__row-text[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.125rem;flex:1;min-width:0}.settings-plugins__row-headline[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:baseline;gap:.5rem .75rem}.settings-plugins__row-id[_ngcontent-%COMP%]{font-weight:600;font-family:var(--p-monospace-font-family, monospace)}.settings-plugins__row-source[_ngcontent-%COMP%], .settings-plugins__row-version[_ngcontent-%COMP%], .settings-plugins__subrow-kind[_ngcontent-%COMP%], .settings-plugins__subrow-version[_ngcontent-%COMP%]{display:inline-flex;align-items:center;font-size:.7rem;font-weight:500;letter-spacing:.02em;padding:.125rem .5rem;border-radius:999px;white-space:nowrap}.settings-plugins__row-version[_ngcontent-%COMP%], .settings-plugins__subrow-version[_ngcontent-%COMP%]{font-family:var(--p-monospace-font-family, ui-monospace, monospace)}.settings-plugins__row-source[_ngcontent-%COMP%], .settings-plugins__row-version[_ngcontent-%COMP%], .settings-plugins__subrow-version[_ngcontent-%COMP%]{background:color-mix(in oklab,var(--p-text-color) 8%,transparent);border:1px solid color-mix(in oklab,var(--p-text-color) 18%,transparent);color:var(--p-text-color)}.app-dark[_nghost-%COMP%] .settings-plugins__row-source[_ngcontent-%COMP%], .app-dark [_nghost-%COMP%] .settings-plugins__row-source[_ngcontent-%COMP%], .app-dark[_nghost-%COMP%] .settings-plugins__row-version[_ngcontent-%COMP%], .app-dark [_nghost-%COMP%] .settings-plugins__row-version[_ngcontent-%COMP%], .app-dark[_nghost-%COMP%] .settings-plugins__subrow-version[_ngcontent-%COMP%], .app-dark [_nghost-%COMP%] .settings-plugins__subrow-version[_ngcontent-%COMP%]{background:color-mix(in oklab,var(--p-text-color) 14%,transparent);border-color:color-mix(in oklab,var(--p-text-color) 28%,transparent)}.settings-plugins__subrow-kind[_ngcontent-%COMP%]{background:color-mix(in oklab,var(--kind-color, var(--p-text-color)) 14%,transparent);border:1px solid color-mix(in oklab,var(--kind-color, var(--p-text-color)) 38%,transparent);color:color-mix(in oklab,var(--kind-color, var(--p-text-color)) 70%,#111827)}.app-dark[_nghost-%COMP%] .settings-plugins__subrow-kind[_ngcontent-%COMP%], .app-dark [_nghost-%COMP%] .settings-plugins__subrow-kind[_ngcontent-%COMP%]{background:color-mix(in oklab,var(--kind-color, var(--p-text-color)) 22%,transparent);border-color:color-mix(in oklab,var(--kind-color, var(--p-text-color)) 55%,transparent);color:color-mix(in oklab,var(--kind-color, var(--p-text-color)) 80%,#f9fafb)}.settings-plugins__row-status[_ngcontent-%COMP%]{font-weight:500}.settings-plugins__row-locked[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.25rem;font-size:.7rem;font-weight:500;letter-spacing:.02em;padding:.125rem .5rem;border-radius:999px;white-space:nowrap;background:color-mix(in oklab,var(--p-message-warn-color, #b45309) 14%,transparent);border:1px solid color-mix(in oklab,var(--p-message-warn-color, #b45309) 35%,transparent);color:color-mix(in oklab,var(--p-message-warn-color, #b45309) 70%,#111827)}.settings-plugins__row-locked[_ngcontent-%COMP%] > .pi[_ngcontent-%COMP%]{font-size:.7rem}.app-dark[_nghost-%COMP%] .settings-plugins__row-locked[_ngcontent-%COMP%], .app-dark [_nghost-%COMP%] .settings-plugins__row-locked[_ngcontent-%COMP%]{background:color-mix(in oklab,var(--p-message-warn-color, #f59e0b) 22%,transparent);border-color:color-mix(in oklab,var(--p-message-warn-color, #f59e0b) 55%,transparent);color:color-mix(in oklab,var(--p-message-warn-color, #f59e0b) 85%,#f9fafb)}.settings-plugins__row-description[_ngcontent-%COMP%]{margin:.25rem 0 0;font-size:.8125rem;line-height:1.4;color:var(--p-text-muted-color)}.settings-plugins__row-reason[_ngcontent-%COMP%]{font-size:.8125rem;color:var(--p-message-error-color);font-family:var(--p-monospace-font-family, monospace);margin-top:.25rem}.settings-plugins__sublist[_ngcontent-%COMP%]{list-style:none;margin:0;padding:.5rem 0 0 1.75rem;display:flex;flex-direction:column;gap:.25rem;border-top:1px dashed var(--p-content-border-color)}.settings-plugins__subrow[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.375rem .5rem;border-radius:var(--p-border-radius)}.settings-plugins__subrow.is-clickable[_ngcontent-%COMP%]{cursor:pointer;transition:background .12s ease}.settings-plugins__subrow.is-clickable[_ngcontent-%COMP%]:hover{background:var(--p-content-hover-background)}.settings-plugins__subrow-text[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.125rem;flex:1;min-width:0}.settings-plugins__subrow-headline[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:baseline;gap:.5rem .75rem}.settings-plugins__subrow-id[_ngcontent-%COMP%]{font-family:var(--p-monospace-font-family, monospace);font-size:.875rem}.settings-plugins__subrow-description[_ngcontent-%COMP%]{margin:.25rem 0 0;font-size:.75rem;line-height:1.4;color:var(--p-text-muted-color)}.settings-plugins__dirty-dot[_ngcontent-%COMP%]{display:inline-block;width:.5rem;height:.5rem;border-radius:50%;background:var(--p-warn-color, #d97706);flex-shrink:0}.settings-plugins__row-hint[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:.5rem;margin:.25rem 0 0;font-size:.75rem;line-height:1.4;color:var(--p-warn-color, #d97706)}.settings-plugins__row-hint[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{margin-top:.125rem}.settings-plugins__footer[_ngcontent-%COMP%]{display:flex;justify-content:flex-end;align-items:center;gap:.5rem;padding:.75rem 1.5rem;border-top:1px solid var(--p-content-border-color);background:var(--p-content-background)}.settings-plugins__footer-hint[_ngcontent-%COMP%]{font-style:italic;font-size:.75rem;line-height:1.4;color:var(--p-warn-color);margin-right:auto}"],changeDetection:0})};function we(t,n){return`${t}/${n}`}function It(t){let n=new Map;for(let e of t)if(!ke(e.status)){if(e.granularity==="bundle"){n.set(e.id,e.status==="enabled");continue}if(e.granularity==="extension"&&e.extensions)for(let i of e.extensions)n.set(we(e.id,i.id),i.enabled)}return n}function Ot(t){let n=t.target;return!n||typeof n.closest!="function"?!1:n.closest('label, button, input, [role="switch"], p-toggleswitch')!==null}function Rn(t,n){if(Bn(t,n))return[t];if(t.granularity!=="extension"||!t.extensions)return[];let e=t.extensions.filter(i=>$n(i,n));return e.length===0?[]:[H($({},t),{extensions:e})]}function Ln(t,n){if(t.granularity==="bundle")return t.kinds.some(i=>i.toLowerCase()===n)?[t]:[];if(!t.extensions)return[];let e=t.extensions.filter(i=>i.kind.toLowerCase()===n);return e.length===0?[]:[H($({},t),{extensions:e})]}function Vn(t){if(t.locked)return[];if(t.granularity!=="extension"||!t.extensions)return[t];let n=t.extensions.filter(e=>!e.locked);return n.length===0?[]:[H($({},t),{extensions:n})]}function zn(t){return t.slice().sort((e,i)=>{let r=ye.indexOf(e.id),c=ye.indexOf(i.id),C=r>=0?r:ye.length,N=c>=0?c:ye.length;return C!==N?C-N:e.id.localeCompare(i.id)}).map(e=>{if(e.granularity!=="extension"||!e.extensions)return e;let i=e.extensions.slice().sort((r,c)=>{let C=Ce.indexOf(r.kind.toLowerCase()),N=Ce.indexOf(c.kind.toLowerCase()),Fe=C>=0?C:Ce.length,Ne=N>=0?N:Ce.length;return Fe!==Ne?Fe-Ne:r.id.localeCompare(c.id)});return H($({},e),{extensions:i})})}function Bn(t,n){return!!(t.id.toLowerCase().includes(n)||t.description&&t.description.toLowerCase().includes(n))}function $n(t,n){return!!(t.id.toLowerCase().includes(n)||t.description&&t.description.toLowerCase().includes(n))}function ke(t){return t==="incompatible-spec"||t==="invalid-manifest"||t==="load-error"||t==="id-collision"}function Dt(t){return t instanceof R||t instanceof Error?t.message:String(t)}function Hn(){let t=null;try{t=localStorage.getItem(Oe)}catch{return new Set}if(!t)return new Set;let n;try{n=JSON.parse(t)}catch{return new Set}if(!Array.isArray(n))return new Set;let e=new Set;for(let i of n)typeof i=="string"&&i.length>0&&e.add(i);return e}function Gn(t){try{if(t.size===0){localStorage.removeItem(Oe);return}localStorage.setItem(Oe,JSON.stringify([...t]))}catch{}}function Kn(){let t=null;try{t=localStorage.getItem(De)}catch{return"all"}return t&&Ft.includes(t)?t:"all"}function Un(t){try{if(t==="all"){localStorage.removeItem(De);return}localStorage.setItem(De,t)}catch{}}function Qn(t,n){if(t&1&&(l(0,"p-message",3),s(1),a()),t&2){let e=d();f("closable",!1),o(),j(" ",e.texts.project.loadErrorPrefix," ",n," ")}}function Wn(t,n){if(t&1&&(l(0,"p-message",4),s(1),a()),t&2){let e=d();f("closable",!1),o(),j(" ",e.texts.project.saveErrorPrefix," ",n," ")}}function Xn(t,n){if(t&1){let e=T();l(0,"li",12)(1,"span",19),s(2),a(),l(3,"p-button",20),w("onClick",function(){let r=S(e).$implicit,c=d();return E(c.onExtraRootRemove(r))}),a()()}if(t&2){let e=n.$implicit,i=d();o(2),m(e),o(),f("label",i.texts.project.removePathLabel)("outlined",!0)("disabled",i.isPending("scan.extraRoots")),u("data-testid","settings-project-extra-roots-remove")}}function Yn(t,n){if(t&1){let e=T();l(0,"li",12)(1,"span",19),s(2),a(),l(3,"p-button",20),w("onClick",function(){let r=S(e).$implicit,c=d();return E(c.onReferencePathRemove(r))}),a()()}if(t&2){let e=n.$implicit,i=d();o(2),m(e),o(),f("label",i.texts.project.removePathLabel)("outlined",!0)("disabled",i.isPending("scan.referencePaths")),u("data-testid","settings-project-reference-paths-remove")}}var Pe=class t{dataSource=k(z);confirmation=k(Q);visible=D.required();texts=y;loading=x(!1);loadError=x(null);saveError=x(null);preferences=x(null);pending=x(new Set);newExtraRoot=x("");newReferencePath=x("");includeHomeValue=v(()=>this.preferences()?.scan.includeHome??!1);extraRoots=v(()=>this.preferences()?.scan.extraRoots??[]);referencePaths=v(()=>this.preferences()?.scan.referencePaths??[]);constructor(){F(()=>{this.visible()&&this.refresh()})}isPending(n){return this.pending().has(n)}onIncludeHomeToggle(n){this.runPatch("scan.includeHome",{scan:{includeHome:n}})}onExtraRootAdd(){let n=this.newExtraRoot().trim();if(n.length===0)return;let e=[...this.extraRoots(),n];this.runPatch("scan.extraRoots",{scan:{extraRoots:e}}).then(()=>{this.newExtraRoot.set("")})}onExtraRootRemove(n){let e=this.extraRoots().filter(i=>i!==n);this.runPatch("scan.extraRoots",{scan:{extraRoots:[...e]}})}onReferencePathAdd(){let n=this.newReferencePath().trim();if(n.length===0)return;let e=[...this.referencePaths(),n];this.runPatch("scan.referencePaths",{scan:{referencePaths:e}}).then(()=>{this.newReferencePath.set("")})}onReferencePathRemove(n){let e=this.referencePaths().filter(i=>i!==n);this.runPatch("scan.referencePaths",{scan:{referencePaths:[...e]}})}async refresh(){this.loading.set(!0),this.loadError.set(null),this.saveError.set(null);try{let n=await this.dataSource.getProjectPreferences();this.preferences.set(n)}catch(n){this.loadError.set(je(n)),this.preferences.set(null)}finally{this.loading.set(!1)}}async runPatch(n,e){if(this.pending().has(n))return;let i=new Set(this.pending());i.add(n),this.pending.set(i),this.saveError.set(null);try{let r=await this.dataSource.setProjectPreferences(e);this.preferences.set(r)}catch(r){if(r instanceof R&&r.code==="confirm-required"){let c=r.paths??[];this.confirmDialog(c,async()=>{try{let C=await this.dataSource.setProjectPreferences(H($({},e),{confirm:!0}));this.preferences.set(C)}catch(C){this.saveError.set(je(C))}})}else this.saveError.set(je(r))}finally{let r=new Set(this.pending());r.delete(n),this.pending.set(r)}}confirmDialog(n,e){this.confirmation.confirm({header:y.project.confirmDialogHeader,message:y.project.confirmDialogIntro+`
|
|
122
|
-
`+n.map(i=>`\u2022 ${i}`).join(`
|
|
123
|
-
`),acceptLabel:y.project.confirmDialogAccept,rejectLabel:y.project.confirmDialogReject,acceptButtonProps:{severity:"primary"},rejectButtonProps:{severity:"secondary"},accept:()=>{e()}})}static \u0275fac=function(e){return new(e||t)};static \u0275cmp=M({type:t,selectors:[["sm-settings-project"]],inputs:{visible:[1,"visible"]},features:[q([Q])],decls:39,vars:23,consts:[["data-testid","settings-project",1,"settings-project"],["id","settings-project-heading",1,"settings-project__title"],[1,"settings-project__intro"],["severity","error","data-testid","settings-project-load-error",3,"closable"],["severity","error","data-testid","settings-project-save-error",3,"closable"],["data-testid","settings-project-include-home-row",1,"settings-project__row"],[1,"settings-project__row-text"],[1,"settings-project__row-label"],[1,"settings-project__row-description"],["data-testid","settings-project-include-home-toggle",3,"ngModelChange","ngModel","disabled"],["data-testid","settings-project-extra-roots-row",1,"settings-project__list-row"],["role","list",1,"settings-project__path-list"],[1,"settings-project__path-item"],[1,"settings-project__add-row"],["type","text","pInputText","","data-testid","settings-project-extra-roots-input",3,"ngModelChange","ngModel","placeholder","disabled"],["severity","primary","size","small","data-testid","settings-project-extra-roots-add",3,"onClick","label","disabled"],["data-testid","settings-project-reference-paths-row",1,"settings-project__list-row"],["type","text","pInputText","","data-testid","settings-project-reference-paths-input",3,"ngModelChange","ngModel","placeholder","disabled"],["severity","primary","size","small","data-testid","settings-project-reference-paths-add",3,"onClick","label","disabled"],[1,"settings-project__path-text"],["severity","secondary","size","small",3,"onClick","label","outlined","disabled"]],template:function(e,i){if(e&1&&(l(0,"section",0)(1,"h2",1),s(2),a(),l(3,"p",2),s(4),a(),h(5,Qn,2,3,"p-message",3),h(6,Wn,2,3,"p-message",4),l(7,"div",5)(8,"div",6)(9,"div",7),s(10),a(),l(11,"div",8),s(12),a()(),l(13,"p-toggleswitch",9),w("ngModelChange",function(c){return i.onIncludeHomeToggle(c)}),a()(),l(14,"div",10)(15,"div",6)(16,"div",7),s(17),a(),l(18,"div",8),s(19),a()(),l(20,"ul",11),I(21,Xn,4,5,"li",12,G),a(),l(23,"div",13)(24,"input",14),w("ngModelChange",function(c){return i.newExtraRoot.set(c)}),a(),l(25,"p-button",15),w("onClick",function(){return i.onExtraRootAdd()}),a()()(),l(26,"div",16)(27,"div",6)(28,"div",7),s(29),a(),l(30,"div",8),s(31),a()(),l(32,"ul",11),I(33,Yn,4,5,"li",12,G),a(),l(35,"div",13)(36,"input",17),w("ngModelChange",function(c){return i.newReferencePath.set(c)}),a(),l(37,"p-button",18),w("onClick",function(){return i.onReferencePathAdd()}),a()()(),P(38,"p-confirmdialog"),a()),e&2){let r,c;u("aria-labelledby","settings-project-heading"),o(2),_(" ",i.texts.project.heading," "),o(2),m(i.texts.project.intro),o(),b((r=i.loadError())?5:-1,r),o(),b((c=i.saveError())?6:-1,c),o(4),m(i.texts.project.includeHomeLabel),o(2),_(" ",i.texts.project.includeHomeDescription," "),o(),f("ngModel",i.includeHomeValue())("disabled",i.loading()||i.isPending("scan.includeHome")||i.preferences()===null),o(4),m(i.texts.project.extraRootsLabel),o(2),_(" ",i.texts.project.extraRootsDescription," "),o(2),O(i.extraRoots()),o(3),f("ngModel",i.newExtraRoot())("placeholder",i.texts.project.extraRootsPlaceholder)("disabled",i.isPending("scan.extraRoots")),o(),f("label",i.texts.project.addPathLabel)("disabled",i.isPending("scan.extraRoots")||i.newExtraRoot().trim().length===0),o(4),m(i.texts.project.referencePathsLabel),o(2),_(" ",i.texts.project.referencePathsDescription," "),o(2),O(i.referencePaths()),o(3),f("ngModel",i.newReferencePath())("placeholder",i.texts.project.referencePathsPlaceholder)("disabled",i.isPending("scan.referencePaths")),o(),f("label",i.texts.project.addPathLabel)("disabled",i.isPending("scan.referencePaths")||i.newReferencePath().trim().length===0)}},dependencies:[J,ue,X,Y,W,ge,me,pe,he,_e,ee,Z,ne,B],styles:["[_nghost-%COMP%]{display:block;height:100%;overflow-y:auto;padding:1.25rem 1.5rem}.settings-project__title[_ngcontent-%COMP%]{margin:0 0 .25rem;font-size:1.05rem;font-weight:600;color:var(--p-text-color)}.settings-project__intro[_ngcontent-%COMP%]{margin:0 0 1.25rem;font-size:.85rem;color:var(--sm-text-muted);line-height:1.5}.settings-project__row[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.85rem 1rem;border:1px solid var(--p-content-border-color);border-radius:.5rem;background:var(--p-content-background);margin-bottom:1rem}.settings-project__row[_ngcontent-%COMP%] > p-toggleswitch[_ngcontent-%COMP%]{flex:0 0 auto;align-self:center}.settings-project__list-row[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.75rem;padding:.85rem 1rem;border:1px solid var(--p-content-border-color);border-radius:.5rem;background:var(--p-content-background);margin-bottom:1rem}.settings-project__row-text[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.25rem;flex:1 1 auto;min-width:0}.settings-project__row-label[_ngcontent-%COMP%]{font-size:.9rem;font-weight:600;color:var(--p-text-color)}.settings-project__row-description[_ngcontent-%COMP%]{font-size:.8rem;color:var(--sm-text-muted);line-height:1.45}.settings-project__path-list[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.4rem}.settings-project__path-item[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.4rem .6rem;border-radius:.35rem;background:var(--p-content-hover-background)}.settings-project__path-text[_ngcontent-%COMP%]{font-family:var(--p-font-family-mono, monospace);font-size:.8rem;word-break:break-all;flex:1 1 auto}.settings-project__add-row[_ngcontent-%COMP%]{display:flex;gap:.5rem;align-items:center}.settings-project__add-row[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{flex:1 1 auto;font-family:var(--p-font-family-mono, monospace);font-size:.8rem}"],changeDetection:0})};function je(t){return t instanceof R||t instanceof Error?t.message:String(t)}var Jn=()=>({width:"1024px",height:"720px",maxWidth:"92vw",maxHeight:"90vh"}),Zn=(t,n)=>n.id;function ei(t,n){t&1&&(l(0,"span",9),s(1,"soon"),a())}function ti(t,n){if(t&1){let e=T();l(0,"li")(1,"button",7),w("click",function(){let r=S(e).$implicit,c=d();return E(c.selectSection(r.id))}),l(2,"span",8),s(3),a(),h(4,ei,2,0,"span",9),a()()}if(t&2){let e=n.$implicit,i=d();o(),V("is-active",i.activeSection()===e.id)("is-disabled",e.status==="coming-soon"),u("aria-current",i.activeSection()===e.id?"page":null)("data-testid","settings-nav-"+e.id),o(2),m(e.label),o(),b(e.status==="coming-soon"?4:-1)}}function ni(t,n){if(t&1){let e=T();l(0,"sm-settings-plugins",10),w("applied",function(){S(e);let r=d();return E(r.onPluginsApplied())}),a()}if(t&2){let e=d();f("visible",e.pluginsVisible())}}function ii(t,n){if(t&1&&P(0,"sm-settings-general",5),t&2){let e=d();f("visible",e.generalVisible())}}function oi(t,n){if(t&1&&P(0,"sm-settings-project",5),t&2){let e=d();f("visible",e.projectVisible())}}function ri(t,n){if(t&1&&P(0,"sm-settings-about",5),t&2){let e=d();f("visible",e.aboutVisible())}}function ai(t,n){t&1&&P(0,"sm-settings-changelog")}function si(t,n){if(t&1&&P(0,"sm-settings-coming-soon",6),t&2){let e=d();f("sectionId",e.activeDescriptor().id)("sectionLabel",e.activeDescriptor().label)}}var li=[{id:"general",label:y.sections.general,status:"available"},{id:"project",label:y.sections.project,status:"available"},{id:"plugins",label:y.sections.plugins,status:"available"},{id:"changelog",label:y.sections.changelog,status:"available"},{id:"about",label:y.sections.about,status:"available"}],Nt=class t{visible=D.required();visibleChange=de();confirmation=k(Q);pluginsPanel=et(ie);texts=y;sections=li;activeSection=x("plugins");pluginsVisible=v(()=>this.visible()&&this.activeSection()==="plugins");generalVisible=v(()=>this.visible()&&this.activeSection()==="general");projectVisible=v(()=>this.visible()&&this.activeSection()==="project");aboutVisible=v(()=>this.visible()&&this.activeSection()==="about");activeDescriptor=v(()=>this.sections.find(n=>n.id===this.activeSection())??this.sections[0]);onVisibleChange(n){if(n){this.visibleChange.emit(!0);return}let e=this.pluginsPanel(),i=e?.dirtyIds().size??0;if(i===0){this.visibleChange.emit(!1);return}this.confirmation.confirm({header:this.texts.confirmCloseTitle,message:this.texts.confirmCloseBody(i),acceptLabel:this.texts.applyAndClose,rejectLabel:this.texts.discardChanges,acceptButtonProps:{severity:"primary"},rejectButtonProps:{severity:"secondary"},accept:()=>{e?.applyChanges()},reject:()=>{e?.discardChanges(),this.visibleChange.emit(!1)}})}selectSection(n){this.activeSection.set(n)}onPluginsApplied(){this.visibleChange.emit(!1)}static \u0275fac=function(e){return new(e||t)};static \u0275cmp=M({type:t,selectors:[["sm-settings-modal"]],viewQuery:function(e,i){e&1&&Xe(i.pluginsPanel,ie,5),e&2&&Ye()},inputs:{visible:[1,"visible"]},outputs:{visibleChange:"visibleChange"},features:[q([Q])],decls:14,vars:13,consts:[["contentStyleClass","settings-modal__content","data-testid","settings-modal",3,"visibleChange","visible","modal","draggable","resizable","closable","closeOnEscape","dismissableMask","header"],[1,"settings-modal__layout"],["data-testid","settings-modal-sidebar",1,"settings-modal__sidebar"],["role","list",1,"settings-modal__sidebar-list"],["data-testid","settings-modal-main",1,"settings-modal__main"],[3,"visible"],[3,"sectionId","sectionLabel"],["type","button",1,"settings-modal__sidebar-item",3,"click"],[1,"settings-modal__sidebar-label"],[1,"settings-modal__sidebar-badge"],[3,"applied","visible"]],template:function(e,i){if(e&1&&(l(0,"p-dialog",0),w("visibleChange",function(c){return i.onVisibleChange(c)}),l(1,"div",1)(2,"nav",2)(3,"ul",3),I(4,ti,5,8,"li",null,Zn),a()(),l(6,"div",4),h(7,ni,1,1,"sm-settings-plugins",5)(8,ii,1,1,"sm-settings-general",5)(9,oi,1,1,"sm-settings-project",5)(10,ri,1,1,"sm-settings-about",5)(11,ai,1,0,"sm-settings-changelog")(12,si,1,2,"sm-settings-coming-soon",6),a()(),P(13,"p-confirmdialog"),a()),e&2){let r;le(Je(12,Jn)),f("visible",i.visible())("modal",!0)("draggable",!1)("resizable",!1)("closable",!0)("closeOnEscape",!0)("dismissableMask",!0)("header",i.texts.modalTitle),o(2),u("aria-label",i.texts.modalTitle),o(2),O(i.sections),o(3),b((r=i.activeSection())==="plugins"?7:r==="general"?8:r==="project"?9:r==="about"?10:r==="changelog"?11:12)}},dependencies:[W,me,pe,ct,dt,be,fe,ve,ie,Pe,xe],styles:["[_nghost-%COMP%]{display:contents}[_nghost-%COMP%] .settings-modal__content{padding:0;height:100%;display:flex;flex-direction:column;overflow:hidden}.settings-modal__layout[_ngcontent-%COMP%]{flex:1;display:grid;grid-template-columns:200px 1fr;min-height:0}.settings-modal__sidebar[_ngcontent-%COMP%]{border-right:1px solid var(--p-content-border-color);background:var(--p-content-background);padding:.5rem;overflow-y:auto}.settings-modal__sidebar-list[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.125rem}.settings-modal__sidebar-item[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;gap:.5rem;width:100%;padding:.5rem .75rem;border:none;border-radius:var(--p-border-radius);background:transparent;color:var(--p-text-color);font:inherit;text-align:left;cursor:pointer;transition:background .15s ease,color .15s ease}.settings-modal__sidebar-item[_ngcontent-%COMP%]:hover{background:var(--p-content-hover-background)}.settings-modal__sidebar-item.is-active[_ngcontent-%COMP%]{background:var(--p-highlight-background);color:var(--p-highlight-color)}.settings-modal__sidebar-item.is-disabled[_ngcontent-%COMP%]{color:var(--p-text-muted-color)}.settings-modal__sidebar-item.is-disabled[_ngcontent-%COMP%]:hover{background:var(--p-content-hover-background)}.settings-modal__sidebar-label[_ngcontent-%COMP%]{flex:1;font-size:.9rem;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.settings-modal__sidebar-badge[_ngcontent-%COMP%]{font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;padding:.125rem .5rem;border-radius:999px;background:color-mix(in oklab,var(--p-text-color) 14%,transparent);color:var(--p-text-color);border:1px solid color-mix(in oklab,var(--p-text-color) 24%,transparent)}.settings-modal__sidebar-item.is-active[_ngcontent-%COMP%] .settings-modal__sidebar-badge[_ngcontent-%COMP%]{background:color-mix(in oklab,var(--p-highlight-color) 28%,transparent);color:var(--p-highlight-color);border-color:color-mix(in oklab,var(--p-highlight-color) 40%,transparent)}.settings-modal__main[_ngcontent-%COMP%]{min-width:0;min-height:0;overflow:hidden;display:flex;flex-direction:column}.settings-modal__main[_ngcontent-%COMP%] > *[_ngcontent-%COMP%]{flex:1;min-height:0}"],changeDetection:0})};export{Nt as SettingsModal};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{J as s,M as i,O as r,Sb as n,W as l,ba as o,ca as d,gd as c,hd as u,id as g}from"./chunk-25AWRVIC.js";var T={triggerLabel:"Settings",triggerTooltip:"Settings",modalTitle:"Settings",closeLabel:"Close",sections:{plugins:"Plugins",general:"General",project:"Project",changelog:"Changelog",about:"About"},comingSoonTitle:"Coming soon",comingSoonBody:t=>`${t} settings will land in a future release. The section is reserved here so you know where to look when it ships.`,general:{heading:"General",intro:"User-scope preferences. These settings live in your home directory (`~/.skill-map/settings.json`) and follow you across projects.",loadErrorPrefix:"Could not load preferences:",saveErrorPrefix:"Could not save preferences:",toggles:{"updateCheck.enabled":{label:"Check for updates",description:"Check npm for newer @skill-map/cli releases."}}},project:{heading:"Project",intro:"These settings apply only to this project and are saved in its `.skill-map/settings.json` file.",loadErrorPrefix:"Could not load project settings:",saveErrorPrefix:"Could not save project settings:",includeHomeLabel:"Include your HOME folders",includeHomeDescription:"Also scan typical AI-assistant folders in your HOME (like ~/.claude, ~/.gemini, ~/.agents) alongside this project. Off by default \u2014 turning this on lets the scan read those folders.",extraRootsLabel:"Extra folders to scan",extraRootsDescription:"Additional folders included in the scan. Their files show up in the graph next to this project. Use ~/ for paths inside your home folder.",extraRootsPlaceholder:"~/notes, /path/to/another/folder",referencePathsLabel:"Folders for link validation",referencePathsDescription:'Folders checked only to validate links. Files here are not indexed and do not appear in the graph \u2014 they just stop "broken link" warnings when a link points to a real file outside this project.',referencePathsPlaceholder:"~/Documents/research, ~/.claude",addPathLabel:"Add path",removePathLabel:"Remove",confirmDialogHeader:"Allow access to folders outside this project?",confirmDialogIntro:"This change lets the scan read files in:",confirmDialogAccept:"Allow access",confirmDialogReject:"Cancel"},changelogHeading:"Changelog",changelogIntro:"What's new in skill-map. Each entry covers a release of @skill-map/cli (the CLI + bundled UI) and lists the user-facing changes plus the workspace(s) each one affects.",changelogEmpty:"No release notes yet. Future releases will populate this list automatically from the changesets shipped in each PR.",changelogInternalRelease:"Internal release \u2014 focus on stability, infra, and refactors. No user-facing changes this time.",changelogAffectedPackages:"Affected packages",aboutHeading:"About",aboutIntro:"Version information for the running CLI / server.",aboutCliLabel:"skill-map CLI",aboutSpecLabel:"Spec version",aboutSchemaLabel:"Schema version",aboutScopeLabel:"Scope",aboutFolderLabel:"Project folder",aboutDbLabel:"Project DB",aboutHomeLabel:"Skill-map home",aboutDbValue:(t,e)=>t==="present"?e:`${t} \xB7 ${e}`,aboutLoading:"Loading\u2026",aboutUnknown:"\u2014",aboutErrorPrefix:"Could not read health endpoint:",aboutLinksHeading:"Links",aboutWebsiteLabel:"Website",aboutGithubLabel:"GitHub",aboutWebsiteUrl:"https://skill-map.dev/",aboutGithubUrl:"https://github.com/crystian/skill-map",aboutStarHeading:"Enjoying skill-map?",aboutStarBody:"If it's useful to you, drop us a star on GitHub \u2014 it helps a lot and keeps the project alive.",aboutStarCta:"Star on GitHub",aboutStarA11y:"Open the skill-map repository on GitHub to give it a star",pluginsHeading:"Plugins",pluginsIntro:"Enable or disable installed plugins.",pluginsSearchPlaceholder:"Filter by name\u2026",pluginsSearchA11y:"Filter plugins by name",pluginsSearchEmpty:t=>`No plugins match "${t}".`,pluginsKindFilterAll:"All",pluginsKindFilterA11y:"Filter plugins by kind",pluginsKindFilterOptionA11y:(t,e)=>e?`Show only ${t} extensions`:"Show all kinds",unsavedChangesMessage:t=>t===1?'1 unsaved change. Click "Apply" to persist it.':`${t} unsaved changes. Click "Apply" to persist them.`,startsAsDisabledRowHint:"This plugin started disabled and is not loaded in memory. Restart `sm serve` for the change to take effect.",startsAsDisabledFooterHint:"Some plugins were disabled when the server started \u2014 consider restarting `sm serve` so they take effect.",discardChanges:"Discard",applyAndClose:"Apply",discardA11y:"Discard pending plugin changes",applyA11y:"Apply pending plugin changes and refresh the graph",confirmCloseTitle:"Apply pending changes?",confirmCloseBody:t=>t===1?"You have 1 unsaved change.":`You have ${t} unsaved changes.`,keepEditing:"Keep editing",sourceBuiltIn:"Built-in",sourceProject:"Project",sourceGlobal:"Global",enabledLabel:"Enabled",disabledLabel:"Disabled",lockedLabel:"Locked",lockedTooltip:"Locked by the host \u2014 cannot be toggled.",expandLabel:"Show extensions",collapseLabel:"Hide extensions",statusFailure:{"incompatible-spec":"Incompatible spec version","invalid-manifest":"Invalid manifest","load-error":"Failed to load","id-collision":"Plugin id collision"},loading:"Loading plugins\u2026",empty:"No plugins installed.",errorPrefix:"Could not load plugins:",toggleErrorPrefix:"Toggle failed:",a11y:{triggerLabel:"Open settings",pluginToggle:(t,e)=>e?`Enable plugin ${t}`:`Disable plugin ${t}`,extensionToggle:(t,e)=>e?`Enable ${t}`:`Disable ${t}`}};var E=new i("SKILL_MAP_MODE");function p(){return typeof document>"u"?"live":document.querySelector('meta[name="skill-map-mode"]')?.content==="demo"?"demo":"live"}var h=class t{dataSource=r(c);loader=r(g);scanning=o(!1);scanError=o(null);async run(){if(!this.scanning()){this.scanning.set(!0),this.scanError.set(null);try{await this.dataSource.runScan(),await this.loader.load()}catch(e){let a=e instanceof u||e instanceof Error?e.message:String(e);this.scanError.set(a),console.warn(`scan-trigger failed: ${a}`)}finally{this.scanning.set(!1)}}}static \u0275fac=function(a){return new(a||t)};static \u0275prov=s({token:t,factory:t.\u0275fac,providedIn:"root"})};var f=class t{status=o(null);isOutdated=n(()=>this.status()?.isOutdated===!0);latest=n(()=>this.status()?.latest??null);current=n(()=>this.status()?.current??null);async load(){if(p()!=="demo")try{let e=await globalThis.fetch("/api/update-status");if(!e.ok){console.warn(`UpdateCheckService: /api/update-status returned HTTP ${e.status}`);return}let a=await e.json();this.status.set(a)}catch(e){let a=e instanceof Error?e.message:String(e);console.warn(`UpdateCheckService: fetch failed (${a})`)}}static \u0275fac=function(a){return new(a||t)};static \u0275prov=s({token:t,factory:t.\u0275fac,providedIn:"root"})};var b="skill-map.ui.theme",S="app-dark",L="dark",y="(prefers-color-scheme: dark)",v=class t{doc=r(l);mode=o(this.readInitial());systemPrefersDark=o(this.readSystemPref());resolved=n(()=>{let e=this.mode();return e==="auto"?this.systemPrefersDark()?"dark":"light":e});constructor(){this.subscribeToSystemPref(),d(()=>{let e=this.resolved()==="dark",a=this.doc.documentElement;a.classList.toggle(S,e),a.classList.toggle(L,e);try{this.doc.defaultView?.localStorage.setItem(b,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(b);if(e==="auto"||e==="light"||e==="dark")return e}catch{}return"auto"}readSystemPref(){try{return this.doc.defaultView?.matchMedia(y).matches??!1}catch{return!1}}subscribeToSystemPref(){let e=this.doc.defaultView;if(!e||typeof e.matchMedia!="function")return;e.matchMedia(y).addEventListener("change",k=>{this.systemPrefersDark.set(k.matches)})}static \u0275fac=function(a){return new(a||t)};static \u0275prov=s({token:t,factory:t.\u0275fac,providedIn:"root"})};export{E as a,p as b,T as c,h as d,f as e,v as f};
|