@ng-prism/core 22.2.0 → 22.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -24
- package/builders.json +11 -11
- package/dist/app/canvas/canvas-bg.styles.d.ts +1 -1
- package/dist/app/canvas/canvas-bg.styles.d.ts.map +1 -1
- package/dist/app/canvas/canvas-bg.styles.js +17 -0
- package/dist/app/canvas/prism-canvas-bg-pill.component.d.ts.map +1 -1
- package/dist/app/canvas/prism-canvas-bg-pill.component.js +3 -18
- package/dist/app/canvas/prism-canvas-rulers.component.d.ts +1 -0
- package/dist/app/canvas/prism-canvas-rulers.component.d.ts.map +1 -1
- package/dist/app/canvas/prism-canvas-rulers.component.js +9 -14
- package/dist/app/canvas/prism-canvas-toolbar.component.d.ts +23 -6
- package/dist/app/canvas/prism-canvas-toolbar.component.d.ts.map +1 -1
- package/dist/app/canvas/prism-canvas-toolbar.component.js +110 -140
- package/dist/app/canvas/prism-template-popover.component.d.ts.map +1 -1
- package/dist/app/canvas/prism-template-popover.component.js +8 -49
- package/dist/app/canvas/viewport-snap.d.ts +12 -0
- package/dist/app/canvas/viewport-snap.d.ts.map +1 -0
- package/dist/app/canvas/viewport-snap.js +23 -0
- package/dist/app/component-head/head-metrics.d.ts.map +1 -1
- package/dist/app/component-head/head-metrics.js +2 -2
- package/dist/app/component-head/prism-component-head.component.d.ts +1 -1
- package/dist/app/component-head/prism-component-head.component.d.ts.map +1 -1
- package/dist/app/component-head/prism-component-head.component.js +17 -50
- package/dist/app/component-head/prism-head-gauge.component.d.ts.map +1 -1
- package/dist/app/component-head/prism-head-gauge.component.js +4 -36
- package/dist/app/component-head/prism-head-info.component.d.ts.map +1 -1
- package/dist/app/component-head/prism-head-info.component.js +3 -36
- package/dist/app/component-head/prism-stat.component.d.ts.map +1 -1
- package/dist/app/component-head/prism-stat.component.js +3 -14
- package/dist/app/controls/boolean-control.component.d.ts.map +1 -1
- package/dist/app/controls/boolean-control.component.js +4 -12
- package/dist/app/controls/json-control.component.d.ts.map +1 -1
- package/dist/app/controls/json-control.component.js +4 -24
- package/dist/app/controls/number-control.component.d.ts.map +1 -1
- package/dist/app/controls/number-control.component.js +4 -11
- package/dist/app/controls/string-control.component.d.ts.map +1 -1
- package/dist/app/controls/string-control.component.js +4 -11
- package/dist/app/controls/union-control.component.d.ts.map +1 -1
- package/dist/app/controls/union-control.component.js +4 -16
- package/dist/app/directives/prism-resizer.directive.d.ts +24 -1
- package/dist/app/directives/prism-resizer.directive.d.ts.map +1 -1
- package/dist/app/directives/prism-resizer.directive.js +44 -7
- package/dist/app/directives/resize-value.d.ts +22 -0
- package/dist/app/directives/resize-value.d.ts.map +1 -0
- package/dist/app/directives/resize-value.js +23 -0
- package/dist/app/discovery-manifest.d.ts.map +1 -1
- package/dist/app/discovery-manifest.js +5 -7
- package/dist/app/header/prism-header-widget-host.component.d.ts.map +1 -1
- package/dist/app/header/prism-header-widget-host.component.js +4 -8
- package/dist/app/header/prism-header.component.d.ts.map +1 -1
- package/dist/app/header/prism-header.component.js +8 -77
- package/dist/app/hmr.d.ts.map +1 -1
- package/dist/app/icons/icon-registry.d.ts.map +1 -1
- package/dist/app/icons/icon-registry.js +2 -1
- package/dist/app/icons/prism-icon.component.d.ts.map +1 -1
- package/dist/app/icons/prism-icon.component.js +5 -5
- package/dist/app/index.d.ts +3 -3
- package/dist/app/index.d.ts.map +1 -1
- package/dist/app/index.js +3 -3
- package/dist/app/layout-menu/prism-layout-menu.component.d.ts.map +1 -1
- package/dist/app/layout-menu/prism-layout-menu.component.js +3 -77
- package/dist/app/overview/overview-panel.js +1 -1
- package/dist/app/overview/overview-visibility.d.ts.map +1 -1
- package/dist/app/overview/prism-overview-cell.component.d.ts.map +1 -1
- package/dist/app/overview/prism-overview-cell.component.js +10 -17
- package/dist/app/overview/prism-overview.component.d.ts.map +1 -1
- package/dist/app/overview/prism-overview.component.js +4 -12
- package/dist/app/page-renderer/prism-page-renderer.component.d.ts.map +1 -1
- package/dist/app/page-renderer/prism-page-renderer.component.js +4 -17
- package/dist/app/panels/a11y/a11y-audit.service.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-audit.service.js +14 -2
- package/dist/app/panels/a11y/a11y-core.plugin.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-core.plugin.js +1 -1
- package/dist/app/panels/a11y/a11y-dom-utils.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-dom-utils.js +9 -6
- package/dist/app/panels/a11y/a11y-header-badge.component.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-header-badge.component.js +6 -22
- package/dist/app/panels/a11y/a11y-keyboard-overlay.component.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-keyboard-overlay.component.js +6 -25
- package/dist/app/panels/a11y/a11y-keyboard.component.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-keyboard.component.js +5 -36
- package/dist/app/panels/a11y/a11y-keyboard.service.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-keyboard.service.js +2 -2
- package/dist/app/panels/a11y/a11y-overlay-host.component.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-overlay-host.component.js +5 -32
- package/dist/app/panels/a11y/a11y-panel-state.service.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-panel.component.d.ts +1 -1
- package/dist/app/panels/a11y/a11y-panel.component.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-panel.component.js +7 -69
- package/dist/app/panels/a11y/a11y-perspective.service.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-score.component.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-score.component.js +4 -31
- package/dist/app/panels/a11y/a11y-sr-overlay.component.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-sr-overlay.component.js +8 -28
- package/dist/app/panels/a11y/a11y-sr.component.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-sr.component.js +5 -28
- package/dist/app/panels/a11y/a11y-sr.service.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-sr.service.js +4 -7
- package/dist/app/panels/a11y/a11y-summary.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-summary.js +2 -5
- package/dist/app/panels/a11y/a11y-thresholds.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-thresholds.js +1 -1
- package/dist/app/panels/a11y/a11y-tree.component.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-tree.component.js +9 -46
- package/dist/app/panels/a11y/a11y-tree.service.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-tree.service.js +3 -5
- package/dist/app/panels/a11y/a11y-violations.component.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-violations.component.js +7 -58
- package/dist/app/panels/a11y/a11y.types.d.ts.map +1 -1
- package/dist/app/panels/builtin-header-widgets.js +2 -2
- package/dist/app/panels/builtin-navigation-decorations.d.ts.map +1 -1
- package/dist/app/panels/builtin-navigation-decorations.js +2 -2
- package/dist/app/panels/builtin-panels.d.ts.map +1 -1
- package/dist/app/panels/builtin-panels.js +2 -7
- package/dist/app/panels/controls/controls-plugin.js +3 -3
- package/dist/app/panels/controls/non-editable-input-types.d.ts.map +1 -1
- package/dist/app/panels/controls/non-editable-input-types.js +1 -5
- package/dist/app/panels/controls/prism-controls-panel.component.d.ts.map +1 -1
- package/dist/app/panels/controls/prism-controls-panel.component.js +5 -95
- package/dist/app/panels/events/events-plugin.js +3 -3
- package/dist/app/panels/events/prism-events-panel.component.d.ts.map +1 -1
- package/dist/app/panels/events/prism-events-panel.component.js +5 -23
- package/dist/app/panels/events/prism-json-node.component.d.ts.map +1 -1
- package/dist/app/panels/events/prism-json-node.component.js +4 -86
- package/dist/app/panels/events/prism-json-node.utils.d.ts.map +1 -1
- package/dist/app/panels/panel-host/panel-badge.d.ts.map +1 -1
- package/dist/app/panels/panel-host/panel-badge.js +2 -4
- package/dist/app/panels/panel-host/prism-panel-host.component.d.ts +1 -1
- package/dist/app/panels/panel-host/prism-panel-host.component.d.ts.map +1 -1
- package/dist/app/panels/panel-host/prism-panel-host.component.js +12 -67
- package/dist/app/provide-prism.d.ts +1 -1
- package/dist/app/provide-prism.d.ts.map +1 -1
- package/dist/app/provide-prism.js +7 -11
- package/dist/app/renderer/known-inputs.d.ts.map +1 -1
- package/dist/app/renderer/overlay-resolver.d.ts.map +1 -1
- package/dist/app/renderer/overlay-resolver.js +1 -1
- package/dist/app/renderer/prism-renderer.component.d.ts +27 -2
- package/dist/app/renderer/prism-renderer.component.d.ts.map +1 -1
- package/dist/app/renderer/prism-renderer.component.js +94 -76
- package/dist/app/renderer/projectable-content.d.ts.map +1 -1
- package/dist/app/renderer/projectable-content.js +1 -3
- package/dist/app/renderer/snippet-generator.d.ts +1 -1
- package/dist/app/renderer/snippet-generator.d.ts.map +1 -1
- package/dist/app/renderer/snippet-generator.js +7 -22
- package/dist/app/services/navigation-item.types.d.ts +1 -1
- package/dist/app/services/navigation-item.types.d.ts.map +1 -1
- package/dist/app/services/prism-canvas.service.d.ts +22 -0
- package/dist/app/services/prism-canvas.service.d.ts.map +1 -1
- package/dist/app/services/prism-canvas.service.js +49 -2
- package/dist/app/services/prism-capture.service.d.ts.map +1 -1
- package/dist/app/services/prism-capture.service.js +2 -6
- package/dist/app/services/prism-event-log.service.d.ts.map +1 -1
- package/dist/app/services/prism-event-log.service.js +1 -4
- package/dist/app/services/prism-layout.service.d.ts.map +1 -1
- package/dist/app/services/prism-layout.service.js +5 -4
- package/dist/app/services/prism-manifest.service.d.ts +1 -1
- package/dist/app/services/prism-manifest.service.d.ts.map +1 -1
- package/dist/app/services/prism-manifest.service.js +1 -1
- package/dist/app/services/prism-navigation.service.d.ts +1 -1
- package/dist/app/services/prism-navigation.service.d.ts.map +1 -1
- package/dist/app/services/prism-navigation.service.js +5 -13
- package/dist/app/services/prism-panel.service.d.ts.map +1 -1
- package/dist/app/services/prism-panel.service.js +2 -5
- package/dist/app/services/prism-persistence.service.d.ts.map +1 -1
- package/dist/app/services/prism-persistence.service.js +8 -10
- package/dist/app/services/prism-plugin.service.d.ts.map +1 -1
- package/dist/app/services/prism-renderer.service.d.ts.map +1 -1
- package/dist/app/services/prism-renderer.service.js +5 -9
- package/dist/app/services/prism-search.service.d.ts.map +1 -1
- package/dist/app/services/prism-search.service.js +1 -2
- package/dist/app/services/prism-theme.service.d.ts.map +1 -1
- package/dist/app/services/prism-theme.service.js +6 -4
- package/dist/app/services/prism-url-state.service.d.ts.map +1 -1
- package/dist/app/services/prism-url-state.service.js +3 -9
- package/dist/app/services/prism-variant-bg.service.d.ts.map +1 -1
- package/dist/app/services/prism-variant-bg.service.js +3 -5
- package/dist/app/shared/prism-metric-badge.component.d.ts.map +1 -1
- package/dist/app/shared/prism-metric-badge.component.js +4 -17
- package/dist/app/shell/prism-shell.component.d.ts.map +1 -1
- package/dist/app/shell/prism-shell.component.js +20 -122
- package/dist/app/sidebar/navigation-decorations.d.ts.map +1 -1
- package/dist/app/sidebar/navigation-decorations.js +1 -1
- package/dist/app/sidebar/prism-sidebar.component.d.ts +1 -1
- package/dist/app/sidebar/prism-sidebar.component.d.ts.map +1 -1
- package/dist/app/sidebar/prism-sidebar.component.js +19 -154
- package/dist/app/theme/prism-default-theme.d.ts.map +1 -1
- package/dist/app/theme/prism-default-theme.js +5 -5
- package/dist/app/tokens/prism-tokens.d.ts.map +1 -1
- package/dist/app/tokens/prism-tokens.js +1 -1
- package/dist/app/variant-ribbon/prism-variant-ribbon.component.d.ts.map +1 -1
- package/dist/app/variant-ribbon/prism-variant-ribbon.component.js +4 -49
- package/dist/app/variant-ribbon/spectrum.d.ts.map +1 -1
- package/dist/app/view-tab-bar/next-view-id.d.ts.map +1 -1
- package/dist/app/view-tab-bar/next-view-id.js +1 -3
- package/dist/app/view-tab-bar/prism-view-panel-host.component.d.ts.map +1 -1
- package/dist/app/view-tab-bar/prism-view-panel-host.component.js +5 -17
- package/dist/app/view-tab-bar/prism-view-tab-bar.component.d.ts.map +1 -1
- package/dist/app/view-tab-bar/prism-view-tab-bar.component.js +4 -27
- package/dist/builder/a11y/a11y-report-reader.d.ts +1 -1
- package/dist/builder/a11y/a11y-report-reader.d.ts.map +1 -1
- package/dist/builder/a11y/a11y-report-reader.js +7 -7
- package/dist/builder/build/index.d.ts.map +1 -1
- package/dist/builder/build/index.js +5 -9
- package/dist/builder/build/schema.d.ts.map +1 -1
- package/dist/builder/config-loader/config-loader.d.ts.map +1 -1
- package/dist/builder/config-loader/config-loader.js +4 -5
- package/dist/builder/manifest/host-parser.d.ts.map +1 -1
- package/dist/builder/manifest/host-parser.js +1 -1
- package/dist/builder/manifest/runtime-manifest.generator.d.ts +1 -1
- package/dist/builder/manifest/runtime-manifest.generator.d.ts.map +1 -1
- package/dist/builder/manifest/runtime-manifest.generator.js +9 -34
- package/dist/builder/plugin-runner/plugin-runner.d.ts.map +1 -1
- package/dist/builder/plugin-runner/plugin-runner.js +1 -3
- package/dist/builder/scanner/ast-utils.d.ts.map +1 -1
- package/dist/builder/scanner/ast-utils.js +2 -8
- package/dist/builder/scanner/component.scanner.d.ts.map +1 -1
- package/dist/builder/scanner/component.scanner.js +15 -22
- package/dist/builder/scanner/entry-point-discovery.d.ts.map +1 -1
- package/dist/builder/scanner/entry-point-discovery.js +3 -5
- package/dist/builder/scanner/entry-point.scanner.d.ts.map +1 -1
- package/dist/builder/scanner/entry-point.scanner.js +1 -3
- package/dist/builder/scanner/index.d.ts +1 -1
- package/dist/builder/scanner/index.d.ts.map +1 -1
- package/dist/builder/scanner/input.extractor.d.ts.map +1 -1
- package/dist/builder/scanner/input.extractor.js +11 -28
- package/dist/builder/scanner/manifest.generator.d.ts.map +1 -1
- package/dist/builder/scanner/manifest.generator.js +2 -4
- package/dist/builder/scanner/scanner.d.ts.map +1 -1
- package/dist/builder/scanner/scanner.js +4 -4
- package/dist/builder/serve/index.d.ts.map +1 -1
- package/dist/builder/serve/index.js +8 -10
- package/dist/builder/serve/schema.d.ts.map +1 -1
- package/dist/builder/shared/index.d.ts +1 -1
- package/dist/builder/shared/index.d.ts.map +1 -1
- package/dist/builder/shared/index.js +1 -1
- package/dist/builder/shared/prism-pipeline.d.ts.map +1 -1
- package/dist/builder/shared/prism-pipeline.js +18 -25
- package/dist/builder/shared/resolve-cache-dir.d.ts.map +1 -1
- package/dist/builder/shared/resolve-cache-dir.js +1 -1
- package/dist/builder/watcher/index.d.ts +1 -1
- package/dist/builder/watcher/index.d.ts.map +1 -1
- package/dist/builder/watcher/prism-watcher.d.ts.map +1 -1
- package/dist/builder/watcher/prism-watcher.js +12 -10
- package/dist/config/index.d.ts +2 -2
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +1 -1
- package/dist/decorator/index.d.ts +1 -1
- package/dist/decorator/index.d.ts.map +1 -1
- package/dist/decorator/showcase.decorator.d.ts.map +1 -1
- package/dist/decorator/showcase.types.d.ts.map +1 -1
- package/dist/plugin/index.d.ts +4 -4
- package/dist/plugin/index.d.ts.map +1 -1
- package/dist/plugin/index.js +2 -2
- package/dist/plugin/page-helpers.d.ts +1 -1
- package/dist/plugin/page-helpers.d.ts.map +1 -1
- package/dist/plugin/page-helpers.js +2 -2
- package/dist/plugin/page.types.d.ts.map +1 -1
- package/dist/plugin/plugin.types.d.ts +1 -1
- package/dist/plugin/plugin.types.d.ts.map +1 -1
- package/dist/schematics/migrations/v21-13-manifest-cache/index.d.ts.map +1 -1
- package/dist/schematics/migrations/v21-13-manifest-cache/index.js +4 -10
- package/dist/schematics/migrations/v22-0-cache-dir-rename/index.d.ts.map +1 -1
- package/dist/schematics/migrations/v22-0-cache-dir-rename/index.js +4 -8
- package/dist/schematics/ng-add/index.d.ts.map +1 -1
- package/dist/schematics/ng-add/index.js +122 -56
- package/dist/schematics/ng-add/schema.d.ts.map +1 -1
- package/dist/schematics/utils/config-ast.d.ts.map +1 -1
- package/dist/schematics/utils/config-ast.js +8 -15
- package/dist/schematics/utils/tsconfig-paths.d.ts.map +1 -1
- package/dist/schematics/utils/tsconfig-paths.js +1 -1
- package/dist/shared/canvas-bg.type.d.ts.map +1 -1
- package/dist/shared/canvas-bg.type.js +1 -8
- package/dist/shared/canvas-layout.type.d.ts.map +1 -1
- package/dist/shared/canvas-layout.type.js +1 -4
- package/dist/shared/variant-bg.d.ts.map +1 -1
- package/dist/shared/viewport.type.d.ts +47 -0
- package/dist/shared/viewport.type.d.ts.map +1 -0
- package/dist/shared/viewport.type.js +48 -0
- package/dist/transformer/cli.js +0 -0
- package/dist/transformer/index.d.ts +2 -2
- package/dist/transformer/index.d.ts.map +1 -1
- package/dist/transformer/index.js +2 -2
- package/dist/transformer/showcase-strip.transformer.d.ts.map +1 -1
- package/dist/transformer/showcase-strip.transformer.js +6 -15
- package/dist/transformer/strip-directory.d.ts.map +1 -1
- package/dist/transformer/strip-directory.js +2 -4
- package/package.json +4 -1
- package/schematics/collection.json +7 -7
- package/schematics/migrations.json +12 -12
- package/schematics/ng-add/schema.json +22 -22
- package/src/builder/build/schema.json +36 -36
- package/src/builder/serve/schema.json +37 -37
|
@@ -1,48 +1,81 @@
|
|
|
1
|
-
import { Component, inject
|
|
2
|
-
import { PrismIconComponent } from '../icons/prism-icon.component.js';
|
|
1
|
+
import { ChangeDetectionStrategy, Component, inject } from '@angular/core';
|
|
3
2
|
import { CANVAS_BGS } from '../../shared/canvas-bg.type.js';
|
|
3
|
+
import { VIEWPORT_SNAPS } from '../../shared/viewport.type.js';
|
|
4
|
+
import { PrismIconComponent } from '../icons/prism-icon.component.js';
|
|
4
5
|
import { PrismCanvasService } from '../services/prism-canvas.service.js';
|
|
5
6
|
import { PrismVariantBgService } from '../services/prism-variant-bg.service.js';
|
|
6
7
|
import * as i0 from "@angular/core";
|
|
7
8
|
const _forTrack0 = ($index, $item) => $item.value;
|
|
8
|
-
function
|
|
9
|
-
|
|
10
|
-
i0.ɵɵ
|
|
11
|
-
i0.ɵɵ
|
|
9
|
+
function PrismCanvasToolbarComponent_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
10
|
+
i0.ɵɵelementStart(0, "span", 2);
|
|
11
|
+
i0.ɵɵtext(1);
|
|
12
|
+
i0.ɵɵelementEnd();
|
|
13
|
+
} if (rf & 2) {
|
|
14
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
15
|
+
i0.ɵɵadvance();
|
|
16
|
+
i0.ɵɵtextInterpolate1("", ctx_r0.canvas.viewportWidth(), "px");
|
|
17
|
+
} }
|
|
18
|
+
function PrismCanvasToolbarComponent_For_20_Template(rf, ctx) { if (rf & 1) {
|
|
19
|
+
const _r2 = i0.ɵɵgetCurrentView();
|
|
20
|
+
i0.ɵɵelementStart(0, "button", 19);
|
|
21
|
+
i0.ɵɵlistener("click", function PrismCanvasToolbarComponent_For_20_Template_button_click_0_listener() { const bg_r3 = i0.ɵɵrestoreView(_r2).$implicit; const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.setBg(bg_r3)); });
|
|
12
22
|
i0.ɵɵtext(1);
|
|
13
23
|
i0.ɵɵelementEnd();
|
|
14
24
|
} if (rf & 2) {
|
|
15
|
-
const
|
|
16
|
-
const
|
|
17
|
-
i0.ɵɵclassProp("is-on",
|
|
18
|
-
i0.ɵɵattribute("title",
|
|
25
|
+
const bg_r3 = ctx.$implicit;
|
|
26
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
27
|
+
i0.ɵɵclassProp("is-on", ctx_r0.variantBg.effective() === bg_r3)("is-rec", ctx_r0.variantBg.recommended() === bg_r3);
|
|
28
|
+
i0.ɵɵattribute("title", ctx_r0.bgTitle(bg_r3));
|
|
19
29
|
i0.ɵɵadvance();
|
|
20
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
30
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r0.capitalize(bg_r3), " ");
|
|
21
31
|
} }
|
|
22
|
-
function
|
|
32
|
+
function PrismCanvasToolbarComponent_For_25_Template(rf, ctx) { if (rf & 1) {
|
|
23
33
|
const _r4 = i0.ɵɵgetCurrentView();
|
|
24
|
-
i0.ɵɵelementStart(0, "button",
|
|
25
|
-
i0.ɵɵlistener("click", function
|
|
34
|
+
i0.ɵɵelementStart(0, "button", 19);
|
|
35
|
+
i0.ɵɵlistener("click", function PrismCanvasToolbarComponent_For_25_Template_button_click_0_listener() { const z_r5 = i0.ɵɵrestoreView(_r4).$implicit; const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.canvas.setZoom(z_r5.value)); });
|
|
26
36
|
i0.ɵɵtext(1);
|
|
27
37
|
i0.ɵɵelementEnd();
|
|
28
38
|
} if (rf & 2) {
|
|
29
39
|
const z_r5 = ctx.$implicit;
|
|
30
|
-
const
|
|
31
|
-
i0.ɵɵclassProp("is-on",
|
|
40
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
41
|
+
i0.ɵɵclassProp("is-on", ctx_r0.canvas.zoom() === z_r5.value);
|
|
32
42
|
i0.ɵɵadvance();
|
|
33
43
|
i0.ɵɵtextInterpolate1(" ", z_r5.label, " ");
|
|
34
44
|
} }
|
|
45
|
+
function PrismCanvasToolbarComponent_For_32_Template(rf, ctx) { if (rf & 1) {
|
|
46
|
+
const _r6 = i0.ɵɵgetCurrentView();
|
|
47
|
+
i0.ɵɵelementStart(0, "button", 19);
|
|
48
|
+
i0.ɵɵlistener("click", function PrismCanvasToolbarComponent_For_32_Template_button_click_0_listener() { const w_r7 = i0.ɵɵrestoreView(_r6).$implicit; const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.canvas.setViewportWidth(w_r7)); });
|
|
49
|
+
i0.ɵɵtext(1);
|
|
50
|
+
i0.ɵɵelementEnd();
|
|
51
|
+
} if (rf & 2) {
|
|
52
|
+
const w_r7 = ctx.$implicit;
|
|
53
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
54
|
+
i0.ɵɵclassProp("is-on", ctx_r0.canvas.viewportWidth() === w_r7);
|
|
55
|
+
i0.ɵɵadvance();
|
|
56
|
+
i0.ɵɵtextInterpolate1(" ", w_r7, " ");
|
|
57
|
+
} }
|
|
35
58
|
/**
|
|
36
59
|
* The canvas tools, as a rail floating over the canvas instead of a band above
|
|
37
60
|
* it.
|
|
38
61
|
*
|
|
39
|
-
* The
|
|
62
|
+
* The six entries were never one kind of control, and the split follows that
|
|
40
63
|
* rather than the topic: guides and rulers are toggles you flip constantly
|
|
41
|
-
* while
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
64
|
+
* while working, so they toggle at their own button; canvas background and zoom
|
|
65
|
+
* are choosers you set once, so they move behind a menu; the template is a view
|
|
66
|
+
* rather than a setting and keeps its own button. The viewport is the sixth
|
|
67
|
+
* entry, and like zoom it does not stay on one side of that split — zoom
|
|
68
|
+
* already surfaces as a chooser in the menu and a readout on the rail, and the
|
|
69
|
+
* viewport surfaces the same way, as a toggle on the rail because switching the
|
|
70
|
+
* constraint on and off is something you do constantly, and a width chooser in
|
|
71
|
+
* the menu because the specific width is something you set once you have
|
|
72
|
+
* decided to constrain at all.
|
|
73
|
+
*
|
|
74
|
+
* Two numbers live on the rail as readouts, not one: the zoom percentage and
|
|
75
|
+
* the active viewport width are both things you read far more often than you
|
|
76
|
+
* set. They differ in permanence, not in kind — the zoom percentage never
|
|
77
|
+
* leaves, but the width is only there once the toggle above has switched the
|
|
78
|
+
* constraint on, so it takes a second line rather than a fixed one.
|
|
46
79
|
*
|
|
47
80
|
* The host deliberately generates no box. The rail has to be a direct child of
|
|
48
81
|
* `.prism-canvas-wrap` that does not contain the stage, because that is exactly
|
|
@@ -103,47 +136,70 @@ export class PrismCanvasToolbarComponent {
|
|
|
103
136
|
{ value: 0.75, label: '75%' },
|
|
104
137
|
{ value: 1, label: '100%' },
|
|
105
138
|
{ value: 1.5, label: '150%' },
|
|
106
|
-
{ value: 2, label: '200%' }
|
|
139
|
+
{ value: 2, label: '200%' }
|
|
107
140
|
];
|
|
141
|
+
/**
|
|
142
|
+
* The named widths, offered exactly the way the zoom chooser is.
|
|
143
|
+
*
|
|
144
|
+
* Plain numbers and no device names: this tool narrows a box and simulates
|
|
145
|
+
* nothing, so calling 390 "iPhone" would promise a fidelity it does not have.
|
|
146
|
+
*/
|
|
147
|
+
viewports = VIEWPORT_SNAPS;
|
|
108
148
|
capitalize(s) {
|
|
109
149
|
return s.charAt(0).toUpperCase() + s.slice(1);
|
|
110
150
|
}
|
|
111
151
|
static ɵfac = function PrismCanvasToolbarComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || PrismCanvasToolbarComponent)(); };
|
|
112
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PrismCanvasToolbarComponent, selectors: [["prism-canvas-toolbar"]], decls:
|
|
152
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PrismCanvasToolbarComponent, selectors: [["prism-canvas-toolbar"]], decls: 33, vars: 20, consts: [[1, "prism-toolrail"], [1, "prism-toolrail__zoom"], [1, "prism-toolrail__vp"], ["type", "button", "title", "Toggle guides", "aria-label", "Toggle guides", 1, "prism-toolrail__btn", 3, "click"], ["name", "crosshair", 3, "size"], ["type", "button", "title", "Toggle rulers", "aria-label", "Toggle rulers", 1, "prism-toolrail__btn", 3, "click"], ["name", "move", 3, "size"], ["type", "button", "title", "Toggle viewport width", "aria-label", "Toggle viewport width", 1, "prism-toolrail__btn", 3, "click"], ["name", "ruler-dimension", 3, "size"], ["type", "button", "popovertarget", "prism-tools", "title", "Canvas, zoom and width", "aria-label", "Canvas, zoom and width", 1, "prism-toolrail__btn"], ["name", "sliders-horizontal", 3, "size"], [1, "prism-toolrail__sep"], ["type", "button", "popovertarget", "prism-template", "title", "Toggle Angular template", "aria-label", "Toggle Angular template", 1, "prism-toolrail__btn"], ["name", "code", 3, "size"], ["popover", "", "id", "prism-tools", "role", "dialog", "aria-label", "Canvas, zoom and width", 1, "prism-toolmenu"], [1, "prism-toolmenu__lbl"], [1, "prism-toolmenu__row"], ["type", "button", 3, "is-on", "is-rec"], ["type", "button", 3, "is-on"], ["type", "button", 3, "click"]], template: function PrismCanvasToolbarComponent_Template(rf, ctx) { if (rf & 1) {
|
|
113
153
|
i0.ɵɵelementStart(0, "div", 0)(1, "span", 1);
|
|
114
154
|
i0.ɵɵtext(2);
|
|
155
|
+
i0.ɵɵconditionalCreate(3, PrismCanvasToolbarComponent_Conditional_3_Template, 2, 1, "span", 2);
|
|
115
156
|
i0.ɵɵelementEnd();
|
|
116
|
-
i0.ɵɵelementStart(
|
|
117
|
-
i0.ɵɵlistener("click", function
|
|
118
|
-
i0.ɵɵelement(
|
|
157
|
+
i0.ɵɵelementStart(4, "button", 3);
|
|
158
|
+
i0.ɵɵlistener("click", function PrismCanvasToolbarComponent_Template_button_click_4_listener() { return ctx.canvas.toggleGuides(); });
|
|
159
|
+
i0.ɵɵelement(5, "prism-icon", 4);
|
|
119
160
|
i0.ɵɵelementEnd();
|
|
120
|
-
i0.ɵɵelementStart(
|
|
121
|
-
i0.ɵɵlistener("click", function
|
|
122
|
-
i0.ɵɵelement(
|
|
161
|
+
i0.ɵɵelementStart(6, "button", 5);
|
|
162
|
+
i0.ɵɵlistener("click", function PrismCanvasToolbarComponent_Template_button_click_6_listener() { return ctx.canvas.toggleRulers(); });
|
|
163
|
+
i0.ɵɵelement(7, "prism-icon", 6);
|
|
123
164
|
i0.ɵɵelementEnd();
|
|
124
|
-
i0.ɵɵelementStart(
|
|
125
|
-
i0.ɵɵ
|
|
165
|
+
i0.ɵɵelementStart(8, "button", 7);
|
|
166
|
+
i0.ɵɵlistener("click", function PrismCanvasToolbarComponent_Template_button_click_8_listener() { return ctx.canvas.toggleViewport(); });
|
|
167
|
+
i0.ɵɵelement(9, "prism-icon", 8);
|
|
126
168
|
i0.ɵɵelementEnd();
|
|
127
|
-
i0.ɵɵelement(9, "span", 8);
|
|
128
169
|
i0.ɵɵelementStart(10, "button", 9);
|
|
129
170
|
i0.ɵɵelement(11, "prism-icon", 10);
|
|
171
|
+
i0.ɵɵelementEnd();
|
|
172
|
+
i0.ɵɵelement(12, "span", 11);
|
|
173
|
+
i0.ɵɵelementStart(13, "button", 12);
|
|
174
|
+
i0.ɵɵelement(14, "prism-icon", 13);
|
|
130
175
|
i0.ɵɵelementEnd()();
|
|
131
|
-
i0.ɵɵelementStart(
|
|
132
|
-
i0.ɵɵtext(
|
|
176
|
+
i0.ɵɵelementStart(15, "div", 14)(16, "span", 15);
|
|
177
|
+
i0.ɵɵtext(17, "Canvas");
|
|
178
|
+
i0.ɵɵelementEnd();
|
|
179
|
+
i0.ɵɵelementStart(18, "div", 16);
|
|
180
|
+
i0.ɵɵrepeaterCreate(19, PrismCanvasToolbarComponent_For_20_Template, 2, 6, "button", 17, i0.ɵɵrepeaterTrackByIdentity);
|
|
133
181
|
i0.ɵɵelementEnd();
|
|
134
|
-
i0.ɵɵelementStart(
|
|
135
|
-
i0.ɵɵ
|
|
182
|
+
i0.ɵɵelementStart(21, "span", 15);
|
|
183
|
+
i0.ɵɵtext(22, "Zoom");
|
|
136
184
|
i0.ɵɵelementEnd();
|
|
137
|
-
i0.ɵɵelementStart(
|
|
138
|
-
i0.ɵɵ
|
|
185
|
+
i0.ɵɵelementStart(23, "div", 16);
|
|
186
|
+
i0.ɵɵrepeaterCreate(24, PrismCanvasToolbarComponent_For_25_Template, 2, 3, "button", 18, _forTrack0);
|
|
139
187
|
i0.ɵɵelementEnd();
|
|
140
|
-
i0.ɵɵelementStart(
|
|
141
|
-
i0.ɵɵ
|
|
188
|
+
i0.ɵɵelementStart(26, "span", 15);
|
|
189
|
+
i0.ɵɵtext(27, "Width");
|
|
190
|
+
i0.ɵɵelementEnd();
|
|
191
|
+
i0.ɵɵelementStart(28, "div", 16)(29, "button", 19);
|
|
192
|
+
i0.ɵɵlistener("click", function PrismCanvasToolbarComponent_Template_button_click_29_listener() { return ctx.canvas.setViewportWidth(null); });
|
|
193
|
+
i0.ɵɵtext(30, " Auto ");
|
|
194
|
+
i0.ɵɵelementEnd();
|
|
195
|
+
i0.ɵɵrepeaterCreate(31, PrismCanvasToolbarComponent_For_32_Template, 2, 3, "button", 18, i0.ɵɵrepeaterTrackByIdentity);
|
|
142
196
|
i0.ɵɵelementEnd()();
|
|
143
197
|
} if (rf & 2) {
|
|
144
198
|
i0.ɵɵclassProp("has-rulers", ctx.canvas.rulers());
|
|
145
199
|
i0.ɵɵadvance(2);
|
|
146
|
-
i0.ɵɵtextInterpolate1("", ctx.Math.round(ctx.canvas.zoom() * 100), "%");
|
|
200
|
+
i0.ɵɵtextInterpolate1(" ", ctx.Math.round(ctx.canvas.zoom() * 100), "% ");
|
|
201
|
+
i0.ɵɵadvance();
|
|
202
|
+
i0.ɵɵconditional(ctx.canvas.viewportWidth() !== null ? 3 : -1);
|
|
147
203
|
i0.ɵɵadvance();
|
|
148
204
|
i0.ɵɵclassProp("is-on", ctx.canvas.guides());
|
|
149
205
|
i0.ɵɵattribute("aria-pressed", ctx.canvas.guides());
|
|
@@ -154,6 +210,11 @@ export class PrismCanvasToolbarComponent {
|
|
|
154
210
|
i0.ɵɵattribute("aria-pressed", ctx.canvas.rulers());
|
|
155
211
|
i0.ɵɵadvance();
|
|
156
212
|
i0.ɵɵproperty("size", 14);
|
|
213
|
+
i0.ɵɵadvance();
|
|
214
|
+
i0.ɵɵclassProp("is-on", ctx.canvas.viewportWidth() !== null);
|
|
215
|
+
i0.ɵɵattribute("aria-pressed", ctx.canvas.viewportWidth() !== null);
|
|
216
|
+
i0.ɵɵadvance();
|
|
217
|
+
i0.ɵɵproperty("size", 14);
|
|
157
218
|
i0.ɵɵadvance(2);
|
|
158
219
|
i0.ɵɵproperty("size", 14);
|
|
159
220
|
i0.ɵɵadvance(3);
|
|
@@ -162,105 +223,14 @@ export class PrismCanvasToolbarComponent {
|
|
|
162
223
|
i0.ɵɵrepeater(ctx.bgs);
|
|
163
224
|
i0.ɵɵadvance(5);
|
|
164
225
|
i0.ɵɵrepeater(ctx.zooms);
|
|
165
|
-
|
|
226
|
+
i0.ɵɵadvance(5);
|
|
227
|
+
i0.ɵɵclassProp("is-on", ctx.canvas.viewportWidth() === null);
|
|
228
|
+
i0.ɵɵadvance(2);
|
|
229
|
+
i0.ɵɵrepeater(ctx.viewports);
|
|
230
|
+
} }, dependencies: [PrismIconComponent], styles: ["[_nghost-%COMP%] {\n display: contents;\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n.prism-toolrail[_ngcontent-%COMP%] {\n position: absolute;\n top: var(--%NS%prism-canvas-overlay-top, 12px);\n right: var(--%NS%prism-canvas-overlay-inline, 20px);\n z-index: 5;\n display: flex;\n flex-direction: column;\n gap: var(--%NS%sp-1);\n align-items: center;\n padding: var(--%NS%sp-2);\n anchor-name: --prism-toolrail;\n background: var(--%NS%prism-bg-elevated);\n border: 1px solid var(--%NS%prism-border-strong);\n border-radius: var(--%NS%radius-md);\n box-shadow: 0 4px 16px -6px rgb(0 0 0 / 40%);\n}\n\n.prism-toolrail.has-rulers[_ngcontent-%COMP%] {\n --%NS%prism-canvas-overlay-top: 28px;\n --%NS%prism-canvas-overlay-inline: 28px;\n}\n\n.prism-toolrail__zoom[_ngcontent-%COMP%] {\n width: 100%;\n padding-bottom: var(--%NS%sp-1);\n font-family: var(--%NS%font-mono);\n font-size: 9px;\n color: var(--%NS%prism-text-ghost);\n text-align: center;\n border-bottom: 1px solid var(--%NS%prism-border);\n}\n\n\n\n\n.prism-toolrail__vp[_ngcontent-%COMP%] {\n display: block;\n color: var(--%NS%prism-measure);\n}\n\n.prism-toolrail__btn[_ngcontent-%COMP%] {\n display: grid;\n place-items: center;\n width: 26px;\n height: 26px;\n padding: 0;\n color: var(--%NS%prism-text-muted);\n cursor: pointer;\n background: transparent;\n border: 0;\n border-radius: var(--%NS%radius-xs);\n}\n\n.prism-toolrail__btn[_ngcontent-%COMP%]:hover {\n color: var(--%NS%prism-text);\n}\n\n.prism-toolrail__btn[_ngcontent-%COMP%]:focus-visible {\n outline: 2px solid var(--%NS%prism-primary);\n outline-offset: 1px;\n}\n\n.prism-toolrail__btn.is-on[_ngcontent-%COMP%] {\n color: var(--%NS%prism-text);\n background: color-mix(in srgb, var(--%NS%prism-primary) 18%, transparent);\n}\n\n.prism-toolrail__sep[_ngcontent-%COMP%] {\n width: 14px;\n height: 1px;\n margin: var(--%NS%sp-1) 0;\n background: var(--%NS%prism-border);\n}\n\n.prism-toolmenu[_ngcontent-%COMP%] {\n inset: auto;\n gap: var(--%NS%sp-2);\n padding: var(--%NS%sp-3);\n margin: 0;\n margin-inline-end: var(--%NS%sp-2);\n position-area: inline-start;\n position-anchor: --prism-toolrail;\n position-try-fallbacks: flip-inline;\n background: var(--%NS%prism-bg-elevated);\n border: 1px solid var(--%NS%prism-border-strong);\n border-radius: var(--%NS%radius-md);\n box-shadow: 0 8px 28px -10px rgb(0 0 0 / 45%);\n}\n\n\n\n\n\n.prism-toolmenu[_ngcontent-%COMP%]:popover-open {\n display: flex;\n flex-direction: column;\n}\n\n.prism-toolmenu__lbl[_ngcontent-%COMP%] {\n font-size: var(--%NS%fs-xs);\n color: var(--%NS%prism-text-ghost);\n text-transform: uppercase;\n letter-spacing: 0.08em;\n}\n\n.prism-toolmenu__row[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: var(--%NS%sp-1);\n}\n\n.prism-toolmenu__row[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n padding: 2px var(--%NS%sp-3);\n font-size: var(--%NS%fs-md);\n color: var(--%NS%prism-text-2);\n white-space: nowrap;\n cursor: pointer;\n background: transparent;\n border: 1px solid var(--%NS%prism-border);\n border-radius: var(--%NS%radius-xs);\n}\n\n.prism-toolmenu__row[_ngcontent-%COMP%] button.is-on[_ngcontent-%COMP%] {\n color: var(--%NS%prism-text);\n background: color-mix(in srgb, var(--%NS%prism-primary) 16%, transparent);\n border-color: color-mix(in srgb, var(--%NS%prism-primary) 38%, transparent);\n}\n\n.prism-toolmenu__row[_ngcontent-%COMP%] button.is-rec[_ngcontent-%COMP%] {\n border-color: color-mix(in srgb, var(--%NS%prism-primary) 30%, transparent);\n}"] });
|
|
166
231
|
}
|
|
167
232
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PrismCanvasToolbarComponent, [{
|
|
168
233
|
type: Component,
|
|
169
|
-
args: [{ selector: 'prism-canvas-toolbar', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [PrismIconComponent], template:
|
|
170
|
-
<!-- Anchored in .prism-canvas-wrap, deliberately absolute and not fixed:
|
|
171
|
-
a viewport-fixed rail would float over the sidebar and the panel, stay
|
|
172
|
-
put while those are resized, and sit on top of running text in the API
|
|
173
|
-
view where it has no business being. -->
|
|
174
|
-
<div class="prism-toolrail" [class.has-rulers]="canvas.rulers()">
|
|
175
|
-
<span class="prism-toolrail__zoom"
|
|
176
|
-
>{{ Math.round(canvas.zoom() * 100) }}%</span
|
|
177
|
-
>
|
|
178
|
-
|
|
179
|
-
<button
|
|
180
|
-
type="button"
|
|
181
|
-
class="prism-toolrail__btn"
|
|
182
|
-
[class.is-on]="canvas.guides()"
|
|
183
|
-
(click)="canvas.toggleGuides()"
|
|
184
|
-
title="Toggle guides"
|
|
185
|
-
aria-label="Toggle guides"
|
|
186
|
-
[attr.aria-pressed]="canvas.guides()"
|
|
187
|
-
>
|
|
188
|
-
<prism-icon name="crosshair" [size]="14" />
|
|
189
|
-
</button>
|
|
190
|
-
|
|
191
|
-
<button
|
|
192
|
-
type="button"
|
|
193
|
-
class="prism-toolrail__btn"
|
|
194
|
-
[class.is-on]="canvas.rulers()"
|
|
195
|
-
(click)="canvas.toggleRulers()"
|
|
196
|
-
title="Toggle rulers"
|
|
197
|
-
aria-label="Toggle rulers"
|
|
198
|
-
[attr.aria-pressed]="canvas.rulers()"
|
|
199
|
-
>
|
|
200
|
-
<prism-icon name="move" [size]="14" />
|
|
201
|
-
</button>
|
|
202
|
-
|
|
203
|
-
<button
|
|
204
|
-
type="button"
|
|
205
|
-
class="prism-toolrail__btn"
|
|
206
|
-
popovertarget="prism-tools"
|
|
207
|
-
title="Canvas and zoom"
|
|
208
|
-
aria-label="Canvas and zoom"
|
|
209
|
-
>
|
|
210
|
-
<prism-icon name="sliders-horizontal" [size]="14" />
|
|
211
|
-
</button>
|
|
212
|
-
|
|
213
|
-
<span class="prism-toolrail__sep"></span>
|
|
214
|
-
|
|
215
|
-
<button
|
|
216
|
-
type="button"
|
|
217
|
-
class="prism-toolrail__btn"
|
|
218
|
-
popovertarget="prism-template"
|
|
219
|
-
title="Toggle Angular template"
|
|
220
|
-
aria-label="Toggle Angular template"
|
|
221
|
-
>
|
|
222
|
-
<prism-icon name="code" [size]="14" />
|
|
223
|
-
</button>
|
|
224
|
-
</div>
|
|
225
|
-
|
|
226
|
-
<!-- Only the two choosers. The toggles stay outside: you flip guides and
|
|
227
|
-
rulers constantly while measuring, and a toggle two clicks deep is the
|
|
228
|
-
classic mistake. What you only ever set may live in a menu. -->
|
|
229
|
-
<div
|
|
230
|
-
popover
|
|
231
|
-
id="prism-tools"
|
|
232
|
-
class="prism-toolmenu"
|
|
233
|
-
role="dialog"
|
|
234
|
-
aria-label="Canvas and zoom"
|
|
235
|
-
>
|
|
236
|
-
<span class="prism-toolmenu__lbl">Canvas</span>
|
|
237
|
-
<div class="prism-toolmenu__row">
|
|
238
|
-
@for (bg of bgs; track bg) {
|
|
239
|
-
<button
|
|
240
|
-
type="button"
|
|
241
|
-
[class.is-on]="variantBg.effective() === bg"
|
|
242
|
-
[class.is-rec]="variantBg.recommended() === bg"
|
|
243
|
-
[attr.title]="bgTitle(bg)"
|
|
244
|
-
(click)="setBg(bg)"
|
|
245
|
-
>
|
|
246
|
-
{{ capitalize(bg) }}
|
|
247
|
-
</button>
|
|
248
|
-
}
|
|
249
|
-
</div>
|
|
250
|
-
|
|
251
|
-
<span class="prism-toolmenu__lbl">Zoom</span>
|
|
252
|
-
<div class="prism-toolmenu__row">
|
|
253
|
-
@for (z of zooms; track z.value) {
|
|
254
|
-
<button
|
|
255
|
-
type="button"
|
|
256
|
-
[class.is-on]="canvas.zoom() === z.value"
|
|
257
|
-
(click)="canvas.setZoom(z.value)"
|
|
258
|
-
>
|
|
259
|
-
{{ z.label }}
|
|
260
|
-
</button>
|
|
261
|
-
}
|
|
262
|
-
</div>
|
|
263
|
-
</div>
|
|
264
|
-
`, styles: ["\n :host { display: contents; }\n\n /* Canvas overlays sit at --prism-canvas-overlay-*, which the stage grows\n when the rulers claim its top and left edges (see the\n .prism-canvas-stage[data-rulers] rule in prism-renderer.component.ts).\n prism-canvas-bg-pill simply inherits those; this rail cannot, because\n capture mode requires it to be a direct child of .prism-canvas-wrap\n outside the stage. So it mirrors the same values off canvas.rulers()\n instead \u2014 keep the two in step.\n\n z-index outranks the rulers' 4 rather than matching it: the rail is a\n control and they are chrome, and the toolbar renders before the\n renderer in the shell, so an equal z-index let the rulers paint over\n the buttons. */\n .prism-toolrail {\n position: absolute;\n top: var(--prism-canvas-overlay-top, 12px);\n right: var(--prism-canvas-overlay-inline, 20px);\n z-index: 5;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--sp-1);\n padding: var(--sp-2);\n border: 1px solid var(--prism-border-strong);\n border-radius: var(--radius-md);\n background: var(--prism-bg-elevated);\n box-shadow: 0 4px 16px -6px rgba(0, 0, 0, 0.4);\n anchor-name: --prism-toolrail;\n }\n .prism-toolrail.has-rulers {\n --prism-canvas-overlay-top: 28px;\n --prism-canvas-overlay-inline: 28px;\n }\n\n .prism-toolrail__zoom {\n width: 100%;\n padding-bottom: var(--sp-1);\n border-bottom: 1px solid var(--prism-border);\n font-family: var(--font-mono);\n font-size: 9px;\n color: var(--prism-text-ghost);\n text-align: center;\n }\n\n .prism-toolrail__btn {\n display: grid;\n place-items: center;\n width: 26px;\n height: 26px;\n padding: 0;\n border: 0;\n border-radius: var(--radius-xs);\n background: transparent;\n color: var(--prism-text-muted);\n cursor: pointer;\n }\n .prism-toolrail__btn:hover { color: var(--prism-text); }\n .prism-toolrail__btn:focus-visible {\n outline: 2px solid var(--prism-primary);\n outline-offset: 1px;\n }\n .prism-toolrail__btn.is-on {\n background: color-mix(in srgb, var(--prism-primary) 18%, transparent);\n color: var(--prism-text);\n }\n .prism-toolrail__sep {\n width: 14px;\n height: 1px;\n background: var(--prism-border);\n margin: var(--sp-1) 0;\n }\n\n .prism-toolmenu {\n margin: 0;\n padding: var(--sp-3);\n border: 1px solid var(--prism-border-strong);\n border-radius: var(--radius-md);\n background: var(--prism-bg-elevated);\n box-shadow: 0 8px 28px -10px rgba(0, 0, 0, 0.45);\n gap: var(--sp-2);\n position-anchor: --prism-toolrail;\n position-area: inline-start;\n position-try-fallbacks: flip-inline;\n inset: auto;\n margin-inline-end: var(--sp-2);\n }\n\n /* display belongs on :popover-open and nowhere else \u2014 see the note in\n prism-template-popover.component.ts. An author display on the base\n rule outranks the UA's [popover]:not(:popover-open) { display: none }\n and pins the menu open. */\n .prism-toolmenu:popover-open {\n display: flex;\n flex-direction: column;\n }\n\n .prism-toolmenu__lbl {\n font-size: var(--fs-xs);\n letter-spacing: 0.08em;\n text-transform: uppercase;\n color: var(--prism-text-ghost);\n }\n .prism-toolmenu__row { display: flex; flex-wrap: wrap; gap: var(--sp-1); }\n .prism-toolmenu__row button {\n padding: 2px var(--sp-3);\n border: 1px solid var(--prism-border);\n border-radius: var(--radius-xs);\n background: transparent;\n font-size: var(--fs-md);\n color: var(--prism-text-2);\n cursor: pointer;\n white-space: nowrap;\n }\n .prism-toolmenu__row button.is-on {\n background: color-mix(in srgb, var(--prism-primary) 16%, transparent);\n border-color: color-mix(in srgb, var(--prism-primary) 38%, transparent);\n color: var(--prism-text);\n }\n .prism-toolmenu__row button.is-rec {\n border-color: color-mix(in srgb, var(--prism-primary) 30%, transparent);\n }\n "] }]
|
|
234
|
+
args: [{ selector: 'prism-canvas-toolbar', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [PrismIconComponent], template: "<!-- Anchored in .prism-canvas-wrap, deliberately absolute and not fixed:\n a viewport-fixed rail would float over the sidebar and the panel, stay\n put while those are resized, and sit on top of running text in the API\n view where it has no business being. -->\n<div\n class=\"prism-toolrail\"\n [class.has-rulers]=\"canvas.rulers()\">\n <span class=\"prism-toolrail__zoom\">\n {{ Math.round(canvas.zoom() * 100) }}%\n @if (canvas.viewportWidth() !== null) {\n <span class=\"prism-toolrail__vp\">{{ canvas.viewportWidth() }}px</span>\n }\n </span>\n\n <button\n type=\"button\"\n class=\"prism-toolrail__btn\"\n [class.is-on]=\"canvas.guides()\"\n (click)=\"canvas.toggleGuides()\"\n title=\"Toggle guides\"\n aria-label=\"Toggle guides\"\n [attr.aria-pressed]=\"canvas.guides()\">\n <prism-icon\n name=\"crosshair\"\n [size]=\"14\" />\n </button>\n\n <button\n type=\"button\"\n class=\"prism-toolrail__btn\"\n [class.is-on]=\"canvas.rulers()\"\n (click)=\"canvas.toggleRulers()\"\n title=\"Toggle rulers\"\n aria-label=\"Toggle rulers\"\n [attr.aria-pressed]=\"canvas.rulers()\">\n <prism-icon\n name=\"move\"\n [size]=\"14\" />\n </button>\n\n <button\n type=\"button\"\n class=\"prism-toolrail__btn\"\n [class.is-on]=\"canvas.viewportWidth() !== null\"\n (click)=\"canvas.toggleViewport()\"\n title=\"Toggle viewport width\"\n aria-label=\"Toggle viewport width\"\n [attr.aria-pressed]=\"canvas.viewportWidth() !== null\">\n <prism-icon\n name=\"ruler-dimension\"\n [size]=\"14\" />\n </button>\n\n <button\n type=\"button\"\n class=\"prism-toolrail__btn\"\n popovertarget=\"prism-tools\"\n title=\"Canvas, zoom and width\"\n aria-label=\"Canvas, zoom and width\">\n <prism-icon\n name=\"sliders-horizontal\"\n [size]=\"14\" />\n </button>\n\n <span class=\"prism-toolrail__sep\"></span>\n\n <button\n type=\"button\"\n class=\"prism-toolrail__btn\"\n popovertarget=\"prism-template\"\n title=\"Toggle Angular template\"\n aria-label=\"Toggle Angular template\">\n <prism-icon\n name=\"code\"\n [size]=\"14\" />\n </button>\n</div>\n\n<!-- Only the three choosers. The toggles stay outside: you flip guides,\n rulers and the viewport constraint constantly while working, and a\n toggle two clicks deep is the classic mistake. What you only ever\n set may live in a menu. -->\n<div\n popover\n id=\"prism-tools\"\n class=\"prism-toolmenu\"\n role=\"dialog\"\n aria-label=\"Canvas, zoom and width\">\n <span class=\"prism-toolmenu__lbl\">Canvas</span>\n <div class=\"prism-toolmenu__row\">\n @for (bg of bgs; track bg) {\n <button\n type=\"button\"\n [class.is-on]=\"variantBg.effective() === bg\"\n [class.is-rec]=\"variantBg.recommended() === bg\"\n [attr.title]=\"bgTitle(bg)\"\n (click)=\"setBg(bg)\">\n {{ capitalize(bg) }}\n </button>\n }\n </div>\n\n <span class=\"prism-toolmenu__lbl\">Zoom</span>\n <div class=\"prism-toolmenu__row\">\n @for (z of zooms; track z.value) {\n <button\n type=\"button\"\n [class.is-on]=\"canvas.zoom() === z.value\"\n (click)=\"canvas.setZoom(z.value)\">\n {{ z.label }}\n </button>\n }\n </div>\n\n <span class=\"prism-toolmenu__lbl\">Width</span>\n <div class=\"prism-toolmenu__row\">\n <button\n type=\"button\"\n [class.is-on]=\"canvas.viewportWidth() === null\"\n (click)=\"canvas.setViewportWidth(null)\">\n Auto\n </button>\n @for (w of viewports; track w) {\n <button\n type=\"button\"\n [class.is-on]=\"canvas.viewportWidth() === w\"\n (click)=\"canvas.setViewportWidth(w)\">\n {{ w }}\n </button>\n }\n </div>\n</div>\n", styles: [":host {\n display: contents;\n}\n\n/* Canvas overlays sit at --prism-canvas-overlay-*, which the stage grows\n when the rulers claim its top and left edges (see the\n .prism-canvas-stage[data-rulers] rule in prism-renderer.component.ts).\n prism-canvas-bg-pill simply inherits those; this rail cannot, because\n capture mode requires it to be a direct child of .prism-canvas-wrap\n outside the stage. So it mirrors the same values off canvas.rulers()\n instead \u2014 keep the two in step.\n\n z-index outranks the rulers' 4 rather than matching it: the rail is a\n control and they are chrome, and the toolbar renders before the\n renderer in the shell, so an equal z-index let the rulers paint over\n the buttons. */\n.prism-toolrail {\n position: absolute;\n top: var(--prism-canvas-overlay-top, 12px);\n right: var(--prism-canvas-overlay-inline, 20px);\n z-index: 5;\n display: flex;\n flex-direction: column;\n gap: var(--sp-1);\n align-items: center;\n padding: var(--sp-2);\n anchor-name: --prism-toolrail;\n background: var(--prism-bg-elevated);\n border: 1px solid var(--prism-border-strong);\n border-radius: var(--radius-md);\n box-shadow: 0 4px 16px -6px rgb(0 0 0 / 40%);\n}\n\n.prism-toolrail.has-rulers {\n --prism-canvas-overlay-top: 28px;\n --prism-canvas-overlay-inline: 28px;\n}\n\n.prism-toolrail__zoom {\n width: 100%;\n padding-bottom: var(--sp-1);\n font-family: var(--font-mono);\n font-size: 9px;\n color: var(--prism-text-ghost);\n text-align: center;\n border-bottom: 1px solid var(--prism-border);\n}\n\n/* The one number on this rail that is not a percentage, so it takes the\n measurement colour the theme already reserves for rulers and guides\n rather than a second neutral that would read as a second zoom. */\n.prism-toolrail__vp {\n display: block;\n color: var(--prism-measure);\n}\n\n.prism-toolrail__btn {\n display: grid;\n place-items: center;\n width: 26px;\n height: 26px;\n padding: 0;\n color: var(--prism-text-muted);\n cursor: pointer;\n background: transparent;\n border: 0;\n border-radius: var(--radius-xs);\n}\n\n.prism-toolrail__btn:hover {\n color: var(--prism-text);\n}\n\n.prism-toolrail__btn:focus-visible {\n outline: 2px solid var(--prism-primary);\n outline-offset: 1px;\n}\n\n.prism-toolrail__btn.is-on {\n color: var(--prism-text);\n background: color-mix(in srgb, var(--prism-primary) 18%, transparent);\n}\n\n.prism-toolrail__sep {\n width: 14px;\n height: 1px;\n margin: var(--sp-1) 0;\n background: var(--prism-border);\n}\n\n.prism-toolmenu {\n inset: auto;\n gap: var(--sp-2);\n padding: var(--sp-3);\n margin: 0;\n margin-inline-end: var(--sp-2);\n position-area: inline-start;\n position-anchor: --prism-toolrail;\n position-try-fallbacks: flip-inline;\n background: var(--prism-bg-elevated);\n border: 1px solid var(--prism-border-strong);\n border-radius: var(--radius-md);\n box-shadow: 0 8px 28px -10px rgb(0 0 0 / 45%);\n}\n\n/* display belongs on :popover-open and nowhere else \u2014 see the note in\n prism-template-popover.component.ts. An author display on the base\n rule outranks the UA's [popover]:not(:popover-open) { display: none }\n and pins the menu open. */\n.prism-toolmenu:popover-open {\n display: flex;\n flex-direction: column;\n}\n\n.prism-toolmenu__lbl {\n font-size: var(--fs-xs);\n color: var(--prism-text-ghost);\n text-transform: uppercase;\n letter-spacing: 0.08em;\n}\n\n.prism-toolmenu__row {\n display: flex;\n flex-wrap: wrap;\n gap: var(--sp-1);\n}\n\n.prism-toolmenu__row button {\n padding: 2px var(--sp-3);\n font-size: var(--fs-md);\n color: var(--prism-text-2);\n white-space: nowrap;\n cursor: pointer;\n background: transparent;\n border: 1px solid var(--prism-border);\n border-radius: var(--radius-xs);\n}\n\n.prism-toolmenu__row button.is-on {\n color: var(--prism-text);\n background: color-mix(in srgb, var(--prism-primary) 16%, transparent);\n border-color: color-mix(in srgb, var(--prism-primary) 38%, transparent);\n}\n\n.prism-toolmenu__row button.is-rec {\n border-color: color-mix(in srgb, var(--prism-primary) 30%, transparent);\n}\n"] }]
|
|
265
235
|
}], null, null); })();
|
|
266
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismCanvasToolbarComponent, { className: "PrismCanvasToolbarComponent", filePath: "app/canvas/prism-canvas-toolbar.component.ts", lineNumber:
|
|
236
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismCanvasToolbarComponent, { className: "PrismCanvasToolbarComponent", filePath: "app/canvas/prism-canvas-toolbar.component.ts", lineNumber: 44 }); })();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prism-template-popover.component.d.ts","sourceRoot":"","sources":["../../../src/app/canvas/prism-template-popover.component.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"prism-template-popover.component.d.ts","sourceRoot":"","sources":["../../../src/app/canvas/prism-template-popover.component.ts"],"names":[],"mappings":";AAmCA,qBAQa,6BAA6B;IACtC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAkC;IACpE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAgC;IAEhE,SAAS,CAAC,QAAQ,CAAC,MAAM,kDAAiB;IAC1C,OAAO,CAAC,gBAAgB,CAA8C;IAEtE,SAAS,CAAC,QAAQ,CAAC,OAAO,yCAgBvB;IAEH,SAAS,CAAC,QAAQ,CAAC,WAAW,yCAK3B;IAEH,SAAS,CAAC,IAAI,IAAI,IAAI;yCAhCb,6BAA6B;2CAA7B,6BAA6B;CAyCzC"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ChangeDetectionStrategy, Component, computed, inject, signal } from '@angular/core';
|
|
2
2
|
import { PrismIconComponent } from '../icons/prism-icon.component.js';
|
|
3
|
+
import { generateSnippet } from '../renderer/snippet-generator.js';
|
|
3
4
|
import { PrismNavigationService } from '../services/prism-navigation.service.js';
|
|
4
5
|
import { PrismRendererService } from '../services/prism-renderer.service.js';
|
|
5
|
-
import { generateSnippet } from '../renderer/snippet-generator.js';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
function esc(s) {
|
|
8
8
|
return s.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');
|
|
9
9
|
}
|
|
10
10
|
function tokenizeXml(code) {
|
|
11
|
-
const re = /(\/\/[^\n]*)|(<\/?[\w-]+)|(\[[\w.]+\]|[\w-]+)=|"([^"]*)"|(\/>|>)|(\n)|([
|
|
11
|
+
const re = /(\/\/[^\n]*)|(<\/?[\w-]+)|(\[[\w.]+\]|[\w-]+)=|"([^"]*)"|(\/>|>)|(\n)|([^<["\n/>=]+|[/=])/g;
|
|
12
12
|
let out = '';
|
|
13
13
|
let m;
|
|
14
14
|
while ((m = re.exec(code)) !== null) {
|
|
@@ -47,12 +47,8 @@ export class PrismTemplatePopoverComponent {
|
|
|
47
47
|
if (!comp)
|
|
48
48
|
return '';
|
|
49
49
|
const variant = comp.meta.showcaseConfig.variants?.[this.rendererService.activeVariantIndex()];
|
|
50
|
-
const explicitKeys = variant?.inputs
|
|
51
|
-
|
|
52
|
-
: undefined;
|
|
53
|
-
const directiveOptions = comp.meta.componentMeta.isDirective
|
|
54
|
-
? { host: comp.meta.showcaseConfig.host }
|
|
55
|
-
: undefined;
|
|
50
|
+
const explicitKeys = variant?.inputs ? new Set(Object.keys(variant.inputs)) : undefined;
|
|
51
|
+
const directiveOptions = comp.meta.componentMeta.isDirective ? { host: comp.meta.showcaseConfig.host } : undefined;
|
|
56
52
|
return generateSnippet(comp.meta.componentMeta.selector, comp.meta.inputs, this.rendererService.inputValues(), explicitKeys, this.rendererService.activeContent(), directiveOptions);
|
|
57
53
|
}, /* @ts-ignore */
|
|
58
54
|
...(ngDevMode ? [{ debugName: "snippet" }] : /* istanbul ignore next */ []));
|
|
@@ -103,47 +99,10 @@ export class PrismTemplatePopoverComponent {
|
|
|
103
99
|
i0.ɵɵproperty("size", 13);
|
|
104
100
|
i0.ɵɵadvance();
|
|
105
101
|
i0.ɵɵproperty("innerHTML", ctx.highlighted(), i0.ɵɵsanitizeHtml);
|
|
106
|
-
} }, dependencies: [PrismIconComponent], styles: ["[_nghost-%COMP%] {
|
|
102
|
+
} }, dependencies: [PrismIconComponent], styles: ["[_nghost-%COMP%] {\n display: contents;\n}\n\n\n\n\n\n\n\n.tpl-popover[_ngcontent-%COMP%] {\n inset: auto;\n width: 520px;\n max-width: calc(100vw - var(--%NS%sp-6));\n max-height: min(420px, calc(100vh - var(--%NS%sp-7)));\n margin: var(--%NS%sp-2) 0 0 0;\n position-area: block-end span-inline-start;\n position-anchor: --prism-toolrail;\n position-try-fallbacks: flip-block, flip-inline;\n overflow: hidden;\n background: var(--%NS%prism-bg-elevated);\n border: 1px solid var(--%NS%prism-border-strong);\n border-radius: var(--%NS%radius-lg, 10px);\n box-shadow:\n 0 20px 60px rgb(0 0 0 / 45%),\n 0 0 0 1px color-mix(in srgb, var(--%NS%prism-primary) 10%, transparent);\n animation: _ngcontent-%COMP%_tpl-fade-in var(--%NS%dur-fast, 0.15s) var(--%NS%ease-default, ease-out);\n}\n\n\n\n\n\n\n\n.tpl-popover[_ngcontent-%COMP%]:popover-open {\n display: flex;\n flex-direction: column;\n}\n\n@keyframes _ngcontent-%COMP%_tpl-fade-in {\n from {\n opacity: 0;\n transform: translateY(-8px);\n }\n\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n.tpl-popover-head[_ngcontent-%COMP%] {\n display: flex;\n flex-shrink: 0;\n gap: 8px;\n align-items: center;\n height: 40px;\n padding: 0 12px 0 16px;\n background: linear-gradient(180deg, var(--%NS%prism-bg-surface), var(--%NS%prism-bg-elevated));\n border-bottom: 1px solid var(--%NS%prism-border);\n}\n\n.tpl-popover-head[_ngcontent-%COMP%] > prism-icon[_ngcontent-%COMP%] {\n color: var(--%NS%prism-text-muted);\n}\n\n.tpl-popover-head[_ngcontent-%COMP%] > span[_ngcontent-%COMP%] {\n flex: 1;\n font-size: var(--%NS%fs-xs);\n font-weight: 700;\n color: var(--%NS%prism-text-2);\n text-transform: uppercase;\n letter-spacing: 0.08em;\n}\n\n.tpl-popover-copy[_ngcontent-%COMP%] {\n display: flex;\n gap: 5px;\n align-items: center;\n height: 26px;\n padding: 0 10px;\n font-family: var(--%NS%font-sans);\n font-size: var(--%NS%fs-sm);\n font-weight: 500;\n color: var(--%NS%prism-primary);\n cursor: pointer;\n background: color-mix(in srgb, var(--%NS%prism-primary) 12%, transparent);\n border: 1px solid color-mix(in srgb, var(--%NS%prism-primary) 25%, transparent);\n border-radius: var(--%NS%radius-sm, 5px);\n transition: background var(--%NS%dur-fast);\n}\n\n.tpl-popover-copy[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--%NS%prism-primary) 20%, transparent);\n}\n\n.tpl-popover-close[_ngcontent-%COMP%] {\n display: grid;\n place-items: center;\n width: 26px;\n height: 26px;\n color: var(--%NS%prism-text-muted);\n cursor: pointer;\n background: transparent;\n border: 0;\n border-radius: var(--%NS%radius-sm, 5px);\n transition:\n background var(--%NS%dur-fast),\n color var(--%NS%dur-fast);\n}\n\n.tpl-popover-close[_ngcontent-%COMP%]:hover {\n color: var(--%NS%prism-text);\n background: var(--%NS%prism-input-bg);\n}\n\n.tpl-popover-body[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n padding: 14px 18px;\n margin: 0;\n overflow: auto;\n font-family: var(--%NS%font-mono);\n font-size: var(--%NS%fs-md);\n line-height: 1.7;\n color: var(--%NS%prism-text-2);\n white-space: pre;\n background: var(--%NS%prism-bg);\n}\n\n.tpl-popover-body[_ngcontent-%COMP%]::-webkit-scrollbar {\n width: 6px;\n height: 6px;\n}\n\n.tpl-popover-body[_ngcontent-%COMP%]::-webkit-scrollbar-thumb {\n background: var(--%NS%prism-border-strong);\n border-radius: 3px;\n}\n\n[_nghost-%COMP%] .tok-tag {\n color: var(--%NS%prism-code-tag);\n}\n\n[_nghost-%COMP%] .tok-attr {\n color: var(--%NS%prism-code-attr);\n}\n\n[_nghost-%COMP%] .tok-str {\n color: var(--%NS%prism-code-str);\n}\n\n[_nghost-%COMP%] .tok-com {\n font-style: italic;\n color: var(--%NS%prism-code-com);\n}"] });
|
|
107
103
|
}
|
|
108
104
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PrismTemplatePopoverComponent, [{
|
|
109
105
|
type: Component,
|
|
110
|
-
args: [{ selector: 'prism-template-popover', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [PrismIconComponent], template:
|
|
111
|
-
<!-- A native popover: the platform owns open, light-dismiss and Escape, so
|
|
112
|
-
there is no visibility signal, no document click listener and no key
|
|
113
|
-
handler here. The id is what the rail's button names in its
|
|
114
|
-
popovertarget. -->
|
|
115
|
-
<div
|
|
116
|
-
popover
|
|
117
|
-
id="prism-template"
|
|
118
|
-
class="tpl-popover"
|
|
119
|
-
role="dialog"
|
|
120
|
-
aria-label="Angular template"
|
|
121
|
-
>
|
|
122
|
-
<div class="tpl-popover-head">
|
|
123
|
-
<prism-icon name="code" [size]="13" />
|
|
124
|
-
<span>Angular Template</span>
|
|
125
|
-
<button
|
|
126
|
-
type="button"
|
|
127
|
-
class="tpl-popover-copy"
|
|
128
|
-
(click)="copy()"
|
|
129
|
-
[title]="copied() ? 'Copied!' : 'Copy to clipboard'"
|
|
130
|
-
>
|
|
131
|
-
<prism-icon [name]="copied() ? 'shield-check' : 'copy'" [size]="12" />
|
|
132
|
-
{{ copied() ? 'Copied' : 'Copy' }}
|
|
133
|
-
</button>
|
|
134
|
-
<button
|
|
135
|
-
type="button"
|
|
136
|
-
class="tpl-popover-close"
|
|
137
|
-
popovertarget="prism-template"
|
|
138
|
-
popovertargetaction="hide"
|
|
139
|
-
aria-label="Close"
|
|
140
|
-
title="Close (Esc)"
|
|
141
|
-
>
|
|
142
|
-
<prism-icon name="x" [size]="13" />
|
|
143
|
-
</button>
|
|
144
|
-
</div>
|
|
145
|
-
<pre class="tpl-popover-body" [innerHTML]="highlighted()"></pre>
|
|
146
|
-
</div>
|
|
147
|
-
`, styles: ["\n :host { display: contents; }\n\n /* No position of its own: a popover is in the top layer, where the\n containing block is the viewport, so the old right/top pair against the\n canvas would have parked this in the corner of the *window* and over the\n header. It hangs off the rail instead, the same way the head popovers\n hang off their triggers. Viewport units, not percentages \u2014 a percentage\n here resolves against the position area, not the canvas. */\n .tpl-popover {\n width: 520px;\n max-width: calc(100vw - var(--sp-6));\n max-height: min(420px, calc(100vh - var(--sp-7)));\n position-anchor: --prism-toolrail;\n position-area: block-end span-inline-start;\n position-try-fallbacks: flip-block, flip-inline;\n inset: auto;\n margin: var(--sp-2) 0 0 0;\n background: var(--prism-bg-elevated);\n border: 1px solid var(--prism-border-strong);\n border-radius: var(--radius-lg, 10px);\n box-shadow:\n 0 20px 60px rgba(0, 0, 0, 0.45),\n 0 0 0 1px color-mix(in srgb, var(--prism-primary) 10%, transparent);\n overflow: hidden;\n animation: tpl-fade-in var(--dur-fast, 0.15s) var(--ease-default, ease-out);\n }\n\n /* display belongs on :popover-open and nowhere else. The UA stylesheet\n hides a closed popover with [popover]:not(:popover-open) { display: none },\n and any author display on the base rule outranks it \u2014 the panel then\n shows permanently and neither Escape nor light-dismiss can hide it,\n because closing only drops :popover-open and leaves the author rule\n standing. */\n .tpl-popover:popover-open {\n display: flex;\n flex-direction: column;\n }\n\n @keyframes tpl-fade-in {\n from {\n opacity: 0;\n transform: translateY(-8px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n }\n\n .tpl-popover-head {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 0 12px 0 16px;\n height: 40px;\n border-bottom: 1px solid var(--prism-border);\n background: linear-gradient(\n 180deg,\n var(--prism-bg-surface),\n var(--prism-bg-elevated)\n );\n flex-shrink: 0;\n }\n .tpl-popover-head > prism-icon {\n color: var(--prism-text-muted);\n }\n .tpl-popover-head > span {\n flex: 1;\n font-size: var(--fs-xs);\n font-weight: 700;\n letter-spacing: 0.08em;\n text-transform: uppercase;\n color: var(--prism-text-2);\n }\n\n .tpl-popover-copy {\n height: 26px;\n padding: 0 10px;\n font-size: var(--fs-sm);\n font-family: var(--font-sans);\n font-weight: 500;\n color: var(--prism-primary);\n background: color-mix(in srgb, var(--prism-primary) 12%, transparent);\n border: 1px solid color-mix(in srgb, var(--prism-primary) 25%, transparent);\n border-radius: var(--radius-sm, 5px);\n display: flex;\n align-items: center;\n gap: 5px;\n cursor: pointer;\n transition: background var(--dur-fast);\n }\n .tpl-popover-copy:hover {\n background: color-mix(in srgb, var(--prism-primary) 20%, transparent);\n }\n\n .tpl-popover-close {\n width: 26px;\n height: 26px;\n display: grid;\n place-items: center;\n border-radius: var(--radius-sm, 5px);\n color: var(--prism-text-muted);\n background: transparent;\n border: 0;\n cursor: pointer;\n transition: background var(--dur-fast), color var(--dur-fast);\n }\n .tpl-popover-close:hover {\n color: var(--prism-text);\n background: var(--prism-input-bg);\n }\n\n .tpl-popover-body {\n margin: 0;\n padding: 14px 18px;\n font-family: var(--font-mono);\n font-size: var(--fs-md);\n line-height: 1.7;\n color: var(--prism-text-2);\n overflow: auto;\n background: var(--prism-bg);\n flex: 1;\n min-height: 0;\n white-space: pre;\n }\n .tpl-popover-body::-webkit-scrollbar {\n width: 6px;\n height: 6px;\n }\n .tpl-popover-body::-webkit-scrollbar-thumb {\n background: var(--prism-border-strong);\n border-radius: 3px;\n }\n\n :host ::ng-deep .tok-tag { color: var(--prism-code-tag); }\n :host ::ng-deep .tok-attr { color: var(--prism-code-attr); }\n :host ::ng-deep .tok-str { color: var(--prism-code-str); }\n :host ::ng-deep .tok-com { color: var(--prism-code-com); font-style: italic; }\n "] }]
|
|
106
|
+
args: [{ selector: 'prism-template-popover', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [PrismIconComponent], template: "<!-- A native popover: the platform owns open, light-dismiss and Escape, so\n there is no visibility signal, no document click listener and no key\n handler here. The id is what the rail's button names in its\n popovertarget. -->\n<div\n popover\n id=\"prism-template\"\n class=\"tpl-popover\"\n role=\"dialog\"\n aria-label=\"Angular template\">\n <div class=\"tpl-popover-head\">\n <prism-icon\n name=\"code\"\n [size]=\"13\" />\n <span>Angular Template</span>\n <button\n type=\"button\"\n class=\"tpl-popover-copy\"\n (click)=\"copy()\"\n [title]=\"copied() ? 'Copied!' : 'Copy to clipboard'\">\n <prism-icon\n [name]=\"copied() ? 'shield-check' : 'copy'\"\n [size]=\"12\" />\n {{ copied() ? 'Copied' : 'Copy' }}\n </button>\n <button\n type=\"button\"\n class=\"tpl-popover-close\"\n popovertarget=\"prism-template\"\n popovertargetaction=\"hide\"\n aria-label=\"Close\"\n title=\"Close (Esc)\">\n <prism-icon\n name=\"x\"\n [size]=\"13\" />\n </button>\n </div>\n <pre\n class=\"tpl-popover-body\"\n [innerHTML]=\"highlighted()\"></pre>\n</div>\n", styles: [":host {\n display: contents;\n}\n\n/* No position of its own: a popover is in the top layer, where the\n containing block is the viewport, so the old right/top pair against the\n canvas would have parked this in the corner of the *window* and over the\n header. It hangs off the rail instead, the same way the head popovers\n hang off their triggers. Viewport units, not percentages \u2014 a percentage\n here resolves against the position area, not the canvas. */\n.tpl-popover {\n inset: auto;\n width: 520px;\n max-width: calc(100vw - var(--sp-6));\n max-height: min(420px, calc(100vh - var(--sp-7)));\n margin: var(--sp-2) 0 0 0;\n position-area: block-end span-inline-start;\n position-anchor: --prism-toolrail;\n position-try-fallbacks: flip-block, flip-inline;\n overflow: hidden;\n background: var(--prism-bg-elevated);\n border: 1px solid var(--prism-border-strong);\n border-radius: var(--radius-lg, 10px);\n box-shadow:\n 0 20px 60px rgb(0 0 0 / 45%),\n 0 0 0 1px color-mix(in srgb, var(--prism-primary) 10%, transparent);\n animation: tpl-fade-in var(--dur-fast, 0.15s) var(--ease-default, ease-out);\n}\n\n/* display belongs on :popover-open and nowhere else. The UA stylesheet\n hides a closed popover with [popover]:not(:popover-open) { display: none },\n and any author display on the base rule outranks it \u2014 the panel then\n shows permanently and neither Escape nor light-dismiss can hide it,\n because closing only drops :popover-open and leaves the author rule\n standing. */\n.tpl-popover:popover-open {\n display: flex;\n flex-direction: column;\n}\n\n@keyframes tpl-fade-in {\n from {\n opacity: 0;\n transform: translateY(-8px);\n }\n\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n.tpl-popover-head {\n display: flex;\n flex-shrink: 0;\n gap: 8px;\n align-items: center;\n height: 40px;\n padding: 0 12px 0 16px;\n background: linear-gradient(180deg, var(--prism-bg-surface), var(--prism-bg-elevated));\n border-bottom: 1px solid var(--prism-border);\n}\n\n.tpl-popover-head > prism-icon {\n color: var(--prism-text-muted);\n}\n\n.tpl-popover-head > span {\n flex: 1;\n font-size: var(--fs-xs);\n font-weight: 700;\n color: var(--prism-text-2);\n text-transform: uppercase;\n letter-spacing: 0.08em;\n}\n\n.tpl-popover-copy {\n display: flex;\n gap: 5px;\n align-items: center;\n height: 26px;\n padding: 0 10px;\n font-family: var(--font-sans);\n font-size: var(--fs-sm);\n font-weight: 500;\n color: var(--prism-primary);\n cursor: pointer;\n background: color-mix(in srgb, var(--prism-primary) 12%, transparent);\n border: 1px solid color-mix(in srgb, var(--prism-primary) 25%, transparent);\n border-radius: var(--radius-sm, 5px);\n transition: background var(--dur-fast);\n}\n\n.tpl-popover-copy:hover {\n background: color-mix(in srgb, var(--prism-primary) 20%, transparent);\n}\n\n.tpl-popover-close {\n display: grid;\n place-items: center;\n width: 26px;\n height: 26px;\n color: var(--prism-text-muted);\n cursor: pointer;\n background: transparent;\n border: 0;\n border-radius: var(--radius-sm, 5px);\n transition:\n background var(--dur-fast),\n color var(--dur-fast);\n}\n\n.tpl-popover-close:hover {\n color: var(--prism-text);\n background: var(--prism-input-bg);\n}\n\n.tpl-popover-body {\n flex: 1;\n min-height: 0;\n padding: 14px 18px;\n margin: 0;\n overflow: auto;\n font-family: var(--font-mono);\n font-size: var(--fs-md);\n line-height: 1.7;\n color: var(--prism-text-2);\n white-space: pre;\n background: var(--prism-bg);\n}\n\n.tpl-popover-body::-webkit-scrollbar {\n width: 6px;\n height: 6px;\n}\n\n.tpl-popover-body::-webkit-scrollbar-thumb {\n background: var(--prism-border-strong);\n border-radius: 3px;\n}\n\n:host ::ng-deep .tok-tag {\n color: var(--prism-code-tag);\n}\n\n:host ::ng-deep .tok-attr {\n color: var(--prism-code-attr);\n}\n\n:host ::ng-deep .tok-str {\n color: var(--prism-code-str);\n}\n\n:host ::ng-deep .tok-com {\n font-style: italic;\n color: var(--prism-code-com);\n}\n"] }]
|
|
148
107
|
}], null, null); })();
|
|
149
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismTemplatePopoverComponent, { className: "PrismTemplatePopoverComponent", filePath: "app/canvas/prism-template-popover.component.ts", lineNumber:
|
|
108
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismTemplatePopoverComponent, { className: "PrismTemplatePopoverComponent", filePath: "app/canvas/prism-template-popover.component.ts", lineNumber: 44 }); })();
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `width`, pulled onto the nearest preset it comes within `tolerance` of.
|
|
3
|
+
*
|
|
4
|
+
* The tolerance is what makes a drag land on 390 instead of 388: without it,
|
|
5
|
+
* hitting a named width by hand is a game of pixels, and the presets in the
|
|
6
|
+
* menu would be the only way to reach them exactly. Outside the tolerance the
|
|
7
|
+
* width is returned untouched — searching for a breakpoint between the presets
|
|
8
|
+
* is the other half of what this tool is for, and a grid that always snapped
|
|
9
|
+
* would make that impossible.
|
|
10
|
+
*/
|
|
11
|
+
export declare function snapViewportWidth(width: number, snaps?: readonly number[], tolerance?: number): number;
|
|
12
|
+
//# sourceMappingURL=viewport-snap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"viewport-snap.d.ts","sourceRoot":"","sources":["../../../src/app/canvas/viewport-snap.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,SAAS,MAAM,EAAmB,EAAE,SAAS,GAAE,MAAgC,GAAG,MAAM,CAc/I"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { VIEWPORT_SNAP_TOLERANCE, VIEWPORT_SNAPS } from '../../shared/viewport.type.js';
|
|
2
|
+
/**
|
|
3
|
+
* `width`, pulled onto the nearest preset it comes within `tolerance` of.
|
|
4
|
+
*
|
|
5
|
+
* The tolerance is what makes a drag land on 390 instead of 388: without it,
|
|
6
|
+
* hitting a named width by hand is a game of pixels, and the presets in the
|
|
7
|
+
* menu would be the only way to reach them exactly. Outside the tolerance the
|
|
8
|
+
* width is returned untouched — searching for a breakpoint between the presets
|
|
9
|
+
* is the other half of what this tool is for, and a grid that always snapped
|
|
10
|
+
* would make that impossible.
|
|
11
|
+
*/
|
|
12
|
+
export function snapViewportWidth(width, snaps = VIEWPORT_SNAPS, tolerance = VIEWPORT_SNAP_TOLERANCE) {
|
|
13
|
+
let best = null;
|
|
14
|
+
let bestDistance = Infinity;
|
|
15
|
+
for (const snap of snaps) {
|
|
16
|
+
const distance = Math.abs(snap - width);
|
|
17
|
+
if (distance <= tolerance && distance < bestDistance) {
|
|
18
|
+
best = snap;
|
|
19
|
+
bestDistance = distance;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return best ?? width;
|
|
23
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"head-metrics.d.ts","sourceRoot":"","sources":["../../../src/app/component-head/head-metrics.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,MAAM,aAAa,GAAG,IAAI,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE9D,yDAAyD;AACzD,MAAM,WAAW,UAAU;
|
|
1
|
+
{"version":3,"file":"head-metrics.d.ts","sourceRoot":"","sources":["../../../src/app/component-head/head-metrics.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,MAAM,aAAa,GAAG,IAAI,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE9D,yDAAyD;AACzD,MAAM,WAAW,UAAU;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,aAAa,CAAC;CAC1B;AAED,sEAAsE;AACtE,MAAM,WAAW,YAAY;IACzB,+DAA+D;IAC/D,QAAQ,EAAE,MAAM,CAAC;IACjB,wEAAwE;IACxE,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;IACzB,wDAAwD;IACxD,MAAM,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,OAAO,EAAE,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAC;CACrC;AASD;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,SAAS,UAAU,EAAE,GAAG,YAAY,CAoB7E"}
|
|
@@ -2,7 +2,7 @@ const SEVERITY = {
|
|
|
2
2
|
none: 0,
|
|
3
3
|
ok: 0,
|
|
4
4
|
warn: 1,
|
|
5
|
-
danger: 2
|
|
5
|
+
danger: 2
|
|
6
6
|
};
|
|
7
7
|
/**
|
|
8
8
|
* Folds the head's metrics into what one chip can say.
|
|
@@ -34,6 +34,6 @@ export function summarizeMetrics(metrics) {
|
|
|
34
34
|
measured,
|
|
35
35
|
worst,
|
|
36
36
|
others: deviating > 0 ? deviating - 1 : 0,
|
|
37
|
-
variant: worst === null ? 'ok' : worst.variant
|
|
37
|
+
variant: worst === null ? 'ok' : worst.variant
|
|
38
38
|
};
|
|
39
39
|
}
|
|
@@ -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":"
|
|
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;AAGzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;;AAIpD,UAAU,WAAW;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACnB;AAqBD,qBAQa,2BAA2B;IACpC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAkC;IACpE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA4B;IAEzD,SAAS,CAAC,QAAQ,CAAC,IAAI,mFAA4D;IAEnF,SAAS,CAAC,QAAQ,CAAC,QAAQ,yCAIxB;IAEH,SAAS,CAAC,QAAQ,CAAC,YAAY,yCAI5B;IAEH,SAAS,CAAC,QAAQ,CAAC,MAAM,8DAAwF;IAEjH,SAAS,CAAC,QAAQ,CAAC,WAAW,qDAI3B;IAEH,SAAS,CAAC,QAAQ,CAAC,eAAe,gDAM/B;IAkBH,SAAS,CAAC,QAAQ,CAAC,SAAS,gDAEzB;IAEH;;;;;;;OAOG;IACH,SAAS,CAAC,QAAQ,CAAC,OAAO;eACf,MAAM;iBACJ,IAAI,GAAG,MAAM,GAAG,QAAQ;cAQlC;IAEH;;;;;;OAMG;IACH,SAAS,CAAC,QAAQ,CAAC,OAAO,+CAyBvB;IAEH,OAAO,CAAC,QAAQ,CAAC,aAAa,CAK3B;yCAjHM,2BAA2B;2CAA3B,2BAA2B;CAkHvC"}
|