@skill-map/cli 0.38.0 → 0.40.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-master/references/tour-authoring.md +0 -4
- package/dist/cli/tutorial/sm-tutorial/SKILL.md +279 -26
- package/dist/cli.js +1779 -1512
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +30 -14
- package/dist/index.js.map +1 -1
- package/dist/kernel/index.d.ts +57 -47
- package/dist/kernel/index.js +30 -14
- package/dist/kernel/index.js.map +1 -1
- package/dist/ui/{chunk-AAR3Y55J.js → chunk-2W6BCESO.js} +30 -29
- package/dist/ui/{chunk-NTM2J2WO.js → chunk-3FPS5OIY.js} +1 -1
- package/dist/ui/chunk-4KQGLZV2.js +123 -0
- package/dist/ui/chunk-ASCTZSBZ.js +107 -0
- package/dist/ui/chunk-GSTYLDCL.js +135 -0
- package/dist/ui/chunk-MHEKCBIR.js +317 -0
- package/dist/ui/chunk-PFA2CVPN.js +61 -0
- package/dist/ui/chunk-PURF7B6R.js +411 -0
- package/dist/ui/chunk-UFCOGNZX.js +1 -0
- package/dist/ui/chunk-WQ42JTZB.js +90 -0
- package/dist/ui/chunk-XEWWXGNE.js +1 -0
- package/dist/ui/chunk-YXFKPYK3.js +965 -0
- package/dist/ui/index.html +1 -1
- package/dist/ui/main-WLCA4YLM.js +3 -0
- package/package.json +2 -2
- package/dist/ui/chunk-47MG5XH2.js +0 -317
- package/dist/ui/chunk-4CDTW64C.js +0 -500
- package/dist/ui/chunk-4XEJUDPL.js +0 -123
- package/dist/ui/chunk-5AZ5S6JB.js +0 -1
- package/dist/ui/chunk-G5CKBDBB.js +0 -107
- package/dist/ui/chunk-KKOZFBXQ.js +0 -135
- package/dist/ui/chunk-O5N7UH37.js +0 -965
- package/dist/ui/chunk-QZM2G474.js +0 -61
- package/dist/ui/chunk-Z4LANJFK.js +0 -1
- package/dist/ui/main-EO5QNLE4.js +0 -2
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
import{b as Vt,c as P,d as Rt,e as Oe}from"./chunk-5AZ5S6JB.js";import{a as kt,b as wt,c as Se,d as Ee,e as Ot}from"./chunk-NTM2J2WO.js";import{a as Me,b as Ie,c as jt,d as Dt,e as Ft,f as At,g as Nt,h as Lt,i as de,j as ce}from"./chunk-4CDTW64C.js";import{e as Ct,f as Te,h as ae,i as se,j as Pt,k as St,l as Et,m as le,o as Tt,p as Mt,q as It}from"./chunk-KKOZFBXQ.js";import{$ as it,Aa as st,Ba as te,Bc as oe,Hb as ie,I as Je,Ic as we,J as ve,Jb as ut,Jc as Ce,K as Ze,Ka as b,Lc as bt,M as et,Na as h,O as C,Oa as _,Oc as vt,Pa as lt,Qa as Y,Qb as mt,Ra as I,S as tt,Sa as O,T as S,Ta as p,Tb as y,U as E,Ua as s,Uc as xt,Va as a,Vc as fe,Wa as M,Wb as ke,Wc as yt,Xa as v,Xb as R,Ya as x,Z as nt,Za as ne,ab as dt,bd as Pe,cc as $e,cd as re,da as m,db as j,dc as ht,ea as V,eb as J,fb as w,ga as ze,hb as l,id as U,jd as G,ka as ot,kb as ct,la as he,lb as gt,mb as xe,nb as ye,oa as o,oc as _t,pc as ft,sb as Ke,tb as K,ub as pt,vb as _e,wa as N,wb as d,xa as rt,xb as u,yb as f,za as at,zb as D}from"./chunk-O5N7UH37.js";import"./chunk-3SI3TVER.js";import{a as H,b as Q}from"./chunk-VB56BUGO.js";function gn(t,n){if(t&1&&(v(0,"p",6),d(1),x()),t&2){let e=l();o(),D(" ",e.texts.aboutErrorPrefix," ",e.loadError()," ")}}var je=class t{dataSource=C(U);updateCheck=C(Vt);theme=C(Oe);visible=R.required();texts=P;health=m(null);loadError=m(null);markSrc=y(()=>this.theme.resolved()==="dark"?"skill-map-mark-light.svg":"skill-map-mark-dark.svg");cliVersion=y(()=>this.updateCheck.current()??this.health()?.implVersion??this.texts.aboutUnknown);specVersion=y(()=>this.health()?.specVersion??this.texts.aboutLoading);schemaVersion=y(()=>this.health()?.schemaVersion??this.texts.aboutLoading);cwd=y(()=>this.health()?.cwd??this.texts.aboutLoading);dbDisplay=y(()=>{let n=this.health();return n?this.texts.aboutDbValue(n.db,pn(n.dbPath,n.cwd)):this.texts.aboutLoading});constructor(){V(()=>{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 G||n instanceof Error?n.message:String(n);this.loadError.set(e)}}static \u0275fac=function(e){return new(e||t)};static \u0275cmp=N({type:t,selectors:[["sm-settings-about"]],inputs:{visible:[1,"visible"]},decls:57,vars:25,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-cwd",1,"settings-about__value"],["data-testid","settings-about-db",1,"settings-about__value"]],template:function(e,i){e&1&&(v(0,"section",0)(1,"header",1),ne(2,"img",2),v(3,"div",3)(4,"h2",4),d(5),x(),v(6,"p",5),d(7),x()()(),h(8,gn,2,2,"p",6),v(9,"a",7),ne(10,"i",8),v(11,"span",9)(12,"span",10),d(13),x(),v(14,"span",11),d(15),x()(),v(16,"span",12),ne(17,"i",13),d(18),x()(),v(19,"dl",14)(20,"div",15)(21,"dt",16),d(22),x(),v(23,"dd",17)(24,"a",18),d(25),x()()(),v(26,"div",15)(27,"dt",16),d(28),x(),v(29,"dd",17)(30,"a",19),d(31),x()()(),v(32,"div",15)(33,"dt",16),d(34),x(),v(35,"dd",20),d(36),x()(),v(37,"div",15)(38,"dt",16),d(39),x(),v(40,"dd",21),d(41),x()(),v(42,"div",15)(43,"dt",16),d(44),x(),v(45,"dd",22),d(46),x()(),v(47,"div",15)(48,"dt",16),d(49),x(),v(50,"dd",23),d(51),x()(),v(52,"div",15)(53,"dt",16),d(54),x(),v(55,"dd",24),d(56),x()()()()),e&2&&(o(2),J("src",i.markSrc(),he),o(3),f(" ",i.texts.aboutHeading," "),o(2),u(i.texts.aboutIntro),o(),_(i.loadError()?8:-1),o(),J("href",i.texts.aboutGithubUrl,he),b("aria-label",i.texts.aboutStarA11y),o(4),u(i.texts.aboutStarHeading),o(2),u(i.texts.aboutStarBody),o(3),f(" ",i.texts.aboutStarCta," "),o(4),u(i.texts.aboutWebsiteLabel),o(2),J("href",i.texts.aboutWebsiteUrl,he),o(),u(i.texts.aboutWebsiteUrl),o(3),u(i.texts.aboutGithubLabel),o(2),J("href",i.texts.aboutGithubUrl,he),o(),u(i.texts.aboutGithubUrl),o(3),u(i.texts.aboutCliLabel),o(2),f(" ",i.cliVersion()," "),o(3),u(i.texts.aboutSpecLabel),o(2),f(" ",i.specVersion()," "),o(3),u(i.texts.aboutSchemaLabel),o(2),f(" ",i.schemaVersion()," "),o(3),u(i.texts.aboutFolderLabel),o(2),f(" ",i.cwd()," "),o(3),u(i.texts.aboutDbLabel),o(2),f(" ",i.dbDisplay()," "))},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);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:var(--sm-radius-pill);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 pn(t,n){if(!t||!n)return t;let e=n.replace(/[/\\]+$/,"");return t.startsWith(e)?t.slice(e.length).replace(/^[/\\]+/,""):t}var ge=class t{ownerSig=m(null);dirtyCount=y(()=>{let n=this.ownerSig();return n?n.dirtyIds().size:0});register(n){this.ownerSig.set(n)}deregister(n){this.ownerSig()===n&&this.ownerSig.set(null)}async applyChanges(){let n=this.ownerSig();return n?n.applyChanges():{ok:!1}}discardChanges(){this.ownerSig()?.discardChanges()}static \u0275fac=function(e){return new(e||t)};static \u0275prov=ve({token:t,factory:t.\u0275fac,providedIn:"root"})};var Bt={schemaVersion:1,entries:[{version:"0.38.0",date:"2026-05-24",kind:"user-facing",highlights:[{body:"`sm <verb> --json` now also suppresses info banners on stderr, keeping both streams clean for piping into `jq`.",packages:["@skill-map/cli"]}]},{version:"0.37.0",date:"2026-05-23",kind:"user-facing",highlights:[{body:"`sm scan` now warns once when provider markers on disk drifted since `activeProvider` was set (e.g. you added `.codex/` after picking the `claude` lens). Run `sm config set activeProvider <id>` to switch the lens, or ignore the warn and keep going, it never blocks the scan.",packages:["@skill-map/cli","@skill-map/spec"]},{body:"**Clearer CLI errors.** Errors from `sm serve`, `bump`, `db`, `plugins`, `refresh`, `list`, `watch`, `graph`, `hooks`, and `sidecar` now print a `\u2715` headline plus a dim hint on the next line. Fixes a `sm refresh` persist-failure that rendered `{{glyph}}` literally.",packages:["@skill-map/cli"]},{body:"`sm` now detects when the local `.skill-map/` DB was written by an incompatible CLI version: newer minor or different major refuses to open with a clear hint; older same-major prints a one-shot warning and continues. Defensive parse errors include the same hint.",packages:["@skill-map/cli"]},{body:'`sm init --force` now also resets the DB (was overwriting only the config files). Solves the "Failed to read scan rows" crash on the first auto-scan when re-initialising a project that already had a DB from an older CLI version.',packages:["@skill-map/cli"]},{body:"**Two scan-time bugs fixed.** Resolved `/slash` and `@mention` links now correctly land at confidence `1.0` (were stuck at the emit floor), and the markdown-link extractor no longer flags `[label](path)` shown inside backticks or fenced code blocks as broken references.",packages:["@skill-map/cli"]},{body:"Cross-provider files (e.g. a `.codex/agents/*.toml` while the lens is `claude`) are no longer claimed by the foreign provider. They surface as plain markdown / unclassified instead, matching how the agent itself would see them at runtime.",packages:["@skill-map/cli","@skill-map/spec"]},{body:"Card chips for incoming / outgoing links no longer count self-loops, so a node that links back to itself stops showing inflated 1 in / 1 out. The `core/self-loop` analyzer still surfaces the self-reference as a warning, only the misleading count goes away.",packages:["@skill-map/cli"]},{body:"**CLI + inspector polish.** `sm init` now prompts for the active lens when markers compete; `sm config set activeProvider` rejects unknown ids upfront; error blocks across the CLI gain a `\u2715` glyph + hint; the inspector hides self-loops and paints kinds in their canonical colour.",packages:["@skill-map/cli"]},{body:'**Inspector overhaul.** Links show numeric confidence, a Findings list, per-row issue chips, and per-site "Occurs at" lines. New "External references" section. Self-loops hidden by default. Two new analyzers flag redundant multi-form references and self-loops.',packages:["@skill-map/cli","@skill-map/spec"]},{body:"`sm scan` now warns when two extractors detect overlapping byte ranges. The graph keeps the winner; the issue panel explains which detection lost and why, so a markdown link wrapping an `@`-directive no longer looks like silent disappearing intent.",packages:["@skill-map/cli","@skill-map/spec"]}]},{version:"0.36.0",date:"2026-05-22",kind:"user-facing",highlights:[{body:"**Gemini CLI support retired.** Antigravity CLI projects (Google's May 2026 replacement) scan via the open-standard `.agents/skills/` paths under the existing `agent-skills` lens. Run `sm config set activeProvider antigravity` to flag a project as Antigravity-flavoured.",packages:["@skill-map/cli","@skill-map/spec"]},{body:"**Files whose name shadows a built-in are flagged.** A file like `.claude/commands/help.md` now emits a `warn` (Claude's runtime ignores it for its own `/help`), and incoming `/help` edges resolve to it at confidence `0.1` instead of `1.0`.",packages:["@skill-map/cli","@skill-map/spec"]}]},{version:"0.35.0",date:"2026-05-22",kind:"user-facing",highlights:[{body:"**Invocation links to resolved targets now render at full confidence.** `@reviewer` mentions and `/explore` slash commands that match an existing agent / skill / command in your project show up at confidence `1.0` (previously `0.5` / `0.8`), so the graph no longer dims them.",packages:["@skill-map/cli","@skill-map/spec"]}]},{version:"0.34.1",date:"2026-05-21",kind:"user-facing",highlights:[{body:"**`@handle` and `/command` now resolve outside `.claude/`.** Under the Claude lens, mentions and invokes in `CLAUDE.md`, `notes/*.md`, and any markdown across the project are picked up as Claude edges. Switching lens hides them so the graph mirrors the active runtime.",packages:["@skill-map/cli","@skill-map/spec"]}]},{version:"0.34.0",date:"2026-05-21",kind:"user-facing",highlights:[{body:"First `sm scan` now auto-persists `activeProvider` to `.skill-map/settings.json` when exactly one provider folder is present. Multiple folders \u2192 interactive picker (or exit 2 under `--yes`). Plain markdown projects keep scanning with a soft warning.",packages:["@skill-map/cli"]},{body:'`sm config get activeProvider` now returns the auto-detected lens (or `null`) instead of "Unknown config key" when settings is empty. Scans warn when the active provider\'s plugin bundle is disabled, so the graph difference no longer surprises you.',packages:["@skill-map/cli"]},{body:"`[link](./foo.md)` and `@./foo.md` from the same file now merge into a single graph edge (was two). Edges with multiple sources show the strongest confidence in the UI, not the first detector's value.",packages:["@skill-map/cli"]},{body:"Skill folders no longer count auxiliary `.md` files (README, helpers, nested files) as extra skills, only `<name>/SKILL.md` is a skill. Mixed-case `@foo.md` and `@FOO.MD` now dedup to one link. URL query strings like `?q=/foo` no longer produce phantom `/foo` invocations.",packages:["@skill-map/cli"]},{body:"Switching the active provider now changes which provider-specific edges appear in the graph. Under the Gemini lens, Claude's `@`/`/` directive edges on `.claude/*` no longer pollute the graph; each file shows only the links the active runtime would invoke.",packages:["@skill-map/cli"]},{body:'Bare `@handle` mentions that resolve to a real agent / skill / node now render with full confidence (1.0) instead of 0.5. Broken mentions keep their lower weight, so the graph\'s opacity-by-confidence visibly separates "resolved" from "broken".',packages:["@skill-map/cli"]},{body:"`sm plugins enable` / `sm plugins disable` now take multiple plugins at once, e.g. `sm plugins disable gemini openai agent-skills`. Unknown id rejects the whole batch (no partial writes); repeated ids are deduped; locked plugins in a batch are skipped silently.",packages:["@skill-map/cli","@skill-map/spec"]}]},{version:"0.33.0",date:"2026-05-19",kind:"user-facing",highlights:[{body:"Settings \u2192 Project: new Active provider dropdown switches the runtime lens (Claude / Gemini / Codex / Cursor). Tools matching `mcp__name__*` surface MCP nodes in the graph. Codex `.toml` sub-agents under `.codex/agents/` are classified. Link confidence renders as percent.",packages:["@skill-map/cli","@skill-map/spec"]}]},{version:"0.32.0",date:"2026-05-17",kind:"user-facing",highlights:[{body:"Settings \u2192 Project gains a new **Ignored patterns** section to edit `.skillmapignore` from the UI: add or remove each pattern, the scan refreshes instantly. Comments and blank lines in the file are preserved on save.",packages:["@skill-map/cli"]},{body:"Settings now rejects commas in path inputs and refuses paths that don't exist on disk. Adding / removing a folder logs to the server console and live-reloads the watcher, so new nodes appear in the graph without restarting `sm serve` or clicking Scan.",packages:["@skill-map/cli"]},{body:"We removed `scan.extraFolders`. To extend the scan beyond the project root, pass folders as positional arguments to `sm scan [roots...]`. The `scan.referencePaths` key (validates links against on-disk files without indexing) is unchanged. Existing entries are silently ignored.",packages:["@skill-map/cli","@skill-map/spec"]}]},{version:"0.31.0",date:"2026-05-16",kind:"user-facing",highlights:[{body:'`sm tutorial` now lays the skill at `.claude/skills/<slug>/` (was a single `.md`) so multi-file skills like `sm-master` ship their `references/`. Claude Code auto-discovers it; invoke with its trigger phrase (e.g. "tutorial maestro"), no more `@sm-master.md`.',packages:["@skill-map/cli"]}]},{version:"0.30.0",date:"2026-05-16",kind:"user-facing",highlights:[{body:"When `@foo` or `/foo` fails to resolve and a file `foo.md` exists nearby without `name:` in its frontmatter, broken-ref now suggests adding `name: foo` to that file. The hint appears in `sm check`, `sm show`, and the inspector panel.",packages:["@skill-map/cli"]},{body:"**Cleaner scans on prose with file paths and `@file` refs.** `/Volumes/foo` no longer emits a broken-ref, `@file.md` lands as a `references` link (was `mentions`), and tokens inside code blocks are skipped. Re-run `sm scan` to refresh counts.",packages:["@skill-map/cli"]}]},{version:"0.29.0",date:"2026-05-16",kind:"user-facing",highlights:[{body:"The graph view now lets you pick the layout algorithm (**Balanced**, **Stretched** or **Organic**), direction (top/bottom/left/right) and spacing (compact / normal / spacious) from new buttons in the bottom toolbar. The matching section in Settings \u2192 General was removed.",packages:["@skill-map/cli"]},{body:"**Plugin manifests are smaller.** `plugin.json` drops `id`; every extension declares only `version` + `description` plus kind-specific fields. View contributions move to `ui:`. Provider kinds live under `kinds/<kindName>/`. Run `sm plugins doctor` after upgrading.",packages:["@skill-map/cli","@skill-map/spec","@skill-map/testkit"]},{body:"`.skillmapignore` is now created with mode `0o644` (was `0o600`), so other users on multi-user hosts can read it without `chmod`. Existing files keep their current mode; re-run `sm init --force` if you want the new default.",packages:["@skill-map/cli"]},{body:"**Plugin layout changed.** Extensions now live at `<kind>s/<name>/index.js` (e.g. `extractors/keyword-counter/index.js`); `plugin.json` no longer lists `extensions[]` and requires `granularity`. Run `sm plugins doctor` after migrating, or use `sm plugins create` for new plugins.",packages:["@skill-map/cli","@skill-map/spec","@skill-map/testkit"]}]},{version:"0.28.0",date:"2026-05-15",kind:"user-facing",highlights:[{body:"A new **Matrix** theme is now available in Settings \u2192 General \u2192 Theme. Once enabled it overrides the topbar dark/light toggle; click that toggle to exit Matrix and return to your previous dark/light mode in one step.",packages:["@skill-map/cli"]},{body:"`sm plugins show core` (and the same verb against any user plugin) now groups extensions by kind in pipeline order, **provider, extractor, analyzer, action, formatter, hook**, with each group sorted by id. The JSON output is unchanged.",packages:["@skill-map/cli"]},{body:'The `Update available` banner now leads with a **down arrow** (`\u2B07`) instead of the previous up arrow, reading as "an update is coming in" rather than "upgrade outward".',packages:["@skill-map/cli"]}]},{version:"0.26.2",date:"2026-05-15",kind:"user-facing",highlights:[{body:"`sm plugins show <bundle>/<ext>` now shows the requested extension's own detail (Kind, Version, Stability, Description, Preconditions, Entry) instead of dumping the parent bundle. `--json` returns just that extension. Bare bundle ids (`sm plugins show core`) are unchanged.",packages:["@skill-map/cli"]}]},{version:"0.26.0",date:"2026-05-15",kind:"user-facing",highlights:[{body:"**Bidirectional `.sm` relations no longer double-count.** A relation declared from both sides (e.g. `supersedes` + `supersededBy`) now tallies as `1` in the `linksIn` / `linksOut` chips and the graph. Before, the count was inflated on cold start and dropped on the next save.",packages:["@skill-map/cli"]},{body:"The `.sm` annotation catalog shrinks from 13 to 10 fields. `requires`, `related`, and `conflictsWith` were dropped, their edges all rendered as plain `references` and added no extra meaning. Existing sidecars keep working; the three keys are now flagged by `unknown-field`.",packages:["@skill-map/cli","@skill-map/spec"]},{body:"**Broken frontmatter now lights up on the graph.** Vendor agent/skill nodes missing `name` or `description` show a red alert badge and a matching footer chip, same chassis as broken references. Trigger-style links (`/cmd`, `@handle`) now also tally into the target's `linksIn`.",packages:["@skill-map/cli"]}]},{version:"0.25.0",date:"2026-05-14",kind:"user-facing",highlights:[{body:"**`sm list` and `sm show` now report tokens, not bytes.** The `BYTES` column on `sm list` is now `TOKENS` (cl100k_base, frontmatter + body), and `sm show` lists `Tokens:` instead of `Bytes:`. Sort with `--sort-by tokens_total`. `--json` is unchanged.",packages:["@skill-map/cli","@skill-map/spec"]},{body:"**`sm tutorial master`** materializes the advanced tester walkthrough (`sm-master.md`) in your cwd. Trigger it from Claude Code with `ejecut\xE1 @sm-master.md`. Bare `sm tutorial` keeps its previous behaviour and writes `sm-tutorial.md`.",packages:["@skill-map/cli","@skill-map/spec"]}]},{version:"0.24.5",date:"2026-05-14",kind:"internal",highlights:[]},{version:"0.24.4",date:"2026-05-13",kind:"internal",highlights:[]},{version:"0.24.3",date:"2026-05-13",kind:"internal",highlights:[]},{version:"0.24.2",date:"2026-05-13",kind:"user-facing",highlights:[{body:'**Graph edge style picker** \u2014 Settings \u2192 General now has an "Edge style" control. Pick **Orthogonal**, **Straight**, **Bezier**, or **Adaptive curve** (new default) and the graph re-renders immediately. The choice is remembered in this browser only.',packages:["@skill-map/cli"]},{body:"**Edge look refresh** \u2014 graph edges now show a small **dot at the start** and arrow at the end, with thinner strokes and softer colors. Kind colors (invokes / references / mentions / supersedes) are still distinct but no longer compete with the node cards for attention.",packages:["@skill-map/cli"]},{body:"**Click an edge to highlight it** \u2014 clicking a connection in the graph now selects it: the line grows a touch thicker and saturates to its full colour (same hue as the base, just louder). Click elsewhere on the canvas to clear the selection.",packages:["@skill-map/cli"]},{body:"**Footer link icons refresh** \u2014 the incoming / outgoing link counters on each node card now use the classic **download / upload** glyphs instead of plain up / down arrows. The arrow shape stays exclusive to the graph's edges, which keeps the visual vocabulary clearer.",packages:["@skill-map/cli"]}]},{version:"0.24.1",date:"2026-05-13",kind:"user-facing",highlights:[{body:'**Graph edge style picker** \u2014 Settings \u2192 General now has an "Edge style" control. Pick **Orthogonal** (default), **Straight**, **Bezier**, or **Adaptive curve** and the graph re-renders immediately. The choice is remembered in this browser only.',packages:["@skill-map/cli"]}]},{version:"0.24.0",date:"2026-05-13",kind:"user-facing",highlights:[{body:"**CLI flags fixed.** `sm refresh`, `sm watch`, `sm jobs prune` now honor `--db` / `-g`. `sm watch` and `sm scan --watch` honor `--no-color`. `sm scan --watch` names the conflicting flag on combo errors. `sm conformance run` progress moved to stderr; `--quiet` silences it.",packages:["@skill-map/cli"]}]},{version:"0.23.1",date:"2026-05-12",kind:"user-facing",highlights:[{body:"Inspector chips and the hero card now render their variant styling (link, warn, broken, danger, hero accent border). They had silently been rendering as bare defaults since PrimeNG 21 changed how `[styleClass]` is applied to chip and card hosts.",packages:["@skill-map/cli"]}]},{version:"0.23.0",date:"2026-05-12",kind:"user-facing",highlights:[{body:'Node inspector will split actions into "Applicable" (always available) and "Recommended" (per finding). First pairing: stale sidecar recommends running `bump`. UI hookup lands in the next iteration; the spec field ships first.',packages:["@skill-map/cli","@skill-map/spec"]},{body:"`sm plugins create <id> -g` now scaffolds under `~/.skill-map/plugins/<id>` instead of the project dir. The flag was advertised in `--help` but previously ignored.",packages:["@skill-map/cli"]},{body:"`sm refresh`, `sm plugins doctor`, and `sm conformance run` now respect `--json` for machine-readable output. `sm graph --format json` is a new format that emits the full ScanResult. CI / scripts can parse these instead of the human text.",packages:["@skill-map/cli","@skill-map/spec"]},{body:"`sm serve` now rejects browser requests whose `Host` or `Origin` is not a loopback name. Closes a DNS-rebinding lane where a malicious page could trigger scans or settings writes. `--dev-cors` still works for Vite-style dev UIs on a different loopback port.",packages:["@skill-map/cli","@skill-map/spec"]},{body:"`sm` now refuses to grant the `.sm` write consent (or apply `scan.extraFolders` / `scan.referencePaths`) from user-level config. The first prompt re-appears per project. Move stray values into `<project>/.skill-map/settings.local.json` (gitignored).",packages:["@skill-map/cli"]}]},{version:"0.22.0",date:"2026-05-12",kind:"user-facing",highlights:[{body:'The "include HOME" toggle is gone. To scan paths outside the project, list them in **Extra folders to scan** (renamed from *Extra roots*). If you had `scan.includeHome: true`, add the paths you actually need (e.g. `~/.claude/agents`), not one click anymore.',packages:["@skill-map/cli","@skill-map/spec"]}]},{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`, 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, typically `~/.claude`, `~/.gemini`, `~/.agents`, 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, 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 zt=Bt;var mn=(t,n)=>n.version;function hn(t,n){if(t&1&&(v(0,"p",3),d(1),x()),t&2){let e=l();o(),f(" ",e.texts.changelogEmpty," ")}}function _n(t,n){if(t&1&&(v(0,"p",10),d(1),x()),t&2){let e=l(3);o(),f(" ",e.texts.changelogInternalRelease," ")}}function fn(t,n){if(t&1&&(v(0,"li",15),d(1),x()),t&2){let e=n.$implicit;o(),u(e)}}function bn(t,n){if(t&1&&(v(0,"ul",14),I(1,fn,2,1,"li",15,Y),x()),t&2){let e=l().$implicit,i=l(4);b("aria-label",i.texts.changelogAffectedPackages),o(),O(e.packages)}}function vn(t,n){if(t&1&&(v(0,"li",12),ne(1,"div",13),h(2,bn,3,1,"ul",14),x()),t&2){let e=n.$implicit;o(),J("innerHTML",e.bodyHtml,ot),o(),_(e.packages.length?2:-1)}}function xn(t,n){if(t&1&&(v(0,"ul",11),I(1,vn,3,2,"li",12,lt),x()),t&2){let e=l().$implicit;o(),O(e.highlights)}}function yn(t,n){if(t&1&&(v(0,"li",6)(1,"header",7)(2,"span",8),d(3),x(),v(4,"span",9),d(5),x()(),h(6,_n,2,1,"p",10)(7,xn,3,0,"ul",11),x()),t&2){let e=n.$implicit;K("settings-changelog__entry--internal",e.kind==="internal"),b("data-testid","settings-changelog-entry-"+e.version),o(3),f("v",e.version),o(2),u(e.date),o(),_(e.kind==="internal"?6:7)}}function kn(t,n){if(t&1&&(v(0,"ol",4),I(1,yn,8,6,"li",5,mn),x()),t&2){let e=l();o(),O(e.entries())}}var De=class t{markdown=C(Ot);texts=P;entries=m([]);hasEntries=y(()=>this.entries().length>0);ngOnInit(){this.renderAll()}async renderAll(){let n=[];for(let e of zt.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=N({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&&(v(0,"section",0)(1,"h2",1),d(2),x(),v(3,"p",2),d(4),x(),h(5,hn,2,1,"p",3)(6,kn,3,0,"ol",4),x()),e&2&&(b("aria-labelledby","settings-changelog-heading"),o(2),f(" ",i.texts.changelogHeading," "),o(2),u(i.texts.changelogIntro),o(),_(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:var(--sm-radius-sm);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:var(--sm-radius-sm);background:var(--sm-bg-hover);color:var(--sm-text-muted);border:1px solid var(--sm-border);line-height:1.4}"],changeDetection:0})};var Kt=`
|
|
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 wn=["handle"],Cn=["input"],Pn=t=>({checked:t});function Sn(t,n){t&1&&dt(0)}function En(t,n){if(t&1&&te(0,Sn,1,0,"ng-container",3),t&2){let e=l();p("ngTemplateOutlet",e.handleTemplate||e._handleTemplate)("ngTemplateOutletContext",ut(2,Pn,e.checked()))}}var Tn=`
|
|
116
|
-
${Kt}
|
|
117
|
-
|
|
118
|
-
p-toggleswitch.ng-invalid.ng-dirty > .p-toggleswitch-slider {
|
|
119
|
-
border-color: dt('toggleswitch.invalid.border.color');
|
|
120
|
-
}
|
|
121
|
-
`,Mn={root:{position:"relative"}},In={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"},$t=(()=>{class t extends bt{name="toggleswitch";style=Tn;classes=In;inlineStyles=Mn;static \u0275fac=(()=>{let e;return function(r){return(e||(e=ze(t)))(r||t)}})();static \u0275prov=ve({token:t,factory:t.\u0275fac})}return t})();var Gt=new et("TOGGLESWITCH_INSTANCE"),On={provide:Ct,useExisting:Je(()=>pe),multi:!0},pe=(()=>{class t extends Tt{componentName="ToggleSwitch";$pcToggleSwitch=C(Gt,{optional:!0,skipSelf:!0})??void 0;bindDirectiveInstance=C(fe,{self:!0});onAfterViewChecked(){this.bindDirectiveInstance.setAttrs(this.ptms(["host","root"]))}styleClass;tabindex;inputId;readonly;trueValue=!0;falseValue=!1;ariaLabel;size=R();ariaLabelledBy;autofocus;onChange=new it;input;handleTemplate;_handleTemplate;focused=!1;_componentStyle=C($t);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=ze(t)))(r||t)}})();static \u0275cmp=N({type:t,selectors:[["p-toggleswitch"],["p-toggleSwitch"],["p-toggle-switch"]],contentQueries:function(i,r,c){if(i&1&&ct(c,wn,4)(c,we,4),i&2){let g;xe(g=ye())&&(r.handleTemplate=g.first),xe(g=ye())&&(r.templates=g)}},viewQuery:function(i,r){if(i&1&>(Cn,5),i&2){let c;xe(c=ye())&&(r.input=c.first)}},hostVars:7,hostBindings:function(i,r){i&1&&w("click",function(g){return r.onHostClick(g)}),i&2&&(b("data-p-checked",r.checked())("data-p-disabled",r.$disabled())("data-p",r.dataP),pt(r.sx("root")),_e(r.cn(r.cx("root"),r.styleClass)))},inputs:{styleClass:"styleClass",tabindex:[2,"tabindex","tabindex",ht],inputId:"inputId",readonly:[2,"readonly","readonly",$e],trueValue:"trueValue",falseValue:"falseValue",ariaLabel:"ariaLabel",size:[1,"size"],ariaLabelledBy:"ariaLabelledBy",autofocus:[2,"autofocus","autofocus",$e]},outputs:{onChange:"onChange"},features:[ie([On,$t,{provide:Gt,useExisting:t},{provide:vt,useExisting:t}]),at([fe]),st],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&&(s(0,"input",1,0),w("focus",function(){return r.onFocus()})("blur",function(){return r.onBlur()}),a(),s(2,"div",2)(3,"div",2),h(4,En,1,4,"ng-container"),a()()),i&2&&(_e(r.cx("input")),p("checked",r.checked())("pAutoFocus",r.autofocus)("pBind",r.ptm("input")),b("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),_e(r.cx("slider")),p("pBind",r.ptm("slider")),b("data-p",r.dataP),o(),_e(r.cx("handle")),p("pBind",r.ptm("handle")),b("data-p",r.dataP),o(),_(r.handleTemplate||r._handleTemplate?4:-1))},dependencies:[ft,_t,xt,Ce,yt,fe],encapsulation:2,changeDetection:0})}return t})(),Fe=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=rt({type:t});static \u0275inj=Ze({imports:[pe,Ce,Ce]})}return t})();var jn=(t,n)=>n.key;function Dn(t,n){if(t&1&&(s(0,"p-message",3),d(1),a()),t&2){let e=l();p("closable",!1),o(),D(" ",e.texts.general.loadErrorPrefix," ",n," ")}}function Fn(t,n){if(t&1&&(s(0,"p-message",4),d(1),a()),t&2){let e=l();p("closable",!1),o(),D(" ",e.texts.general.saveErrorPrefix," ",n," ")}}function An(t,n){if(t&1){let e=j();s(0,"li",6)(1,"div",9)(2,"div",10),d(3),a(),s(4,"div",11),d(5),a()(),s(6,"p-toggleswitch",14),w("ngModelChange",function(r){let c=S(e).$implicit,g=l();return E(g.onToggle(c,r))}),a()()}if(t&2){let e=n.$implicit,i=l();b("data-testid","settings-general-row-"+e.key),o(3),u(i.toggleLabel(e.key)),o(2),f(" ",i.toggleDescription(e.key)," "),o(),p("ngModel",i.valueOf(e))("disabled",i.loading()||i.isPending(e.key)||i.preferences()===null),b("data-testid","settings-general-toggle-"+e.key)}}function Nn(t,n){if(t&1&&(s(0,"span",15),d(1),a()),t&2){let e=n.$implicit,i=l();o(),f(" ",i.extraThemeLabel(e.labelKey)," ")}}var Ln=[{key:"updateCheck.enabled",read:t=>t.updateCheck.enabled,patch:t=>({updateCheck:{enabled:t}})}],Vn=[{value:"none",labelKey:"none"},{value:"matrix",labelKey:"matrix"}];function Rn(t){return t==="matrix"?"matrix":"none"}function Bn(t){return t==="matrix"?"matrix":null}var Ae=class t{dataSource=C(U);themeService=C(Oe);visible=R.required();texts=P;toggles=Ln;extraThemeOptions=Vn;extraThemeWire=y(()=>Rn(this.themeService.extraTheme()));loading=m(!1);loadError=m(null);saveError=m(null);preferences=m(null);pending=m(new Set);constructor(){V(()=>{this.visible()&&this.refresh()})}toggleLabel(n){return P.general.toggles[n].label}toggleDescription(n){return P.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)}onExtraThemeChange(n){this.themeService.setExtraTheme(Bn(n??"none"))}extraThemeLabel(n){return P.general.extraTheme.options[n].label}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(Ut(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(Ut(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=N({type:t,selectors:[["sm-settings-general"]],inputs:{visible:[1,"visible"]},decls:23,vars:12,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__subheading"],["data-testid","settings-general-row-extra-theme",1,"settings-general__row","settings-general__row--stacked"],[1,"settings-general__row-text"],[1,"settings-general__row-label"],[1,"settings-general__row-description"],["optionLabel","labelKey","optionValue","value","data-testid","settings-general-extra-theme",3,"ngModelChange","options","ngModel","allowEmpty"],["pTemplate","item"],[3,"ngModelChange","ngModel","disabled"],["data-testid","settings-general-extra-theme-option"]],template:function(e,i){if(e&1&&(s(0,"section",0)(1,"h2",1),d(2),a(),s(3,"p",2),d(4),a(),h(5,Dn,2,3,"p-message",3),h(6,Fn,2,3,"p-message",4),s(7,"ul",5),I(8,An,7,6,"li",6,jn),a(),s(10,"h3",7),d(11),a(),s(12,"p",2),d(13),a(),s(14,"ul",5)(15,"li",8)(16,"div",9)(17,"div",10),d(18),a(),s(19,"div",11),d(20),a()(),s(21,"p-selectbutton",12),w("ngModelChange",function(c){return i.onExtraThemeChange(c)}),te(22,Nn,2,1,"ng-template",13),a()()()()),e&2){let r,c;b("aria-labelledby","settings-general-heading"),o(2),f(" ",i.texts.general.heading," "),o(2),u(i.texts.general.intro),o(),_((r=i.loadError())?5:-1,r),o(),_((c=i.saveError())?6:-1,c),o(2),O(i.toggles),o(3),f(" ",i.texts.general.localPreferences.heading," "),o(2),f(" ",i.texts.general.localPreferences.intro," "),o(5),f(" ",i.texts.general.extraTheme.label," "),o(2),f(" ",i.texts.general.extraTheme.description," "),o(),p("options",i.extraThemeOptions)("ngModel",i.extraThemeWire())("allowEmpty",!1)}},dependencies:[le,ae,se,ce,de,we,Lt,Nt,Fe,pe],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}.settings-general__subheading[_ngcontent-%COMP%]{margin:1.75rem 0 .25rem;font-size:.95rem;font-weight:600;color:var(--p-text-color)}.settings-general__row--stacked[_ngcontent-%COMP%]{flex-direction:column;align-items:stretch;gap:.65rem}"],changeDetection:0})};function Ut(t){return t instanceof G||t instanceof Error?t.message:String(t)}var Ge={provider:"#7C3AED",extractor:"#A78BFA",analyzer:"#5FD17C",action:"#00C853",formatter:"#5BC0EB",hook:"#FFB627"};function Xt(t){let n=t.toLowerCase();return Ge[n]??"currentColor"}var Ve=["all",...Object.keys(Ge)],Ne=["claude","gemini","agent-skills","core"],Le=["provider","extractor","analyzer","action","formatter","hook"];function ue(t,n){return`${t}/${n}`}function He(t){let n=new Map;for(let e of t)if(!me(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(ue(e.id,i.id),i.enabled)}return n}function Ue(t){let n=t.target;return!n||typeof n.closest!="function"?!1:n.closest('label, button, input, [role="switch"], p-toggleswitch')!==null}function Qt(t,n){if(zn(t,n))return[t];if(t.granularity!=="extension"||!t.extensions)return[];let e=t.extensions.filter(i=>Kn(i,n));return e.length===0?[]:[Q(H({},t),{extensions:e})]}function Yt(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?[]:[Q(H({},t),{extensions:e})]}function Jt(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?[]:[Q(H({},t),{extensions:n})]}function Zt(t){return t.slice().sort((e,i)=>{let r=Ne.indexOf(e.id),c=Ne.indexOf(i.id),g=r>=0?r:Ne.length,k=c>=0?c:Ne.length;return g!==k?g-k:e.id.localeCompare(i.id)}).map(e=>{if(e.granularity!=="extension"||!e.extensions)return e;let i=e.extensions.slice().sort((r,c)=>{let g=Le.indexOf(r.kind.toLowerCase()),k=Le.indexOf(c.kind.toLowerCase()),B=g>=0?g:Le.length,F=k>=0?k:Le.length;return B!==F?B-F:r.id.localeCompare(c.id)});return Q(H({},e),{extensions:i})})}function zn(t,n){return!!(t.id.toLowerCase().includes(n)||t.description&&t.description.toLowerCase().includes(n))}function Kn(t,n){return!!(t.id.toLowerCase().includes(n)||t.description&&t.description.toLowerCase().includes(n))}function me(t){return t==="incompatible-spec"||t==="invalid-manifest"||t==="load-error"||t==="id-collision"}function qe(t){return t instanceof G||t instanceof Error?t.message:String(t)}function en(t,n){return me(t.status)?n.statusFailure[t.status]??t.status:t.status==="enabled"?n.enabledLabel:n.disabledLabel}function tn(t,n){switch(t){case"built-in":return n.sourceBuiltIn;case"project":return n.sourceProject}}var We="sm.settings.plugins.collapsed",Xe="sm.settings.plugins.kind-filter";function nn(){let t=null;try{t=localStorage.getItem(We)}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 on(t){try{if(t.size===0){localStorage.removeItem(We);return}localStorage.setItem(We,JSON.stringify([...t]))}catch{}}function rn(){let t=null;try{t=localStorage.getItem(Xe)}catch{return"all"}return t&&Ve.includes(t)?t:"all"}function an(t){try{if(t==="all"){localStorage.removeItem(Xe);return}localStorage.setItem(Xe,t)}catch{}}function Qe(){tt(Qe);let t=m(nn());V(()=>on(t()));let n=i=>{let r=new Set(t());r.has(i)?r.delete(i):r.add(i),t.set(r)},e=i=>!t().has(i);return{collapsed:t.asReadonly(),toggleExpanded:n,isExpanded:e}}function sn(t){let n=m(""),e=y(()=>n().trim().length>0),i=m(rn()),r=y(()=>i()!=="all");V(()=>an(i()));let c=y(()=>Zt(t.plugins().flatMap(Jt))),g=y(()=>{let F=n().trim().toLowerCase(),q=i(),z=c();return q!=="all"&&(z=z.flatMap(W=>Yt(W,q))),F.length>0&&(z=z.flatMap(W=>Qt(W,F))),z});return{searchText:n,searchActive:e,kindFilter:i,setKindFilter:F=>{i.set(F)},isKindFilterActive:F=>i()===F,kindFilterActive:r,kindFilterOptions:Ve,visiblePlugins:c,filteredPlugins:g}}function ln(t){let n=m(!1),e=m(null),i=m(null),r=m([]),c=m(new Map),g=m(new Map),k=m(!1),B=y(()=>{let T=c(),A=g(),$=new Set;for(let[X,L]of A)T.get(X)!==L&&$.add(X);return $}),F=y(()=>B().size>0),q=y(()=>r().some(T=>me(T.status))),z=y(()=>{let T=g();for(let A of r())if(A.startsAsDisabled===!0&&T.get(A.id)===!0)return!0;return!1});return{plugins:r,loading:n,loadError:e,toggleError:i,applying:k,hasFailureRows:q,originalState:c,pendingState:g,dirtyIds:B,hasPendingChanges:F,restartRecommended:z,pendingEnabled:T=>g().get(T)??!1,isDirty:T=>B().has(T),refresh:async()=>{n.set(!0),e.set(null),i.set(null);try{let T=await t.dataSource.listPlugins();r.set([...T.items]);let A=He(T.items);c.set(A),g.set(new Map(A))}catch(T){e.set(qe(T)),r.set([]),c.set(new Map),g.set(new Map)}finally{n.set(!1)}},onBundleToggle:(T,A)=>{if(k())return;let $=new Map(g());$.set(T.id,A),g.set($)},onExtensionToggle:(T,A,$)=>{if(k())return;let X=ue(T,A.id),L=new Map(g());L.set(X,$),g.set(L)},applyChanges:async()=>{if(k())return{ok:!1};let T=B();if(T.size===0)return{ok:!1};let A=[],$=g();for(let L of T)A.push({id:L,enabled:$.get(L)??!1});k.set(!0),i.set(null);let X=!1;try{let L=await t.dataSource.applyPluginChanges(A);r.set([...L.items]);let Ye=He(L.items);c.set(Ye),g.set(new Map(Ye)),t.scanTrigger.run(),X=!0}catch(L){i.set(qe(L))}finally{k.set(!1)}return{ok:X}},discardChanges:()=>{g.set(new Map(c())),i.set(null)}}}var dn=(t,n)=>n.id;function Hn(t,n){if(t&1&&d(0),t&2){let e=l().$implicit,i=l();f(" ",e==="all"?i.texts.pluginsKindFilterAll:e," ")}}function Un(t,n){if(t&1){let e=j();s(0,"p-togglebutton",16),w("ngModelChange",function(){let r=S(e).$implicit,c=l();return E(c.setKindFilter(r))}),te(1,Hn,1,1,"ng-template",null,0,mt),a()}if(t&2){let e=n.$implicit,i=l();Ke("--kind-color",e==="all"?null:i.kindTint(e)),p("ngModel",i.isKindFilterActive(e))("styleClass","settings-plugins__kind-chip"+(e==="all"?" is-all":""))("ariaLabel",i.texts.pluginsKindFilterOptionA11y(e,!i.isKindFilterActive(e))),b("data-testid","settings-plugins-kind-chip-"+e)}}function qn(t,n){if(t&1&&(s(0,"p-message",11),d(1),a()),t&2){let e=l();p("closable",!1),o(),f(" ",e.texts.unsavedChangesMessage(e.dirtyIds().size)," ")}}function Wn(t,n){if(t&1&&(s(0,"p",12),M(1,"i",17),d(2),a()),t&2){let e=l();o(2),f(" ",e.texts.loading," ")}}function Xn(t,n){if(t&1&&(s(0,"p-message",13),d(1),a()),t&2){let e=l();p("closable",!1),o(),D(" ",e.texts.errorPrefix," ",e.loadError()," ")}}function Qn(t,n){if(t&1&&(s(0,"p",14),d(1),a()),t&2){let e=l();o(),f(" ",e.texts.empty," ")}}function Yn(t,n){if(t&1){let e=j();s(0,"p-message",22),w("onClose",function(){S(e);let r=l(2);return E(r.toggleError.set(null))}),d(1),a()}if(t&2){let e=l(2);p("closable",!0),o(),D(" ",e.texts.toggleErrorPrefix," ",e.toggleError()," ")}}function Jn(t,n){if(t&1&&(s(0,"p",19),M(1,"i",23),d(2),a()),t&2){let e=l(2);o(2),f(" ",e.texts.pluginsSearchEmpty(e.searchText())," ")}}function Zn(t,n){if(t&1){let e=j();s(0,"button",41),w("click",function(r){S(e);let c=l().$implicit;return l(2).toggleExpanded(c.id),E(r.stopPropagation())}),M(1,"i",42),a()}if(t&2){let e=l().$implicit,i=l(2);b("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("fa-chevron-down",i.isExpanded(e.id))("fa-chevron-right",!i.isExpanded(e.id))}}function ei(t,n){t&1&&M(0,"span",27)}function ti(t,n){if(t&1&&(s(0,"span",33),d(1),a()),t&2){let e=l().$implicit;o(),f("v",e.version)}}function ni(t,n){if(t&1&&(s(0,"span",34),M(1,"i",43),d(2),a()),t&2){let e=l().$implicit,i=l(2);p("title",i.texts.lockedTooltip),b("data-testid","settings-row-locked-"+e.id),o(2),f(" ",i.texts.lockedLabel," ")}}function ii(t,n){if(t&1&&(s(0,"span",35),d(1),a()),t&2){let e=l().$implicit,i=l(2);o(),u(i.statusLabel(e))}}function oi(t,n){if(t&1&&(s(0,"p",36),d(1),a()),t&2){let e=l().$implicit;o(),u(e.description)}}function ri(t,n){if(t&1&&(s(0,"span",37),d(1),a()),t&2){let e=l().$implicit;o(),u(e.reason)}}function ai(t,n){if(t&1&&(s(0,"p",38),M(1,"i",44),d(2),a()),t&2){let e=l().$implicit,i=l(2);b("data-testid","settings-row-starts-disabled-"+e.id),o(2),f(" ",i.texts.startsAsDisabledRowHint," ")}}function si(t,n){if(t&1){let e=j();s(0,"p-toggleswitch",45),w("ngModelChange",function(r){S(e);let c=l().$implicit,g=l(2);return E(g.onBundleToggle(c,r))}),a()}if(t&2){let e=l().$implicit,i=l(2);p("ngModel",i.pendingEnabled(e.id))("disabled",i.applying()||!!e.locked)("ariaLabel",i.texts.a11y.pluginToggle(e.id,!i.pendingEnabled(e.id))),b("data-testid","settings-toggle-"+e.id)}}function li(t,n){if(t&1&&(s(0,"span",34),M(1,"i",43),d(2),a()),t&2){let e=l().$implicit,i=l(2).$implicit,r=l(2);p("title",r.texts.lockedTooltip),b("data-testid","settings-extrow-locked-"+i.id+"-"+e.id),o(2),f(" ",r.texts.lockedLabel," ")}}function di(t,n){if(t&1&&(s(0,"p",53),d(1),a()),t&2){let e=l().$implicit;o(),u(e.description)}}function ci(t,n){if(t&1){let e=j();s(0,"li",47),w("click",function(r){let c=S(e).$implicit,g=l(2).$implicit,k=l(2);return E(k.onSubrowClick(g.id,c,r))})("keydown.enter",function(r){let c=S(e).$implicit,g=l(2).$implicit,k=l(2);return E(k.onSubrowClick(g.id,c,r))})("keydown.space",function(r){let c=S(e).$implicit,g=l(2).$implicit,k=l(2);return r.preventDefault(),E(k.onSubrowClick(g.id,c,r))}),s(1,"div",48)(2,"div",49),M(3,"span",30),s(4,"span",50),d(5),a(),s(6,"span",51),d(7),a(),s(8,"span",52),d(9),a(),h(10,li,3,3,"span",34),a(),h(11,di,2,1,"p",53),a(),s(12,"p-toggleswitch",45),w("ngModelChange",function(r){let c=S(e).$implicit,g=l(2).$implicit,k=l(2);return E(k.onExtensionToggle(g.id,c,r))}),a()()}if(t&2){let e=n.$implicit,i=l(2).$implicit,r=l(2);K("is-clickable",r.extensionToggleInteractive(e))("is-dirty",r.isDirty(r.qualifiedExt(i.id,e.id))),b("aria-label",r.texts.a11y.extensionRow(r.qualifiedExt(i.id,e.id)))("data-testid","settings-extrow-"+i.id+"-"+e.id),o(3),K("settings-plugins__dirty-dot--visible",r.isDirty(r.qualifiedExt(i.id,e.id))),b("data-testid","settings-extrow-dirty-"+i.id+"-"+e.id),o(2),u(e.id),o(),Ke("--kind-color",r.kindTint(e.kind)),o(),u(e.kind),o(2),f("v",e.version),o(),_(e.locked?10:-1),o(),_(e.description?11:-1),o(),p("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)))),b("data-testid","settings-ext-toggle-"+i.id+"-"+e.id)}}function gi(t,n){if(t&1&&(s(0,"ul",40),I(1,ci,13,20,"li",46,dn),a()),t&2){let e=l().$implicit;b("data-testid","settings-extensions-"+e.id),o(),O(e.extensions)}}function pi(t,n){if(t&1){let e=j();s(0,"li",24)(1,"div",25),w("click",function(r){let c=S(e).$implicit,g=l(2);return E(g.onRowClick(c,r))})("keydown.enter",function(r){let c=S(e).$implicit,g=l(2);return E(g.onRowClick(c,r))})("keydown.space",function(r){let c=S(e).$implicit,g=l(2);return r.preventDefault(),E(g.onRowClick(c,r))}),h(2,Zn,2,7,"button",26)(3,ei,1,0,"span",27),s(4,"div",28)(5,"div",29),M(6,"span",30),s(7,"span",31),d(8),a(),s(9,"span",32),d(10),a(),h(11,ti,2,1,"span",33),h(12,ni,3,3,"span",34),h(13,ii,2,1,"span",35),a(),h(14,oi,2,1,"p",36),h(15,ri,2,1,"span",37),h(16,ai,3,2,"p",38),a(),h(17,si,1,4,"p-toggleswitch",39),a(),h(18,gi,3,1,"ul",40),a()}if(t&2){let e=n.$implicit,i=l(2);K("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)),b("data-testid","settings-row-"+e.id),o(),b("aria-label",i.texts.a11y.pluginRow(e.id)),o(),_(i.canExpandExtensions(e)?2:3),o(4),K("settings-plugins__dirty-dot--visible",e.granularity==="bundle"&&i.isDirty(e.id)),b("data-testid","settings-row-dirty-"+e.id),o(2),u(e.id),o(2),u(i.sourceLabel(e.source)),o(),_(e.version?11:-1),o(),_(e.locked?12:-1),o(),_(!i.canToggleBundle(e)&&e.granularity==="bundle"?13:-1),o(),_(e.description?14:-1),o(),_(e.reason?15:-1),o(),_(i.showStartsAsDisabledHint(e)?16:-1),o(),_(i.canToggleBundle(e)?17:-1),o(),_(i.canExpandExtensions(e)&&i.isExpanded(e.id)?18:-1)}}function ui(t,n){if(t&1&&(h(0,Yn,2,3,"p-message",18),h(1,Jn,3,1,"p",19),s(2,"ul",20),I(3,pi,19,24,"li",21,dn),a()),t&2){let e=l();_(e.toggleError()?0:-1),o(),_(e.searchActive()&&e.filteredPlugins().length===0?1:-1),o(2),O(e.filteredPlugins())}}function mi(t,n){if(t&1&&(s(0,"em",54),d(1),a()),t&2){let e=l(2);o(),f(" ",e.texts.startsAsDisabledFooterHint," ")}}function hi(t,n){if(t&1){let e=j();s(0,"footer",15),h(1,mi,2,1,"em",54),s(2,"p-button",55),w("onClick",function(){S(e);let r=l();return E(r.discardChanges())}),a(),s(3,"p-button",56),w("onClick",function(){S(e);let r=l();return E(r.applyChanges())}),a()()}if(t&2){let e=l();o(),_(e.restartRecommended()?1:-1),o(),p("text",!0)("label",e.texts.discardChanges)("ariaLabel",e.texts.discardA11y)("disabled",e.applying()),o(),p("label",e.texts.applyAndClose)("ariaLabel",e.texts.applyA11y)("disabled",e.applying())("loading",e.applying())}}var Re=class t{dataSource=C(U);scanTrigger=C(Rt);buffer=C(ge);destroyRef=C(nt);visible=R.required();applied=ke();texts=P;pluginState=ln({dataSource:this.dataSource,scanTrigger:this.scanTrigger});plugins=this.pluginState.plugins;loading=this.pluginState.loading;loadError=this.pluginState.loadError;toggleError=this.pluginState.toggleError;applying=this.pluginState.applying;hasFailureRows=this.pluginState.hasFailureRows;originalState=this.pluginState.originalState;pendingState=this.pluginState.pendingState;dirtyIds=this.pluginState.dirtyIds;hasPendingChanges=this.pluginState.hasPendingChanges;restartRecommended=this.pluginState.restartRecommended;pluginCollapse=Qe();collapsed=this.pluginCollapse.collapsed;pluginFilter=sn({plugins:this.plugins});searchText=this.pluginFilter.searchText;searchActive=this.pluginFilter.searchActive;kindFilter=this.pluginFilter.kindFilter;kindFilterActive=this.pluginFilter.kindFilterActive;kindFilterOptions=this.pluginFilter.kindFilterOptions;visiblePlugins=this.pluginFilter.visiblePlugins;filteredPlugins=this.pluginFilter.filteredPlugins;constructor(){V(()=>{this.visible()&&this.pluginState.refresh()});let n={dirtyIds:this.pluginState.dirtyIds,applyChanges:async()=>{let e=await this.pluginState.applyChanges();return e.ok&&this.applied.emit(),e},discardChanges:()=>this.pluginState.discardChanges()};this.buffer.register(n),this.destroyRef.onDestroy(()=>this.buffer.deregister(n))}setKindFilter(n){this.pluginFilter.setKindFilter(n)}isKindFilterActive(n){return this.pluginFilter.isKindFilterActive(n)}toggleExpanded(n){this.pluginCollapse.toggleExpanded(n)}isExpanded(n){return this.pluginCollapse.isExpanded(n)}pendingEnabled(n){return this.pluginState.pendingEnabled(n)}isDirty(n){return this.pluginState.isDirty(n)}showStartsAsDisabledHint(n){return n.startsAsDisabled?this.pendingEnabled(n.id):!1}onBundleToggle(n,e){this.pluginState.onBundleToggle(n,e)}onExtensionToggle(n,e,i){this.pluginState.onExtensionToggle(n,e,i)}async applyChanges(){(await this.pluginState.applyChanges()).ok&&this.applied.emit()}discardChanges(){this.pluginState.discardChanges()}canToggleBundle(n){return n.granularity==="extension"?!1:!me(n.status)}canExpandExtensions(n){return(n.extensions?.length??0)>0}bundleToggleInteractive(n){return this.canToggleBundle(n)&&!n.locked}extensionToggleInteractive(n){return!n.locked}rowIsClickable(n){return!!(this.bundleToggleInteractive(n)||this.canExpandExtensions(n))}onRowClick(n,e){if(!Ue(e)){if(this.bundleToggleInteractive(n)){this.onBundleToggle(n,!this.pendingEnabled(n.id));return}this.canExpandExtensions(n)&&this.toggleExpanded(n.id)}}onSubrowClick(n,e,i){if(Ue(i)||!this.extensionToggleInteractive(e))return;let r=ue(n,e.id);this.onExtensionToggle(n,e,!this.pendingEnabled(r))}statusLabel(n){return en(n,this.texts)}sourceLabel(n){return tn(n,this.texts)}qualifiedExt(n,e){return ue(n,e)}kindTint(n){return Xt(n)}static \u0275fac=function(e){return new(e||t)};static \u0275cmp=N({type:t,selectors:[["sm-settings-plugins"]],inputs:{visible:[1,"visible"]},outputs:{applied:"applied"},decls:19,vars:9,consts:[["content",""],["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"],[3,"ngModel","styleClass","--kind-color","ariaLabel"],["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"],[3,"ngModelChange","ngModel","styleClass","ariaLabel"],["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"],["role","button","tabindex","0",1,"settings-plugins__row-main",3,"click","keydown.enter","keydown.space"],["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",1,"fa-solid"],["aria-hidden","true",1,"fa-solid","fa-lock"],["aria-hidden","true",1,"fa-solid","fa-triangle-exclamation"],[3,"ngModelChange","ngModel","disabled","ariaLabel"],["role","button","tabindex","0",1,"settings-plugins__subrow",3,"is-clickable","is-dirty"],["role","button","tabindex","0",1,"settings-plugins__subrow",3,"click","keydown.enter","keydown.space"],[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&&(s(0,"section",1)(1,"div",2)(2,"header",3)(3,"h2",4),d(4),a(),s(5,"p",5),d(6),a()(),s(7,"p-iconfield",6),M(8,"p-inputicon",7),s(9,"input",8),w("ngModelChange",function(c){return i.searchText.set(c)}),a()(),s(10,"div",9),I(11,Un,3,6,"p-togglebutton",10,Y),a(),h(13,qn,2,2,"p-message",11),h(14,Wn,3,1,"p",12)(15,Xn,2,3,"p-message",13)(16,Qn,2,1,"p",14)(17,ui,5,2),a(),h(18,hi,4,9,"footer",15),a()),e&2&&(o(4),f(" ",i.texts.pluginsHeading," "),o(2),u(i.texts.pluginsIntro),o(3),p("placeholder",i.texts.pluginsSearchPlaceholder)("ngModel",i.searchText()),b("aria-label",i.texts.pluginsSearchA11y),o(),b("aria-label",i.texts.pluginsKindFilterA11y),o(),O(i.kindFilterOptions),o(2),_(i.hasPendingChanges()?13:-1),o(),_(i.loading()?14:i.loadError()?15:i.plugins().length===0?16:17),o(4),_(i.hasPendingChanges()?18:-1))},dependencies:[le,Te,ae,se,re,Pe,Dt,jt,At,Ft,Ie,Me,ce,de,It,Mt,Fe,pe],styles:["[_nghost-%COMP%]{display:flex;flex-direction:column;height:100%;overflow:hidden;--kind-color: var(--p-text-color)}.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);--p-togglebutton-padding: .25rem .625rem;--p-togglebutton-content-padding: 0;--p-togglebutton-content-checked-background: transparent;--p-togglebutton-content-checked-shadow: none;--p-togglebutton-border-radius: var(--sm-radius-pill);--p-togglebutton-background: color-mix(in oklab, var(--chip-accent) 8%, transparent);--p-togglebutton-hover-background: color-mix(in oklab, var(--chip-accent) 18%, transparent);--p-togglebutton-checked-background: color-mix(in oklab, var(--chip-accent) 80%, transparent);--p-togglebutton-border-color: color-mix(in oklab, var(--chip-accent) 35%, transparent);--p-togglebutton-hover-border-color: color-mix(in oklab, var(--chip-accent) 55%, transparent);--p-togglebutton-checked-border-color: var(--chip-accent);--p-togglebutton-color: color-mix(in oklab, var(--chip-accent) 70%, var(--p-text-color));--p-togglebutton-hover-color: color-mix(in oklab, var(--chip-accent) 70%, var(--p-text-color));--p-togglebutton-checked-color: var(--p-surface-50);font-size:.75rem;font-weight:500;letter-spacing:.02em;text-transform:lowercase}.app-dark[_nghost-%COMP%] .settings-plugins__kind-chip[_ngcontent-%COMP%], .app-dark [_nghost-%COMP%] .settings-plugins__kind-chip[_ngcontent-%COMP%]{--p-togglebutton-background: color-mix(in oklab, var(--chip-accent) 14%, transparent);--p-togglebutton-hover-background: color-mix(in oklab, var(--chip-accent) 26%, transparent);--p-togglebutton-checked-background: color-mix(in oklab, var(--chip-accent) 70%, transparent);--p-togglebutton-border-color: color-mix(in oklab, var(--chip-accent) 50%, transparent);--p-togglebutton-hover-border-color: color-mix(in oklab, var(--chip-accent) 70%, transparent);--p-togglebutton-color: color-mix(in oklab, var(--chip-accent) 80%, var(--p-text-color));--p-togglebutton-hover-color: color-mix(in oklab, var(--chip-accent) 80%, var(--p-text-color));--p-togglebutton-checked-color: var(--p-surface-900)}.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;position:relative}.settings-plugins__row-id[_ngcontent-%COMP%]{font-weight:600;font-family:var(--p-monospace-font-family)}.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:var(--sm-radius-pill);white-space:nowrap}.settings-plugins__row-version[_ngcontent-%COMP%], .settings-plugins__subrow-version[_ngcontent-%COMP%]{font-family:var(--p-monospace-font-family)}.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) 14%,transparent);border:1px solid color-mix(in oklab,var(--kind-color) 38%,transparent);color:color-mix(in oklab,var(--kind-color) 70%,var(--p-surface-900))}.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) 22%,transparent);border-color:color-mix(in oklab,var(--kind-color) 55%,transparent);color:color-mix(in oklab,var(--kind-color) 80%,var(--p-surface-50))}.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:var(--sm-radius-pill);white-space:nowrap;background:color-mix(in oklab,var(--p-message-warn-color) 14%,transparent);border:1px solid color-mix(in oklab,var(--p-message-warn-color) 35%,transparent);color:color-mix(in oklab,var(--p-message-warn-color) 70%,var(--p-surface-900))}.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) 22%,transparent);border-color:color-mix(in oklab,var(--p-message-warn-color) 55%,transparent);color:color-mix(in oklab,var(--p-message-warn-color) 85%,var(--p-surface-50))}.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);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;position:relative}.settings-plugins__subrow-id[_ngcontent-%COMP%]{font-family:var(--p-monospace-font-family);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%]{position:absolute;left:-.75rem;top:50%;transform:translateY(-50%);width:.5rem;height:.5rem;border-radius:50%;background:var(--p-warn-color);visibility:hidden}.settings-plugins__dirty-dot--visible[_ngcontent-%COMP%]{visibility:visible}.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)}.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})};var fi=(t,n)=>n.id;function bi(t,n){if(t&1&&(s(0,"p-message",3),d(1),a()),t&2){let e=l();p("closable",!1),o(),D(" ",e.texts.project.loadErrorPrefix," ",n," ")}}function vi(t,n){if(t&1&&(s(0,"p-message",4),d(1),a()),t&2){let e=l();p("closable",!1),o(),D(" ",e.texts.project.saveErrorPrefix," ",n," ")}}function xi(t,n){t&1&&(s(0,"p-message",5),d(1),a()),t&2&&(p("closable",!1),o(),f(" ",n," "))}function yi(t,n){if(t&1&&(s(0,"span",11),d(1),a()),t&2){let e=l();o(),u(e.texts.project.activeProviderSourceConfig)}}function ki(t,n){if(t&1&&(s(0,"span",11),d(1),a()),t&2){let e=l();o(),u(e.texts.project.activeProviderSourceAutodetect)}}function wi(t,n){if(t&1&&(s(0,"span",11),d(1),a()),t&2){let e=l();o(),u(e.texts.project.activeProviderSourceNone)}}function Ci(t,n){if(t&1&&(s(0,"span",11),d(1),a()),t&2){let e=l(),i=l();o(),D(" ",i.texts.project.activeProviderDetectedPrefix," ",e," ")}}function Pi(t,n){t&1&&h(0,Ci,2,2,"span",11),t&2&&_(n.length>0?0:-1)}function Si(t,n){if(t&1&&(s(0,"option",15),d(1),a()),t&2){let e=n.$implicit;p("value",e.id),o(),u(e.label)}}function Ei(t,n){if(t&1&&(s(0,"p-message",16),d(1),a()),t&2){let e=l();p("closable",!1),o(),D(" ",e.texts.project.loadErrorPrefix," ",n," ")}}function Ti(t,n){if(t&1&&(s(0,"p-message",17),d(1),a()),t&2){let e=l();p("closable",!1),o(),D(" ",e.texts.project.saveErrorPrefix," ",n," ")}}function Mi(t,n){if(t&1){let e=j();s(0,"li",20)(1,"span",28),d(2),a(),s(3,"p-button",29),w("onClick",function(){let r=S(e).$implicit,c=l();return E(c.onReferencePathRemove(r))}),a()()}if(t&2){let e=n.$implicit,i=l();o(2),u(e),o(),p("label",i.texts.project.removePathLabel)("outlined",!0)("disabled",i.isPending("scan.referencePaths")),b("data-testid","settings-project-reference-paths-remove")}}function Ii(t,n){if(t&1&&(s(0,"p-message",23),d(1),a()),t&2){let e=l();p("closable",!1),o(),D(" ",e.texts.project.loadErrorPrefix," ",n," ")}}function Oi(t,n){if(t&1&&(s(0,"p-message",24),d(1),a()),t&2){let e=l();p("closable",!1),o(),D(" ",e.texts.project.saveErrorPrefix," ",n," ")}}function ji(t,n){if(t&1){let e=j();s(0,"li",20)(1,"span",28),d(2),a(),s(3,"p-button",29),w("onClick",function(){let r=S(e).$implicit,c=l();return E(c.onIgnorePatternRemove(r))}),a()()}if(t&2){let e=n.$implicit,i=l();o(2),u(e),o(),p("label",i.texts.project.removeIgnorePatternLabel)("outlined",!0)("disabled",i.isPending("ignore.patterns")),b("data-testid","settings-project-ignore-patterns-remove")}}var Di=[{id:"claude",label:"Claude Code"},{id:"gemini",label:"Gemini CLI"},{id:"openai",label:"OpenAI Codex"},{id:"cursor",label:"Cursor"}],Fi=/[\n\r\x00-\x1F\x7F]/,Be=class t{dataSource=C(U);confirmation=C(oe);visible=R.required();texts=P;loading=m(!1);loadError=m(null);saveError=m(null);preferences=m(null);pending=m(new Set);newReferencePath=m("");referencePaths=y(()=>this.preferences()?.scan.referencePaths??[]);ignoreLoadError=m(null);ignoreSaveError=m(null);ignoreEnvelope=m(null);newIgnorePattern=m("");ignorePatterns=y(()=>this.ignoreEnvelope()?.patterns??[]);activeProviderEnvelope=m(null);activeProviderLoadError=m(null);activeProviderSaveError=m(null);activeProviderSwitchAnnouncement=m(null);knownProviders=Di;activeProviderValue=y(()=>this.activeProviderEnvelope()?.activeProvider??"");activeProviderDetectedLabel=y(()=>(this.activeProviderEnvelope()?.detected??[]).join(", "));activeProviderSource=y(()=>this.activeProviderEnvelope()?.source??"none");constructor(){V(()=>{this.visible()&&(this.refresh(),this.refreshIgnore(),this.refreshActiveProvider())})}isPending(n){return this.pending().has(n)}onReferencePathAdd(){let n=this.newReferencePath().trim();if(n.length===0)return;if(n.includes(",")){this.saveError.set(this.texts.project.commaForbidden);return}let e=[...this.referencePaths(),n];this.runPatch("scan.referencePaths",{scan:{referencePaths:e}}).then(i=>{i&&this.newReferencePath.set("")})}onReferencePathRemove(n){let e=this.referencePaths().filter(i=>i!==n);this.runPatch("scan.referencePaths",{scan:{referencePaths:[...e]}})}onIgnorePatternAdd(){let n=this.newIgnorePattern().trim();if(n.length===0){this.ignoreSaveError.set(this.texts.project.ignorePatternEmpty);return}if(Fi.test(n)){this.ignoreSaveError.set(this.texts.project.ignorePatternHasControlChar);return}let e=this.ignorePatterns();if(e.includes(n)){this.ignoreSaveError.set(this.texts.project.ignorePatternDuplicate);return}let i=[...e,n];this.runIgnorePatch({patterns:i}).then(r=>{r&&this.newIgnorePattern.set("")})}onIgnorePatternRemove(n){let e=this.ignorePatterns().filter(i=>i!==n);this.runIgnorePatch({patterns:[...e]})}onActiveProviderChange(n){n===""||n===this.activeProviderValue()||this.confirmActiveProviderSwitch(n,async()=>{await this.runActiveProviderSwitch(n)})}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(ee(n)),this.preferences.set(null)}finally{this.loading.set(!1)}}async refreshIgnore(){this.ignoreLoadError.set(null),this.ignoreSaveError.set(null);try{let n=await this.dataSource.getProjectIgnore();this.ignoreEnvelope.set(n)}catch(n){this.ignoreLoadError.set(ee(n)),this.ignoreEnvelope.set(null)}}async refreshActiveProvider(){this.activeProviderLoadError.set(null),this.activeProviderSaveError.set(null);try{let n=await this.dataSource.getActiveProvider();this.activeProviderEnvelope.set(n)}catch(n){this.activeProviderLoadError.set(ee(n)),this.activeProviderEnvelope.set(null)}}async runActiveProviderSwitch(n){this.activeProviderSaveError.set(null),this.activeProviderSwitchAnnouncement.set(null);try{let e=await this.dataSource.setActiveProvider(n);this.activeProviderEnvelope.set({activeProvider:e.activeProvider,detected:e.detected,source:e.source});let i=e.switch.dropped;if(i===null)this.activeProviderSwitchAnnouncement.set(this.texts.project.activeProviderSwitchedNoDb);else{let r=this.texts.project;this.activeProviderSwitchAnnouncement.set(`${r.activeProviderSwitchedPrefix} ${i.tableCount} ${r.activeProviderSwitchedSuffix}`)}}catch(e){this.activeProviderSaveError.set(ee(e))}}confirmActiveProviderSwitch(n,e){this.confirmation.confirm({header:this.texts.project.activeProviderConfirmHeader,message:this.texts.project.activeProviderConfirmIntro,acceptLabel:this.texts.project.activeProviderConfirmAccept,rejectLabel:this.texts.project.activeProviderConfirmReject,acceptButtonProps:{severity:"primary"},rejectButtonProps:{severity:"secondary"},accept:()=>{e()},reject:()=>{let i=this.activeProviderEnvelope();i&&this.activeProviderEnvelope.set(H({},i))}})}async runPatch(n,e){if(this.pending().has(n))return!1;let i=new Set(this.pending());i.add(n),this.pending.set(i),this.saveError.set(null);let r=!1;try{let c=await this.dataSource.setProjectPreferences(e);this.preferences.set(c),r=!0}catch(c){if(c instanceof G&&c.code==="confirm-required"){let g=c.paths??[];this.confirmDialog(g,async()=>{try{let k=await this.dataSource.setProjectPreferences(Q(H({},e),{confirm:!0}));this.preferences.set(k),this.newReferencePath.set("")}catch(k){this.saveError.set(ee(k))}})}else this.saveError.set(ee(c))}finally{let c=new Set(this.pending());c.delete(n),this.pending.set(c)}return r}async runIgnorePatch(n){let e="ignore.patterns";if(this.pending().has(e))return!1;let i=new Set(this.pending());i.add(e),this.pending.set(i),this.ignoreSaveError.set(null);let r=!1;try{let c=await this.dataSource.setProjectIgnore(n);this.ignoreEnvelope.set(c),r=!0}catch(c){this.ignoreSaveError.set(ee(c))}finally{let c=new Set(this.pending());c.delete(e),this.pending.set(c)}return r}confirmDialog(n,e){this.confirmation.confirm({header:P.project.confirmDialogHeader,message:P.project.confirmDialogIntro+`
|
|
122
|
-
`+n.map(i=>`\u2022 ${i}`).join(`
|
|
123
|
-
`),acceptLabel:P.project.confirmDialogAccept,rejectLabel:P.project.confirmDialogReject,acceptButtonProps:{severity:"primary"},rejectButtonProps:{severity:"secondary"},accept:()=>{e()}})}static \u0275fac=function(e){return new(e||t)};static \u0275cmp=N({type:t,selectors:[["sm-settings-project"]],inputs:{visible:[1,"visible"]},features:[ie([oe])],decls:54,vars:30,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-active-provider-load-error",3,"closable"],["severity","error","data-testid","settings-project-active-provider-save-error",3,"closable"],["severity","info","data-testid","settings-project-active-provider-switch-announce",3,"closable"],["data-testid","settings-project-active-provider-row",1,"settings-project__list-row"],[1,"settings-project__row-text"],[1,"settings-project__row-label"],[1,"settings-project__row-description"],[1,"settings-project__row-meta"],[1,"settings-project__meta-line"],[1,"settings-project__add-row"],["data-testid","settings-project-active-provider-select",1,"settings-project__provider-select",3,"ngModelChange","ngModel"],["value",""],[3,"value"],["severity","error","data-testid","settings-project-load-error",3,"closable"],["severity","error","data-testid","settings-project-save-error",3,"closable"],["data-testid","settings-project-reference-paths-row",1,"settings-project__list-row"],["role","list",1,"settings-project__path-list"],[1,"settings-project__path-item"],["type","text","pInputText","","data-testid","settings-project-reference-paths-input",3,"ngModelChange","keydown.enter","ngModel","placeholder","disabled"],["severity","primary","size","small","data-testid","settings-project-reference-paths-add",3,"onClick","label","disabled"],["severity","error","data-testid","settings-project-ignore-load-error",3,"closable"],["severity","error","data-testid","settings-project-ignore-save-error",3,"closable"],["data-testid","settings-project-ignore-patterns-row",1,"settings-project__list-row"],["type","text","pInputText","","data-testid","settings-project-ignore-patterns-input",3,"ngModelChange","keydown.enter","ngModel","placeholder","disabled"],["severity","primary","size","small","data-testid","settings-project-ignore-patterns-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&&(s(0,"section",0)(1,"h2",1),d(2),a(),s(3,"p",2),d(4),a(),h(5,bi,2,3,"p-message",3),h(6,vi,2,3,"p-message",4),h(7,xi,2,2,"p-message",5),s(8,"div",6)(9,"div",7)(10,"div",8),d(11),a(),s(12,"div",9),d(13),a(),s(14,"div",10),h(15,yi,2,1,"span",11)(16,ki,2,1,"span",11)(17,wi,2,1,"span",11),h(18,Pi,1,1),a()(),s(19,"div",12)(20,"select",13),w("ngModelChange",function(c){return i.onActiveProviderChange(c)}),s(21,"option",14),d(22),a(),I(23,Si,2,2,"option",15,fi),a()()(),h(25,Ei,2,3,"p-message",16),h(26,Ti,2,3,"p-message",17),s(27,"div",18)(28,"div",7)(29,"div",8),d(30),a(),s(31,"div",9),d(32),a()(),s(33,"ul",19),I(34,Mi,4,5,"li",20,Y),a(),s(36,"div",12)(37,"input",21),w("ngModelChange",function(c){return i.newReferencePath.set(c)})("keydown.enter",function(){return i.onReferencePathAdd()}),a(),s(38,"p-button",22),w("onClick",function(){return i.onReferencePathAdd()}),a()()(),h(39,Ii,2,3,"p-message",23),h(40,Oi,2,3,"p-message",24),s(41,"div",25)(42,"div",7)(43,"div",8),d(44),a(),s(45,"div",9),d(46),a()(),s(47,"ul",19),I(48,ji,4,5,"li",20,Y),a(),s(50,"div",12)(51,"input",26),w("ngModelChange",function(c){return i.newIgnorePattern.set(c)})("keydown.enter",function(){return i.onIgnorePatternAdd()}),a(),s(52,"p-button",27),w("onClick",function(){return i.onIgnorePatternAdd()}),a()()(),M(53,"p-confirmdialog"),a()),e&2){let r,c,g,k,B,F,q,z,W;b("aria-labelledby","settings-project-heading"),o(2),f(" ",i.texts.project.heading," "),o(2),u(i.texts.project.intro),o(),_((r=i.activeProviderLoadError())?5:-1,r),o(),_((c=i.activeProviderSaveError())?6:-1,c),o(),_((g=i.activeProviderSwitchAnnouncement())?7:-1,g),o(4),u(i.texts.project.activeProviderLabel),o(2),f(" ",i.texts.project.activeProviderDescription," "),o(2),_((k=i.activeProviderSource())==="config"?15:k==="autodetect"?16:k==="none"?17:-1),o(3),_((B=i.activeProviderDetectedLabel())?18:-1,B),o(2),p("ngModel",i.activeProviderValue()),o(2),u(i.texts.project.activeProviderEmptyOption),o(),O(i.knownProviders),o(2),_((F=i.loadError())?25:-1,F),o(),_((q=i.saveError())?26:-1,q),o(4),u(i.texts.project.referencePathsLabel),o(2),f(" ",i.texts.project.referencePathsDescription," "),o(2),O(i.referencePaths()),o(3),p("ngModel",i.newReferencePath())("placeholder",i.texts.project.referencePathsPlaceholder)("disabled",i.isPending("scan.referencePaths")),o(),p("label",i.texts.project.addPathLabel)("disabled",i.isPending("scan.referencePaths")||i.newReferencePath().trim().length===0),o(),_((z=i.ignoreLoadError())?39:-1,z),o(),_((W=i.ignoreSaveError())?40:-1,W),o(4),u(i.texts.project.ignorePatternsLabel),o(2),f(" ",i.texts.project.ignorePatternsDescription," "),o(2),O(i.ignorePatterns()),o(3),p("ngModel",i.newIgnorePattern())("placeholder",i.texts.project.ignorePatternsPlaceholder)("disabled",i.isPending("ignore.patterns")),o(),p("label",i.texts.project.addIgnorePatternLabel)("disabled",i.isPending("ignore.patterns")||i.newIgnorePattern().trim().length===0)}},dependencies:[le,St,Et,Te,Pt,ae,se,re,Pe,Ee,Se,Ie,Me,ce,de],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}[_nghost-%COMP%] p-message[_ngcontent-%COMP%]{display:block;margin-bottom:1rem}.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);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);font-size:.8rem}.settings-project__row-meta[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.15rem;font-size:.75rem;color:var(--p-text-muted-color)}.settings-project__meta-line[_ngcontent-%COMP%]{line-height:1.3}.settings-project__provider-select[_ngcontent-%COMP%]{flex:1 1 auto;font-family:var(--p-font-family);font-size:.85rem;padding:.4rem .6rem;border-radius:.25rem;border:1px solid var(--p-form-field-border-color);background:var(--p-form-field-background);color:var(--p-form-field-color)}"],changeDetection:0})};function ee(t){return t instanceof G||t instanceof Error?t.message:String(t)}var Ai=(t,n)=>n.id;function Ni(t,n){if(t&1){let e=j();s(0,"li")(1,"button",6),w("click",function(){let r=S(e).$implicit,c=l();return E(c.selectSection(r.id))}),s(2,"span",7),d(3),a()()()}if(t&2){let e=n.$implicit,i=l();o(),K("is-active",i.activeSection()===e.id),b("aria-current",i.activeSection()===e.id?"page":null)("data-testid","settings-nav-"+e.id),o(2),u(e.label)}}function Li(t,n){if(t&1){let e=j();s(0,"sm-settings-plugins",8),w("applied",function(){S(e);let r=l();return E(r.onPluginsApplied())}),a()}if(t&2){let e=l();p("visible",e.pluginsVisible())}}function Vi(t,n){if(t&1&&M(0,"sm-settings-general",5),t&2){let e=l();p("visible",e.generalVisible())}}function Ri(t,n){if(t&1&&M(0,"sm-settings-project",5),t&2){let e=l();p("visible",e.projectVisible())}}function Bi(t,n){if(t&1&&M(0,"sm-settings-about",5),t&2){let e=l();p("visible",e.aboutVisible())}}function zi(t,n){t&1&&M(0,"sm-settings-changelog")}var Ki=[{id:"general",label:P.sections.general},{id:"project",label:P.sections.project},{id:"plugins",label:P.sections.plugins},{id:"changelog",label:P.sections.changelog},{id:"about",label:P.sections.about}],cn=class t{visible=R.required();visibleChange=ke();confirmation=C(oe);buffer=C(ge);texts=P;sections=Ki;activeSection=m("plugins");pluginsVisible=y(()=>this.visible()&&this.activeSection()==="plugins");generalVisible=y(()=>this.visible()&&this.activeSection()==="general");projectVisible=y(()=>this.visible()&&this.activeSection()==="project");aboutVisible=y(()=>this.visible()&&this.activeSection()==="about");onVisibleChange(n){if(n){this.visibleChange.emit(!0);return}let e=this.buffer.dirtyCount();if(e===0){this.visibleChange.emit(!1);return}this.confirmation.confirm({header:this.texts.confirmCloseTitle,message:this.texts.confirmCloseBody(e),acceptLabel:this.texts.applyAndClose,rejectLabel:this.texts.discardChanges,acceptButtonProps:{severity:"primary"},rejectButtonProps:{severity:"secondary"},accept:()=>{this.buffer.applyChanges()},reject:()=>{this.buffer.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=N({type:t,selectors:[["sm-settings-modal"]],inputs:{visible:[1,"visible"]},outputs:{visibleChange:"visibleChange"},features:[ie([oe])],decls:13,vars:10,consts:[["styleClass","settings-modal__dialog","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"],["type","button",1,"settings-modal__sidebar-item",3,"click"],[1,"settings-modal__sidebar-label"],[3,"applied","visible"]],template:function(e,i){if(e&1&&(s(0,"p-dialog",0),w("visibleChange",function(c){return i.onVisibleChange(c)}),s(1,"div",1)(2,"nav",2)(3,"ul",3),I(4,Ni,4,5,"li",null,Ai),a()(),s(6,"div",4),h(7,Li,1,1,"sm-settings-plugins",5)(8,Vi,1,1,"sm-settings-general",5)(9,Ri,1,1,"sm-settings-project",5)(10,Bi,1,1,"sm-settings-about",5)(11,zi,1,0,"sm-settings-changelog"),a()(),M(12,"p-confirmdialog"),a()),e&2){let r;p("visible",i.visible())("modal",!0)("draggable",!1)("resizable",!1)("closable",!0)("closeOnEscape",!0)("dismissableMask",!0)("header",i.texts.modalTitle),o(2),b("aria-label",i.texts.modalTitle),o(2),O(i.sections),o(3),_((r=i.activeSection())==="plugins"?7:r==="general"?8:r==="project"?9:r==="about"?10:r==="changelog"?11:-1)}},dependencies:[re,Ee,Se,wt,kt,je,De,Ae,Re,Be],styles:["[_nghost-%COMP%]{display:contents;--p-message-error-color: #fca5a5;--p-message-error-background: color-mix(in srgb, #ef4444 14%, transparent);--p-message-error-border-color: color-mix(in srgb, #ef4444 45%, transparent)}[_nghost-%COMP%] .settings-modal__dialog{width:1024px;height:720px;max-width:92vw;max-height:90vh}[_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-label[_ngcontent-%COMP%]{flex:1;font-size:.9rem;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.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{cn as SettingsModal};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{J as o,O as i,Tb as s,Y as h,Z as p,da as r,ea as u,id as c,jd as m,nd as f}from"./chunk-O5N7UH37.js";var j={triggerLabel:"Settings",triggerTooltip:"Settings",modalTitle:"Settings",closeLabel:"Close",sections:{plugins:"Plugins",general:"General",project:"Project",changelog:"Changelog",about:"About"},general:{heading:"General",intro:"Per-machine preferences. The update-check toggle is the only setting that lives outside the project; it persists at `~/.skill-map/settings.json` and follows 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."}},localPreferences:{heading:"This browser",intro:"Visual preferences saved in this browser only. They won't sync to another machine."},extraTheme:{label:"Theme",description:"Pick a specialty theme. Overrides the topbar dark/light toggle while active; click that toggle to exit.",options:{none:{label:"None",description:"Use the topbar dark/light toggle."},matrix:{label:"Matrix",description:"Cyber-green retint on the dark palette."}}}},project:{heading:"Project",intro:"These settings apply only to this project and are saved in its `.skill-map/settings.local.json` file.",loadErrorPrefix:"Could not load project settings:",saveErrorPrefix:"Could not save project settings:",referencePathsLabel:"Folders for link validation",referencePathsDescription:'Folders checked only to validate links. Files here are not indexed and do not appear in the graph, they just stop "broken link" warnings when a link points to a real file outside this project.',referencePathsPlaceholder:"~/Documents/research",commaForbidden:"Add one path at a time, without commas.",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",ignorePatternsLabel:"Ignored patterns",ignorePatternsDescription:"Patterns that exclude files and folders from the scan, stored in `.skillmapignore` at the project root. Same syntax as `.gitignore` (one pattern per line). Comments (`# ...`) and blank lines in the file are preserved on save; the list below only shows active patterns.",ignorePatternsPlaceholder:"secrets.md",ignorePatternEmpty:"Pattern cannot be empty or whitespace-only.",ignorePatternHasControlChar:"Pattern must be a single line without control characters.",ignorePatternDuplicate:"This pattern is already in the list.",addIgnorePatternLabel:"Add pattern",removeIgnorePatternLabel:"Remove",activeProviderLabel:"Active provider",activeProviderDescription:"Selects which provider sees this project. The graph reflects how the chosen provider interprets your files. Switching clears the persisted scan so the graph regenerates under the new lens; jobs and history are kept.",activeProviderSourceConfig:"Set in settings.json.",activeProviderSourceAutodetect:"Auto-detected from your files (no value saved yet).",activeProviderSourceNone:"No provider detected. Install or enable a provider to start.",activeProviderDetectedPrefix:"Detected on disk:",activeProviderEmptyOption:"(none)",activeProviderConfirmHeader:"Switch the active provider?",activeProviderConfirmIntro:"Switching will clear the persisted scan (nodes, links, issues). Jobs and history are kept. You will need to run `sm scan` after the switch.",activeProviderConfirmAccept:"Switch and clear scan",activeProviderConfirmReject:"Cancel",activeProviderSwitchedPrefix:"Lens switched. Cleared",activeProviderSwitchedSuffix:"scan table(s). Run `sm scan` to repopulate.",activeProviderSwitchedNoDb:"Lens switched. Run `sm scan` to populate the graph under the new lens."},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. 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",aboutFolderLabel:"Project folder",aboutDbLabel:"Project DB",aboutDbValue:(t,e)=>t==="present"?e:`${t} \xB7 ${e}`,aboutLoading:"Loading\u2026",aboutUnknown:"-",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, 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. 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",enabledLabel:"Enabled",disabledLabel:"Disabled",lockedLabel:"Locked",lockedTooltip:"Locked by the host (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}`,pluginRow:t=>`Plugin ${t} row`,extensionRow:t=>`Extension ${t} row`}};var v={available:"Update available",tooltip:t=>`v${t} is available. Run \`npm i -g @skill-map/cli@latest\` to update.`,a11yLabel:t=>`Update available: version ${t}`,versionLabel:t=>`v${t}`,versionTooltip:t=>`skill-map CLI v${t}`,versionA11yLabel:t=>`Running version ${t}`,fetchFailed:t=>`UpdateCheckService: fetch failed (${t})`};var b=class t{dataSource=i(c);status=r(null);isOutdated=s(()=>this.status()?.isOutdated===!0);latest=s(()=>this.status()?.latest??null);current=s(()=>this.status()?.current??null);async load(){try{let e=await this.dataSource.getUpdateStatus();this.status.set(e)}catch(e){let a=e instanceof Error?e.message:String(e);console.warn(v.fetchFailed(a))}}static \u0275fac=function(a){return new(a||t)};static \u0275prov=o({token:t,factory:t.\u0275fac,providedIn:"root"})};var S={scanFailed:t=>`scan-trigger failed: ${t}`};var T=class t{dataSource=i(c);loader=i(f);scanning=r(!1);scanError=r(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 m||e instanceof Error?e.message:String(e);this.scanError.set(a),console.warn(S.scanFailed(a))}finally{this.scanning.set(!1)}}}static \u0275fac=function(a){return new(a||t)};static \u0275prov=o({token:t,factory:t.\u0275fac,providedIn:"root"})};var k="skill-map.ui.theme",g="skill-map.ui.extra-theme",x="app-dark",A="dark",C="app-matrix",P="(prefers-color-scheme: dark)",I="favicon.svg",D="favicon-matrix.svg",L='link[rel="icon"][type="image/svg+xml"]',R="https://fonts.googleapis.com/css2?family=JetBrains+Mono&display=swap",E="sm-matrix-font",w=class t{doc=i(h);destroyRef=i(p);mode=r(this.readInitialMode());extraTheme=r(this.readInitialExtra());systemPrefersDark=r(this.readSystemPref());resolved=s(()=>{let e=this.mode();return e==="auto"?this.systemPrefersDark()?"dark":"light":e});constructor(){this.subscribeToSystemPref(),u(()=>{let e=this.extraTheme(),n=this.resolved()==="dark"||e==="matrix",l=this.doc.documentElement;l.classList.toggle(x,n),l.classList.toggle(A,n),l.classList.toggle(C,e==="matrix"),this.applyFavicon(e==="matrix"?D:I),e==="matrix"&&this.ensureMatrixFont();try{let d=this.doc.defaultView?.localStorage;d?.setItem(k,this.mode()),e===null?d?.removeItem(g):d?.setItem(g,e)}catch{}})}toggle(){this.extraTheme()!==null&&this.extraTheme.set(null),this.mode.update(e=>e==="auto"?"light":e==="light"?"dark":"auto")}set(e){this.mode.set(e)}setExtraTheme(e){this.extraTheme.set(e)}readInitialMode(){try{let e=this.doc.defaultView?.localStorage.getItem(k);if(e==="auto"||e==="light"||e==="dark")return e}catch{}return"auto"}readInitialExtra(){try{let e=this.doc.defaultView?.localStorage.getItem(g);if(e==="matrix")return e}catch{}return null}readSystemPref(){try{return this.doc.defaultView?.matchMedia(P).matches??!1}catch{return!1}}ensureMatrixFont(){if(this.doc.getElementById(E))return;let e=this.doc.head;if(!e)return;let a=this.doc.createElement("link");a.id=E,a.rel="stylesheet",a.href=R,e.appendChild(a)}applyFavicon(e){let a=this.doc.querySelector(L);a&&a.getAttribute("href")!==e&&a.setAttribute("href",e)}subscribeToSystemPref(){let e=this.doc.defaultView;if(!e||typeof e.matchMedia!="function")return;let a=e.matchMedia(P),n=l=>{this.systemPrefersDark.set(l.matches)};a.addEventListener("change",n),this.destroyRef.onDestroy(()=>a.removeEventListener("change",n))}static \u0275fac=function(a){return new(a||t)};static \u0275prov=o({token:t,factory:t.\u0275fac,providedIn:"root"})};export{v as a,b,j as c,T as d,w as e};
|
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
import{$ as J,$a as k,Aa as I,Ba as l,Hb as K,Ic as $,J as M,Jc as C,K as A,Ka as g,Kc as ce,Lc as Y,M as D,O as _,Oc as Z,Pc as U,Qb as re,T as h,Ta as o,U as v,Ua as u,V,Va as f,Vc as d,Wa as P,Xa as W,Ya as X,Za as ee,_a as w,_c as se,cc as S,db as E,eb as ne,fb as B,ga as y,hb as a,ib as j,jb as L,jc as O,kb as R,la as te,mb as x,mc as H,nb as T,oa as c,oc as q,pc as G,rb as ie,ub as oe,vb as p,wa as b,wb as z,xa as N,xb as Q,za as F,zc as ae}from"./chunk-O5N7UH37.js";var pe=`
|
|
2
|
-
.p-tag {
|
|
3
|
-
display: inline-flex;
|
|
4
|
-
align-items: center;
|
|
5
|
-
justify-content: center;
|
|
6
|
-
background: dt('tag.primary.background');
|
|
7
|
-
color: dt('tag.primary.color');
|
|
8
|
-
font-size: dt('tag.font.size');
|
|
9
|
-
font-weight: dt('tag.font.weight');
|
|
10
|
-
padding: dt('tag.padding');
|
|
11
|
-
border-radius: dt('tag.border.radius');
|
|
12
|
-
gap: dt('tag.gap');
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
.p-tag-icon {
|
|
16
|
-
font-size: dt('tag.icon.size');
|
|
17
|
-
width: dt('tag.icon.size');
|
|
18
|
-
height: dt('tag.icon.size');
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
.p-tag-rounded {
|
|
22
|
-
border-radius: dt('tag.rounded.border.radius');
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
.p-tag-success {
|
|
26
|
-
background: dt('tag.success.background');
|
|
27
|
-
color: dt('tag.success.color');
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
.p-tag-info {
|
|
31
|
-
background: dt('tag.info.background');
|
|
32
|
-
color: dt('tag.info.color');
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
.p-tag-warn {
|
|
36
|
-
background: dt('tag.warn.background');
|
|
37
|
-
color: dt('tag.warn.color');
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
.p-tag-danger {
|
|
41
|
-
background: dt('tag.danger.background');
|
|
42
|
-
color: dt('tag.danger.color');
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
.p-tag-secondary {
|
|
46
|
-
background: dt('tag.secondary.background');
|
|
47
|
-
color: dt('tag.secondary.color');
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
.p-tag-contrast {
|
|
51
|
-
background: dt('tag.contrast.background');
|
|
52
|
-
color: dt('tag.contrast.color');
|
|
53
|
-
}
|
|
54
|
-
`;var ye=["icon"],Ce=["*"];function be(t,s){if(t&1&&P(0,"span",4),t&2){let e=a(2);p(e.cx("icon")),o("ngClass",e.icon)("pBind",e.ptm("icon"))}}function Ie(t,s){if(t&1&&(w(0),l(1,be,1,4,"span",3),k()),t&2){let e=a();c(),o("ngIf",e.icon)}}function xe(t,s){}function Te(t,s){t&1&&l(0,xe,0,0,"ng-template")}function we(t,s){if(t&1&&(u(0,"span",2),l(1,Te,1,0,null,5),f()),t&2){let e=a();p(e.cx("icon")),o("pBind",e.ptm("icon")),c(),o("ngTemplateOutlet",e.iconTemplate||e._iconTemplate)}}var ke={root:({instance:t})=>["p-tag p-component",{"p-tag-info":t.severity==="info","p-tag-success":t.severity==="success","p-tag-warn":t.severity==="warn","p-tag-danger":t.severity==="danger","p-tag-secondary":t.severity==="secondary","p-tag-contrast":t.severity==="contrast","p-tag-rounded":t.rounded}],icon:"p-tag-icon",label:"p-tag-label"},le=(()=>{class t extends Y{name="tag";style=pe;classes=ke;static \u0275fac=(()=>{let e;return function(n){return(e||(e=y(t)))(n||t)}})();static \u0275prov=M({token:t,factory:t.\u0275fac})}return t})();var de=new D("TAG_INSTANCE"),Ee=(()=>{class t extends U{componentName="Tag";$pcTag=_(de,{optional:!0,skipSelf:!0})??void 0;bindDirectiveInstance=_(d,{self:!0});onAfterViewChecked(){this.bindDirectiveInstance.setAttrs(this.ptms(["host","root"]))}styleClass;severity;value;icon;rounded;iconTemplate;templates;_iconTemplate;_componentStyle=_(le);onAfterContentInit(){this.templates?.forEach(e=>{e.getType()==="icon"&&(this._iconTemplate=e.template)})}get dataP(){return this.cn({rounded:this.rounded,[this.severity]:this.severity})}static \u0275fac=(()=>{let e;return function(n){return(e||(e=y(t)))(n||t)}})();static \u0275cmp=b({type:t,selectors:[["p-tag"]],contentQueries:function(i,n,r){if(i&1&&R(r,ye,4)(r,$,4),i&2){let m;x(m=T())&&(n.iconTemplate=m.first),x(m=T())&&(n.templates=m)}},hostVars:3,hostBindings:function(i,n){i&2&&(g("data-p",n.dataP),p(n.cn(n.cx("root"),n.styleClass)))},inputs:{styleClass:"styleClass",severity:"severity",value:"value",icon:"icon",rounded:[2,"rounded","rounded",S]},features:[K([le,{provide:de,useExisting:t},{provide:Z,useExisting:t}]),F([d]),I],ngContentSelectors:Ce,decls:5,vars:6,consts:[[4,"ngIf"],[3,"class","pBind",4,"ngIf"],[3,"pBind"],[3,"class","ngClass","pBind",4,"ngIf"],[3,"ngClass","pBind"],[4,"ngTemplateOutlet"]],template:function(i,n){i&1&&(j(),L(0),l(1,Ie,2,1,"ng-container",0)(2,we,2,4,"span",1),u(3,"span",2),z(4),f()),i&2&&(c(),o("ngIf",!n.iconTemplate&&!n._iconTemplate),c(),o("ngIf",n.iconTemplate||n._iconTemplate),c(),p(n.cx("label")),o("pBind",n.ptm("label")),c(),Q(n.value))},dependencies:[G,O,H,q,C,d],encapsulation:2,changeDetection:0})}return t})(),st=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=N({type:t});static \u0275inj=A({imports:[Ee,C,C]})}return t})();var dt={stable:"success",experimental:"info",deprecated:"warn"},mt={invokes:"warn",references:"info",mentions:"secondary",supersedes:"success"};function Be(t){return t>=.75?"high":t>=.45?"medium":"low"}function gt(t){let s=Be(t);return s==="high"?"success":s==="medium"?"info":"warn"}var Se=["data-p-icon","times-circle"],ge=(()=>{class t extends se{pathId;onInit(){this.pathId="url(#"+ae()+")"}static \u0275fac=(()=>{let e;return function(n){return(e||(e=y(t)))(n||t)}})();static \u0275cmp=b({type:t,selectors:[["","data-p-icon","times-circle"]],features:[I],attrs:Se,decls:5,vars:2,consts:[["fill-rule","evenodd","clip-rule","evenodd","d","M7 14C5.61553 14 4.26215 13.5895 3.11101 12.8203C1.95987 12.0511 1.06266 10.9579 0.532846 9.67879C0.00303296 8.3997 -0.13559 6.99224 0.134506 5.63437C0.404603 4.2765 1.07129 3.02922 2.05026 2.05026C3.02922 1.07129 4.2765 0.404603 5.63437 0.134506C6.99224 -0.13559 8.3997 0.00303296 9.67879 0.532846C10.9579 1.06266 12.0511 1.95987 12.8203 3.11101C13.5895 4.26215 14 5.61553 14 7C14 8.85652 13.2625 10.637 11.9497 11.9497C10.637 13.2625 8.85652 14 7 14ZM7 1.16667C5.84628 1.16667 4.71846 1.50879 3.75918 2.14976C2.79989 2.79074 2.05222 3.70178 1.61071 4.76768C1.16919 5.83358 1.05367 7.00647 1.27876 8.13803C1.50384 9.26958 2.05941 10.309 2.87521 11.1248C3.69102 11.9406 4.73042 12.4962 5.86198 12.7212C6.99353 12.9463 8.16642 12.8308 9.23232 12.3893C10.2982 11.9478 11.2093 11.2001 11.8502 10.2408C12.4912 9.28154 12.8333 8.15373 12.8333 7C12.8333 5.45291 12.2188 3.96918 11.1248 2.87521C10.0308 1.78125 8.5471 1.16667 7 1.16667ZM4.66662 9.91668C4.58998 9.91704 4.51404 9.90209 4.44325 9.87271C4.37246 9.84333 4.30826 9.8001 4.2544 9.74557C4.14516 9.6362 4.0838 9.48793 4.0838 9.33335C4.0838 9.17876 4.14516 9.0305 4.2544 8.92113L6.17553 7L4.25443 5.07891C4.15139 4.96832 4.09529 4.82207 4.09796 4.67094C4.10063 4.51982 4.16185 4.37563 4.26872 4.26876C4.3756 4.16188 4.51979 4.10066 4.67091 4.09799C4.82204 4.09532 4.96829 4.15142 5.07887 4.25446L6.99997 6.17556L8.92106 4.25446C9.03164 4.15142 9.1779 4.09532 9.32903 4.09799C9.48015 4.10066 9.62434 4.16188 9.73121 4.26876C9.83809 4.37563 9.89931 4.51982 9.90198 4.67094C9.90464 4.82207 9.84855 4.96832 9.74551 5.07891L7.82441 7L9.74554 8.92113C9.85478 9.0305 9.91614 9.17876 9.91614 9.33335C9.91614 9.48793 9.85478 9.6362 9.74554 9.74557C9.69168 9.8001 9.62748 9.84333 9.55669 9.87271C9.4859 9.90209 9.40996 9.91704 9.33332 9.91668C9.25668 9.91704 9.18073 9.90209 9.10995 9.87271C9.03916 9.84333 8.97495 9.8001 8.9211 9.74557L6.99997 7.82444L5.07884 9.74557C5.02499 9.8001 4.96078 9.84333 4.88999 9.87271C4.81921 9.90209 4.74326 9.91704 4.66662 9.91668Z","fill","currentColor"],[3,"id"],["width","14","height","14","fill","white"]],template:function(i,n){i&1&&(V(),W(0,"g"),ee(1,"path",0),X(),W(2,"defs")(3,"clipPath",1),ee(4,"rect",2),X()()),i&2&&(g("clip-path",n.pathId),c(3),ne("id",n.pathId))},encapsulation:2})}return t})();var ue=`
|
|
55
|
-
.p-chip {
|
|
56
|
-
display: inline-flex;
|
|
57
|
-
align-items: center;
|
|
58
|
-
background: dt('chip.background');
|
|
59
|
-
color: dt('chip.color');
|
|
60
|
-
border-radius: dt('chip.border.radius');
|
|
61
|
-
padding-block: dt('chip.padding.y');
|
|
62
|
-
padding-inline: dt('chip.padding.x');
|
|
63
|
-
gap: dt('chip.gap');
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
.p-chip-icon {
|
|
67
|
-
color: dt('chip.icon.color');
|
|
68
|
-
font-size: dt('chip.icon.size');
|
|
69
|
-
width: dt('chip.icon.size');
|
|
70
|
-
height: dt('chip.icon.size');
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
.p-chip-image {
|
|
74
|
-
border-radius: 50%;
|
|
75
|
-
width: dt('chip.image.width');
|
|
76
|
-
height: dt('chip.image.height');
|
|
77
|
-
margin-inline-start: calc(-1 * dt('chip.padding.y'));
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
.p-chip:has(.p-chip-remove-icon) {
|
|
81
|
-
padding-inline-end: dt('chip.padding.y');
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
.p-chip:has(.p-chip-image) {
|
|
85
|
-
padding-block-start: calc(dt('chip.padding.y') / 2);
|
|
86
|
-
padding-block-end: calc(dt('chip.padding.y') / 2);
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
.p-chip-remove-icon {
|
|
90
|
-
cursor: pointer;
|
|
91
|
-
font-size: dt('chip.remove.icon.size');
|
|
92
|
-
width: dt('chip.remove.icon.size');
|
|
93
|
-
height: dt('chip.remove.icon.size');
|
|
94
|
-
color: dt('chip.remove.icon.color');
|
|
95
|
-
border-radius: 50%;
|
|
96
|
-
transition:
|
|
97
|
-
outline-color dt('chip.transition.duration'),
|
|
98
|
-
box-shadow dt('chip.transition.duration');
|
|
99
|
-
outline-color: transparent;
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
.p-chip-remove-icon:focus-visible {
|
|
103
|
-
box-shadow: dt('chip.remove.icon.focus.ring.shadow');
|
|
104
|
-
outline: dt('chip.remove.icon.focus.ring.width') dt('chip.remove.icon.focus.ring.style') dt('chip.remove.icon.focus.ring.color');
|
|
105
|
-
outline-offset: dt('chip.remove.icon.focus.ring.offset');
|
|
106
|
-
}
|
|
107
|
-
`;var Me=["removeicon"],Ae=["*"];function De(t,s){if(t&1){let e=E();u(0,"img",4),B("error",function(n){h(e);let r=a();return v(r.imageError(n))}),f()}if(t&2){let e=a();p(e.cx("image")),o("pBind",e.ptm("image"))("src",e.image,te)("alt",e.alt)}}function Ve(t,s){if(t&1&&P(0,"span",6),t&2){let e=a(2);p(e.icon),o("pBind",e.ptm("icon"))("ngClass",e.cx("icon"))}}function Ne(t,s){if(t&1&&l(0,Ve,1,4,"span",5),t&2){let e=a();o("ngIf",e.icon)}}function Fe(t,s){if(t&1&&(u(0,"div",7),z(1),f()),t&2){let e=a();p(e.cx("label")),o("pBind",e.ptm("label")),c(),Q(e.label)}}function Pe(t,s){if(t&1){let e=E();u(0,"span",11),B("click",function(n){h(e);let r=a(3);return v(r.close(n))})("keydown",function(n){h(e);let r=a(3);return v(r.onKeydown(n))}),f()}if(t&2){let e=a(3);p(e.removeIcon),o("pBind",e.ptm("removeIcon"))("ngClass",e.cx("removeIcon")),g("tabindex",e.disabled?-1:0)("aria-label",e.removeAriaLabel)}}function je(t,s){if(t&1){let e=E();V(),u(0,"svg",12),B("click",function(n){h(e);let r=a(3);return v(r.close(n))})("keydown",function(n){h(e);let r=a(3);return v(r.onKeydown(n))}),f()}if(t&2){let e=a(3);p(e.cx("removeIcon")),o("pBind",e.ptm("removeIcon")),g("tabindex",e.disabled?-1:0)("aria-label",e.removeAriaLabel)}}function Le(t,s){if(t&1&&(w(0),l(1,Pe,1,6,"span",9)(2,je,1,5,"svg",10),k()),t&2){let e=a(2);c(),o("ngIf",e.removeIcon),c(),o("ngIf",!e.removeIcon)}}function Re(t,s){}function ze(t,s){t&1&&l(0,Re,0,0,"ng-template")}function Qe(t,s){if(t&1){let e=E();u(0,"span",13),B("click",function(n){h(e);let r=a(2);return v(r.close(n))})("keydown",function(n){h(e);let r=a(2);return v(r.onKeydown(n))}),l(1,ze,1,0,null,14),f()}if(t&2){let e=a(2);p(e.cx("removeIcon")),o("pBind",e.ptm("removeIcon")),g("tabindex",e.disabled?-1:0)("aria-label",e.removeAriaLabel),c(),o("ngTemplateOutlet",e.removeIconTemplate||e._removeIconTemplate)}}function Ke(t,s){if(t&1&&(w(0),l(1,Le,3,2,"ng-container",3)(2,Qe,2,6,"span",8),k()),t&2){let e=a();c(),o("ngIf",!e.removeIconTemplate&&!e._removeIconTemplate),c(),o("ngIf",e.removeIconTemplate||e._removeIconTemplate)}}var Oe={root:({instance:t})=>({display:!t.visible&&"none"})},He={root:({instance:t})=>["p-chip p-component",{"p-disabled":t.disabled}],image:"p-chip-image",icon:"p-chip-icon",label:"p-chip-label",removeIcon:"p-chip-remove-icon"},fe=(()=>{class t extends Y{name="chip";style=ue;classes=He;inlineStyles=Oe;static \u0275fac=(()=>{let e;return function(n){return(e||(e=y(t)))(n||t)}})();static \u0275prov=M({token:t,factory:t.\u0275fac})}return t})();var _e=new D("CHIP_INSTANCE"),qe=(()=>{class t extends U{componentName="Chip";$pcChip=_(_e,{optional:!0,skipSelf:!0})??void 0;bindDirectiveInstance=_(d,{self:!0});onAfterViewChecked(){this.bindDirectiveInstance.setAttrs(this.ptms(["host","root"]))}label;icon;image;alt;styleClass;disabled=!1;removable=!1;removeIcon;onRemove=new J;onImageError=new J;visible=!0;get removeAriaLabel(){return this.config.getTranslation(ce.ARIA).removeLabel}get chipProps(){return this._chipProps}set chipProps(e){this._chipProps=e,e&&typeof e=="object"&&Object.entries(e).forEach(([i,n])=>this[`_${i}`]!==n&&(this[`_${i}`]=n))}_chipProps;_componentStyle=_(fe);removeIconTemplate;templates;_removeIconTemplate;onAfterContentInit(){this.templates.forEach(e=>{e.getType()==="removeicon"?this._removeIconTemplate=e.template:this._removeIconTemplate=e.template})}onChanges(e){if(e.chipProps&&e.chipProps.currentValue){let{currentValue:i}=e.chipProps;i.label!==void 0&&(this.label=i.label),i.icon!==void 0&&(this.icon=i.icon),i.image!==void 0&&(this.image=i.image),i.alt!==void 0&&(this.alt=i.alt),i.styleClass!==void 0&&(this.styleClass=i.styleClass),i.removable!==void 0&&(this.removable=i.removable),i.removeIcon!==void 0&&(this.removeIcon=i.removeIcon)}}close(e){this.visible=!1,this.onRemove.emit(e)}onKeydown(e){(e.key==="Enter"||e.key==="Backspace")&&this.close(e)}imageError(e){this.onImageError.emit(e)}get dataP(){return this.cn({removable:this.removable})}static \u0275fac=(()=>{let e;return function(n){return(e||(e=y(t)))(n||t)}})();static \u0275cmp=b({type:t,selectors:[["p-chip"]],contentQueries:function(i,n,r){if(i&1&&R(r,Me,4)(r,$,4),i&2){let m;x(m=T())&&(n.removeIconTemplate=m.first),x(m=T())&&(n.templates=m)}},hostVars:6,hostBindings:function(i,n){i&2&&(g("aria-label",n.label)("data-p",n.dataP),oe(n.sx("root")),p(n.cn(n.cx("root"),n.styleClass)))},inputs:{label:"label",icon:"icon",image:"image",alt:"alt",styleClass:"styleClass",disabled:[2,"disabled","disabled",S],removable:[2,"removable","removable",S],removeIcon:"removeIcon",chipProps:"chipProps"},outputs:{onRemove:"onRemove",onImageError:"onImageError"},features:[K([fe,{provide:_e,useExisting:t},{provide:Z,useExisting:t}]),F([d]),I],ngContentSelectors:Ae,decls:6,vars:4,consts:[["iconTemplate",""],[3,"pBind","class","src","alt","error",4,"ngIf","ngIfElse"],[3,"pBind","class",4,"ngIf"],[4,"ngIf"],[3,"error","pBind","src","alt"],[3,"pBind","class","ngClass",4,"ngIf"],[3,"pBind","ngClass"],[3,"pBind"],["role","button",3,"pBind","class","click","keydown",4,"ngIf"],["role","button",3,"pBind","class","ngClass","click","keydown",4,"ngIf"],["data-p-icon","times-circle","role","button",3,"pBind","class","click","keydown",4,"ngIf"],["role","button",3,"click","keydown","pBind","ngClass"],["data-p-icon","times-circle","role","button",3,"click","keydown","pBind"],["role","button",3,"click","keydown","pBind"],[4,"ngTemplateOutlet"]],template:function(i,n){if(i&1&&(j(),L(0),l(1,De,1,5,"img",1)(2,Ne,1,1,"ng-template",null,0,re)(4,Fe,2,4,"div",2)(5,Ke,3,2,"ng-container",3)),i&2){let r=ie(3);c(),o("ngIf",n.image)("ngIfElse",r),c(3),o("ngIf",n.label),c(),o("ngIf",n.removable)}},dependencies:[G,O,H,q,ge,C,d],encapsulation:2,changeDetection:0})}return t})(),Pt=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=N({type:t});static \u0275inj=A({imports:[qe,C,C]})}return t})();export{qe as a,Pt as b,Ee as c,st as d,dt as e,mt as f,Be as g,gt as h};
|