@ng-prism/core 21.0.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 +170 -0
- package/builders.json +14 -0
- package/dist/app/component-header/prism-component-header.component.d.ts +8 -0
- package/dist/app/component-header/prism-component-header.component.d.ts.map +1 -0
- package/dist/app/component-header/prism-component-header.component.js +77 -0
- package/dist/app/controls/boolean-control.component.d.ts +10 -0
- package/dist/app/controls/boolean-control.component.d.ts.map +1 -0
- package/dist/app/controls/boolean-control.component.js +58 -0
- package/dist/app/controls/json-control.component.d.ts +19 -0
- package/dist/app/controls/json-control.component.d.ts.map +1 -0
- package/dist/app/controls/json-control.component.js +136 -0
- package/dist/app/controls/number-control.component.d.ts +10 -0
- package/dist/app/controls/number-control.component.d.ts.map +1 -0
- package/dist/app/controls/number-control.component.js +55 -0
- package/dist/app/controls/string-control.component.d.ts +10 -0
- package/dist/app/controls/string-control.component.d.ts.map +1 -0
- package/dist/app/controls/string-control.component.js +55 -0
- package/dist/app/controls/union-control.component.d.ts +11 -0
- package/dist/app/controls/union-control.component.d.ts.map +1 -0
- package/dist/app/controls/union-control.component.js +72 -0
- package/dist/app/header/prism-header.component.d.ts +10 -0
- package/dist/app/header/prism-header.component.d.ts.map +1 -0
- package/dist/app/header/prism-header.component.js +241 -0
- package/dist/app/hmr.d.ts +4 -0
- package/dist/app/hmr.d.ts.map +1 -0
- package/dist/app/hmr.js +5 -0
- package/dist/app/index.d.ts +18 -0
- package/dist/app/index.d.ts.map +1 -0
- package/dist/app/index.js +21 -0
- package/dist/app/layout-menu/prism-layout-menu.component.d.ts +10 -0
- package/dist/app/layout-menu/prism-layout-menu.component.d.ts.map +1 -0
- package/dist/app/layout-menu/prism-layout-menu.component.js +190 -0
- package/dist/app/page-renderer/prism-icon-page.component.d.ts +8 -0
- package/dist/app/page-renderer/prism-icon-page.component.d.ts.map +1 -0
- package/dist/app/page-renderer/prism-icon-page.component.js +42 -0
- package/dist/app/page-renderer/prism-page-renderer.component.d.ts +8 -0
- package/dist/app/page-renderer/prism-page-renderer.component.d.ts.map +1 -0
- package/dist/app/page-renderer/prism-page-renderer.component.js +72 -0
- package/dist/app/page-renderer/prism-token-page.component.d.ts +8 -0
- package/dist/app/page-renderer/prism-token-page.component.d.ts.map +1 -0
- package/dist/app/page-renderer/prism-token-page.component.js +164 -0
- package/dist/app/panels/a11y/a11y-audit.service.d.ts +17 -0
- package/dist/app/panels/a11y/a11y-audit.service.d.ts.map +1 -0
- package/dist/app/panels/a11y/a11y-audit.service.js +71 -0
- package/dist/app/panels/a11y/a11y-core.plugin.d.ts +3 -0
- package/dist/app/panels/a11y/a11y-core.plugin.d.ts.map +1 -0
- package/dist/app/panels/a11y/a11y-core.plugin.js +8 -0
- package/dist/app/panels/a11y/a11y-dom-utils.d.ts +11 -0
- package/dist/app/panels/a11y/a11y-dom-utils.d.ts.map +1 -0
- package/dist/app/panels/a11y/a11y-dom-utils.js +149 -0
- package/dist/app/panels/a11y/a11y-keyboard-overlay.component.d.ts +24 -0
- package/dist/app/panels/a11y/a11y-keyboard-overlay.component.d.ts.map +1 -0
- package/dist/app/panels/a11y/a11y-keyboard-overlay.component.js +104 -0
- package/dist/app/panels/a11y/a11y-keyboard.component.d.ts +12 -0
- package/dist/app/panels/a11y/a11y-keyboard.component.d.ts.map +1 -0
- package/dist/app/panels/a11y/a11y-keyboard.component.js +150 -0
- package/dist/app/panels/a11y/a11y-keyboard.service.d.ts +8 -0
- package/dist/app/panels/a11y/a11y-keyboard.service.d.ts.map +1 -0
- package/dist/app/panels/a11y/a11y-keyboard.service.js +71 -0
- package/dist/app/panels/a11y/a11y-overlay-host.component.d.ts +6 -0
- package/dist/app/panels/a11y/a11y-overlay-host.component.d.ts.map +1 -0
- package/dist/app/panels/a11y/a11y-overlay-host.component.js +18 -0
- package/dist/app/panels/a11y/a11y-panel-state.service.d.ts +8 -0
- package/dist/app/panels/a11y/a11y-panel-state.service.d.ts.map +1 -0
- package/dist/app/panels/a11y/a11y-panel-state.service.js +11 -0
- package/dist/app/panels/a11y/a11y-panel.component.d.ts +14 -0
- package/dist/app/panels/a11y/a11y-panel.component.d.ts.map +1 -0
- package/dist/app/panels/a11y/a11y-panel.component.js +183 -0
- package/dist/app/panels/a11y/a11y-perspective.service.d.ts +8 -0
- package/dist/app/panels/a11y/a11y-perspective.service.d.ts.map +1 -0
- package/dist/app/panels/a11y/a11y-perspective.service.js +11 -0
- package/dist/app/panels/a11y/a11y-score.component.d.ts +11 -0
- package/dist/app/panels/a11y/a11y-score.component.d.ts.map +1 -0
- package/dist/app/panels/a11y/a11y-score.component.js +72 -0
- package/dist/app/panels/a11y/a11y-sr-overlay.component.d.ts +27 -0
- package/dist/app/panels/a11y/a11y-sr-overlay.component.d.ts.map +1 -0
- package/dist/app/panels/a11y/a11y-sr-overlay.component.js +127 -0
- package/dist/app/panels/a11y/a11y-sr.component.d.ts +19 -0
- package/dist/app/panels/a11y/a11y-sr.component.d.ts.map +1 -0
- package/dist/app/panels/a11y/a11y-sr.component.js +257 -0
- package/dist/app/panels/a11y/a11y-sr.service.d.ts +8 -0
- package/dist/app/panels/a11y/a11y-sr.service.d.ts.map +1 -0
- package/dist/app/panels/a11y/a11y-sr.service.js +102 -0
- package/dist/app/panels/a11y/a11y-tree.component.d.ts +27 -0
- package/dist/app/panels/a11y/a11y-tree.component.d.ts.map +1 -0
- package/dist/app/panels/a11y/a11y-tree.component.js +229 -0
- package/dist/app/panels/a11y/a11y-tree.service.d.ts +8 -0
- package/dist/app/panels/a11y/a11y-tree.service.d.ts.map +1 -0
- package/dist/app/panels/a11y/a11y-tree.service.js +47 -0
- package/dist/app/panels/a11y/a11y-violations.component.d.ts +15 -0
- package/dist/app/panels/a11y/a11y-violations.component.d.ts.map +1 -0
- package/dist/app/panels/a11y/a11y-violations.component.js +457 -0
- package/dist/app/panels/a11y/a11y.types.d.ts +44 -0
- package/dist/app/panels/a11y/a11y.types.d.ts.map +1 -0
- package/dist/app/panels/a11y/a11y.types.js +1 -0
- package/dist/app/panels/builtin-panels.d.ts +3 -0
- package/dist/app/panels/builtin-panels.d.ts.map +1 -0
- package/dist/app/panels/builtin-panels.js +8 -0
- package/dist/app/panels/controls/controls-plugin.d.ts +3 -0
- package/dist/app/panels/controls/controls-plugin.d.ts.map +1 -0
- package/dist/app/panels/controls/controls-plugin.js +12 -0
- package/dist/app/panels/controls/prism-controls-panel.component.d.ts +13 -0
- package/dist/app/panels/controls/prism-controls-panel.component.d.ts.map +1 -0
- package/dist/app/panels/controls/prism-controls-panel.component.js +178 -0
- package/dist/app/panels/events/events-plugin.d.ts +3 -0
- package/dist/app/panels/events/events-plugin.d.ts.map +1 -0
- package/dist/app/panels/events/events-plugin.js +12 -0
- package/dist/app/panels/events/prism-events-panel.component.d.ts +9 -0
- package/dist/app/panels/events/prism-events-panel.component.d.ts.map +1 -0
- package/dist/app/panels/events/prism-events-panel.component.js +83 -0
- package/dist/app/panels/events/prism-json-node.component.d.ts +22 -0
- package/dist/app/panels/events/prism-json-node.component.d.ts.map +1 -0
- package/dist/app/panels/events/prism-json-node.component.js +350 -0
- package/dist/app/panels/events/prism-json-node.utils.d.ts +2 -0
- package/dist/app/panels/events/prism-json-node.utils.d.ts.map +1 -0
- package/dist/app/panels/events/prism-json-node.utils.js +40 -0
- package/dist/app/panels/panel-host/prism-panel-host.component.d.ts +26 -0
- package/dist/app/panels/panel-host/prism-panel-host.component.d.ts.map +1 -0
- package/dist/app/panels/panel-host/prism-panel-host.component.js +157 -0
- package/dist/app/provide-prism.d.ts +8 -0
- package/dist/app/provide-prism.d.ts.map +1 -0
- package/dist/app/provide-prism.js +21 -0
- package/dist/app/renderer/highlight-xml.d.ts +2 -0
- package/dist/app/renderer/highlight-xml.d.ts.map +1 -0
- package/dist/app/renderer/highlight-xml.js +27 -0
- package/dist/app/renderer/prism-renderer.component.d.ts +32 -0
- package/dist/app/renderer/prism-renderer.component.d.ts.map +1 -0
- package/dist/app/renderer/prism-renderer.component.js +346 -0
- package/dist/app/renderer/snippet-generator.d.ts +7 -0
- package/dist/app/renderer/snippet-generator.d.ts.map +1 -0
- package/dist/app/renderer/snippet-generator.js +162 -0
- package/dist/app/services/navigation-item.types.d.ts +10 -0
- package/dist/app/services/navigation-item.types.d.ts.map +1 -0
- package/dist/app/services/navigation-item.types.js +1 -0
- package/dist/app/services/prism-event-log.service.d.ts +16 -0
- package/dist/app/services/prism-event-log.service.d.ts.map +1 -0
- package/dist/app/services/prism-event-log.service.js +21 -0
- package/dist/app/services/prism-layout.service.d.ts +23 -0
- package/dist/app/services/prism-layout.service.d.ts.map +1 -0
- package/dist/app/services/prism-layout.service.js +85 -0
- package/dist/app/services/prism-manifest.service.d.ts +15 -0
- package/dist/app/services/prism-manifest.service.d.ts.map +1 -0
- package/dist/app/services/prism-manifest.service.js +53 -0
- package/dist/app/services/prism-navigation.service.d.ts +18 -0
- package/dist/app/services/prism-navigation.service.d.ts.map +1 -0
- package/dist/app/services/prism-navigation.service.js +94 -0
- package/dist/app/services/prism-panel.service.d.ts +8 -0
- package/dist/app/services/prism-panel.service.d.ts.map +1 -0
- package/dist/app/services/prism-panel.service.js +12 -0
- package/dist/app/services/prism-plugin.service.d.ts +12 -0
- package/dist/app/services/prism-plugin.service.d.ts.map +1 -0
- package/dist/app/services/prism-plugin.service.js +32 -0
- package/dist/app/services/prism-renderer.service.d.ts +18 -0
- package/dist/app/services/prism-renderer.service.d.ts.map +1 -0
- package/dist/app/services/prism-renderer.service.js +84 -0
- package/dist/app/services/prism-search.service.d.ts +13 -0
- package/dist/app/services/prism-search.service.d.ts.map +1 -0
- package/dist/app/services/prism-search.service.js +39 -0
- package/dist/app/services/prism-theme.service.d.ts +9 -0
- package/dist/app/services/prism-theme.service.d.ts.map +1 -0
- package/dist/app/services/prism-theme.service.js +23 -0
- package/dist/app/services/prism-url-state.service.d.ts +16 -0
- package/dist/app/services/prism-url-state.service.d.ts.map +1 -0
- package/dist/app/services/prism-url-state.service.js +108 -0
- package/dist/app/shell/prism-shell.component.d.ts +22 -0
- package/dist/app/shell/prism-shell.component.d.ts.map +1 -0
- package/dist/app/shell/prism-shell.component.js +283 -0
- package/dist/app/sidebar/prism-sidebar.component.d.ts +14 -0
- package/dist/app/sidebar/prism-sidebar.component.d.ts.map +1 -0
- package/dist/app/sidebar/prism-sidebar.component.js +105 -0
- package/dist/app/theme/prism-default-theme.d.ts +4 -0
- package/dist/app/theme/prism-default-theme.d.ts.map +1 -0
- package/dist/app/theme/prism-default-theme.js +57 -0
- package/dist/app/tokens/prism-tokens.d.ts +11 -0
- package/dist/app/tokens/prism-tokens.d.ts.map +1 -0
- package/dist/app/tokens/prism-tokens.js +7 -0
- package/dist/app/view-tab-bar/prism-view-panel-host.component.d.ts +22 -0
- package/dist/app/view-tab-bar/prism-view-panel-host.component.d.ts.map +1 -0
- package/dist/app/view-tab-bar/prism-view-panel-host.component.js +90 -0
- package/dist/app/view-tab-bar/prism-view-tab-bar.component.d.ts +10 -0
- package/dist/app/view-tab-bar/prism-view-tab-bar.component.d.ts.map +1 -0
- package/dist/app/view-tab-bar/prism-view-tab-bar.component.js +65 -0
- package/dist/builder/build/index.d.ts +6 -0
- package/dist/builder/build/index.d.ts.map +1 -0
- package/dist/builder/build/index.js +15 -0
- package/dist/builder/build/schema.d.ts +9 -0
- package/dist/builder/build/schema.d.ts.map +1 -0
- package/dist/builder/build/schema.js +1 -0
- package/dist/builder/config-loader/config-loader.d.ts +8 -0
- package/dist/builder/config-loader/config-loader.d.ts.map +1 -0
- package/dist/builder/config-loader/config-loader.js +33 -0
- package/dist/builder/config-loader/index.d.ts +3 -0
- package/dist/builder/config-loader/index.d.ts.map +1 -0
- package/dist/builder/config-loader/index.js +1 -0
- package/dist/builder/icon-resolver/icon-resolver.d.ts +7 -0
- package/dist/builder/icon-resolver/icon-resolver.d.ts.map +1 -0
- package/dist/builder/icon-resolver/icon-resolver.js +12 -0
- package/dist/builder/icon-resolver/index.d.ts +2 -0
- package/dist/builder/icon-resolver/index.d.ts.map +1 -0
- package/dist/builder/icon-resolver/index.js +1 -0
- package/dist/builder/manifest/host-parser.d.ts +6 -0
- package/dist/builder/manifest/host-parser.d.ts.map +1 -0
- package/dist/builder/manifest/host-parser.js +9 -0
- package/dist/builder/manifest/index.d.ts +3 -0
- package/dist/builder/manifest/index.d.ts.map +1 -0
- package/dist/builder/manifest/index.js +1 -0
- package/dist/builder/manifest/runtime-manifest.generator.d.ts +9 -0
- package/dist/builder/manifest/runtime-manifest.generator.d.ts.map +1 -0
- package/dist/builder/manifest/runtime-manifest.generator.js +216 -0
- package/dist/builder/plugin-runner/index.d.ts +2 -0
- package/dist/builder/plugin-runner/index.d.ts.map +1 -0
- package/dist/builder/plugin-runner/index.js +1 -0
- package/dist/builder/plugin-runner/plugin-runner.d.ts +3 -0
- package/dist/builder/plugin-runner/plugin-runner.d.ts.map +1 -0
- package/dist/builder/plugin-runner/plugin-runner.js +38 -0
- package/dist/builder/scanner/ast-utils.d.ts +20 -0
- package/dist/builder/scanner/ast-utils.d.ts.map +1 -0
- package/dist/builder/scanner/ast-utils.js +100 -0
- package/dist/builder/scanner/component.scanner.d.ts +7 -0
- package/dist/builder/scanner/component.scanner.d.ts.map +1 -0
- package/dist/builder/scanner/component.scanner.js +113 -0
- package/dist/builder/scanner/entry-point-discovery.d.ts +6 -0
- package/dist/builder/scanner/entry-point-discovery.d.ts.map +1 -0
- package/dist/builder/scanner/entry-point-discovery.js +38 -0
- package/dist/builder/scanner/entry-point.scanner.d.ts +11 -0
- package/dist/builder/scanner/entry-point.scanner.d.ts.map +1 -0
- package/dist/builder/scanner/entry-point.scanner.js +19 -0
- package/dist/builder/scanner/index.d.ts +8 -0
- package/dist/builder/scanner/index.d.ts.map +1 -0
- package/dist/builder/scanner/index.js +6 -0
- package/dist/builder/scanner/input.extractor.d.ts +11 -0
- package/dist/builder/scanner/input.extractor.d.ts.map +1 -0
- package/dist/builder/scanner/input.extractor.js +169 -0
- package/dist/builder/scanner/manifest.generator.d.ts +6 -0
- package/dist/builder/scanner/manifest.generator.d.ts.map +1 -0
- package/dist/builder/scanner/manifest.generator.js +59 -0
- package/dist/builder/scanner/scanner.d.ts +16 -0
- package/dist/builder/scanner/scanner.d.ts.map +1 -0
- package/dist/builder/scanner/scanner.js +28 -0
- package/dist/builder/serve/index.d.ts +6 -0
- package/dist/builder/serve/index.d.ts.map +1 -0
- package/dist/builder/serve/index.js +48 -0
- package/dist/builder/serve/schema.d.ts +9 -0
- package/dist/builder/serve/schema.d.ts.map +1 -0
- package/dist/builder/serve/schema.js +1 -0
- package/dist/builder/shared/index.d.ts +3 -0
- package/dist/builder/shared/index.d.ts.map +1 -0
- package/dist/builder/shared/index.js +1 -0
- package/dist/builder/shared/prism-pipeline.d.ts +21 -0
- package/dist/builder/shared/prism-pipeline.d.ts.map +1 -0
- package/dist/builder/shared/prism-pipeline.js +95 -0
- package/dist/builder/token-scanner/index.d.ts +2 -0
- package/dist/builder/token-scanner/index.d.ts.map +1 -0
- package/dist/builder/token-scanner/index.js +1 -0
- package/dist/builder/token-scanner/token-scanner.d.ts +9 -0
- package/dist/builder/token-scanner/token-scanner.d.ts.map +1 -0
- package/dist/builder/token-scanner/token-scanner.js +95 -0
- package/dist/builder/watcher/index.d.ts +3 -0
- package/dist/builder/watcher/index.d.ts.map +1 -0
- package/dist/builder/watcher/index.js +1 -0
- package/dist/builder/watcher/prism-watcher.d.ts +29 -0
- package/dist/builder/watcher/prism-watcher.d.ts.map +1 -0
- package/dist/builder/watcher/prism-watcher.js +79 -0
- package/dist/config/index.d.ts +6 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +2 -0
- package/dist/decorator/index.d.ts +3 -0
- package/dist/decorator/index.d.ts.map +1 -0
- package/dist/decorator/index.js +1 -0
- package/dist/decorator/showcase.decorator.d.ts +5 -0
- package/dist/decorator/showcase.decorator.d.ts.map +1 -0
- package/dist/decorator/showcase.decorator.js +7 -0
- package/dist/decorator/showcase.types.d.ts +54 -0
- package/dist/decorator/showcase.types.d.ts.map +1 -0
- package/dist/decorator/showcase.types.js +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/plugin/define-config.d.ts +4 -0
- package/dist/plugin/define-config.d.ts.map +1 -0
- package/dist/plugin/define-config.js +4 -0
- package/dist/plugin/index.d.ts +8 -0
- package/dist/plugin/index.d.ts.map +1 -0
- package/dist/plugin/index.js +3 -0
- package/dist/plugin/page-helpers.d.ts +19 -0
- package/dist/plugin/page-helpers.d.ts.map +1 -0
- package/dist/plugin/page-helpers.js +20 -0
- package/dist/plugin/page.types.d.ts +19 -0
- package/dist/plugin/page.types.d.ts.map +1 -0
- package/dist/plugin/page.types.js +1 -0
- package/dist/plugin/plugin.types.d.ts +98 -0
- package/dist/plugin/plugin.types.d.ts.map +1 -0
- package/dist/plugin/plugin.types.js +1 -0
- package/dist/schematics/ng-add/index.d.ts +4 -0
- package/dist/schematics/ng-add/index.d.ts.map +1 -0
- package/dist/schematics/ng-add/index.js +179 -0
- package/dist/schematics/ng-add/schema.d.ts +5 -0
- package/dist/schematics/ng-add/schema.d.ts.map +1 -0
- package/dist/schematics/ng-add/schema.js +1 -0
- package/dist/test-setup-browser.d.ts +2 -0
- package/dist/test-setup-browser.d.ts.map +1 -0
- package/dist/test-setup-browser.js +4 -0
- package/package.json +73 -0
- package/schematics/collection.json +10 -0
- package/schematics/ng-add/schema.json +20 -0
- package/src/builder/build/schema.json +35 -0
- package/src/builder/serve/schema.json +36 -0
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { effect, inject, Injectable, Injector } from '@angular/core';
|
|
2
|
+
import { PRISM_CONFIG } from '../tokens/prism-tokens.js';
|
|
3
|
+
import { PrismManifestService } from './prism-manifest.service.js';
|
|
4
|
+
import { PrismNavigationService } from './prism-navigation.service.js';
|
|
5
|
+
import { PrismPanelService } from './prism-panel.service.js';
|
|
6
|
+
import { PrismRendererService } from './prism-renderer.service.js';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
const PARAM_COMPONENT = 'component';
|
|
9
|
+
const PARAM_PAGE = 'page';
|
|
10
|
+
const PARAM_VARIANT = 'variant';
|
|
11
|
+
const PARAM_VIEW = 'view';
|
|
12
|
+
const DEFAULT_VIEW = 'renderer';
|
|
13
|
+
export class PrismUrlStateService {
|
|
14
|
+
manifestService = inject(PrismManifestService);
|
|
15
|
+
navigationService = inject(PrismNavigationService);
|
|
16
|
+
rendererService = inject(PrismRendererService);
|
|
17
|
+
panelService = inject(PrismPanelService);
|
|
18
|
+
config = inject(PRISM_CONFIG);
|
|
19
|
+
injector = inject(Injector);
|
|
20
|
+
suppressSync = false;
|
|
21
|
+
init() {
|
|
22
|
+
if (this.config.urlState === false)
|
|
23
|
+
return;
|
|
24
|
+
this.restoreFromUrl();
|
|
25
|
+
effect(() => {
|
|
26
|
+
const item = this.navigationService.activeItem();
|
|
27
|
+
const variantIndex = this.rendererService.activeVariantIndex();
|
|
28
|
+
const viewId = this.panelService.activeViewId();
|
|
29
|
+
if (this.suppressSync)
|
|
30
|
+
return;
|
|
31
|
+
this.writeToUrl(item, variantIndex, viewId);
|
|
32
|
+
}, { injector: this.injector });
|
|
33
|
+
window.addEventListener('popstate', () => this.restoreFromUrl());
|
|
34
|
+
}
|
|
35
|
+
restoreFromUrl() {
|
|
36
|
+
const params = new URLSearchParams(window.location.search);
|
|
37
|
+
const componentClassName = params.get(PARAM_COMPONENT);
|
|
38
|
+
const pageTitle = params.get(PARAM_PAGE);
|
|
39
|
+
const variantParam = params.get(PARAM_VARIANT);
|
|
40
|
+
const viewId = params.get(PARAM_VIEW);
|
|
41
|
+
this.suppressSync = true;
|
|
42
|
+
try {
|
|
43
|
+
if (componentClassName) {
|
|
44
|
+
const comp = this.manifestService.components()
|
|
45
|
+
.find((c) => c.meta.className === componentClassName);
|
|
46
|
+
if (comp) {
|
|
47
|
+
this.navigationService.select(comp);
|
|
48
|
+
if (variantParam !== null) {
|
|
49
|
+
const index = parseInt(variantParam, 10);
|
|
50
|
+
const maxIndex = (comp.meta.showcaseConfig.variants?.length ?? 1) - 1;
|
|
51
|
+
if (!Number.isNaN(index) && index >= 0 && index <= maxIndex) {
|
|
52
|
+
this.rendererService.activeVariantIndex.set(index);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
else if (pageTitle) {
|
|
58
|
+
const page = this.manifestService.pages()
|
|
59
|
+
.find((p) => p.title === pageTitle);
|
|
60
|
+
if (page) {
|
|
61
|
+
this.navigationService.selectPage(page);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
if (viewId) {
|
|
65
|
+
this.panelService.activeViewId.set(viewId);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
finally {
|
|
69
|
+
this.suppressSync = false;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
writeToUrl(item, variantIndex, viewId) {
|
|
73
|
+
const params = new URLSearchParams();
|
|
74
|
+
if (item?.kind === 'component') {
|
|
75
|
+
params.set(PARAM_COMPONENT, item.data.meta.className);
|
|
76
|
+
if (variantIndex > 0) {
|
|
77
|
+
params.set(PARAM_VARIANT, String(variantIndex));
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
else if (item?.kind === 'page') {
|
|
81
|
+
params.set(PARAM_PAGE, item.data.title);
|
|
82
|
+
}
|
|
83
|
+
if (viewId && viewId !== DEFAULT_VIEW) {
|
|
84
|
+
params.set(PARAM_VIEW, viewId);
|
|
85
|
+
}
|
|
86
|
+
const queryString = params.toString();
|
|
87
|
+
const newUrl = queryString
|
|
88
|
+
? `${window.location.pathname}?${queryString}`
|
|
89
|
+
: window.location.pathname;
|
|
90
|
+
if (newUrl === window.location.pathname + window.location.search)
|
|
91
|
+
return;
|
|
92
|
+
const currentParams = new URLSearchParams(window.location.search);
|
|
93
|
+
const prevNavKey = currentParams.get(PARAM_COMPONENT) ?? currentParams.get(PARAM_PAGE);
|
|
94
|
+
const newNavKey = params.get(PARAM_COMPONENT) ?? params.get(PARAM_PAGE);
|
|
95
|
+
if (prevNavKey !== newNavKey) {
|
|
96
|
+
window.history.pushState(null, '', newUrl);
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
window.history.replaceState(null, '', newUrl);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
static ɵfac = function PrismUrlStateService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || PrismUrlStateService)(); };
|
|
103
|
+
static ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: PrismUrlStateService, factory: PrismUrlStateService.ɵfac, providedIn: 'root' });
|
|
104
|
+
}
|
|
105
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PrismUrlStateService, [{
|
|
106
|
+
type: Injectable,
|
|
107
|
+
args: [{ providedIn: 'root' }]
|
|
108
|
+
}], null, null); })();
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { PrismLayoutService } from '../services/prism-layout.service.js';
|
|
2
|
+
import { PrismNavigationService } from '../services/prism-navigation.service.js';
|
|
3
|
+
import { PrismPanelService } from '../services/prism-panel.service.js';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export declare class PrismShellComponent {
|
|
6
|
+
private readonly config;
|
|
7
|
+
protected readonly navigationService: PrismNavigationService;
|
|
8
|
+
private readonly themeService;
|
|
9
|
+
protected readonly layout: PrismLayoutService;
|
|
10
|
+
protected readonly panelService: PrismPanelService;
|
|
11
|
+
private readonly pluginService;
|
|
12
|
+
private readonly urlStateService;
|
|
13
|
+
protected readonly viewPanels: import("@angular/core").Signal<import("../../plugin/plugin.types.js").PanelDefinition[]>;
|
|
14
|
+
protected readonly shellStyle: import("@angular/core").Signal<string>;
|
|
15
|
+
constructor();
|
|
16
|
+
protected onKeyDown(e: KeyboardEvent): void;
|
|
17
|
+
protected startSidebarResize(e: MouseEvent): void;
|
|
18
|
+
protected startPanelResize(e: MouseEvent): void;
|
|
19
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<PrismShellComponent, never>;
|
|
20
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<PrismShellComponent, "prism-shell", never, {}, {}, never, never, true, never>;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=prism-shell.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prism-shell.component.d.ts","sourceRoot":"","sources":["../../../src/app/shell/prism-shell.component.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AACjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;;AAavE,qBA+Ka,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuC;IAC9D,SAAS,CAAC,QAAQ,CAAC,iBAAiB,yBAAkC;IACtE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA6B;IAC1D,SAAS,CAAC,QAAQ,CAAC,MAAM,qBAA8B;IACvD,SAAS,CAAC,QAAQ,CAAC,YAAY,oBAA6B;IAC5D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA8B;IAC5D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAgC;IAEhE,SAAS,CAAC,QAAQ,CAAC,UAAU,2FAG1B;IAEH,SAAS,CAAC,QAAQ,CAAC,UAAU,yCAQ1B;;IA6BH,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,aAAa,GAAG,IAAI;IAU3C,SAAS,CAAC,kBAAkB,CAAC,CAAC,EAAE,UAAU,GAAG,IAAI;IAajD,SAAS,CAAC,gBAAgB,CAAC,CAAC,EAAE,UAAU,GAAG,IAAI;yCA1EpC,mBAAmB;2CAAnB,mBAAmB;CAmG/B"}
|
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
import { Component, computed, effect, inject, untracked, HostListener } from '@angular/core';
|
|
2
|
+
import { PRISM_CONFIG } from '../tokens/prism-tokens.js';
|
|
3
|
+
import { PRISM_DARK_THEME, PRISM_LIGHT_THEME } from '../theme/prism-default-theme.js';
|
|
4
|
+
import { PrismThemeService } from '../services/prism-theme.service.js';
|
|
5
|
+
import { PrismLayoutService } from '../services/prism-layout.service.js';
|
|
6
|
+
import { PrismNavigationService } from '../services/prism-navigation.service.js';
|
|
7
|
+
import { PrismPanelService } from '../services/prism-panel.service.js';
|
|
8
|
+
import { PrismPluginService } from '../services/prism-plugin.service.js';
|
|
9
|
+
import { PrismComponentHeaderComponent } from '../component-header/prism-component-header.component.js';
|
|
10
|
+
import { PrismHeaderComponent } from '../header/prism-header.component.js';
|
|
11
|
+
import { PrismPanelHostComponent } from '../panels/panel-host/prism-panel-host.component.js';
|
|
12
|
+
import { PrismRendererComponent } from '../renderer/prism-renderer.component.js';
|
|
13
|
+
import { PrismSidebarComponent } from '../sidebar/prism-sidebar.component.js';
|
|
14
|
+
import { PrismPageRendererComponent } from '../page-renderer/prism-page-renderer.component.js';
|
|
15
|
+
import { BUILTIN_PANELS } from '../panels/builtin-panels.js';
|
|
16
|
+
import { PrismUrlStateService } from '../services/prism-url-state.service.js';
|
|
17
|
+
import { PrismViewTabBarComponent } from '../view-tab-bar/prism-view-tab-bar.component.js';
|
|
18
|
+
import { PrismViewPanelHostComponent } from '../view-tab-bar/prism-view-panel-host.component.js';
|
|
19
|
+
import * as i0 from "@angular/core";
|
|
20
|
+
function PrismShellComponent_Conditional_6_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
21
|
+
i0.ɵɵelement(0, "prism-view-tab-bar", 7);
|
|
22
|
+
} }
|
|
23
|
+
function PrismShellComponent_Conditional_6_Conditional_1_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
24
|
+
i0.ɵɵelement(0, "prism-component-header", 8);
|
|
25
|
+
} }
|
|
26
|
+
function PrismShellComponent_Conditional_6_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
27
|
+
i0.ɵɵconditionalCreate(0, PrismShellComponent_Conditional_6_Conditional_1_Conditional_0_Template, 1, 0, "prism-component-header", 8);
|
|
28
|
+
i0.ɵɵelement(1, "prism-renderer", 5);
|
|
29
|
+
} if (rf & 2) {
|
|
30
|
+
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
31
|
+
i0.ɵɵconditional(ctx_r0.layout.toolbarVisible() ? 0 : -1);
|
|
32
|
+
} }
|
|
33
|
+
function PrismShellComponent_Conditional_6_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
34
|
+
i0.ɵɵelement(0, "prism-view-panel-host", 5);
|
|
35
|
+
} }
|
|
36
|
+
function PrismShellComponent_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
37
|
+
i0.ɵɵconditionalCreate(0, PrismShellComponent_Conditional_6_Conditional_0_Template, 1, 0, "prism-view-tab-bar", 7);
|
|
38
|
+
i0.ɵɵconditionalCreate(1, PrismShellComponent_Conditional_6_Conditional_1_Template, 2, 1)(2, PrismShellComponent_Conditional_6_Conditional_2_Template, 1, 0, "prism-view-panel-host", 5);
|
|
39
|
+
} if (rf & 2) {
|
|
40
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
41
|
+
i0.ɵɵconditional(ctx_r0.viewPanels().length > 0 ? 0 : -1);
|
|
42
|
+
i0.ɵɵadvance();
|
|
43
|
+
i0.ɵɵconditional(ctx_r0.panelService.activeViewId() === "renderer" ? 1 : 2);
|
|
44
|
+
} }
|
|
45
|
+
function PrismShellComponent_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
46
|
+
i0.ɵɵelement(0, "prism-page-renderer", 5);
|
|
47
|
+
} }
|
|
48
|
+
function PrismShellComponent_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
49
|
+
i0.ɵɵelementStart(0, "div", 6)(1, "div", 9);
|
|
50
|
+
i0.ɵɵnamespaceSVG();
|
|
51
|
+
i0.ɵɵelementStart(2, "svg", 10);
|
|
52
|
+
i0.ɵɵelement(3, "path", 11)(4, "path", 12);
|
|
53
|
+
i0.ɵɵelementEnd();
|
|
54
|
+
i0.ɵɵnamespaceHTML();
|
|
55
|
+
i0.ɵɵelementStart(5, "p", 13);
|
|
56
|
+
i0.ɵɵtext(6, "Select a component");
|
|
57
|
+
i0.ɵɵelementEnd();
|
|
58
|
+
i0.ɵɵelementStart(7, "p", 14);
|
|
59
|
+
i0.ɵɵtext(8, "from the sidebar to preview it here");
|
|
60
|
+
i0.ɵɵelementEnd()()();
|
|
61
|
+
} }
|
|
62
|
+
function PrismShellComponent_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
63
|
+
const _r2 = i0.ɵɵgetCurrentView();
|
|
64
|
+
i0.ɵɵelementStart(0, "div", 15);
|
|
65
|
+
i0.ɵɵlistener("mousedown", function PrismShellComponent_Conditional_9_Template_div_mousedown_0_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.startPanelResize($event)); });
|
|
66
|
+
i0.ɵɵelementEnd();
|
|
67
|
+
i0.ɵɵelementStart(1, "div", 16);
|
|
68
|
+
i0.ɵɵelement(2, "prism-panel-host");
|
|
69
|
+
i0.ɵɵelementEnd();
|
|
70
|
+
} }
|
|
71
|
+
export class PrismShellComponent {
|
|
72
|
+
config = inject(PRISM_CONFIG);
|
|
73
|
+
navigationService = inject(PrismNavigationService);
|
|
74
|
+
themeService = inject(PrismThemeService);
|
|
75
|
+
layout = inject(PrismLayoutService);
|
|
76
|
+
panelService = inject(PrismPanelService);
|
|
77
|
+
pluginService = inject(PrismPluginService);
|
|
78
|
+
urlStateService = inject(PrismUrlStateService);
|
|
79
|
+
viewPanels = computed(() => [
|
|
80
|
+
...BUILTIN_PANELS.filter((p) => p.placement === 'view'),
|
|
81
|
+
...this.pluginService.viewPanels(),
|
|
82
|
+
], ...(ngDevMode ? [{ debugName: "viewPanels" }] : []));
|
|
83
|
+
shellStyle = computed(() => {
|
|
84
|
+
const base = this.themeService.isDark() ? PRISM_DARK_THEME : PRISM_LIGHT_THEME;
|
|
85
|
+
const merged = { ...base, ...(this.config.theme ?? {}) };
|
|
86
|
+
const tokens = Object.entries(merged).map(([k, v]) => `${k}: ${v}`).join('; ');
|
|
87
|
+
const sw = this.layout.sidebarVisible() ? this.layout.sidebarWidth() : 0;
|
|
88
|
+
const ph = this.layout.addonsOrientation() === 'bottom' ? this.layout.panelHeight() : 0;
|
|
89
|
+
const pw = this.layout.addonsOrientation() === 'right' ? this.layout.panelWidth() : 0;
|
|
90
|
+
return `${tokens}; --sw: ${sw}px; --ph: ${ph}px; --pw: ${pw}px;`;
|
|
91
|
+
}, ...(ngDevMode ? [{ debugName: "shellStyle" }] : []));
|
|
92
|
+
constructor() {
|
|
93
|
+
this.navigationService.selectFirst();
|
|
94
|
+
this.urlStateService.init();
|
|
95
|
+
let lastItemKey = null;
|
|
96
|
+
effect(() => {
|
|
97
|
+
const item = this.navigationService.activeItem();
|
|
98
|
+
const key = item
|
|
99
|
+
? (item.kind === 'component' ? item.data.meta.className : item.data.title)
|
|
100
|
+
: null;
|
|
101
|
+
if (lastItemKey !== null && lastItemKey !== key) {
|
|
102
|
+
untracked(() => this.panelService.activeViewId.set('renderer'));
|
|
103
|
+
}
|
|
104
|
+
lastItemKey = key;
|
|
105
|
+
});
|
|
106
|
+
effect(() => {
|
|
107
|
+
const item = this.navigationService.activeItem();
|
|
108
|
+
const activeComp = this.navigationService.activeComponent();
|
|
109
|
+
const activePage = this.navigationService.activePage();
|
|
110
|
+
if (item !== null && activeComp === null && activePage === null) {
|
|
111
|
+
untracked(() => this.navigationService.selectFirst());
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
onKeyDown(e) {
|
|
116
|
+
if (!e.altKey)
|
|
117
|
+
return;
|
|
118
|
+
switch (e.key.toLowerCase()) {
|
|
119
|
+
case 's':
|
|
120
|
+
e.preventDefault();
|
|
121
|
+
this.layout.toggleSidebar();
|
|
122
|
+
break;
|
|
123
|
+
case 't':
|
|
124
|
+
e.preventDefault();
|
|
125
|
+
this.layout.toggleToolbar();
|
|
126
|
+
break;
|
|
127
|
+
case 'a':
|
|
128
|
+
e.preventDefault();
|
|
129
|
+
this.layout.toggleAddons();
|
|
130
|
+
break;
|
|
131
|
+
case 'd':
|
|
132
|
+
e.preventDefault();
|
|
133
|
+
this.layout.toggleOrientation();
|
|
134
|
+
break;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
startSidebarResize(e) {
|
|
138
|
+
e.preventDefault();
|
|
139
|
+
const startX = e.clientX;
|
|
140
|
+
const startW = this.layout.sidebarWidth();
|
|
141
|
+
const onMove = (ev) => this.layout.setSidebarWidth(startW + ev.clientX - startX);
|
|
142
|
+
const onUp = () => {
|
|
143
|
+
document.removeEventListener('mousemove', onMove);
|
|
144
|
+
document.removeEventListener('mouseup', onUp);
|
|
145
|
+
};
|
|
146
|
+
document.addEventListener('mousemove', onMove);
|
|
147
|
+
document.addEventListener('mouseup', onUp);
|
|
148
|
+
}
|
|
149
|
+
startPanelResize(e) {
|
|
150
|
+
e.preventDefault();
|
|
151
|
+
const isRight = this.layout.addonsOrientation() === 'right';
|
|
152
|
+
if (isRight) {
|
|
153
|
+
const startX = e.clientX;
|
|
154
|
+
const startW = this.layout.panelWidth();
|
|
155
|
+
const onMove = (ev) => this.layout.setPanelWidth(startW - (ev.clientX - startX));
|
|
156
|
+
const onUp = () => {
|
|
157
|
+
document.removeEventListener('mousemove', onMove);
|
|
158
|
+
document.removeEventListener('mouseup', onUp);
|
|
159
|
+
};
|
|
160
|
+
document.addEventListener('mousemove', onMove);
|
|
161
|
+
document.addEventListener('mouseup', onUp);
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
const startY = e.clientY;
|
|
165
|
+
const startH = this.layout.panelHeight();
|
|
166
|
+
const onMove = (ev) => this.layout.setPanelHeight(startH - (ev.clientY - startY));
|
|
167
|
+
const onUp = () => {
|
|
168
|
+
document.removeEventListener('mousemove', onMove);
|
|
169
|
+
document.removeEventListener('mouseup', onUp);
|
|
170
|
+
};
|
|
171
|
+
document.addEventListener('mousemove', onMove);
|
|
172
|
+
document.addEventListener('mouseup', onUp);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
static ɵfac = function PrismShellComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || PrismShellComponent)(); };
|
|
176
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PrismShellComponent, selectors: [["prism-shell"]], hostBindings: function PrismShellComponent_HostBindings(rf, ctx) { if (rf & 1) {
|
|
177
|
+
i0.ɵɵlistener("keydown", function PrismShellComponent_keydown_HostBindingHandler($event) { return ctx.onKeyDown($event); }, i0.ɵɵresolveDocument);
|
|
178
|
+
} }, decls: 10, vars: 8, consts: [[1, "prism-shell"], [1, "prism-shell__header"], [1, "prism-shell__sidebar"], [1, "prism-shell__sidebar-handle", 3, "mousedown"], [1, "prism-shell__main"], [1, "prism-shell__canvas"], [1, "prism-shell__empty"], [1, "prism-shell__view-bar"], [1, "prism-shell__toolbar"], [1, "prism-shell__empty-inner"], ["viewBox", "0 0 24 24", "fill", "none", "xmlns", "http://www.w3.org/2000/svg", 1, "prism-shell__empty-icon"], ["d", "M12 2L4 14h16L12 2z", "stroke", "currentColor", "stroke-width", "1.5", "stroke-linejoin", "round"], ["d", "M4 14l4 8h8l4-8", "stroke", "currentColor", "stroke-width", "1.5", "stroke-linejoin", "round"], [1, "prism-shell__empty-text"], [1, "prism-shell__empty-hint"], [1, "prism-shell__panel-handle", 3, "mousedown"], [1, "prism-shell__panel"]], template: function PrismShellComponent_Template(rf, ctx) { if (rf & 1) {
|
|
179
|
+
i0.ɵɵelementStart(0, "div", 0);
|
|
180
|
+
i0.ɵɵelement(1, "prism-header", 1);
|
|
181
|
+
i0.ɵɵelementStart(2, "aside", 2);
|
|
182
|
+
i0.ɵɵelement(3, "prism-sidebar");
|
|
183
|
+
i0.ɵɵelementEnd();
|
|
184
|
+
i0.ɵɵelementStart(4, "div", 3);
|
|
185
|
+
i0.ɵɵlistener("mousedown", function PrismShellComponent_Template_div_mousedown_4_listener($event) { return ctx.startSidebarResize($event); });
|
|
186
|
+
i0.ɵɵelementEnd();
|
|
187
|
+
i0.ɵɵelementStart(5, "main", 4);
|
|
188
|
+
i0.ɵɵconditionalCreate(6, PrismShellComponent_Conditional_6_Template, 3, 2)(7, PrismShellComponent_Conditional_7_Template, 1, 0, "prism-page-renderer", 5)(8, PrismShellComponent_Conditional_8_Template, 9, 0, "div", 6);
|
|
189
|
+
i0.ɵɵelementEnd();
|
|
190
|
+
i0.ɵɵconditionalCreate(9, PrismShellComponent_Conditional_9_Template, 3, 0);
|
|
191
|
+
i0.ɵɵelementEnd();
|
|
192
|
+
} if (rf & 2) {
|
|
193
|
+
i0.ɵɵstyleMap(ctx.shellStyle());
|
|
194
|
+
i0.ɵɵattribute("data-sidebar", ctx.layout.sidebarVisible() ? "visible" : "hidden")("data-addons", ctx.layout.addonsVisible() && ctx.panelService.activeViewId() === "renderer" ? "visible" : "hidden")("data-orientation", ctx.layout.addonsOrientation())("data-toolbar", ctx.layout.toolbarVisible() ? "visible" : "hidden");
|
|
195
|
+
i0.ɵɵadvance(6);
|
|
196
|
+
i0.ɵɵconditional(ctx.navigationService.activeComponent() ? 6 : ctx.navigationService.activePage() ? 7 : 8);
|
|
197
|
+
i0.ɵɵadvance(3);
|
|
198
|
+
i0.ɵɵconditional(ctx.layout.addonsVisible() && ctx.panelService.activeViewId() === "renderer" ? 9 : -1);
|
|
199
|
+
} }, dependencies: [PrismHeaderComponent,
|
|
200
|
+
PrismSidebarComponent,
|
|
201
|
+
PrismComponentHeaderComponent,
|
|
202
|
+
PrismRendererComponent,
|
|
203
|
+
PrismPanelHostComponent,
|
|
204
|
+
PrismPageRendererComponent,
|
|
205
|
+
PrismViewTabBarComponent,
|
|
206
|
+
PrismViewPanelHostComponent], styles: ["[_nghost-%COMP%] { display: block; height: 100%; }\n\n .prism-shell[_ngcontent-%COMP%] {\n display: grid;\n height: 100%;\n font-family: var(--prism-font-sans);\n color: var(--prism-text);\n background: var(--prism-bg);\n overflow: hidden;\n\n grid-template-columns: var(--sw) 4px 1fr;\n grid-template-rows: var(--prism-header-height) 1fr 4px var(--ph);\n grid-template-areas:\n \"header header header\"\n \"sidebar shdrag main\"\n \"sidebar shdrag phdrag\"\n \"sidebar shdrag panel\";\n }\n\n .prism-shell[data-sidebar=\"hidden\"][_ngcontent-%COMP%] {\n grid-template-columns: 0 0 1fr;\n }\n\n .prism-shell[data-addons=\"hidden\"][_ngcontent-%COMP%] {\n grid-template-rows: var(--prism-header-height) 1fr;\n grid-template-areas:\n \"header header header\"\n \"sidebar shdrag main\";\n }\n\n .prism-shell[data-orientation=\"right\"][data-addons=\"visible\"][_ngcontent-%COMP%] {\n grid-template-columns: var(--sw) 4px 1fr 4px var(--pw);\n grid-template-rows: var(--prism-header-height) 1fr;\n grid-template-areas:\n \"header header header header header\"\n \"sidebar shdrag main phdrag panel\";\n }\n\n .prism-shell__header[_ngcontent-%COMP%] { grid-area: header; }\n .prism-shell__sidebar[_ngcontent-%COMP%] { grid-area: sidebar; overflow: hidden; min-width: 0; background: var(--prism-bg); }\n .prism-shell__main[_ngcontent-%COMP%] { grid-area: main; display: flex; flex-direction: column; overflow: hidden; min-height: 0; }\n .prism-shell__panel[_ngcontent-%COMP%] { grid-area: panel; overflow: hidden; min-height: 0; min-width: 0; }\n\n .prism-shell__sidebar-handle[_ngcontent-%COMP%] {\n grid-area: shdrag;\n cursor: col-resize;\n background: transparent;\n transition: background 0.15s;\n z-index: 10;\n }\n .prism-shell__sidebar-handle[_ngcontent-%COMP%]:hover { background: var(--prism-border); }\n\n .prism-shell__panel-handle[_ngcontent-%COMP%] {\n grid-area: phdrag;\n background: transparent;\n transition: background 0.15s;\n z-index: 10;\n cursor: row-resize;\n }\n .prism-shell__panel-handle[_ngcontent-%COMP%]:hover { background: var(--prism-border); }\n\n .prism-shell[data-orientation=\"right\"][_ngcontent-%COMP%] .prism-shell__panel-handle[_ngcontent-%COMP%] {\n cursor: col-resize;\n }\n\n .prism-shell__view-bar[_ngcontent-%COMP%] { flex-shrink: 0; }\n .prism-shell__toolbar[_ngcontent-%COMP%] { flex-shrink: 0; }\n .prism-shell__canvas[_ngcontent-%COMP%] { flex: 1; overflow: auto; min-height: 0; }\n\n .prism-shell__empty[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n .prism-shell__empty-inner[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n text-align: center;\n }\n .prism-shell__empty-icon[_ngcontent-%COMP%] {\n width: 48px;\n height: 48px;\n color: var(--prism-text-ghost);\n margin-bottom: 8px;\n }\n .prism-shell__empty-text[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n font-weight: 500;\n color: var(--prism-text-muted);\n }\n .prism-shell__empty-hint[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 13px;\n color: var(--prism-text-ghost);\n }"] });
|
|
207
|
+
}
|
|
208
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PrismShellComponent, [{
|
|
209
|
+
type: Component,
|
|
210
|
+
args: [{ selector: 'prism-shell', standalone: true, imports: [
|
|
211
|
+
PrismHeaderComponent,
|
|
212
|
+
PrismSidebarComponent,
|
|
213
|
+
PrismComponentHeaderComponent,
|
|
214
|
+
PrismRendererComponent,
|
|
215
|
+
PrismPanelHostComponent,
|
|
216
|
+
PrismPageRendererComponent,
|
|
217
|
+
PrismViewTabBarComponent,
|
|
218
|
+
PrismViewPanelHostComponent,
|
|
219
|
+
], template: `
|
|
220
|
+
<div
|
|
221
|
+
class="prism-shell"
|
|
222
|
+
[style]="shellStyle()"
|
|
223
|
+
[attr.data-sidebar]="layout.sidebarVisible() ? 'visible' : 'hidden'"
|
|
224
|
+
[attr.data-addons]="layout.addonsVisible() && panelService.activeViewId() === 'renderer' ? 'visible' : 'hidden'"
|
|
225
|
+
[attr.data-orientation]="layout.addonsOrientation()"
|
|
226
|
+
[attr.data-toolbar]="layout.toolbarVisible() ? 'visible' : 'hidden'"
|
|
227
|
+
>
|
|
228
|
+
<prism-header class="prism-shell__header" />
|
|
229
|
+
|
|
230
|
+
<aside class="prism-shell__sidebar">
|
|
231
|
+
<prism-sidebar />
|
|
232
|
+
</aside>
|
|
233
|
+
<div
|
|
234
|
+
class="prism-shell__sidebar-handle"
|
|
235
|
+
(mousedown)="startSidebarResize($event)"
|
|
236
|
+
></div>
|
|
237
|
+
|
|
238
|
+
<main class="prism-shell__main">
|
|
239
|
+
@if (navigationService.activeComponent()) {
|
|
240
|
+
@if (viewPanels().length > 0) {
|
|
241
|
+
<prism-view-tab-bar class="prism-shell__view-bar" />
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
@if (panelService.activeViewId() === 'renderer') {
|
|
245
|
+
@if (layout.toolbarVisible()) {
|
|
246
|
+
<prism-component-header class="prism-shell__toolbar" />
|
|
247
|
+
}
|
|
248
|
+
<prism-renderer class="prism-shell__canvas" />
|
|
249
|
+
} @else {
|
|
250
|
+
<prism-view-panel-host class="prism-shell__canvas" />
|
|
251
|
+
}
|
|
252
|
+
} @else if (navigationService.activePage()) {
|
|
253
|
+
<prism-page-renderer class="prism-shell__canvas" />
|
|
254
|
+
} @else {
|
|
255
|
+
<div class="prism-shell__empty">
|
|
256
|
+
<div class="prism-shell__empty-inner">
|
|
257
|
+
<svg class="prism-shell__empty-icon" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
258
|
+
<path d="M12 2L4 14h16L12 2z" stroke="currentColor" stroke-width="1.5" stroke-linejoin="round"/>
|
|
259
|
+
<path d="M4 14l4 8h8l4-8" stroke="currentColor" stroke-width="1.5" stroke-linejoin="round"/>
|
|
260
|
+
</svg>
|
|
261
|
+
<p class="prism-shell__empty-text">Select a component</p>
|
|
262
|
+
<p class="prism-shell__empty-hint">from the sidebar to preview it here</p>
|
|
263
|
+
</div>
|
|
264
|
+
</div>
|
|
265
|
+
}
|
|
266
|
+
</main>
|
|
267
|
+
|
|
268
|
+
@if (layout.addonsVisible() && panelService.activeViewId() === 'renderer') {
|
|
269
|
+
<div
|
|
270
|
+
class="prism-shell__panel-handle"
|
|
271
|
+
(mousedown)="startPanelResize($event)"
|
|
272
|
+
></div>
|
|
273
|
+
<div class="prism-shell__panel">
|
|
274
|
+
<prism-panel-host />
|
|
275
|
+
</div>
|
|
276
|
+
}
|
|
277
|
+
</div>
|
|
278
|
+
`, styles: ["\n :host { display: block; height: 100%; }\n\n .prism-shell {\n display: grid;\n height: 100%;\n font-family: var(--prism-font-sans);\n color: var(--prism-text);\n background: var(--prism-bg);\n overflow: hidden;\n\n grid-template-columns: var(--sw) 4px 1fr;\n grid-template-rows: var(--prism-header-height) 1fr 4px var(--ph);\n grid-template-areas:\n \"header header header\"\n \"sidebar shdrag main\"\n \"sidebar shdrag phdrag\"\n \"sidebar shdrag panel\";\n }\n\n .prism-shell[data-sidebar=\"hidden\"] {\n grid-template-columns: 0 0 1fr;\n }\n\n .prism-shell[data-addons=\"hidden\"] {\n grid-template-rows: var(--prism-header-height) 1fr;\n grid-template-areas:\n \"header header header\"\n \"sidebar shdrag main\";\n }\n\n .prism-shell[data-orientation=\"right\"][data-addons=\"visible\"] {\n grid-template-columns: var(--sw) 4px 1fr 4px var(--pw);\n grid-template-rows: var(--prism-header-height) 1fr;\n grid-template-areas:\n \"header header header header header\"\n \"sidebar shdrag main phdrag panel\";\n }\n\n .prism-shell__header { grid-area: header; }\n .prism-shell__sidebar { grid-area: sidebar; overflow: hidden; min-width: 0; background: var(--prism-bg); }\n .prism-shell__main { grid-area: main; display: flex; flex-direction: column; overflow: hidden; min-height: 0; }\n .prism-shell__panel { grid-area: panel; overflow: hidden; min-height: 0; min-width: 0; }\n\n .prism-shell__sidebar-handle {\n grid-area: shdrag;\n cursor: col-resize;\n background: transparent;\n transition: background 0.15s;\n z-index: 10;\n }\n .prism-shell__sidebar-handle:hover { background: var(--prism-border); }\n\n .prism-shell__panel-handle {\n grid-area: phdrag;\n background: transparent;\n transition: background 0.15s;\n z-index: 10;\n cursor: row-resize;\n }\n .prism-shell__panel-handle:hover { background: var(--prism-border); }\n\n .prism-shell[data-orientation=\"right\"] .prism-shell__panel-handle {\n cursor: col-resize;\n }\n\n .prism-shell__view-bar { flex-shrink: 0; }\n .prism-shell__toolbar { flex-shrink: 0; }\n .prism-shell__canvas { flex: 1; overflow: auto; min-height: 0; }\n\n .prism-shell__empty {\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n .prism-shell__empty-inner {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n text-align: center;\n }\n .prism-shell__empty-icon {\n width: 48px;\n height: 48px;\n color: var(--prism-text-ghost);\n margin-bottom: 8px;\n }\n .prism-shell__empty-text {\n margin: 0;\n font-size: 14px;\n font-weight: 500;\n color: var(--prism-text-muted);\n }\n .prism-shell__empty-hint {\n margin: 0;\n font-size: 13px;\n color: var(--prism-text-ghost);\n }\n "] }]
|
|
279
|
+
}], () => [], { onKeyDown: [{
|
|
280
|
+
type: HostListener,
|
|
281
|
+
args: ['document:keydown', ['$event']]
|
|
282
|
+
}] }); })();
|
|
283
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismShellComponent, { className: "PrismShellComponent", filePath: "app/shell/prism-shell.component.ts", lineNumber: 196 }); })();
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { NavigationItem } from '../services/navigation-item.types.js';
|
|
2
|
+
import { PrismNavigationService } from '../services/prism-navigation.service.js';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class PrismSidebarComponent {
|
|
5
|
+
protected readonly navigationService: PrismNavigationService;
|
|
6
|
+
protected readonly entries: import("@angular/core").Signal<[string, NavigationItem[]][]>;
|
|
7
|
+
protected itemKey(item: NavigationItem): string;
|
|
8
|
+
protected itemLabel(item: NavigationItem): string;
|
|
9
|
+
protected isActive(item: NavigationItem): boolean;
|
|
10
|
+
protected onSelect(item: NavigationItem): void;
|
|
11
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<PrismSidebarComponent, never>;
|
|
12
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<PrismSidebarComponent, "prism-sidebar", never, {}, {}, never, never, true, never>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=prism-sidebar.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prism-sidebar.component.d.ts","sourceRoot":"","sources":["../../../src/app/sidebar/prism-sidebar.component.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;;AAEjF,qBA0Fa,qBAAqB;IAChC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,yBAAkC;IAEtE,SAAS,CAAC,QAAQ,CAAC,OAAO,+DAC8B;IAExD,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM;IAM/C,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM;IAMjD,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO;IASjD,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;yCA3BnC,qBAAqB;2CAArB,qBAAqB;CAkCjC"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { Component, computed, inject } from '@angular/core';
|
|
2
|
+
import { PrismNavigationService } from '../services/prism-navigation.service.js';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
const _forTrack0 = ($index, $item) => $item[0];
|
|
5
|
+
function _forTrack1($index, $item) { return this.itemKey($item); }
|
|
6
|
+
function PrismSidebarComponent_For_2_For_4_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
7
|
+
i0.ɵɵdomElementStart(0, "span", 5);
|
|
8
|
+
i0.ɵɵtext(1, "\u25C8");
|
|
9
|
+
i0.ɵɵdomElementEnd();
|
|
10
|
+
} }
|
|
11
|
+
function PrismSidebarComponent_For_2_For_4_Template(rf, ctx) { if (rf & 1) {
|
|
12
|
+
const _r1 = i0.ɵɵgetCurrentView();
|
|
13
|
+
i0.ɵɵdomElementStart(0, "button", 4);
|
|
14
|
+
i0.ɵɵdomListener("click", function PrismSidebarComponent_For_2_For_4_Template_button_click_0_listener() { const item_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onSelect(item_r2)); });
|
|
15
|
+
i0.ɵɵconditionalCreate(1, PrismSidebarComponent_For_2_For_4_Conditional_1_Template, 2, 0, "span", 5);
|
|
16
|
+
i0.ɵɵtext(2);
|
|
17
|
+
i0.ɵɵdomElementEnd();
|
|
18
|
+
} if (rf & 2) {
|
|
19
|
+
const item_r2 = ctx.$implicit;
|
|
20
|
+
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
21
|
+
i0.ɵɵclassProp("prism-sidebar__item--active", ctx_r2.isActive(item_r2))("prism-sidebar__item--page", item_r2.kind === "page");
|
|
22
|
+
i0.ɵɵadvance();
|
|
23
|
+
i0.ɵɵconditional(item_r2.kind === "page" ? 1 : -1);
|
|
24
|
+
i0.ɵɵadvance();
|
|
25
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r2.itemLabel(item_r2), " ");
|
|
26
|
+
} }
|
|
27
|
+
function PrismSidebarComponent_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
28
|
+
i0.ɵɵdomElementStart(0, "div", 1)(1, "h3", 2);
|
|
29
|
+
i0.ɵɵtext(2);
|
|
30
|
+
i0.ɵɵdomElementEnd();
|
|
31
|
+
i0.ɵɵrepeaterCreate(3, PrismSidebarComponent_For_2_For_4_Template, 3, 6, "button", 3, _forTrack1, true);
|
|
32
|
+
i0.ɵɵdomElementEnd();
|
|
33
|
+
} if (rf & 2) {
|
|
34
|
+
const entry_r4 = ctx.$implicit;
|
|
35
|
+
i0.ɵɵadvance(2);
|
|
36
|
+
i0.ɵɵtextInterpolate(entry_r4[0]);
|
|
37
|
+
i0.ɵɵadvance();
|
|
38
|
+
i0.ɵɵrepeater(entry_r4[1]);
|
|
39
|
+
} }
|
|
40
|
+
export class PrismSidebarComponent {
|
|
41
|
+
navigationService = inject(PrismNavigationService);
|
|
42
|
+
entries = computed(() => [...this.navigationService.categoryTree().entries()], ...(ngDevMode ? [{ debugName: "entries" }] : []));
|
|
43
|
+
itemKey(item) {
|
|
44
|
+
return item.kind === 'component'
|
|
45
|
+
? item.data.meta.className
|
|
46
|
+
: `page:${item.data.title}`;
|
|
47
|
+
}
|
|
48
|
+
itemLabel(item) {
|
|
49
|
+
return item.kind === 'component'
|
|
50
|
+
? item.data.meta.showcaseConfig.title
|
|
51
|
+
: item.data.title;
|
|
52
|
+
}
|
|
53
|
+
isActive(item) {
|
|
54
|
+
const active = this.navigationService.activeItem();
|
|
55
|
+
if (!active || active.kind !== item.kind)
|
|
56
|
+
return false;
|
|
57
|
+
if (item.kind === 'component') {
|
|
58
|
+
return item.data.meta.className === active.data.meta.className;
|
|
59
|
+
}
|
|
60
|
+
return item.data.title === active.data.title;
|
|
61
|
+
}
|
|
62
|
+
onSelect(item) {
|
|
63
|
+
if (item.kind === 'component') {
|
|
64
|
+
this.navigationService.select(item.data);
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
this.navigationService.selectPage(item.data);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
static ɵfac = function PrismSidebarComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || PrismSidebarComponent)(); };
|
|
71
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PrismSidebarComponent, selectors: [["prism-sidebar"]], decls: 3, vars: 0, consts: [[1, "prism-sidebar"], [1, "prism-sidebar__category"], [1, "prism-sidebar__category-title"], [1, "prism-sidebar__item", 3, "prism-sidebar__item--active", "prism-sidebar__item--page"], [1, "prism-sidebar__item", 3, "click"], [1, "prism-sidebar__page-icon"]], template: function PrismSidebarComponent_Template(rf, ctx) { if (rf & 1) {
|
|
72
|
+
i0.ɵɵdomElementStart(0, "nav", 0);
|
|
73
|
+
i0.ɵɵrepeaterCreate(1, PrismSidebarComponent_For_2_Template, 5, 1, "div", 1, _forTrack0);
|
|
74
|
+
i0.ɵɵdomElementEnd();
|
|
75
|
+
} if (rf & 2) {
|
|
76
|
+
i0.ɵɵadvance();
|
|
77
|
+
i0.ɵɵrepeater(ctx.entries());
|
|
78
|
+
} }, styles: [".prism-sidebar[_ngcontent-%COMP%] {\n background: var(--prism-bg);\n border-right: 1px solid var(--prism-border);\n overflow-y: auto;\n overflow-x: hidden;\n padding: 8px 0;\n height: 100%;\n }\n .prism-sidebar[_ngcontent-%COMP%]::-webkit-scrollbar { width: 4px; }\n .prism-sidebar[_ngcontent-%COMP%]::-webkit-scrollbar-track { background: transparent; }\n .prism-sidebar[_ngcontent-%COMP%]::-webkit-scrollbar-thumb { background: var(--prism-border-strong); border-radius: 2px; }\n\n .prism-sidebar__category[_ngcontent-%COMP%] { margin-bottom: 4px; }\n\n .prism-sidebar__category-title[_ngcontent-%COMP%] {\n margin: 0;\n padding: 10px 16px 4px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.08em;\n color: var(--prism-text-ghost);\n font-family: var(--prism-font-sans);\n }\n\n .prism-sidebar__item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n width: 100%;\n padding: 6px 14px 6px 11px;\n font-size: 13px;\n font-family: var(--prism-font-sans);\n border: none;\n background: none;\n color: var(--prism-text-muted);\n cursor: pointer;\n border-left: 3px solid transparent;\n text-align: left;\n transition: background 0.1s, color 0.1s, border-color 0.1s;\n }\n\n .prism-sidebar__item[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--prism-primary) 6%, transparent);\n color: var(--prism-text-2);\n }\n\n .prism-sidebar__item--active[_ngcontent-%COMP%] {\n border-left-color: var(--prism-primary);\n background: color-mix(in srgb, var(--prism-primary) 10%, transparent);\n color: var(--prism-text);\n font-weight: 500;\n }\n\n .prism-sidebar__item--active[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--prism-primary) 12%, transparent);\n }\n\n .prism-sidebar__page-icon[_ngcontent-%COMP%] {\n font-size: 10px;\n opacity: 0.6;\n }"] });
|
|
79
|
+
}
|
|
80
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PrismSidebarComponent, [{
|
|
81
|
+
type: Component,
|
|
82
|
+
args: [{ selector: 'prism-sidebar', standalone: true, template: `
|
|
83
|
+
<nav class="prism-sidebar">
|
|
84
|
+
@for (entry of entries(); track entry[0]) {
|
|
85
|
+
<div class="prism-sidebar__category">
|
|
86
|
+
<h3 class="prism-sidebar__category-title">{{ entry[0] }}</h3>
|
|
87
|
+
@for (item of entry[1]; track itemKey(item)) {
|
|
88
|
+
<button
|
|
89
|
+
class="prism-sidebar__item"
|
|
90
|
+
[class.prism-sidebar__item--active]="isActive(item)"
|
|
91
|
+
[class.prism-sidebar__item--page]="item.kind === 'page'"
|
|
92
|
+
(click)="onSelect(item)"
|
|
93
|
+
>
|
|
94
|
+
@if (item.kind === 'page') {
|
|
95
|
+
<span class="prism-sidebar__page-icon">◈</span>
|
|
96
|
+
}
|
|
97
|
+
{{ itemLabel(item) }}
|
|
98
|
+
</button>
|
|
99
|
+
}
|
|
100
|
+
</div>
|
|
101
|
+
}
|
|
102
|
+
</nav>
|
|
103
|
+
`, styles: ["\n .prism-sidebar {\n background: var(--prism-bg);\n border-right: 1px solid var(--prism-border);\n overflow-y: auto;\n overflow-x: hidden;\n padding: 8px 0;\n height: 100%;\n }\n .prism-sidebar::-webkit-scrollbar { width: 4px; }\n .prism-sidebar::-webkit-scrollbar-track { background: transparent; }\n .prism-sidebar::-webkit-scrollbar-thumb { background: var(--prism-border-strong); border-radius: 2px; }\n\n .prism-sidebar__category { margin-bottom: 4px; }\n\n .prism-sidebar__category-title {\n margin: 0;\n padding: 10px 16px 4px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.08em;\n color: var(--prism-text-ghost);\n font-family: var(--prism-font-sans);\n }\n\n .prism-sidebar__item {\n display: flex;\n align-items: center;\n gap: 6px;\n width: 100%;\n padding: 6px 14px 6px 11px;\n font-size: 13px;\n font-family: var(--prism-font-sans);\n border: none;\n background: none;\n color: var(--prism-text-muted);\n cursor: pointer;\n border-left: 3px solid transparent;\n text-align: left;\n transition: background 0.1s, color 0.1s, border-color 0.1s;\n }\n\n .prism-sidebar__item:hover {\n background: color-mix(in srgb, var(--prism-primary) 6%, transparent);\n color: var(--prism-text-2);\n }\n\n .prism-sidebar__item--active {\n border-left-color: var(--prism-primary);\n background: color-mix(in srgb, var(--prism-primary) 10%, transparent);\n color: var(--prism-text);\n font-weight: 500;\n }\n\n .prism-sidebar__item--active:hover {\n background: color-mix(in srgb, var(--prism-primary) 12%, transparent);\n }\n\n .prism-sidebar__page-icon {\n font-size: 10px;\n opacity: 0.6;\n }\n "] }]
|
|
104
|
+
}], null, null); })();
|
|
105
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismSidebarComponent, { className: "PrismSidebarComponent", filePath: "app/sidebar/prism-sidebar.component.ts", lineNumber: 95 }); })();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prism-default-theme.d.ts","sourceRoot":"","sources":["../../../src/app/theme/prism-default-theme.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAiCnD,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAiCpD,CAAC;AAEF,eAAO,MAAM,mBAAmB,wBAAmB,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
export const PRISM_DARK_THEME = {
|
|
2
|
+
'--prism-void': '#07050f',
|
|
3
|
+
'--prism-bg': '#0d0b1c',
|
|
4
|
+
'--prism-bg-surface': '#131022',
|
|
5
|
+
'--prism-bg-elevated': '#1a1535',
|
|
6
|
+
'--prism-text': '#ede9f8',
|
|
7
|
+
'--prism-text-2': '#b0a6c8',
|
|
8
|
+
'--prism-text-muted': '#8476a2',
|
|
9
|
+
'--prism-text-ghost': '#6a5d87',
|
|
10
|
+
'--prism-primary': '#a78bfa',
|
|
11
|
+
'--prism-primary-from': '#7c3aed',
|
|
12
|
+
'--prism-primary-to': '#3b82f6',
|
|
13
|
+
'--prism-accent': '#ec4899',
|
|
14
|
+
'--prism-border': 'rgba(255,255,255,0.08)',
|
|
15
|
+
'--prism-border-strong': 'rgba(255,255,255,0.16)',
|
|
16
|
+
'--prism-glow': 'rgba(139,92,246,0.18)',
|
|
17
|
+
'--prism-glow-strong': 'rgba(139,92,246,0.35)',
|
|
18
|
+
'--prism-input-bg': 'rgba(255,255,255,0.05)',
|
|
19
|
+
'--prism-sidebar-bg': '#0d0b1c',
|
|
20
|
+
'--prism-header-height': '52px',
|
|
21
|
+
'--prism-toolbar-height': '40px',
|
|
22
|
+
'--prism-font-sans': "'Inter', system-ui, -apple-system, sans-serif",
|
|
23
|
+
'--prism-font-mono': "'Cascadia Code', 'Fira Code', ui-monospace, monospace",
|
|
24
|
+
'--prism-radius-xs': '3px',
|
|
25
|
+
'--prism-radius-sm': '5px',
|
|
26
|
+
'--prism-radius': '8px',
|
|
27
|
+
'--prism-radius-lg': '12px',
|
|
28
|
+
};
|
|
29
|
+
export const PRISM_LIGHT_THEME = {
|
|
30
|
+
'--prism-void': '#f0ecff',
|
|
31
|
+
'--prism-bg': '#faf8ff',
|
|
32
|
+
'--prism-bg-surface': '#f3efff',
|
|
33
|
+
'--prism-bg-elevated': '#ffffff',
|
|
34
|
+
'--prism-text': '#1a0e2e',
|
|
35
|
+
'--prism-text-2': '#4a3d65',
|
|
36
|
+
'--prism-text-muted': '#6b5e80',
|
|
37
|
+
'--prism-text-ghost': '#b0a6c8',
|
|
38
|
+
'--prism-primary': '#6d28d9',
|
|
39
|
+
'--prism-primary-from': '#7c3aed',
|
|
40
|
+
'--prism-primary-to': '#2563eb',
|
|
41
|
+
'--prism-accent': '#db2777',
|
|
42
|
+
'--prism-border': 'rgba(109,40,217,0.12)',
|
|
43
|
+
'--prism-border-strong': 'rgba(109,40,217,0.24)',
|
|
44
|
+
'--prism-glow': 'rgba(109,40,217,0.10)',
|
|
45
|
+
'--prism-glow-strong': 'rgba(109,40,217,0.20)',
|
|
46
|
+
'--prism-input-bg': 'rgba(109,40,217,0.04)',
|
|
47
|
+
'--prism-sidebar-bg': '#f3efff',
|
|
48
|
+
'--prism-header-height': '52px',
|
|
49
|
+
'--prism-toolbar-height': '40px',
|
|
50
|
+
'--prism-font-sans': "'Inter', system-ui, -apple-system, sans-serif",
|
|
51
|
+
'--prism-font-mono': "'Cascadia Code', 'Fira Code', ui-monospace, monospace",
|
|
52
|
+
'--prism-radius-xs': '3px',
|
|
53
|
+
'--prism-radius-sm': '5px',
|
|
54
|
+
'--prism-radius': '8px',
|
|
55
|
+
'--prism-radius-lg': '12px',
|
|
56
|
+
};
|
|
57
|
+
export const PRISM_DEFAULT_THEME = PRISM_DARK_THEME;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { InjectionToken } from '@angular/core';
|
|
2
|
+
import type { NgPrismConfig, RuntimeManifest } from '../../plugin/plugin.types.js';
|
|
3
|
+
export declare const PRISM_MANIFEST: InjectionToken<RuntimeManifest>;
|
|
4
|
+
export declare const PRISM_CONFIG: InjectionToken<NgPrismConfig>;
|
|
5
|
+
export interface PrismRendererHooks {
|
|
6
|
+
onBeforeCreate?(selector: string): void;
|
|
7
|
+
onAfterCreate?(selector: string): void;
|
|
8
|
+
onAfterDestroy?(selector: string): void;
|
|
9
|
+
}
|
|
10
|
+
export declare const PRISM_RENDERER_HOOKS: InjectionToken<PrismRendererHooks>;
|
|
11
|
+
//# sourceMappingURL=prism-tokens.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prism-tokens.d.ts","sourceRoot":"","sources":["../../../src/app/tokens/prism-tokens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAEnF,eAAO,MAAM,cAAc,iCAAwD,CAAC;AAEpF,eAAO,MAAM,YAAY,+BAGvB,CAAC;AAEH,MAAM,WAAW,kBAAkB;IACjC,cAAc,CAAC,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,aAAa,CAAC,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,cAAc,CAAC,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzC;AAED,eAAO,MAAM,oBAAoB,oCAC+B,CAAC"}
|