@ng-prism/core 22.2.0 → 22.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -24
- package/builders.json +11 -11
- package/dist/app/canvas/canvas-bg.styles.d.ts +1 -1
- package/dist/app/canvas/canvas-bg.styles.d.ts.map +1 -1
- package/dist/app/canvas/canvas-bg.styles.js +17 -0
- package/dist/app/canvas/prism-canvas-bg-pill.component.d.ts.map +1 -1
- package/dist/app/canvas/prism-canvas-bg-pill.component.js +3 -18
- package/dist/app/canvas/prism-canvas-rulers.component.d.ts +1 -0
- package/dist/app/canvas/prism-canvas-rulers.component.d.ts.map +1 -1
- package/dist/app/canvas/prism-canvas-rulers.component.js +9 -14
- package/dist/app/canvas/prism-canvas-toolbar.component.d.ts +23 -6
- package/dist/app/canvas/prism-canvas-toolbar.component.d.ts.map +1 -1
- package/dist/app/canvas/prism-canvas-toolbar.component.js +110 -140
- package/dist/app/canvas/prism-template-popover.component.d.ts.map +1 -1
- package/dist/app/canvas/prism-template-popover.component.js +8 -49
- package/dist/app/canvas/viewport-snap.d.ts +12 -0
- package/dist/app/canvas/viewport-snap.d.ts.map +1 -0
- package/dist/app/canvas/viewport-snap.js +23 -0
- package/dist/app/component-head/head-metrics.d.ts.map +1 -1
- package/dist/app/component-head/head-metrics.js +2 -2
- package/dist/app/component-head/prism-component-head.component.d.ts +1 -1
- package/dist/app/component-head/prism-component-head.component.d.ts.map +1 -1
- package/dist/app/component-head/prism-component-head.component.js +17 -50
- package/dist/app/component-head/prism-head-gauge.component.d.ts.map +1 -1
- package/dist/app/component-head/prism-head-gauge.component.js +4 -36
- package/dist/app/component-head/prism-head-info.component.d.ts.map +1 -1
- package/dist/app/component-head/prism-head-info.component.js +3 -36
- package/dist/app/component-head/prism-stat.component.d.ts.map +1 -1
- package/dist/app/component-head/prism-stat.component.js +3 -14
- package/dist/app/controls/boolean-control.component.d.ts.map +1 -1
- package/dist/app/controls/boolean-control.component.js +4 -12
- package/dist/app/controls/json-control.component.d.ts.map +1 -1
- package/dist/app/controls/json-control.component.js +4 -24
- package/dist/app/controls/number-control.component.d.ts.map +1 -1
- package/dist/app/controls/number-control.component.js +4 -11
- package/dist/app/controls/string-control.component.d.ts.map +1 -1
- package/dist/app/controls/string-control.component.js +4 -11
- package/dist/app/controls/union-control.component.d.ts.map +1 -1
- package/dist/app/controls/union-control.component.js +4 -16
- package/dist/app/directives/prism-resizer.directive.d.ts +24 -1
- package/dist/app/directives/prism-resizer.directive.d.ts.map +1 -1
- package/dist/app/directives/prism-resizer.directive.js +44 -7
- package/dist/app/directives/resize-value.d.ts +22 -0
- package/dist/app/directives/resize-value.d.ts.map +1 -0
- package/dist/app/directives/resize-value.js +23 -0
- package/dist/app/discovery-manifest.d.ts.map +1 -1
- package/dist/app/discovery-manifest.js +5 -7
- package/dist/app/header/prism-header-widget-host.component.d.ts.map +1 -1
- package/dist/app/header/prism-header-widget-host.component.js +4 -8
- package/dist/app/header/prism-header.component.d.ts.map +1 -1
- package/dist/app/header/prism-header.component.js +8 -77
- package/dist/app/hmr.d.ts.map +1 -1
- package/dist/app/icons/icon-registry.d.ts.map +1 -1
- package/dist/app/icons/icon-registry.js +2 -1
- package/dist/app/icons/prism-icon.component.d.ts.map +1 -1
- package/dist/app/icons/prism-icon.component.js +5 -5
- package/dist/app/index.d.ts +3 -3
- package/dist/app/index.d.ts.map +1 -1
- package/dist/app/index.js +3 -3
- package/dist/app/layout-menu/prism-layout-menu.component.d.ts.map +1 -1
- package/dist/app/layout-menu/prism-layout-menu.component.js +3 -77
- package/dist/app/overview/overview-panel.js +1 -1
- package/dist/app/overview/overview-visibility.d.ts.map +1 -1
- package/dist/app/overview/prism-overview-cell.component.d.ts.map +1 -1
- package/dist/app/overview/prism-overview-cell.component.js +10 -17
- package/dist/app/overview/prism-overview.component.d.ts.map +1 -1
- package/dist/app/overview/prism-overview.component.js +4 -12
- package/dist/app/page-renderer/prism-page-renderer.component.d.ts.map +1 -1
- package/dist/app/page-renderer/prism-page-renderer.component.js +4 -17
- package/dist/app/panels/a11y/a11y-audit.service.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-audit.service.js +14 -2
- package/dist/app/panels/a11y/a11y-core.plugin.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-core.plugin.js +1 -1
- package/dist/app/panels/a11y/a11y-dom-utils.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-dom-utils.js +9 -6
- package/dist/app/panels/a11y/a11y-header-badge.component.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-header-badge.component.js +6 -22
- package/dist/app/panels/a11y/a11y-keyboard-overlay.component.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-keyboard-overlay.component.js +6 -25
- package/dist/app/panels/a11y/a11y-keyboard.component.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-keyboard.component.js +5 -36
- package/dist/app/panels/a11y/a11y-keyboard.service.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-keyboard.service.js +2 -2
- package/dist/app/panels/a11y/a11y-overlay-host.component.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-overlay-host.component.js +5 -32
- package/dist/app/panels/a11y/a11y-panel-state.service.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-panel.component.d.ts +1 -1
- package/dist/app/panels/a11y/a11y-panel.component.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-panel.component.js +7 -69
- package/dist/app/panels/a11y/a11y-perspective.service.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-score.component.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-score.component.js +4 -31
- package/dist/app/panels/a11y/a11y-sr-overlay.component.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-sr-overlay.component.js +8 -28
- package/dist/app/panels/a11y/a11y-sr.component.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-sr.component.js +5 -28
- package/dist/app/panels/a11y/a11y-sr.service.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-sr.service.js +4 -7
- package/dist/app/panels/a11y/a11y-summary.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-summary.js +2 -5
- package/dist/app/panels/a11y/a11y-thresholds.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-thresholds.js +1 -1
- package/dist/app/panels/a11y/a11y-tree.component.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-tree.component.js +9 -46
- package/dist/app/panels/a11y/a11y-tree.service.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-tree.service.js +3 -5
- package/dist/app/panels/a11y/a11y-violations.component.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-violations.component.js +7 -58
- package/dist/app/panels/a11y/a11y.types.d.ts.map +1 -1
- package/dist/app/panels/builtin-header-widgets.js +2 -2
- package/dist/app/panels/builtin-navigation-decorations.d.ts.map +1 -1
- package/dist/app/panels/builtin-navigation-decorations.js +2 -2
- package/dist/app/panels/builtin-panels.d.ts.map +1 -1
- package/dist/app/panels/builtin-panels.js +2 -7
- package/dist/app/panels/controls/controls-plugin.js +3 -3
- package/dist/app/panels/controls/non-editable-input-types.d.ts.map +1 -1
- package/dist/app/panels/controls/non-editable-input-types.js +1 -5
- package/dist/app/panels/controls/prism-controls-panel.component.d.ts.map +1 -1
- package/dist/app/panels/controls/prism-controls-panel.component.js +5 -95
- package/dist/app/panels/events/events-plugin.js +3 -3
- package/dist/app/panels/events/prism-events-panel.component.d.ts.map +1 -1
- package/dist/app/panels/events/prism-events-panel.component.js +5 -23
- package/dist/app/panels/events/prism-json-node.component.d.ts.map +1 -1
- package/dist/app/panels/events/prism-json-node.component.js +4 -86
- package/dist/app/panels/events/prism-json-node.utils.d.ts.map +1 -1
- package/dist/app/panels/panel-host/panel-badge.d.ts.map +1 -1
- package/dist/app/panels/panel-host/panel-badge.js +2 -4
- package/dist/app/panels/panel-host/prism-panel-host.component.d.ts +1 -1
- 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 +12 -67
- package/dist/app/provide-prism.d.ts +1 -1
- package/dist/app/provide-prism.d.ts.map +1 -1
- package/dist/app/provide-prism.js +7 -11
- package/dist/app/renderer/known-inputs.d.ts.map +1 -1
- package/dist/app/renderer/overlay-resolver.d.ts.map +1 -1
- package/dist/app/renderer/overlay-resolver.js +1 -1
- package/dist/app/renderer/prism-renderer.component.d.ts +27 -2
- package/dist/app/renderer/prism-renderer.component.d.ts.map +1 -1
- package/dist/app/renderer/prism-renderer.component.js +94 -76
- package/dist/app/renderer/projectable-content.d.ts.map +1 -1
- package/dist/app/renderer/projectable-content.js +1 -3
- package/dist/app/renderer/snippet-generator.d.ts +1 -1
- package/dist/app/renderer/snippet-generator.d.ts.map +1 -1
- package/dist/app/renderer/snippet-generator.js +7 -22
- package/dist/app/services/navigation-item.types.d.ts +1 -1
- package/dist/app/services/navigation-item.types.d.ts.map +1 -1
- package/dist/app/services/prism-canvas.service.d.ts +22 -0
- package/dist/app/services/prism-canvas.service.d.ts.map +1 -1
- package/dist/app/services/prism-canvas.service.js +49 -2
- package/dist/app/services/prism-capture.service.d.ts.map +1 -1
- package/dist/app/services/prism-capture.service.js +2 -6
- package/dist/app/services/prism-event-log.service.d.ts.map +1 -1
- package/dist/app/services/prism-event-log.service.js +1 -4
- package/dist/app/services/prism-layout.service.d.ts.map +1 -1
- package/dist/app/services/prism-layout.service.js +5 -4
- 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-manifest.service.js +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-navigation.service.js +5 -13
- package/dist/app/services/prism-panel.service.d.ts.map +1 -1
- package/dist/app/services/prism-panel.service.js +2 -5
- package/dist/app/services/prism-persistence.service.d.ts.map +1 -1
- package/dist/app/services/prism-persistence.service.js +8 -10
- package/dist/app/services/prism-plugin.service.d.ts.map +1 -1
- package/dist/app/services/prism-renderer.service.d.ts.map +1 -1
- package/dist/app/services/prism-renderer.service.js +5 -9
- package/dist/app/services/prism-search.service.d.ts.map +1 -1
- package/dist/app/services/prism-search.service.js +1 -2
- package/dist/app/services/prism-theme.service.d.ts.map +1 -1
- package/dist/app/services/prism-theme.service.js +6 -4
- package/dist/app/services/prism-url-state.service.d.ts.map +1 -1
- package/dist/app/services/prism-url-state.service.js +3 -9
- package/dist/app/services/prism-variant-bg.service.d.ts.map +1 -1
- package/dist/app/services/prism-variant-bg.service.js +3 -5
- package/dist/app/shared/prism-metric-badge.component.d.ts.map +1 -1
- package/dist/app/shared/prism-metric-badge.component.js +4 -17
- package/dist/app/shell/prism-shell.component.d.ts.map +1 -1
- package/dist/app/shell/prism-shell.component.js +20 -122
- package/dist/app/sidebar/navigation-decorations.d.ts.map +1 -1
- package/dist/app/sidebar/navigation-decorations.js +1 -1
- package/dist/app/sidebar/prism-sidebar.component.d.ts +1 -1
- package/dist/app/sidebar/prism-sidebar.component.d.ts.map +1 -1
- package/dist/app/sidebar/prism-sidebar.component.js +19 -154
- package/dist/app/theme/prism-default-theme.d.ts.map +1 -1
- package/dist/app/theme/prism-default-theme.js +5 -5
- package/dist/app/tokens/prism-tokens.d.ts.map +1 -1
- package/dist/app/tokens/prism-tokens.js +1 -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 +4 -49
- package/dist/app/variant-ribbon/spectrum.d.ts.map +1 -1
- package/dist/app/view-tab-bar/next-view-id.d.ts.map +1 -1
- package/dist/app/view-tab-bar/next-view-id.js +1 -3
- package/dist/app/view-tab-bar/prism-view-panel-host.component.d.ts.map +1 -1
- package/dist/app/view-tab-bar/prism-view-panel-host.component.js +5 -17
- package/dist/app/view-tab-bar/prism-view-tab-bar.component.d.ts.map +1 -1
- package/dist/app/view-tab-bar/prism-view-tab-bar.component.js +4 -27
- package/dist/builder/a11y/a11y-report-reader.d.ts +1 -1
- package/dist/builder/a11y/a11y-report-reader.d.ts.map +1 -1
- package/dist/builder/a11y/a11y-report-reader.js +7 -7
- package/dist/builder/build/index.d.ts.map +1 -1
- package/dist/builder/build/index.js +5 -9
- package/dist/builder/build/schema.d.ts.map +1 -1
- package/dist/builder/config-loader/config-loader.d.ts.map +1 -1
- package/dist/builder/config-loader/config-loader.js +4 -5
- package/dist/builder/manifest/host-parser.d.ts.map +1 -1
- package/dist/builder/manifest/host-parser.js +1 -1
- package/dist/builder/manifest/runtime-manifest.generator.d.ts +1 -1
- package/dist/builder/manifest/runtime-manifest.generator.d.ts.map +1 -1
- package/dist/builder/manifest/runtime-manifest.generator.js +9 -34
- package/dist/builder/plugin-runner/plugin-runner.d.ts.map +1 -1
- package/dist/builder/plugin-runner/plugin-runner.js +1 -3
- package/dist/builder/scanner/ast-utils.d.ts.map +1 -1
- package/dist/builder/scanner/ast-utils.js +2 -8
- package/dist/builder/scanner/component.scanner.d.ts.map +1 -1
- package/dist/builder/scanner/component.scanner.js +15 -22
- package/dist/builder/scanner/entry-point-discovery.d.ts.map +1 -1
- package/dist/builder/scanner/entry-point-discovery.js +3 -5
- package/dist/builder/scanner/entry-point.scanner.d.ts.map +1 -1
- package/dist/builder/scanner/entry-point.scanner.js +1 -3
- package/dist/builder/scanner/index.d.ts +1 -1
- package/dist/builder/scanner/index.d.ts.map +1 -1
- package/dist/builder/scanner/input.extractor.d.ts.map +1 -1
- package/dist/builder/scanner/input.extractor.js +11 -28
- package/dist/builder/scanner/manifest.generator.d.ts.map +1 -1
- package/dist/builder/scanner/manifest.generator.js +2 -4
- package/dist/builder/scanner/scanner.d.ts.map +1 -1
- package/dist/builder/scanner/scanner.js +4 -4
- package/dist/builder/serve/index.d.ts.map +1 -1
- package/dist/builder/serve/index.js +8 -10
- package/dist/builder/serve/schema.d.ts.map +1 -1
- package/dist/builder/shared/index.d.ts +1 -1
- package/dist/builder/shared/index.d.ts.map +1 -1
- package/dist/builder/shared/index.js +1 -1
- package/dist/builder/shared/prism-pipeline.d.ts.map +1 -1
- package/dist/builder/shared/prism-pipeline.js +18 -25
- package/dist/builder/shared/resolve-cache-dir.d.ts.map +1 -1
- package/dist/builder/shared/resolve-cache-dir.js +1 -1
- package/dist/builder/watcher/index.d.ts +1 -1
- package/dist/builder/watcher/index.d.ts.map +1 -1
- package/dist/builder/watcher/prism-watcher.d.ts.map +1 -1
- package/dist/builder/watcher/prism-watcher.js +12 -10
- package/dist/config/index.d.ts +2 -2
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +1 -1
- package/dist/decorator/index.d.ts +1 -1
- package/dist/decorator/index.d.ts.map +1 -1
- package/dist/decorator/showcase.decorator.d.ts.map +1 -1
- package/dist/decorator/showcase.types.d.ts.map +1 -1
- package/dist/plugin/index.d.ts +4 -4
- package/dist/plugin/index.d.ts.map +1 -1
- package/dist/plugin/index.js +2 -2
- package/dist/plugin/page-helpers.d.ts +1 -1
- package/dist/plugin/page-helpers.d.ts.map +1 -1
- package/dist/plugin/page-helpers.js +2 -2
- package/dist/plugin/page.types.d.ts.map +1 -1
- package/dist/plugin/plugin.types.d.ts +1 -1
- package/dist/plugin/plugin.types.d.ts.map +1 -1
- package/dist/schematics/migrations/v21-13-manifest-cache/index.d.ts.map +1 -1
- package/dist/schematics/migrations/v21-13-manifest-cache/index.js +4 -10
- package/dist/schematics/migrations/v22-0-cache-dir-rename/index.d.ts.map +1 -1
- package/dist/schematics/migrations/v22-0-cache-dir-rename/index.js +4 -8
- package/dist/schematics/ng-add/index.d.ts.map +1 -1
- package/dist/schematics/ng-add/index.js +122 -56
- package/dist/schematics/ng-add/schema.d.ts.map +1 -1
- package/dist/schematics/utils/config-ast.d.ts.map +1 -1
- package/dist/schematics/utils/config-ast.js +8 -15
- package/dist/schematics/utils/tsconfig-paths.d.ts.map +1 -1
- package/dist/schematics/utils/tsconfig-paths.js +1 -1
- package/dist/shared/canvas-bg.type.d.ts.map +1 -1
- package/dist/shared/canvas-bg.type.js +1 -8
- package/dist/shared/canvas-layout.type.d.ts.map +1 -1
- package/dist/shared/canvas-layout.type.js +1 -4
- package/dist/shared/variant-bg.d.ts.map +1 -1
- package/dist/shared/viewport.type.d.ts +47 -0
- package/dist/shared/viewport.type.d.ts.map +1 -0
- package/dist/shared/viewport.type.js +48 -0
- package/dist/transformer/cli.js +0 -0
- package/dist/transformer/index.d.ts +2 -2
- package/dist/transformer/index.d.ts.map +1 -1
- package/dist/transformer/index.js +2 -2
- package/dist/transformer/showcase-strip.transformer.d.ts.map +1 -1
- package/dist/transformer/showcase-strip.transformer.js +6 -15
- package/dist/transformer/strip-directory.d.ts.map +1 -1
- package/dist/transformer/strip-directory.js +2 -4
- package/package.json +4 -1
- package/schematics/collection.json +7 -7
- package/schematics/migrations.json +12 -12
- package/schematics/ng-add/schema.json +22 -22
- package/src/builder/build/schema.json +36 -36
- package/src/builder/serve/schema.json +37 -37
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"a11y-tree.component.d.ts","sourceRoot":"","sources":["../../../../src/app/panels/a11y/a11y-tree.component.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"a11y-tree.component.d.ts","sourceRoot":"","sources":["../../../../src/app/panels/a11y/a11y-tree.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,0CAA0C,CAAC;AAEhF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;;AAEhD,qBAOa,qBAAqB;IAC9B,QAAQ,CAAC,IAAI,gDAA8B;IAC3C,QAAQ,CAAC,KAAK,8CAAY;IAC1B,QAAQ,CAAC,MAAM,+CAAgB;IAE/B,SAAS,CAAC,QAAQ,CAAC,QAAQ,kDAAgB;IAC3C,OAAO,CAAC,WAAW,CAAwB;;IAe3C,SAAS,CAAC,QAAQ,CAAC,YAAY;;;SAS5B;IAEH,SAAS,CAAC,cAAc,IAAI,IAAI;yCAhCvB,qBAAqB;2CAArB,qBAAqB;CAqCjC;AAED,qBAQa,iBAAiB;IAC1B,SAAS,CAAC,QAAQ,CAAC,eAAe,uBAAgC;IAClE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA2B;IAEvD,SAAS,CAAC,QAAQ,CAAC,IAAI,kDAOpB;yCAXM,iBAAiB;2CAAjB,iBAAiB;CAY7B"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, computed, effect, inject, input, signal, untracked
|
|
2
|
-
import { A11yTreeService } from './a11y-tree.service.js';
|
|
1
|
+
import { ChangeDetectionStrategy, Component, computed, effect, inject, input, signal, untracked } from '@angular/core';
|
|
3
2
|
import { PrismRendererService } from '../../services/prism-renderer.service.js';
|
|
3
|
+
import { A11yTreeService } from './a11y-tree.service.js';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
const _forTrack0 = ($index, $item) => $item.key;
|
|
6
6
|
const _forTrack1 = ($index, $item) => $item.element;
|
|
@@ -95,7 +95,7 @@ export class A11yTreeNodeComponent {
|
|
|
95
95
|
.filter(([key]) => key !== 'hidden')
|
|
96
96
|
.map(([key, value]) => ({
|
|
97
97
|
key,
|
|
98
|
-
label: value === true ? key : `${key}=${value}
|
|
98
|
+
label: value === true ? key : `${key}=${value}`
|
|
99
99
|
}));
|
|
100
100
|
}, /* @ts-ignore */
|
|
101
101
|
...(ngDevMode ? [{ debugName: "stateEntries" }] : /* istanbul ignore next */ []));
|
|
@@ -133,40 +133,13 @@ export class A11yTreeNodeComponent {
|
|
|
133
133
|
i0.ɵɵrepeater(ctx.stateEntries());
|
|
134
134
|
i0.ɵɵadvance(2);
|
|
135
135
|
i0.ɵɵconditional(ctx.expanded() && ctx.node().children.length ? 9 : -1);
|
|
136
|
-
} }, dependencies: [A11yTreeNodeComponent], styles: ["[_nghost-%COMP%] {
|
|
136
|
+
} }, dependencies: [A11yTreeNodeComponent], styles: ["[_nghost-%COMP%] {\n display: block;\n}\n\n.aria-tree-line[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n align-items: center;\n padding: 2px 0;\n font-family: var(--%NS%font-mono);\n font-size: 12.5px;\n line-height: 1.8;\n color: var(--%NS%prism-text-2);\n}\n\n.aria-tree-line--hidden[_ngcontent-%COMP%] {\n opacity: 0.4;\n}\n\n.indent[_ngcontent-%COMP%] {\n flex-shrink: 0;\n font-size: 12px;\n color: var(--%NS%prism-text-ghost);\n text-align: right;\n white-space: pre;\n user-select: none;\n opacity: 0.5;\n}\n\n.tree-toggle[_ngcontent-%COMP%] {\n flex-shrink: 0;\n width: 12px;\n padding: 0;\n font-size: 10px;\n color: var(--%NS%prism-text-muted);\n cursor: pointer;\n background: none;\n border: none;\n}\n\n.role[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--%NS%prism-primary);\n}\n\n.name[_ngcontent-%COMP%] {\n color: var(--%NS%prism-text);\n}\n\n.attr[_ngcontent-%COMP%] {\n color: var(--%NS%prism-text-ghost);\n}"] });
|
|
137
137
|
}
|
|
138
138
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(A11yTreeNodeComponent, [{
|
|
139
139
|
type: Component,
|
|
140
|
-
args: [{ selector: 'prism-a11y-tree-node', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template:
|
|
141
|
-
<div class="aria-tree-line" [class.aria-tree-line--hidden]="node().hidden">
|
|
142
|
-
<span class="indent" [style.width.px]="depth() * 20">
|
|
143
|
-
@if (depth() > 0) {
|
|
144
|
-
{{ isLast() ? '└─' : '├─' }}
|
|
145
|
-
}
|
|
146
|
-
</span>
|
|
147
|
-
@if (node().children.length) {
|
|
148
|
-
<button class="tree-toggle" (click)="toggleExpanded()">
|
|
149
|
-
{{ expanded() ? '▾' : '▸' }}
|
|
150
|
-
</button>
|
|
151
|
-
}
|
|
152
|
-
<span class="role">{{ node().role }}</span>
|
|
153
|
-
@if (node().name) {
|
|
154
|
-
<span class="name">"{{ node().name }}"</span>
|
|
155
|
-
} @for (entry of stateEntries(); track entry.key) {
|
|
156
|
-
<span class="attr">[{{ entry.label }}]</span>
|
|
157
|
-
}
|
|
158
|
-
</div>
|
|
159
|
-
@if (expanded() && node().children.length) { @for (child of node().children;
|
|
160
|
-
track child.element; let last = $last) {
|
|
161
|
-
<prism-a11y-tree-node
|
|
162
|
-
[node]="child"
|
|
163
|
-
[depth]="depth() + 1"
|
|
164
|
-
[isLast]="last"
|
|
165
|
-
/>
|
|
166
|
-
} }
|
|
167
|
-
`, styles: ["\n :host { display: block; }\n\n .aria-tree-line {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 2px 0;\n font-family: var(--font-mono);\n font-size: 12.5px;\n line-height: 1.8;\n color: var(--prism-text-2);\n }\n .aria-tree-line--hidden { opacity: 0.4; }\n\n .indent {\n color: var(--prism-text-ghost);\n opacity: 0.5;\n user-select: none;\n flex-shrink: 0;\n white-space: pre;\n font-size: 12px;\n text-align: right;\n }\n\n .tree-toggle {\n background: none;\n border: none;\n cursor: pointer;\n font-size: 10px;\n color: var(--prism-text-muted);\n padding: 0;\n width: 12px;\n flex-shrink: 0;\n }\n\n .role { color: var(--prism-primary); font-weight: 600; }\n .name { color: var(--prism-text); }\n .attr { color: var(--prism-text-ghost); }\n "] }]
|
|
140
|
+
args: [{ selector: 'prism-a11y-tree-node', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"aria-tree-line\"\n [class.aria-tree-line--hidden]=\"node().hidden\">\n <span\n class=\"indent\"\n [style.width.px]=\"depth() * 20\">\n @if (depth() > 0) {\n {{ isLast() ? '\u2514\u2500' : '\u251C\u2500' }}\n }\n </span>\n @if (node().children.length) {\n <button\n class=\"tree-toggle\"\n (click)=\"toggleExpanded()\">\n {{ expanded() ? '\u25BE' : '\u25B8' }}\n </button>\n }\n <span class=\"role\">{{ node().role }}</span>\n @if (node().name) {\n <span class=\"name\">\"{{ node().name }}\"</span>\n }\n @for (entry of stateEntries(); track entry.key) {\n <span class=\"attr\">[{{ entry.label }}]</span>\n }\n</div>\n@if (expanded() && node().children.length) {\n @for (child of node().children; track child.element; let last = $last) {\n <prism-a11y-tree-node\n [node]=\"child\"\n [depth]=\"depth() + 1\"\n [isLast]=\"last\" />\n }\n}\n", styles: [":host {\n display: block;\n}\n\n.aria-tree-line {\n display: flex;\n gap: 8px;\n align-items: center;\n padding: 2px 0;\n font-family: var(--font-mono);\n font-size: 12.5px;\n line-height: 1.8;\n color: var(--prism-text-2);\n}\n\n.aria-tree-line--hidden {\n opacity: 0.4;\n}\n\n.indent {\n flex-shrink: 0;\n font-size: 12px;\n color: var(--prism-text-ghost);\n text-align: right;\n white-space: pre;\n user-select: none;\n opacity: 0.5;\n}\n\n.tree-toggle {\n flex-shrink: 0;\n width: 12px;\n padding: 0;\n font-size: 10px;\n color: var(--prism-text-muted);\n cursor: pointer;\n background: none;\n border: none;\n}\n\n.role {\n font-weight: 600;\n color: var(--prism-primary);\n}\n\n.name {\n color: var(--prism-text);\n}\n\n.attr {\n color: var(--prism-text-ghost);\n}\n"] }]
|
|
168
141
|
}], () => [], { node: [{ type: i0.Input, args: [{ isSignal: true, alias: "node", required: true }] }], depth: [{ type: i0.Input, args: [{ isSignal: true, alias: "depth", required: false }] }], isLast: [{ type: i0.Input, args: [{ isSignal: true, alias: "isLast", required: false }] }] }); })();
|
|
169
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(A11yTreeNodeComponent, { className: "A11yTreeNodeComponent", filePath: "app/panels/a11y/a11y-tree.component.ts", lineNumber:
|
|
142
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(A11yTreeNodeComponent, { className: "A11yTreeNodeComponent", filePath: "app/panels/a11y/a11y-tree.component.ts", lineNumber: 13 }); })();
|
|
170
143
|
export class A11yTreeComponent {
|
|
171
144
|
rendererService = inject(PrismRendererService);
|
|
172
145
|
treeService = inject(A11yTreeService);
|
|
@@ -183,20 +156,10 @@ export class A11yTreeComponent {
|
|
|
183
156
|
i0.ɵɵconditionalCreate(0, A11yTreeComponent_Conditional_0_Template, 2, 0, "div", 0)(1, A11yTreeComponent_Conditional_1_Template, 2, 3, "div", 1);
|
|
184
157
|
} if (rf & 2) {
|
|
185
158
|
i0.ɵɵconditional(!ctx.rendererService.renderedElement() ? 0 : ctx.tree() ? 1 : -1);
|
|
186
|
-
} }, dependencies: [A11yTreeNodeComponent], styles: ["[_nghost-%COMP%] {
|
|
159
|
+
} }, dependencies: [A11yTreeNodeComponent], styles: ["[_nghost-%COMP%] {\n display: block;\n height: 100%;\n overflow: auto;\n}\n\n.aria-tree[_ngcontent-%COMP%] {\n padding: 14px 20px;\n}\n\n.tree-empty[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 100px;\n font-size: 13px;\n color: var(--%NS%prism-text-muted);\n}"] });
|
|
187
160
|
}
|
|
188
161
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(A11yTreeComponent, [{
|
|
189
162
|
type: Component,
|
|
190
|
-
args: [{ selector: 'prism-a11y-tree', standalone: true, imports: [A11yTreeNodeComponent], changeDetection: ChangeDetectionStrategy.OnPush, template:
|
|
191
|
-
@if (!rendererService.renderedElement()) {
|
|
192
|
-
<div class="tree-empty">
|
|
193
|
-
Select a component to inspect the accessibility tree.
|
|
194
|
-
</div>
|
|
195
|
-
} @else if (tree()) {
|
|
196
|
-
<div class="aria-tree">
|
|
197
|
-
<prism-a11y-tree-node [node]="tree()!" [depth]="0" [isLast]="true" />
|
|
198
|
-
</div>
|
|
199
|
-
}
|
|
200
|
-
`, styles: ["\n :host { display: block; height: 100%; overflow: auto; }\n\n .aria-tree {\n padding: 14px 20px;\n }\n\n .tree-empty {\n display: flex; align-items: center; justify-content: center;\n min-height: 100px; color: var(--prism-text-muted); font-size: 13px;\n }\n "] }]
|
|
163
|
+
args: [{ selector: 'prism-a11y-tree', standalone: true, imports: [A11yTreeNodeComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (!rendererService.renderedElement()) {\n <div class=\"tree-empty\"> Select a component to inspect the accessibility tree. </div>\n} @else if (tree()) {\n <div class=\"aria-tree\">\n <prism-a11y-tree-node\n [node]=\"tree()!\"\n [depth]=\"0\"\n [isLast]=\"true\" />\n </div>\n}\n", styles: [":host {\n display: block;\n height: 100%;\n overflow: auto;\n}\n\n.aria-tree {\n padding: 14px 20px;\n}\n\n.tree-empty {\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 100px;\n font-size: 13px;\n color: var(--prism-text-muted);\n}\n"] }]
|
|
201
164
|
}], null, null); })();
|
|
202
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(A11yTreeComponent, { className: "A11yTreeComponent", filePath: "app/panels/a11y/a11y-tree.component.ts", lineNumber:
|
|
165
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(A11yTreeComponent, { className: "A11yTreeComponent", filePath: "app/panels/a11y/a11y-tree.component.ts", lineNumber: 60 }); })();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"a11y-tree.service.d.ts","sourceRoot":"","sources":["../../../../src/app/panels/a11y/a11y-tree.service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"a11y-tree.service.d.ts","sourceRoot":"","sources":["../../../../src/app/panels/a11y/a11y-tree.service.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;;AAMhD,qBACa,eAAe;IACxB,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,GAAG,IAAI,GAAG,QAAQ;yCADnE,eAAe;;CAI3B"}
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
|
-
import { computeAccessibleName, extractStates, getRole, isHidden
|
|
2
|
+
import { computeAccessibleName, extractStates, getRole, isHidden } from './a11y-dom-utils.js';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
const PRESENTATIONAL_ROLES = new Set(['none', 'presentation']);
|
|
5
|
-
const STRUCTURAL_TAGS = new Set([
|
|
6
|
-
'SCRIPT', 'STYLE', 'NOSCRIPT', 'META', 'LINK', 'TITLE', 'HEAD',
|
|
7
|
-
]);
|
|
5
|
+
const STRUCTURAL_TAGS = new Set(['SCRIPT', 'STYLE', 'NOSCRIPT', 'META', 'LINK', 'TITLE', 'HEAD']);
|
|
8
6
|
export class A11yTreeService {
|
|
9
7
|
buildTree(root, getById) {
|
|
10
8
|
return buildNode(root, getById);
|
|
@@ -42,6 +40,6 @@ function buildNode(element, getById) {
|
|
|
42
40
|
states,
|
|
43
41
|
children,
|
|
44
42
|
hidden,
|
|
45
|
-
element
|
|
43
|
+
element
|
|
46
44
|
};
|
|
47
45
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"a11y-violations.component.d.ts","sourceRoot":"","sources":["../../../../src/app/panels/a11y/a11y-violations.component.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"a11y-violations.component.d.ts","sourceRoot":"","sources":["../../../../src/app/panels/a11y/a11y-violations.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;;AAqB3D,qBAQa,uBAAuB;IAChC,SAAS,CAAC,QAAQ,CAAC,YAAY,mBAA4B;IAE3D,SAAS,CAAC,QAAQ,CAAC,WAAW,mFAAmD;IAEjF,SAAS,CAAC,QAAQ,CAAC,UAAU,8DAQ1B;IAEH,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM;yCAfpD,uBAAuB;2CAAvB,uBAAuB;CAkBnC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, computed, inject
|
|
1
|
+
import { ChangeDetectionStrategy, Component, computed, inject } from '@angular/core';
|
|
2
2
|
import { A11yAuditService } from './a11y-audit.service.js';
|
|
3
3
|
import { A11yScoreComponent } from './a11y-score.component.js';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
@@ -116,13 +116,13 @@ const IMPACT_ORDER = {
|
|
|
116
116
|
critical: 0,
|
|
117
117
|
serious: 1,
|
|
118
118
|
moderate: 2,
|
|
119
|
-
minor: 3
|
|
119
|
+
minor: 3
|
|
120
120
|
};
|
|
121
121
|
const IMPACT_COLOR = {
|
|
122
122
|
critical: 'var(--prism-danger)',
|
|
123
123
|
serious: '#fb923c',
|
|
124
124
|
moderate: 'var(--prism-warn)',
|
|
125
|
-
minor: 'var(--prism-text-muted)'
|
|
125
|
+
minor: 'var(--prism-text-muted)'
|
|
126
126
|
};
|
|
127
127
|
function sevColor(impact) {
|
|
128
128
|
return IMPACT_COLOR[impact ?? ''] ?? 'var(--prism-success)';
|
|
@@ -135,8 +135,7 @@ export class A11yViolationsComponent {
|
|
|
135
135
|
const results = this.auditService.results();
|
|
136
136
|
if (!results)
|
|
137
137
|
return [];
|
|
138
|
-
const violations = [...results.violations].sort((a, b) => (IMPACT_ORDER[a.impact ?? ''] ?? 4) -
|
|
139
|
-
(IMPACT_ORDER[b.impact ?? ''] ?? 4));
|
|
138
|
+
const violations = [...results.violations].sort((a, b) => (IMPACT_ORDER[a.impact ?? ''] ?? 4) - (IMPACT_ORDER[b.impact ?? ''] ?? 4));
|
|
140
139
|
const passes = results.passes.slice(0, 4);
|
|
141
140
|
return [...violations, ...passes];
|
|
142
141
|
}, /* @ts-ignore */
|
|
@@ -149,60 +148,10 @@ export class A11yViolationsComponent {
|
|
|
149
148
|
i0.ɵɵconditionalCreate(0, A11yViolationsComponent_Conditional_0_Template, 2, 1, "div", 0)(1, A11yViolationsComponent_Conditional_1_Template, 15, 7, "div", 1)(2, A11yViolationsComponent_Conditional_2_Template, 2, 0, "div", 2);
|
|
150
149
|
} if (rf & 2) {
|
|
151
150
|
i0.ɵɵconditional(ctx.auditService.error() ? 0 : ctx.auditService.results() || ctx.auditService.running() ? 1 : 2);
|
|
152
|
-
} }, dependencies: [A11yScoreComponent], styles: ["[_nghost-%COMP%] {
|
|
151
|
+
} }, dependencies: [A11yScoreComponent], styles: ["[_nghost-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: auto;\n}\n\n.a11y-body[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 220px 1fr;\n gap: 20px;\n min-height: 0;\n padding: 18px 20px;\n}\n\n.a11y-body--loading[_ngcontent-%COMP%] {\n opacity: 0.55;\n transition: opacity var(--%NS%dur-base);\n}\n\n.score-wrap[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 10px;\n align-items: center;\n align-self: start;\n padding: 14px;\n background: var(--%NS%prism-bg-surface);\n border: 1px solid var(--%NS%prism-border);\n border-radius: 10px;\n}\n\n.score-label[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n color: var(--%NS%prism-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.08em;\n}\n\n.score-meta[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n margin-top: 2px;\n font-size: 11px;\n color: var(--%NS%prism-text-muted);\n}\n\n.score-meta[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n align-items: center;\n}\n\n.score-meta[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n display: block;\n width: 6px;\n height: 6px;\n border-radius: 50%;\n}\n\n.viol-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n min-width: 0;\n}\n\n.viol[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: auto 1fr auto;\n gap: 12px;\n align-items: center;\n padding: 10px 12px;\n background: var(--%NS%prism-bg-surface);\n border: 1px solid var(--%NS%prism-border);\n border-left: 3px solid var(--%NS%sev-color, var(--%NS%prism-primary));\n border-radius: 8px;\n transition: border-color var(--%NS%dur-fast);\n}\n\n.viol[_ngcontent-%COMP%]:hover {\n border-color: var(--%NS%prism-border-strong);\n}\n\n.viol-sev[_ngcontent-%COMP%] {\n padding: 2px 6px;\n font-family: var(--%NS%font-mono);\n font-size: 9.5px;\n font-weight: 700;\n color: var(--%NS%sev-color);\n text-transform: uppercase;\n letter-spacing: 0.05em;\n background: color-mix(in srgb, var(--%NS%sev-color) 15%, transparent);\n border-radius: var(--%NS%radius-xs);\n}\n\n.viol-text[_ngcontent-%COMP%] {\n min-width: 0;\n font-size: 12.5px;\n color: var(--%NS%prism-text);\n}\n\n.viol-text[_ngcontent-%COMP%] b[_ngcontent-%COMP%] {\n display: block;\n margin-bottom: 1px;\n font-weight: 600;\n}\n\n.viol-text[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n font-size: 11.5px;\n color: var(--%NS%prism-text-muted);\n}\n\n.viol-rule[_ngcontent-%COMP%] {\n padding: 2px 7px;\n font-family: var(--%NS%font-mono);\n font-size: 11px;\n color: var(--%NS%prism-text-ghost);\n white-space: nowrap;\n background: var(--%NS%prism-input-bg);\n border-radius: var(--%NS%radius-xs);\n}\n\n.a11y-status[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 100px;\n font-size: 13px;\n color: var(--%NS%prism-text-muted);\n}\n\n.a11y-status--error[_ngcontent-%COMP%] {\n color: var(--%NS%prism-danger);\n}\n\n@media (width <= 1100px) {\n .a11y-body[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n}"] });
|
|
153
152
|
}
|
|
154
153
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(A11yViolationsComponent, [{
|
|
155
154
|
type: Component,
|
|
156
|
-
args: [{ selector: 'prism-a11y-violations', standalone: true, imports: [A11yScoreComponent], changeDetection: ChangeDetectionStrategy.OnPush, template:
|
|
157
|
-
@if (auditService.error()) {
|
|
158
|
-
<div class="a11y-status a11y-status--error">
|
|
159
|
-
Audit failed: {{ auditService.error() }}
|
|
160
|
-
</div>
|
|
161
|
-
} @else if (auditService.results() || auditService.running()) {
|
|
162
|
-
<div class="a11y-body" [class.a11y-body--loading]="auditService.running()">
|
|
163
|
-
<div class="score-wrap">
|
|
164
|
-
<prism-a11y-score [score]="scoreResult()?.score ?? 0" />
|
|
165
|
-
<div class="score-label">axe-core audit</div>
|
|
166
|
-
<div class="score-meta">
|
|
167
|
-
@if (scoreResult()?.critical) {
|
|
168
|
-
<span
|
|
169
|
-
><i style="background: var(--prism-danger)"></i
|
|
170
|
-
>{{ scoreResult()!.critical }} critical</span
|
|
171
|
-
>
|
|
172
|
-
} @if (scoreResult()?.moderate) {
|
|
173
|
-
<span
|
|
174
|
-
><i style="background: var(--prism-warn)"></i
|
|
175
|
-
>{{ scoreResult()!.moderate }} moderate</span
|
|
176
|
-
>
|
|
177
|
-
}
|
|
178
|
-
<span
|
|
179
|
-
><i style="background: var(--prism-success)"></i
|
|
180
|
-
>{{ scoreResult()?.passes ?? 0 }} pass</span
|
|
181
|
-
>
|
|
182
|
-
</div>
|
|
183
|
-
</div>
|
|
184
|
-
<div class="viol-list">
|
|
185
|
-
@for (item of allResults(); track item.id + item.impact) {
|
|
186
|
-
<div class="viol" [style.--sev-color]="sevColor(item.impact)">
|
|
187
|
-
<span class="viol-sev">{{ item.impact ?? 'pass' }}</span>
|
|
188
|
-
<div class="viol-text">
|
|
189
|
-
<b>{{ item.description }}</b>
|
|
190
|
-
@if (item.help) {
|
|
191
|
-
<span>{{ item.help }}</span>
|
|
192
|
-
}
|
|
193
|
-
</div>
|
|
194
|
-
<span class="viol-rule">{{ item.id }}</span>
|
|
195
|
-
</div>
|
|
196
|
-
} @empty { @if (!auditService.running()) {
|
|
197
|
-
<div class="a11y-status">No results yet.</div>
|
|
198
|
-
} }
|
|
199
|
-
</div>
|
|
200
|
-
</div>
|
|
201
|
-
} @else {
|
|
202
|
-
<div class="a11y-status">
|
|
203
|
-
Select a component to run accessibility audit.
|
|
204
|
-
</div>
|
|
205
|
-
}
|
|
206
|
-
`, styles: ["\n :host { display: flex; flex-direction: column; height: 100%; overflow: auto; }\n\n .a11y-body {\n padding: 18px 20px;\n display: grid;\n grid-template-columns: 220px 1fr;\n gap: 20px;\n min-height: 0;\n }\n .a11y-body--loading { opacity: 0.55; transition: opacity var(--dur-base); }\n\n .score-wrap {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 10px;\n padding: 14px;\n background: var(--prism-bg-surface);\n border: 1px solid var(--prism-border);\n border-radius: 10px;\n align-self: start;\n }\n\n .score-label {\n font-size: 11px;\n color: var(--prism-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.08em;\n font-weight: 600;\n }\n .score-meta {\n display: flex;\n gap: 12px;\n margin-top: 2px;\n font-size: 11px;\n color: var(--prism-text-muted);\n }\n .score-meta span { display: flex; align-items: center; gap: 4px; }\n .score-meta i { width: 6px; height: 6px; border-radius: 50%; display: block; }\n\n .viol-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n min-width: 0;\n }\n\n .viol {\n display: grid;\n grid-template-columns: auto 1fr auto;\n align-items: center;\n gap: 12px;\n padding: 10px 12px;\n background: var(--prism-bg-surface);\n border: 1px solid var(--prism-border);\n border-radius: 8px;\n border-left: 3px solid var(--sev-color, var(--prism-primary));\n transition: border-color var(--dur-fast);\n }\n .viol:hover { border-color: var(--prism-border-strong); }\n\n .viol-sev {\n font-family: var(--font-mono);\n font-size: 9.5px;\n font-weight: 700;\n padding: 2px 6px;\n border-radius: var(--radius-xs);\n text-transform: uppercase;\n letter-spacing: 0.05em;\n background: color-mix(in srgb, var(--sev-color) 15%, transparent);\n color: var(--sev-color);\n }\n\n .viol-text {\n font-size: 12.5px;\n color: var(--prism-text);\n min-width: 0;\n }\n .viol-text b {\n display: block;\n font-weight: 600;\n margin-bottom: 1px;\n }\n .viol-text span {\n color: var(--prism-text-muted);\n font-size: 11.5px;\n }\n\n .viol-rule {\n font-family: var(--font-mono);\n font-size: 11px;\n color: var(--prism-text-ghost);\n padding: 2px 7px;\n background: var(--prism-input-bg);\n border-radius: var(--radius-xs);\n white-space: nowrap;\n }\n\n .a11y-status {\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 100px;\n color: var(--prism-text-muted);\n font-size: 13px;\n }\n .a11y-status--error { color: var(--prism-danger); }\n\n @media (max-width: 1100px) {\n .a11y-body { grid-template-columns: 1fr; }\n }\n "] }]
|
|
155
|
+
args: [{ selector: 'prism-a11y-violations', standalone: true, imports: [A11yScoreComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (auditService.error()) {\n <div class=\"a11y-status a11y-status--error\"> Audit failed: {{ auditService.error() }} </div>\n} @else if (auditService.results() || auditService.running()) {\n <div\n class=\"a11y-body\"\n [class.a11y-body--loading]=\"auditService.running()\">\n <div class=\"score-wrap\">\n <prism-a11y-score [score]=\"scoreResult()?.score ?? 0\" />\n <div class=\"score-label\">axe-core audit</div>\n <div class=\"score-meta\">\n @if (scoreResult()?.critical) {\n <span><i style=\"background: var(--prism-danger)\"></i>{{ scoreResult()!.critical }} critical</span>\n }\n @if (scoreResult()?.moderate) {\n <span><i style=\"background: var(--prism-warn)\"></i>{{ scoreResult()!.moderate }} moderate</span>\n }\n <span><i style=\"background: var(--prism-success)\"></i>{{ scoreResult()?.passes ?? 0 }} pass</span>\n </div>\n </div>\n <div class=\"viol-list\">\n @for (item of allResults(); track item.id + item.impact) {\n <div\n class=\"viol\"\n [style.--sev-color]=\"sevColor(item.impact)\">\n <span class=\"viol-sev\">{{ item.impact ?? 'pass' }}</span>\n <div class=\"viol-text\">\n <b>{{ item.description }}</b>\n @if (item.help) {\n <span>{{ item.help }}</span>\n }\n </div>\n <span class=\"viol-rule\">{{ item.id }}</span>\n </div>\n } @empty {\n @if (!auditService.running()) {\n <div class=\"a11y-status\">No results yet.</div>\n }\n }\n </div>\n </div>\n} @else {\n <div class=\"a11y-status\"> Select a component to run accessibility audit. </div>\n}\n", styles: [":host {\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: auto;\n}\n\n.a11y-body {\n display: grid;\n grid-template-columns: 220px 1fr;\n gap: 20px;\n min-height: 0;\n padding: 18px 20px;\n}\n\n.a11y-body--loading {\n opacity: 0.55;\n transition: opacity var(--dur-base);\n}\n\n.score-wrap {\n display: flex;\n flex-direction: column;\n gap: 10px;\n align-items: center;\n align-self: start;\n padding: 14px;\n background: var(--prism-bg-surface);\n border: 1px solid var(--prism-border);\n border-radius: 10px;\n}\n\n.score-label {\n font-size: 11px;\n font-weight: 600;\n color: var(--prism-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.08em;\n}\n\n.score-meta {\n display: flex;\n gap: 12px;\n margin-top: 2px;\n font-size: 11px;\n color: var(--prism-text-muted);\n}\n\n.score-meta span {\n display: flex;\n gap: 4px;\n align-items: center;\n}\n\n.score-meta i {\n display: block;\n width: 6px;\n height: 6px;\n border-radius: 50%;\n}\n\n.viol-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n min-width: 0;\n}\n\n.viol {\n display: grid;\n grid-template-columns: auto 1fr auto;\n gap: 12px;\n align-items: center;\n padding: 10px 12px;\n background: var(--prism-bg-surface);\n border: 1px solid var(--prism-border);\n border-left: 3px solid var(--sev-color, var(--prism-primary));\n border-radius: 8px;\n transition: border-color var(--dur-fast);\n}\n\n.viol:hover {\n border-color: var(--prism-border-strong);\n}\n\n.viol-sev {\n padding: 2px 6px;\n font-family: var(--font-mono);\n font-size: 9.5px;\n font-weight: 700;\n color: var(--sev-color);\n text-transform: uppercase;\n letter-spacing: 0.05em;\n background: color-mix(in srgb, var(--sev-color) 15%, transparent);\n border-radius: var(--radius-xs);\n}\n\n.viol-text {\n min-width: 0;\n font-size: 12.5px;\n color: var(--prism-text);\n}\n\n.viol-text b {\n display: block;\n margin-bottom: 1px;\n font-weight: 600;\n}\n\n.viol-text span {\n font-size: 11.5px;\n color: var(--prism-text-muted);\n}\n\n.viol-rule {\n padding: 2px 7px;\n font-family: var(--font-mono);\n font-size: 11px;\n color: var(--prism-text-ghost);\n white-space: nowrap;\n background: var(--prism-input-bg);\n border-radius: var(--radius-xs);\n}\n\n.a11y-status {\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 100px;\n font-size: 13px;\n color: var(--prism-text-muted);\n}\n\n.a11y-status--error {\n color: var(--prism-danger);\n}\n\n@media (width <= 1100px) {\n .a11y-body {\n grid-template-columns: 1fr;\n }\n}\n"] }]
|
|
207
156
|
}], null, null); })();
|
|
208
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(A11yViolationsComponent, { className: "A11yViolationsComponent", filePath: "app/panels/a11y/a11y-violations.component.ts", lineNumber:
|
|
157
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(A11yViolationsComponent, { className: "A11yViolationsComponent", filePath: "app/panels/a11y/a11y-violations.component.ts", lineNumber: 31 }); })();
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"a11y.types.d.ts","sourceRoot":"","sources":["../../../../src/app/panels/a11y/a11y.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAC7C,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC5B,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;CACtB;AAED,MAAM,WAAW,cAAc;IAC3B,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;CACpB;AAED,+EAA+E;AAC/E,MAAM,WAAW,UAAU;IACvB,mEAAmE;IACnE,KAAK,EAAE,eAAe,GAAG;QACrB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,eAAe,EAAE,MAAM,CAAC;KAC3B,CAAC;IACF,yFAAyF;IACzF,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC7C,0CAA0C;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,4EAA4E;AAC5E,MAAM,WAAW,gBAAgB;IAC7B,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IAC3B,UAAU,EAAE,cAAc,CAAC;CAC9B;AAED,qDAAqD;AACrD,MAAM,WAAW,iBAAiB;IAC9B,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,eAAe,CAAC;IACvB;;;;OAIG;IACH,OAAO,CAAC,EAAE;QAAE,OAAO,EAAE,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CAClE;AAED,MAAM,WAAW,iBAAiB;IAC9B,6FAA6F;IAC7F,UAAU,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IACrC,iGAAiG;IACjG,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC7B,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;CAC3B;AAED,MAAM,WAAW,QAAQ;IACrB,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;CACpB;AAED,MAAM,WAAW,cAAc;IAC3B,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;CACpB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builtin-navigation-decorations.d.ts","sourceRoot":"","sources":["../../../src/app/panels/builtin-navigation-decorations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,8BAA8B,CAAC;AAGnF;;;;GAIG;AACH,eAAO,MAAM,8BAA8B,EAAE,8BAA8B,
|
|
1
|
+
{"version":3,"file":"builtin-navigation-decorations.d.ts","sourceRoot":"","sources":["../../../src/app/panels/builtin-navigation-decorations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,8BAA8B,CAAC;AAGnF;;;;GAIG;AACH,eAAO,MAAM,8BAA8B,EAAE,8BAA8B,EAa1E,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builtin-panels.d.ts","sourceRoot":"","sources":["../../../src/app/panels/builtin-panels.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAMpE,eAAO,MAAM,cAAc,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"builtin-panels.d.ts","sourceRoot":"","sources":["../../../src/app/panels/builtin-panels.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAMpE,eAAO,MAAM,cAAc,EAAE,eAAe,EAA0G,CAAC"}
|
|
@@ -1,10 +1,5 @@
|
|
|
1
1
|
import { OVERVIEW_PANEL } from '../overview/overview-panel.js';
|
|
2
|
+
import { A11Y_CORE_PANEL } from './a11y/a11y-core.plugin.js';
|
|
2
3
|
import { CONTROLS_PLUGIN } from './controls/controls-plugin.js';
|
|
3
4
|
import { EVENTS_PLUGIN } from './events/events-plugin.js';
|
|
4
|
-
|
|
5
|
-
export const BUILTIN_PANELS = [
|
|
6
|
-
OVERVIEW_PANEL,
|
|
7
|
-
...(CONTROLS_PLUGIN.panels ?? []),
|
|
8
|
-
...(EVENTS_PLUGIN.panels ?? []),
|
|
9
|
-
A11Y_CORE_PANEL,
|
|
10
|
-
];
|
|
5
|
+
export const BUILTIN_PANELS = [OVERVIEW_PANEL, ...(CONTROLS_PLUGIN.panels ?? []), ...(EVENTS_PLUGIN.panels ?? []), A11Y_CORE_PANEL];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"non-editable-input-types.d.ts","sourceRoot":"","sources":["../../../../src/app/panels/controls/non-editable-input-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"non-editable-input-types.d.ts","sourceRoot":"","sources":["../../../../src/app/panels/controls/non-editable-input-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAcjE,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAKhE"}
|
|
@@ -6,11 +6,7 @@
|
|
|
6
6
|
* the JsonControl — which would otherwise crash on `undefined`/non-serializable
|
|
7
7
|
* defaults and presents a misleading editor to the developer anyway.
|
|
8
8
|
*/
|
|
9
|
-
const NON_EDITABLE_TYPE_NAMES = [
|
|
10
|
-
'TemplateRef',
|
|
11
|
-
'ElementRef',
|
|
12
|
-
'ViewContainerRef',
|
|
13
|
-
];
|
|
9
|
+
const NON_EDITABLE_TYPE_NAMES = ['TemplateRef', 'ElementRef', 'ViewContainerRef'];
|
|
14
10
|
const NON_EDITABLE_TYPE_PATTERN = new RegExp(`\\b(?:${NON_EDITABLE_TYPE_NAMES.join('|')})\\b`);
|
|
15
11
|
export function isNonEditableInputType(input) {
|
|
16
12
|
const raw = input.rawType;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prism-controls-panel.component.d.ts","sourceRoot":"","sources":["../../../../src/app/panels/controls/prism-controls-panel.component.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"prism-controls-panel.component.d.ts","sourceRoot":"","sources":["../../../../src/app/panels/controls/prism-controls-panel.component.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAMtG,OAAO,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AAEpF,OAAO,EAAE,oBAAoB,EAAE,MAAM,0CAA0C,CAAC;;AAGhF,qBAQa,2BAA2B;IACpC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,yBAAkC;IACtE,SAAS,CAAC,QAAQ,CAAC,eAAe,uBAAgC;IAClE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA8B;IAE5D,QAAQ,CAAC,eAAe,+DAAwC;IAEhE,SAAS,CAAC,gBAAgB,CAAC,KAAK,EAAE,SAAS,GAAG,iBAAiB,GAAG,IAAI;IAItE,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO;IAIlD,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO;IAI1C,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM;IAIxC,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM;yCAvB/B,2BAA2B;2CAA3B,2BAA2B;CA0BvC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { NgComponentOutlet } from '@angular/common';
|
|
2
|
-
import { Component, inject, input
|
|
2
|
+
import { ChangeDetectionStrategy, Component, inject, input } from '@angular/core';
|
|
3
3
|
import { BooleanControlComponent } from '../../controls/boolean-control.component.js';
|
|
4
4
|
import { JsonControlComponent } from '../../controls/json-control.component.js';
|
|
5
5
|
import { NumberControlComponent } from '../../controls/number-control.component.js';
|
|
@@ -160,8 +160,7 @@ export class PrismControlsPanelComponent {
|
|
|
160
160
|
activeComponent = input(null, /* @ts-ignore */
|
|
161
161
|
...(ngDevMode ? [{ debugName: "activeComponent" }] : /* istanbul ignore next */ []));
|
|
162
162
|
getCustomControl(input) {
|
|
163
|
-
return
|
|
164
|
-
null);
|
|
163
|
+
return this.pluginService.controls().find((ctrl) => ctrl.matchType(input)) ?? null;
|
|
165
164
|
}
|
|
166
165
|
isNonEditable(input) {
|
|
167
166
|
return isNonEditableInputType(input);
|
|
@@ -181,99 +180,10 @@ export class PrismControlsPanelComponent {
|
|
|
181
180
|
} if (rf & 2) {
|
|
182
181
|
let tmp_0_0;
|
|
183
182
|
i0.ɵɵconditional((tmp_0_0 = ctx.navigationService.activeComponent()) ? 0 : -1, tmp_0_0);
|
|
184
|
-
} }, dependencies: [NgComponentOutlet,
|
|
185
|
-
BooleanControlComponent,
|
|
186
|
-
StringControlComponent,
|
|
187
|
-
NumberControlComponent,
|
|
188
|
-
UnionControlComponent,
|
|
189
|
-
JsonControlComponent], styles: [".ctl-panel[_ngcontent-%COMP%] {\n overflow-y: auto;\n height: 100%;\n }\n\n .ctl-toolbar[_ngcontent-%COMP%] {\n position: sticky;\n top: 0;\n z-index: 2;\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8px 20px;\n background: var(--%NS%prism-bg-elevated);\n border-bottom: 1px solid var(--%NS%prism-border);\n }\n .ctl-dirty-info[_ngcontent-%COMP%] {\n font-size: 11.5px;\n font-family: var(--%NS%font-mono);\n color: var(--%NS%prism-text-muted);\n display: inline-flex;\n align-items: center;\n gap: 6px;\n }\n .ctl-dirty-dot[_ngcontent-%COMP%] {\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background: var(--%NS%prism-primary);\n box-shadow: 0 0 6px color-mix(in srgb, var(--%NS%prism-primary) 60%, transparent);\n }\n .ctl-reset-btn[_ngcontent-%COMP%] {\n height: 24px;\n padding: 0 10px;\n border-radius: 5px;\n font-size: 11.5px;\n font-weight: 500;\n font-family: var(--%NS%font-sans);\n color: var(--%NS%prism-text-muted);\n background: transparent;\n border: 1px solid var(--%NS%prism-border);\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n gap: 5px;\n transition: color var(--%NS%dur-fast), background var(--%NS%dur-fast), border-color var(--%NS%dur-fast);\n }\n .ctl-reset-btn[_ngcontent-%COMP%]:hover {\n color: var(--%NS%prism-text);\n border-color: color-mix(in srgb, var(--%NS%prism-primary) 40%, var(--%NS%prism-border));\n background: color-mix(in srgb, var(--%NS%prism-primary) 8%, transparent);\n }\n .ctl-reset-btn[_ngcontent-%COMP%]:focus-visible {\n outline: 2px solid var(--%NS%prism-primary);\n outline-offset: 1px;\n }\n\n .ctl-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 180px 1fr;\n align-items: center;\n gap: 12px;\n padding: 8px 20px;\n min-height: 40px;\n border-bottom: 1px solid var(--%NS%prism-border);\n }\n .ctl-row[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--%NS%prism-primary) 3%, transparent);\n }\n\n .ctl-label[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 2px;\n }\n .ctl-name[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--%NS%prism-text);\n font-weight: 500;\n }\n .ctl-type[_ngcontent-%COMP%] {\n font-family: var(--%NS%font-mono);\n font-size: 10.5px;\n color: var(--%NS%prism-text-ghost);\n }\n .ctl-type[_ngcontent-%COMP%] b[_ngcontent-%COMP%] {\n color: var(--%NS%prism-primary);\n font-weight: 500;\n }\n\n .ctl-input[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n min-width: 0;\n }\n\n .ctl-not-editable[_ngcontent-%COMP%] {\n font-family: var(--%NS%font-mono);\n font-size: 11.5px;\n color: var(--%NS%prism-text-ghost);\n font-style: italic;\n }\n\n .ctl-empty[_ngcontent-%COMP%] {\n color: var(--%NS%prism-text-ghost);\n font-size: 13px;\n margin: 0;\n padding: 16px 20px;\n }"] });
|
|
183
|
+
} }, dependencies: [NgComponentOutlet, BooleanControlComponent, StringControlComponent, NumberControlComponent, UnionControlComponent, JsonControlComponent], styles: [".ctl-panel[_ngcontent-%COMP%] {\n height: 100%;\n overflow-y: auto;\n}\n\n.ctl-toolbar[_ngcontent-%COMP%] {\n position: sticky;\n top: 0;\n z-index: 2;\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8px 20px;\n background: var(--%NS%prism-bg-elevated);\n border-bottom: 1px solid var(--%NS%prism-border);\n}\n\n.ctl-dirty-info[_ngcontent-%COMP%] {\n display: inline-flex;\n gap: 6px;\n align-items: center;\n font-family: var(--%NS%font-mono);\n font-size: 11.5px;\n color: var(--%NS%prism-text-muted);\n}\n\n.ctl-dirty-dot[_ngcontent-%COMP%] {\n width: 6px;\n height: 6px;\n background: var(--%NS%prism-primary);\n border-radius: 50%;\n box-shadow: 0 0 6px color-mix(in srgb, var(--%NS%prism-primary) 60%, transparent);\n}\n\n.ctl-reset-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n gap: 5px;\n align-items: center;\n height: 24px;\n padding: 0 10px;\n font-family: var(--%NS%font-sans);\n font-size: 11.5px;\n font-weight: 500;\n color: var(--%NS%prism-text-muted);\n cursor: pointer;\n background: transparent;\n border: 1px solid var(--%NS%prism-border);\n border-radius: 5px;\n transition:\n color var(--%NS%dur-fast),\n background var(--%NS%dur-fast),\n border-color var(--%NS%dur-fast);\n}\n\n.ctl-reset-btn[_ngcontent-%COMP%]:hover {\n color: var(--%NS%prism-text);\n background: color-mix(in srgb, var(--%NS%prism-primary) 8%, transparent);\n border-color: color-mix(in srgb, var(--%NS%prism-primary) 40%, var(--%NS%prism-border));\n}\n\n.ctl-reset-btn[_ngcontent-%COMP%]:focus-visible {\n outline: 2px solid var(--%NS%prism-primary);\n outline-offset: 1px;\n}\n\n.ctl-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 180px 1fr;\n gap: 12px;\n align-items: center;\n min-height: 40px;\n padding: 8px 20px;\n border-bottom: 1px solid var(--%NS%prism-border);\n}\n\n.ctl-row[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--%NS%prism-primary) 3%, transparent);\n}\n\n.ctl-label[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.ctl-name[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 500;\n color: var(--%NS%prism-text);\n}\n\n.ctl-type[_ngcontent-%COMP%] {\n font-family: var(--%NS%font-mono);\n font-size: 10.5px;\n color: var(--%NS%prism-text-ghost);\n}\n\n.ctl-type[_ngcontent-%COMP%] b[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--%NS%prism-primary);\n}\n\n.ctl-input[_ngcontent-%COMP%] {\n display: flex;\n gap: 6px;\n align-items: center;\n min-width: 0;\n}\n\n.ctl-not-editable[_ngcontent-%COMP%] {\n font-family: var(--%NS%font-mono);\n font-size: 11.5px;\n font-style: italic;\n color: var(--%NS%prism-text-ghost);\n}\n\n.ctl-empty[_ngcontent-%COMP%] {\n padding: 16px 20px;\n margin: 0;\n font-size: 13px;\n color: var(--%NS%prism-text-ghost);\n}"] });
|
|
190
184
|
}
|
|
191
185
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PrismControlsPanelComponent, [{
|
|
192
186
|
type: Component,
|
|
193
|
-
args: [{ selector: 'prism-controls-panel', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
194
|
-
NgComponentOutlet,
|
|
195
|
-
BooleanControlComponent,
|
|
196
|
-
StringControlComponent,
|
|
197
|
-
NumberControlComponent,
|
|
198
|
-
UnionControlComponent,
|
|
199
|
-
JsonControlComponent,
|
|
200
|
-
], template: `
|
|
201
|
-
@if (navigationService.activeComponent(); as comp) {
|
|
202
|
-
<div class="ctl-panel">
|
|
203
|
-
@if (rendererService.dirtyInputCount(); as dirtyCount) {
|
|
204
|
-
<div class="ctl-toolbar">
|
|
205
|
-
<span class="ctl-dirty-info">
|
|
206
|
-
<span class="ctl-dirty-dot" aria-hidden="true"></span>
|
|
207
|
-
{{ dirtyCount }} {{ dirtyCount === 1 ? 'input' : 'inputs' }} modified
|
|
208
|
-
</span>
|
|
209
|
-
<button
|
|
210
|
-
type="button"
|
|
211
|
-
class="ctl-reset-btn"
|
|
212
|
-
(click)="rendererService.resetInputsToVariantDefaults()"
|
|
213
|
-
title="Reset all inputs to variant defaults"
|
|
214
|
-
>
|
|
215
|
-
<span aria-hidden="true">↻</span> Reset
|
|
216
|
-
</button>
|
|
217
|
-
</div>
|
|
218
|
-
} @for (input of comp.meta.inputs; track input.name) {
|
|
219
|
-
<div class="ctl-row">
|
|
220
|
-
@if (getCustomControl(input); as customCtrl) {
|
|
221
|
-
<ng-container
|
|
222
|
-
[ngComponentOutlet]="customCtrl.component"
|
|
223
|
-
[ngComponentOutletInputs]="{
|
|
224
|
-
inputMeta: input,
|
|
225
|
-
rendererService: rendererService
|
|
226
|
-
}"
|
|
227
|
-
/>
|
|
228
|
-
} @else {
|
|
229
|
-
<div class="ctl-label">
|
|
230
|
-
<span class="ctl-name">{{ input.name }}</span>
|
|
231
|
-
<span class="ctl-type"
|
|
232
|
-
><b>{{ input.rawType ?? input.type }}</b></span
|
|
233
|
-
>
|
|
234
|
-
</div>
|
|
235
|
-
<div class="ctl-input">
|
|
236
|
-
@if (isNonEditable(input)) {
|
|
237
|
-
<span
|
|
238
|
-
class="ctl-not-editable"
|
|
239
|
-
title="This input type can't be edited from the controls panel"
|
|
240
|
-
>Not editable</span
|
|
241
|
-
>
|
|
242
|
-
} @else { @switch (input.type) { @case ('boolean') {
|
|
243
|
-
<prism-boolean-control
|
|
244
|
-
[value]="asBoolean(rendererService.inputValues()[input.name])"
|
|
245
|
-
(valueChange)="rendererService.updateInput(input.name, $event)"
|
|
246
|
-
/>
|
|
247
|
-
} @case ('number') {
|
|
248
|
-
<prism-number-control
|
|
249
|
-
[value]="asNumber(rendererService.inputValues()[input.name])"
|
|
250
|
-
(valueChange)="rendererService.updateInput(input.name, $event)"
|
|
251
|
-
/>
|
|
252
|
-
} @case ('union') {
|
|
253
|
-
<prism-union-control
|
|
254
|
-
[value]="asString(rendererService.inputValues()[input.name])"
|
|
255
|
-
[options]="input.values ?? []"
|
|
256
|
-
(valueChange)="rendererService.updateInput(input.name, $event)"
|
|
257
|
-
/>
|
|
258
|
-
} @case ('string') {
|
|
259
|
-
<prism-string-control
|
|
260
|
-
[value]="asString(rendererService.inputValues()[input.name])"
|
|
261
|
-
(valueChange)="rendererService.updateInput(input.name, $event)"
|
|
262
|
-
/>
|
|
263
|
-
} @default {
|
|
264
|
-
<prism-json-control
|
|
265
|
-
[value]="rendererService.inputValues()[input.name]"
|
|
266
|
-
(valueChange)="rendererService.updateInput(input.name, $event)"
|
|
267
|
-
/>
|
|
268
|
-
} } }
|
|
269
|
-
</div>
|
|
270
|
-
}
|
|
271
|
-
</div>
|
|
272
|
-
} @if (comp.meta.inputs.length === 0) {
|
|
273
|
-
<p class="ctl-empty">No inputs available</p>
|
|
274
|
-
}
|
|
275
|
-
</div>
|
|
276
|
-
}
|
|
277
|
-
`, styles: ["\n .ctl-panel {\n overflow-y: auto;\n height: 100%;\n }\n\n .ctl-toolbar {\n position: sticky;\n top: 0;\n z-index: 2;\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8px 20px;\n background: var(--prism-bg-elevated);\n border-bottom: 1px solid var(--prism-border);\n }\n .ctl-dirty-info {\n font-size: 11.5px;\n font-family: var(--font-mono);\n color: var(--prism-text-muted);\n display: inline-flex;\n align-items: center;\n gap: 6px;\n }\n .ctl-dirty-dot {\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background: var(--prism-primary);\n box-shadow: 0 0 6px color-mix(in srgb, var(--prism-primary) 60%, transparent);\n }\n .ctl-reset-btn {\n height: 24px;\n padding: 0 10px;\n border-radius: 5px;\n font-size: 11.5px;\n font-weight: 500;\n font-family: var(--font-sans);\n color: var(--prism-text-muted);\n background: transparent;\n border: 1px solid var(--prism-border);\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n gap: 5px;\n transition: color var(--dur-fast), background var(--dur-fast), border-color var(--dur-fast);\n }\n .ctl-reset-btn:hover {\n color: var(--prism-text);\n border-color: color-mix(in srgb, var(--prism-primary) 40%, var(--prism-border));\n background: color-mix(in srgb, var(--prism-primary) 8%, transparent);\n }\n .ctl-reset-btn:focus-visible {\n outline: 2px solid var(--prism-primary);\n outline-offset: 1px;\n }\n\n .ctl-row {\n display: grid;\n grid-template-columns: 180px 1fr;\n align-items: center;\n gap: 12px;\n padding: 8px 20px;\n min-height: 40px;\n border-bottom: 1px solid var(--prism-border);\n }\n .ctl-row:hover {\n background: color-mix(in srgb, var(--prism-primary) 3%, transparent);\n }\n\n .ctl-label {\n display: flex;\n flex-direction: column;\n gap: 2px;\n }\n .ctl-name {\n font-size: 13px;\n color: var(--prism-text);\n font-weight: 500;\n }\n .ctl-type {\n font-family: var(--font-mono);\n font-size: 10.5px;\n color: var(--prism-text-ghost);\n }\n .ctl-type b {\n color: var(--prism-primary);\n font-weight: 500;\n }\n\n .ctl-input {\n display: flex;\n align-items: center;\n gap: 6px;\n min-width: 0;\n }\n\n .ctl-not-editable {\n font-family: var(--font-mono);\n font-size: 11.5px;\n color: var(--prism-text-ghost);\n font-style: italic;\n }\n\n .ctl-empty {\n color: var(--prism-text-ghost);\n font-size: 13px;\n margin: 0;\n padding: 16px 20px;\n }\n "] }]
|
|
187
|
+
args: [{ selector: 'prism-controls-panel', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [NgComponentOutlet, BooleanControlComponent, StringControlComponent, NumberControlComponent, UnionControlComponent, JsonControlComponent], template: "@if (navigationService.activeComponent(); as comp) {\n <div class=\"ctl-panel\">\n @if (rendererService.dirtyInputCount(); as dirtyCount) {\n <div class=\"ctl-toolbar\">\n <span class=\"ctl-dirty-info\">\n <span\n class=\"ctl-dirty-dot\"\n aria-hidden=\"true\"></span>\n {{ dirtyCount }} {{ dirtyCount === 1 ? 'input' : 'inputs' }} modified\n </span>\n <button\n type=\"button\"\n class=\"ctl-reset-btn\"\n (click)=\"rendererService.resetInputsToVariantDefaults()\"\n title=\"Reset all inputs to variant defaults\">\n <span aria-hidden=\"true\">↻</span> Reset\n </button>\n </div>\n }\n @for (input of comp.meta.inputs; track input.name) {\n <div class=\"ctl-row\">\n @if (getCustomControl(input); as customCtrl) {\n <ng-container\n [ngComponentOutlet]=\"customCtrl.component\"\n [ngComponentOutletInputs]=\"{\n inputMeta: input,\n rendererService: rendererService\n }\" />\n } @else {\n <div class=\"ctl-label\">\n <span class=\"ctl-name\">{{ input.name }}</span>\n <span class=\"ctl-type\"\n ><b>{{ input.rawType ?? input.type }}</b></span\n >\n </div>\n <div class=\"ctl-input\">\n @if (isNonEditable(input)) {\n <span\n class=\"ctl-not-editable\"\n title=\"This input type can't be edited from the controls panel\"\n >Not editable</span\n >\n } @else {\n @switch (input.type) {\n @case ('boolean') {\n <prism-boolean-control\n [value]=\"asBoolean(rendererService.inputValues()[input.name])\"\n (valueChange)=\"rendererService.updateInput(input.name, $event)\" />\n }\n @case ('number') {\n <prism-number-control\n [value]=\"asNumber(rendererService.inputValues()[input.name])\"\n (valueChange)=\"rendererService.updateInput(input.name, $event)\" />\n }\n @case ('union') {\n <prism-union-control\n [value]=\"asString(rendererService.inputValues()[input.name])\"\n [options]=\"input.values ?? []\"\n (valueChange)=\"rendererService.updateInput(input.name, $event)\" />\n }\n @case ('string') {\n <prism-string-control\n [value]=\"asString(rendererService.inputValues()[input.name])\"\n (valueChange)=\"rendererService.updateInput(input.name, $event)\" />\n }\n @default {\n <prism-json-control\n [value]=\"rendererService.inputValues()[input.name]\"\n (valueChange)=\"rendererService.updateInput(input.name, $event)\" />\n }\n }\n }\n </div>\n }\n </div>\n }\n @if (comp.meta.inputs.length === 0) {\n <p class=\"ctl-empty\">No inputs available</p>\n }\n </div>\n}\n", styles: [".ctl-panel {\n height: 100%;\n overflow-y: auto;\n}\n\n.ctl-toolbar {\n position: sticky;\n top: 0;\n z-index: 2;\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8px 20px;\n background: var(--prism-bg-elevated);\n border-bottom: 1px solid var(--prism-border);\n}\n\n.ctl-dirty-info {\n display: inline-flex;\n gap: 6px;\n align-items: center;\n font-family: var(--font-mono);\n font-size: 11.5px;\n color: var(--prism-text-muted);\n}\n\n.ctl-dirty-dot {\n width: 6px;\n height: 6px;\n background: var(--prism-primary);\n border-radius: 50%;\n box-shadow: 0 0 6px color-mix(in srgb, var(--prism-primary) 60%, transparent);\n}\n\n.ctl-reset-btn {\n display: inline-flex;\n gap: 5px;\n align-items: center;\n height: 24px;\n padding: 0 10px;\n font-family: var(--font-sans);\n font-size: 11.5px;\n font-weight: 500;\n color: var(--prism-text-muted);\n cursor: pointer;\n background: transparent;\n border: 1px solid var(--prism-border);\n border-radius: 5px;\n transition:\n color var(--dur-fast),\n background var(--dur-fast),\n border-color var(--dur-fast);\n}\n\n.ctl-reset-btn:hover {\n color: var(--prism-text);\n background: color-mix(in srgb, var(--prism-primary) 8%, transparent);\n border-color: color-mix(in srgb, var(--prism-primary) 40%, var(--prism-border));\n}\n\n.ctl-reset-btn:focus-visible {\n outline: 2px solid var(--prism-primary);\n outline-offset: 1px;\n}\n\n.ctl-row {\n display: grid;\n grid-template-columns: 180px 1fr;\n gap: 12px;\n align-items: center;\n min-height: 40px;\n padding: 8px 20px;\n border-bottom: 1px solid var(--prism-border);\n}\n\n.ctl-row:hover {\n background: color-mix(in srgb, var(--prism-primary) 3%, transparent);\n}\n\n.ctl-label {\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.ctl-name {\n font-size: 13px;\n font-weight: 500;\n color: var(--prism-text);\n}\n\n.ctl-type {\n font-family: var(--font-mono);\n font-size: 10.5px;\n color: var(--prism-text-ghost);\n}\n\n.ctl-type b {\n font-weight: 500;\n color: var(--prism-primary);\n}\n\n.ctl-input {\n display: flex;\n gap: 6px;\n align-items: center;\n min-width: 0;\n}\n\n.ctl-not-editable {\n font-family: var(--font-mono);\n font-size: 11.5px;\n font-style: italic;\n color: var(--prism-text-ghost);\n}\n\n.ctl-empty {\n padding: 16px 20px;\n margin: 0;\n font-size: 13px;\n color: var(--prism-text-ghost);\n}\n"] }]
|
|
278
188
|
}], null, { activeComponent: [{ type: i0.Input, args: [{ isSignal: true, alias: "activeComponent", required: false }] }] }); })();
|
|
279
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismControlsPanelComponent, { className: "PrismControlsPanelComponent", filePath: "app/panels/controls/prism-controls-panel.component.ts", lineNumber:
|
|
189
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismControlsPanelComponent, { className: "PrismControlsPanelComponent", filePath: "app/panels/controls/prism-controls-panel.component.ts", lineNumber: 22 }); })();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prism-events-panel.component.d.ts","sourceRoot":"","sources":["../../../../src/app/panels/events/prism-events-panel.component.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;;AAGjF,
|
|
1
|
+
{"version":3,"file":"prism-events-panel.component.d.ts","sourceRoot":"","sources":["../../../../src/app/panels/events/prism-events-panel.component.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;;AAGjF,qBAQa,yBAAyB;IAClC,SAAS,CAAC,QAAQ,CAAC,eAAe,uBAAgC;IAElE,QAAQ,CAAC,eAAe,+DAAwC;IAEhE,SAAS,CAAC,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM;IASxC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;yCAd1B,yBAAyB;2CAAzB,yBAAyB;CAiBrC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Component, inject, input
|
|
1
|
+
import { ChangeDetectionStrategy, Component, inject, input } from '@angular/core';
|
|
2
2
|
import { PrismEventLogService } from '../../services/prism-event-log.service.js';
|
|
3
3
|
import { PrismJsonNodeComponent } from './prism-json-node.component.js';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
@@ -42,7 +42,7 @@ export class PrismEventsPanelComponent {
|
|
|
42
42
|
const d = new Date(ts);
|
|
43
43
|
return d.toLocaleTimeString('en-US', {
|
|
44
44
|
hour12: false,
|
|
45
|
-
fractionalSecondDigits: 3
|
|
45
|
+
fractionalSecondDigits: 3
|
|
46
46
|
});
|
|
47
47
|
}
|
|
48
48
|
padIdx(n) {
|
|
@@ -56,28 +56,10 @@ export class PrismEventsPanelComponent {
|
|
|
56
56
|
} if (rf & 2) {
|
|
57
57
|
i0.ɵɵadvance(2);
|
|
58
58
|
i0.ɵɵrepeater(ctx.eventLogService.events());
|
|
59
|
-
} }, dependencies: [PrismJsonNodeComponent], styles: [".ev-panel[_ngcontent-%COMP%] {\n
|
|
59
|
+
} }, dependencies: [PrismJsonNodeComponent], styles: [".ev-panel[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n.ev-body[_ngcontent-%COMP%] {\n flex: 1;\n padding: 6px 0;\n overflow-y: auto;\n}\n\n.ev[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: auto auto 1fr auto;\n gap: 12px;\n align-items: center;\n min-height: 32px;\n padding: 6px 20px;\n font-family: var(--%NS%font-mono);\n font-size: 12px;\n border-bottom: 1px solid var(--%NS%prism-border);\n}\n\n.ev[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--%NS%prism-primary) 3%, transparent);\n}\n\n.ev-time[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--%NS%prism-text-ghost);\n}\n\n.ev-idx[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--%NS%prism-text-muted);\n}\n\n.ev-name[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--%NS%prism-primary);\n}\n\n.ev-args[_ngcontent-%COMP%] {\n overflow: hidden;\n text-overflow: ellipsis;\n color: var(--%NS%prism-text-2);\n white-space: nowrap;\n}\n\n.ev-empty[_ngcontent-%COMP%] {\n padding: 16px 20px;\n margin: 0;\n font-size: 13px;\n color: var(--%NS%prism-text-ghost);\n}"] });
|
|
60
60
|
}
|
|
61
61
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PrismEventsPanelComponent, [{
|
|
62
62
|
type: Component,
|
|
63
|
-
args: [{ selector: 'prism-events-panel', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [PrismJsonNodeComponent], template:
|
|
64
|
-
<div class="ev-panel">
|
|
65
|
-
<div class="ev-body">
|
|
66
|
-
@for (entry of eventLogService.events(); track entry.id; let i = $index)
|
|
67
|
-
{
|
|
68
|
-
<div class="ev">
|
|
69
|
-
<span class="ev-time">{{ formatTime(entry.timestamp) }}</span>
|
|
70
|
-
<span class="ev-idx"
|
|
71
|
-
>#{{ padIdx(eventLogService.events().length - i) }}</span
|
|
72
|
-
>
|
|
73
|
-
<span class="ev-name">{{ entry.name }}</span>
|
|
74
|
-
<span class="ev-args"><prism-json-node [value]="entry.value" /></span>
|
|
75
|
-
</div>
|
|
76
|
-
} @empty {
|
|
77
|
-
<p class="ev-empty">No events recorded</p>
|
|
78
|
-
}
|
|
79
|
-
</div>
|
|
80
|
-
</div>
|
|
81
|
-
`, styles: ["\n .ev-panel {\n display: flex;\n flex-direction: column;\n height: 100%;\n }\n\n .ev-body {\n padding: 6px 0;\n overflow-y: auto;\n flex: 1;\n }\n\n .ev {\n display: grid;\n grid-template-columns: auto auto 1fr auto;\n align-items: center;\n gap: 12px;\n padding: 6px 20px;\n font-family: var(--font-mono);\n font-size: 12px;\n border-bottom: 1px solid var(--prism-border);\n min-height: 32px;\n }\n .ev:hover {\n background: color-mix(in srgb, var(--prism-primary) 3%, transparent);\n }\n\n .ev-time {\n color: var(--prism-text-ghost);\n font-size: 11px;\n }\n .ev-idx {\n color: var(--prism-text-muted);\n font-size: 11px;\n }\n .ev-name {\n color: var(--prism-primary);\n font-weight: 500;\n }\n .ev-args {\n color: var(--prism-text-2);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .ev-empty {\n color: var(--prism-text-ghost);\n font-size: 13px;\n padding: 16px 20px;\n margin: 0;\n }\n "] }]
|
|
63
|
+
args: [{ selector: 'prism-events-panel', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [PrismJsonNodeComponent], template: "<div class=\"ev-panel\">\n <div class=\"ev-body\">\n @for (entry of eventLogService.events(); track entry.id; let i = $index) {\n <div class=\"ev\">\n <span class=\"ev-time\">{{ formatTime(entry.timestamp) }}</span>\n <span class=\"ev-idx\">#{{ padIdx(eventLogService.events().length - i) }}</span>\n <span class=\"ev-name\">{{ entry.name }}</span>\n <span class=\"ev-args\"><prism-json-node [value]=\"entry.value\" /></span>\n </div>\n } @empty {\n <p class=\"ev-empty\">No events recorded</p>\n }\n </div>\n</div>\n", styles: [".ev-panel {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n.ev-body {\n flex: 1;\n padding: 6px 0;\n overflow-y: auto;\n}\n\n.ev {\n display: grid;\n grid-template-columns: auto auto 1fr auto;\n gap: 12px;\n align-items: center;\n min-height: 32px;\n padding: 6px 20px;\n font-family: var(--font-mono);\n font-size: 12px;\n border-bottom: 1px solid var(--prism-border);\n}\n\n.ev:hover {\n background: color-mix(in srgb, var(--prism-primary) 3%, transparent);\n}\n\n.ev-time {\n font-size: 11px;\n color: var(--prism-text-ghost);\n}\n\n.ev-idx {\n font-size: 11px;\n color: var(--prism-text-muted);\n}\n\n.ev-name {\n font-weight: 500;\n color: var(--prism-primary);\n}\n\n.ev-args {\n overflow: hidden;\n text-overflow: ellipsis;\n color: var(--prism-text-2);\n white-space: nowrap;\n}\n\n.ev-empty {\n padding: 16px 20px;\n margin: 0;\n font-size: 13px;\n color: var(--prism-text-ghost);\n}\n"] }]
|
|
82
64
|
}], null, { activeComponent: [{ type: i0.Input, args: [{ isSignal: true, alias: "activeComponent", required: false }] }] }); })();
|
|
83
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismEventsPanelComponent, { className: "PrismEventsPanelComponent", filePath: "app/panels/events/prism-events-panel.component.ts", lineNumber:
|
|
65
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismEventsPanelComponent, { className: "PrismEventsPanelComponent", filePath: "app/panels/events/prism-events-panel.component.ts", lineNumber: 14 }); })();
|