@ng-prism/core 22.2.1 → 22.4.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 +34 -36
- package/builders.json +11 -11
- package/dist/app/canvas/canvas-bg.styles.d.ts +7 -12
- package/dist/app/canvas/canvas-bg.styles.d.ts.map +1 -1
- package/dist/app/canvas/canvas-bg.styles.js +37 -22
- package/dist/app/canvas/measure-geometry.d.ts +140 -0
- package/dist/app/canvas/measure-geometry.d.ts.map +1 -0
- package/dist/app/canvas/measure-geometry.js +217 -0
- package/dist/app/canvas/measure-keyboard.d.ts +20 -0
- package/dist/app/canvas/measure-keyboard.d.ts.map +1 -0
- package/dist/app/canvas/measure-keyboard.js +34 -0
- package/dist/app/canvas/measure-quad.d.ts +114 -0
- package/dist/app/canvas/measure-quad.d.ts.map +1 -0
- package/dist/app/canvas/measure-quad.js +173 -0
- package/dist/app/canvas/measure-snap.d.ts +35 -0
- package/dist/app/canvas/measure-snap.d.ts.map +1 -0
- package/dist/app/canvas/measure-snap.js +63 -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-measure.component.d.ts +142 -0
- package/dist/app/canvas/prism-canvas-measure.component.d.ts.map +1 -0
- package/dist/app/canvas/prism-canvas-measure.component.js +554 -0
- package/dist/app/canvas/prism-canvas-pin-row.component.d.ts +23 -0
- package/dist/app/canvas/prism-canvas-pin-row.component.d.ts.map +1 -0
- package/dist/app/canvas/prism-canvas-pin-row.component.js +64 -0
- 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 +28 -28
- package/dist/app/canvas/prism-canvas-toolbar.component.d.ts.map +1 -1
- package/dist/app/canvas/prism-canvas-toolbar.component.js +124 -162
- 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 +2 -2
- package/dist/app/component-head/head-metrics.d.ts.map +1 -1
- package/dist/app/component-head/head-metrics.js +3 -3
- package/dist/app/component-head/prism-component-head.component.d.ts +3 -3
- package/dist/app/component-head/prism-component-head.component.d.ts.map +1 -1
- package/dist/app/component-head/prism-component-head.component.js +24 -64
- 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 +1 -1
- package/dist/app/component-head/prism-head-info.component.d.ts.map +1 -1
- package/dist/app/component-head/prism-head-info.component.js +4 -37
- package/dist/app/component-head/prism-stat.component.d.ts +1 -1
- package/dist/app/component-head/prism-stat.component.d.ts.map +1 -1
- package/dist/app/component-head/prism-stat.component.js +4 -15
- 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 +2 -2
- package/dist/app/discovery-manifest.d.ts.map +1 -1
- package/dist/app/discovery-manifest.js +16 -22
- 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 +9 -78
- package/dist/app/hmr.d.ts.map +1 -1
- package/dist/app/icons/icon-registry.d.ts +2 -2
- package/dist/app/icons/icon-registry.d.ts.map +1 -1
- package/dist/app/icons/icon-registry.js +5 -3
- package/dist/app/icons/prism-icon.component.d.ts +2 -2
- package/dist/app/icons/prism-icon.component.d.ts.map +1 -1
- package/dist/app/icons/prism-icon.component.js +9 -9
- package/dist/app/index.d.ts +3 -3
- package/dist/app/index.d.ts.map +1 -1
- package/dist/app/index.js +17 -24
- 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 +1 -1
- package/dist/app/overview/overview-visibility.d.ts.map +1 -1
- package/dist/app/overview/overview-visibility.js +1 -1
- package/dist/app/overview/prism-overview-cell.component.d.ts +2 -2
- package/dist/app/overview/prism-overview-cell.component.d.ts.map +1 -1
- package/dist/app/overview/prism-overview-cell.component.js +17 -25
- package/dist/app/overview/prism-overview.component.d.ts +2 -2
- package/dist/app/overview/prism-overview.component.d.ts.map +1 -1
- package/dist/app/overview/prism-overview.component.js +6 -14
- 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 +3 -4
- package/dist/app/panels/a11y/a11y-summary.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-summary.js +5 -9
- package/dist/app/panels/a11y/a11y-thresholds.d.ts +1 -1
- package/dist/app/panels/a11y/a11y-thresholds.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-thresholds.js +2 -2
- 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 +1 -1
- 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 +1 -1
- package/dist/app/panels/builtin-navigation-decorations.d.ts.map +1 -1
- package/dist/app/panels/builtin-navigation-decorations.js +3 -3
- 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 +2 -6
- 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 +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 +8 -12
- package/dist/app/renderer/known-inputs.d.ts +1 -1
- package/dist/app/renderer/known-inputs.d.ts.map +1 -1
- package/dist/app/renderer/known-inputs.js +1 -1
- package/dist/app/renderer/overlay-resolver.d.ts +17 -3
- package/dist/app/renderer/overlay-resolver.d.ts.map +1 -1
- package/dist/app/renderer/overlay-resolver.js +10 -5
- package/dist/app/renderer/prism-renderer.component.d.ts +28 -3
- package/dist/app/renderer/prism-renderer.component.d.ts.map +1 -1
- package/dist/app/renderer/prism-renderer.component.js +107 -80
- package/dist/app/renderer/projectable-content.d.ts.map +1 -1
- package/dist/app/renderer/projectable-content.js +4 -6
- 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 +33 -0
- package/dist/app/services/prism-canvas.service.d.ts.map +1 -1
- package/dist/app/services/prism-canvas.service.js +71 -6
- package/dist/app/services/prism-capture.service.d.ts +24 -50
- package/dist/app/services/prism-capture.service.d.ts.map +1 -1
- package/dist/app/services/prism-capture.service.js +62 -146
- 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-measure.service.d.ts +44 -0
- package/dist/app/services/prism-measure.service.d.ts.map +1 -0
- package/dist/app/services/prism-measure.service.js +91 -0
- 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 +2 -2
- package/dist/app/services/prism-panel.service.d.ts.map +1 -1
- package/dist/app/services/prism-panel.service.js +4 -7
- package/dist/app/services/prism-persistence.service.d.ts.map +1 -1
- package/dist/app/services/prism-persistence.service.js +9 -11
- 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 +4 -10
- package/dist/app/services/prism-variant-bg.service.d.ts +10 -24
- package/dist/app/services/prism-variant-bg.service.d.ts.map +1 -1
- package/dist/app/services/prism-variant-bg.service.js +13 -29
- package/dist/app/shared/prism-metric-badge.component.d.ts +9 -15
- package/dist/app/shared/prism-metric-badge.component.d.ts.map +1 -1
- package/dist/app/shared/prism-metric-badge.component.js +13 -32
- package/dist/app/shell/prism-shell.component.d.ts.map +1 -1
- package/dist/app/shell/prism-shell.component.js +26 -125
- package/dist/app/sidebar/navigation-decorations.d.ts +4 -4
- package/dist/app/sidebar/navigation-decorations.d.ts.map +1 -1
- package/dist/app/sidebar/navigation-decorations.js +3 -3
- package/dist/app/sidebar/prism-sidebar.component.d.ts +3 -3
- package/dist/app/sidebar/prism-sidebar.component.d.ts.map +1 -1
- package/dist/app/sidebar/prism-sidebar.component.js +21 -156
- package/dist/app/theme/prism-default-theme.d.ts.map +1 -1
- package/dist/app/theme/prism-default-theme.js +6 -6
- 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 +1 -1
- package/dist/app/variant-ribbon/spectrum.d.ts.map +1 -1
- package/dist/app/variant-ribbon/spectrum.js +1 -1
- package/dist/app/view-tab-bar/next-view-id.d.ts +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 +2 -4
- 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 +2 -2
- package/dist/builder/a11y/a11y-report-reader.d.ts.map +1 -1
- package/dist/builder/a11y/a11y-report-reader.js +8 -8
- 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 +14 -35
- package/dist/builder/plugin-runner/plugin-runner.d.ts.map +1 -1
- package/dist/builder/plugin-runner/plugin-runner.js +2 -4
- package/dist/builder/scanner/ast-utils.d.ts +46 -2
- package/dist/builder/scanner/ast-utils.d.ts.map +1 -1
- package/dist/builder/scanner/ast-utils.js +338 -38
- package/dist/builder/scanner/class-hierarchy.d.ts +33 -0
- package/dist/builder/scanner/class-hierarchy.d.ts.map +1 -0
- package/dist/builder/scanner/class-hierarchy.js +87 -0
- package/dist/builder/scanner/component.scanner.d.ts +7 -1
- package/dist/builder/scanner/component.scanner.d.ts.map +1 -1
- package/dist/builder/scanner/component.scanner.js +113 -72
- 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 +7 -4
- package/dist/builder/scanner/input.extractor.d.ts.map +1 -1
- package/dist/builder/scanner/input.extractor.js +157 -76
- package/dist/builder/scanner/manifest.generator.d.ts.map +1 -1
- package/dist/builder/scanner/manifest.generator.js +8 -6
- package/dist/builder/scanner/scanner.d.ts +3 -1
- package/dist/builder/scanner/scanner.d.ts.map +1 -1
- package/dist/builder/scanner/scanner.js +10 -8
- package/dist/builder/scanner/showcase-diagnostics.d.ts +25 -0
- package/dist/builder/scanner/showcase-diagnostics.d.ts.map +1 -0
- package/dist/builder/scanner/showcase-diagnostics.js +96 -0
- 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 +1 -1
- package/dist/builder/shared/prism-pipeline.d.ts.map +1 -1
- package/dist/builder/shared/prism-pipeline.js +29 -38
- 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 +14 -12
- 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 +11 -9
- package/dist/decorator/showcase.types.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/plugin/define-config.js +1 -1
- package/dist/plugin/index.d.ts +4 -4
- package/dist/plugin/index.d.ts.map +1 -1
- package/dist/plugin/index.js +7 -11
- 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 +31 -14
- 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 +6 -10
- 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 +5 -6
- package/dist/shared/canvas-bg.type.d.ts.map +1 -1
- package/dist/shared/canvas-bg.type.js +5 -13
- package/dist/shared/canvas-layout.type.d.ts.map +1 -1
- package/dist/shared/canvas-layout.type.js +1 -4
- package/dist/shared/measure.type.d.ts +52 -0
- package/dist/shared/measure.type.d.ts.map +1 -0
- package/dist/shared/measure.type.js +21 -0
- package/dist/shared/variant-bg.d.ts +20 -31
- package/dist/shared/variant-bg.d.ts.map +1 -1
- package/dist/shared/variant-bg.js +20 -31
- package/dist/shared/viewport.type.d.ts +43 -0
- package/dist/shared/viewport.type.d.ts.map +1 -0
- package/dist/shared/viewport.type.js +44 -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 +7 -16
- package/dist/transformer/strip-directory.d.ts.map +1 -1
- package/dist/transformer/strip-directory.js +2 -4
- package/package.json +5 -2
- 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,54 +1,74 @@
|
|
|
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.ɵɵelementStart(0, "button", 16);
|
|
11
|
-
i0.ɵɵlistener("click", function PrismCanvasToolbarComponent_For_17_Template_button_click_0_listener() { const bg_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.setBg(bg_r2)); });
|
|
9
|
+
function PrismCanvasToolbarComponent_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
10
|
+
i0.ɵɵelementStart(0, "span", 2);
|
|
12
11
|
i0.ɵɵtext(1);
|
|
13
12
|
i0.ɵɵelementEnd();
|
|
14
13
|
} if (rf & 2) {
|
|
15
|
-
const
|
|
16
|
-
const ctx_r2 = i0.ɵɵnextContext();
|
|
17
|
-
i0.ɵɵclassProp("is-on", ctx_r2.variantBg.effective() === bg_r2)("is-rec", ctx_r2.variantBg.recommended() === bg_r2);
|
|
18
|
-
i0.ɵɵattribute("title", ctx_r2.bgTitle(bg_r2));
|
|
14
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
19
15
|
i0.ɵɵadvance();
|
|
20
|
-
i0.ɵɵtextInterpolate1("
|
|
16
|
+
i0.ɵɵtextInterpolate1("", ctx_r0.canvas.viewportWidth(), "px");
|
|
21
17
|
} }
|
|
22
18
|
function PrismCanvasToolbarComponent_For_22_Template(rf, ctx) { if (rf & 1) {
|
|
19
|
+
const _r2 = i0.ɵɵgetCurrentView();
|
|
20
|
+
i0.ɵɵelementStart(0, "button", 21);
|
|
21
|
+
i0.ɵɵlistener("click", function PrismCanvasToolbarComponent_For_22_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)); });
|
|
22
|
+
i0.ɵɵtext(1);
|
|
23
|
+
i0.ɵɵelementEnd();
|
|
24
|
+
} if (rf & 2) {
|
|
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));
|
|
29
|
+
i0.ɵɵadvance();
|
|
30
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r0.capitalize(bg_r3), " ");
|
|
31
|
+
} }
|
|
32
|
+
function PrismCanvasToolbarComponent_For_27_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", 21);
|
|
35
|
+
i0.ɵɵlistener("click", function PrismCanvasToolbarComponent_For_27_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_34_Template(rf, ctx) { if (rf & 1) {
|
|
46
|
+
const _r6 = i0.ɵɵgetCurrentView();
|
|
47
|
+
i0.ɵɵelementStart(0, "button", 21);
|
|
48
|
+
i0.ɵɵlistener("click", function PrismCanvasToolbarComponent_For_34_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
|
-
* The canvas tools, as a rail floating over the canvas
|
|
37
|
-
* it.
|
|
59
|
+
* The canvas tools, as a rail floating over the canvas.
|
|
38
60
|
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
* on the rail as a readout — it is the one number here you read far more often
|
|
45
|
-
* than you set.
|
|
61
|
+
* Things you toggle constantly (guides, rulers, the viewport constraint) get
|
|
62
|
+
* their own button; things you set once (background, zoom, viewport width) live
|
|
63
|
+
* in the menu. The template is a view rather than a setting and keeps its own
|
|
64
|
+
* button. Zoom and the active viewport width are shown as readouts; the width
|
|
65
|
+
* only appears while the viewport constraint is on.
|
|
46
66
|
*
|
|
47
|
-
* The host
|
|
48
|
-
* `.prism-canvas-wrap`
|
|
49
|
-
*
|
|
50
|
-
*
|
|
51
|
-
*
|
|
67
|
+
* The host generates no box. The rail must be a direct child of
|
|
68
|
+
* `.prism-canvas-wrap` outside the stage, because that is what capture mode's
|
|
69
|
+
* structural rule in `prism-capture.service.ts` hides. A rail nested in the
|
|
70
|
+
* renderer or the stage would end up in every screenshot and corrupt
|
|
71
|
+
* visual-regression baselines.
|
|
52
72
|
*/
|
|
53
73
|
export class PrismCanvasToolbarComponent {
|
|
54
74
|
canvas = inject(PrismCanvasService);
|
|
@@ -64,28 +84,24 @@ export class PrismCanvasToolbarComponent {
|
|
|
64
84
|
}
|
|
65
85
|
}
|
|
66
86
|
/**
|
|
67
|
-
* Every {@link CanvasBg},
|
|
87
|
+
* Every {@link CanvasBg}, taken from the type's canonical list.
|
|
68
88
|
*
|
|
69
|
-
*
|
|
70
|
-
*
|
|
71
|
-
*
|
|
72
|
-
* leaves the whole group with nothing active and the recommendation with
|
|
73
|
-
* nowhere to sit. That is what a shorter list bought when `transparent` was
|
|
74
|
-
* left out of it, so the list is now the type's own.
|
|
89
|
+
* The group is also a readout: the active button is `effective()` and the
|
|
90
|
+
* recommended one carries the `is-rec` edge. A value missing from the list
|
|
91
|
+
* cannot be shown, so a variant declaring it would leave nothing active.
|
|
75
92
|
*
|
|
76
|
-
* `checker` and `transparent`
|
|
77
|
-
*
|
|
78
|
-
*
|
|
79
|
-
* reason and says so, but it stays in the list until 23.0.0 — a component
|
|
80
|
-
* can still declare it, and the group has to be able to show what it has.
|
|
93
|
+
* `checker` and `transparent` paint the same checkerboard here, so their
|
|
94
|
+
* titles explain the difference, which only a capture shows. `checker` is
|
|
95
|
+
* deprecated but stays until 23.0.0 because components can still declare it.
|
|
81
96
|
*/
|
|
82
97
|
bgs = CANVAS_BGS;
|
|
83
|
-
/** What a background means, where the canvas cannot show the difference. */
|
|
84
98
|
/**
|
|
99
|
+
* What a background means, where the canvas cannot show the difference.
|
|
100
|
+
*
|
|
85
101
|
* Bound with `[attr.title]`, never `[title]`. A property binding assigns to
|
|
86
102
|
* `HTMLElement.title`, a non-nullable DOMString, so the `null` below would
|
|
87
103
|
* be stringified and every unremarkable button would carry a tooltip
|
|
88
|
-
* reading "null"
|
|
104
|
+
* reading "null" (four of the six in the common case).
|
|
89
105
|
*/
|
|
90
106
|
bgTitle(bg) {
|
|
91
107
|
if (this.variantBg.recommended() === bg) {
|
|
@@ -95,7 +111,7 @@ export class PrismCanvasToolbarComponent {
|
|
|
95
111
|
return 'Checkerboard here, a real alpha channel in a capture';
|
|
96
112
|
}
|
|
97
113
|
if (bg === 'checker') {
|
|
98
|
-
return 'Deprecated
|
|
114
|
+
return 'Deprecated: same look as Transparent, but a capture keeps the themed colour';
|
|
99
115
|
}
|
|
100
116
|
return null;
|
|
101
117
|
}
|
|
@@ -103,47 +119,74 @@ export class PrismCanvasToolbarComponent {
|
|
|
103
119
|
{ value: 0.75, label: '75%' },
|
|
104
120
|
{ value: 1, label: '100%' },
|
|
105
121
|
{ value: 1.5, label: '150%' },
|
|
106
|
-
{ value: 2, label: '200%' }
|
|
122
|
+
{ value: 2, label: '200%' }
|
|
107
123
|
];
|
|
124
|
+
/**
|
|
125
|
+
* The named widths, offered the same way as the zoom chooser.
|
|
126
|
+
*
|
|
127
|
+
* Plain numbers and no device names: this tool narrows a box and simulates
|
|
128
|
+
* nothing, so calling 390 "iPhone" would promise a fidelity it does not have.
|
|
129
|
+
*/
|
|
130
|
+
viewports = VIEWPORT_SNAPS;
|
|
108
131
|
capitalize(s) {
|
|
109
132
|
return s.charAt(0).toUpperCase() + s.slice(1);
|
|
110
133
|
}
|
|
111
134
|
static ɵfac = function PrismCanvasToolbarComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || PrismCanvasToolbarComponent)(); };
|
|
112
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PrismCanvasToolbarComponent, selectors: [["prism-canvas-toolbar"]], decls:
|
|
135
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PrismCanvasToolbarComponent, selectors: [["prism-canvas-toolbar"]], decls: 35, vars: 24, 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", "title", "Toggle measure tool", "aria-label", "Toggle measure tool", 1, "prism-toolrail__btn", 3, "click"], ["name", "ruler", 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
136
|
i0.ɵɵelementStart(0, "div", 0)(1, "span", 1);
|
|
114
137
|
i0.ɵɵtext(2);
|
|
138
|
+
i0.ɵɵconditionalCreate(3, PrismCanvasToolbarComponent_Conditional_3_Template, 2, 1, "span", 2);
|
|
115
139
|
i0.ɵɵelementEnd();
|
|
116
|
-
i0.ɵɵelementStart(
|
|
117
|
-
i0.ɵɵlistener("click", function
|
|
118
|
-
i0.ɵɵelement(
|
|
140
|
+
i0.ɵɵelementStart(4, "button", 3);
|
|
141
|
+
i0.ɵɵlistener("click", function PrismCanvasToolbarComponent_Template_button_click_4_listener() { return ctx.canvas.toggleGuides(); });
|
|
142
|
+
i0.ɵɵelement(5, "prism-icon", 4);
|
|
119
143
|
i0.ɵɵelementEnd();
|
|
120
|
-
i0.ɵɵelementStart(
|
|
121
|
-
i0.ɵɵlistener("click", function
|
|
122
|
-
i0.ɵɵelement(
|
|
144
|
+
i0.ɵɵelementStart(6, "button", 5);
|
|
145
|
+
i0.ɵɵlistener("click", function PrismCanvasToolbarComponent_Template_button_click_6_listener() { return ctx.canvas.toggleRulers(); });
|
|
146
|
+
i0.ɵɵelement(7, "prism-icon", 6);
|
|
123
147
|
i0.ɵɵelementEnd();
|
|
124
|
-
i0.ɵɵelementStart(
|
|
125
|
-
i0.ɵɵ
|
|
148
|
+
i0.ɵɵelementStart(8, "button", 7);
|
|
149
|
+
i0.ɵɵlistener("click", function PrismCanvasToolbarComponent_Template_button_click_8_listener() { return ctx.canvas.toggleViewport(); });
|
|
150
|
+
i0.ɵɵelement(9, "prism-icon", 8);
|
|
126
151
|
i0.ɵɵelementEnd();
|
|
127
|
-
i0.ɵɵelement(9, "span", 8);
|
|
128
152
|
i0.ɵɵelementStart(10, "button", 9);
|
|
153
|
+
i0.ɵɵlistener("click", function PrismCanvasToolbarComponent_Template_button_click_10_listener() { return ctx.canvas.toggleMeasure(); });
|
|
129
154
|
i0.ɵɵelement(11, "prism-icon", 10);
|
|
155
|
+
i0.ɵɵelementEnd();
|
|
156
|
+
i0.ɵɵelementStart(12, "button", 11);
|
|
157
|
+
i0.ɵɵelement(13, "prism-icon", 12);
|
|
158
|
+
i0.ɵɵelementEnd();
|
|
159
|
+
i0.ɵɵelement(14, "span", 13);
|
|
160
|
+
i0.ɵɵelementStart(15, "button", 14);
|
|
161
|
+
i0.ɵɵelement(16, "prism-icon", 15);
|
|
130
162
|
i0.ɵɵelementEnd()();
|
|
131
|
-
i0.ɵɵelementStart(
|
|
132
|
-
i0.ɵɵtext(
|
|
163
|
+
i0.ɵɵelementStart(17, "div", 16)(18, "span", 17);
|
|
164
|
+
i0.ɵɵtext(19, "Canvas");
|
|
165
|
+
i0.ɵɵelementEnd();
|
|
166
|
+
i0.ɵɵelementStart(20, "div", 18);
|
|
167
|
+
i0.ɵɵrepeaterCreate(21, PrismCanvasToolbarComponent_For_22_Template, 2, 6, "button", 19, i0.ɵɵrepeaterTrackByIdentity);
|
|
168
|
+
i0.ɵɵelementEnd();
|
|
169
|
+
i0.ɵɵelementStart(23, "span", 17);
|
|
170
|
+
i0.ɵɵtext(24, "Zoom");
|
|
133
171
|
i0.ɵɵelementEnd();
|
|
134
|
-
i0.ɵɵelementStart(
|
|
135
|
-
i0.ɵɵrepeaterCreate(
|
|
172
|
+
i0.ɵɵelementStart(25, "div", 18);
|
|
173
|
+
i0.ɵɵrepeaterCreate(26, PrismCanvasToolbarComponent_For_27_Template, 2, 3, "button", 20, _forTrack0);
|
|
136
174
|
i0.ɵɵelementEnd();
|
|
137
|
-
i0.ɵɵelementStart(
|
|
138
|
-
i0.ɵɵtext(
|
|
175
|
+
i0.ɵɵelementStart(28, "span", 17);
|
|
176
|
+
i0.ɵɵtext(29, "Width");
|
|
139
177
|
i0.ɵɵelementEnd();
|
|
140
|
-
i0.ɵɵelementStart(
|
|
141
|
-
i0.ɵɵ
|
|
178
|
+
i0.ɵɵelementStart(30, "div", 18)(31, "button", 21);
|
|
179
|
+
i0.ɵɵlistener("click", function PrismCanvasToolbarComponent_Template_button_click_31_listener() { return ctx.canvas.setViewportWidth(null); });
|
|
180
|
+
i0.ɵɵtext(32, " Auto ");
|
|
181
|
+
i0.ɵɵelementEnd();
|
|
182
|
+
i0.ɵɵrepeaterCreate(33, PrismCanvasToolbarComponent_For_34_Template, 2, 3, "button", 20, i0.ɵɵrepeaterTrackByIdentity);
|
|
142
183
|
i0.ɵɵelementEnd()();
|
|
143
184
|
} if (rf & 2) {
|
|
144
185
|
i0.ɵɵclassProp("has-rulers", ctx.canvas.rulers());
|
|
145
186
|
i0.ɵɵadvance(2);
|
|
146
|
-
i0.ɵɵtextInterpolate1("", ctx.Math.round(ctx.canvas.zoom() * 100), "%");
|
|
187
|
+
i0.ɵɵtextInterpolate1(" ", ctx.Math.round(ctx.canvas.zoom() * 100), "% ");
|
|
188
|
+
i0.ɵɵadvance();
|
|
189
|
+
i0.ɵɵconditional(ctx.canvas.viewportWidth() !== null ? 3 : -1);
|
|
147
190
|
i0.ɵɵadvance();
|
|
148
191
|
i0.ɵɵclassProp("is-on", ctx.canvas.guides());
|
|
149
192
|
i0.ɵɵattribute("aria-pressed", ctx.canvas.guides());
|
|
@@ -154,6 +197,16 @@ export class PrismCanvasToolbarComponent {
|
|
|
154
197
|
i0.ɵɵattribute("aria-pressed", ctx.canvas.rulers());
|
|
155
198
|
i0.ɵɵadvance();
|
|
156
199
|
i0.ɵɵproperty("size", 14);
|
|
200
|
+
i0.ɵɵadvance();
|
|
201
|
+
i0.ɵɵclassProp("is-on", ctx.canvas.viewportWidth() !== null);
|
|
202
|
+
i0.ɵɵattribute("aria-pressed", ctx.canvas.viewportWidth() !== null);
|
|
203
|
+
i0.ɵɵadvance();
|
|
204
|
+
i0.ɵɵproperty("size", 14);
|
|
205
|
+
i0.ɵɵadvance();
|
|
206
|
+
i0.ɵɵclassProp("is-on", ctx.canvas.measure());
|
|
207
|
+
i0.ɵɵattribute("aria-pressed", ctx.canvas.measure());
|
|
208
|
+
i0.ɵɵadvance();
|
|
209
|
+
i0.ɵɵproperty("size", 14);
|
|
157
210
|
i0.ɵɵadvance(2);
|
|
158
211
|
i0.ɵɵproperty("size", 14);
|
|
159
212
|
i0.ɵɵadvance(3);
|
|
@@ -162,105 +215,14 @@ export class PrismCanvasToolbarComponent {
|
|
|
162
215
|
i0.ɵɵrepeater(ctx.bgs);
|
|
163
216
|
i0.ɵɵadvance(5);
|
|
164
217
|
i0.ɵɵrepeater(ctx.zooms);
|
|
165
|
-
|
|
218
|
+
i0.ɵɵadvance(5);
|
|
219
|
+
i0.ɵɵclassProp("is-on", ctx.canvas.viewportWidth() === null);
|
|
220
|
+
i0.ɵɵadvance(2);
|
|
221
|
+
i0.ɵɵrepeater(ctx.viewports);
|
|
222
|
+
} }, 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
223
|
}
|
|
167
224
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PrismCanvasToolbarComponent, [{
|
|
168
225
|
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 "] }]
|
|
226
|
+
args: [{ selector: 'prism-canvas-toolbar', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [PrismIconComponent], template: "<!-- Anchored in .prism-canvas-wrap, absolute, 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 [class.is-on]=\"canvas.measure()\"\n (click)=\"canvas.toggleMeasure()\"\n title=\"Toggle measure tool\"\n aria-label=\"Toggle measure tool\"\n [attr.aria-pressed]=\"canvas.measure()\">\n <prism-icon\n name=\"ruler\"\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, so 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 (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
227
|
}], null, null); })();
|
|
266
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismCanvasToolbarComponent, { className: "PrismCanvasToolbarComponent", filePath: "app/canvas/prism-canvas-toolbar.component.ts", lineNumber:
|
|
228
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismCanvasToolbarComponent, { className: "PrismCanvasToolbarComponent", filePath: "app/canvas/prism-canvas-toolbar.component.ts", lineNumber: 31 }); })();
|
|
@@ -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, because a\n percentage 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. 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
|
+
}
|