@ng-prism/core 22.5.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 +13 -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 +25 -3
- package/dist/app/canvas/prism-canvas-toolbar.component.d.ts.map +1 -1
- package/dist/app/canvas/prism-canvas-toolbar.component.js +154 -89
- 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/canvas/state-chips.d.ts +50 -0
- package/dist/app/canvas/state-chips.d.ts.map +1 -0
- package/dist/app/canvas/state-chips.js +40 -0
- 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 +20 -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 +85 -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 +14 -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 +84 -20
- 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/directives/resize-value.d.ts +1 -1
- package/dist/app/directives/resize-value.js +1 -1
- package/dist/app/discovery-manifest.d.ts +2 -2
- package/dist/app/discovery-manifest.d.ts.map +1 -1
- package/dist/app/discovery-manifest.js +15 -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 +19 -0
- package/dist/app/overview/open-in-playground.d.ts.map +1 -0
- package/dist/app/overview/open-in-playground.js +25 -0
- package/dist/app/overview/overview-matrix.d.ts +85 -0
- package/dist/app/overview/overview-matrix.d.ts.map +1 -0
- package/dist/app/overview/overview-matrix.js +98 -0
- package/dist/app/overview/overview-visibility.d.ts +10 -2
- package/dist/app/overview/overview-visibility.d.ts.map +1 -1
- package/dist/app/overview/overview-visibility.js +14 -3
- package/dist/app/overview/prism-overview-cell.component.d.ts +27 -2
- package/dist/app/overview/prism-overview-cell.component.d.ts.map +1 -1
- package/dist/app/overview/prism-overview-cell.component.js +145 -28
- package/dist/app/overview/prism-overview-matrix.component.d.ts +29 -0
- package/dist/app/overview/prism-overview-matrix.component.d.ts.map +1 -0
- package/dist/app/overview/prism-overview-matrix.component.js +155 -0
- package/dist/app/overview/prism-overview.component.d.ts +4 -0
- package/dist/app/overview/prism-overview.component.d.ts.map +1 -1
- package/dist/app/overview/prism-overview.component.js +37 -14
- package/dist/app/page-renderer/prism-page-renderer.component.js +2 -2
- package/dist/app/panels/a11y/a11y-core.plugin.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-core.plugin.js +0 -1
- 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/controls-plugin.d.ts.map +1 -1
- package/dist/app/panels/controls/controls-plugin.js +1 -2
- 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/events-plugin.d.ts.map +1 -1
- package/dist/app/panels/events/events-plugin.js +1 -2
- 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/pseudo/pseudo-state-marker.d.ts +32 -10
- package/dist/app/pseudo/pseudo-state-marker.d.ts.map +1 -1
- package/dist/app/pseudo/pseudo-state-marker.js +83 -67
- package/dist/app/pseudo/pseudo-targets.d.ts +11 -0
- package/dist/app/pseudo/pseudo-targets.d.ts.map +1 -0
- package/dist/app/pseudo/pseudo-targets.js +46 -0
- package/dist/app/pseudo/state-fit.d.ts +28 -0
- package/dist/app/pseudo/state-fit.d.ts.map +1 -0
- package/dist/app/pseudo/state-fit.js +97 -0
- 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 +28 -0
- package/dist/app/renderer/input-bindings.d.ts.map +1 -0
- package/dist/app/renderer/input-bindings.js +42 -0
- package/dist/app/renderer/known-inputs.d.ts +8 -1
- package/dist/app/renderer/known-inputs.d.ts.map +1 -1
- package/dist/app/renderer/known-inputs.js +13 -5
- package/dist/app/renderer/prism-renderer.component.d.ts +18 -4
- package/dist/app/renderer/prism-renderer.component.d.ts.map +1 -1
- package/dist/app/renderer/prism-renderer.component.js +78 -44
- package/dist/app/renderer/projectable-content.d.ts +8 -1
- package/dist/app/renderer/projectable-content.d.ts.map +1 -1
- package/dist/app/renderer/projectable-content.js +40 -29
- package/dist/app/renderer/rendered-key.d.ts +20 -6
- package/dist/app/renderer/rendered-key.d.ts.map +1 -1
- package/dist/app/renderer/rendered-key.js +25 -8
- 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 +138 -81
- 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-pseudo-state.service.d.ts +59 -14
- package/dist/app/services/prism-pseudo-state.service.d.ts.map +1 -1
- package/dist/app/services/prism-pseudo-state.service.js +86 -29
- package/dist/app/services/prism-renderer.service.d.ts +23 -0
- package/dist/app/services/prism-renderer.service.d.ts.map +1 -1
- package/dist/app/services/prism-renderer.service.js +77 -8
- 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 +81 -12
- 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 +122 -66
- 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 +9 -0
- package/dist/builder/config-loader/deprecated-options.d.ts.map +1 -0
- package/dist/builder/config-loader/deprecated-options.js +34 -0
- 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 +137 -65
- 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 +229 -58
- 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/entry-point-discovery.d.ts +5 -0
- package/dist/builder/scanner/entry-point-discovery.d.ts.map +1 -1
- package/dist/builder/scanner/entry-point-discovery.js +14 -0
- package/dist/builder/scanner/entry-point.scanner.d.ts +3 -1
- package/dist/builder/scanner/entry-point.scanner.d.ts.map +1 -1
- package/dist/builder/scanner/entry-point.scanner.js +7 -6
- 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 +73 -17
- 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/pseudo-states.d.ts +1 -0
- package/dist/builder/scanner/pseudo-states.d.ts.map +1 -1
- package/dist/builder/scanner/pseudo-states.js +1 -1
- package/dist/builder/scanner/scanner.d.ts +27 -3
- package/dist/builder/scanner/scanner.d.ts.map +1 -1
- package/dist/builder/scanner/scanner.js +68 -24
- 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 +123 -10
- package/dist/builder/scanner/showcase-states.d.ts +17 -0
- package/dist/builder/scanner/showcase-states.d.ts.map +1 -0
- package/dist/builder/scanner/showcase-states.js +58 -0
- package/dist/builder/scanner/source-file-cache.d.ts +26 -0
- package/dist/builder/scanner/source-file-cache.d.ts.map +1 -0
- package/dist/builder/scanner/source-file-cache.js +60 -0
- 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 +71 -18
- package/dist/decorator/index.d.ts +1 -1
- package/dist/decorator/index.d.ts.map +1 -1
- package/dist/decorator/showcase.types.d.ts +102 -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 +184 -8
- 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
- package/src/builder/build/schema.json +6 -6
- package/src/builder/serve/schema.json +6 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prism-overview-cell.component.d.ts","sourceRoot":"","sources":["../../../src/app/overview/prism-overview-cell.component.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"prism-overview-cell.component.d.ts","sourceRoot":"","sources":["../../../src/app/overview/prism-overview-cell.component.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAKrE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;;AASvD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAsBa,0BAA0B;IACnC,QAAQ,CAAC,SAAS,wDAAsC;IACxD,QAAQ,CAAC,KAAK,8CAA4B;IAC1C,gGAAgG;IAChG,QAAQ,CAAC,KAAK,qDAA8B;IAC5C,mFAAmF;IACnF,QAAQ,CAAC,IAAI,0DAAsC;IACnD,6FAA6F;IAC7F,QAAQ,CAAC,SAAS,qDAAsB;IAExC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoB;IAC7C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAsB;IACjD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgC;IACzD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6B;IACpD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAkD;IAC/E,OAAO,CAAC,QAAQ,CAAC,MAAM,CAEpB;IAEH,yEAAyE;IACzE,SAAS,CAAC,QAAQ,CAAC,EAAE,yFAAwF;IAE7G,SAAS,CAAC,QAAQ,CAAC,OAAO,yCAUvB;IAEH,8EAA8E;IAC9E,SAAS,CAAC,QAAQ,CAAC,WAAW,wDAA+B;IAE7D,SAAS,CAAC,QAAQ,CAAC,KAAK,yCAOrB;IAEH,sDAAsD;IACtD,SAAS,CAAC,QAAQ,CAAC,OAAO,0CAIvB;IAEH,SAAS,CAAC,QAAQ,CAAC,SAAS,0CAKzB;;IAuBH,SAAS,CAAC,IAAI,IAAI,IAAI;IAItB,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAkB/C,OAAO,CAAC,KAAK;IA0Eb,OAAO,CAAC,KAAK;yCAjLJ,0BAA0B;2CAA1B,0BAA0B;CAqLtC"}
|
|
@@ -1,12 +1,30 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, computed, DestroyRef, effect, inject, Injector, input, untracked, viewChild, ViewContainerRef } from '@angular/core';
|
|
1
|
+
import { ChangeDetectionStrategy, Component, computed, DestroyRef, effect, inject, Injector, input, output, reflectComponentType, signal, untracked, viewChild, ViewContainerRef } from '@angular/core';
|
|
2
|
+
import { PRISM_VARIANT_INPUT } from '../../shared/composition.js';
|
|
2
3
|
import { resolveVariantBg } from '../../shared/variant-bg.js';
|
|
3
4
|
import { CANVAS_BG_STYLES } from '../canvas/canvas-bg.styles.js';
|
|
4
|
-
import {
|
|
5
|
+
import { activeCase, renderTypeFor } from '../renderer/composition.js';
|
|
6
|
+
import { buildInputBindings } from '../renderer/input-bindings.js';
|
|
5
7
|
import { parseContentToNodes } from '../renderer/projectable-content.js';
|
|
8
|
+
import { PrismPanelService } from '../services/prism-panel.service.js';
|
|
6
9
|
import { PrismPseudoStateService } from '../services/prism-pseudo-state.service.js';
|
|
7
|
-
import { computeVariantState } from '../services/prism-renderer.service.js';
|
|
10
|
+
import { computeVariantState, PrismRendererService } from '../services/prism-renderer.service.js';
|
|
11
|
+
import { isPlaygroundCombination, openInPlayground, playgroundLabel } from './open-in-playground.js';
|
|
8
12
|
import * as i0 from "@angular/core";
|
|
9
13
|
const _c0 = ["outlet"];
|
|
14
|
+
function PrismOverviewCellComponent_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
15
|
+
i0.ɵɵdomElementStart(0, "span", 3);
|
|
16
|
+
i0.ɵɵtext(1, "\u2013");
|
|
17
|
+
i0.ɵɵdomElementEnd();
|
|
18
|
+
} }
|
|
19
|
+
function PrismOverviewCellComponent_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
20
|
+
i0.ɵɵdomElementStart(0, "span", 4);
|
|
21
|
+
i0.ɵɵtext(1);
|
|
22
|
+
i0.ɵɵdomElementEnd();
|
|
23
|
+
} if (rf & 2) {
|
|
24
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
25
|
+
i0.ɵɵadvance();
|
|
26
|
+
i0.ɵɵtextInterpolate(ctx_r0.caption());
|
|
27
|
+
} }
|
|
10
28
|
/**
|
|
11
29
|
* One frame of the contact sheet: a stage painting the variant's declared
|
|
12
30
|
* background, with the variant's own instance on it and a caption beneath.
|
|
@@ -22,14 +40,32 @@ const _c0 = ["outlet"];
|
|
|
22
40
|
* cell's own, so a hovered cell never hovers its neighbour. The tools menu's
|
|
23
41
|
* state toggle does not reach here: like every other control, it belongs to
|
|
24
42
|
* the Playground.
|
|
43
|
+
*
|
|
44
|
+
* A cell can combine its variant with one of the component's `states` (the
|
|
45
|
+
* matrix does). When the marker finds that the state does not fit the rendered
|
|
46
|
+
* component, or the variant opted out with `states: false`, the cell shows the
|
|
47
|
+
* a dash in place of the component, with the reason as its tooltip and in its
|
|
48
|
+
* label. Every cell, with or without a state, opens its exact combination in
|
|
49
|
+
* the Playground on click, Enter or Space, and the one the Playground shows is
|
|
50
|
+
* outlined.
|
|
25
51
|
*/
|
|
26
52
|
export class PrismOverviewCellComponent {
|
|
27
53
|
component = input.required(/* @ts-ignore */
|
|
28
54
|
...(ngDevMode ? [{ debugName: "component" }] : /* istanbul ignore next */ []));
|
|
29
55
|
index = input.required(/* @ts-ignore */
|
|
30
56
|
...(ngDevMode ? [{ debugName: "index" }] : /* istanbul ignore next */ []));
|
|
57
|
+
/** Position of the component state in `ShowcaseConfig.states`, `null` for the variant alone. */
|
|
58
|
+
state = input(null, /* @ts-ignore */
|
|
59
|
+
...(ngDevMode ? [{ debugName: "state" }] : /* istanbul ignore next */ []));
|
|
60
|
+
/** `matrix` leaves the caption and the grid span to the matrix around the cell. */
|
|
61
|
+
mode = input('sheet', /* @ts-ignore */
|
|
62
|
+
...(ngDevMode ? [{ debugName: "mode" }] : /* istanbul ignore next */ []));
|
|
63
|
+
/** Whether the state fits the rendered variant. Only emitted while `state` is not `null`. */
|
|
64
|
+
fitChange = output();
|
|
31
65
|
injector = inject(Injector);
|
|
32
66
|
destroyRef = inject(DestroyRef);
|
|
67
|
+
renderer = inject(PrismRendererService);
|
|
68
|
+
panels = inject(PrismPanelService);
|
|
33
69
|
pseudoMarker = inject(PrismPseudoStateService).createMarker();
|
|
34
70
|
outlet = viewChild.required('outlet', { ...(ngDevMode ? { debugName: "outlet" } : /* istanbul ignore next */ {}), read: ViewContainerRef });
|
|
35
71
|
/** Never null: `resolveVariantBg` falls back to `DEFAULT_VARIANT_BG`. */
|
|
@@ -46,32 +82,78 @@ export class PrismOverviewCellComponent {
|
|
|
46
82
|
return variant ? `${number} ${variant.name}` : number;
|
|
47
83
|
}, /* @ts-ignore */
|
|
48
84
|
...(ngDevMode ? [{ debugName: "caption" }] : /* istanbul ignore next */ []));
|
|
49
|
-
|
|
85
|
+
/** Why the state is not shown on this cell, `null` while the component is. */
|
|
86
|
+
unfitReason = signal(null, /* @ts-ignore */
|
|
87
|
+
...(ngDevMode ? [{ debugName: "unfitReason" }] : /* istanbul ignore next */ []));
|
|
88
|
+
label = computed(() => {
|
|
89
|
+
const config = this.component().meta.showcaseConfig;
|
|
90
|
+
const variant = config.variants?.[this.index()]?.name ?? this.caption();
|
|
91
|
+
const stateIndex = this.state();
|
|
92
|
+
const state = stateIndex === null ? undefined : config.states?.[stateIndex];
|
|
93
|
+
return playgroundLabel(variant, state?.name, this.unfitReason());
|
|
94
|
+
}, /* @ts-ignore */
|
|
95
|
+
...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
|
|
96
|
+
/** The combination the Playground shows right now. */
|
|
97
|
+
current = computed(() => {
|
|
98
|
+
const optedOut = this.component().meta.showcaseConfig.variants?.[this.index()]?.states === false;
|
|
99
|
+
return isPlaygroundCombination(this.renderer, this.index(), this.state(), optedOut);
|
|
100
|
+
}, /* @ts-ignore */
|
|
101
|
+
...(ngDevMode ? [{ debugName: "current" }] : /* istanbul ignore next */ []));
|
|
102
|
+
stretches = computed(() => {
|
|
50
103
|
const config = this.component().meta.showcaseConfig;
|
|
51
104
|
const variant = config.variants?.[this.index()];
|
|
52
105
|
return (variant?.canvasLayout ?? config.canvasLayout ?? 'fit') === 'stretch';
|
|
53
106
|
}, /* @ts-ignore */
|
|
54
|
-
...(ngDevMode ? [{ debugName: "
|
|
107
|
+
...(ngDevMode ? [{ debugName: "stretches" }] : /* istanbul ignore next */ []));
|
|
55
108
|
constructor() {
|
|
56
109
|
effect(() => {
|
|
57
110
|
const component = this.component();
|
|
58
111
|
const index = this.index();
|
|
59
|
-
|
|
112
|
+
const state = this.state();
|
|
113
|
+
untracked(() => {
|
|
114
|
+
const fit = this.mount(component, index, state);
|
|
115
|
+
// Outside `mount`'s try: a handler that throws is the parent's
|
|
116
|
+
// doing, not a variant that failed to render.
|
|
117
|
+
if (fit)
|
|
118
|
+
this.fitChange.emit(fit);
|
|
119
|
+
});
|
|
60
120
|
});
|
|
61
121
|
this.destroyRef.onDestroy(() => {
|
|
62
122
|
this.pseudoMarker.clear();
|
|
63
123
|
this.outlet().clear();
|
|
64
124
|
});
|
|
65
125
|
}
|
|
126
|
+
open() {
|
|
127
|
+
openInPlayground(this.renderer, this.panels, this.index(), this.state());
|
|
128
|
+
}
|
|
129
|
+
onKeydown(event) {
|
|
130
|
+
// Only for the cell itself: Enter and Space belong to a control inside the
|
|
131
|
+
// component while it has the focus.
|
|
132
|
+
if (event.target !== event.currentTarget || (event.key !== 'Enter' && event.key !== ' '))
|
|
133
|
+
return;
|
|
134
|
+
event.preventDefault();
|
|
135
|
+
this.open();
|
|
136
|
+
}
|
|
66
137
|
// The Playground lets a variant that throws on construction propagate: one
|
|
67
138
|
// broken instance, and the user navigates away from it. The Overview
|
|
68
139
|
// fans instantiation out from one instance to n, all mounted in the same
|
|
69
140
|
// change-detection pass. An uncaught throw here would abort the refresh of
|
|
70
141
|
// every cell after it, so one bad variant would take down the whole sheet
|
|
71
142
|
// instead of just its own cell. Hence: contain here, propagate there.
|
|
72
|
-
|
|
143
|
+
//
|
|
144
|
+
// Returns the fit of the state on the rendered variant, `null` when the cell
|
|
145
|
+
// has no state or the variant failed to render.
|
|
146
|
+
mount(component, index, stateIndex) {
|
|
147
|
+
this.unfitReason.set(null);
|
|
73
148
|
try {
|
|
74
149
|
this.outlet().clear();
|
|
150
|
+
const variant = component.meta.showcaseConfig.variants?.[index];
|
|
151
|
+
// The matrix gives such a variant one cell without a state, so this is
|
|
152
|
+
// not asked for today. Nothing to mount, and nothing to evaluate.
|
|
153
|
+
if (stateIndex !== null && variant?.states === false) {
|
|
154
|
+
this.pseudoMarker.clear();
|
|
155
|
+
return this.unfit('states: false');
|
|
156
|
+
}
|
|
75
157
|
// No `onUnknownInput` callback: the Playground already warns once per
|
|
76
158
|
// component, and repeating that warning per cell would say the same thing
|
|
77
159
|
// n times.
|
|
@@ -80,19 +162,35 @@ export class PrismOverviewCellComponent {
|
|
|
80
162
|
providers: component.meta.showcaseConfig.providers ?? [],
|
|
81
163
|
parent: this.injector
|
|
82
164
|
});
|
|
83
|
-
const
|
|
84
|
-
const
|
|
165
|
+
const composed = activeCase(component, index) !== null;
|
|
166
|
+
const type = renderTypeFor(component, index);
|
|
167
|
+
const projectableNodes = activeContent && !composed ? parseContentToNodes(activeContent, reflectComponentType(type)?.ngContentSelectors ?? []) : undefined;
|
|
168
|
+
const ref = this.outlet().createComponent(type, {
|
|
85
169
|
injector,
|
|
86
170
|
projectableNodes
|
|
87
171
|
});
|
|
88
|
-
|
|
172
|
+
if (composed)
|
|
173
|
+
ref.setInput(PRISM_VARIANT_INPUT, index);
|
|
174
|
+
const inputBindings = buildInputBindings(component, index);
|
|
89
175
|
for (const [key, value] of Object.entries(values)) {
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
176
|
+
const binding = inputBindings.get(key);
|
|
177
|
+
// None for an unknown input, and none for one the composition of the variant leaves unbound.
|
|
178
|
+
if (binding !== undefined)
|
|
179
|
+
ref.setInput(binding, value);
|
|
93
180
|
}
|
|
94
181
|
ref.changeDetectorRef.detectChanges();
|
|
95
|
-
|
|
182
|
+
const statePseudo = stateIndex === null ? null : (component.meta.showcaseConfig.states?.[stateIndex]?.pseudo ?? null);
|
|
183
|
+
this.pseudoMarker.apply(ref.location.nativeElement, variant?.pseudo, statePseudo);
|
|
184
|
+
const fit = this.pseudoMarker.applied()?.fit ?? null;
|
|
185
|
+
if (!fit || fit.fits)
|
|
186
|
+
return fit;
|
|
187
|
+
// The marker keeps a state that does not fit applied and forces nothing of
|
|
188
|
+
// it, the Playground wants that to show why. A cell has no use for the
|
|
189
|
+
// component then: it would be a picture of the variant under a label
|
|
190
|
+
// that says something else.
|
|
191
|
+
this.pseudoMarker.clear();
|
|
192
|
+
this.outlet().clear();
|
|
193
|
+
return this.unfit(fit.reason);
|
|
96
194
|
}
|
|
97
195
|
catch (error) {
|
|
98
196
|
// `createComponent` attaches the host element and its structural DOM
|
|
@@ -106,35 +204,54 @@ export class PrismOverviewCellComponent {
|
|
|
106
204
|
this.pseudoMarker.clear();
|
|
107
205
|
this.outlet().clear();
|
|
108
206
|
console.error(`[ng-prism] Variant ${index} of ${component.meta.className} failed to render:`, error);
|
|
207
|
+
return null;
|
|
109
208
|
}
|
|
110
209
|
}
|
|
210
|
+
unfit(reason) {
|
|
211
|
+
this.unfitReason.set(reason);
|
|
212
|
+
return { fits: false, reason };
|
|
213
|
+
}
|
|
111
214
|
static ɵfac = function PrismOverviewCellComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || PrismOverviewCellComponent)(); };
|
|
112
215
|
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PrismOverviewCellComponent, selectors: [["prism-overview-cell"]], viewQuery: function PrismOverviewCellComponent_Query(rf, ctx) { if (rf & 1) {
|
|
113
216
|
i0.ɵɵviewQuerySignal(ctx.outlet, _c0, 5, ViewContainerRef);
|
|
114
217
|
} if (rf & 2) {
|
|
115
218
|
i0.ɵɵqueryAdvance();
|
|
116
|
-
} }, hostAttrs: ["role", "listitem"], hostVars:
|
|
117
|
-
i0.ɵɵ
|
|
118
|
-
}
|
|
219
|
+
} }, hostAttrs: ["role", "listitem", "tabindex", "0"], hostVars: 6, hostBindings: function PrismOverviewCellComponent_HostBindings(rf, ctx) { if (rf & 1) {
|
|
220
|
+
i0.ɵɵlistener("click", function PrismOverviewCellComponent_click_HostBindingHandler() { return ctx.open(); })("keydown", function PrismOverviewCellComponent_keydown_HostBindingHandler($event) { return ctx.onKeydown($event); });
|
|
221
|
+
} if (rf & 2) {
|
|
222
|
+
i0.ɵɵattribute("aria-label", ctx.label())("title", ctx.unfitReason())("data-matrix", ctx.mode() === "matrix" ? "" : null)("data-current", ctx.current() ? "" : null)("data-wide", ctx.mode() === "sheet" && ctx.stretches() ? "" : null)("data-stretch", ctx.mode() === "matrix" && ctx.stretches() ? "" : null);
|
|
223
|
+
} }, inputs: { component: [1, "component"], index: [1, "index"], state: [1, "state"], mode: [1, "mode"] }, outputs: { fitChange: "fitChange" }, decls: 6, vars: 4, consts: [["outlet", ""], [1, "cell__stage"], [1, "cell__mount"], ["aria-hidden", "true", 1, "cell__unfit"], [1, "cell__caption"]], template: function PrismOverviewCellComponent_Template(rf, ctx) { if (rf & 1) {
|
|
119
224
|
i0.ɵɵdomElementStart(0, "div", 1)(1, "div", 2);
|
|
120
225
|
i0.ɵɵdomElementContainer(2, null, 0);
|
|
121
|
-
i0.ɵɵdomElementEnd()();
|
|
122
|
-
i0.ɵɵdomElementStart(4, "span", 3);
|
|
123
|
-
i0.ɵɵtext(5);
|
|
124
226
|
i0.ɵɵdomElementEnd();
|
|
227
|
+
i0.ɵɵconditionalCreate(4, PrismOverviewCellComponent_Conditional_4_Template, 2, 0, "span", 3);
|
|
228
|
+
i0.ɵɵdomElementEnd();
|
|
229
|
+
i0.ɵɵconditionalCreate(5, PrismOverviewCellComponent_Conditional_5_Template, 2, 1, "span", 4);
|
|
125
230
|
} if (rf & 2) {
|
|
126
|
-
i0.ɵɵattribute("data-bg", ctx.bg());
|
|
127
|
-
i0.ɵɵadvance(
|
|
128
|
-
i0.ɵɵ
|
|
129
|
-
|
|
231
|
+
i0.ɵɵattribute("data-bg", ctx.unfitReason() === null ? ctx.bg() : null)("data-unfit", ctx.unfitReason() === null ? null : "");
|
|
232
|
+
i0.ɵɵadvance(4);
|
|
233
|
+
i0.ɵɵconditional(ctx.unfitReason() !== null ? 4 : -1);
|
|
234
|
+
i0.ɵɵadvance();
|
|
235
|
+
i0.ɵɵconditional(ctx.mode() === "sheet" ? 5 : -1);
|
|
236
|
+
} }, styles: ["[_nghost-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: var(--%NS%sp-2);\n min-width: 0;\n cursor: pointer;\n}\n\n[_nghost-%COMP%]:focus-visible {\n outline: 2px solid var(--%NS%prism-primary);\n outline-offset: 2px;\n border-radius: var(--%NS%radius-sm);\n}\n\n\n\n[data-wide][_nghost-%COMP%] {\n grid-column: 1 / -1;\n}\n\n.cell__stage[_ngcontent-%COMP%] {\n display: flex;\n flex: 1;\n align-items: center;\n justify-content: center;\n min-height: 120px;\n padding: var(--%NS%sp-5);\n overflow: hidden;\n outline: 1px solid var(--%NS%prism-stage-edge);\n outline-offset: -1px;\n background-color: var(--%NS%prism-stage);\n border-radius: var(--%NS%radius-sm);\n}\n\n\n\n[data-matrix][_nghost-%COMP%] .cell__stage[_ngcontent-%COMP%] {\n min-height: 72px;\n padding: var(--%NS%sp-3);\n}\n\n\n\n\n[_nghost-%COMP%]:hover .cell__stage[_ngcontent-%COMP%], \n[data-current][_nghost-%COMP%] .cell__stage[_ngcontent-%COMP%] {\n outline-width: 1.5px;\n outline-color: var(--%NS%prism-primary);\n outline-offset: 1px;\n}\n\n.cell__mount[_ngcontent-%COMP%] {\n display: inline-block;\n max-width: 100%;\n}\n\n[data-wide][_nghost-%COMP%] .cell__mount[_ngcontent-%COMP%], \n[data-stretch][_nghost-%COMP%] .cell__mount[_ngcontent-%COMP%] {\n display: block;\n width: 100%;\n}\n\n\n\n.cell__stage[data-unfit][_ngcontent-%COMP%] {\n outline-style: dashed;\n background: none;\n}\n\n.cell__stage[data-unfit][_ngcontent-%COMP%] .cell__mount[_ngcontent-%COMP%] {\n display: none;\n}\n\n\n.cell__unfit[_ngcontent-%COMP%] {\n font-family: var(--%NS%prism-font-mono);\n font-size: var(--%NS%fs-md);\n line-height: 1;\n color: var(--%NS%prism-text-muted);\n}\n\n\n\n\n\n.cell__caption[_ngcontent-%COMP%] {\n overflow: hidden;\n text-overflow: ellipsis;\n font-family: var(--%NS%prism-font-mono);\n font-size: var(--%NS%fs-xs);\n color: var(--%NS%prism-text-muted);\n white-space: nowrap;\n}", "[data-bg=\"dots\"][_ngcontent-%COMP%] {\n background-image: radial-gradient(circle, var(--%NS%prism-dot) 1px, transparent 1px);\n background-size: 20px 20px;\n }\n\n [data-bg=\"plain\"][_ngcontent-%COMP%] {\n background-image: none;\n }\n\n \n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n [data-bg=\"light\"][_ngcontent-%COMP%] {\n background-color: var(--%NS%prism-void-light, #f7f5fc);\n background-image: none;\n --%NS%prism-measure: #ca00c1;\n --%NS%prism-measure-plate: var(--%NS%prism-void-light, #f7f5fc);\n }\n [data-bg=\"dark\"][_ngcontent-%COMP%] {\n background-color: var(--%NS%prism-void-dark, #07050f);\n background-image: none;\n --%NS%prism-measure: #f632ff;\n --%NS%prism-measure-plate: var(--%NS%prism-void-dark, #07050f);\n }\n\n \n\n\n [data-bg=\"checker\"][_ngcontent-%COMP%], \n [data-bg=\"transparent\"][_ngcontent-%COMP%] {\n background-image:\n linear-gradient(45deg, var(--%NS%prism-border) 25%, transparent 25%),\n linear-gradient(-45deg, var(--%NS%prism-border) 25%, transparent 25%),\n linear-gradient(45deg, transparent 75%, var(--%NS%prism-border) 75%),\n linear-gradient(-45deg, transparent 75%, var(--%NS%prism-border) 75%);\n background-size: 16px 16px;\n background-position: 0 0, 0 8px, 8px -8px, -8px 0;\n }"] });
|
|
130
237
|
}
|
|
131
238
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PrismOverviewCellComponent, [{
|
|
132
239
|
type: Component,
|
|
133
240
|
args: [{ selector: 'prism-overview-cell', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
134
241
|
role: 'listitem',
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
242
|
+
tabindex: '0',
|
|
243
|
+
'[attr.aria-label]': 'label()',
|
|
244
|
+
'[attr.title]': 'unfitReason()',
|
|
245
|
+
'[attr.data-matrix]': "mode() === 'matrix' ? '' : null",
|
|
246
|
+
'[attr.data-current]': "current() ? '' : null",
|
|
247
|
+
// In the matrix the grid spans are the matrix's own. A stretch variant still
|
|
248
|
+
// fills its cell, so `canvasLayout` holds for the whole row.
|
|
249
|
+
'[attr.data-wide]': "mode() === 'sheet' && stretches() ? '' : null",
|
|
250
|
+
'[attr.data-stretch]': "mode() === 'matrix' && stretches() ? '' : null",
|
|
251
|
+
'(click)': 'open()',
|
|
252
|
+
'(keydown)': 'onKeydown($event)'
|
|
253
|
+
}, template: "<div\n class=\"cell__stage\"\n [attr.data-bg]=\"unfitReason() === null ? bg() : null\"\n [attr.data-unfit]=\"unfitReason() === null ? null : ''\">\n <div class=\"cell__mount\"><ng-container #outlet /></div>\n @if (unfitReason() !== null) {\n <span\n class=\"cell__unfit\"\n aria-hidden=\"true\"\n >\u2013</span\n >\n }\n</div>\n@if (mode() === 'sheet') {\n <span class=\"cell__caption\">{{ caption() }}</span>\n}\n", styles: [":host {\n display: flex;\n flex-direction: column;\n gap: var(--sp-2);\n min-width: 0;\n cursor: pointer;\n}\n\n:host(:focus-visible) {\n outline: 2px solid var(--prism-primary);\n outline-offset: 2px;\n border-radius: var(--radius-sm);\n}\n\n/* A stretch variant has no intrinsic width to compare against its\n neighbours, so it takes the row rather than a column. */\n:host([data-wide]) {\n grid-column: 1 / -1;\n}\n\n.cell__stage {\n display: flex;\n flex: 1;\n align-items: center;\n justify-content: center;\n min-height: 120px;\n padding: var(--sp-5);\n overflow: hidden;\n outline: 1px solid var(--prism-stage-edge);\n outline-offset: -1px;\n background-color: var(--prism-stage);\n border-radius: var(--radius-sm);\n}\n\n/* The matrix is denser than the sheet: a row of five states has to fit the\n panel. The component keeps its own size; only the frame around it shrinks. */\n:host([data-matrix]) .cell__stage {\n min-height: 72px;\n padding: var(--sp-3);\n}\n\n/* What the click opens, and what the Playground shows right now. Outside the\n stage, on the panel surface, where the primary holds its contrast whatever\n ground the cell paints. Longhands, so a dashed n/a frame stays dashed. */\n:host(:hover) .cell__stage,\n:host([data-current]) .cell__stage {\n outline-width: 1.5px;\n outline-color: var(--prism-primary);\n outline-offset: 1px;\n}\n\n.cell__mount {\n display: inline-block;\n max-width: 100%;\n}\n\n:host([data-wide]) .cell__mount,\n:host([data-stretch]) .cell__mount {\n display: block;\n width: 100%;\n}\n\n/* A state that does not fit shows no component and paints no ground: an\n empty, dashed frame, so it cannot pass for a rendering. */\n.cell__stage[data-unfit] {\n outline-style: dashed;\n background: none;\n}\n\n.cell__stage[data-unfit] .cell__mount {\n display: none;\n}\n\n/* Only the dash: the reason is the cell's tooltip and part of its label. */\n.cell__unfit {\n font-family: var(--prism-font-mono);\n font-size: var(--fs-md);\n line-height: 1;\n color: var(--prism-text-muted);\n}\n\n/* The caption sits below the frame, not on it. Inside, it would have to\n invert against every background the cell can paint, and gaining a new\n contrast rule per CanvasBg value is the cost the sheet exists to\n avoid. */\n.cell__caption {\n overflow: hidden;\n text-overflow: ellipsis;\n font-family: var(--prism-font-mono);\n font-size: var(--fs-xs);\n color: var(--prism-text-muted);\n white-space: nowrap;\n}\n", "\n [data-bg=\"dots\"] {\n background-image: radial-gradient(circle, var(--prism-dot) 1px, transparent 1px);\n background-size: 20px 20px;\n }\n\n [data-bg=\"plain\"] {\n background-image: none;\n }\n\n /* Flat, not dotted. \"light\" and \"dark\" name the surface a component was\n designed against, and their colour is absolute rather than a theme token,\n which makes them the values to declare for a screenshot baseline. Use\n \"dots\" for the grid. */\n /* These two also re-point --prism-measure. Other overlays use theme colours\n on theme surfaces, but these grounds ignore the theme: \"light\" stays\n near-white in the dark theme and \"dark\" stays near-black in the light one.\n The dark theme's magenta reaches only 2.85:1 on the light ground, under the\n 4.5:1 its 9px readout needs, so the measurement colour has to follow the\n ground, not the theme.\n\n --prism-measure-plate follows it for the same reason. It is the surface\n the measuring tool's value label paints itself on, so the label reads as a\n gap in the measurement line rather than a badge on top of it. At its\n --prism-stage fallback it would be the theme's stage under a re-pointed\n foreground: the light theme's magenta on the dark theme's stage reads\n 3.71:1, the dark theme's on white 3.08:1. Pinned to the ground the same way,\n the pairs reach 4.54:1 and 6.57:1. A color-mix against the ground would\n work too, but this file already states both grounds literally, and one\n mechanism per decision is enough.\n\n Literal values because this file is theme-independent, like the two\n grounds below. Keep them in step with --prism-measure in canvas-overlay-tokens.ts and\n prism-default-theme.ts; semantic-colours.spec.ts fails if they drift. */\n [data-bg=\"light\"] {\n background-color: var(--prism-void-light, #f7f5fc);\n background-image: none;\n --prism-measure: #ca00c1;\n --prism-measure-plate: var(--prism-void-light, #f7f5fc);\n }\n [data-bg=\"dark\"] {\n background-color: var(--prism-void-dark, #07050f);\n background-image: none;\n --prism-measure: #f632ff;\n --prism-measure-plate: var(--prism-void-dark, #07050f);\n }\n\n /* \"transparent\" shares the checkerboard. In the app the checkerboard is\n already the UI's sign for \"no surface\", and a see-through stage would only\n show the shell behind it. Only CAPTURE_STYLES tells the two apart. */\n [data-bg=\"checker\"],\n [data-bg=\"transparent\"] {\n background-image:\n linear-gradient(45deg, var(--prism-border) 25%, transparent 25%),\n linear-gradient(-45deg, var(--prism-border) 25%, transparent 25%),\n linear-gradient(45deg, transparent 75%, var(--prism-border) 75%),\n linear-gradient(-45deg, transparent 75%, var(--prism-border) 75%);\n background-size: 16px 16px;\n background-position: 0 0, 0 8px, 8px -8px, -8px 0;\n }\n"] }]
|
|
254
|
+
}], () => [], { component: [{ type: i0.Input, args: [{ isSignal: true, alias: "component", required: true }] }], index: [{ type: i0.Input, args: [{ isSignal: true, alias: "index", required: true }] }], state: [{ type: i0.Input, args: [{ isSignal: true, alias: "state", required: false }] }], mode: [{ type: i0.Input, args: [{ isSignal: true, alias: "mode", required: false }] }], fitChange: [{ type: i0.Output, args: ["fitChange"] }], outlet: [{ type: i0.ViewChild, args: ['outlet', { ...{
|
|
138
255
|
read: ViewContainerRef
|
|
139
256
|
}, isSignal: true }] }] }); })();
|
|
140
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismOverviewCellComponent, { className: "PrismOverviewCellComponent", filePath: "app/overview/prism-overview-cell.component.ts", lineNumber:
|
|
257
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismOverviewCellComponent, { className: "PrismOverviewCellComponent", filePath: "app/overview/prism-overview-cell.component.ts", lineNumber: 77 }); })();
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { RuntimeComponent } from '../../plugin/plugin.types.js';
|
|
2
|
+
import type { StateFit } from '../pseudo/state-fit.js';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
/**
|
|
5
|
+
* The Overview of a component with `states`: variants down, Default and every
|
|
6
|
+
* state across, each intersection one `prism-overview-cell`.
|
|
7
|
+
*
|
|
8
|
+
* Whether a state fits a variant is something only the rendered cell knows, so
|
|
9
|
+
* the cells report it (`fitChange`) and this component keeps the answers. The
|
|
10
|
+
* column headers count them. A state that fits no variant at all is almost
|
|
11
|
+
* certainly a selector that matches nothing: its header is marked, and the
|
|
12
|
+
* console warns about it once.
|
|
13
|
+
*
|
|
14
|
+
* The first row and the first column stay in view while the matrix scrolls.
|
|
15
|
+
*/
|
|
16
|
+
export declare class PrismOverviewMatrixComponent {
|
|
17
|
+
readonly component: import("@angular/core").InputSignal<RuntimeComponent>;
|
|
18
|
+
protected readonly matrix: import("@angular/core").Signal<import("./overview-matrix.js").OverviewMatrix>;
|
|
19
|
+
/** What each cell answered, by {@link fitKey}. Starts over with every component. */
|
|
20
|
+
private readonly fits;
|
|
21
|
+
/** The column titles with their fit counts (the Default column has none), and whether a state fits no variant. */
|
|
22
|
+
protected readonly headers: import("@angular/core").Signal<import("./overview-matrix.js").ColumnHeader[]>;
|
|
23
|
+
constructor();
|
|
24
|
+
protected onFit(variant: number, state: number | null, fit: StateFit): void;
|
|
25
|
+
private warnAbout;
|
|
26
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<PrismOverviewMatrixComponent, never>;
|
|
27
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<PrismOverviewMatrixComponent, "prism-overview-matrix", never, { "component": { "alias": "component"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=prism-overview-matrix.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prism-overview-matrix.component.d.ts","sourceRoot":"","sources":["../../../src/app/overview/prism-overview-matrix.component.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;;AAWvD;;;;;;;;;;;GAWG;AACH,qBAQa,4BAA4B;IACrC,QAAQ,CAAC,SAAS,wDAAsC;IAExD,SAAS,CAAC,QAAQ,CAAC,MAAM,gFAA6E;IAEtG,oFAAoF;IACpF,OAAO,CAAC,QAAQ,CAAC,IAAI,CAGlB;IAEH,kHAAkH;IAClH,SAAS,CAAC,QAAQ,CAAC,OAAO,gFAA6D;;IAWvF,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,QAAQ,GAAG,IAAI;IAK3E,OAAO,CAAC,SAAS;yCA5BR,4BAA4B;2CAA5B,4BAA4B;CA0CxC"}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, computed, effect, input, linkedSignal, untracked } from '@angular/core';
|
|
2
|
+
import { buildOverviewMatrix, columnHeaders, fitKey, statesFittingNowhere } from './overview-matrix.js';
|
|
3
|
+
import { PrismOverviewCellComponent } from './prism-overview-cell.component.js';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
const _forTrack0 = ($index, $item) => $item.column.state;
|
|
6
|
+
const _forTrack1 = ($index, $item) => $item.variant;
|
|
7
|
+
const _forTrack2 = ($index, $item) => $item.state;
|
|
8
|
+
function PrismOverviewMatrixComponent_For_5_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
9
|
+
i0.ɵɵelementStart(0, "span", 6);
|
|
10
|
+
i0.ɵɵtext(1);
|
|
11
|
+
i0.ɵɵelementEnd();
|
|
12
|
+
} if (rf & 2) {
|
|
13
|
+
const fit_r1 = ctx;
|
|
14
|
+
i0.ɵɵattribute("title", fit_r1.title);
|
|
15
|
+
i0.ɵɵadvance();
|
|
16
|
+
i0.ɵɵtextInterpolate(fit_r1.text);
|
|
17
|
+
} }
|
|
18
|
+
function PrismOverviewMatrixComponent_For_5_Template(rf, ctx) { if (rf & 1) {
|
|
19
|
+
i0.ɵɵelementStart(0, "div", 3)(1, "span", 4)(2, "span", 5);
|
|
20
|
+
i0.ɵɵtext(3);
|
|
21
|
+
i0.ɵɵelementEnd();
|
|
22
|
+
i0.ɵɵconditionalCreate(4, PrismOverviewMatrixComponent_For_5_Conditional_4_Template, 2, 2, "span", 6);
|
|
23
|
+
i0.ɵɵelementEnd();
|
|
24
|
+
i0.ɵɵelementStart(5, "span", 7);
|
|
25
|
+
i0.ɵɵtext(6);
|
|
26
|
+
i0.ɵɵelementEnd()();
|
|
27
|
+
} if (rf & 2) {
|
|
28
|
+
let tmp_13_0;
|
|
29
|
+
const header_r2 = ctx.$implicit;
|
|
30
|
+
i0.ɵɵattribute("data-fits-nowhere", header_r2.fitsNowhere ? "" : null)("title", header_r2.fitsNowhere ? header_r2.column.title + " fits no variant; check its selectors" : null);
|
|
31
|
+
i0.ɵɵadvance(3);
|
|
32
|
+
i0.ɵɵtextInterpolate(header_r2.column.title);
|
|
33
|
+
i0.ɵɵadvance();
|
|
34
|
+
i0.ɵɵconditional((tmp_13_0 = header_r2.fit) ? 4 : -1, tmp_13_0);
|
|
35
|
+
i0.ɵɵadvance(2);
|
|
36
|
+
i0.ɵɵtextInterpolate(header_r2.column.signature);
|
|
37
|
+
} }
|
|
38
|
+
function PrismOverviewMatrixComponent_For_7_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
39
|
+
i0.ɵɵelementStart(0, "div", 10)(1, "div", 11);
|
|
40
|
+
i0.ɵɵelement(2, "prism-overview-cell", 12);
|
|
41
|
+
i0.ɵɵelementEnd()();
|
|
42
|
+
} if (rf & 2) {
|
|
43
|
+
const row_r3 = i0.ɵɵnextContext().$implicit;
|
|
44
|
+
const ctx_r3 = i0.ɵɵnextContext();
|
|
45
|
+
i0.ɵɵadvance(2);
|
|
46
|
+
i0.ɵɵproperty("component", ctx_r3.component())("index", row_r3.variant);
|
|
47
|
+
} }
|
|
48
|
+
function PrismOverviewMatrixComponent_For_7_Conditional_5_For_1_Template(rf, ctx) { if (rf & 1) {
|
|
49
|
+
const _r5 = i0.ɵɵgetCurrentView();
|
|
50
|
+
i0.ɵɵelementStart(0, "div", 13)(1, "div", 11)(2, "prism-overview-cell", 14);
|
|
51
|
+
i0.ɵɵlistener("fitChange", function PrismOverviewMatrixComponent_For_7_Conditional_5_For_1_Template_prism_overview_cell_fitChange_2_listener($event) { const column_r6 = i0.ɵɵrestoreView(_r5).$implicit; const row_r3 = i0.ɵɵnextContext(2).$implicit; const ctx_r3 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r3.onFit(row_r3.variant, column_r6.state, $event)); });
|
|
52
|
+
i0.ɵɵelementEnd()()();
|
|
53
|
+
} if (rf & 2) {
|
|
54
|
+
const column_r6 = ctx.$implicit;
|
|
55
|
+
const row_r3 = i0.ɵɵnextContext(2).$implicit;
|
|
56
|
+
const ctx_r3 = i0.ɵɵnextContext();
|
|
57
|
+
i0.ɵɵadvance(2);
|
|
58
|
+
i0.ɵɵproperty("component", ctx_r3.component())("index", row_r3.variant)("state", column_r6.state);
|
|
59
|
+
} }
|
|
60
|
+
function PrismOverviewMatrixComponent_For_7_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
61
|
+
i0.ɵɵrepeaterCreate(0, PrismOverviewMatrixComponent_For_7_Conditional_5_For_1_Template, 3, 3, "div", 13, _forTrack2);
|
|
62
|
+
} if (rf & 2) {
|
|
63
|
+
const ctx_r3 = i0.ɵɵnextContext(2);
|
|
64
|
+
i0.ɵɵrepeater(ctx_r3.matrix().columns);
|
|
65
|
+
} }
|
|
66
|
+
function PrismOverviewMatrixComponent_For_7_Template(rf, ctx) { if (rf & 1) {
|
|
67
|
+
i0.ɵɵelementStart(0, "div", 1)(1, "div", 8)(2, "span", 9);
|
|
68
|
+
i0.ɵɵtext(3);
|
|
69
|
+
i0.ɵɵelementEnd()();
|
|
70
|
+
i0.ɵɵconditionalCreate(4, PrismOverviewMatrixComponent_For_7_Conditional_4_Template, 3, 2, "div", 10)(5, PrismOverviewMatrixComponent_For_7_Conditional_5_Template, 2, 0);
|
|
71
|
+
i0.ɵɵelementEnd();
|
|
72
|
+
} if (rf & 2) {
|
|
73
|
+
const row_r3 = ctx.$implicit;
|
|
74
|
+
i0.ɵɵadvance();
|
|
75
|
+
i0.ɵɵattribute("title", row_r3.note);
|
|
76
|
+
i0.ɵɵadvance(2);
|
|
77
|
+
i0.ɵɵtextInterpolate(row_r3.title);
|
|
78
|
+
i0.ɵɵadvance();
|
|
79
|
+
i0.ɵɵconditional(row_r3.optedOut ? 4 : 5);
|
|
80
|
+
} }
|
|
81
|
+
/**
|
|
82
|
+
* The states a component has been warned about, by index. Module-level and weak,
|
|
83
|
+
* so leaving the Overview and coming back does not repeat the warning, while a
|
|
84
|
+
* rebuilt component (HMR) has its own.
|
|
85
|
+
*/
|
|
86
|
+
const warnedStates = new WeakMap();
|
|
87
|
+
/**
|
|
88
|
+
* The Overview of a component with `states`: variants down, Default and every
|
|
89
|
+
* state across, each intersection one `prism-overview-cell`.
|
|
90
|
+
*
|
|
91
|
+
* Whether a state fits a variant is something only the rendered cell knows, so
|
|
92
|
+
* the cells report it (`fitChange`) and this component keeps the answers. The
|
|
93
|
+
* column headers count them. A state that fits no variant at all is almost
|
|
94
|
+
* certainly a selector that matches nothing: its header is marked, and the
|
|
95
|
+
* console warns about it once.
|
|
96
|
+
*
|
|
97
|
+
* The first row and the first column stay in view while the matrix scrolls.
|
|
98
|
+
*/
|
|
99
|
+
export class PrismOverviewMatrixComponent {
|
|
100
|
+
component = input.required(/* @ts-ignore */
|
|
101
|
+
...(ngDevMode ? [{ debugName: "component" }] : /* istanbul ignore next */ []));
|
|
102
|
+
matrix = computed(() => buildOverviewMatrix(this.component().meta.showcaseConfig), /* @ts-ignore */
|
|
103
|
+
...(ngDevMode ? [{ debugName: "matrix" }] : /* istanbul ignore next */ []));
|
|
104
|
+
/** What each cell answered, by {@link fitKey}. Starts over with every component. */
|
|
105
|
+
fits = linkedSignal({ ...(ngDevMode ? { debugName: "fits" } : /* istanbul ignore next */ {}), source: this.component,
|
|
106
|
+
computation: () => new Map() });
|
|
107
|
+
/** The column titles with their fit counts (the Default column has none), and whether a state fits no variant. */
|
|
108
|
+
headers = computed(() => columnHeaders(this.fits(), this.matrix()), /* @ts-ignore */
|
|
109
|
+
...(ngDevMode ? [{ debugName: "headers" }] : /* istanbul ignore next */ []));
|
|
110
|
+
constructor() {
|
|
111
|
+
effect(() => {
|
|
112
|
+
const component = this.component();
|
|
113
|
+
const nowhere = statesFittingNowhere(this.fits(), this.matrix());
|
|
114
|
+
untracked(() => this.warnAbout(component, nowhere));
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
onFit(variant, state, fit) {
|
|
118
|
+
if (state === null)
|
|
119
|
+
return;
|
|
120
|
+
this.fits.update((fits) => new Map(fits).set(fitKey(variant, state), fit));
|
|
121
|
+
}
|
|
122
|
+
warnAbout(component, states) {
|
|
123
|
+
const warned = warnedStates.get(component) ?? new Set();
|
|
124
|
+
warnedStates.set(component, warned);
|
|
125
|
+
for (const state of states) {
|
|
126
|
+
if (warned.has(state))
|
|
127
|
+
continue;
|
|
128
|
+
const name = component.meta.showcaseConfig.states?.[state]?.name;
|
|
129
|
+
warned.add(state);
|
|
130
|
+
console.warn(`[ng-prism] State "${name}" of ${component.meta.className} fits no variant; check its selectors.`);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
static ɵfac = function PrismOverviewMatrixComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || PrismOverviewMatrixComponent)(); };
|
|
134
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PrismOverviewMatrixComponent, selectors: [["prism-overview-matrix"]], inputs: { component: [1, "component"] }, decls: 8, vars: 3, consts: [["role", "table", 1, "matrix"], ["role", "row", 1, "matrix__row"], ["role", "columnheader", 1, "matrix__corner"], ["role", "columnheader", 1, "matrix__head"], [1, "matrix__head-line"], [1, "matrix__title"], [1, "matrix__fit"], [1, "matrix__signature"], ["role", "rowheader", 1, "matrix__variant"], [1, "matrix__name"], ["role", "cell", 1, "matrix__slot", "matrix__slot--span"], ["role", "list", 1, "matrix__list"], ["mode", "matrix", 3, "component", "index"], ["role", "cell", 1, "matrix__slot"], ["mode", "matrix", 3, "fitChange", "component", "index", "state"]], template: function PrismOverviewMatrixComponent_Template(rf, ctx) { if (rf & 1) {
|
|
135
|
+
i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "div", 2);
|
|
136
|
+
i0.ɵɵtext(3, " Variant \\ State ");
|
|
137
|
+
i0.ɵɵelementEnd();
|
|
138
|
+
i0.ɵɵrepeaterCreate(4, PrismOverviewMatrixComponent_For_5_Template, 7, 5, "div", 3, _forTrack0);
|
|
139
|
+
i0.ɵɵelementEnd();
|
|
140
|
+
i0.ɵɵrepeaterCreate(6, PrismOverviewMatrixComponent_For_7_Template, 6, 3, "div", 1, _forTrack1);
|
|
141
|
+
i0.ɵɵelementEnd();
|
|
142
|
+
} if (rf & 2) {
|
|
143
|
+
i0.ɵɵstyleProp("--%NS%matrix-columns", ctx.matrix().columns.length);
|
|
144
|
+
i0.ɵɵattribute("aria-label", ctx.component().meta.showcaseConfig.title + " variants by state");
|
|
145
|
+
i0.ɵɵadvance(4);
|
|
146
|
+
i0.ɵɵrepeater(ctx.headers());
|
|
147
|
+
i0.ɵɵadvance(2);
|
|
148
|
+
i0.ɵɵrepeater(ctx.matrix().rows);
|
|
149
|
+
} }, dependencies: [PrismOverviewCellComponent], styles: ["\n\n\n[_nghost-%COMP%] {\n display: flex;\n flex: 1 1 0;\n flex-direction: column;\n min-height: 0;\n}\n\n.matrix[_ngcontent-%COMP%] {\n --%NS%matrix-edge: var(--%NS%prism-border);\n\n display: grid;\n flex: 1 1 0;\n grid-template-columns: minmax(120px, max-content) repeat(var(--%NS%matrix-columns, 1), minmax(160px, 1fr));\n align-content: start;\n min-height: 0;\n overflow: auto;\n}\n\n\n\n.matrix__row[_ngcontent-%COMP%] {\n display: contents;\n}\n\n.matrix__corner[_ngcontent-%COMP%], \n.matrix__head[_ngcontent-%COMP%], \n.matrix__variant[_ngcontent-%COMP%] {\n position: sticky;\n display: flex;\n flex-direction: column;\n gap: var(--%NS%sp-1);\n min-width: 0;\n padding: var(--%NS%sp-3) var(--%NS%sp-4);\n background: var(--%NS%prism-bg-elevated);\n}\n\n\n\n.matrix__corner[_ngcontent-%COMP%], \n.matrix__head[_ngcontent-%COMP%] {\n top: 0;\n z-index: 2;\n justify-content: flex-start;\n border-bottom: 1px solid var(--%NS%matrix-edge);\n}\n\n.matrix__corner[_ngcontent-%COMP%], \n.matrix__variant[_ngcontent-%COMP%] {\n left: 0;\n z-index: 1;\n border-right: 1px solid var(--%NS%matrix-edge);\n}\n\n\n.matrix__corner[_ngcontent-%COMP%] {\n z-index: 3;\n font-family: var(--%NS%prism-font-mono);\n font-size: var(--%NS%fs-xs);\n color: var(--%NS%prism-text-muted);\n}\n\n.matrix__variant[_ngcontent-%COMP%] {\n justify-content: center;\n}\n\n.matrix__head-line[_ngcontent-%COMP%] {\n display: flex;\n gap: var(--%NS%sp-3);\n align-items: baseline;\n justify-content: space-between;\n min-width: 0;\n}\n\n.matrix__title[_ngcontent-%COMP%], \n.matrix__name[_ngcontent-%COMP%] {\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: var(--%NS%fs-sm);\n font-weight: 600;\n color: var(--%NS%prism-text);\n white-space: nowrap;\n}\n\n.matrix__signature[_ngcontent-%COMP%], \n.matrix__fit[_ngcontent-%COMP%] {\n overflow: hidden;\n text-overflow: ellipsis;\n font-family: var(--%NS%prism-font-mono);\n font-size: var(--%NS%fs-xs);\n color: var(--%NS%prism-text-muted);\n white-space: nowrap;\n}\n\n.matrix__fit[_ngcontent-%COMP%] {\n flex: none;\n font-variant-numeric: tabular-nums;\n cursor: help;\n}\n\n\n.matrix__head[data-fits-nowhere][_ngcontent-%COMP%] {\n box-shadow: inset 0 -2px 0 var(--%NS%prism-warn);\n}\n\n.matrix__head[data-fits-nowhere][_ngcontent-%COMP%] .matrix__fit[_ngcontent-%COMP%] {\n color: var(--%NS%prism-warn);\n}\n\n\n.matrix__slot[_ngcontent-%COMP%] {\n display: flex;\n min-width: 0;\n padding: var(--%NS%sp-2);\n}\n\n\n\n.matrix__slot--span[_ngcontent-%COMP%] {\n grid-column: 2 / -1;\n}\n\n.matrix__list[_ngcontent-%COMP%] {\n display: flex;\n flex: 1;\n min-width: 0;\n}\n\n.matrix__list[_ngcontent-%COMP%] > prism-overview-cell[_ngcontent-%COMP%] {\n flex: 1;\n}"] });
|
|
150
|
+
}
|
|
151
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PrismOverviewMatrixComponent, [{
|
|
152
|
+
type: Component,
|
|
153
|
+
args: [{ selector: 'prism-overview-matrix', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [PrismOverviewCellComponent], template: "<div\n class=\"matrix\"\n role=\"table\"\n [attr.aria-label]=\"component().meta.showcaseConfig.title + ' variants by state'\"\n [style.--matrix-columns]=\"matrix().columns.length\">\n <div\n class=\"matrix__row\"\n role=\"row\">\n <div\n class=\"matrix__corner\"\n role=\"columnheader\">\n Variant \\ State\n </div>\n @for (header of headers(); track header.column.state) {\n <div\n class=\"matrix__head\"\n role=\"columnheader\"\n [attr.data-fits-nowhere]=\"header.fitsNowhere ? '' : null\"\n [attr.title]=\"header.fitsNowhere ? header.column.title + ' fits no variant; check its selectors' : null\">\n <span class=\"matrix__head-line\">\n <span class=\"matrix__title\">{{ header.column.title }}</span>\n @if (header.fit; as fit) {\n <span\n class=\"matrix__fit\"\n [attr.title]=\"fit.title\"\n >{{ fit.text }}</span\n >\n }\n </span>\n <span class=\"matrix__signature\">{{ header.column.signature }}</span>\n </div>\n }\n </div>\n @for (row of matrix().rows; track row.variant) {\n <div\n class=\"matrix__row\"\n role=\"row\">\n <div\n class=\"matrix__variant\"\n role=\"rowheader\"\n [attr.title]=\"row.note\">\n <span class=\"matrix__name\">{{ row.title }}</span>\n </div>\n @if (row.optedOut) {\n <div\n class=\"matrix__slot matrix__slot--span\"\n role=\"cell\">\n <div\n class=\"matrix__list\"\n role=\"list\">\n <prism-overview-cell\n [component]=\"component()\"\n [index]=\"row.variant\"\n mode=\"matrix\" />\n </div>\n </div>\n } @else {\n @for (column of matrix().columns; track column.state) {\n <div\n class=\"matrix__slot\"\n role=\"cell\">\n <div\n class=\"matrix__list\"\n role=\"list\">\n <prism-overview-cell\n [component]=\"component()\"\n [index]=\"row.variant\"\n [state]=\"column.state\"\n mode=\"matrix\"\n (fitChange)=\"onFit(row.variant, column.state, $event)\" />\n </div>\n </div>\n }\n }\n </div>\n }\n</div>\n", styles: ["/* The host hands its height to the matrix, which scrolls on its own: the\n header row and the variant column stay in view only if the scrolling\n happens inside the grid that holds them. */\n:host {\n display: flex;\n flex: 1 1 0;\n flex-direction: column;\n min-height: 0;\n}\n\n.matrix {\n --matrix-edge: var(--prism-border);\n\n display: grid;\n flex: 1 1 0;\n grid-template-columns: minmax(120px, max-content) repeat(var(--matrix-columns, 1), minmax(160px, 1fr));\n align-content: start;\n min-height: 0;\n overflow: auto;\n}\n\n/* The rows only carry the roles. Their cells are the grid's, so the columns\n line up from the header down. */\n.matrix__row {\n display: contents;\n}\n\n.matrix__corner,\n.matrix__head,\n.matrix__variant {\n position: sticky;\n display: flex;\n flex-direction: column;\n gap: var(--sp-1);\n min-width: 0;\n padding: var(--sp-3) var(--sp-4);\n background: var(--prism-bg-elevated);\n}\n\n/* Top-aligned: a title and its signature read from the same line in every\n column, however long a neighbour's signature runs. */\n.matrix__corner,\n.matrix__head {\n top: 0;\n z-index: 2;\n justify-content: flex-start;\n border-bottom: 1px solid var(--matrix-edge);\n}\n\n.matrix__corner,\n.matrix__variant {\n left: 0;\n z-index: 1;\n border-right: 1px solid var(--matrix-edge);\n}\n\n/* Above the header row and the variant column both, where they cross. */\n.matrix__corner {\n z-index: 3;\n font-family: var(--prism-font-mono);\n font-size: var(--fs-xs);\n color: var(--prism-text-muted);\n}\n\n.matrix__variant {\n justify-content: center;\n}\n\n.matrix__head-line {\n display: flex;\n gap: var(--sp-3);\n align-items: baseline;\n justify-content: space-between;\n min-width: 0;\n}\n\n.matrix__title,\n.matrix__name {\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: var(--fs-sm);\n font-weight: 600;\n color: var(--prism-text);\n white-space: nowrap;\n}\n\n.matrix__signature,\n.matrix__fit {\n overflow: hidden;\n text-overflow: ellipsis;\n font-family: var(--prism-font-mono);\n font-size: var(--fs-xs);\n color: var(--prism-text-muted);\n white-space: nowrap;\n}\n\n.matrix__fit {\n flex: none;\n font-variant-numeric: tabular-nums;\n cursor: help;\n}\n\n/* A state that fits no variant at all: most likely a selector with a typo. */\n.matrix__head[data-fits-nowhere] {\n box-shadow: inset 0 -2px 0 var(--prism-warn);\n}\n\n.matrix__head[data-fits-nowhere] .matrix__fit {\n color: var(--prism-warn);\n}\n\n/* 4px each side: 8px between neighbouring cells. */\n.matrix__slot {\n display: flex;\n min-width: 0;\n padding: var(--sp-2);\n}\n\n/* A variant that opted out has a single cell, over Default and every state:\n it is not combined with any of them. */\n.matrix__slot--span {\n grid-column: 2 / -1;\n}\n\n.matrix__list {\n display: flex;\n flex: 1;\n min-width: 0;\n}\n\n.matrix__list > prism-overview-cell {\n flex: 1;\n}\n"] }]
|
|
154
|
+
}], () => [], { component: [{ type: i0.Input, args: [{ isSignal: true, alias: "component", required: true }] }] }); })();
|
|
155
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismOverviewMatrixComponent, { className: "PrismOverviewMatrixComponent", filePath: "app/overview/prism-overview-matrix.component.ts", lineNumber: 34 }); })();
|
|
@@ -6,11 +6,15 @@ import * as i0 from "@angular/core";
|
|
|
6
6
|
*
|
|
7
7
|
* No controls of any kind: columns follow the window, and
|
|
8
8
|
* everything else a cell shows is what the variant itself declared.
|
|
9
|
+
*
|
|
10
|
+
* A component that declares `states` gets the matrix instead, variants against
|
|
11
|
+
* states. Without states the sheet stays what it was.
|
|
9
12
|
*/
|
|
10
13
|
export declare class PrismOverviewComponent {
|
|
11
14
|
/** Input name fixed by `prism-view-panel-host`, which feeds every view panel. */
|
|
12
15
|
readonly activeComponent: import("@angular/core").InputSignal<RuntimeComponent | null>;
|
|
13
16
|
protected readonly variants: import("@angular/core").Signal<import("../../index.js").Variant<unknown>[]>;
|
|
17
|
+
protected readonly hasStates: import("@angular/core").Signal<boolean>;
|
|
14
18
|
static ɵfac: i0.ɵɵFactoryDeclaration<PrismOverviewComponent, never>;
|
|
15
19
|
static ɵcmp: i0.ɵɵComponentDeclaration<PrismOverviewComponent, "prism-overview", never, { "activeComponent": { "alias": "activeComponent"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
16
20
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prism-overview.component.d.ts","sourceRoot":"","sources":["../../../src/app/overview/prism-overview.component.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;;
|
|
1
|
+
{"version":3,"file":"prism-overview.component.d.ts","sourceRoot":"","sources":["../../../src/app/overview/prism-overview.component.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;;AAIrE;;;;;;;;;GASG;AACH,qBAYa,sBAAsB;IAC/B,iFAAiF;IACjF,QAAQ,CAAC,eAAe,+DAAwC;IAEhE,SAAS,CAAC,QAAQ,CAAC,QAAQ,8EAA8E;IAEzG,SAAS,CAAC,QAAQ,CAAC,SAAS,0CAAyF;yCAN5G,sBAAsB;2CAAtB,sBAAsB;CAOlC"}
|