@ng-prism/core 21.11.0 → 21.12.0-beta.1
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/header/prism-header-widget-host.component.d.ts +11 -0
- package/dist/app/header/prism-header-widget-host.component.d.ts.map +1 -0
- package/dist/app/header/prism-header-widget-host.component.js +57 -0
- package/dist/app/header/prism-header.component.d.ts +3 -0
- package/dist/app/header/prism-header.component.d.ts.map +1 -1
- package/dist/app/header/prism-header.component.js +76 -20
- package/dist/app/panels/a11y/a11y-header-badge.component.d.ts +16 -0
- package/dist/app/panels/a11y/a11y-header-badge.component.d.ts.map +1 -0
- package/dist/app/panels/a11y/a11y-header-badge.component.js +84 -0
- package/dist/app/panels/a11y/a11y-thresholds.d.ts +6 -0
- package/dist/app/panels/a11y/a11y-thresholds.d.ts.map +1 -0
- package/dist/app/panels/a11y/a11y-thresholds.js +13 -0
- package/dist/app/panels/a11y/a11y.types.d.ts +33 -0
- package/dist/app/panels/a11y/a11y.types.d.ts.map +1 -1
- package/dist/app/panels/builtin-header-widgets.d.ts +3 -0
- package/dist/app/panels/builtin-header-widgets.d.ts.map +1 -0
- package/dist/app/panels/builtin-header-widgets.js +9 -0
- package/dist/app/panels/panel-host/prism-panel-host.component.d.ts +16 -5
- 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 +91 -44
- package/dist/app/provide-prism.d.ts.map +1 -1
- package/dist/app/provide-prism.js +11 -0
- package/dist/app/renderer/prism-renderer.component.d.ts +2 -0
- package/dist/app/renderer/prism-renderer.component.d.ts.map +1 -1
- package/dist/app/renderer/prism-renderer.component.js +18 -3
- package/dist/app/services/prism-panel.service.d.ts +5 -0
- package/dist/app/services/prism-panel.service.d.ts.map +1 -1
- package/dist/app/services/prism-panel.service.js +7 -3
- package/dist/app/services/prism-plugin.service.d.ts +4 -1
- package/dist/app/services/prism-plugin.service.d.ts.map +1 -1
- package/dist/app/services/prism-plugin.service.js +11 -0
- package/dist/app/variant-ribbon/prism-variant-ribbon.component.d.ts +4 -1
- package/dist/app/variant-ribbon/prism-variant-ribbon.component.d.ts.map +1 -1
- package/dist/app/variant-ribbon/prism-variant-ribbon.component.js +67 -36
- package/dist/builder/a11y/a11y-report-reader.d.ts +12 -0
- package/dist/builder/a11y/a11y-report-reader.d.ts.map +1 -0
- package/dist/builder/a11y/a11y-report-reader.js +49 -0
- package/dist/builder/manifest/runtime-manifest.generator.d.ts +1 -0
- package/dist/builder/manifest/runtime-manifest.generator.d.ts.map +1 -1
- package/dist/builder/manifest/runtime-manifest.generator.js +8 -1
- package/dist/builder/plugin-runner/plugin-runner.d.ts.map +1 -1
- package/dist/builder/plugin-runner/plugin-runner.js +3 -1
- package/dist/builder/shared/prism-pipeline.d.ts.map +1 -1
- package/dist/builder/shared/prism-pipeline.js +19 -1
- package/dist/cli/audit-a11y/aggregator.d.ts +10 -0
- package/dist/cli/audit-a11y/aggregator.d.ts.map +1 -0
- package/dist/cli/audit-a11y/aggregator.js +64 -0
- package/dist/cli/audit-a11y/auditor.d.ts +14 -0
- package/dist/cli/audit-a11y/auditor.d.ts.map +1 -0
- package/dist/cli/audit-a11y/auditor.js +104 -0
- package/dist/cli/audit-a11y/cli.d.ts +3 -0
- package/dist/cli/audit-a11y/cli.d.ts.map +1 -0
- package/dist/cli/audit-a11y/cli.js +143 -0
- package/dist/cli/audit-a11y/index.d.ts +4 -0
- package/dist/cli/audit-a11y/index.d.ts.map +1 -0
- package/dist/cli/audit-a11y/index.js +3 -0
- package/dist/cli/audit-a11y/static-server.d.ts +11 -0
- package/dist/cli/audit-a11y/static-server.d.ts.map +1 -0
- package/dist/cli/audit-a11y/static-server.js +61 -0
- package/dist/decorator/index.d.ts +1 -1
- package/dist/decorator/index.d.ts.map +1 -1
- package/dist/decorator/showcase.decorator.d.ts +1 -1
- package/dist/decorator/showcase.decorator.d.ts.map +1 -1
- package/dist/decorator/showcase.types.d.ts +20 -6
- package/dist/decorator/showcase.types.d.ts.map +1 -1
- package/dist/plugin/index.d.ts +2 -2
- package/dist/plugin/index.d.ts.map +1 -1
- package/dist/plugin/index.js +1 -1
- package/dist/plugin/plugin.types.d.ts +33 -0
- package/dist/plugin/plugin.types.d.ts.map +1 -1
- package/package.json +12 -3
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type Type } from '@angular/core';
|
|
2
|
+
import type { HeaderWidgetDefinition } from '../../plugin/plugin.types.js';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class PrismHeaderWidgetHostComponent {
|
|
5
|
+
readonly widget: import("@angular/core").InputSignal<HeaderWidgetDefinition>;
|
|
6
|
+
protected readonly resolved: import("@angular/core").WritableSignal<Type<unknown> | null>;
|
|
7
|
+
constructor();
|
|
8
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<PrismHeaderWidgetHostComponent, never>;
|
|
9
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<PrismHeaderWidgetHostComponent, "prism-header-widget-host", never, { "widget": { "alias": "widget"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=prism-header-widget-host.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prism-header-widget-host.component.d.ts","sourceRoot":"","sources":["../../../src/app/header/prism-header-widget-host.component.ts"],"names":[],"mappings":"AACA,OAAO,EAML,KAAK,IAAI,EACV,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;;AAI3E,qBAca,8BAA8B;IACzC,QAAQ,CAAC,MAAM,8DAA4C;IAE3D,SAAS,CAAC,QAAQ,CAAC,QAAQ,+DAAsC;;yCAHtD,8BAA8B;2CAA9B,8BAA8B;CA8B1C"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { NgComponentOutlet } from '@angular/common';
|
|
2
|
+
import { ChangeDetectionStrategy, Component, effect, input, signal, } from '@angular/core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
function PrismHeaderWidgetHostComponent_Conditional_0_ng_container_0_Template(rf, ctx) { if (rf & 1) {
|
|
5
|
+
i0.ɵɵelementContainer(0);
|
|
6
|
+
} }
|
|
7
|
+
function PrismHeaderWidgetHostComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
8
|
+
i0.ɵɵtemplate(0, PrismHeaderWidgetHostComponent_Conditional_0_ng_container_0_Template, 1, 0, "ng-container", 0);
|
|
9
|
+
} if (rf & 2) {
|
|
10
|
+
i0.ɵɵproperty("ngComponentOutlet", ctx);
|
|
11
|
+
} }
|
|
12
|
+
const lazyCache = new Map();
|
|
13
|
+
export class PrismHeaderWidgetHostComponent {
|
|
14
|
+
widget = input.required(...(ngDevMode ? [{ debugName: "widget" }] : []));
|
|
15
|
+
resolved = signal(null, ...(ngDevMode ? [{ debugName: "resolved" }] : []));
|
|
16
|
+
constructor() {
|
|
17
|
+
effect(() => {
|
|
18
|
+
const w = this.widget();
|
|
19
|
+
if (w.component) {
|
|
20
|
+
this.resolved.set(w.component);
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
if (!w.loadComponent) {
|
|
24
|
+
this.resolved.set(null);
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
const cached = lazyCache.get(w.id);
|
|
28
|
+
if (cached) {
|
|
29
|
+
this.resolved.set(cached);
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
this.resolved.set(null);
|
|
33
|
+
w.loadComponent().then((comp) => {
|
|
34
|
+
lazyCache.set(w.id, comp);
|
|
35
|
+
if (this.widget().id === w.id) {
|
|
36
|
+
this.resolved.set(comp);
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
static ɵfac = function PrismHeaderWidgetHostComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || PrismHeaderWidgetHostComponent)(); };
|
|
42
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PrismHeaderWidgetHostComponent, selectors: [["prism-header-widget-host"]], inputs: { widget: [1, "widget"] }, decls: 1, vars: 1, consts: [[4, "ngComponentOutlet"]], template: function PrismHeaderWidgetHostComponent_Template(rf, ctx) { if (rf & 1) {
|
|
43
|
+
i0.ɵɵconditionalCreate(0, PrismHeaderWidgetHostComponent_Conditional_0_Template, 1, 1, "ng-container");
|
|
44
|
+
} if (rf & 2) {
|
|
45
|
+
let tmp_0_0;
|
|
46
|
+
i0.ɵɵconditional((tmp_0_0 = ctx.resolved()) ? 0 : -1, tmp_0_0);
|
|
47
|
+
} }, dependencies: [NgComponentOutlet], styles: ["[_nghost-%COMP%] { display: contents; }"], changeDetection: 0 });
|
|
48
|
+
}
|
|
49
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PrismHeaderWidgetHostComponent, [{
|
|
50
|
+
type: Component,
|
|
51
|
+
args: [{ selector: 'prism-header-widget-host', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [NgComponentOutlet], template: `
|
|
52
|
+
@if (resolved(); as comp) {
|
|
53
|
+
<ng-container *ngComponentOutlet="comp" />
|
|
54
|
+
}
|
|
55
|
+
`, styles: ["\n :host { display: contents; }\n "] }]
|
|
56
|
+
}], () => [], { widget: [{ type: i0.Input, args: [{ isSignal: true, alias: "widget", required: true }] }] }); })();
|
|
57
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismHeaderWidgetHostComponent, { className: "PrismHeaderWidgetHostComponent", filePath: "app/header/prism-header-widget-host.component.ts", lineNumber: 28 }); })();
|
|
@@ -3,8 +3,11 @@ import { PrismThemeService } from '../services/prism-theme.service.js';
|
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
export declare class PrismHeaderComponent {
|
|
5
5
|
private readonly config;
|
|
6
|
+
private readonly pluginService;
|
|
6
7
|
protected readonly searchService: PrismSearchService;
|
|
7
8
|
protected readonly themeService: PrismThemeService;
|
|
9
|
+
protected readonly widgetsStart: import("@angular/core").Signal<import("../../plugin/plugin.types.js").HeaderWidgetDefinition[]>;
|
|
10
|
+
protected readonly widgetsEnd: import("@angular/core").Signal<import("../../plugin/plugin.types.js").HeaderWidgetDefinition[]>;
|
|
8
11
|
protected readonly logoUrl: import("@angular/core").Signal<string | null>;
|
|
9
12
|
protected readonly title: import("@angular/core").Signal<string>;
|
|
10
13
|
protected readonly subtitle: import("@angular/core").Signal<string | null>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prism-header.component.d.ts","sourceRoot":"","sources":["../../../src/app/header/prism-header.component.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"prism-header.component.d.ts","sourceRoot":"","sources":["../../../src/app/header/prism-header.component.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;;AAGvE,qBA4Na,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuC;IAC9D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA8B;IAC5D,SAAS,CAAC,QAAQ,CAAC,aAAa,qBAA8B;IAC9D,SAAS,CAAC,QAAQ,CAAC,YAAY,oBAA6B;IAE5D,SAAS,CAAC,QAAQ,CAAC,YAAY,kGAGoB;IAEnD,SAAS,CAAC,QAAQ,CAAC,UAAU,kGAGsB;IAEnD,SAAS,CAAC,QAAQ,CAAC,OAAO,gDAKvB;IAEH,SAAS,CAAC,QAAQ,CAAC,KAAK,yCAAmD;IAC3E,SAAS,CAAC,QAAQ,CAAC,QAAQ,gDAAgD;IAE3E,SAAS,CAAC,QAAQ,CAAC,cAAc,gDAO9B;IAGH,SAAS,CAAC,WAAW,CAAC,CAAC,EAAE,aAAa,GAAG,IAAI;IAO7C,SAAS,CAAC,aAAa,IAAI,IAAI;yCA3CpB,oBAAoB;2CAApB,oBAAoB;CA8ChC"}
|
|
@@ -2,9 +2,13 @@ import { Component, computed, inject, ChangeDetectionStrategy, HostListener, } f
|
|
|
2
2
|
import { PrismIconComponent } from '../icons/prism-icon.component.js';
|
|
3
3
|
import { PrismLayoutMenuComponent } from '../layout-menu/prism-layout-menu.component.js';
|
|
4
4
|
import { PRISM_CONFIG } from '../tokens/prism-tokens.js';
|
|
5
|
+
import { BUILTIN_HEADER_WIDGETS } from '../panels/builtin-header-widgets.js';
|
|
6
|
+
import { PrismPluginService } from '../services/prism-plugin.service.js';
|
|
5
7
|
import { PrismSearchService } from '../services/prism-search.service.js';
|
|
6
8
|
import { PrismThemeService } from '../services/prism-theme.service.js';
|
|
9
|
+
import { PrismHeaderWidgetHostComponent } from './prism-header-widget-host.component.js';
|
|
7
10
|
import * as i0 from "@angular/core";
|
|
11
|
+
const _forTrack0 = ($index, $item) => $item.id;
|
|
8
12
|
function PrismHeaderComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
9
13
|
i0.ɵɵelement(0, "img", 2);
|
|
10
14
|
} if (rf & 2) {
|
|
@@ -13,7 +17,7 @@ function PrismHeaderComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
|
13
17
|
} }
|
|
14
18
|
function PrismHeaderComponent_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
15
19
|
i0.ɵɵelementStart(0, "div", 3);
|
|
16
|
-
i0.ɵɵelement(1, "img",
|
|
20
|
+
i0.ɵɵelement(1, "img", 14);
|
|
17
21
|
i0.ɵɵelementEnd();
|
|
18
22
|
} }
|
|
19
23
|
function PrismHeaderComponent_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
@@ -25,8 +29,29 @@ function PrismHeaderComponent_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
|
25
29
|
i0.ɵɵadvance();
|
|
26
30
|
i0.ɵɵtextInterpolate(ctx_r0.subtitle());
|
|
27
31
|
} }
|
|
28
|
-
function
|
|
29
|
-
i0.ɵɵ
|
|
32
|
+
function PrismHeaderComponent_Conditional_8_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
33
|
+
i0.ɵɵelement(0, "prism-header-widget-host", 9);
|
|
34
|
+
} if (rf & 2) {
|
|
35
|
+
const w_r2 = ctx.$implicit;
|
|
36
|
+
i0.ɵɵproperty("widget", w_r2);
|
|
37
|
+
} }
|
|
38
|
+
function PrismHeaderComponent_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
39
|
+
i0.ɵɵelementStart(0, "div", 7);
|
|
40
|
+
i0.ɵɵrepeaterCreate(1, PrismHeaderComponent_Conditional_8_For_2_Template, 1, 1, "prism-header-widget-host", 9, _forTrack0);
|
|
41
|
+
i0.ɵɵelementEnd();
|
|
42
|
+
} if (rf & 2) {
|
|
43
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
44
|
+
i0.ɵɵadvance();
|
|
45
|
+
i0.ɵɵrepeater(ctx_r0.widgetsStart());
|
|
46
|
+
} }
|
|
47
|
+
function PrismHeaderComponent_For_11_Template(rf, ctx) { if (rf & 1) {
|
|
48
|
+
i0.ɵɵelement(0, "prism-header-widget-host", 9);
|
|
49
|
+
} if (rf & 2) {
|
|
50
|
+
const w_r3 = ctx.$implicit;
|
|
51
|
+
i0.ɵɵproperty("widget", w_r3);
|
|
52
|
+
} }
|
|
53
|
+
function PrismHeaderComponent_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
54
|
+
i0.ɵɵelementStart(0, "span", 10);
|
|
30
55
|
i0.ɵɵtext(1);
|
|
31
56
|
i0.ɵɵelementEnd();
|
|
32
57
|
} if (rf & 2) {
|
|
@@ -34,20 +59,29 @@ function PrismHeaderComponent_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
|
34
59
|
i0.ɵɵadvance();
|
|
35
60
|
i0.ɵɵtextInterpolate(ctx_r0.buildInfoLabel());
|
|
36
61
|
} }
|
|
37
|
-
function
|
|
38
|
-
i0.ɵɵelement(0, "prism-icon",
|
|
62
|
+
function PrismHeaderComponent_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
63
|
+
i0.ɵɵelement(0, "prism-icon", 12);
|
|
39
64
|
} if (rf & 2) {
|
|
40
65
|
i0.ɵɵproperty("size", 16);
|
|
41
66
|
} }
|
|
42
|
-
function
|
|
43
|
-
i0.ɵɵelement(0, "prism-icon",
|
|
67
|
+
function PrismHeaderComponent_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
68
|
+
i0.ɵɵelement(0, "prism-icon", 13);
|
|
44
69
|
} if (rf & 2) {
|
|
45
70
|
i0.ɵɵproperty("size", 16);
|
|
46
71
|
} }
|
|
47
72
|
export class PrismHeaderComponent {
|
|
48
73
|
config = inject(PRISM_CONFIG);
|
|
74
|
+
pluginService = inject(PrismPluginService);
|
|
49
75
|
searchService = inject(PrismSearchService);
|
|
50
76
|
themeService = inject(PrismThemeService);
|
|
77
|
+
widgetsStart = computed(() => [
|
|
78
|
+
...BUILTIN_HEADER_WIDGETS.filter((w) => w.placement === 'start'),
|
|
79
|
+
...this.pluginService.headerWidgetsStart(),
|
|
80
|
+
].sort((a, b) => (a.order ?? 0) - (b.order ?? 0)), ...(ngDevMode ? [{ debugName: "widgetsStart" }] : []));
|
|
81
|
+
widgetsEnd = computed(() => [
|
|
82
|
+
...BUILTIN_HEADER_WIDGETS.filter((w) => (w.placement ?? 'end') === 'end'),
|
|
83
|
+
...this.pluginService.headerWidgetsEnd(),
|
|
84
|
+
].sort((a, b) => (a.order ?? 0) - (b.order ?? 0)), ...(ngDevMode ? [{ debugName: "widgetsEnd" }] : []));
|
|
51
85
|
logoUrl = computed(() => {
|
|
52
86
|
const logo = this.config.logo;
|
|
53
87
|
if (!logo)
|
|
@@ -80,7 +114,7 @@ export class PrismHeaderComponent {
|
|
|
80
114
|
static ɵfac = function PrismHeaderComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || PrismHeaderComponent)(); };
|
|
81
115
|
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PrismHeaderComponent, selectors: [["prism-header"]], hostBindings: function PrismHeaderComponent_HostBindings(rf, ctx) { if (rf & 1) {
|
|
82
116
|
i0.ɵɵlistener("keydown", function PrismHeaderComponent_keydown_HostBindingHandler($event) { return ctx.onGlobalKey($event); }, i0.ɵɵresolveDocument);
|
|
83
|
-
} }, decls:
|
|
117
|
+
} }, decls: 17, vars: 9, consts: [[1, "prism-header"], [1, "prism-header__brand"], [1, "prism-header__logo-img", 3, "src", "alt"], [1, "prism-header__logo-default"], [1, "prism-header__brand-text"], [1, "prism-header__brand-name"], [1, "prism-header__brand-sub"], [1, "prism-header__widgets", "prism-header__widgets--start"], [1, "prism-header__actions"], [3, "widget"], [1, "prism-header__build-pill"], [1, "prism-header__icon-btn", 3, "click", "title"], ["name", "sun", 3, "size"], ["name", "moon", 3, "size"], ["alt", "ng prism logo", "src", "data:image/png;base64,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"]], template: function PrismHeaderComponent_Template(rf, ctx) { if (rf & 1) {
|
|
84
118
|
i0.ɵɵelementStart(0, "header", 0)(1, "div", 1);
|
|
85
119
|
i0.ɵɵconditionalCreate(2, PrismHeaderComponent_Conditional_2_Template, 1, 2, "img", 2)(3, PrismHeaderComponent_Conditional_3_Template, 2, 0, "div", 3);
|
|
86
120
|
i0.ɵɵelementStart(4, "div", 4)(5, "span", 5);
|
|
@@ -88,13 +122,15 @@ export class PrismHeaderComponent {
|
|
|
88
122
|
i0.ɵɵelementEnd();
|
|
89
123
|
i0.ɵɵconditionalCreate(7, PrismHeaderComponent_Conditional_7_Template, 2, 1, "span", 6);
|
|
90
124
|
i0.ɵɵelementEnd()();
|
|
91
|
-
i0.ɵɵ
|
|
92
|
-
i0.ɵɵ
|
|
93
|
-
i0.ɵɵ
|
|
94
|
-
i0.ɵɵ
|
|
95
|
-
i0.ɵɵ
|
|
125
|
+
i0.ɵɵconditionalCreate(8, PrismHeaderComponent_Conditional_8_Template, 3, 0, "div", 7);
|
|
126
|
+
i0.ɵɵelementStart(9, "div", 8);
|
|
127
|
+
i0.ɵɵrepeaterCreate(10, PrismHeaderComponent_For_11_Template, 1, 1, "prism-header-widget-host", 9, _forTrack0);
|
|
128
|
+
i0.ɵɵconditionalCreate(12, PrismHeaderComponent_Conditional_12_Template, 2, 1, "span", 10);
|
|
129
|
+
i0.ɵɵelementStart(13, "button", 11);
|
|
130
|
+
i0.ɵɵlistener("click", function PrismHeaderComponent_Template_button_click_13_listener() { return ctx.themeService.toggle(); });
|
|
131
|
+
i0.ɵɵconditionalCreate(14, PrismHeaderComponent_Conditional_14_Template, 1, 1, "prism-icon", 12)(15, PrismHeaderComponent_Conditional_15_Template, 1, 1, "prism-icon", 13);
|
|
96
132
|
i0.ɵɵelementEnd();
|
|
97
|
-
i0.ɵɵelement(
|
|
133
|
+
i0.ɵɵelement(16, "prism-layout-menu");
|
|
98
134
|
i0.ɵɵelementEnd()();
|
|
99
135
|
} if (rf & 2) {
|
|
100
136
|
i0.ɵɵadvance(2);
|
|
@@ -103,18 +139,28 @@ export class PrismHeaderComponent {
|
|
|
103
139
|
i0.ɵɵtextInterpolate(ctx.title());
|
|
104
140
|
i0.ɵɵadvance();
|
|
105
141
|
i0.ɵɵconditional(ctx.subtitle() ? 7 : -1);
|
|
142
|
+
i0.ɵɵadvance();
|
|
143
|
+
i0.ɵɵconditional(ctx.widgetsStart().length ? 8 : -1);
|
|
106
144
|
i0.ɵɵadvance(2);
|
|
107
|
-
i0.ɵɵ
|
|
145
|
+
i0.ɵɵrepeater(ctx.widgetsEnd());
|
|
146
|
+
i0.ɵɵadvance(2);
|
|
147
|
+
i0.ɵɵconditional(ctx.buildInfoLabel() ? 12 : -1);
|
|
108
148
|
i0.ɵɵadvance();
|
|
109
149
|
i0.ɵɵproperty("title", ctx.themeService.isDark() ? "Switch to light mode" : "Switch to dark mode");
|
|
110
150
|
i0.ɵɵattribute("aria-label", ctx.themeService.isDark() ? "Switch to light mode" : "Switch to dark mode")("aria-pressed", ctx.themeService.isDark());
|
|
111
151
|
i0.ɵɵadvance();
|
|
112
|
-
i0.ɵɵconditional(ctx.themeService.isDark() ?
|
|
113
|
-
} }, dependencies: [PrismIconComponent,
|
|
152
|
+
i0.ɵɵconditional(ctx.themeService.isDark() ? 14 : 15);
|
|
153
|
+
} }, dependencies: [PrismIconComponent,
|
|
154
|
+
PrismLayoutMenuComponent,
|
|
155
|
+
PrismHeaderWidgetHostComponent], styles: [".prism-header[_ngcontent-%COMP%] {\n height: 52px;\n display: grid;\n grid-template-columns: minmax(min-content, var(--sw, 264px)) 1fr auto;\n align-items: center;\n padding: 0 14px 0 0;\n background: var(--prism-bg);\n border-bottom: 1px solid var(--prism-border);\n }\n\n .prism-header__brand[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 0 16px;\n cursor: pointer;\n white-space: nowrap;\n }\n\n .prism-header__logo-default[_ngcontent-%COMP%] {\n width: 26px;\n height: 26px;\n flex: 0 0 26px;\n color: var(--prism-primary);\n filter: drop-shadow(0 0 8px var(--prism-glow-strong));\n }\n .prism-header__logo-default[_ngcontent-%COMP%] img[_ngcontent-%COMP%] { width: 30px; }\n\n .prism-header__logo-img[_ngcontent-%COMP%] {\n height: 26px;\n width: auto;\n object-fit: contain;\n }\n\n .prism-header__brand-text[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n line-height: 1.1;\n }\n\n .prism-header__brand-name[_ngcontent-%COMP%] {\n font-weight: 700;\n font-size: var(--fs-xl);\n letter-spacing: -0.01em;\n background: linear-gradient(90deg, var(--prism-primary), var(--prism-accent) 60%, var(--prism-primary-to));\n -webkit-background-clip: text;\n background-clip: text;\n color: transparent;\n }\n\n .prism-header__brand-sub[_ngcontent-%COMP%] {\n font-family: var(--font-mono);\n font-size: var(--fs-xs);\n color: var(--prism-text-ghost);\n }\n\n .prism-header__cmdbar[_ngcontent-%COMP%] {\n max-width: 540px;\n width: 100%;\n justify-self: center;\n display: flex;\n align-items: center;\n gap: 10px;\n height: 32px;\n padding: 0 12px;\n background: var(--prism-input-bg);\n border: 1px solid var(--prism-border);\n border-radius: 8px;\n color: var(--prism-text-muted);\n font-size: var(--fs-lg);\n cursor: pointer;\n transition: border-color var(--dur-fast), background var(--dur-fast);\n }\n .prism-header__cmdbar[_ngcontent-%COMP%]:hover {\n border-color: var(--prism-border-strong);\n color: var(--prism-text-2);\n }\n\n .prism-header__cmdbar-text[_ngcontent-%COMP%] {\n flex: 1;\n text-align: left;\n }\n\n .prism-header__cmdbar-shortcut[_ngcontent-%COMP%] {\n display: flex;\n gap: 3px;\n }\n .prism-header__cmdbar-shortcut[_ngcontent-%COMP%] kbd[_ngcontent-%COMP%] {\n font-family: var(--font-mono);\n font-size: 10.5px;\n padding: 1px 5px;\n border-radius: 4px;\n background: var(--prism-input-bg);\n border: 1px solid var(--prism-border);\n color: var(--prism-text-muted);\n }\n\n .prism-header__build-pill[_ngcontent-%COMP%] {\n font-family: var(--font-mono);\n font-size: var(--fs-xs);\n color: var(--prism-text-ghost);\n background: var(--prism-input-bg);\n border: 1px solid var(--prism-border);\n border-radius: 9999px;\n padding: 2px 10px;\n white-space: nowrap;\n line-height: 1.4;\n }\n\n .prism-header__actions[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: 6px;\n }\n\n .prism-header__widgets[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n min-width: 0;\n }\n .prism-header__widgets--start[_ngcontent-%COMP%] {\n padding-left: 4px;\n justify-content: flex-start;\n }\n\n .prism-header__icon-btn[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n display: grid;\n place-items: center;\n border-radius: 8px;\n color: var(--prism-text-muted);\n background: none;\n border: none;\n cursor: pointer;\n position: relative;\n transition: all var(--dur-fast);\n }\n .prism-header__icon-btn[_ngcontent-%COMP%]:hover {\n background: var(--prism-input-bg);\n color: var(--prism-text);\n }\n\n [_ngcontent-%COMP%]:focus-visible {\n outline: 2px solid var(--prism-primary);\n outline-offset: 2px;\n }"], changeDetection: 0 });
|
|
114
156
|
}
|
|
115
157
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PrismHeaderComponent, [{
|
|
116
158
|
type: Component,
|
|
117
|
-
args: [{ selector: 'prism-header', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
159
|
+
args: [{ selector: 'prism-header', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
160
|
+
PrismIconComponent,
|
|
161
|
+
PrismLayoutMenuComponent,
|
|
162
|
+
PrismHeaderWidgetHostComponent,
|
|
163
|
+
], template: `
|
|
118
164
|
<header class="prism-header">
|
|
119
165
|
<div class="prism-header__brand">
|
|
120
166
|
@if (logoUrl()) {
|
|
@@ -134,7 +180,17 @@ export class PrismHeaderComponent {
|
|
|
134
180
|
}
|
|
135
181
|
</div>
|
|
136
182
|
</div>
|
|
183
|
+
@if (widgetsStart().length) {
|
|
184
|
+
<div class="prism-header__widgets prism-header__widgets--start">
|
|
185
|
+
@for (w of widgetsStart(); track w.id) {
|
|
186
|
+
<prism-header-widget-host [widget]="w" />
|
|
187
|
+
}
|
|
188
|
+
</div>
|
|
189
|
+
}
|
|
137
190
|
<div class="prism-header__actions">
|
|
191
|
+
@for (w of widgetsEnd(); track w.id) {
|
|
192
|
+
<prism-header-widget-host [widget]="w" />
|
|
193
|
+
}
|
|
138
194
|
@if (buildInfoLabel()) {
|
|
139
195
|
<span class="prism-header__build-pill">{{ buildInfoLabel() }}</span>
|
|
140
196
|
}
|
|
@@ -162,9 +218,9 @@ export class PrismHeaderComponent {
|
|
|
162
218
|
<prism-layout-menu />
|
|
163
219
|
</div>
|
|
164
220
|
</header>
|
|
165
|
-
`, styles: ["\n .prism-header {\n height: 52px;\n display: grid;\n grid-template-columns: minmax(min-content, var(--sw, 264px)) 1fr auto;\n align-items: center;\n padding: 0 14px 0 0;\n background: var(--prism-bg);\n border-bottom: 1px solid var(--prism-border);\n }\n\n .prism-header__brand {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 0 16px;\n cursor: pointer;\n white-space: nowrap;\n }\n\n .prism-header__logo-default {\n width: 26px;\n height: 26px;\n flex: 0 0 26px;\n color: var(--prism-primary);\n filter: drop-shadow(0 0 8px var(--prism-glow-strong));\n }\n .prism-header__logo-default img { width: 30px; }\n\n .prism-header__logo-img {\n height: 26px;\n width: auto;\n object-fit: contain;\n }\n\n .prism-header__brand-text {\n display: flex;\n flex-direction: column;\n line-height: 1.1;\n }\n\n .prism-header__brand-name {\n font-weight: 700;\n font-size: var(--fs-xl);\n letter-spacing: -0.01em;\n background: linear-gradient(90deg, var(--prism-primary), var(--prism-accent) 60%, var(--prism-primary-to));\n -webkit-background-clip: text;\n background-clip: text;\n color: transparent;\n }\n\n .prism-header__brand-sub {\n font-family: var(--font-mono);\n font-size: var(--fs-xs);\n color: var(--prism-text-ghost);\n }\n\n .prism-header__cmdbar {\n max-width: 540px;\n width: 100%;\n justify-self: center;\n display: flex;\n align-items: center;\n gap: 10px;\n height: 32px;\n padding: 0 12px;\n background: var(--prism-input-bg);\n border: 1px solid var(--prism-border);\n border-radius: 8px;\n color: var(--prism-text-muted);\n font-size: var(--fs-lg);\n cursor: pointer;\n transition: border-color var(--dur-fast), background var(--dur-fast);\n }\n .prism-header__cmdbar:hover {\n border-color: var(--prism-border-strong);\n color: var(--prism-text-2);\n }\n\n .prism-header__cmdbar-text {\n flex: 1;\n text-align: left;\n }\n\n .prism-header__cmdbar-shortcut {\n display: flex;\n gap: 3px;\n }\n .prism-header__cmdbar-shortcut kbd {\n font-family: var(--font-mono);\n font-size: 10.5px;\n padding: 1px 5px;\n border-radius: 4px;\n background: var(--prism-input-bg);\n border: 1px solid var(--prism-border);\n color: var(--prism-text-muted);\n }\n\n .prism-header__build-pill {\n font-family: var(--font-mono);\n font-size: var(--fs-xs);\n color: var(--prism-text-ghost);\n background: var(--prism-input-bg);\n border: 1px solid var(--prism-border);\n border-radius: 9999px;\n padding: 2px 10px;\n white-space: nowrap;\n line-height: 1.4;\n }\n\n .prism-header__actions {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: 6px;\n }\n\n .prism-header__icon-btn {\n width: 32px;\n height: 32px;\n display: grid;\n place-items: center;\n border-radius: 8px;\n color: var(--prism-text-muted);\n background: none;\n border: none;\n cursor: pointer;\n position: relative;\n transition: all var(--dur-fast);\n }\n .prism-header__icon-btn:hover {\n background: var(--prism-input-bg);\n color: var(--prism-text);\n }\n\n :focus-visible {\n outline: 2px solid var(--prism-primary);\n outline-offset: 2px;\n }\n "] }]
|
|
221
|
+
`, styles: ["\n .prism-header {\n height: 52px;\n display: grid;\n grid-template-columns: minmax(min-content, var(--sw, 264px)) 1fr auto;\n align-items: center;\n padding: 0 14px 0 0;\n background: var(--prism-bg);\n border-bottom: 1px solid var(--prism-border);\n }\n\n .prism-header__brand {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 0 16px;\n cursor: pointer;\n white-space: nowrap;\n }\n\n .prism-header__logo-default {\n width: 26px;\n height: 26px;\n flex: 0 0 26px;\n color: var(--prism-primary);\n filter: drop-shadow(0 0 8px var(--prism-glow-strong));\n }\n .prism-header__logo-default img { width: 30px; }\n\n .prism-header__logo-img {\n height: 26px;\n width: auto;\n object-fit: contain;\n }\n\n .prism-header__brand-text {\n display: flex;\n flex-direction: column;\n line-height: 1.1;\n }\n\n .prism-header__brand-name {\n font-weight: 700;\n font-size: var(--fs-xl);\n letter-spacing: -0.01em;\n background: linear-gradient(90deg, var(--prism-primary), var(--prism-accent) 60%, var(--prism-primary-to));\n -webkit-background-clip: text;\n background-clip: text;\n color: transparent;\n }\n\n .prism-header__brand-sub {\n font-family: var(--font-mono);\n font-size: var(--fs-xs);\n color: var(--prism-text-ghost);\n }\n\n .prism-header__cmdbar {\n max-width: 540px;\n width: 100%;\n justify-self: center;\n display: flex;\n align-items: center;\n gap: 10px;\n height: 32px;\n padding: 0 12px;\n background: var(--prism-input-bg);\n border: 1px solid var(--prism-border);\n border-radius: 8px;\n color: var(--prism-text-muted);\n font-size: var(--fs-lg);\n cursor: pointer;\n transition: border-color var(--dur-fast), background var(--dur-fast);\n }\n .prism-header__cmdbar:hover {\n border-color: var(--prism-border-strong);\n color: var(--prism-text-2);\n }\n\n .prism-header__cmdbar-text {\n flex: 1;\n text-align: left;\n }\n\n .prism-header__cmdbar-shortcut {\n display: flex;\n gap: 3px;\n }\n .prism-header__cmdbar-shortcut kbd {\n font-family: var(--font-mono);\n font-size: 10.5px;\n padding: 1px 5px;\n border-radius: 4px;\n background: var(--prism-input-bg);\n border: 1px solid var(--prism-border);\n color: var(--prism-text-muted);\n }\n\n .prism-header__build-pill {\n font-family: var(--font-mono);\n font-size: var(--fs-xs);\n color: var(--prism-text-ghost);\n background: var(--prism-input-bg);\n border: 1px solid var(--prism-border);\n border-radius: 9999px;\n padding: 2px 10px;\n white-space: nowrap;\n line-height: 1.4;\n }\n\n .prism-header__actions {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: 6px;\n }\n\n .prism-header__widgets {\n display: flex;\n align-items: center;\n gap: 8px;\n min-width: 0;\n }\n .prism-header__widgets--start {\n padding-left: 4px;\n justify-content: flex-start;\n }\n\n .prism-header__icon-btn {\n width: 32px;\n height: 32px;\n display: grid;\n place-items: center;\n border-radius: 8px;\n color: var(--prism-text-muted);\n background: none;\n border: none;\n cursor: pointer;\n position: relative;\n transition: all var(--dur-fast);\n }\n .prism-header__icon-btn:hover {\n background: var(--prism-input-bg);\n color: var(--prism-text);\n }\n\n :focus-visible {\n outline: 2px solid var(--prism-primary);\n outline-offset: 2px;\n }\n "] }]
|
|
166
222
|
}], null, { onGlobalKey: [{
|
|
167
223
|
type: HostListener,
|
|
168
224
|
args: ['document:keydown', ['$event']]
|
|
169
225
|
}] }); })();
|
|
170
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismHeaderComponent, { className: "PrismHeaderComponent", filePath: "app/header/prism-header.component.ts", lineNumber:
|
|
226
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismHeaderComponent, { className: "PrismHeaderComponent", filePath: "app/header/prism-header.component.ts", lineNumber: 238 }); })();
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
type Variant = 'ok' | 'warn' | 'danger';
|
|
3
|
+
export declare class A11yHeaderBadgeComponent {
|
|
4
|
+
private readonly manifest;
|
|
5
|
+
private readonly config;
|
|
6
|
+
protected readonly data: import("@angular/core").Signal<{
|
|
7
|
+
score: number;
|
|
8
|
+
variant: Variant;
|
|
9
|
+
title: string;
|
|
10
|
+
} | null>;
|
|
11
|
+
private computeVariant;
|
|
12
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<A11yHeaderBadgeComponent, never>;
|
|
13
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<A11yHeaderBadgeComponent, "prism-a11y-header-badge", never, {}, {}, never, never, true, never>;
|
|
14
|
+
}
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=a11y-header-badge.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"a11y-header-badge.component.d.ts","sourceRoot":"","sources":["../../../../src/app/panels/a11y/a11y-header-badge.component.ts"],"names":[],"mappings":";AAcA,KAAK,OAAO,GAAG,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAC;AAExC,qBAqFa,wBAAwB;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA2C;IACpE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuC;IAE9D,SAAS,CAAC,QAAQ,CAAC,IAAI;;;;cAoBpB;IAEH,OAAO,CAAC,cAAc;yCA1BX,wBAAwB;2CAAxB,wBAAwB;CAsCpC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, computed, inject, } from '@angular/core';
|
|
2
|
+
import { PRISM_CONFIG, PRISM_MANIFEST } from '../../tokens/prism-tokens.js';
|
|
3
|
+
import { resolveA11yThresholds } from './a11y-thresholds.js';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
function A11yHeaderBadgeComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
6
|
+
i0.ɵɵdomElementStart(0, "span", 1);
|
|
7
|
+
i0.ɵɵdomElement(1, "span", 2);
|
|
8
|
+
i0.ɵɵdomElementStart(2, "span", 3);
|
|
9
|
+
i0.ɵɵtext(3, "A11y");
|
|
10
|
+
i0.ɵɵdomElementEnd();
|
|
11
|
+
i0.ɵɵdomElementStart(4, "span", 4);
|
|
12
|
+
i0.ɵɵtext(5);
|
|
13
|
+
i0.ɵɵdomElementStart(6, "small");
|
|
14
|
+
i0.ɵɵtext(7, "%");
|
|
15
|
+
i0.ɵɵdomElementEnd()()();
|
|
16
|
+
} if (rf & 2) {
|
|
17
|
+
const d_r1 = ctx;
|
|
18
|
+
i0.ɵɵclassProp("a11y-pill--ok", d_r1.variant === "ok")("a11y-pill--warn", d_r1.variant === "warn")("a11y-pill--danger", d_r1.variant === "danger");
|
|
19
|
+
i0.ɵɵdomProperty("title", d_r1.title);
|
|
20
|
+
i0.ɵɵadvance(5);
|
|
21
|
+
i0.ɵɵtextInterpolate(d_r1.score);
|
|
22
|
+
} }
|
|
23
|
+
export class A11yHeaderBadgeComponent {
|
|
24
|
+
manifest = inject(PRISM_MANIFEST);
|
|
25
|
+
config = inject(PRISM_CONFIG);
|
|
26
|
+
data = computed(() => {
|
|
27
|
+
const meta = this.manifest.meta?.['a11y'];
|
|
28
|
+
if (!meta?.total)
|
|
29
|
+
return null;
|
|
30
|
+
const score = meta.total.score;
|
|
31
|
+
const thresholds = resolveA11yThresholds({
|
|
32
|
+
...meta.thresholds,
|
|
33
|
+
...this.config.a11y?.thresholds,
|
|
34
|
+
});
|
|
35
|
+
const variant = this.computeVariant(score, meta.total, thresholds);
|
|
36
|
+
return {
|
|
37
|
+
score,
|
|
38
|
+
variant,
|
|
39
|
+
title: `Library A11y: ${score}% (target ${thresholds.score}%)\n` +
|
|
40
|
+
`${meta.total.auditedComponents} components · ${meta.total.auditedVariants} variants\n` +
|
|
41
|
+
`Violations: ${meta.total.critical} critical · ${meta.total.serious} serious · ` +
|
|
42
|
+
`${meta.total.moderate} moderate · ${meta.total.minor} minor`,
|
|
43
|
+
};
|
|
44
|
+
}, ...(ngDevMode ? [{ debugName: "data" }] : []));
|
|
45
|
+
computeVariant(score, total, thresholds) {
|
|
46
|
+
if (total.critical > thresholds.critical)
|
|
47
|
+
return 'danger';
|
|
48
|
+
if (total.serious > thresholds.serious)
|
|
49
|
+
return 'danger';
|
|
50
|
+
if (score < thresholds.score * 0.75)
|
|
51
|
+
return 'danger';
|
|
52
|
+
if (score < thresholds.score)
|
|
53
|
+
return 'warn';
|
|
54
|
+
if (total.moderate > thresholds.moderate)
|
|
55
|
+
return 'warn';
|
|
56
|
+
return 'ok';
|
|
57
|
+
}
|
|
58
|
+
static ɵfac = function A11yHeaderBadgeComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || A11yHeaderBadgeComponent)(); };
|
|
59
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: A11yHeaderBadgeComponent, selectors: [["prism-a11y-header-badge"]], decls: 1, vars: 1, consts: [[1, "a11y-pill", 3, "a11y-pill--ok", "a11y-pill--warn", "a11y-pill--danger", "title"], [1, "a11y-pill", 3, "title"], [1, "a11y-pill__dot"], [1, "a11y-pill__label"], [1, "a11y-pill__value"]], template: function A11yHeaderBadgeComponent_Template(rf, ctx) { if (rf & 1) {
|
|
60
|
+
i0.ɵɵconditionalCreate(0, A11yHeaderBadgeComponent_Conditional_0_Template, 8, 8, "span", 0);
|
|
61
|
+
} if (rf & 2) {
|
|
62
|
+
let tmp_0_0;
|
|
63
|
+
i0.ɵɵconditional((tmp_0_0 = ctx.data()) ? 0 : -1, tmp_0_0);
|
|
64
|
+
} }, styles: ["[_nghost-%COMP%] { display: inline-flex; align-items: center; }\n\n .a11y-pill[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-family: var(--font-mono);\n font-size: var(--fs-xs);\n padding: 2px 10px;\n border-radius: 9999px;\n line-height: 1.4;\n border: 1px solid var(--prism-border);\n background: var(--prism-input-bg);\n color: var(--prism-text-muted);\n white-space: nowrap;\n }\n\n .a11y-pill__dot[_ngcontent-%COMP%] {\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background: currentColor;\n }\n\n .a11y-pill__label[_ngcontent-%COMP%] {\n color: var(--prism-text-ghost);\n letter-spacing: 0.02em;\n }\n\n .a11y-pill__value[_ngcontent-%COMP%] {\n color: var(--prism-text);\n font-weight: 600;\n }\n .a11y-pill__value[_ngcontent-%COMP%] small[_ngcontent-%COMP%] {\n font-size: 9px;\n margin-left: 1px;\n color: var(--prism-text-muted);\n font-weight: 500;\n }\n\n .a11y-pill--ok[_ngcontent-%COMP%] {\n color: var(--prism-success);\n border-color: color-mix(in srgb, var(--prism-success) 35%, transparent);\n background: color-mix(in srgb, var(--prism-success) 12%, transparent);\n }\n .a11y-pill--ok[_ngcontent-%COMP%] .a11y-pill__label[_ngcontent-%COMP%], \n .a11y-pill--ok[_ngcontent-%COMP%] .a11y-pill__value[_ngcontent-%COMP%] { color: var(--prism-success); }\n\n .a11y-pill--warn[_ngcontent-%COMP%] {\n color: var(--prism-warn);\n border-color: color-mix(in srgb, var(--prism-warn) 35%, transparent);\n background: color-mix(in srgb, var(--prism-warn) 12%, transparent);\n }\n .a11y-pill--warn[_ngcontent-%COMP%] .a11y-pill__label[_ngcontent-%COMP%], \n .a11y-pill--warn[_ngcontent-%COMP%] .a11y-pill__value[_ngcontent-%COMP%] { color: var(--prism-warn); }\n\n .a11y-pill--danger[_ngcontent-%COMP%] {\n color: var(--prism-danger);\n border-color: color-mix(in srgb, var(--prism-danger) 35%, transparent);\n background: color-mix(in srgb, var(--prism-danger) 12%, transparent);\n }\n .a11y-pill--danger[_ngcontent-%COMP%] .a11y-pill__label[_ngcontent-%COMP%], \n .a11y-pill--danger[_ngcontent-%COMP%] .a11y-pill__value[_ngcontent-%COMP%] { color: var(--prism-danger); }"], changeDetection: 0 });
|
|
65
|
+
}
|
|
66
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(A11yHeaderBadgeComponent, [{
|
|
67
|
+
type: Component,
|
|
68
|
+
args: [{ selector: 'prism-a11y-header-badge', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: `
|
|
69
|
+
@if (data(); as d) {
|
|
70
|
+
<span
|
|
71
|
+
class="a11y-pill"
|
|
72
|
+
[class.a11y-pill--ok]="d.variant === 'ok'"
|
|
73
|
+
[class.a11y-pill--warn]="d.variant === 'warn'"
|
|
74
|
+
[class.a11y-pill--danger]="d.variant === 'danger'"
|
|
75
|
+
[title]="d.title"
|
|
76
|
+
>
|
|
77
|
+
<span class="a11y-pill__dot"></span>
|
|
78
|
+
<span class="a11y-pill__label">A11y</span>
|
|
79
|
+
<span class="a11y-pill__value">{{ d.score }}<small>%</small></span>
|
|
80
|
+
</span>
|
|
81
|
+
}
|
|
82
|
+
`, styles: ["\n :host { display: inline-flex; align-items: center; }\n\n .a11y-pill {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-family: var(--font-mono);\n font-size: var(--fs-xs);\n padding: 2px 10px;\n border-radius: 9999px;\n line-height: 1.4;\n border: 1px solid var(--prism-border);\n background: var(--prism-input-bg);\n color: var(--prism-text-muted);\n white-space: nowrap;\n }\n\n .a11y-pill__dot {\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background: currentColor;\n }\n\n .a11y-pill__label {\n color: var(--prism-text-ghost);\n letter-spacing: 0.02em;\n }\n\n .a11y-pill__value {\n color: var(--prism-text);\n font-weight: 600;\n }\n .a11y-pill__value small {\n font-size: 9px;\n margin-left: 1px;\n color: var(--prism-text-muted);\n font-weight: 500;\n }\n\n .a11y-pill--ok {\n color: var(--prism-success);\n border-color: color-mix(in srgb, var(--prism-success) 35%, transparent);\n background: color-mix(in srgb, var(--prism-success) 12%, transparent);\n }\n .a11y-pill--ok .a11y-pill__label,\n .a11y-pill--ok .a11y-pill__value { color: var(--prism-success); }\n\n .a11y-pill--warn {\n color: var(--prism-warn);\n border-color: color-mix(in srgb, var(--prism-warn) 35%, transparent);\n background: color-mix(in srgb, var(--prism-warn) 12%, transparent);\n }\n .a11y-pill--warn .a11y-pill__label,\n .a11y-pill--warn .a11y-pill__value { color: var(--prism-warn); }\n\n .a11y-pill--danger {\n color: var(--prism-danger);\n border-color: color-mix(in srgb, var(--prism-danger) 35%, transparent);\n background: color-mix(in srgb, var(--prism-danger) 12%, transparent);\n }\n .a11y-pill--danger .a11y-pill__label,\n .a11y-pill--danger .a11y-pill__value { color: var(--prism-danger); }\n "] }]
|
|
83
|
+
}], null, null); })();
|
|
84
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(A11yHeaderBadgeComponent, { className: "A11yHeaderBadgeComponent", filePath: "app/panels/a11y/a11y-header-badge.component.ts", lineNumber: 102 }); })();
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { A11yThresholds } from './a11y.types.js';
|
|
2
|
+
/** Sentinel value meaning "no upper bound" — JSON-safe (unlike Infinity, which serializes to null). */
|
|
3
|
+
export declare const A11Y_UNLIMITED: number;
|
|
4
|
+
export declare const DEFAULT_A11Y_THRESHOLDS: A11yThresholds;
|
|
5
|
+
export declare function resolveA11yThresholds(input?: Partial<A11yThresholds>): A11yThresholds;
|
|
6
|
+
//# sourceMappingURL=a11y-thresholds.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"a11y-thresholds.d.ts","sourceRoot":"","sources":["../../../../src/app/panels/a11y/a11y-thresholds.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD,uGAAuG;AACvG,eAAO,MAAM,cAAc,QAA0B,CAAC;AAEtD,eAAO,MAAM,uBAAuB,EAAE,cAKrC,CAAC;AAEF,wBAAgB,qBAAqB,CACnC,KAAK,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,GAC9B,cAAc,CAGhB"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/** Sentinel value meaning "no upper bound" — JSON-safe (unlike Infinity, which serializes to null). */
|
|
2
|
+
export const A11Y_UNLIMITED = Number.MAX_SAFE_INTEGER;
|
|
3
|
+
export const DEFAULT_A11Y_THRESHOLDS = {
|
|
4
|
+
score: 80,
|
|
5
|
+
critical: 0,
|
|
6
|
+
serious: 0,
|
|
7
|
+
moderate: A11Y_UNLIMITED,
|
|
8
|
+
};
|
|
9
|
+
export function resolveA11yThresholds(input) {
|
|
10
|
+
if (!input)
|
|
11
|
+
return { ...DEFAULT_A11Y_THRESHOLDS };
|
|
12
|
+
return { ...DEFAULT_A11Y_THRESHOLDS, ...input };
|
|
13
|
+
}
|
|
@@ -14,6 +14,39 @@ export interface A11yScoreResult {
|
|
|
14
14
|
passes: number;
|
|
15
15
|
incomplete: number;
|
|
16
16
|
}
|
|
17
|
+
export interface A11yThresholds {
|
|
18
|
+
/** Minimum acceptable avg score (0-100). Default: 80 */
|
|
19
|
+
score: number;
|
|
20
|
+
/** Maximum allowed critical violations across the library. Default: 0 */
|
|
21
|
+
critical: number;
|
|
22
|
+
/** Maximum allowed serious violations across the library. Default: 0 */
|
|
23
|
+
serious: number;
|
|
24
|
+
/** Maximum allowed moderate violations across the library. Default: A11Y_UNLIMITED. */
|
|
25
|
+
moderate: number;
|
|
26
|
+
}
|
|
27
|
+
/** A11y-Report shape produced by the build-time audit (or any user script). */
|
|
28
|
+
export interface A11yReport {
|
|
29
|
+
/** Aggregate library-wide score data (avg + sum of violations). */
|
|
30
|
+
total: A11yScoreResult & {
|
|
31
|
+
auditedComponents: number;
|
|
32
|
+
auditedVariants: number;
|
|
33
|
+
};
|
|
34
|
+
/** Optional per-component breakdown (className → score). Used for tooltips/drilldown. */
|
|
35
|
+
components?: Record<string, A11yScoreResult>;
|
|
36
|
+
/** Timestamp the report was generated. */
|
|
37
|
+
generatedAt?: string;
|
|
38
|
+
}
|
|
39
|
+
/** Shape stored under `manifest.meta.a11y` once the report is merged in. */
|
|
40
|
+
export interface A11yManifestMeta {
|
|
41
|
+
total: A11yReport['total'];
|
|
42
|
+
thresholds: A11yThresholds;
|
|
43
|
+
}
|
|
44
|
+
export interface NgPrismA11yConfig {
|
|
45
|
+
/** Thresholds for the header badge color-coding and (when run via the CLI) build failure. */
|
|
46
|
+
thresholds?: Partial<A11yThresholds>;
|
|
47
|
+
/** Path to the a11y report JSON, relative to the workspace root. Default: 'a11y-report.json'. */
|
|
48
|
+
reportPath?: string;
|
|
49
|
+
}
|
|
17
50
|
export interface FocusableElement {
|
|
18
51
|
element: Element;
|
|
19
52
|
index: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"a11y.types.d.ts","sourceRoot":"","sources":["../../../../src/app/panels/a11y/a11y.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAC7C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC;IACzC,QAAQ,EAAE,QAAQ,EAAE,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CAClB"}
|
|
1
|
+
{"version":3,"file":"a11y.types.d.ts","sourceRoot":"","sources":["../../../../src/app/panels/a11y/a11y.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAC7C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,wDAAwD;IACxD,KAAK,EAAE,MAAM,CAAC;IACd,yEAAyE;IACzE,QAAQ,EAAE,MAAM,CAAC;IACjB,wEAAwE;IACxE,OAAO,EAAE,MAAM,CAAC;IAChB,uFAAuF;IACvF,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,+EAA+E;AAC/E,MAAM,WAAW,UAAU;IACzB,mEAAmE;IACnE,KAAK,EAAE,eAAe,GAAG;QAAE,iBAAiB,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAA;KAAE,CAAC;IAChF,yFAAyF;IACzF,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC7C,0CAA0C;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,4EAA4E;AAC5E,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IAC3B,UAAU,EAAE,cAAc,CAAC;CAC5B;AAED,MAAM,WAAW,iBAAiB;IAChC,6FAA6F;IAC7F,UAAU,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IACrC,iGAAiG;IACjG,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC;IACzC,QAAQ,EAAE,QAAQ,EAAE,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CAClB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builtin-header-widgets.d.ts","sourceRoot":"","sources":["../../../src/app/panels/builtin-header-widgets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAG3E,eAAO,MAAM,sBAAsB,EAAE,sBAAsB,EAO1D,CAAC"}
|
|
@@ -1,11 +1,18 @@
|
|
|
1
1
|
import { EnvironmentInjector, type Type } from '@angular/core';
|
|
2
2
|
import { PrismPanelService } from '../../services/prism-panel.service.js';
|
|
3
|
+
import type { PanelDefinition } from '../../../plugin/plugin.types.js';
|
|
3
4
|
import * as i0 from "@angular/core";
|
|
5
|
+
type RenderedPanelEntry = {
|
|
6
|
+
id: string;
|
|
7
|
+
component: Type<unknown>;
|
|
8
|
+
injector: EnvironmentInjector | null;
|
|
9
|
+
keepAlive: boolean;
|
|
10
|
+
};
|
|
4
11
|
export declare class PrismPanelHostComponent {
|
|
5
12
|
private readonly pluginService;
|
|
6
13
|
private readonly nav;
|
|
7
14
|
protected readonly panelService: PrismPanelService;
|
|
8
|
-
|
|
15
|
+
protected readonly envInjector: EnvironmentInjector;
|
|
9
16
|
private readonly auditService;
|
|
10
17
|
private readonly rendererService;
|
|
11
18
|
private readonly a11yScore;
|
|
@@ -16,15 +23,19 @@ export declare class PrismPanelHostComponent {
|
|
|
16
23
|
variant: 'default' | 'ok' | 'warn' | 'danger';
|
|
17
24
|
} | null;
|
|
18
25
|
private readonly builtInPanels;
|
|
19
|
-
protected readonly allPanels: import("@angular/core").Signal<
|
|
20
|
-
protected readonly resolvedComponent: import("@angular/core").WritableSignal<Type<unknown> | null>;
|
|
26
|
+
protected readonly allPanels: import("@angular/core").Signal<PanelDefinition[]>;
|
|
21
27
|
protected readonly panelInputs: import("@angular/core").Signal<{
|
|
22
|
-
activeComponent: import("../../../
|
|
28
|
+
activeComponent: import("../../../plugin/plugin.types.js").RuntimeComponent | null;
|
|
23
29
|
}>;
|
|
24
30
|
private readonly lazyCache;
|
|
25
|
-
|
|
31
|
+
private readonly renderedPanels;
|
|
32
|
+
protected readonly renderedPanelsArray: import("@angular/core").Signal<RenderedPanelEntry[]>;
|
|
26
33
|
constructor();
|
|
34
|
+
private ensurePanelLoaded;
|
|
35
|
+
private addRenderedPanel;
|
|
36
|
+
private pruneRenderedPanels;
|
|
27
37
|
static ɵfac: i0.ɵɵFactoryDeclaration<PrismPanelHostComponent, never>;
|
|
28
38
|
static ɵcmp: i0.ɵɵComponentDeclaration<PrismPanelHostComponent, "prism-panel-host", never, {}, {}, never, never, true, never>;
|
|
29
39
|
}
|
|
40
|
+
export {};
|
|
30
41
|
//# sourceMappingURL=prism-panel-host.component.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prism-panel-host.component.d.ts","sourceRoot":"","sources":["../../../../src/app/panels/panel-host/prism-panel-host.component.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,mBAAmB,EAGnB,KAAK,IAAI,
|
|
1
|
+
{"version":3,"file":"prism-panel-host.component.d.ts","sourceRoot":"","sources":["../../../../src/app/panels/panel-host/prism-panel-host.component.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,mBAAmB,EAGnB,KAAK,IAAI,EAGV,MAAM,eAAe,CAAC;AAKvB,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAI1E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;;AAEvE,KAAK,kBAAkB,GAAG;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACzB,QAAQ,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACrC,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,qBAuLa,uBAAuB;IAClC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA8B;IAC5D,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAkC;IACtD,SAAS,CAAC,QAAQ,CAAC,YAAY,oBAA6B;IAC5D,SAAS,CAAC,QAAQ,CAAC,WAAW,sBAA+B;IAC7D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA4B;IACzD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAgC;IAEhE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAExB;IAEF,OAAO,CAAC,QAAQ,CAAC,aAAa,CAK3B;IAEH,OAAO,CAAC,QAAQ,CAAC,UAAU,CAGxB;IAEH,SAAS,CAAC,UAAU,CAClB,OAAO,EAAE,MAAM,GACd;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAA;KAAE,GAAG,IAAI;IAwBzE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAkB;IAEhD,SAAS,CAAC,QAAQ,CAAC,SAAS,oDAQzB;IAEH,SAAS,CAAC,QAAQ,CAAC,WAAW;;OAE1B;IAEJ,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoC;IAE9D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAE7B;IACF,SAAS,CAAC,QAAQ,CAAC,mBAAmB,uDAEpC;;IAsCF,OAAO,CAAC,iBAAiB;IAuBzB,OAAO,CAAC,gBAAgB;IAcxB,OAAO,CAAC,mBAAmB;yCApJhB,uBAAuB;2CAAvB,uBAAuB;CAwKnC"}
|