@ng-prism/core 22.2.0-beta.3 → 22.2.0-beta.5
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/app/canvas/prism-canvas-bg-pill.component.js +1 -1
- package/dist/app/canvas/prism-canvas-rulers.component.js +1 -1
- package/dist/app/canvas/prism-canvas-toolbar.component.d.ts +24 -8
- package/dist/app/canvas/prism-canvas-toolbar.component.d.ts.map +1 -1
- package/dist/app/canvas/prism-canvas-toolbar.component.js +41 -24
- package/dist/app/canvas/prism-template-popover.component.js +1 -1
- package/dist/app/component-head/prism-component-head.component.d.ts +12 -0
- package/dist/app/component-head/prism-component-head.component.d.ts.map +1 -1
- package/dist/app/component-head/prism-component-head.component.js +46 -11
- package/dist/app/component-head/prism-stat.component.d.ts +1 -1
- package/dist/app/component-head/prism-stat.component.d.ts.map +1 -1
- package/dist/app/component-head/prism-stat.component.js +12 -9
- package/dist/app/component-header/prism-component-header.component.js +1 -1
- package/dist/app/controls/boolean-control.component.js +1 -1
- package/dist/app/controls/json-control.component.js +1 -1
- package/dist/app/controls/number-control.component.js +1 -1
- package/dist/app/controls/string-control.component.js +1 -1
- package/dist/app/controls/union-control.component.js +1 -1
- package/dist/app/header/prism-header.component.js +1 -1
- package/dist/app/icons/icon-registry.d.ts +15 -0
- package/dist/app/icons/icon-registry.d.ts.map +1 -0
- package/dist/app/icons/icon-registry.js +42 -0
- package/dist/app/icons/prism-icon.component.d.ts +2 -2
- package/dist/app/icons/prism-icon.component.d.ts.map +1 -1
- package/dist/app/icons/prism-icon.component.js +7 -32
- package/dist/app/layout-menu/prism-layout-menu.component.js +1 -1
- package/dist/app/page-renderer/prism-page-renderer.component.js +1 -1
- package/dist/app/panels/a11y/a11y-audit.service.d.ts +1 -1
- package/dist/app/panels/a11y/a11y-audit.service.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-header-badge.component.js +1 -1
- package/dist/app/panels/a11y/a11y-keyboard-overlay.component.js +1 -1
- package/dist/app/panels/a11y/a11y-keyboard.component.js +1 -1
- package/dist/app/panels/a11y/a11y-keyboard.service.d.ts +1 -1
- package/dist/app/panels/a11y/a11y-keyboard.service.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-overlay-host.component.js +1 -1
- package/dist/app/panels/a11y/a11y-panel-state.service.d.ts +1 -1
- package/dist/app/panels/a11y/a11y-panel-state.service.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-panel.component.js +1 -1
- package/dist/app/panels/a11y/a11y-perspective.service.d.ts +1 -1
- package/dist/app/panels/a11y/a11y-perspective.service.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-score.component.js +1 -1
- package/dist/app/panels/a11y/a11y-sr-overlay.component.js +1 -1
- package/dist/app/panels/a11y/a11y-sr.component.js +1 -1
- package/dist/app/panels/a11y/a11y-sr.service.d.ts +1 -1
- package/dist/app/panels/a11y/a11y-sr.service.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-summary.d.ts +15 -0
- package/dist/app/panels/a11y/a11y-summary.d.ts.map +1 -0
- package/dist/app/panels/a11y/a11y-summary.js +33 -0
- package/dist/app/panels/a11y/a11y-tree.component.js +2 -2
- package/dist/app/panels/a11y/a11y-tree.service.d.ts +1 -1
- package/dist/app/panels/a11y/a11y-tree.service.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-violations.component.js +3 -3
- package/dist/app/panels/a11y/a11y.types.d.ts +14 -0
- package/dist/app/panels/a11y/a11y.types.d.ts.map +1 -1
- package/dist/app/panels/builtin-navigation-decorations.d.ts +8 -0
- package/dist/app/panels/builtin-navigation-decorations.d.ts.map +1 -0
- package/dist/app/panels/builtin-navigation-decorations.js +20 -0
- package/dist/app/panels/controls/prism-controls-panel.component.js +1 -1
- package/dist/app/panels/events/prism-events-panel.component.js +1 -1
- package/dist/app/panels/events/prism-json-node.component.js +1 -1
- package/dist/app/panels/panel-host/panel-badge.d.ts +35 -0
- package/dist/app/panels/panel-host/panel-badge.d.ts.map +1 -0
- package/dist/app/panels/panel-host/panel-badge.js +37 -0
- package/dist/app/panels/panel-host/prism-panel-host.component.d.ts +9 -6
- package/dist/app/panels/panel-host/prism-panel-host.component.d.ts.map +1 -1
- package/dist/app/panels/panel-host/prism-panel-host.component.js +27 -37
- package/dist/app/renderer/overlay-resolver.d.ts.map +1 -1
- package/dist/app/renderer/overlay-resolver.js +12 -1
- package/dist/app/renderer/prism-renderer.component.js +3 -5
- package/dist/app/services/prism-canvas.service.d.ts +1 -1
- package/dist/app/services/prism-canvas.service.d.ts.map +1 -1
- package/dist/app/services/prism-capture.service.d.ts +17 -3
- package/dist/app/services/prism-capture.service.d.ts.map +1 -1
- package/dist/app/services/prism-capture.service.js +96 -3
- package/dist/app/services/prism-event-log.service.d.ts +1 -1
- package/dist/app/services/prism-event-log.service.d.ts.map +1 -1
- package/dist/app/services/prism-layout.service.d.ts +1 -1
- package/dist/app/services/prism-layout.service.d.ts.map +1 -1
- package/dist/app/services/prism-manifest.service.d.ts +1 -1
- package/dist/app/services/prism-manifest.service.d.ts.map +1 -1
- package/dist/app/services/prism-navigation.service.d.ts +1 -1
- package/dist/app/services/prism-navigation.service.d.ts.map +1 -1
- package/dist/app/services/prism-panel.service.d.ts +1 -1
- package/dist/app/services/prism-panel.service.d.ts.map +1 -1
- package/dist/app/services/prism-persistence.service.d.ts +1 -1
- package/dist/app/services/prism-persistence.service.d.ts.map +1 -1
- package/dist/app/services/prism-plugin.service.d.ts +8 -2
- package/dist/app/services/prism-plugin.service.d.ts.map +1 -1
- package/dist/app/services/prism-plugin.service.js +15 -0
- package/dist/app/services/prism-renderer.service.d.ts +1 -1
- package/dist/app/services/prism-renderer.service.d.ts.map +1 -1
- package/dist/app/services/prism-search.service.d.ts +1 -1
- package/dist/app/services/prism-search.service.d.ts.map +1 -1
- package/dist/app/services/prism-theme.service.d.ts +1 -1
- package/dist/app/services/prism-theme.service.d.ts.map +1 -1
- package/dist/app/services/prism-url-state.service.d.ts +1 -1
- package/dist/app/services/prism-url-state.service.d.ts.map +1 -1
- package/dist/app/services/prism-variant-bg.service.d.ts +1 -1
- package/dist/app/services/prism-variant-bg.service.d.ts.map +1 -1
- package/dist/app/shell/prism-shell.component.js +2 -2
- package/dist/app/sidebar/navigation-decorations.d.ts +67 -0
- package/dist/app/sidebar/navigation-decorations.d.ts.map +1 -0
- package/dist/app/sidebar/navigation-decorations.js +84 -0
- package/dist/app/sidebar/prism-sidebar.component.d.ts +23 -6
- package/dist/app/sidebar/prism-sidebar.component.d.ts.map +1 -1
- package/dist/app/sidebar/prism-sidebar.component.js +120 -45
- package/dist/app/variant-ribbon/prism-variant-ribbon.component.js +3 -3
- package/dist/app/view-tab-bar/prism-view-panel-host.component.js +1 -1
- package/dist/app/view-tab-bar/prism-view-tab-bar.component.js +1 -1
- package/dist/builder/a11y/a11y-report-reader.d.ts +15 -1
- package/dist/builder/a11y/a11y-report-reader.d.ts.map +1 -1
- package/dist/builder/a11y/a11y-report-reader.js +37 -0
- package/dist/builder/scanner/component.scanner.d.ts.map +1 -1
- package/dist/builder/scanner/component.scanner.js +30 -3
- package/dist/builder/shared/prism-pipeline.d.ts.map +1 -1
- package/dist/builder/shared/prism-pipeline.js +19 -2
- package/dist/plugin/index.d.ts +2 -1
- package/dist/plugin/index.d.ts.map +1 -1
- package/dist/plugin/index.js +10 -0
- package/dist/plugin/plugin.types.d.ts +52 -0
- package/dist/plugin/plugin.types.d.ts.map +1 -1
- package/dist/shared/canvas-bg.type.d.ts +24 -6
- package/dist/shared/canvas-bg.type.d.ts.map +1 -1
- package/dist/shared/canvas-bg.type.js +6 -5
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prism-sidebar.component.d.ts","sourceRoot":"","sources":["../../../src/app/sidebar/prism-sidebar.component.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"prism-sidebar.component.d.ts","sourceRoot":"","sources":["../../../src/app/sidebar/prism-sidebar.component.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AAEjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAKL,KAAK,cAAc,EACnB,KAAK,eAAe,EACrB,MAAM,6BAA6B,CAAC;;AAiCrC,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,cAAc,EAAE,CAAC;CACzB;AAED,UAAU,WAAW;IACnB,IAAI,EAAE,cAAc,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,eAAe,GAAG,IAAI,CAAC;CACrC;AAED,UAAU,iBAAiB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,MAAM,EAAE,cAAc,CAAC;CACxB;AAED,qBAkWa,qBAAqB;IAChC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,yBAAkC;IACtE,SAAS,CAAC,QAAQ,CAAC,aAAa,qBAA8B;IAC9D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA8B;IAC5D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAC6B;IAEzD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAK1B;IAGF,SAAS,CAAC,WAAW,CAAC,CAAC,EAAE,aAAa,GAAG,IAAI;IAa7C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA6C;IAE1E,SAAS,CAAC,QAAQ,CAAC,UAAU,yCAE1B;IAEH,SAAS,CAAC,QAAQ,CAAC,cAAc,oDAc9B;IAEH,SAAS,CAAC,QAAQ,CAAC,iBAAiB;;;;;;SAqBjC;IAEH,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAI3C,SAAS,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAU3C,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM;IAM/C,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM;IAMjD,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,cAAc,GAAG,eAAe,GAAG,SAAS;IAMvE;;;;;OAKG;IACH,SAAS,CAAC,aAAa,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM;IAKvD,SAAS,CAAC,WAAW,CACnB,IAAI,EAAE,cAAc,EACpB,WAAW,EAAE,eAAe,GAAG,IAAI,GAClC,MAAM,GAAG,IAAI;IAShB,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO;IAWjD,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;IAQ9C,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,aAAa;yCA5JV,qBAAqB;2CAArB,qBAAqB;CAiKjC"}
|
|
@@ -1,12 +1,18 @@
|
|
|
1
1
|
import { Component, computed, inject, signal, viewChild, HostListener, ChangeDetectionStrategy, } from '@angular/core';
|
|
2
2
|
import { PrismIconComponent } from '../icons/prism-icon.component.js';
|
|
3
|
+
import { BUILTIN_NAVIGATION_DECORATIONS } from '../panels/builtin-navigation-decorations.js';
|
|
3
4
|
import { PrismNavigationService } from '../services/prism-navigation.service.js';
|
|
5
|
+
import { PrismPluginService } from '../services/prism-plugin.service.js';
|
|
4
6
|
import { PrismSearchService } from '../services/prism-search.service.js';
|
|
7
|
+
import { decorateItem, lifecycleIcon, resolveNavigationDecorations, rollupCategory, } from './navigation-decorations.js';
|
|
5
8
|
import * as i0 from "@angular/core";
|
|
6
9
|
const _c0 = ["filterInput"];
|
|
7
10
|
const _forTrack0 = ($index, $item) => $item.name;
|
|
8
11
|
function _forTrack1($index, $item) { /* @ts-ignore */
|
|
9
12
|
return this.itemKey($item); }
|
|
13
|
+
function _forTrack2($index, $item) { /* @ts-ignore */
|
|
14
|
+
return this.itemKey($item.item); }
|
|
15
|
+
const _forTrack3 = ($index, $item) => $item.id;
|
|
10
16
|
function PrismSidebarComponent_Conditional_8_For_8_Conditional_5_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
11
17
|
const _r4 = i0.ɵɵgetCurrentView();
|
|
12
18
|
i0.ɵɵelementStart(0, "button", 17);
|
|
@@ -48,7 +54,7 @@ function PrismSidebarComponent_Conditional_8_For_8_Template(rf, ctx) { if (rf &
|
|
|
48
54
|
i0.ɵɵadvance();
|
|
49
55
|
i0.ɵɵproperty("size", 10);
|
|
50
56
|
i0.ɵɵadvance();
|
|
51
|
-
i0.ɵɵstyleProp("
|
|
57
|
+
i0.ɵɵstyleProp("--%NS%chip", cat_r2.color);
|
|
52
58
|
i0.ɵɵadvance();
|
|
53
59
|
i0.ɵɵtextInterpolate1(" ", cat_r2.name, " ");
|
|
54
60
|
i0.ɵɵadvance();
|
|
@@ -73,36 +79,59 @@ function PrismSidebarComponent_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
|
73
79
|
i0.ɵɵadvance();
|
|
74
80
|
i0.ɵɵrepeater(ctx_r2.pageCategories());
|
|
75
81
|
} }
|
|
76
|
-
function
|
|
77
|
-
i0.ɵɵelementStart(0, "span",
|
|
78
|
-
i0.ɵɵ
|
|
82
|
+
function PrismSidebarComponent_For_10_For_7_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
83
|
+
i0.ɵɵelementStart(0, "span", 24);
|
|
84
|
+
i0.ɵɵtext(1);
|
|
79
85
|
i0.ɵɵelementEnd();
|
|
86
|
+
} if (rf & 2) {
|
|
87
|
+
const cat_r7 = i0.ɵɵnextContext().$implicit;
|
|
88
|
+
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
89
|
+
i0.ɵɵclassProp("sb-group-rollup--warn", cat_r7.rollup.variant === "warn")("sb-group-rollup--danger", cat_r7.rollup.variant === "danger");
|
|
90
|
+
i0.ɵɵattribute("title", ctx_r2.rollupTooltip(cat_r7.rollup))("aria-label", ctx_r2.rollupTooltip(cat_r7.rollup));
|
|
91
|
+
i0.ɵɵadvance();
|
|
92
|
+
i0.ɵɵtextInterpolate(cat_r7.rollup.problems);
|
|
80
93
|
} }
|
|
81
|
-
function
|
|
94
|
+
function PrismSidebarComponent_For_10_For_7_Conditional_8_For_2_Conditional_4_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
95
|
+
i0.ɵɵelement(0, "prism-icon", 29);
|
|
96
|
+
} if (rf & 2) {
|
|
97
|
+
const mark_r11 = ctx.$implicit;
|
|
98
|
+
i0.ɵɵclassMap("sb-health sb-health--" + mark_r11.variant);
|
|
99
|
+
i0.ɵɵproperty("name", mark_r11.icon)("size", 11);
|
|
100
|
+
} }
|
|
101
|
+
function PrismSidebarComponent_For_10_For_7_Conditional_8_For_2_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
102
|
+
i0.ɵɵelementStart(0, "span", 27);
|
|
103
|
+
i0.ɵɵrepeaterCreate(1, PrismSidebarComponent_For_10_For_7_Conditional_8_For_2_Conditional_4_For_2_Template, 1, 4, "prism-icon", 28, _forTrack3);
|
|
104
|
+
i0.ɵɵelementEnd();
|
|
105
|
+
} if (rf & 2) {
|
|
106
|
+
const row_r10 = i0.ɵɵnextContext().$implicit;
|
|
107
|
+
i0.ɵɵadvance();
|
|
108
|
+
i0.ɵɵrepeater(row_r10.decorations.marks);
|
|
109
|
+
} }
|
|
110
|
+
function PrismSidebarComponent_For_10_For_7_Conditional_8_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
82
111
|
const _r9 = i0.ɵɵgetCurrentView();
|
|
83
112
|
i0.ɵɵelementStart(0, "button", 17);
|
|
84
|
-
i0.ɵɵlistener("click", function
|
|
85
|
-
i0.ɵɵelement(1, "prism-icon",
|
|
113
|
+
i0.ɵɵlistener("click", function PrismSidebarComponent_For_10_For_7_Conditional_8_For_2_Template_button_click_0_listener() { const row_r10 = i0.ɵɵrestoreView(_r9).$implicit; const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.onSelect(row_r10.item)); });
|
|
114
|
+
i0.ɵɵelement(1, "prism-icon", 26);
|
|
86
115
|
i0.ɵɵelementStart(2, "span", 18);
|
|
87
116
|
i0.ɵɵtext(3);
|
|
88
117
|
i0.ɵɵelementEnd();
|
|
89
|
-
i0.ɵɵconditionalCreate(4,
|
|
118
|
+
i0.ɵɵconditionalCreate(4, PrismSidebarComponent_For_10_For_7_Conditional_8_For_2_Conditional_4_Template, 3, 0, "span", 27);
|
|
90
119
|
i0.ɵɵelementEnd();
|
|
91
120
|
} if (rf & 2) {
|
|
92
|
-
const
|
|
121
|
+
const row_r10 = ctx.$implicit;
|
|
93
122
|
const ctx_r2 = i0.ɵɵnextContext(4);
|
|
94
|
-
i0.ɵɵclassProp("sb-item--active", ctx_r2.isActive(
|
|
95
|
-
i0.ɵɵattribute("title", ctx_r2.itemTooltip(
|
|
123
|
+
i0.ɵɵclassProp("sb-item--active", ctx_r2.isActive(row_r10.item))("sb-item--deprecated", ctx_r2.itemStatus(row_r10.item) === "deprecated");
|
|
124
|
+
i0.ɵɵattribute("title", ctx_r2.itemTooltip(row_r10.item, row_r10.decorations));
|
|
96
125
|
i0.ɵɵadvance();
|
|
97
|
-
i0.ɵɵproperty("size", 12);
|
|
126
|
+
i0.ɵɵproperty("name", row_r10.icon)("size", 12);
|
|
98
127
|
i0.ɵɵadvance(2);
|
|
99
|
-
i0.ɵɵtextInterpolate(ctx_r2.itemLabel(
|
|
128
|
+
i0.ɵɵtextInterpolate(ctx_r2.itemLabel(row_r10.item));
|
|
100
129
|
i0.ɵɵadvance();
|
|
101
|
-
i0.ɵɵconditional(
|
|
130
|
+
i0.ɵɵconditional(row_r10.decorations ? 4 : -1);
|
|
102
131
|
} }
|
|
103
|
-
function
|
|
132
|
+
function PrismSidebarComponent_For_10_For_7_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
104
133
|
i0.ɵɵelementStart(0, "div", 15);
|
|
105
|
-
i0.ɵɵrepeaterCreate(1,
|
|
134
|
+
i0.ɵɵrepeaterCreate(1, PrismSidebarComponent_For_10_For_7_Conditional_8_For_2_Template, 5, 9, "button", 25, _forTrack2, true);
|
|
106
135
|
i0.ɵɵelementEnd();
|
|
107
136
|
} if (rf & 2) {
|
|
108
137
|
const cat_r7 = i0.ɵɵnextContext().$implicit;
|
|
@@ -115,10 +144,11 @@ function PrismSidebarComponent_For_10_For_7_Template(rf, ctx) { if (rf & 1) {
|
|
|
115
144
|
i0.ɵɵlistener("click", function PrismSidebarComponent_For_10_For_7_Template_button_click_1_listener() { const cat_r7 = i0.ɵɵrestoreView(_r6).$implicit; const section_r8 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.toggleCollapse("sec:" + section_r8.name + ":" + cat_r7.name)); });
|
|
116
145
|
i0.ɵɵelement(2, "prism-icon", 13)(3, "span", 14);
|
|
117
146
|
i0.ɵɵtext(4);
|
|
118
|
-
i0.ɵɵ
|
|
119
|
-
i0.ɵɵ
|
|
147
|
+
i0.ɵɵconditionalCreate(5, PrismSidebarComponent_For_10_For_7_Conditional_5_Template, 2, 7, "span", 22);
|
|
148
|
+
i0.ɵɵelementStart(6, "span", 23);
|
|
149
|
+
i0.ɵɵtext(7);
|
|
120
150
|
i0.ɵɵelementEnd()();
|
|
121
|
-
i0.ɵɵconditionalCreate(
|
|
151
|
+
i0.ɵɵconditionalCreate(8, PrismSidebarComponent_For_10_For_7_Conditional_8_Template, 3, 0, "div", 15);
|
|
122
152
|
i0.ɵɵelementEnd();
|
|
123
153
|
} if (rf & 2) {
|
|
124
154
|
const cat_r7 = ctx.$implicit;
|
|
@@ -130,13 +160,15 @@ function PrismSidebarComponent_For_10_For_7_Template(rf, ctx) { if (rf & 1) {
|
|
|
130
160
|
i0.ɵɵadvance();
|
|
131
161
|
i0.ɵɵproperty("size", 10);
|
|
132
162
|
i0.ɵɵadvance();
|
|
133
|
-
i0.ɵɵstyleProp("
|
|
163
|
+
i0.ɵɵstyleProp("--%NS%chip", cat_r7.color);
|
|
134
164
|
i0.ɵɵadvance();
|
|
135
165
|
i0.ɵɵtextInterpolate1(" ", cat_r7.name, " ");
|
|
166
|
+
i0.ɵɵadvance();
|
|
167
|
+
i0.ɵɵconditional(cat_r7.rollup.problems ? 5 : -1);
|
|
136
168
|
i0.ɵɵadvance(2);
|
|
137
169
|
i0.ɵɵtextInterpolate(cat_r7.items.length);
|
|
138
170
|
i0.ɵɵadvance();
|
|
139
|
-
i0.ɵɵconditional(!ctx_r2.isCollapsed("sec:" + section_r8.name + ":" + cat_r7.name) ?
|
|
171
|
+
i0.ɵɵconditional(!ctx_r2.isCollapsed("sec:" + section_r8.name + ":" + cat_r7.name) ? 8 : -1);
|
|
140
172
|
} }
|
|
141
173
|
function PrismSidebarComponent_For_10_Template(rf, ctx) { if (rf & 1) {
|
|
142
174
|
i0.ɵɵelementStart(0, "div", 19)(1, "span", 20);
|
|
@@ -146,7 +178,7 @@ function PrismSidebarComponent_For_10_Template(rf, ctx) { if (rf & 1) {
|
|
|
146
178
|
i0.ɵɵelementStart(4, "span");
|
|
147
179
|
i0.ɵɵtext(5);
|
|
148
180
|
i0.ɵɵelementEnd()();
|
|
149
|
-
i0.ɵɵrepeaterCreate(6, PrismSidebarComponent_For_10_For_7_Template,
|
|
181
|
+
i0.ɵɵrepeaterCreate(6, PrismSidebarComponent_For_10_For_7_Template, 9, 10, "div", 10, _forTrack0);
|
|
150
182
|
} if (rf & 2) {
|
|
151
183
|
const section_r8 = ctx.$implicit;
|
|
152
184
|
i0.ɵɵadvance(2);
|
|
@@ -188,8 +220,11 @@ function categoryColor(name) {
|
|
|
188
220
|
export class PrismSidebarComponent {
|
|
189
221
|
navigationService = inject(PrismNavigationService);
|
|
190
222
|
searchService = inject(PrismSearchService);
|
|
223
|
+
pluginService = inject(PrismPluginService);
|
|
191
224
|
filterInput = viewChild('filterInput', /* @ts-ignore */
|
|
192
225
|
...(ngDevMode ? [{ debugName: "filterInput" }] : /* istanbul ignore next */ []));
|
|
226
|
+
decorations = computed(() => resolveNavigationDecorations(BUILTIN_NAVIGATION_DECORATIONS, this.pluginService.navigationDecorations()), /* @ts-ignore */
|
|
227
|
+
...(ngDevMode ? [{ debugName: "decorations" }] : /* istanbul ignore next */ []));
|
|
193
228
|
onGlobalKey(e) {
|
|
194
229
|
if (e.key !== '/' || e.ctrlKey || e.metaKey || e.altKey)
|
|
195
230
|
return;
|
|
@@ -224,16 +259,25 @@ export class PrismSidebarComponent {
|
|
|
224
259
|
}, /* @ts-ignore */
|
|
225
260
|
...(ngDevMode ? [{ debugName: "pageCategories" }] : /* istanbul ignore next */ []));
|
|
226
261
|
componentSections = computed(() => {
|
|
262
|
+
const defs = this.decorations();
|
|
227
263
|
return this.navigationService.sectionTree().map((section) => ({
|
|
228
264
|
name: section.name,
|
|
229
265
|
icon: sectionIcon(section.name),
|
|
230
266
|
color: categoryColor(section.name),
|
|
231
267
|
totalCount: section.totalCount,
|
|
232
|
-
categories: section.categories.map((cat) =>
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
268
|
+
categories: section.categories.map((cat) => {
|
|
269
|
+
const items = cat.items.map((item) => ({
|
|
270
|
+
item,
|
|
271
|
+
icon: lifecycleIcon(this.itemStatus(item)),
|
|
272
|
+
decorations: decorateItem(item, defs),
|
|
273
|
+
}));
|
|
274
|
+
return {
|
|
275
|
+
name: cat.name,
|
|
276
|
+
color: categoryColor(cat.name),
|
|
277
|
+
rollup: rollupCategory(items.map((row) => row.decorations)),
|
|
278
|
+
items,
|
|
279
|
+
};
|
|
280
|
+
}),
|
|
237
281
|
}));
|
|
238
282
|
}, /* @ts-ignore */
|
|
239
283
|
...(ngDevMode ? [{ debugName: "componentSections" }] : /* istanbul ignore next */ []));
|
|
@@ -266,13 +310,26 @@ export class PrismSidebarComponent {
|
|
|
266
310
|
? item.data.meta.showcaseConfig.status
|
|
267
311
|
: undefined;
|
|
268
312
|
}
|
|
269
|
-
|
|
313
|
+
/**
|
|
314
|
+
* Accessible name for the roll-up pill. The pill otherwise renders a bare
|
|
315
|
+
* number distinguished only by colour — a screen reader would read the
|
|
316
|
+
* group head as "Feedback 3 12" with nothing naming what either number
|
|
317
|
+
* means, and a colour-blind reader can't tell them apart at all.
|
|
318
|
+
*/
|
|
319
|
+
rollupTooltip(rollup) {
|
|
320
|
+
const noun = rollup.problems === 1 ? 'component needs' : 'components need';
|
|
321
|
+
return `${rollup.problems} ${noun} review`;
|
|
322
|
+
}
|
|
323
|
+
itemTooltip(item, decorations) {
|
|
270
324
|
const status = this.itemStatus(item);
|
|
325
|
+
const lines = [];
|
|
271
326
|
if (status === 'wip')
|
|
272
|
-
|
|
327
|
+
lines.push('Work in progress');
|
|
273
328
|
if (status === 'deprecated')
|
|
274
|
-
|
|
275
|
-
|
|
329
|
+
lines.push('Deprecated / Legacy');
|
|
330
|
+
if (decorations)
|
|
331
|
+
lines.push(decorations.tooltip);
|
|
332
|
+
return lines.length ? lines.join('\n') : null;
|
|
276
333
|
}
|
|
277
334
|
isActive(item) {
|
|
278
335
|
const active = this.navigationService.activeItem();
|
|
@@ -313,7 +370,7 @@ export class PrismSidebarComponent {
|
|
|
313
370
|
i0.ɵɵqueryAdvance();
|
|
314
371
|
} }, hostBindings: function PrismSidebarComponent_HostBindings(rf, ctx) { if (rf & 1) {
|
|
315
372
|
i0.ɵɵlistener("keydown", function PrismSidebarComponent_keydown_HostBindingHandler($event) { return ctx.onGlobalKey($event); }, i0.ɵɵresolveDocument);
|
|
316
|
-
} }, decls: 11, vars: 3, consts: [["filterInput", ""], [1, "prism-sidebar"], [1, "sb-filter"], ["name", "search", 3, "size"], ["placeholder", "Filter components\u2026", 3, "input", "value"], [1, "sb-scroll"], [1, "sb-pinned"], [1, "sb-pinned-head"], [1, "sb-pinned-head-l"], ["name", "pin", 1, "sb-pinned-pin", 3, "size"], [1, "sb-group", 3, "sb-group--collapsed"], [1, "sb-group"], [1, "sb-group-head", 3, "click"], ["name", "chevron-down", 3, "size"], [1, "sb-group-chip"], [1, "sb-group-body"], [1, "sb-item", 3, "sb-item--active"], [1, "sb-item", 3, "click"], [1, "sb-item-name"], [1, "sb-section-head"], [1, "sb-section-head-l"], [1, "sb-section-icon", 3, "name", "size"], [1, "sb-group-count"], [1, "sb-item", 3, "sb-item--active", "sb-item--deprecated"], ["name", "
|
|
373
|
+
} }, decls: 11, vars: 3, consts: [["filterInput", ""], [1, "prism-sidebar"], [1, "sb-filter"], ["name", "search", 3, "size"], ["placeholder", "Filter components\u2026", 3, "input", "value"], [1, "sb-scroll"], [1, "sb-pinned"], [1, "sb-pinned-head"], [1, "sb-pinned-head-l"], ["name", "pin", 1, "sb-pinned-pin", 3, "size"], [1, "sb-group", 3, "sb-group--collapsed"], [1, "sb-group"], [1, "sb-group-head", 3, "click"], ["name", "chevron-down", 3, "size"], [1, "sb-group-chip"], [1, "sb-group-body"], [1, "sb-item", 3, "sb-item--active"], [1, "sb-item", 3, "click"], [1, "sb-item-name"], [1, "sb-section-head"], [1, "sb-section-head-l"], [1, "sb-section-icon", 3, "name", "size"], [1, "sb-group-rollup", 3, "sb-group-rollup--warn", "sb-group-rollup--danger"], [1, "sb-group-count"], [1, "sb-group-rollup"], [1, "sb-item", 3, "sb-item--active", "sb-item--deprecated"], [1, "sb-item-icon", 3, "name", "size"], [1, "sb-item-health"], [3, "name", "size", "class"], [3, "name", "size"]], template: function PrismSidebarComponent_Template(rf, ctx) { if (rf & 1) {
|
|
317
374
|
i0.ɵɵelementStart(0, "nav", 1)(1, "div", 2);
|
|
318
375
|
i0.ɵɵelement(2, "prism-icon", 3);
|
|
319
376
|
i0.ɵɵelementStart(3, "input", 4, 0);
|
|
@@ -335,7 +392,7 @@ export class PrismSidebarComponent {
|
|
|
335
392
|
i0.ɵɵconditional(ctx.pageCategories().length > 0 ? 8 : -1);
|
|
336
393
|
i0.ɵɵadvance();
|
|
337
394
|
i0.ɵɵrepeater(ctx.componentSections());
|
|
338
|
-
} }, dependencies: [PrismIconComponent], styles: [".prism-sidebar[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n overflow: hidden;\n }\n\n .sb-filter[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin: 12px;\n padding: 0 10px;\n height: 30px;\n background: var(
|
|
395
|
+
} }, dependencies: [PrismIconComponent], styles: [".prism-sidebar[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n overflow: hidden;\n }\n\n .sb-filter[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin: 12px;\n padding: 0 10px;\n height: 30px;\n background: var(--%NS%prism-input-bg);\n border: 1px solid var(--%NS%prism-border);\n border-radius: 6px;\n color: var(--%NS%prism-text-muted);\n }\n .sb-filter[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n background: transparent;\n border: 0;\n outline: none;\n font-size: var(--%NS%fs-md);\n color: var(--%NS%prism-text);\n font-family: var(--%NS%font-sans);\n }\n .sb-filter[_ngcontent-%COMP%] input[_ngcontent-%COMP%]::placeholder { color: var(--%NS%prism-text-muted); }\n .sb-filter[_ngcontent-%COMP%] kbd[_ngcontent-%COMP%] {\n font-family: var(--%NS%font-mono);\n font-size: 10px;\n color: var(--%NS%prism-text-ghost);\n padding: 1px 5px;\n border: 1px solid var(--%NS%prism-border);\n border-radius: 3px;\n }\n\n .sb-scroll[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 10px 0 16px;\n padding-top: 0;\n }\n .sb-scroll[_ngcontent-%COMP%]::-webkit-scrollbar { width: 8px; }\n .sb-scroll[_ngcontent-%COMP%]::-webkit-scrollbar-thumb { background: var(--%NS%prism-border-strong); border-radius: 4px; }\n .sb-scroll[_ngcontent-%COMP%]::-webkit-scrollbar-track { background: transparent; }\n\n .sb-pinned[_ngcontent-%COMP%] {\n padding: 0 0 10px;\n margin-bottom: 4px;\n border-bottom: 1px solid var(--%NS%prism-border);\n border-top: 1px solid var(--%NS%prism-border);\n }\n .sb-section-head[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8px 14px 6px;\n font-size: 10.5px;\n font-weight: 700;\n letter-spacing: 0.09em;\n text-transform: uppercase;\n color: var(--%NS%prism-text-ghost);\n margin-top: 6px;\n }\n .sb-section-head-l[_ngcontent-%COMP%] { display: flex; align-items: center; gap: 6px; }\n .sb-section-icon[_ngcontent-%COMP%] { color: var(--%NS%prism-primary); }\n .sb-pinned-head[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8px 14px 6px;\n margin-top: 6px;\n font-size: 10.5px;\n font-weight: 700;\n letter-spacing: 0.09em;\n text-transform: uppercase;\n color: var(--%NS%prism-text-ghost);\n }\n .sb-pinned-head-l[_ngcontent-%COMP%] { display: flex; align-items: center; gap: 6px; }\n .sb-pinned-pin[_ngcontent-%COMP%] { color: var(--%NS%prism-accent); }\n\n .sb-group[_ngcontent-%COMP%] { margin-bottom: 4px; }\n .sb-group-head[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n width: 100%;\n padding: 8px 14px 6px;\n font-size: 10.5px;\n font-weight: 700;\n letter-spacing: 0.09em;\n text-transform: uppercase;\n color: var(--%NS%prism-text-ghost);\n cursor: pointer;\n user-select: none;\n background: none;\n border: none;\n text-align: left;\n font-family: var(--%NS%font-sans);\n }\n .sb-group-head[_ngcontent-%COMP%] prism-icon[_ngcontent-%COMP%] {\n transition: transform var(--%NS%dur-fast);\n color: var(--%NS%prism-text-ghost);\n }\n .sb-group--collapsed[_ngcontent-%COMP%] .sb-group-head[_ngcontent-%COMP%] prism-icon[_ngcontent-%COMP%] { transform: rotate(-90deg); }\n\n .sb-group-chip[_ngcontent-%COMP%] {\n width: 6px;\n height: 6px;\n border-radius: 2px;\n background: var(--%NS%chip, var(--%NS%prism-primary));\n box-shadow: 0 0 6px var(--%NS%chip, var(--%NS%prism-primary));\n }\n .sb-group-count[_ngcontent-%COMP%] {\n margin-left: auto;\n font-family: var(--%NS%font-mono);\n font-size: 10px;\n color: var(--%NS%prism-text-ghost);\n font-weight: 500;\n }\n\n .sb-group-rollup[_ngcontent-%COMP%] {\n margin-left: auto;\n font-family: var(--%NS%font-mono);\n font-size: 9.5px;\n font-weight: 600;\n letter-spacing: 0;\n padding: 1px 5px;\n border-radius: 8px;\n }\n .sb-group-rollup--warn[_ngcontent-%COMP%] {\n color: var(--%NS%prism-warn);\n background: color-mix(in srgb, var(--%NS%prism-warn) 16%, transparent);\n }\n .sb-group-rollup--danger[_ngcontent-%COMP%] {\n color: var(--%NS%prism-danger);\n background: color-mix(in srgb, var(--%NS%prism-danger) 16%, transparent);\n }\n .sb-group-rollup[_ngcontent-%COMP%] + .sb-group-count[_ngcontent-%COMP%] {\n margin-left: 6px;\n }\n\n .sb-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n width: 100%;\n height: 30px;\n padding: 0 14px 0 28px;\n font-size: 13px;\n color: var(--%NS%prism-text-2);\n cursor: pointer;\n border: none;\n border-left: 2px solid transparent;\n background: none;\n position: relative;\n transition: background var(--%NS%dur-fast), color var(--%NS%dur-fast);\n text-align: left;\n font-family: var(--%NS%font-sans);\n }\n .sb-item[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--%NS%prism-primary) 5%, transparent);\n color: var(--%NS%prism-text);\n }\n .sb-item--active[_ngcontent-%COMP%] {\n border-left-color: var(--%NS%prism-primary);\n background: color-mix(in srgb, var(--%NS%prism-primary) 12%, transparent);\n color: var(--%NS%prism-text);\n font-weight: 500;\n }\n .sb-item--%NS%active[_ngcontent-%COMP%]::before {\n content: '';\n position: absolute;\n left: -1px;\n top: 0;\n bottom: 0;\n width: 3px;\n background: linear-gradient(180deg, var(--%NS%prism-primary-from), var(--%NS%prism-primary-to));\n }\n .sb-item-icon[_ngcontent-%COMP%] { flex: 0 0 12px; opacity: 0.7; }\n .sb-item-name[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .sb-item-health[_ngcontent-%COMP%] {\n flex: 0 0 auto;\n margin-left: auto;\n display: flex;\n align-items: center;\n gap: 5px;\n }\n .sb-health--warn[_ngcontent-%COMP%] {\n color: var(--%NS%prism-warn);\n }\n .sb-health--danger[_ngcontent-%COMP%] {\n color: var(--%NS%prism-danger);\n }\n\n .sb-item--deprecated[_ngcontent-%COMP%] .sb-item-name[_ngcontent-%COMP%] {\n text-decoration: line-through;\n text-decoration-thickness: 1px;\n color: var(--%NS%prism-text-ghost);\n opacity: 0.7;\n }\n\n\n [_ngcontent-%COMP%]:focus-visible {\n outline: 2px solid var(--%NS%prism-primary);\n outline-offset: 2px;\n }"] });
|
|
339
396
|
}
|
|
340
397
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PrismSidebarComponent, [{
|
|
341
398
|
type: Component,
|
|
@@ -421,23 +478,41 @@ export class PrismSidebarComponent {
|
|
|
421
478
|
<prism-icon name="chevron-down" [size]="10" />
|
|
422
479
|
<span class="sb-group-chip" [style.--chip]="cat.color"></span>
|
|
423
480
|
{{ cat.name }}
|
|
481
|
+
@if (cat.rollup.problems) {
|
|
482
|
+
<span
|
|
483
|
+
class="sb-group-rollup"
|
|
484
|
+
[class.sb-group-rollup--warn]="cat.rollup.variant === 'warn'"
|
|
485
|
+
[class.sb-group-rollup--danger]="cat.rollup.variant === 'danger'"
|
|
486
|
+
[attr.title]="rollupTooltip(cat.rollup)"
|
|
487
|
+
[attr.aria-label]="rollupTooltip(cat.rollup)"
|
|
488
|
+
>{{ cat.rollup.problems }}</span
|
|
489
|
+
>
|
|
490
|
+
}
|
|
424
491
|
<span class="sb-group-count">{{ cat.items.length }}</span>
|
|
425
492
|
</button>
|
|
426
493
|
@if (!isCollapsed('sec:' + section.name + ':' + cat.name)) {
|
|
427
494
|
<div class="sb-group-body">
|
|
428
|
-
@for (
|
|
495
|
+
@for (row of cat.items; track itemKey(row.item)) {
|
|
429
496
|
<button
|
|
430
497
|
class="sb-item"
|
|
431
|
-
[class.sb-item--active]="isActive(item)"
|
|
432
|
-
[class.sb-item--deprecated]="
|
|
433
|
-
|
|
434
|
-
|
|
498
|
+
[class.sb-item--active]="isActive(row.item)"
|
|
499
|
+
[class.sb-item--deprecated]="
|
|
500
|
+
itemStatus(row.item) === 'deprecated'
|
|
501
|
+
"
|
|
502
|
+
[attr.title]="itemTooltip(row.item, row.decorations)"
|
|
503
|
+
(click)="onSelect(row.item)"
|
|
435
504
|
>
|
|
436
|
-
<prism-icon name="
|
|
437
|
-
<span class="sb-item-name">{{ itemLabel(item) }}</span>
|
|
438
|
-
@if (
|
|
439
|
-
<span class="sb-item-
|
|
440
|
-
|
|
505
|
+
<prism-icon [name]="row.icon" [size]="12" class="sb-item-icon" />
|
|
506
|
+
<span class="sb-item-name">{{ itemLabel(row.item) }}</span>
|
|
507
|
+
@if (row.decorations) {
|
|
508
|
+
<span class="sb-item-health">
|
|
509
|
+
@for (mark of row.decorations.marks; track mark.id) {
|
|
510
|
+
<prism-icon
|
|
511
|
+
[name]="mark.icon"
|
|
512
|
+
[size]="11"
|
|
513
|
+
[class]="'sb-health sb-health--' + mark.variant"
|
|
514
|
+
/>
|
|
515
|
+
}
|
|
441
516
|
</span>
|
|
442
517
|
}
|
|
443
518
|
</button>
|
|
@@ -448,9 +523,9 @@ export class PrismSidebarComponent {
|
|
|
448
523
|
} }
|
|
449
524
|
</div>
|
|
450
525
|
</nav>
|
|
451
|
-
`, styles: ["\n .prism-sidebar {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n overflow: hidden;\n }\n\n .sb-filter {\n display: flex;\n align-items: center;\n gap: 8px;\n margin: 12px;\n padding: 0 10px;\n height: 30px;\n background: var(--prism-input-bg);\n border: 1px solid var(--prism-border);\n border-radius: 6px;\n color: var(--prism-text-muted);\n }\n .sb-filter input {\n flex: 1;\n min-width: 0;\n background: transparent;\n border: 0;\n outline: none;\n font-size: var(--fs-md);\n color: var(--prism-text);\n font-family: var(--font-sans);\n }\n .sb-filter input::placeholder { color: var(--prism-text-muted); }\n .sb-filter kbd {\n font-family: var(--font-mono);\n font-size: 10px;\n color: var(--prism-text-ghost);\n padding: 1px 5px;\n border: 1px solid var(--prism-border);\n border-radius: 3px;\n }\n\n .sb-scroll {\n flex: 1;\n overflow-y: auto;\n padding: 10px 0 16px;\n padding-top: 0;\n }\n .sb-scroll::-webkit-scrollbar { width: 8px; }\n .sb-scroll::-webkit-scrollbar-thumb { background: var(--prism-border-strong); border-radius: 4px; }\n .sb-scroll::-webkit-scrollbar-track { background: transparent; }\n\n .sb-pinned {\n padding: 0 0 10px;\n margin-bottom: 4px;\n border-bottom: 1px solid var(--prism-border);\n border-top: 1px solid var(--prism-border);\n }\n .sb-section-head {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8px 14px 6px;\n font-size: 10.5px;\n font-weight: 700;\n letter-spacing: 0.09em;\n text-transform: uppercase;\n color: var(--prism-text-ghost);\n margin-top: 6px;\n }\n .sb-section-head-l { display: flex; align-items: center; gap: 6px; }\n .sb-section-icon { color: var(--prism-primary); }\n .sb-pinned-head {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8px 14px 6px;\n margin-top: 6px;\n font-size: 10.5px;\n font-weight: 700;\n letter-spacing: 0.09em;\n text-transform: uppercase;\n color: var(--prism-text-ghost);\n }\n .sb-pinned-head-l { display: flex; align-items: center; gap: 6px; }\n .sb-pinned-pin { color: var(--prism-accent); }\n\n .sb-group { margin-bottom: 4px; }\n .sb-group-head {\n display: flex;\n align-items: center;\n gap: 6px;\n width: 100%;\n padding: 8px 14px 6px;\n font-size: 10.5px;\n font-weight: 700;\n letter-spacing: 0.09em;\n text-transform: uppercase;\n color: var(--prism-text-ghost);\n cursor: pointer;\n user-select: none;\n background: none;\n border: none;\n text-align: left;\n font-family: var(--font-sans);\n }\n .sb-group-head prism-icon {\n transition: transform var(--dur-fast);\n color: var(--prism-text-ghost);\n }\n .sb-group--collapsed .sb-group-head prism-icon { transform: rotate(-90deg); }\n\n .sb-group-chip {\n width: 6px;\n height: 6px;\n border-radius: 2px;\n background: var(--chip, var(--prism-primary));\n box-shadow: 0 0 6px var(--chip, var(--prism-primary));\n }\n .sb-group-count {\n margin-left: auto;\n font-family: var(--font-mono);\n font-size: 10px;\n color: var(--prism-text-ghost);\n font-weight: 500;\n }\n\n .sb-item {\n display: flex;\n align-items: center;\n gap: 10px;\n width: 100%;\n height: 30px;\n padding: 0 14px 0 28px;\n font-size: 13px;\n color: var(--prism-text-2);\n cursor: pointer;\n border: none;\n border-left: 2px solid transparent;\n background: none;\n position: relative;\n transition: background var(--dur-fast), color var(--dur-fast);\n text-align: left;\n font-family: var(--font-sans);\n }\n .sb-item:hover {\n background: color-mix(in srgb, var(--prism-primary) 5%, transparent);\n color: var(--prism-text);\n }\n .sb-item--active {\n border-left-color: var(--prism-primary);\n background: color-mix(in srgb, var(--prism-primary) 12%, transparent);\n color: var(--prism-text);\n font-weight: 500;\n }\n .sb-item--active::before {\n content: '';\n position: absolute;\n left: -1px;\n top: 0;\n bottom: 0;\n width: 3px;\n background: linear-gradient(180deg, var(--prism-primary-from), var(--prism-primary-to));\n }\n .sb-item-icon { flex: 0 0 12px; opacity: 0.7; }\n .sb-item-name {\n flex: 1;\n min-width: 0;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .sb-item-
|
|
526
|
+
`, styles: ["\n .prism-sidebar {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n overflow: hidden;\n }\n\n .sb-filter {\n display: flex;\n align-items: center;\n gap: 8px;\n margin: 12px;\n padding: 0 10px;\n height: 30px;\n background: var(--prism-input-bg);\n border: 1px solid var(--prism-border);\n border-radius: 6px;\n color: var(--prism-text-muted);\n }\n .sb-filter input {\n flex: 1;\n min-width: 0;\n background: transparent;\n border: 0;\n outline: none;\n font-size: var(--fs-md);\n color: var(--prism-text);\n font-family: var(--font-sans);\n }\n .sb-filter input::placeholder { color: var(--prism-text-muted); }\n .sb-filter kbd {\n font-family: var(--font-mono);\n font-size: 10px;\n color: var(--prism-text-ghost);\n padding: 1px 5px;\n border: 1px solid var(--prism-border);\n border-radius: 3px;\n }\n\n .sb-scroll {\n flex: 1;\n overflow-y: auto;\n padding: 10px 0 16px;\n padding-top: 0;\n }\n .sb-scroll::-webkit-scrollbar { width: 8px; }\n .sb-scroll::-webkit-scrollbar-thumb { background: var(--prism-border-strong); border-radius: 4px; }\n .sb-scroll::-webkit-scrollbar-track { background: transparent; }\n\n .sb-pinned {\n padding: 0 0 10px;\n margin-bottom: 4px;\n border-bottom: 1px solid var(--prism-border);\n border-top: 1px solid var(--prism-border);\n }\n .sb-section-head {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8px 14px 6px;\n font-size: 10.5px;\n font-weight: 700;\n letter-spacing: 0.09em;\n text-transform: uppercase;\n color: var(--prism-text-ghost);\n margin-top: 6px;\n }\n .sb-section-head-l { display: flex; align-items: center; gap: 6px; }\n .sb-section-icon { color: var(--prism-primary); }\n .sb-pinned-head {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8px 14px 6px;\n margin-top: 6px;\n font-size: 10.5px;\n font-weight: 700;\n letter-spacing: 0.09em;\n text-transform: uppercase;\n color: var(--prism-text-ghost);\n }\n .sb-pinned-head-l { display: flex; align-items: center; gap: 6px; }\n .sb-pinned-pin { color: var(--prism-accent); }\n\n .sb-group { margin-bottom: 4px; }\n .sb-group-head {\n display: flex;\n align-items: center;\n gap: 6px;\n width: 100%;\n padding: 8px 14px 6px;\n font-size: 10.5px;\n font-weight: 700;\n letter-spacing: 0.09em;\n text-transform: uppercase;\n color: var(--prism-text-ghost);\n cursor: pointer;\n user-select: none;\n background: none;\n border: none;\n text-align: left;\n font-family: var(--font-sans);\n }\n .sb-group-head prism-icon {\n transition: transform var(--dur-fast);\n color: var(--prism-text-ghost);\n }\n .sb-group--collapsed .sb-group-head prism-icon { transform: rotate(-90deg); }\n\n .sb-group-chip {\n width: 6px;\n height: 6px;\n border-radius: 2px;\n background: var(--chip, var(--prism-primary));\n box-shadow: 0 0 6px var(--chip, var(--prism-primary));\n }\n .sb-group-count {\n margin-left: auto;\n font-family: var(--font-mono);\n font-size: 10px;\n color: var(--prism-text-ghost);\n font-weight: 500;\n }\n\n .sb-group-rollup {\n margin-left: auto;\n font-family: var(--font-mono);\n font-size: 9.5px;\n font-weight: 600;\n letter-spacing: 0;\n padding: 1px 5px;\n border-radius: 8px;\n }\n .sb-group-rollup--warn {\n color: var(--prism-warn);\n background: color-mix(in srgb, var(--prism-warn) 16%, transparent);\n }\n .sb-group-rollup--danger {\n color: var(--prism-danger);\n background: color-mix(in srgb, var(--prism-danger) 16%, transparent);\n }\n .sb-group-rollup + .sb-group-count {\n margin-left: 6px;\n }\n\n .sb-item {\n display: flex;\n align-items: center;\n gap: 10px;\n width: 100%;\n height: 30px;\n padding: 0 14px 0 28px;\n font-size: 13px;\n color: var(--prism-text-2);\n cursor: pointer;\n border: none;\n border-left: 2px solid transparent;\n background: none;\n position: relative;\n transition: background var(--dur-fast), color var(--dur-fast);\n text-align: left;\n font-family: var(--font-sans);\n }\n .sb-item:hover {\n background: color-mix(in srgb, var(--prism-primary) 5%, transparent);\n color: var(--prism-text);\n }\n .sb-item--active {\n border-left-color: var(--prism-primary);\n background: color-mix(in srgb, var(--prism-primary) 12%, transparent);\n color: var(--prism-text);\n font-weight: 500;\n }\n .sb-item--active::before {\n content: '';\n position: absolute;\n left: -1px;\n top: 0;\n bottom: 0;\n width: 3px;\n background: linear-gradient(180deg, var(--prism-primary-from), var(--prism-primary-to));\n }\n .sb-item-icon { flex: 0 0 12px; opacity: 0.7; }\n .sb-item-name {\n flex: 1;\n min-width: 0;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .sb-item-health {\n flex: 0 0 auto;\n margin-left: auto;\n display: flex;\n align-items: center;\n gap: 5px;\n }\n .sb-health--warn {\n color: var(--prism-warn);\n }\n .sb-health--danger {\n color: var(--prism-danger);\n }\n\n .sb-item--deprecated .sb-item-name {\n text-decoration: line-through;\n text-decoration-thickness: 1px;\n color: var(--prism-text-ghost);\n opacity: 0.7;\n }\n\n\n :focus-visible {\n outline: 2px solid var(--prism-primary);\n outline-offset: 2px;\n }\n "] }]
|
|
452
527
|
}], null, { filterInput: [{ type: i0.ViewChild, args: ['filterInput', { isSignal: true }] }], onGlobalKey: [{
|
|
453
528
|
type: HostListener,
|
|
454
529
|
args: ['document:keydown', ['$event']]
|
|
455
530
|
}] }); })();
|
|
456
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismSidebarComponent, { className: "PrismSidebarComponent", filePath: "app/sidebar/prism-sidebar.component.ts", lineNumber:
|
|
531
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismSidebarComponent, { className: "PrismSidebarComponent", filePath: "app/sidebar/prism-sidebar.component.ts", lineNumber: 431 }); })();
|
|
@@ -17,7 +17,7 @@ function PrismVariantRibbonComponent_Conditional_0_For_4_Template(rf, ctx) { if
|
|
|
17
17
|
const v_r5 = ctx.$implicit;
|
|
18
18
|
const ɵ$index_6_r3 = ctx.$index;
|
|
19
19
|
const ctx_r3 = i0.ɵɵnextContext(2);
|
|
20
|
-
i0.ɵɵstyleProp("
|
|
20
|
+
i0.ɵɵstyleProp("--%NS%vc", ctx_r3.variantColor(v_r5.name, ɵ$index_6_r3));
|
|
21
21
|
i0.ɵɵclassProp("v-tab--active", ctx_r3.rendererService.activeVariantIndex() === ɵ$index_6_r3);
|
|
22
22
|
i0.ɵɵadvance(3);
|
|
23
23
|
i0.ɵɵtextInterpolate1(" ", v_r5.name, " ");
|
|
@@ -110,11 +110,11 @@ export class PrismVariantRibbonComponent {
|
|
|
110
110
|
i0.ɵɵviewQuerySignal(ctx.tabsContainer, _c0, 5)(ctx.tabButtons, _c1, 5);
|
|
111
111
|
} if (rf & 2) {
|
|
112
112
|
i0.ɵɵqueryAdvance(2);
|
|
113
|
-
} }, decls: 1, vars: 1, consts: [["tabsContainer", ""], ["tabButton", ""], [1, "variant-ribbon"], [1, "variant-ribbon-tabs"], [1, "v-tab", 3, "v-tab--active", "
|
|
113
|
+
} }, decls: 1, vars: 1, consts: [["tabsContainer", ""], ["tabButton", ""], [1, "variant-ribbon"], [1, "variant-ribbon-tabs"], [1, "v-tab", 3, "v-tab--active", "--%NS%vc"], [1, "variant-ribbon-right"], ["title", "Previous variant", "aria-label", "Previous variant", 1, "tool-btn", 3, "click", "disabled"], ["name", "chevron-right", 2, "transform", "rotate(180deg)", 3, "size"], ["title", "Next variant", "aria-label", "Next variant", 1, "tool-btn", 3, "click", "disabled"], ["name", "chevron-right", 3, "size"], [1, "v-tab", 3, "click"], [1, "v-dot"]], template: function PrismVariantRibbonComponent_Template(rf, ctx) { if (rf & 1) {
|
|
114
114
|
i0.ɵɵconditionalCreate(0, PrismVariantRibbonComponent_Conditional_0_Template, 10, 4, "nav", 2);
|
|
115
115
|
} if (rf & 2) {
|
|
116
116
|
i0.ɵɵconditional(ctx.variants().length > 0 ? 0 : -1);
|
|
117
|
-
} }, dependencies: [PrismIconComponent], styles: ["[_nghost-%COMP%] { display: block; flex-shrink: 0; }\n\n .variant-ribbon[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n padding: 0 28px;\n background: var(
|
|
117
|
+
} }, dependencies: [PrismIconComponent], styles: ["[_nghost-%COMP%] { display: block; flex-shrink: 0; }\n\n .variant-ribbon[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n padding: 0 28px;\n background: var(--%NS%prism-bg);\n border-bottom: 1px solid var(--%NS%prism-border);\n height: 42px;\n }\n\n .variant-ribbon-tabs[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n display: flex;\n align-items: center;\n gap: 2px;\n height: 100%;\n overflow-x: auto;\n scrollbar-width: none;\n }\n .variant-ribbon-tabs[_ngcontent-%COMP%]::-webkit-scrollbar { display: none; }\n\n .v-tab[_ngcontent-%COMP%] {\n position: relative;\n height: 100%;\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 0 14px;\n font-size: 13px;\n font-weight: 500;\n color: var(--%NS%prism-text-muted);\n white-space: nowrap;\n transition: color var(--%NS%dur-fast);\n background: none;\n border: none;\n cursor: pointer;\n font-family: var(--%NS%font-sans);\n }\n .v-tab[_ngcontent-%COMP%]::after {\n content: '';\n position: absolute;\n left: 10px;\n right: 10px;\n bottom: 0;\n height: 2px;\n background: linear-gradient(90deg, var(--%NS%prism-primary-from), var(--%NS%prism-primary-to));\n opacity: 0;\n transition: opacity var(--%NS%dur-fast);\n border-radius: 1px 1px 0 0;\n }\n .v-tab[_ngcontent-%COMP%]:hover { color: var(--%NS%prism-text-2); }\n .v-tab--active[_ngcontent-%COMP%] { color: var(--%NS%prism-text); }\n .v-tab--%NS%active[_ngcontent-%COMP%]::after { opacity: 1; }\n\n .v-dot[_ngcontent-%COMP%] {\n width: 6px;\n height: 6px;\n border-radius: 2px;\n background: var(--%NS%vc, var(--%NS%prism-primary));\n opacity: 0.6;\n }\n .v-tab--active[_ngcontent-%COMP%] .v-dot[_ngcontent-%COMP%] {\n opacity: 1;\n box-shadow: 0 0 6px var(--%NS%vc);\n }\n\n .variant-ribbon-right[_ngcontent-%COMP%] {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n gap: 8px;\n padding-left: 12px;\n margin-left: 12px;\n border-left: 1px solid var(--%NS%prism-border);\n height: 24px;\n }\n\n .tool-btn[_ngcontent-%COMP%] {\n height: 24px;\n width: 24px;\n display: grid;\n place-items: center;\n border-radius: var(--%NS%radius-sm);\n color: var(--%NS%prism-text-muted);\n background: none;\n border: none;\n cursor: pointer;\n transition: all var(--%NS%dur-fast);\n }\n .tool-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n color: var(--%NS%prism-text);\n background: color-mix(in srgb, var(--%NS%prism-primary) 8%, transparent);\n }\n .tool-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.3;\n cursor: default;\n }\n\n [_ngcontent-%COMP%]:focus-visible {\n outline: 2px solid var(--%NS%prism-primary);\n outline-offset: 2px;\n }"] });
|
|
118
118
|
}
|
|
119
119
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PrismVariantRibbonComponent, [{
|
|
120
120
|
type: Component,
|
|
@@ -79,7 +79,7 @@ export class PrismViewPanelHostComponent {
|
|
|
79
79
|
} if (rf & 2) {
|
|
80
80
|
i0.ɵɵadvance();
|
|
81
81
|
i0.ɵɵconditional(ctx.resolvedComponent() ? 1 : -1);
|
|
82
|
-
} }, dependencies: [NgComponentOutlet], styles: [".prism-view-panel-host[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: auto;\n background: var(
|
|
82
|
+
} }, dependencies: [NgComponentOutlet], styles: [".prism-view-panel-host[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: auto;\n background: var(--%NS%prism-bg-elevated);\n }"] });
|
|
83
83
|
}
|
|
84
84
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PrismViewPanelHostComponent, [{
|
|
85
85
|
type: Component,
|
|
@@ -38,7 +38,7 @@ export class PrismViewTabBarComponent {
|
|
|
38
38
|
i0.ɵɵclassProp("prism-view-tab-bar__tab--active", ctx.panelService.activeViewId() === "renderer");
|
|
39
39
|
i0.ɵɵadvance(2);
|
|
40
40
|
i0.ɵɵrepeater(ctx.viewPanels());
|
|
41
|
-
} }, styles: [".prism-view-tab-bar[_ngcontent-%COMP%] {\n display: flex;\n border-bottom: 1px solid var(
|
|
41
|
+
} }, styles: [".prism-view-tab-bar[_ngcontent-%COMP%] {\n display: flex;\n border-bottom: 1px solid var(--%NS%prism-border);\n padding: 0 8px;\n flex-shrink: 0;\n background: var(--%NS%prism-bg-elevated);\n }\n\n .prism-view-tab-bar__tab[_ngcontent-%COMP%] {\n padding: 9px 14px;\n font-size: 13px;\n font-family: var(--%NS%prism-font-sans);\n border: none;\n background: none;\n color: var(--%NS%prism-text-muted);\n cursor: pointer;\n position: relative;\n margin-bottom: -1px;\n transition: color 0.12s;\n }\n\n .prism-view-tab-bar__tab[_ngcontent-%COMP%]::after {\n content: '';\n position: absolute;\n bottom: 0;\n left: 8px;\n right: 8px;\n height: 2px;\n background: linear-gradient(90deg, var(--%NS%prism-primary-from), var(--%NS%prism-primary-to));\n opacity: 0;\n transition: opacity 0.12s;\n }\n\n .prism-view-tab-bar__tab[_ngcontent-%COMP%]:hover { color: var(--%NS%prism-text-2); }\n\n .prism-view-tab-bar__tab--active[_ngcontent-%COMP%] { color: var(--%NS%prism-primary); font-weight: 500; }\n\n .prism-view-tab-bar__tab--%NS%active[_ngcontent-%COMP%]::after { opacity: 1; }"] });
|
|
42
42
|
}
|
|
43
43
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PrismViewTabBarComponent, [{
|
|
44
44
|
type: Component,
|
|
@@ -1,7 +1,21 @@
|
|
|
1
|
-
import type { A11yManifestMeta, A11yReport, A11yThresholds } from '../../app/panels/a11y/a11y.types.js';
|
|
1
|
+
import type { A11yComponentMeta, A11yManifestMeta, A11yReport, A11yThresholds } from '../../app/panels/a11y/a11y.types.js';
|
|
2
|
+
import { deriveA11ySummary } from '../../app/panels/a11y/a11y-summary.js';
|
|
3
|
+
export { deriveA11ySummary };
|
|
2
4
|
export declare const DEFAULT_A11Y_REPORT_PATH = "a11y-report.json";
|
|
3
5
|
export declare function loadA11yReport(reportPath: string): A11yReport | null;
|
|
4
6
|
export declare function readA11yMeta(reportPath: string, thresholdsInput?: Partial<A11yThresholds>): A11yManifestMeta | null;
|
|
7
|
+
/**
|
|
8
|
+
* Every component's entry, from a single read of the report.
|
|
9
|
+
*
|
|
10
|
+
* The plural form exists because {@link readA11yForComponent} re-enters
|
|
11
|
+
* {@link loadA11yReport}, which `statSync`s the file even on a cache hit.
|
|
12
|
+
* Calling it once per scanned component turns a 300-component library into 300
|
|
13
|
+
* redundant syscalls per build, and a watch-mode rebuild repeats them all — so
|
|
14
|
+
* the pipeline reads the report once and looks components up in the result.
|
|
15
|
+
*/
|
|
16
|
+
export declare function readA11yForComponents(reportPath: string, thresholds: A11yThresholds): Map<string, A11yComponentMeta>;
|
|
17
|
+
/** The per-component entry of the report, or null when there is none. */
|
|
18
|
+
export declare function readA11yForComponent(reportPath: string, className: string, thresholds: A11yThresholds): A11yComponentMeta | null;
|
|
5
19
|
export interface ThresholdViolation {
|
|
6
20
|
metric: 'score' | 'critical' | 'serious' | 'moderate';
|
|
7
21
|
actual: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"a11y-report-reader.d.ts","sourceRoot":"","sources":["../../../src/builder/a11y/a11y-report-reader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,gBAAgB,EAChB,UAAU,EACV,cAAc,EACf,MAAM,qCAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"a11y-report-reader.d.ts","sourceRoot":"","sources":["../../../src/builder/a11y/a11y-report-reader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,iBAAiB,EACjB,gBAAgB,EAChB,UAAU,EACV,cAAc,EACf,MAAM,qCAAqC,CAAC;AAE7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAK1E,OAAO,EAAE,iBAAiB,EAAE,CAAC;AAE7B,eAAO,MAAM,wBAAwB,qBAAqB,CAAC;AAI3D,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAapE;AAED,wBAAgB,YAAY,CAC1B,UAAU,EAAE,MAAM,EAClB,eAAe,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,GACxC,gBAAgB,GAAG,IAAI,CAQzB;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,cAAc,GACzB,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAchC;AAED,yEAAyE;AACzE,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,cAAc,GACzB,iBAAiB,GAAG,IAAI,CAK1B;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,CAAC;IACtD,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,gBAAgB,GACrB,kBAAkB,EAAE,CAkCtB;AAED,wBAAgB,oBAAoB,IAAI,IAAI,CAE3C"}
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import { readFileSync, statSync } from 'node:fs';
|
|
2
2
|
import { resolveA11yThresholds } from '../../app/panels/a11y/a11y-thresholds.js';
|
|
3
|
+
import { deriveA11ySummary } from '../../app/panels/a11y/a11y-summary.js';
|
|
4
|
+
// Re-exported so the builder side keeps one import surface for the a11y
|
|
5
|
+
// report. The derivation itself lives in `app/` because the panel tab grades
|
|
6
|
+
// the live audit with it and cannot reach into `builder/`.
|
|
7
|
+
export { deriveA11ySummary };
|
|
3
8
|
export const DEFAULT_A11Y_REPORT_PATH = 'a11y-report.json';
|
|
4
9
|
const cache = new Map();
|
|
5
10
|
export function loadA11yReport(reportPath) {
|
|
@@ -26,6 +31,38 @@ export function readA11yMeta(reportPath, thresholdsInput) {
|
|
|
26
31
|
thresholds: resolveA11yThresholds(thresholdsInput),
|
|
27
32
|
};
|
|
28
33
|
}
|
|
34
|
+
/**
|
|
35
|
+
* Every component's entry, from a single read of the report.
|
|
36
|
+
*
|
|
37
|
+
* The plural form exists because {@link readA11yForComponent} re-enters
|
|
38
|
+
* {@link loadA11yReport}, which `statSync`s the file even on a cache hit.
|
|
39
|
+
* Calling it once per scanned component turns a 300-component library into 300
|
|
40
|
+
* redundant syscalls per build, and a watch-mode rebuild repeats them all — so
|
|
41
|
+
* the pipeline reads the report once and looks components up in the result.
|
|
42
|
+
*/
|
|
43
|
+
export function readA11yForComponents(reportPath, thresholds) {
|
|
44
|
+
const components = loadA11yReport(reportPath)?.components;
|
|
45
|
+
const byClassName = new Map();
|
|
46
|
+
if (!components)
|
|
47
|
+
return byClassName;
|
|
48
|
+
for (const [className, score] of Object.entries(components)) {
|
|
49
|
+
if (!score)
|
|
50
|
+
continue;
|
|
51
|
+
byClassName.set(className, {
|
|
52
|
+
found: true,
|
|
53
|
+
score,
|
|
54
|
+
summary: deriveA11ySummary(score, thresholds),
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
return byClassName;
|
|
58
|
+
}
|
|
59
|
+
/** The per-component entry of the report, or null when there is none. */
|
|
60
|
+
export function readA11yForComponent(reportPath, className, thresholds) {
|
|
61
|
+
const score = loadA11yReport(reportPath)?.components?.[className];
|
|
62
|
+
if (!score)
|
|
63
|
+
return null;
|
|
64
|
+
return { found: true, score, summary: deriveA11ySummary(score, thresholds) };
|
|
65
|
+
}
|
|
29
66
|
export function checkA11yThresholds(meta) {
|
|
30
67
|
const violations = [];
|
|
31
68
|
const t = meta.thresholds;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component.scanner.d.ts","sourceRoot":"","sources":["../../../src/builder/scanner/component.scanner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"component.scanner.d.ts","sourceRoot":"","sources":["../../../src/builder/scanner/component.scanner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAmErE;;GAEG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,EAAE,CAAC,MAAM,EAAE,EACpB,OAAO,EAAE,EAAE,CAAC,WAAW,GACtB,gBAAgB,EAAE,CA8CpB"}
|
|
@@ -8,6 +8,29 @@ function isComponentStatus(value) {
|
|
|
8
8
|
}
|
|
9
9
|
import { evaluateExpression, findDecorator, getDecoratorArgument, } from './ast-utils.js';
|
|
10
10
|
import { extractInputs, extractOutputs } from './input.extractor.js';
|
|
11
|
+
/**
|
|
12
|
+
* Backgrounds that still work but should not be reached for any more.
|
|
13
|
+
*
|
|
14
|
+
* `checker` draws the same checkerboard as `transparent` while browsing, so
|
|
15
|
+
* the canvas cannot tell them apart — but it captures as `--prism-bg-surface`,
|
|
16
|
+
* a *theme* token, which makes a baseline recorded on it depend on the theme
|
|
17
|
+
* the runner's browser started in. Since `transparent` took over as the
|
|
18
|
+
* default, it is the value that looks like transparency and is not.
|
|
19
|
+
*
|
|
20
|
+
* Warned rather than rejected: the value is valid, and dropping it would
|
|
21
|
+
* change what a component renders on — a break wearing a warning's clothes.
|
|
22
|
+
* Scheduled for removal in 23.0.0, the next Angular-aligned major.
|
|
23
|
+
*/
|
|
24
|
+
const DEPRECATED_BGS = {
|
|
25
|
+
checker: "use 'transparent' for the same look with a capture that keeps its alpha, or 'light'/'dark' for an absolute colour",
|
|
26
|
+
};
|
|
27
|
+
function warnDeprecatedBg(bg, where) {
|
|
28
|
+
const advice = DEPRECATED_BGS[bg];
|
|
29
|
+
if (!advice)
|
|
30
|
+
return;
|
|
31
|
+
console.warn(`⚠ ng-prism: ${where} declares bg "${bg}", which is deprecated and will ` +
|
|
32
|
+
`be removed in 23.0.0 — ${advice}.`);
|
|
33
|
+
}
|
|
11
34
|
function isCanvasBg(value) {
|
|
12
35
|
return (typeof value === 'string' &&
|
|
13
36
|
CANVAS_BGS.includes(value));
|
|
@@ -110,10 +133,10 @@ function extractShowcaseConfig(decorator, className) {
|
|
|
110
133
|
if (obj['bg'] !== undefined) {
|
|
111
134
|
if (isCanvasBg(obj['bg'])) {
|
|
112
135
|
config.bg = obj['bg'];
|
|
136
|
+
warnDeprecatedBg(obj['bg'], className);
|
|
113
137
|
}
|
|
114
138
|
else {
|
|
115
|
-
console.warn(`⚠ ng-prism: ${className} declares invalid bg "${String(obj['bg'])}" — ` +
|
|
116
|
-
`expected one of: dots, plain, light, dark, checker. Skipping.`);
|
|
139
|
+
console.warn(`⚠ ng-prism: ${className} declares invalid bg "${String(obj['bg'])}" — ` + `expected one of: ${CANVAS_BGS.join(', ')}. Skipping.`);
|
|
117
140
|
}
|
|
118
141
|
}
|
|
119
142
|
if (obj['canvasLayout'] !== undefined) {
|
|
@@ -127,9 +150,13 @@ function extractShowcaseConfig(decorator, className) {
|
|
|
127
150
|
if (Array.isArray(obj['variants'])) {
|
|
128
151
|
config.variants = obj['variants'].map((variant) => {
|
|
129
152
|
const cleaned = { ...variant };
|
|
153
|
+
if (isCanvasBg(variant['bg'])) {
|
|
154
|
+
warnDeprecatedBg(variant['bg'], `${className} variant "${String(variant['name'])}"`);
|
|
155
|
+
}
|
|
130
156
|
if (variant['bg'] !== undefined && !isCanvasBg(variant['bg'])) {
|
|
131
157
|
console.warn(`⚠ ng-prism: ${className} variant "${String(variant['name'])}" declares ` +
|
|
132
|
-
`invalid bg "${String(variant['bg'])}" — expected one of:
|
|
158
|
+
`invalid bg "${String(variant['bg'])}" — expected one of: ` +
|
|
159
|
+
`${CANVAS_BGS.join(', ')}. Skipping.`);
|
|
133
160
|
delete cleaned['bg'];
|
|
134
161
|
}
|
|
135
162
|
if (variant['canvasLayout'] !== undefined &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prism-pipeline.d.ts","sourceRoot":"","sources":["../../../src/builder/shared/prism-pipeline.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAGhE,OAAO,EAAiB,KAAK,OAAO,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"prism-pipeline.d.ts","sourceRoot":"","sources":["../../../src/builder/shared/prism-pipeline.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAGhE,OAAO,EAAiB,KAAK,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAapE,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,8FAA8F;IAC9F,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,mGAAmG;IACnG,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,oGAAoG;IACpG,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC;AAED,wBAAgB,mBAAmB,IAAI,kBAAkB,CAExD;AAED,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,oBAAoB,EAC7B,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAAC,mBAAmB,CAAC,CAyF9B"}
|