@ng-prism/core 22.6.0 → 22.7.0-beta.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 +11 -9
- 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 +1 -1
- package/dist/app/canvas/canvas-overlay-tokens.d.ts +12 -0
- package/dist/app/canvas/canvas-overlay-tokens.d.ts.map +1 -0
- package/dist/app/canvas/canvas-overlay-tokens.js +52 -0
- package/dist/app/canvas/prism-canvas-bg-pill.component.js +2 -2
- package/dist/app/canvas/prism-canvas-pin-row.component.js +2 -2
- package/dist/app/canvas/prism-canvas-rulers.component.d.ts +2 -0
- package/dist/app/canvas/prism-canvas-rulers.component.d.ts.map +1 -1
- package/dist/app/canvas/prism-canvas-rulers.component.js +17 -12
- package/dist/app/canvas/prism-canvas-toolbar.component.d.ts +3 -2
- package/dist/app/canvas/prism-canvas-toolbar.component.d.ts.map +1 -1
- package/dist/app/canvas/prism-canvas-toolbar.component.js +89 -97
- package/dist/app/canvas/prism-template-popover.component.d.ts.map +1 -1
- package/dist/app/canvas/prism-template-popover.component.js +16 -7
- package/dist/app/component-head/head-metrics.d.ts +35 -19
- package/dist/app/component-head/head-metrics.d.ts.map +1 -1
- package/dist/app/component-head/head-metrics.js +57 -27
- package/dist/app/component-head/pipe-facts.d.ts +9 -0
- package/dist/app/component-head/pipe-facts.d.ts.map +1 -0
- package/dist/app/component-head/pipe-facts.js +15 -0
- package/dist/app/component-head/prism-component-head.component.d.ts +19 -22
- package/dist/app/component-head/prism-component-head.component.d.ts.map +1 -1
- package/dist/app/component-head/prism-component-head.component.js +80 -96
- package/dist/app/component-head/prism-head-gauge.component.d.ts +8 -12
- package/dist/app/component-head/prism-head-gauge.component.d.ts.map +1 -1
- package/dist/app/component-head/prism-head-gauge.component.js +51 -67
- package/dist/app/component-head/prism-head-info.component.d.ts +13 -2
- package/dist/app/component-head/prism-head-info.component.d.ts.map +1 -1
- package/dist/app/component-head/prism-head-info.component.js +57 -16
- package/dist/app/component-head/prism-stat.component.d.ts +4 -5
- package/dist/app/component-head/prism-stat.component.d.ts.map +1 -1
- package/dist/app/component-head/prism-stat.component.js +16 -12
- package/dist/app/component-head/service-facts.d.ts +8 -0
- package/dist/app/component-head/service-facts.d.ts.map +1 -0
- package/dist/app/component-head/service-facts.js +11 -0
- package/dist/app/controls/boolean-control.component.js +2 -2
- package/dist/app/controls/json-control.component.js +2 -2
- package/dist/app/controls/union-control.component.js +4 -3
- package/dist/app/header/header-brand.d.ts +25 -0
- package/dist/app/header/header-brand.d.ts.map +1 -0
- package/dist/app/header/header-brand.js +10 -0
- package/dist/app/header/prism-header.component.d.ts +2 -2
- package/dist/app/header/prism-header.component.d.ts.map +1 -1
- package/dist/app/header/prism-header.component.js +73 -57
- package/dist/app/icons/icon-registry.d.ts.map +1 -1
- package/dist/app/icons/icon-registry.js +4 -1
- package/dist/app/index.d.ts +12 -0
- package/dist/app/index.d.ts.map +1 -1
- package/dist/app/index.js +12 -1
- package/dist/app/layout-menu/prism-layout-menu.component.d.ts +3 -0
- package/dist/app/layout-menu/prism-layout-menu.component.d.ts.map +1 -1
- package/dist/app/layout-menu/prism-layout-menu.component.js +72 -58
- package/dist/app/overview/open-in-playground.d.ts +8 -0
- package/dist/app/overview/open-in-playground.d.ts.map +1 -1
- package/dist/app/overview/open-in-playground.js +13 -0
- package/dist/app/overview/overview-matrix.d.ts +10 -4
- package/dist/app/overview/overview-matrix.d.ts.map +1 -1
- package/dist/app/overview/overview-matrix.js +3 -3
- package/dist/app/overview/prism-overview-cell.component.d.ts +6 -2
- package/dist/app/overview/prism-overview-cell.component.d.ts.map +1 -1
- package/dist/app/overview/prism-overview-cell.component.js +35 -24
- package/dist/app/overview/prism-overview-matrix.component.js +46 -55
- package/dist/app/page-renderer/prism-page-renderer.component.js +2 -2
- package/dist/app/panels/a11y/a11y-header-badge.component.d.ts +1 -4
- package/dist/app/panels/a11y/a11y-header-badge.component.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-header-badge.component.js +8 -19
- package/dist/app/panels/a11y/a11y-keyboard-overlay.component.js +2 -2
- package/dist/app/panels/a11y/a11y-overlay-host.component.d.ts +1 -0
- package/dist/app/panels/a11y/a11y-overlay-host.component.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-overlay-host.component.js +4 -3
- package/dist/app/panels/a11y/a11y-panel.component.d.ts +4 -1
- package/dist/app/panels/a11y/a11y-panel.component.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-panel.component.js +32 -54
- package/dist/app/panels/a11y/a11y-score.component.d.ts +8 -3
- package/dist/app/panels/a11y/a11y-score.component.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-score.component.js +19 -35
- package/dist/app/panels/a11y/a11y-sr-overlay.component.js +2 -2
- package/dist/app/panels/a11y/a11y-sr.component.js +2 -2
- package/dist/app/panels/a11y/a11y-summary.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-summary.js +8 -1
- package/dist/app/panels/a11y/a11y-tree.component.js +2 -2
- package/dist/app/panels/a11y/a11y-violations.component.d.ts +23 -2
- package/dist/app/panels/a11y/a11y-violations.component.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-violations.component.js +104 -89
- package/dist/app/panels/a11y/severity.d.ts +9 -0
- package/dist/app/panels/a11y/severity.d.ts.map +1 -0
- package/dist/app/panels/a11y/severity.js +12 -0
- package/dist/app/panels/controls/non-editable-input-types.d.ts +9 -1
- package/dist/app/panels/controls/non-editable-input-types.d.ts.map +1 -1
- package/dist/app/panels/controls/non-editable-input-types.js +18 -0
- package/dist/app/panels/controls/prism-controls-panel.component.d.ts +2 -1
- package/dist/app/panels/controls/prism-controls-panel.component.d.ts.map +1 -1
- package/dist/app/panels/controls/prism-controls-panel.component.js +77 -59
- package/dist/app/panels/events/prism-events-panel.component.d.ts +2 -0
- package/dist/app/panels/events/prism-events-panel.component.d.ts.map +1 -1
- package/dist/app/panels/events/prism-events-panel.component.js +20 -7
- package/dist/app/panels/events/prism-json-node.utils.d.ts +6 -0
- package/dist/app/panels/events/prism-json-node.utils.d.ts.map +1 -1
- package/dist/app/panels/events/prism-json-node.utils.js +8 -0
- package/dist/app/panels/panel-host/addon-panels.d.ts +11 -0
- package/dist/app/panels/panel-host/addon-panels.d.ts.map +1 -0
- package/dist/app/panels/panel-host/addon-panels.js +12 -0
- package/dist/app/panels/panel-host/panel-badge.d.ts +22 -0
- package/dist/app/panels/panel-host/panel-badge.d.ts.map +1 -1
- package/dist/app/panels/panel-host/panel-badge.js +56 -11
- package/dist/app/panels/panel-host/prism-panel-host.component.d.ts +4 -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 +36 -70
- package/dist/app/renderer/composition.d.ts +20 -0
- package/dist/app/renderer/composition.d.ts.map +1 -0
- package/dist/app/renderer/composition.js +26 -0
- package/dist/app/renderer/input-bindings.d.ts +13 -1
- package/dist/app/renderer/input-bindings.d.ts.map +1 -1
- package/dist/app/renderer/input-bindings.js +22 -1
- package/dist/app/renderer/prism-renderer.component.d.ts +8 -1
- package/dist/app/renderer/prism-renderer.component.d.ts.map +1 -1
- package/dist/app/renderer/prism-renderer.component.js +40 -28
- package/dist/app/renderer/snippet-generator.d.ts +14 -2
- package/dist/app/renderer/snippet-generator.d.ts.map +1 -1
- package/dist/app/renderer/snippet-generator.js +137 -82
- package/dist/app/services/navigation-item.d.ts +10 -0
- package/dist/app/services/navigation-item.d.ts.map +1 -0
- package/dist/app/services/navigation-item.js +20 -0
- package/dist/app/services/navigation-item.types.d.ts +8 -0
- package/dist/app/services/navigation-item.types.d.ts.map +1 -1
- package/dist/app/services/prism-layout.service.d.ts +12 -0
- package/dist/app/services/prism-layout.service.d.ts.map +1 -1
- package/dist/app/services/prism-layout.service.js +17 -7
- package/dist/app/services/prism-manifest.service.d.ts +4 -0
- package/dist/app/services/prism-manifest.service.d.ts.map +1 -1
- package/dist/app/services/prism-manifest.service.js +4 -0
- package/dist/app/services/prism-navigation.service.d.ts +12 -0
- package/dist/app/services/prism-navigation.service.d.ts.map +1 -1
- package/dist/app/services/prism-navigation.service.js +85 -19
- package/dist/app/services/prism-panel.service.d.ts +7 -3
- package/dist/app/services/prism-panel.service.d.ts.map +1 -1
- package/dist/app/services/prism-panel.service.js +13 -4
- package/dist/app/services/prism-renderer.service.d.ts +6 -0
- package/dist/app/services/prism-renderer.service.d.ts.map +1 -1
- package/dist/app/services/prism-renderer.service.js +40 -6
- package/dist/app/services/prism-search.service.d.ts +4 -0
- package/dist/app/services/prism-search.service.d.ts.map +1 -1
- package/dist/app/services/prism-search.service.js +29 -6
- package/dist/app/services/prism-theme.service.d.ts +11 -3
- package/dist/app/services/prism-theme.service.d.ts.map +1 -1
- package/dist/app/services/prism-theme.service.js +27 -19
- package/dist/app/services/prism-url-state.service.d.ts.map +1 -1
- package/dist/app/services/prism-url-state.service.js +42 -4
- package/dist/app/shared/badge.types.d.ts +7 -0
- package/dist/app/shared/badge.types.d.ts.map +1 -0
- package/dist/app/shared/badge.types.js +9 -0
- package/dist/app/shared/brand-mark.d.ts +35 -0
- package/dist/app/shared/brand-mark.d.ts.map +1 -0
- package/dist/app/shared/brand-mark.js +52 -0
- package/dist/app/shared/metric-bar.d.ts +6 -0
- package/dist/app/shared/metric-bar.d.ts.map +1 -0
- package/dist/app/shared/metric-bar.js +7 -0
- package/dist/app/shared/prism-badge.component.d.ts +21 -0
- package/dist/app/shared/prism-badge.component.d.ts.map +1 -0
- package/dist/app/shared/prism-badge.component.js +68 -0
- package/dist/app/shared/prism-button.component.d.ts +12 -0
- package/dist/app/shared/prism-button.component.d.ts.map +1 -0
- package/dist/app/shared/prism-button.component.js +28 -0
- package/dist/app/shared/prism-icon-button.component.d.ts +17 -0
- package/dist/app/shared/prism-icon-button.component.d.ts.map +1 -0
- package/dist/app/shared/prism-icon-button.component.js +37 -0
- package/dist/app/shared/prism-list-row.component.d.ts +17 -0
- package/dist/app/shared/prism-list-row.component.d.ts.map +1 -0
- package/dist/app/shared/prism-list-row.component.js +57 -0
- package/dist/app/shared/prism-logo.component.d.ts +24 -0
- package/dist/app/shared/prism-logo.component.d.ts.map +1 -0
- package/dist/app/shared/prism-logo.component.js +77 -0
- package/dist/app/shared/prism-metric-badge.component.d.ts +9 -4
- package/dist/app/shared/prism-metric-badge.component.d.ts.map +1 -1
- package/dist/app/shared/prism-metric-badge.component.js +33 -12
- package/dist/app/shared/prism-metric-card.component.d.ts +30 -0
- package/dist/app/shared/prism-metric-card.component.d.ts.map +1 -0
- package/dist/app/shared/prism-metric-card.component.js +111 -0
- package/dist/app/shared/prism-panel-toolbar.component.d.ts +13 -0
- package/dist/app/shared/prism-panel-toolbar.component.d.ts.map +1 -0
- package/dist/app/shared/prism-panel-toolbar.component.js +28 -0
- package/dist/app/shared/prism-segmented.component.d.ts +25 -0
- package/dist/app/shared/prism-segmented.component.d.ts.map +1 -0
- package/dist/app/shared/prism-segmented.component.js +77 -0
- package/dist/app/shared/prism-tabs.component.d.ts +44 -0
- package/dist/app/shared/prism-tabs.component.d.ts.map +1 -0
- package/dist/app/shared/prism-tabs.component.js +134 -0
- package/dist/app/shared/roving-focus.d.ts +13 -0
- package/dist/app/shared/roving-focus.d.ts.map +1 -0
- package/dist/app/shared/roving-focus.js +34 -0
- package/dist/app/shell/prism-shell.component.d.ts +13 -0
- package/dist/app/shell/prism-shell.component.d.ts.map +1 -1
- package/dist/app/shell/prism-shell.component.js +57 -28
- package/dist/app/shell/should-select-first.d.ts +17 -0
- package/dist/app/shell/should-select-first.d.ts.map +1 -0
- package/dist/app/shell/should-select-first.js +13 -0
- package/dist/app/sidebar/navigation-decorations.d.ts +23 -1
- package/dist/app/sidebar/navigation-decorations.d.ts.map +1 -1
- package/dist/app/sidebar/navigation-decorations.js +33 -2
- package/dist/app/sidebar/prism-sidebar.component.d.ts +5 -15
- package/dist/app/sidebar/prism-sidebar.component.d.ts.map +1 -1
- package/dist/app/sidebar/prism-sidebar.component.js +89 -77
- package/dist/app/theme/deprecated-tokens.d.ts +15 -0
- package/dist/app/theme/deprecated-tokens.d.ts.map +1 -0
- package/dist/app/theme/deprecated-tokens.js +22 -0
- package/dist/app/theme/favicon.d.ts +3 -0
- package/dist/app/theme/favicon.d.ts.map +1 -0
- package/dist/app/theme/favicon.js +3 -0
- package/dist/app/theme/prism-default-theme.d.ts.map +1 -1
- package/dist/app/theme/prism-default-theme.js +116 -61
- package/dist/app/theme/resolve-theme-tokens.d.ts +29 -0
- package/dist/app/theme/resolve-theme-tokens.d.ts.map +1 -0
- package/dist/app/theme/resolve-theme-tokens.js +43 -0
- package/dist/app/variant-ribbon/prism-variant-ribbon.component.d.ts +4 -7
- package/dist/app/variant-ribbon/prism-variant-ribbon.component.d.ts.map +1 -1
- package/dist/app/variant-ribbon/prism-variant-ribbon.component.js +31 -69
- package/dist/app/view-tab-bar/next-view-id.d.ts +7 -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 +9 -1
- package/dist/app/view-tab-bar/panel-inputs.d.ts +28 -0
- package/dist/app/view-tab-bar/panel-inputs.d.ts.map +1 -0
- package/dist/app/view-tab-bar/panel-inputs.js +41 -0
- package/dist/app/view-tab-bar/prism-view-panel-host.component.d.ts +2 -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 +9 -9
- package/dist/app/view-tab-bar/prism-view-tab-bar.component.d.ts +6 -0
- 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 +22 -29
- package/dist/builder/config-loader/deprecated-options.d.ts +4 -2
- package/dist/builder/config-loader/deprecated-options.d.ts.map +1 -1
- package/dist/builder/config-loader/deprecated-options.js +13 -2
- package/dist/builder/manifest/composition-wrapper.generator.d.ts +14 -0
- package/dist/builder/manifest/composition-wrapper.generator.d.ts.map +1 -0
- package/dist/builder/manifest/composition-wrapper.generator.js +66 -0
- package/dist/builder/manifest/host-parser.d.ts +2 -0
- package/dist/builder/manifest/host-parser.d.ts.map +1 -1
- package/dist/builder/manifest/host-parser.js +9 -4
- package/dist/builder/manifest/manifest-imports.d.ts +34 -0
- package/dist/builder/manifest/manifest-imports.d.ts.map +1 -0
- package/dist/builder/manifest/manifest-imports.js +91 -0
- package/dist/builder/manifest/runtime-manifest.generator.d.ts +13 -0
- package/dist/builder/manifest/runtime-manifest.generator.d.ts.map +1 -1
- package/dist/builder/manifest/runtime-manifest.generator.js +135 -64
- package/dist/builder/manifest/selector-element.d.ts +16 -0
- package/dist/builder/manifest/selector-element.d.ts.map +1 -0
- package/dist/builder/manifest/selector-element.js +46 -0
- package/dist/builder/manifest/template-literal.d.ts +3 -0
- package/dist/builder/manifest/template-literal.d.ts.map +1 -0
- package/dist/builder/manifest/template-literal.js +4 -0
- package/dist/builder/plugin-runner/plugin-runner.d.ts.map +1 -1
- package/dist/builder/plugin-runner/plugin-runner.js +29 -26
- package/dist/builder/scanner/api/angular-decorators.d.ts +84 -0
- package/dist/builder/scanner/api/angular-decorators.d.ts.map +1 -0
- package/dist/builder/scanner/api/angular-decorators.js +157 -0
- package/dist/builder/scanner/api/component-api.extractor.d.ts +13 -0
- package/dist/builder/scanner/api/component-api.extractor.d.ts.map +1 -0
- package/dist/builder/scanner/api/component-api.extractor.js +104 -0
- package/dist/builder/scanner/api/doc-tags.d.ts +13 -0
- package/dist/builder/scanner/api/doc-tags.d.ts.map +1 -0
- package/dist/builder/scanner/api/doc-tags.js +101 -0
- package/dist/builder/scanner/api/export-index.d.ts +18 -0
- package/dist/builder/scanner/api/export-index.d.ts.map +1 -0
- package/dist/builder/scanner/api/export-index.js +22 -0
- package/dist/builder/scanner/api/member.extractor.d.ts +90 -0
- package/dist/builder/scanner/api/member.extractor.d.ts.map +1 -0
- package/dist/builder/scanner/api/member.extractor.js +270 -0
- package/dist/builder/scanner/api/pipe-api.extractor.d.ts +12 -0
- package/dist/builder/scanner/api/pipe-api.extractor.d.ts.map +1 -0
- package/dist/builder/scanner/api/pipe-api.extractor.js +52 -0
- package/dist/builder/scanner/api/service-api.extractor.d.ts +14 -0
- package/dist/builder/scanner/api/service-api.extractor.d.ts.map +1 -0
- package/dist/builder/scanner/api/service-api.extractor.js +119 -0
- package/dist/builder/scanner/api/setup.reader.d.ts +26 -0
- package/dist/builder/scanner/api/setup.reader.d.ts.map +1 -0
- package/dist/builder/scanner/api/setup.reader.js +89 -0
- package/dist/builder/scanner/api/type-collector.d.ts +24 -0
- package/dist/builder/scanner/api/type-collector.d.ts.map +1 -0
- package/dist/builder/scanner/api/type-collector.js +211 -0
- package/dist/builder/scanner/ast-utils.d.ts +8 -0
- package/dist/builder/scanner/ast-utils.d.ts.map +1 -1
- package/dist/builder/scanner/ast-utils.js +37 -1
- package/dist/builder/scanner/class-hierarchy.d.ts +5 -3
- package/dist/builder/scanner/class-hierarchy.d.ts.map +1 -1
- package/dist/builder/scanner/class-hierarchy.js +12 -6
- package/dist/builder/scanner/component.scanner.d.ts +60 -6
- package/dist/builder/scanner/component.scanner.d.ts.map +1 -1
- package/dist/builder/scanner/component.scanner.js +209 -57
- package/dist/builder/scanner/composition/compose-template.d.ts +36 -0
- package/dist/builder/scanner/composition/compose-template.d.ts.map +1 -0
- package/dist/builder/scanner/composition/compose-template.js +187 -0
- package/dist/builder/scanner/composition/declarables.d.ts +54 -0
- package/dist/builder/scanner/composition/declarables.d.ts.map +1 -0
- package/dist/builder/scanner/composition/declarables.js +182 -0
- package/dist/builder/scanner/composition/match-declarables.d.ts +43 -0
- package/dist/builder/scanner/composition/match-declarables.d.ts.map +1 -0
- package/dist/builder/scanner/composition/match-declarables.js +131 -0
- package/dist/builder/scanner/composition/read-composition.d.ts +77 -0
- package/dist/builder/scanner/composition/read-composition.d.ts.map +1 -0
- package/dist/builder/scanner/composition/read-composition.js +302 -0
- package/dist/builder/scanner/composition/template-elements.d.ts +12 -0
- package/dist/builder/scanner/composition/template-elements.d.ts.map +1 -0
- package/dist/builder/scanner/composition/template-elements.js +41 -0
- package/dist/builder/scanner/index.d.ts +4 -0
- package/dist/builder/scanner/index.d.ts.map +1 -1
- package/dist/builder/scanner/index.js +2 -0
- package/dist/builder/scanner/input.extractor.d.ts +31 -2
- package/dist/builder/scanner/input.extractor.d.ts.map +1 -1
- package/dist/builder/scanner/input.extractor.js +52 -15
- package/dist/builder/scanner/pipe.scanner.d.ts +29 -0
- package/dist/builder/scanner/pipe.scanner.d.ts.map +1 -0
- package/dist/builder/scanner/pipe.scanner.js +65 -0
- package/dist/builder/scanner/scanner.d.ts +25 -1
- package/dist/builder/scanner/scanner.d.ts.map +1 -1
- package/dist/builder/scanner/scanner.js +60 -26
- package/dist/builder/scanner/service/angular-decorators.d.ts +80 -0
- package/dist/builder/scanner/service/angular-decorators.d.ts.map +1 -0
- package/dist/builder/scanner/service/angular-decorators.js +154 -0
- package/dist/builder/scanner/service/doc-tags.d.ts +13 -0
- package/dist/builder/scanner/service/doc-tags.d.ts.map +1 -0
- package/dist/builder/scanner/service/doc-tags.js +97 -0
- package/dist/builder/scanner/service/export-index.d.ts +18 -0
- package/dist/builder/scanner/service/export-index.d.ts.map +1 -0
- package/dist/builder/scanner/service/export-index.js +22 -0
- package/dist/builder/scanner/service/member.extractor.d.ts +65 -0
- package/dist/builder/scanner/service/member.extractor.d.ts.map +1 -0
- package/dist/builder/scanner/service/member.extractor.js +216 -0
- package/dist/builder/scanner/service/pipe-api.extractor.d.ts +12 -0
- package/dist/builder/scanner/service/pipe-api.extractor.d.ts.map +1 -0
- package/dist/builder/scanner/service/pipe-api.extractor.js +72 -0
- package/dist/builder/scanner/service/service-api.extractor.d.ts +14 -0
- package/dist/builder/scanner/service/service-api.extractor.d.ts.map +1 -0
- package/dist/builder/scanner/service/service-api.extractor.js +119 -0
- package/dist/builder/scanner/service/setup.reader.d.ts +26 -0
- package/dist/builder/scanner/service/setup.reader.d.ts.map +1 -0
- package/dist/builder/scanner/service/setup.reader.js +89 -0
- package/dist/builder/scanner/service/type-collector.d.ts +23 -0
- package/dist/builder/scanner/service/type-collector.d.ts.map +1 -0
- package/dist/builder/scanner/service/type-collector.js +210 -0
- package/dist/builder/scanner/service.scanner.d.ts +26 -0
- package/dist/builder/scanner/service.scanner.d.ts.map +1 -0
- package/dist/builder/scanner/service.scanner.js +61 -0
- package/dist/builder/scanner/showcase-diagnostics.d.ts +60 -1
- package/dist/builder/scanner/showcase-diagnostics.d.ts.map +1 -1
- package/dist/builder/scanner/showcase-diagnostics.js +114 -1
- package/dist/builder/shared/prism-pipeline.d.ts +6 -0
- package/dist/builder/shared/prism-pipeline.d.ts.map +1 -1
- package/dist/builder/shared/prism-pipeline.js +43 -5
- package/dist/decorator/index.d.ts +1 -1
- package/dist/decorator/index.d.ts.map +1 -1
- package/dist/decorator/showcase.types.d.ts +79 -9
- package/dist/decorator/showcase.types.d.ts.map +1 -1
- package/dist/plugin/index.d.ts +6 -1
- package/dist/plugin/index.d.ts.map +1 -1
- package/dist/plugin/index.js +4 -0
- package/dist/plugin/pipe.types.d.ts +36 -0
- package/dist/plugin/pipe.types.d.ts.map +1 -0
- package/dist/plugin/pipe.types.js +1 -0
- package/dist/plugin/plugin.types.d.ts +140 -3
- package/dist/plugin/plugin.types.d.ts.map +1 -1
- package/dist/plugin/service.types.d.ts +124 -0
- package/dist/plugin/service.types.d.ts.map +1 -0
- package/dist/plugin/service.types.js +1 -0
- package/dist/plugin/status.d.ts +27 -0
- package/dist/plugin/status.d.ts.map +1 -0
- package/dist/plugin/status.js +26 -0
- package/dist/shared/composition.d.ts +30 -0
- package/dist/shared/composition.d.ts.map +1 -0
- package/dist/shared/composition.js +29 -0
- package/dist/shared/pseudo-state.type.d.ts +2 -1
- package/dist/shared/pseudo-state.type.d.ts.map +1 -1
- package/dist/shared/void-elements.d.ts +3 -0
- package/dist/shared/void-elements.d.ts.map +1 -0
- package/dist/shared/void-elements.js +2 -0
- package/package.json +1 -1
|
@@ -1,3 +1,46 @@
|
|
|
1
|
+
import { deriveA11ySummary } from '../panels/a11y/a11y-summary.js';
|
|
2
|
+
const isVerdict = (v) => v === 'ok' || v === 'warn' || v === 'danger';
|
|
3
|
+
/**
|
|
4
|
+
* The head's metrics, in source order: coverage, the a11y score, the visual
|
|
5
|
+
* regression headline.
|
|
6
|
+
*
|
|
7
|
+
* It reads verdicts rather than computing them. Coverage and visual regression
|
|
8
|
+
* take what their plugins derived at build time from their own thresholds; the
|
|
9
|
+
* a11y score is the live audit graded by `deriveA11ySummary`, the rule the tab,
|
|
10
|
+
* the sidebar and the header use. A figure without a verdict stays `none`
|
|
11
|
+
* instead of being graded on a scale of the head's own.
|
|
12
|
+
*/
|
|
13
|
+
export function headMetrics(input) {
|
|
14
|
+
const coverage = input.meta?.['coverage'];
|
|
15
|
+
const vrt = input.meta?.['visualRegression'];
|
|
16
|
+
const t = coverage?.thresholds;
|
|
17
|
+
const coverageTarget = t ? Math.round((t.lines + t.branches + t.functions + t.statements) / 4) : null;
|
|
18
|
+
const hasCoverage = coverage?.found === true && typeof coverage.score === 'number';
|
|
19
|
+
const a11y = input.a11y;
|
|
20
|
+
return [
|
|
21
|
+
{
|
|
22
|
+
id: 'coverage',
|
|
23
|
+
label: 'Coverage',
|
|
24
|
+
value: hasCoverage ? `${coverage.score}%` : '—',
|
|
25
|
+
threshold: coverageTarget === null ? '—' : `≥ ${coverageTarget}%`,
|
|
26
|
+
variant: hasCoverage && isVerdict(coverage.summary?.variant) ? coverage.summary.variant : 'none'
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
id: 'a11y',
|
|
30
|
+
label: 'A11y score',
|
|
31
|
+
value: a11y === null ? '—' : String(a11y.score),
|
|
32
|
+
threshold: `≥ ${input.a11yThresholds.score}`,
|
|
33
|
+
variant: a11y === null ? 'none' : deriveA11ySummary(a11y, input.a11yThresholds).variant
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
id: 'vrt',
|
|
37
|
+
label: 'VRT diff',
|
|
38
|
+
value: vrt?.found && vrt.summary ? vrt.summary.value : '—',
|
|
39
|
+
threshold: 'no changes',
|
|
40
|
+
variant: vrt?.found && isVerdict(vrt.summary?.variant) ? vrt.summary.variant : 'none'
|
|
41
|
+
}
|
|
42
|
+
];
|
|
43
|
+
}
|
|
1
44
|
const SEVERITY = {
|
|
2
45
|
none: 0,
|
|
3
46
|
ok: 0,
|
|
@@ -5,35 +48,22 @@ const SEVERITY = {
|
|
|
5
48
|
danger: 2
|
|
6
49
|
};
|
|
7
50
|
/**
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* repo's Jest setup, so any logic left in a template is logic that never gets
|
|
13
|
-
* a test. This mirrors `decorateItem` in the sidebar, which resolves the same
|
|
14
|
-
* kind of question for navigation marks.
|
|
51
|
+
* The one metric the chip shows: the worst, ties resolved by source order so
|
|
52
|
+
* the chip does not flicker between two equally bad ones; when everything is
|
|
53
|
+
* fine, the first measured one in the ok tone. `null` when nothing is
|
|
54
|
+
* measured, and the head shows no gauge.
|
|
15
55
|
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
56
|
+
* A pure function instead of a computed inside the component: components using
|
|
57
|
+
* signal inputs cannot be rendered through TestBed in this repo's Jest setup.
|
|
18
58
|
*/
|
|
19
|
-
export function
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
if (SEVERITY[m.variant] === 0)
|
|
27
|
-
continue;
|
|
28
|
-
deviating++;
|
|
29
|
-
if (worst === null || SEVERITY[m.variant] > SEVERITY[worst.variant]) {
|
|
59
|
+
export function gaugeChip(metrics) {
|
|
60
|
+
const measured = metrics.filter((m) => m.variant !== 'none');
|
|
61
|
+
if (measured.length === 0)
|
|
62
|
+
return null;
|
|
63
|
+
let worst = measured[0];
|
|
64
|
+
for (const m of measured) {
|
|
65
|
+
if (SEVERITY[m.variant] > SEVERITY[worst.variant])
|
|
30
66
|
worst = m;
|
|
31
|
-
}
|
|
32
67
|
}
|
|
33
|
-
return {
|
|
34
|
-
measured,
|
|
35
|
-
worst,
|
|
36
|
-
others: deviating > 0 ? deviating - 1 : 0,
|
|
37
|
-
variant: worst === null ? 'ok' : worst.variant
|
|
38
|
-
};
|
|
68
|
+
return { metric: worst, variant: worst.variant, measured: measured.length };
|
|
39
69
|
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The plain facts about a pipe for the head's info popover: whether it is pure,
|
|
3
|
+
* and where to import it from. Both are optional on a scanned pipe (purity when
|
|
4
|
+
* `@Pipe({ pure })` could not be read, the import path when the scanner could not
|
|
5
|
+
* place the pipe), so a fact the scanner could not establish is left out rather
|
|
6
|
+
* than guessed.
|
|
7
|
+
*/
|
|
8
|
+
export declare function pipeFacts(pure: boolean | undefined, importPath: string | undefined): string[];
|
|
9
|
+
//# sourceMappingURL=pipe-facts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipe-facts.d.ts","sourceRoot":"","sources":["../../../src/app/component-head/pipe-facts.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,EAAE,CAM7F"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The plain facts about a pipe for the head's info popover: whether it is pure,
|
|
3
|
+
* and where to import it from. Both are optional on a scanned pipe (purity when
|
|
4
|
+
* `@Pipe({ pure })` could not be read, the import path when the scanner could not
|
|
5
|
+
* place the pipe), so a fact the scanner could not establish is left out rather
|
|
6
|
+
* than guessed.
|
|
7
|
+
*/
|
|
8
|
+
export function pipeFacts(pure, importPath) {
|
|
9
|
+
const facts = [];
|
|
10
|
+
if (pure !== undefined)
|
|
11
|
+
facts.push(pure ? 'Pure' : 'Impure');
|
|
12
|
+
if (importPath)
|
|
13
|
+
facts.push(importPath);
|
|
14
|
+
return facts;
|
|
15
|
+
}
|
|
@@ -1,41 +1,38 @@
|
|
|
1
1
|
import type { ComponentStatus } from '../../decorator/showcase.types.js';
|
|
2
|
-
import type { HeadMetric } from './head-metrics.js';
|
|
3
2
|
import * as i0 from "@angular/core";
|
|
4
3
|
interface StatusBadge {
|
|
5
4
|
label: string;
|
|
6
5
|
tooltip: string;
|
|
6
|
+
tone: 'success' | 'warn' | 'danger';
|
|
7
7
|
}
|
|
8
8
|
export declare class PrismComponentHeadComponent {
|
|
9
9
|
private readonly navigationService;
|
|
10
10
|
private readonly auditService;
|
|
11
|
-
|
|
11
|
+
private readonly manifest;
|
|
12
|
+
private readonly config;
|
|
13
|
+
protected readonly comp: import("@angular/core").Signal<import("../../plugin/plugin.types.js").RuntimeComponent | null>;
|
|
14
|
+
protected readonly service: import("@angular/core").Signal<import("../../index.js").RuntimeService | null>;
|
|
15
|
+
protected readonly pipe: import("@angular/core").Signal<import("../../index.js").RuntimePipe | null>;
|
|
16
|
+
/** What the head introduces: the active component or, on a service or pipe page, the service or the pipe. */
|
|
17
|
+
protected readonly subject: import("@angular/core").Signal<import("../../index.js").ScannedService | import("../../index.js").ScannedPipe | import("../../plugin/plugin.types.js").ScannedComponent | null>;
|
|
12
18
|
protected readonly category: import("@angular/core").Signal<string>;
|
|
19
|
+
/** The selector of a component. A service or a pipe has none. */
|
|
20
|
+
protected readonly selector: import("@angular/core").Signal<string | undefined>;
|
|
21
|
+
/** A pipe is used in a template as `| name`, so that is what its code block shows. */
|
|
22
|
+
protected readonly code: import("@angular/core").Signal<string | undefined>;
|
|
23
|
+
protected readonly facts: import("@angular/core").Signal<string[]>;
|
|
13
24
|
protected readonly variantCount: import("@angular/core").Signal<number>;
|
|
14
25
|
protected readonly stateCount: import("@angular/core").Signal<number>;
|
|
15
26
|
protected readonly status: import("@angular/core").Signal<ComponentStatus | undefined>;
|
|
16
27
|
protected readonly statusBadge: import("@angular/core").Signal<StatusBadge | null>;
|
|
17
|
-
protected readonly coveragePercent: import("@angular/core").Signal<number | null>;
|
|
18
|
-
protected readonly a11yScore: import("@angular/core").Signal<number | null>;
|
|
19
28
|
/**
|
|
20
|
-
* The
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
* semantics (red for any changed variant, amber for ones that could not be
|
|
24
|
-
* compared), and duplicating that rule here would mean the stat and the
|
|
25
|
-
* plugin's own panel could disagree about the same component.
|
|
29
|
+
* The configured a11y thresholds, resolved the way the panel host and the
|
|
30
|
+
* header badge resolve them, so the gauge grades the live audit on the
|
|
31
|
+
* same scale as the tab and the sidebar.
|
|
26
32
|
*/
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
} | null>;
|
|
31
|
-
/**
|
|
32
|
-
* The full metric list for the gauge, in source order.
|
|
33
|
-
*
|
|
34
|
-
* Order matters: `summarizeMetrics` breaks severity ties by position, so
|
|
35
|
-
* this sequence is what makes the chip show a stable metric rather than
|
|
36
|
-
* flickering between two equally bad ones.
|
|
37
|
-
*/
|
|
38
|
-
protected readonly metrics: import("@angular/core").Signal<HeadMetric[]>;
|
|
33
|
+
private readonly a11yThresholds;
|
|
34
|
+
/** The full metric list for the gauge, in source order. */
|
|
35
|
+
protected readonly metrics: import("@angular/core").Signal<import("./head-metrics.js").HeadMetric[]>;
|
|
39
36
|
private readonly componentMeta;
|
|
40
37
|
static ɵfac: i0.ɵɵFactoryDeclaration<PrismComponentHeadComponent, never>;
|
|
41
38
|
static ɵcmp: i0.ɵɵComponentDeclaration<PrismComponentHeadComponent, "prism-component-head", never, {}, {}, never, ["[headEnd]"], true, never>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prism-component-head.component.d.ts","sourceRoot":"","sources":["../../../src/app/component-head/prism-component-head.component.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC
|
|
1
|
+
{"version":3,"file":"prism-component-head.component.d.ts","sourceRoot":"","sources":["../../../src/app/component-head/prism-component-head.component.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;;AAczE,UAAU,WAAW;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC;CACvC;AAyBD,qBAQa,2BAA2B;IACpC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAkC;IACpE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA4B;IACzD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA2C;IACpE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuC;IAE9D,SAAS,CAAC,QAAQ,CAAC,IAAI,iGAA4D;IACnF,SAAS,CAAC,QAAQ,CAAC,OAAO,iFAA0D;IACpF,SAAS,CAAC,QAAQ,CAAC,IAAI,8EAAuD;IAE9E,6GAA6G;IAC7G,SAAS,CAAC,QAAQ,CAAC,OAAO,kLAA0F;IAEpH,SAAS,CAAC,QAAQ,CAAC,QAAQ,yCAA8E;IAEzG,iEAAiE;IACjE,SAAS,CAAC,QAAQ,CAAC,QAAQ,qDAA4D;IAEvF,sFAAsF;IACtF,SAAS,CAAC,QAAQ,CAAC,IAAI,qDAIpB;IAEH,SAAS,CAAC,QAAQ,CAAC,KAAK,2CAOrB;IAEH,SAAS,CAAC,QAAQ,CAAC,YAAY,yCAI5B;IAEH,SAAS,CAAC,QAAQ,CAAC,UAAU,yCAI1B;IAEH,SAAS,CAAC,QAAQ,CAAC,MAAM,8DAAsF;IAE/G,SAAS,CAAC,QAAQ,CAAC,WAAW,qDAI3B;IAEH;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,cAAc,CAI5B;IAEH,2DAA2D;IAC3D,SAAS,CAAC,QAAQ,CAAC,OAAO,2EAMxB;IAEF,OAAO,CAAC,QAAQ,CAAC,aAAa,CAK3B;yCA/EM,2BAA2B;2CAA3B,2BAA2B;CAgFvC"}
|
|
@@ -1,24 +1,32 @@
|
|
|
1
1
|
import { ChangeDetectionStrategy, Component, computed, inject } from '@angular/core';
|
|
2
2
|
import { A11yAuditService } from '../panels/a11y/a11y-audit.service.js';
|
|
3
|
+
import { resolveA11yThresholds } from '../panels/a11y/a11y-thresholds.js';
|
|
3
4
|
import { PrismNavigationService } from '../services/prism-navigation.service.js';
|
|
5
|
+
import { PrismBadgeComponent } from '../shared/prism-badge.component.js';
|
|
6
|
+
import { PRISM_CONFIG, PRISM_MANIFEST } from '../tokens/prism-tokens.js';
|
|
7
|
+
import { headMetrics } from './head-metrics.js';
|
|
8
|
+
import { pipeFacts } from './pipe-facts.js';
|
|
4
9
|
import { PrismHeadGaugeComponent } from './prism-head-gauge.component.js';
|
|
5
10
|
import { PrismHeadInfoComponent } from './prism-head-info.component.js';
|
|
11
|
+
import { serviceFacts } from './service-facts.js';
|
|
6
12
|
import * as i0 from "@angular/core";
|
|
7
13
|
const _c0 = [[["", "headEnd", ""]]];
|
|
8
14
|
const _c1 = ["[headEnd]"];
|
|
9
15
|
const _c2 = () => [];
|
|
10
16
|
function PrismComponentHeadComponent_Conditional_0_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
11
|
-
i0.ɵɵ
|
|
12
|
-
i0.ɵɵelement(1, "span", 8);
|
|
13
|
-
i0.ɵɵtext(2);
|
|
14
|
-
i0.ɵɵelementEnd();
|
|
17
|
+
i0.ɵɵelement(0, "prism-badge", 8);
|
|
15
18
|
} if (rf & 2) {
|
|
16
19
|
const badge_r1 = ctx;
|
|
17
20
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
18
|
-
i0.ɵɵ
|
|
21
|
+
i0.ɵɵclassProp("comp-status--wip", ctx_r1.status() === "wip");
|
|
22
|
+
i0.ɵɵproperty("tone", badge_r1.tone)("label", badge_r1.label);
|
|
19
23
|
i0.ɵɵattribute("title", badge_r1.tooltip);
|
|
20
|
-
|
|
21
|
-
|
|
24
|
+
} }
|
|
25
|
+
function PrismComponentHeadComponent_Conditional_0_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
26
|
+
i0.ɵɵelement(0, "prism-head-gauge", 5);
|
|
27
|
+
} if (rf & 2) {
|
|
28
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
29
|
+
i0.ɵɵproperty("metrics", ctx_r1.metrics());
|
|
22
30
|
} }
|
|
23
31
|
function PrismComponentHeadComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
24
32
|
i0.ɵɵelementStart(0, "section", 0)(1, "span", 1);
|
|
@@ -28,54 +36,82 @@ function PrismComponentHeadComponent_Conditional_0_Template(rf, ctx) { if (rf &
|
|
|
28
36
|
i0.ɵɵtext(4);
|
|
29
37
|
i0.ɵɵelementEnd();
|
|
30
38
|
i0.ɵɵelement(5, "prism-head-info", 3);
|
|
31
|
-
i0.ɵɵconditionalCreate(6, PrismComponentHeadComponent_Conditional_0_Conditional_6_Template,
|
|
32
|
-
i0.ɵɵ
|
|
39
|
+
i0.ɵɵconditionalCreate(6, PrismComponentHeadComponent_Conditional_0_Conditional_6_Template, 1, 5, "prism-badge", 4);
|
|
40
|
+
i0.ɵɵconditionalCreate(7, PrismComponentHeadComponent_Conditional_0_Conditional_7_Template, 1, 1, "prism-head-gauge", 5);
|
|
41
|
+
i0.ɵɵelement(8, "span", 6);
|
|
33
42
|
i0.ɵɵelementStart(9, "span", 7);
|
|
34
43
|
i0.ɵɵprojection(10);
|
|
35
44
|
i0.ɵɵelementEnd()();
|
|
36
45
|
} if (rf & 2) {
|
|
37
|
-
let
|
|
38
|
-
const
|
|
46
|
+
let tmp_12_0;
|
|
47
|
+
const s_r3 = ctx;
|
|
39
48
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
40
49
|
i0.ɵɵadvance(2);
|
|
41
50
|
i0.ɵɵtextInterpolate(ctx_r1.category());
|
|
42
51
|
i0.ɵɵadvance(2);
|
|
43
|
-
i0.ɵɵtextInterpolate(
|
|
52
|
+
i0.ɵɵtextInterpolate(s_r3.showcaseConfig.title);
|
|
44
53
|
i0.ɵɵadvance();
|
|
45
|
-
i0.ɵɵproperty("selector",
|
|
54
|
+
i0.ɵɵproperty("selector", ctx_r1.selector())("code", ctx_r1.code())("className", s_r3.className)("description", s_r3.showcaseConfig.description)("tags", s_r3.showcaseConfig.tags ?? i0.ɵɵpureFunction0(12, _c2))("variantCount", ctx_r1.variantCount())("stateCount", ctx_r1.stateCount())("facts", ctx_r1.facts());
|
|
46
55
|
i0.ɵɵadvance();
|
|
47
|
-
i0.ɵɵconditional((
|
|
48
|
-
i0.ɵɵadvance(
|
|
49
|
-
i0.ɵɵ
|
|
56
|
+
i0.ɵɵconditional((tmp_12_0 = ctx_r1.statusBadge()) ? 6 : -1, tmp_12_0);
|
|
57
|
+
i0.ɵɵadvance();
|
|
58
|
+
i0.ɵɵconditional(ctx_r1.comp() ? 7 : -1);
|
|
50
59
|
} }
|
|
51
60
|
const STATUS_BADGES = {
|
|
52
61
|
stable: {
|
|
53
62
|
label: 'Stable',
|
|
54
|
-
tooltip: 'Migrated and production-ready'
|
|
63
|
+
tooltip: 'Migrated and production-ready',
|
|
64
|
+
tone: 'success'
|
|
55
65
|
},
|
|
56
66
|
beta: {
|
|
57
67
|
label: 'Beta',
|
|
58
|
-
tooltip: 'Beta: API may change'
|
|
68
|
+
tooltip: 'Beta: API may change',
|
|
69
|
+
tone: 'warn'
|
|
59
70
|
},
|
|
60
71
|
wip: {
|
|
61
72
|
label: 'Work in progress',
|
|
62
|
-
tooltip: 'Migration in progress'
|
|
73
|
+
tooltip: 'Migration in progress',
|
|
74
|
+
tone: 'warn'
|
|
63
75
|
},
|
|
64
76
|
deprecated: {
|
|
65
77
|
label: 'Deprecated',
|
|
66
|
-
tooltip: 'Deprecated / Legacy. Do not use in new code'
|
|
78
|
+
tooltip: 'Deprecated / Legacy. Do not use in new code',
|
|
79
|
+
tone: 'danger'
|
|
67
80
|
}
|
|
68
81
|
};
|
|
69
82
|
export class PrismComponentHeadComponent {
|
|
70
83
|
navigationService = inject(PrismNavigationService);
|
|
71
84
|
auditService = inject(A11yAuditService);
|
|
85
|
+
manifest = inject(PRISM_MANIFEST);
|
|
86
|
+
config = inject(PRISM_CONFIG);
|
|
72
87
|
comp = computed(() => this.navigationService.activeComponent(), /* @ts-ignore */
|
|
73
88
|
...(ngDevMode ? [{ debugName: "comp" }] : /* istanbul ignore next */ []));
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
}
|
|
89
|
+
service = computed(() => this.navigationService.activeService(), /* @ts-ignore */
|
|
90
|
+
...(ngDevMode ? [{ debugName: "service" }] : /* istanbul ignore next */ []));
|
|
91
|
+
pipe = computed(() => this.navigationService.activePipe(), /* @ts-ignore */
|
|
92
|
+
...(ngDevMode ? [{ debugName: "pipe" }] : /* istanbul ignore next */ []));
|
|
93
|
+
/** What the head introduces: the active component or, on a service or pipe page, the service or the pipe. */
|
|
94
|
+
subject = computed(() => this.comp()?.meta ?? this.service()?.meta ?? this.pipe()?.meta ?? null, /* @ts-ignore */
|
|
95
|
+
...(ngDevMode ? [{ debugName: "subject" }] : /* istanbul ignore next */ []));
|
|
96
|
+
category = computed(() => this.subject()?.showcaseConfig.category ?? 'Uncategorized', /* @ts-ignore */
|
|
78
97
|
...(ngDevMode ? [{ debugName: "category" }] : /* istanbul ignore next */ []));
|
|
98
|
+
/** The selector of a component. A service or a pipe has none. */
|
|
99
|
+
selector = computed(() => this.comp()?.meta.componentMeta.selector, /* @ts-ignore */
|
|
100
|
+
...(ngDevMode ? [{ debugName: "selector" }] : /* istanbul ignore next */ []));
|
|
101
|
+
/** A pipe is used in a template as `| name`, so that is what its code block shows. */
|
|
102
|
+
code = computed(() => {
|
|
103
|
+
const p = this.pipe();
|
|
104
|
+
return p ? `| ${p.meta.pipeName}` : undefined;
|
|
105
|
+
}, /* @ts-ignore */
|
|
106
|
+
...(ngDevMode ? [{ debugName: "code" }] : /* istanbul ignore next */ []));
|
|
107
|
+
facts = computed(() => {
|
|
108
|
+
const s = this.service();
|
|
109
|
+
if (s)
|
|
110
|
+
return serviceFacts(s.meta.provision, s.meta.importPath);
|
|
111
|
+
const p = this.pipe();
|
|
112
|
+
return p ? pipeFacts(p.meta.pure, p.meta.importPath) : [];
|
|
113
|
+
}, /* @ts-ignore */
|
|
114
|
+
...(ngDevMode ? [{ debugName: "facts" }] : /* istanbul ignore next */ []));
|
|
79
115
|
variantCount = computed(() => {
|
|
80
116
|
const c = this.comp();
|
|
81
117
|
return c?.meta.showcaseConfig.variants?.length ?? 0;
|
|
@@ -86,81 +122,29 @@ export class PrismComponentHeadComponent {
|
|
|
86
122
|
return c?.meta.showcaseConfig.states?.length ?? 0;
|
|
87
123
|
}, /* @ts-ignore */
|
|
88
124
|
...(ngDevMode ? [{ debugName: "stateCount" }] : /* istanbul ignore next */ []));
|
|
89
|
-
status = computed(() => this.
|
|
125
|
+
status = computed(() => this.subject()?.showcaseConfig.status, /* @ts-ignore */
|
|
90
126
|
...(ngDevMode ? [{ debugName: "status" }] : /* istanbul ignore next */ []));
|
|
91
127
|
statusBadge = computed(() => {
|
|
92
128
|
const s = this.status();
|
|
93
129
|
return s ? STATUS_BADGES[s] : null;
|
|
94
130
|
}, /* @ts-ignore */
|
|
95
131
|
...(ngDevMode ? [{ debugName: "statusBadge" }] : /* istanbul ignore next */ []));
|
|
96
|
-
coveragePercent = computed(() => {
|
|
97
|
-
const meta = this.componentMeta();
|
|
98
|
-
const coverage = meta?.['coverage'];
|
|
99
|
-
if (coverage?.['found'] && typeof coverage['score'] === 'number')
|
|
100
|
-
return coverage['score'];
|
|
101
|
-
return null;
|
|
102
|
-
}, /* @ts-ignore */
|
|
103
|
-
...(ngDevMode ? [{ debugName: "coveragePercent" }] : /* istanbul ignore next */ []));
|
|
104
|
-
/*
|
|
105
|
-
* No bundle metric here. Reading `meta.perf.bundle.gzipKb`/`.sizeKb` finds
|
|
106
|
-
* nothing: `@ng-prism/plugin-perf` stores `sourceSize` and `gzipEstimate`
|
|
107
|
-
* (see `perf.types.ts`), so the tile would read `Bundle —` everywhere.
|
|
108
|
-
*
|
|
109
|
-
* Before wiring it to the real keys, settle with the perf plugin whether
|
|
110
|
-
* `gzipEstimate` is bytes or kilobytes.
|
|
111
|
-
*/
|
|
112
|
-
a11yScore = computed(() => {
|
|
113
|
-
return this.auditService.scoreResult()?.score ?? null;
|
|
114
|
-
}, /* @ts-ignore */
|
|
115
|
-
...(ngDevMode ? [{ debugName: "a11yScore" }] : /* istanbul ignore next */ []));
|
|
116
|
-
/**
|
|
117
|
-
* The visual regression headline, as the plugin already derived it.
|
|
118
|
-
*
|
|
119
|
-
* Read whole rather than recomputed: the colour follows the plugin's status
|
|
120
|
-
* semantics (red for any changed variant, amber for ones that could not be
|
|
121
|
-
* compared), and duplicating that rule here would mean the stat and the
|
|
122
|
-
* plugin's own panel could disagree about the same component.
|
|
123
|
-
*/
|
|
124
|
-
vrtStat = computed(() => {
|
|
125
|
-
const vrt = this.componentMeta()?.['visualRegression'];
|
|
126
|
-
if (!vrt?.found || !vrt.summary)
|
|
127
|
-
return null;
|
|
128
|
-
const { value, variant } = vrt.summary;
|
|
129
|
-
return variant === 'ok' || variant === 'warn' || variant === 'danger' ? { value, variant } : null;
|
|
130
|
-
}, /* @ts-ignore */
|
|
131
|
-
...(ngDevMode ? [{ debugName: "vrtStat" }] : /* istanbul ignore next */ []));
|
|
132
132
|
/**
|
|
133
|
-
* The
|
|
134
|
-
*
|
|
135
|
-
*
|
|
136
|
-
* this sequence is what makes the chip show a stable metric rather than
|
|
137
|
-
* flickering between two equally bad ones.
|
|
133
|
+
* The configured a11y thresholds, resolved the way the panel host and the
|
|
134
|
+
* header badge resolve them, so the gauge grades the live audit on the
|
|
135
|
+
* same scale as the tab and the sidebar.
|
|
138
136
|
*/
|
|
139
|
-
|
|
140
|
-
const
|
|
141
|
-
|
|
142
|
-
const vrt = this.vrtStat();
|
|
143
|
-
return [
|
|
144
|
-
{
|
|
145
|
-
id: 'coverage',
|
|
146
|
-
label: 'Coverage',
|
|
147
|
-
value: coverage === null ? '—' : `${coverage}%`,
|
|
148
|
-
variant: coverage === null ? 'none' : coverage >= 90 ? 'ok' : 'warn'
|
|
149
|
-
},
|
|
150
|
-
{
|
|
151
|
-
id: 'a11y',
|
|
152
|
-
label: 'A11y score',
|
|
153
|
-
value: a11y === null ? '—' : String(a11y),
|
|
154
|
-
variant: a11y === null ? 'none' : a11y >= 90 ? 'ok' : 'warn'
|
|
155
|
-
},
|
|
156
|
-
{
|
|
157
|
-
id: 'vrt',
|
|
158
|
-
label: 'VRT diff',
|
|
159
|
-
value: vrt === null ? '—' : vrt.value,
|
|
160
|
-
variant: vrt === null ? 'none' : vrt.variant
|
|
161
|
-
}
|
|
162
|
-
];
|
|
137
|
+
a11yThresholds = computed(() => {
|
|
138
|
+
const meta = this.manifest.meta?.['a11y'];
|
|
139
|
+
return resolveA11yThresholds({ ...meta?.thresholds, ...this.config.a11y?.thresholds });
|
|
163
140
|
}, /* @ts-ignore */
|
|
141
|
+
...(ngDevMode ? [{ debugName: "a11yThresholds" }] : /* istanbul ignore next */ []));
|
|
142
|
+
/** The full metric list for the gauge, in source order. */
|
|
143
|
+
metrics = computed(() => headMetrics({
|
|
144
|
+
meta: this.componentMeta(),
|
|
145
|
+
a11y: this.auditService.scoreResult(),
|
|
146
|
+
a11yThresholds: this.a11yThresholds()
|
|
147
|
+
}), /* @ts-ignore */
|
|
164
148
|
...(ngDevMode ? [{ debugName: "metrics" }] : /* istanbul ignore next */ []));
|
|
165
149
|
componentMeta = computed(() => {
|
|
166
150
|
const c = this.comp();
|
|
@@ -169,16 +153,16 @@ export class PrismComponentHeadComponent {
|
|
|
169
153
|
}, /* @ts-ignore */
|
|
170
154
|
...(ngDevMode ? [{ debugName: "componentMeta" }] : /* istanbul ignore next */ []));
|
|
171
155
|
static ɵfac = function PrismComponentHeadComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || PrismComponentHeadComponent)(); };
|
|
172
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PrismComponentHeadComponent, selectors: [["prism-component-head"]], ngContentSelectors: _c1, decls: 1, vars: 1, consts: [[1, "comp-head"], [1, "comp-crumb"], [1, "comp-title"], [3, "selector", "description", "tags", "variantCount", "stateCount"], [
|
|
156
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PrismComponentHeadComponent, selectors: [["prism-component-head"]], ngContentSelectors: _c1, decls: 1, vars: 1, consts: [[1, "comp-head"], [1, "comp-crumb"], [1, "comp-title"], [3, "selector", "code", "className", "description", "tags", "variantCount", "stateCount", "facts"], ["dot", "", 1, "comp-status", 3, "comp-status--wip", "tone", "label"], [3, "metrics"], [1, "comp-spacer"], [1, "comp-head-end"], ["dot", "", 1, "comp-status", 3, "tone", "label"]], template: function PrismComponentHeadComponent_Template(rf, ctx) { if (rf & 1) {
|
|
173
157
|
i0.ɵɵprojectionDef(_c0);
|
|
174
|
-
i0.ɵɵconditionalCreate(0, PrismComponentHeadComponent_Conditional_0_Template, 11,
|
|
158
|
+
i0.ɵɵconditionalCreate(0, PrismComponentHeadComponent_Conditional_0_Template, 11, 13, "section", 0);
|
|
175
159
|
} if (rf & 2) {
|
|
176
160
|
let tmp_0_0;
|
|
177
|
-
i0.ɵɵconditional((tmp_0_0 = ctx.
|
|
178
|
-
} }, dependencies: [PrismHeadInfoComponent, PrismHeadGaugeComponent], styles: ["[_nghost-%COMP%] {\n display: block;\n flex-shrink: 0;\n}\n\n.comp-head[_ngcontent-%COMP%] {\n display: flex;\n gap: var(--%NS%sp-3);\n align-items: center;\n height: var(--%NS%band-head);\n padding: 0 var(--%NS%sp-5);\n background: var(--%NS%prism-bg);\n border-bottom: 1px solid var(--%NS%prism-border);\n}\n\n\n\n\n\n\n\n.comp-crumb[_ngcontent-%COMP%] {\n flex: 0 8 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: var(--%NS%fs-xs);\n color: var(--%NS%prism-text-
|
|
161
|
+
i0.ɵɵconditional((tmp_0_0 = ctx.subject()) ? 0 : -1, tmp_0_0);
|
|
162
|
+
} }, dependencies: [PrismHeadInfoComponent, PrismHeadGaugeComponent, PrismBadgeComponent], styles: ["[_nghost-%COMP%] {\n display: block;\n flex-shrink: 0;\n}\n\n.comp-head[_ngcontent-%COMP%] {\n display: flex;\n gap: var(--%NS%sp-3);\n align-items: center;\n height: var(--%NS%band-head);\n padding: 0 var(--%NS%sp-5);\n background: var(--%NS%prism-bg);\n border-bottom: 1px solid var(--%NS%prism-border);\n}\n\n\n\n\n\n\n\n.comp-crumb[_ngcontent-%COMP%] {\n flex: 0 8 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: var(--%NS%fs-xs);\n color: var(--%NS%prism-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.06em;\n white-space: nowrap;\n}\n\n.comp-crumb[_ngcontent-%COMP%]::after {\n content: ' /';\n}\n\n.comp-title[_ngcontent-%COMP%] {\n flex: 0 1 auto;\n min-width: 0;\n margin: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: var(--%NS%fs-xl);\n font-weight: 600;\n color: var(--%NS%prism-text);\n letter-spacing: -0.015em;\n white-space: nowrap;\n}\n\n.comp-spacer[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.comp-status[_ngcontent-%COMP%], \nprism-head-info[_ngcontent-%COMP%], \nprism-head-gauge[_ngcontent-%COMP%], \n.comp-head-end[_ngcontent-%COMP%] {\n flex: none;\n}\n\n\n\n\n.comp-head-end[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n}\n\n.comp-head-end[_ngcontent-%COMP%]:empty {\n display: none;\n}\n\n\n.comp-status--wip[_ngcontent-%COMP%] {\n --%NS%prism-badge-dot-fill: transparent;\n}"] });
|
|
179
163
|
}
|
|
180
164
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PrismComponentHeadComponent, [{
|
|
181
165
|
type: Component,
|
|
182
|
-
args: [{ selector: 'prism-component-head', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [PrismHeadInfoComponent, PrismHeadGaugeComponent], template: "@if (
|
|
166
|
+
args: [{ selector: 'prism-component-head', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [PrismHeadInfoComponent, PrismHeadGaugeComponent, PrismBadgeComponent], template: "@if (subject(); as s) {\n <section class=\"comp-head\">\n <span class=\"comp-crumb\">{{ category() }}</span>\n <h1 class=\"comp-title\">{{ s.showcaseConfig.title }}</h1>\n\n <prism-head-info\n [selector]=\"selector()\"\n [code]=\"code()\"\n [className]=\"s.className\"\n [description]=\"s.showcaseConfig.description\"\n [tags]=\"s.showcaseConfig.tags ?? []\"\n [variantCount]=\"variantCount()\"\n [stateCount]=\"stateCount()\"\n [facts]=\"facts()\" />\n\n @if (statusBadge(); as badge) {\n <prism-badge\n class=\"comp-status\"\n [class.comp-status--wip]=\"status() === 'wip'\"\n dot\n [tone]=\"badge.tone\"\n [label]=\"badge.label\"\n [attr.title]=\"badge.tooltip\" />\n }\n\n @if (comp()) {\n <prism-head-gauge [metrics]=\"metrics()\" />\n }\n\n <span class=\"comp-spacer\"></span>\n\n <span class=\"comp-head-end\"><ng-content select=\"[headEnd]\" /></span>\n </section>\n}\n", styles: [":host {\n display: block;\n flex-shrink: 0;\n}\n\n.comp-head {\n display: flex;\n gap: var(--sp-3);\n align-items: center;\n height: var(--band-head);\n padding: 0 var(--sp-5);\n background: var(--prism-bg);\n border-bottom: 1px solid var(--prism-border);\n}\n\n/* The text yields, the controls never do. A long category and a long title\n would otherwise push the gauge out of a fixed-height row whose ancestors\n clip, making the measurement unreachable when you most want to read it,\n and costing the gauge the fixed position it was designed around. So the\n title truncates with an ellipsis and the chip stays at the right edge. The crumb gives way\n first, being the least important text in the row. */\n.comp-crumb {\n flex: 0 8 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: var(--fs-xs);\n color: var(--prism-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.06em;\n white-space: nowrap;\n}\n\n.comp-crumb::after {\n content: ' /';\n}\n\n.comp-title {\n flex: 0 1 auto;\n min-width: 0;\n margin: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: var(--fs-xl);\n font-weight: 600;\n color: var(--prism-text);\n letter-spacing: -0.015em;\n white-space: nowrap;\n}\n\n.comp-spacer {\n flex: 1;\n}\n\n.comp-status,\nprism-head-info,\nprism-head-gauge,\n.comp-head-end {\n flex: none;\n}\n\n/* Wraps the slot rather than styling the projected element, which this\n stylesheet cannot reach. :empty keeps the row's trailing gap from\n appearing when nothing is projected; comment anchors do not count. */\n.comp-head-end {\n display: inline-flex;\n align-items: center;\n}\n\n.comp-head-end:empty {\n display: none;\n}\n\n/* Work in progress keeps its ring: the one status without a settled state. */\n.comp-status--wip {\n --prism-badge-dot-fill: transparent;\n}\n"] }]
|
|
183
167
|
}], null, null); })();
|
|
184
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismComponentHeadComponent, { className: "PrismComponentHeadComponent", filePath: "app/component-head/prism-component-head.component.ts", lineNumber:
|
|
168
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismComponentHeadComponent, { className: "PrismComponentHeadComponent", filePath: "app/component-head/prism-component-head.component.ts", lineNumber: 53 }); })();
|
|
@@ -1,22 +1,18 @@
|
|
|
1
1
|
import { type HeadMetric } from './head-metrics.js';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
/**
|
|
4
|
-
* Measurement disclosure for the component head.
|
|
4
|
+
* Measurement disclosure for the component head, right behind the status.
|
|
5
5
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* readout is one click away and never disappears.
|
|
11
|
-
*
|
|
12
|
-
* It knows no individual metric. The list arrives already resolved, in the
|
|
13
|
-
* same shape `decorateItem` produces for the sidebar, which is less code than
|
|
14
|
-
* the five @if branches it replaces and keeps the colour rule in one place.
|
|
6
|
+
* One soft badge in the tone of the worst metric ("VRT diff 10.26%"), or of the
|
|
7
|
+
* first measured one when everything is fine. How many metrics were measured
|
|
8
|
+
* is in the tooltip, not on the chip. The readout behind it lists every metric
|
|
9
|
+
* with its threshold.
|
|
15
10
|
*/
|
|
16
11
|
export declare class PrismHeadGaugeComponent {
|
|
17
12
|
readonly metrics: import("@angular/core").InputSignal<readonly HeadMetric[]>;
|
|
18
|
-
protected readonly
|
|
19
|
-
protected readonly
|
|
13
|
+
protected readonly chip: import("@angular/core").Signal<import("./head-metrics.js").GaugeChip | null>;
|
|
14
|
+
protected readonly tone: import("@angular/core").Signal<import("../shared/badge.types.js").BadgeTone>;
|
|
15
|
+
protected readonly title: import("@angular/core").Signal<string>;
|
|
20
16
|
static ɵfac: i0.ɵɵFactoryDeclaration<PrismHeadGaugeComponent, never>;
|
|
21
17
|
static ɵcmp: i0.ɵɵComponentDeclaration<PrismHeadGaugeComponent, "prism-head-gauge", never, { "metrics": { "alias": "metrics"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
22
18
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prism-head-gauge.component.d.ts","sourceRoot":"","sources":["../../../src/app/component-head/prism-head-gauge.component.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"prism-head-gauge.component.d.ts","sourceRoot":"","sources":["../../../src/app/component-head/prism-head-gauge.component.ts"],"names":[],"mappings":"AAGA,OAAO,EAAa,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;;AAG/D;;;;;;;GAOG;AACH,qBAQa,uBAAuB;IAChC,QAAQ,CAAC,OAAO,6DAA2C;IAC3D,SAAS,CAAC,QAAQ,CAAC,IAAI,+EAA6C;IACpE,SAAS,CAAC,QAAQ,CAAC,IAAI,+EAIpB;IACH,SAAS,CAAC,QAAQ,CAAC,KAAK,yCAKrB;yCAbM,uBAAuB;2CAAvB,uBAAuB;CAcnC"}
|