@ng-prism/core 21.4.4 → 21.5.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.
Files changed (105) hide show
  1. package/README.md +1 -1
  2. package/dist/app/canvas/prism-canvas-rulers.component.d.ts +16 -0
  3. package/dist/app/canvas/prism-canvas-rulers.component.d.ts.map +1 -0
  4. package/dist/app/canvas/prism-canvas-rulers.component.js +177 -0
  5. package/dist/app/canvas/prism-canvas-toolbar.component.d.ts +14 -0
  6. package/dist/app/canvas/prism-canvas-toolbar.component.d.ts.map +1 -0
  7. package/dist/app/canvas/prism-canvas-toolbar.component.js +144 -0
  8. package/dist/app/canvas/prism-code-drawer.component.d.ts +12 -0
  9. package/dist/app/canvas/prism-code-drawer.component.d.ts.map +1 -0
  10. package/dist/app/canvas/prism-code-drawer.component.js +114 -0
  11. package/dist/app/component-head/prism-component-head.component.d.ts +15 -0
  12. package/dist/app/component-head/prism-component-head.component.d.ts.map +1 -0
  13. package/dist/app/component-head/prism-component-head.component.js +207 -0
  14. package/dist/app/component-head/prism-stat.component.d.ts +10 -0
  15. package/dist/app/component-head/prism-stat.component.d.ts.map +1 -0
  16. package/dist/app/component-head/prism-stat.component.js +52 -0
  17. package/dist/app/controls/boolean-control.component.d.ts.map +1 -1
  18. package/dist/app/controls/boolean-control.component.js +16 -44
  19. package/dist/app/controls/json-control.component.d.ts.map +1 -1
  20. package/dist/app/controls/json-control.component.js +33 -54
  21. package/dist/app/controls/number-control.component.d.ts.map +1 -1
  22. package/dist/app/controls/number-control.component.js +18 -35
  23. package/dist/app/controls/string-control.component.d.ts.map +1 -1
  24. package/dist/app/controls/string-control.component.js +14 -41
  25. package/dist/app/controls/union-control.component.d.ts.map +1 -1
  26. package/dist/app/controls/union-control.component.js +26 -50
  27. package/dist/app/directives/prism-resizer.directive.d.ts +14 -0
  28. package/dist/app/directives/prism-resizer.directive.d.ts.map +1 -0
  29. package/dist/app/directives/prism-resizer.directive.js +71 -0
  30. package/dist/app/header/prism-header.component.d.ts +3 -0
  31. package/dist/app/header/prism-header.component.d.ts.map +1 -1
  32. package/dist/app/header/prism-header.component.js +91 -215
  33. package/dist/app/icons/prism-icon.component.d.ts +10 -0
  34. package/dist/app/icons/prism-icon.component.d.ts.map +1 -0
  35. package/dist/app/icons/prism-icon.component.js +64 -0
  36. package/dist/app/index.d.ts +4 -3
  37. package/dist/app/index.d.ts.map +1 -1
  38. package/dist/app/index.js +4 -3
  39. package/dist/app/layout-menu/prism-layout-menu.component.d.ts.map +1 -1
  40. package/dist/app/layout-menu/prism-layout-menu.component.js +63 -69
  41. package/dist/app/panels/a11y/a11y-core.plugin.d.ts.map +1 -1
  42. package/dist/app/panels/a11y/a11y-core.plugin.js +1 -0
  43. package/dist/app/panels/a11y/a11y-keyboard.component.d.ts.map +1 -1
  44. package/dist/app/panels/a11y/a11y-keyboard.component.js +61 -100
  45. package/dist/app/panels/a11y/a11y-overlay-host.component.d.ts +4 -0
  46. package/dist/app/panels/a11y/a11y-overlay-host.component.d.ts.map +1 -1
  47. package/dist/app/panels/a11y/a11y-overlay-host.component.js +87 -11
  48. package/dist/app/panels/a11y/a11y-panel.component.d.ts +0 -2
  49. package/dist/app/panels/a11y/a11y-panel.component.d.ts.map +1 -1
  50. package/dist/app/panels/a11y/a11y-panel.component.js +70 -85
  51. package/dist/app/panels/a11y/a11y-score.component.d.ts +2 -1
  52. package/dist/app/panels/a11y/a11y-score.component.d.ts.map +1 -1
  53. package/dist/app/panels/a11y/a11y-score.component.js +55 -49
  54. package/dist/app/panels/a11y/a11y-sr.component.d.ts +1 -9
  55. package/dist/app/panels/a11y/a11y-sr.component.d.ts.map +1 -1
  56. package/dist/app/panels/a11y/a11y-sr.component.js +60 -208
  57. package/dist/app/panels/a11y/a11y-tree.component.d.ts +2 -4
  58. package/dist/app/panels/a11y/a11y-tree.component.d.ts.map +1 -1
  59. package/dist/app/panels/a11y/a11y-tree.component.js +92 -137
  60. package/dist/app/panels/a11y/a11y-violations.component.d.ts +2 -6
  61. package/dist/app/panels/a11y/a11y-violations.component.d.ts.map +1 -1
  62. package/dist/app/panels/a11y/a11y-violations.component.js +126 -373
  63. package/dist/app/panels/controls/controls-plugin.d.ts.map +1 -1
  64. package/dist/app/panels/controls/controls-plugin.js +1 -0
  65. package/dist/app/panels/controls/prism-controls-panel.component.d.ts.map +1 -1
  66. package/dist/app/panels/controls/prism-controls-panel.component.js +96 -88
  67. package/dist/app/panels/events/events-plugin.d.ts.map +1 -1
  68. package/dist/app/panels/events/events-plugin.js +1 -0
  69. package/dist/app/panels/events/prism-events-panel.component.d.ts +1 -0
  70. package/dist/app/panels/events/prism-events-panel.component.d.ts.map +1 -1
  71. package/dist/app/panels/events/prism-events-panel.component.js +44 -46
  72. package/dist/app/panels/panel-host/prism-panel-host.component.d.ts +7 -2
  73. package/dist/app/panels/panel-host/prism-panel-host.component.d.ts.map +1 -1
  74. package/dist/app/panels/panel-host/prism-panel-host.component.js +102 -42
  75. package/dist/app/renderer/prism-renderer.component.d.ts +5 -6
  76. package/dist/app/renderer/prism-renderer.component.d.ts.map +1 -1
  77. package/dist/app/renderer/prism-renderer.component.js +84 -150
  78. package/dist/app/services/prism-canvas.service.d.ts +18 -0
  79. package/dist/app/services/prism-canvas.service.d.ts.map +1 -0
  80. package/dist/app/services/prism-canvas.service.js +63 -0
  81. package/dist/app/services/prism-theme.service.d.ts +13 -1
  82. package/dist/app/services/prism-theme.service.d.ts.map +1 -1
  83. package/dist/app/services/prism-theme.service.js +56 -9
  84. package/dist/app/shell/prism-shell.component.d.ts +1 -2
  85. package/dist/app/shell/prism-shell.component.d.ts.map +1 -1
  86. package/dist/app/shell/prism-shell.component.js +189 -178
  87. package/dist/app/sidebar/prism-sidebar.component.d.ts +16 -10
  88. package/dist/app/sidebar/prism-sidebar.component.d.ts.map +1 -1
  89. package/dist/app/sidebar/prism-sidebar.component.js +318 -204
  90. package/dist/app/theme/prism-default-theme.d.ts +1 -0
  91. package/dist/app/theme/prism-default-theme.d.ts.map +1 -1
  92. package/dist/app/theme/prism-default-theme.js +53 -34
  93. package/dist/app/variant-ribbon/prism-variant-ribbon.component.d.ts +13 -0
  94. package/dist/app/variant-ribbon/prism-variant-ribbon.component.d.ts.map +1 -0
  95. package/dist/app/variant-ribbon/prism-variant-ribbon.component.js +134 -0
  96. package/dist/app/view-tab-bar/prism-view-tab-bar.component.d.ts.map +1 -1
  97. package/dist/app/view-tab-bar/prism-view-tab-bar.component.js +15 -11
  98. package/dist/decorator/showcase.decorator.d.ts +1 -3
  99. package/dist/decorator/showcase.decorator.d.ts.map +1 -1
  100. package/dist/decorator/showcase.decorator.js +2 -6
  101. package/dist/plugin/plugin.types.d.ts +1 -0
  102. package/dist/plugin/plugin.types.d.ts.map +1 -1
  103. package/dist/schematics/ng-add/index.d.ts.map +1 -1
  104. package/dist/schematics/ng-add/index.js +2 -1
  105. package/package.json +6 -6
@@ -11,11 +11,10 @@ export declare class PrismShellComponent {
11
11
  private readonly pluginService;
12
12
  private readonly urlStateService;
13
13
  protected readonly viewPanels: import("@angular/core").Signal<import("../../plugin/plugin.types.js").PanelDefinition[]>;
14
+ protected readonly showPanel: import("@angular/core").Signal<boolean>;
14
15
  protected readonly shellStyle: import("@angular/core").Signal<string>;
15
16
  constructor();
16
17
  protected onKeyDown(e: KeyboardEvent): void;
17
- protected startSidebarResize(e: MouseEvent): void;
18
- protected startPanelResize(e: MouseEvent): void;
19
18
  static ɵfac: i0.ɵɵFactoryDeclaration<PrismShellComponent, never>;
20
19
  static ɵcmp: i0.ɵɵComponentDeclaration<PrismShellComponent, "prism-shell", never, {}, {}, never, never, true, never>;
21
20
  }
@@ -1 +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,qBAgNa,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,yCAU1B;;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;yCA5EpC,mBAAmB;2CAAnB,mBAAmB;CAqG/B"}
1
+ {"version":3,"file":"prism-shell.component.d.ts","sourceRoot":"","sources":["../../../src/app/shell/prism-shell.component.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AACjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;;AAiBvE,qBA2Pa,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,SAAS,0CAK1B;IAEF,SAAS,CAAC,QAAQ,CAAC,UAAU,yCAG1B;;IAgCH,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,aAAa,GAAG,IAAI;yCAxDhC,mBAAmB;2CAAnB,mBAAmB;CAyE/B"}
@@ -1,12 +1,12 @@
1
- import { Component, computed, effect, inject, untracked, HostListener } from '@angular/core';
1
+ import { Component, computed, effect, inject, untracked, HostListener, ChangeDetectionStrategy, } from '@angular/core';
2
2
  import { PRISM_CONFIG } from '../tokens/prism-tokens.js';
3
- import { PRISM_DARK_THEME, PRISM_LIGHT_THEME } from '../theme/prism-default-theme.js';
4
3
  import { PrismThemeService } from '../services/prism-theme.service.js';
5
4
  import { PrismLayoutService } from '../services/prism-layout.service.js';
6
5
  import { PrismNavigationService } from '../services/prism-navigation.service.js';
7
6
  import { PrismPanelService } from '../services/prism-panel.service.js';
8
7
  import { PrismPluginService } from '../services/prism-plugin.service.js';
9
- import { PrismComponentHeaderComponent } from '../component-header/prism-component-header.component.js';
8
+ import { PrismComponentHeadComponent } from '../component-head/prism-component-head.component.js';
9
+ import { PrismVariantRibbonComponent } from '../variant-ribbon/prism-variant-ribbon.component.js';
10
10
  import { PrismHeaderComponent } from '../header/prism-header.component.js';
11
11
  import { PrismPanelHostComponent } from '../panels/panel-host/prism-panel-host.component.js';
12
12
  import { PrismRendererComponent } from '../renderer/prism-renderer.component.js';
@@ -16,57 +16,86 @@ import { BUILTIN_PANELS } from '../panels/builtin-panels.js';
16
16
  import { PrismUrlStateService } from '../services/prism-url-state.service.js';
17
17
  import { PrismViewTabBarComponent } from '../view-tab-bar/prism-view-tab-bar.component.js';
18
18
  import { PrismViewPanelHostComponent } from '../view-tab-bar/prism-view-panel-host.component.js';
19
+ import { PrismResizerDirective } from '../directives/prism-resizer.directive.js';
20
+ import { PrismCanvasToolbarComponent } from '../canvas/prism-canvas-toolbar.component.js';
21
+ import { PrismCodeDrawerComponent } from '../canvas/prism-code-drawer.component.js';
19
22
  import * as i0 from "@angular/core";
20
- function PrismShellComponent_Conditional_12_Conditional_0_Template(rf, ctx) { if (rf & 1) {
23
+ function PrismShellComponent_Conditional_3_Template(rf, ctx) { if (rf & 1) {
24
+ const _r1 = i0.ɵɵgetCurrentView();
25
+ i0.ɵɵelementStart(0, "aside", 6);
26
+ i0.ɵɵelement(1, "prism-sidebar");
27
+ i0.ɵɵelementStart(2, "div", 7);
28
+ i0.ɵɵelement(3, "img", 8);
29
+ i0.ɵɵelementStart(4, "a", 9);
30
+ i0.ɵɵtext(5, " Powered by ng-prism ");
31
+ i0.ɵɵelementEnd()()();
32
+ i0.ɵɵelementStart(6, "div", 10);
33
+ i0.ɵɵlistener("valueChange", function PrismShellComponent_Conditional_3_Template_div_valueChange_6_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.layout.setSidebarWidth($event)); });
34
+ i0.ɵɵelementEnd();
35
+ } if (rf & 2) {
36
+ const ctx_r1 = i0.ɵɵnextContext();
37
+ i0.ɵɵadvance(6);
38
+ i0.ɵɵproperty("min", 200)("max", 360)("value", ctx_r1.layout.sidebarWidth());
39
+ } }
40
+ function PrismShellComponent_Conditional_5_Conditional_0_Template(rf, ctx) { if (rf & 1) {
21
41
  i0.ɵɵelement(0, "prism-view-tab-bar", 11);
22
42
  } }
23
- function PrismShellComponent_Conditional_12_Conditional_1_Conditional_0_Template(rf, ctx) { if (rf & 1) {
24
- i0.ɵɵelement(0, "prism-component-header", 12);
43
+ function PrismShellComponent_Conditional_5_Conditional_1_Conditional_0_Template(rf, ctx) { if (rf & 1) {
44
+ i0.ɵɵelement(0, "prism-component-head")(1, "prism-variant-ribbon");
25
45
  } }
26
- function PrismShellComponent_Conditional_12_Conditional_1_Template(rf, ctx) { if (rf & 1) {
27
- i0.ɵɵconditionalCreate(0, PrismShellComponent_Conditional_12_Conditional_1_Conditional_0_Template, 1, 0, "prism-component-header", 12);
28
- i0.ɵɵelement(1, "prism-renderer", 9);
46
+ function PrismShellComponent_Conditional_5_Conditional_1_Template(rf, ctx) { if (rf & 1) {
47
+ i0.ɵɵconditionalCreate(0, PrismShellComponent_Conditional_5_Conditional_1_Conditional_0_Template, 2, 0);
48
+ i0.ɵɵelementStart(1, "div", 12);
49
+ i0.ɵɵelement(2, "prism-canvas-toolbar")(3, "prism-renderer");
50
+ i0.ɵɵelementEnd();
51
+ i0.ɵɵelement(4, "prism-code-drawer", 13);
29
52
  } if (rf & 2) {
30
- const ctx_r0 = i0.ɵɵnextContext(2);
31
- i0.ɵɵconditional(ctx_r0.layout.toolbarVisible() ? 0 : -1);
53
+ const ctx_r1 = i0.ɵɵnextContext(2);
54
+ i0.ɵɵconditional(ctx_r1.layout.toolbarVisible() ? 0 : -1);
32
55
  } }
33
- function PrismShellComponent_Conditional_12_Conditional_2_Template(rf, ctx) { if (rf & 1) {
34
- i0.ɵɵelement(0, "prism-view-panel-host", 9);
56
+ function PrismShellComponent_Conditional_5_Conditional_2_Template(rf, ctx) { if (rf & 1) {
57
+ i0.ɵɵelement(0, "prism-view-panel-host", 4);
58
+ } }
59
+ function PrismShellComponent_Conditional_5_Conditional_3_Template(rf, ctx) { if (rf & 1) {
60
+ const _r3 = i0.ɵɵgetCurrentView();
61
+ i0.ɵɵelementStart(0, "div", 14);
62
+ i0.ɵɵlistener("valueChange", function PrismShellComponent_Conditional_5_Conditional_3_Template_div_valueChange_0_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.layout.setPanelHeight($event)); });
63
+ i0.ɵɵelementEnd();
64
+ i0.ɵɵelementStart(1, "div", 15);
65
+ i0.ɵɵelement(2, "prism-panel-host");
66
+ i0.ɵɵelementEnd();
67
+ } if (rf & 2) {
68
+ const ctx_r1 = i0.ɵɵnextContext(2);
69
+ i0.ɵɵproperty("min", 200)("max", 560)("value", ctx_r1.layout.panelHeight());
35
70
  } }
36
- function PrismShellComponent_Conditional_12_Template(rf, ctx) { if (rf & 1) {
37
- i0.ɵɵconditionalCreate(0, PrismShellComponent_Conditional_12_Conditional_0_Template, 1, 0, "prism-view-tab-bar", 11);
38
- i0.ɵɵconditionalCreate(1, PrismShellComponent_Conditional_12_Conditional_1_Template, 2, 1)(2, PrismShellComponent_Conditional_12_Conditional_2_Template, 1, 0, "prism-view-panel-host", 9);
71
+ function PrismShellComponent_Conditional_5_Template(rf, ctx) { if (rf & 1) {
72
+ i0.ɵɵconditionalCreate(0, PrismShellComponent_Conditional_5_Conditional_0_Template, 1, 0, "prism-view-tab-bar", 11);
73
+ i0.ɵɵconditionalCreate(1, PrismShellComponent_Conditional_5_Conditional_1_Template, 5, 1)(2, PrismShellComponent_Conditional_5_Conditional_2_Template, 1, 0, "prism-view-panel-host", 4);
74
+ i0.ɵɵconditionalCreate(3, PrismShellComponent_Conditional_5_Conditional_3_Template, 3, 3);
39
75
  } if (rf & 2) {
40
- const ctx_r0 = i0.ɵɵnextContext();
41
- i0.ɵɵconditional(ctx_r0.viewPanels().length > 0 ? 0 : -1);
76
+ const ctx_r1 = i0.ɵɵnextContext();
77
+ i0.ɵɵconditional(ctx_r1.viewPanels().length > 0 ? 0 : -1);
42
78
  i0.ɵɵadvance();
43
- i0.ɵɵconditional(ctx_r0.panelService.activeViewId() === "renderer" ? 1 : 2);
79
+ i0.ɵɵconditional(ctx_r1.panelService.activeViewId() === "renderer" ? 1 : 2);
80
+ i0.ɵɵadvance(2);
81
+ i0.ɵɵconditional(ctx_r1.showPanel() ? 3 : -1);
44
82
  } }
45
- function PrismShellComponent_Conditional_13_Template(rf, ctx) { if (rf & 1) {
46
- i0.ɵɵelement(0, "prism-page-renderer", 9);
83
+ function PrismShellComponent_Conditional_6_Template(rf, ctx) { if (rf & 1) {
84
+ i0.ɵɵelement(0, "prism-page-renderer", 4);
47
85
  } }
48
- function PrismShellComponent_Conditional_14_Template(rf, ctx) { if (rf & 1) {
49
- i0.ɵɵelementStart(0, "div", 10)(1, "div", 13);
86
+ function PrismShellComponent_Conditional_7_Template(rf, ctx) { if (rf & 1) {
87
+ i0.ɵɵelementStart(0, "div", 5);
50
88
  i0.ɵɵnamespaceSVG();
51
- i0.ɵɵelementStart(2, "svg", 14);
52
- i0.ɵɵelement(3, "path", 5)(4, "path", 6);
89
+ i0.ɵɵelementStart(1, "svg", 16);
90
+ i0.ɵɵelement(2, "path", 17)(3, "path", 18);
53
91
  i0.ɵɵelementEnd();
54
92
  i0.ɵɵnamespaceHTML();
55
- i0.ɵɵelementStart(5, "p", 15);
56
- i0.ɵɵtext(6, "Select a component");
57
- i0.ɵɵelementEnd();
58
- i0.ɵɵelementStart(7, "p", 16);
59
- i0.ɵɵtext(8, "from the sidebar to preview it here");
60
- i0.ɵɵelementEnd()()();
61
- } }
62
- function PrismShellComponent_Conditional_15_Template(rf, ctx) { if (rf & 1) {
63
- const _r2 = i0.ɵɵgetCurrentView();
64
- i0.ɵɵelementStart(0, "div", 17);
65
- i0.ɵɵlistener("mousedown", function PrismShellComponent_Conditional_15_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", 18);
68
- i0.ɵɵelement(2, "prism-panel-host");
93
+ i0.ɵɵelementStart(4, "p", 19);
94
+ i0.ɵɵtext(5, "Select a component");
69
95
  i0.ɵɵelementEnd();
96
+ i0.ɵɵelementStart(6, "p", 20);
97
+ i0.ɵɵtext(7, " from the sidebar to preview it here ");
98
+ i0.ɵɵelementEnd()();
70
99
  } }
71
100
  export class PrismShellComponent {
72
101
  config = inject(PRISM_CONFIG);
@@ -80,25 +109,24 @@ export class PrismShellComponent {
80
109
  ...BUILTIN_PANELS.filter((p) => p.placement === 'view'),
81
110
  ...this.pluginService.viewPanels(),
82
111
  ], ...(ngDevMode ? [{ debugName: "viewPanels" }] : []));
112
+ showPanel = computed(() => this.layout.addonsVisible() &&
113
+ this.panelService.activeViewId() === 'renderer' &&
114
+ !this.navigationService.activePage(), ...(ngDevMode ? [{ debugName: "showPanel" }] : []));
83
115
  shellStyle = computed(() => {
84
- const isDark = this.themeService.isDark();
85
- const base = isDark ? PRISM_DARK_THEME : PRISM_LIGHT_THEME;
86
- const specific = isDark ? (this.config.darkTheme ?? {}) : (this.config.lightTheme ?? {});
87
- const merged = { ...base, ...specific, ...(this.config.theme ?? {}) };
88
- const tokens = Object.entries(merged).map(([k, v]) => `${k}: ${v}`).join('; ');
89
116
  const sw = this.layout.sidebarVisible() ? this.layout.sidebarWidth() : 0;
90
- const ph = this.layout.addonsOrientation() === 'bottom' ? this.layout.panelHeight() : 0;
91
- const pw = this.layout.addonsOrientation() === 'right' ? this.layout.panelWidth() : 0;
92
- return `${tokens}; --sw: ${sw}px; --ph: ${ph}px; --pw: ${pw}px;`;
117
+ return `--sw: ${sw}px;`;
93
118
  }, ...(ngDevMode ? [{ debugName: "shellStyle" }] : []));
94
119
  constructor() {
120
+ this.themeService.applyConfigOverrides(this.config);
95
121
  this.navigationService.selectFirst();
96
122
  this.urlStateService.init();
97
123
  let lastItemKey = null;
98
124
  effect(() => {
99
125
  const item = this.navigationService.activeItem();
100
126
  const key = item
101
- ? (item.kind === 'component' ? item.data.meta.className : item.data.title)
127
+ ? item.kind === 'component'
128
+ ? item.data.meta.className
129
+ : item.data.title
102
130
  : null;
103
131
  if (lastItemKey !== null && lastItemKey !== key) {
104
132
  untracked(() => this.panelService.activeViewId.set('renderer'));
@@ -130,172 +158,155 @@ export class PrismShellComponent {
130
158
  e.preventDefault();
131
159
  this.layout.toggleAddons();
132
160
  break;
133
- case 'd':
134
- e.preventDefault();
135
- this.layout.toggleOrientation();
136
- break;
137
- }
138
- }
139
- startSidebarResize(e) {
140
- e.preventDefault();
141
- const startX = e.clientX;
142
- const startW = this.layout.sidebarWidth();
143
- const onMove = (ev) => this.layout.setSidebarWidth(startW + ev.clientX - startX);
144
- const onUp = () => {
145
- document.removeEventListener('mousemove', onMove);
146
- document.removeEventListener('mouseup', onUp);
147
- };
148
- document.addEventListener('mousemove', onMove);
149
- document.addEventListener('mouseup', onUp);
150
- }
151
- startPanelResize(e) {
152
- e.preventDefault();
153
- const isRight = this.layout.addonsOrientation() === 'right';
154
- if (isRight) {
155
- const startX = e.clientX;
156
- const startW = this.layout.panelWidth();
157
- const onMove = (ev) => this.layout.setPanelWidth(startW - (ev.clientX - startX));
158
- const onUp = () => {
159
- document.removeEventListener('mousemove', onMove);
160
- document.removeEventListener('mouseup', onUp);
161
- };
162
- document.addEventListener('mousemove', onMove);
163
- document.addEventListener('mouseup', onUp);
164
- }
165
- else {
166
- const startY = e.clientY;
167
- const startH = this.layout.panelHeight();
168
- const onMove = (ev) => this.layout.setPanelHeight(startH - (ev.clientY - startY));
169
- const onUp = () => {
170
- document.removeEventListener('mousemove', onMove);
171
- document.removeEventListener('mouseup', onUp);
172
- };
173
- document.addEventListener('mousemove', onMove);
174
- document.addEventListener('mouseup', onUp);
175
161
  }
176
162
  }
177
163
  static ɵfac = function PrismShellComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || PrismShellComponent)(); };
178
164
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PrismShellComponent, selectors: [["prism-shell"]], hostBindings: function PrismShellComponent_HostBindings(rf, ctx) { if (rf & 1) {
179
165
  i0.ɵɵlistener("keydown", function PrismShellComponent_keydown_HostBindingHandler($event) { return ctx.onKeyDown($event); }, i0.ɵɵresolveDocument);
180
- } }, decls: 16, vars: 8, consts: [[1, "prism-shell"], [1, "prism-shell__header"], [1, "prism-shell__sidebar"], [1, "prism-shell__powered-by"], ["viewBox", "0 0 24 24", "fill", "none", "xmlns", "http://www.w3.org/2000/svg", 1, "prism-shell__powered-by-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__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"], [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) {
166
+ } }, decls: 8, vars: 8, consts: [[1, "prism-shell"], [1, "prism-shell__header"], [1, "prism-body"], [1, "prism-main"], [1, "prism-main__canvas"], [1, "prism-shell__empty"], [1, "prism-sidebar-wrap"], [1, "prism-sidebar-foot"], ["alt", "ng-prism logo", "src", "data:image/png;base64,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", 1, "prism-sidebar-foot__logo"], ["href", "https://dyingangel666.github.io/ng-prism/#/", "target", "_blank", "rel", "noopener", 1, "prism-sidebar-foot__link"], ["prismResizer", "", "axis", "x", 1, "prism-resizer-col", 3, "valueChange", "min", "max", "value"], [1, "prism-main__view-bar"], [1, "prism-canvas-wrap"], [1, "prism-main__code-drawer"], ["prismResizer", "", "axis", "y", 1, "prism-resizer-row", 3, "valueChange", "min", "max", "value"], [1, "prism-main__panel"], ["viewBox", "0 0 24 24", "fill", "none", "stroke", "currentColor", "stroke-width", "1.5", "stroke-linecap", "round", "stroke-linejoin", "round", 1, "prism-shell__empty-icon"], ["d", "M12 2L4 14h16L12 2z"], ["d", "M4 14l4 8h8l4-8"], [1, "prism-shell__empty-text"], [1, "prism-shell__empty-hint"]], template: function PrismShellComponent_Template(rf, ctx) { if (rf & 1) {
181
167
  i0.ɵɵelementStart(0, "div", 0);
182
168
  i0.ɵɵelement(1, "prism-header", 1);
183
- i0.ɵɵelementStart(2, "aside", 2);
184
- i0.ɵɵelement(3, "prism-sidebar");
185
- i0.ɵɵelementEnd();
186
- i0.ɵɵelementStart(4, "div", 3);
187
- i0.ɵɵnamespaceSVG();
188
- i0.ɵɵelementStart(5, "svg", 4);
189
- i0.ɵɵelement(6, "path", 5)(7, "path", 6);
190
- i0.ɵɵelementEnd();
191
- i0.ɵɵnamespaceHTML();
192
- i0.ɵɵelementStart(8, "span");
193
- i0.ɵɵtext(9, "Powered by ng-prism");
194
- i0.ɵɵelementEnd()();
195
- i0.ɵɵelementStart(10, "div", 7);
196
- i0.ɵɵlistener("mousedown", function PrismShellComponent_Template_div_mousedown_10_listener($event) { return ctx.startSidebarResize($event); });
197
- i0.ɵɵelementEnd();
198
- i0.ɵɵelementStart(11, "main", 8);
199
- i0.ɵɵconditionalCreate(12, PrismShellComponent_Conditional_12_Template, 3, 2)(13, PrismShellComponent_Conditional_13_Template, 1, 0, "prism-page-renderer", 9)(14, PrismShellComponent_Conditional_14_Template, 9, 0, "div", 10);
200
- i0.ɵɵelementEnd();
201
- i0.ɵɵconditionalCreate(15, PrismShellComponent_Conditional_15_Template, 3, 0);
202
- i0.ɵɵelementEnd();
169
+ i0.ɵɵelementStart(2, "div", 2);
170
+ i0.ɵɵconditionalCreate(3, PrismShellComponent_Conditional_3_Template, 7, 3);
171
+ i0.ɵɵelementStart(4, "main", 3);
172
+ i0.ɵɵconditionalCreate(5, PrismShellComponent_Conditional_5_Template, 4, 3)(6, PrismShellComponent_Conditional_6_Template, 1, 0, "prism-page-renderer", 4)(7, PrismShellComponent_Conditional_7_Template, 8, 0, "div", 5);
173
+ i0.ɵɵelementEnd()()();
203
174
  } if (rf & 2) {
204
175
  i0.ɵɵstyleMap(ctx.shellStyle());
205
- i0.ɵɵattribute("data-sidebar", ctx.layout.sidebarVisible() ? "visible" : "hidden")("data-addons", ctx.layout.addonsVisible() && ctx.panelService.activeViewId() === "renderer" && !ctx.navigationService.activePage() ? "visible" : "hidden")("data-orientation", ctx.layout.addonsOrientation())("data-toolbar", ctx.layout.toolbarVisible() ? "visible" : "hidden");
206
- i0.ɵɵadvance(12);
207
- i0.ɵɵconditional(ctx.navigationService.activeComponent() ? 12 : ctx.navigationService.activePage() ? 13 : 14);
208
- i0.ɵɵadvance(3);
209
- i0.ɵɵconditional(ctx.layout.addonsVisible() && ctx.panelService.activeViewId() === "renderer" && !ctx.navigationService.activePage() ? 15 : -1);
176
+ i0.ɵɵadvance(2);
177
+ i0.ɵɵclassProp("prism-body--no-sidebar", !ctx.layout.sidebarVisible());
178
+ i0.ɵɵadvance();
179
+ i0.ɵɵconditional(ctx.layout.sidebarVisible() ? 3 : -1);
180
+ i0.ɵɵadvance();
181
+ i0.ɵɵstyleProp("--ph", ctx.showPanel() ? ctx.layout.panelHeight() : 0, "px");
182
+ i0.ɵɵadvance();
183
+ i0.ɵɵconditional(ctx.navigationService.activeComponent() ? 5 : ctx.navigationService.activePage() ? 6 : 7);
210
184
  } }, dependencies: [PrismHeaderComponent,
211
185
  PrismSidebarComponent,
212
- PrismComponentHeaderComponent,
186
+ PrismComponentHeadComponent,
187
+ PrismVariantRibbonComponent,
213
188
  PrismRendererComponent,
214
189
  PrismPanelHostComponent,
215
190
  PrismPageRendererComponent,
216
191
  PrismViewTabBarComponent,
217
- 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 }\n\n .prism-shell__powered-by[_ngcontent-%COMP%] {\n grid-area: sidebar;\n align-self: end;\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 10px 16px;\n font-size: 11px;\n color: var(--prism-text-ghost);\n font-family: var(--prism-font-sans);\n border-right: 1px solid var(--prism-border);\n background: var(--prism-bg);\n pointer-events: none;\n user-select: none;\n }\n\n .prism-shell__powered-by-icon[_ngcontent-%COMP%] {\n width: 14px;\n height: 14px;\n flex-shrink: 0;\n }\n\n .prism-shell[data-sidebar=\"hidden\"][_ngcontent-%COMP%] .prism-shell__powered-by[_ngcontent-%COMP%] {\n display: none;\n }"] });
192
+ PrismViewPanelHostComponent,
193
+ PrismResizerDirective,
194
+ PrismCanvasToolbarComponent,
195
+ PrismCodeDrawerComponent], styles: ["[_nghost-%COMP%] { display: block; height: 100%; }\n\n .prism-shell[_ngcontent-%COMP%] {\n height: 100vh;\n display: grid;\n grid-template-rows: 52px 1fr;\n background: var(--prism-void);\n font-family: var(--font-sans, var(--prism-font-sans));\n color: var(--prism-text);\n overflow: hidden;\n }\n\n .prism-body[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: var(--sw, 264px) 4px 1fr;\n min-height: 0;\n }\n .prism-body--no-sidebar[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .prism-sidebar-wrap[_ngcontent-%COMP%] {\n background: var(--prism-bg);\n border-right: 1px solid var(--prism-border);\n display: flex;\n flex-direction: column;\n min-height: 0;\n overflow: hidden;\n }\n\n .prism-sidebar-wrap[_ngcontent-%COMP%] prism-sidebar[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n }\n\n .prism-sidebar-foot[_ngcontent-%COMP%] {\n border-top: 1px solid var(--prism-border);\n padding: 10px 14px;\n font-size: 11px;\n color: var(--prism-text-ghost);\n display: flex;\n align-items: center;\n gap: 8px;\n }\n .prism-sidebar-foot__logo[_ngcontent-%COMP%] {\n width: 16px;\n flex-shrink: 0;\n }\n .prism-sidebar-foot__link[_ngcontent-%COMP%] {\n color: var(--prism-text-ghost);\n text-decoration: none;\n transition: color var(--dur-fast);\n }\n .prism-sidebar-foot__link[_ngcontent-%COMP%]:hover {\n color: var(--prism-text-2);\n }\n\n .prism-resizer-col[_ngcontent-%COMP%] {\n width: 4px;\n background: transparent;\n transition: background var(--dur-fast) var(--ease-default);\n position: relative;\n z-index: 5;\n }\n .prism-resizer-col[_ngcontent-%COMP%]:hover, \n .prism-resizer-col.active[_ngcontent-%COMP%] {\n background: var(--prism-primary);\n }\n\n .prism-main[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n min-height: 0;\n background: var(--prism-void);\n overflow: hidden;\n }\n\n .prism-resizer-row[_ngcontent-%COMP%] {\n flex-shrink: 0;\n height: 4px;\n background: transparent;\n transition: background var(--dur-fast) var(--ease-default);\n position: relative;\n z-index: 5;\n }\n .prism-resizer-row[_ngcontent-%COMP%]:hover, \n .prism-resizer-row.active[_ngcontent-%COMP%] {\n background: var(--prism-primary);\n }\n\n .prism-canvas-wrap[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n display: grid;\n grid-template-rows: auto minmax(0, 1fr);\n background: var(--prism-bg-surface);\n overflow: hidden;\n }\n .prism-main__code-drawer[_ngcontent-%COMP%] { flex-shrink: 0; }\n .prism-main__view-bar[_ngcontent-%COMP%] { flex-shrink: 0; }\n .prism-main__canvas[_ngcontent-%COMP%] { flex: 1; min-height: 0; overflow: auto; }\n\n .prism-main__panel[_ngcontent-%COMP%] {\n height: var(--ph, 260px);\n flex-shrink: 0;\n overflow: hidden;\n min-height: 0;\n }\n\n .prism-shell__empty[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 8px;\n grid-row: 1 / -1;\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: var(--fs-xl);\n font-weight: 500;\n color: var(--prism-text-muted);\n }\n .prism-shell__empty-hint[_ngcontent-%COMP%] {\n margin: 0;\n font-size: var(--fs-lg);\n color: var(--prism-text-ghost);\n }"], changeDetection: 0 });
218
196
  }
219
197
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PrismShellComponent, [{
220
198
  type: Component,
221
- args: [{ selector: 'prism-shell', standalone: true, imports: [
199
+ args: [{ selector: 'prism-shell', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
222
200
  PrismHeaderComponent,
223
201
  PrismSidebarComponent,
224
- PrismComponentHeaderComponent,
202
+ PrismComponentHeadComponent,
203
+ PrismVariantRibbonComponent,
225
204
  PrismRendererComponent,
226
205
  PrismPanelHostComponent,
227
206
  PrismPageRendererComponent,
228
207
  PrismViewTabBarComponent,
229
208
  PrismViewPanelHostComponent,
209
+ PrismResizerDirective,
210
+ PrismCanvasToolbarComponent,
211
+ PrismCodeDrawerComponent,
230
212
  ], template: `
231
- <div
232
- class="prism-shell"
233
- [style]="shellStyle()"
234
- [attr.data-sidebar]="layout.sidebarVisible() ? 'visible' : 'hidden'"
235
- [attr.data-addons]="layout.addonsVisible() && panelService.activeViewId() === 'renderer' && !navigationService.activePage() ? 'visible' : 'hidden'"
236
- [attr.data-orientation]="layout.addonsOrientation()"
237
- [attr.data-toolbar]="layout.toolbarVisible() ? 'visible' : 'hidden'"
238
- >
213
+ <div class="prism-shell" [style]="shellStyle()">
239
214
  <prism-header class="prism-shell__header" />
240
215
 
241
- <aside class="prism-shell__sidebar">
242
- <prism-sidebar />
243
- </aside>
244
- <div class="prism-shell__powered-by">
245
- <svg class="prism-shell__powered-by-icon" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
246
- <path d="M12 2L4 14h16L12 2z" stroke="currentColor" stroke-width="1.5" stroke-linejoin="round"/>
247
- <path d="M4 14l4 8h8l4-8" stroke="currentColor" stroke-width="1.5" stroke-linejoin="round"/>
248
- </svg>
249
- <span>Powered by ng-prism</span>
250
- </div>
251
216
  <div
252
- class="prism-shell__sidebar-handle"
253
- (mousedown)="startSidebarResize($event)"
254
- ></div>
217
+ class="prism-body"
218
+ [class.prism-body--no-sidebar]="!layout.sidebarVisible()"
219
+ >
220
+ @if (layout.sidebarVisible()) {
221
+ <aside class="prism-sidebar-wrap">
222
+ <prism-sidebar />
223
+ <div class="prism-sidebar-foot">
224
+ <img
225
+ class="prism-sidebar-foot__logo"
226
+ alt="ng-prism logo"
227
+ src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABYCAMAAAA0hKKwAAAC7lBMVEUAAADFkfu6Dn9fLlcmNclKI0WFKFAnRr9XJ09tUI3jTZDxU5vxUJvIQ30wYuRNIMFoF7qBEq61g7y0N2+SL1ljQnL8vO5dUqqhNGPps/coVdQ4K8iUEKCkEJm1O3GKaL2JXpzTmePcS4zCitkoQdeVgfK4ie7hqeGde9p7bNTRR4PQRYRqYMawjPe/SHyBX7D4WJ75WaD6W6H4Vp37XKL9y/UlMtbDEoR90f39uvndn/v5U5rYm/vMlPsrTPJLI8z/YbNWH8f6tfr+0PjxrPvqqPu8jPs1K9QxY/zko/tFJc5RIcnTmfuuifv/1PkmNdz0r/olM9hoGcDopPurh/swXPotUfVzF7rCj/ukhvv9zfb9wv+XgvvuqfovVvgrRO7/5/60i/zhofunhvv6WJ6B0f2ghPvQlvttGL2/Eoa3i/soPeYnOuA8KdJfHMNjG8F8FbX/4P6yiPuSgfsxYPv3sfq2EYpAJ9BaHcX8Vpy7EYf+x/R3FbiIFLD/X62YE6W5jPychPz+tvb7Yab4Qo/+2P/IkvsvLtaCFLOPE6vIk/v9W6C4BH2Vzv2/jvv+XqOtEY/JEYWH0P28xf2fEpb//f//7v81af+myf2Mf/ykE6P6SpWmEJIkYP3/ZaP/zf+N0P1my/2dyv3/Wqf6uP8UM/D9ZaixD4vBDoGwxv3Mv/v6rvYIIOv/aLiVEZnN9f/+vP9y2P6bj/0bVvun3//1tP+ymv/I2v54zP16gvssRvZTIcSKFaTTn/+ml/9p4P7bzP7ilvvNhPtqcvn9qNqNFJ652/7AfPzYjPvy3fr8gsL6crPRJoq7/v+A3f7GmP6oi/6grv3ZtfxTbfskOvE3NeY0Ltn9l8xNDamAGKfmQJOTAISlAIGh9P+P7P/Fof/uzf6Kx/3e2/xGTvHjvud1HK6Nuf5Dav1lILi0MZvbM5B9AI+W2v62iNaPcdLXk824YLmbRbUxB7RqHq9mBJ9zAJjMHIWLjP9HRO0lFtDFY56wAAAAMHRSTlMA/qAgpAY5rxNM3e/9sqKhoZ+bgFYq/Htp+Kihnp6TkV3W08Oh7enSxsO/t6X2nnNWmYchAAAJcElEQVRo3rTSv4vaYBwG8IDc0btrF1uP3nLVOhRaKEnMonEQTQbhECFbQyBIwNnBwcXBmsnBqS4OGS44eAhZ3BW63HVz6Xp/Sr/PmwRxbHzfB3+MH573+0j/nVxOEp/rL5LwXL74BUl0rhuB8CofG/OJW5SE5uLtbFUNbi8kkfm+0VeTaJCXBCY3Xo20iW0HbyRxebeZjX5O7KovsMplY66OVoTYgbgZf26oc9akKm7GHzYzbc6aVKPBlSQkFzdjVYubUJU7MTO+pyKaliBCbo/5ztUjQrfPcScwX09LEVFVMF9trmneKkEi7jPGfFmRI9IMSpwJzJcuQh+dngtEsxn6mDHf+aLI8SZQbM4zvsfVTxGKnxcwXyR9LsowtHnO+NvGA5LcJCIAxrAblLnOV1aYoii69mTHBiFDu8BvvmNPVeMqKiFRanQdu8RvviMgbMIqPVdIBoiuYRh2kdt8ZYW9lsqQpzDuAcMJOc34vuF5DKEyCkNAwHAcxwrynOarUNCEjATpUmCYpjHkMeOvjQoMIFCAdOO3gmG1ozKP+c5wEQpDsK4tesQGKWZ0xWG+spcguIlCTYCgCAjLaoels+fLrh7v9xRhjwWkHZ0745txRSEFDIuiq4QYSREQvZ7RO894T0VAHDP96zvxepkBpBZ9Om++MzlF6Bd3X3Z+GU76WChCiLUtnD1fpihpkcUisFgREMyo1bblc+brebIMAwj+p3/cwevCthzz+FhImH3G1+MKMwAQI8vy8nYxuHteWNapUTdK2ec7Sg18KdOXRWvwenDt/alRr4fFrPN9rMishBJH1fWWC2TnGiSkRh0x+1nnq1c8GCoo6kRXdzudwe5wePb3MEAkSN/IZ5rv44yKKACSLFe+3+q4u/V67W73MFLi4aFfNwtZ5jumIkDSyNPf7o9OiyE7v9c7EkjfLGeZ77/K7DwoxjCOA7h1TJpxjiPn8AeGwShr1Vht0+wgmrbJlA47uxal5NpqXIvaoRS5YlNRQ83qmKamQ3dRKbkqFEVE5L5v//n9nufZ991VVvud7PCPz/ye3/d9vGoXVosptL5qmVQmVV8+mZV1smt1A2cgAVlibXl904SmiNhWEymSymRrik9iri1ZbGw4OjqunWF5fcVgYJiBWxf5ESQTjMziJ9UcAQZmyVTL64uDIEIflTP7pTIDkglIQtfFBmowIiqqUmB5fW1ZGHJFLfLz8wOkPiETU9hVDQI3x6GoqKi1Ft3GgxccFsIkfHDrIhFMAu2qT03ApNaPbzA2Dh2KcqwcbAEyFAbhDHwOhWfGqjU8QpgjxdWOeFbUgAh81s606Pblto4fMMh1HIQhT1Np3l2udqQETAGEj8BnubUlt6/Qjg5heNalMhwEFx9f+PQIzbnCOzXEgAgEAh9IZZ9rPA6eQyGbgyrwrIPBFg8IS2NCAzkpNJA4enTponkW1Zc3Fpy5ESklp0WOq7DkHEtcY1YDEFECzljaJBhkUX3tGIJbj9QYI3FxcUDAp8O7DTUwBQQNRCIqp/SpvuuPEYO7U2Dra0CgiFQaX1ji7x/HkpfQYCSAEeHTNKCP9bWjCI3YThNpgpz35+LQ2FnDE4ioKmf2ob77cOuosDtrwYH7ajwsVmFR/CNAHAxK3lNAeCJi48aISus+1Zd/CgHBrXOGn0wXn/v4fIm/gyGXbtdQYuPSiI0QVUjTjD7U19b0WRfDs84MkSZel/Xs2UlgOCQvr6gGh0ABDVWIqtLmv/Vlly+rMGydOyyNWtf14cvvbH1o8a1Gjrn0ogYI3nBzi5g76H/1ZTPQC2W+eL4okiOufWj7Ul7uFJzdml98Kw8YqlRdRUMFCQkBw82zc4r52zdNuB5HIV/Gz7pGprv2/lVbW7mza/mK1pbsXzyT5w8LQQPHQMNTpTJX49nkOWQIxLB1jUine9/d1vZqi7Ozq5OrU6tSn/3sdu6j8yV091cRYGNA1jXNNPvywNpLzwtfUNQaPw3s+/nnb9++ft2609nV1dXJaUVrGTC10ABk8hwirlICDUSaO63N1BcN/toiN7xGswaI79/bu7tfbdkJk4CxYkerUqnM1lPG/9ILRNwwIEB8VdPN3b4EIAwe1gKpbKxa9/zT27cV7e3dgVsNyI7Nm+8pkWkprYei4e7JPnAKggR0/qPGg2zh9qUEYYSwdTXs+1PO27q6ior2wJVbt2zhkGWgUCYXGlACg3giggKmuXmQmduXzkGkAxfW6OI/nnqYk1NXV9fuvRIQbpJlyw66KyVKpaSFNAAOzJPsAw1MQNGUXusL777C9QSgg+D/3D6+fvjwFCIV3oGBiOzkkYUeyjJQJPrsu8Dkh7B1ECIgoLlogPmXByH5OHPlORKnAMkBgyLORsjChcESEr2+NjXXJwAVFDBabdGsXm9fzhDC17GUIa87Os6eBQQNb++eiAcoZRIlKKv0+tKiJpUvIoTAVFn3Ul86CPwC43DKkJvpHenHAYFU7PHe4x1oupODMAlkExCoSPSK0iKBm68BkcvlVdN71hcMAJABQvhme0d6+nGKVGzbsweQnseFs7gDAMgqYLxKm5d6IiGnKbL5a+vCNDDYKCm2b4I6tm8nCCRm2zZQjCZZwRASWD9TFJKCsFpfFY5BEqrNH/zXN87EaOAYKSkP7GN3794NCkHCo6OjjZBy452gwSkKhaKgIKxU5aYlBKRqTo/6GvZ9MzY2iCEQMMwjHh7uoCAC8SoouJvoto4h8vwxf9WXLgOJjCAeCd+7d280HJc3j5geFxju7sGrMIh4eRUkA6MNxSRWzTK9fSF2KXZvMmIz7O2DQNkOSSeGKeLaC7IJFAUqiISFARO6To5IIqkxX19YxjFYBhBGSHhMTAxD/r14d4OiYEhYcoFLrdYXjMT86Ub1FeO+f8TGgsAQVJJiEIk2N4kHRTZtAoVDXFySk1+WarWo2HA/NBYfPkaWYU+DBihJ4eHhxpNs7Q0hxwUBxQsQplAmQJ4YGjrYUN8UISN4JAgNRMwunkeCg0HhEWSgAQGJ+XPoy8OFww9g32DwCDBJSX2YxINHIBLOoIHVyLX5A8hP3egyTBD73Wc5xGy7TBClhDfYMKdr8TYenXYzNuOEaexP2B9PwjAkmkOcAaH/+t67584Cf3tLsLIMo1S4uJw2istpWM1Pm36j+veWyZhJmJE0I2iG00zEDORjNW2glZXVtGnTBg6cYGU1YRgE/gy/mWA1bMIwmz/QGVRJ3BG6bAAAAABJRU5ErkJggg=="
228
+ />
229
+ <a
230
+ class="prism-sidebar-foot__link"
231
+ href="https://dyingangel666.github.io/ng-prism/#/"
232
+ target="_blank"
233
+ rel="noopener"
234
+ >
235
+ Powered by ng-prism
236
+ </a>
237
+ </div>
238
+ </aside>
239
+ <div
240
+ class="prism-resizer-col"
241
+ prismResizer
242
+ axis="x"
243
+ [min]="200"
244
+ [max]="360"
245
+ [value]="layout.sidebarWidth()"
246
+ (valueChange)="layout.setSidebarWidth($event)"
247
+ ></div>
248
+ }
255
249
 
256
- <main class="prism-shell__main">
257
- @if (navigationService.activeComponent()) {
258
- @if (viewPanels().length > 0) {
259
- <prism-view-tab-bar class="prism-shell__view-bar" />
250
+ <main
251
+ class="prism-main"
252
+ [style.--ph.px]="showPanel() ? layout.panelHeight() : 0"
253
+ >
254
+ @if (navigationService.activeComponent()) { @if (viewPanels().length >
255
+ 0) {
256
+ <prism-view-tab-bar class="prism-main__view-bar" />
257
+ } @if (panelService.activeViewId() === 'renderer') { @if
258
+ (layout.toolbarVisible()) {
259
+ <prism-component-head />
260
+ <prism-variant-ribbon />
260
261
  }
261
-
262
- @if (panelService.activeViewId() === 'renderer') {
263
- @if (layout.toolbarVisible()) {
264
- <prism-component-header class="prism-shell__toolbar" />
265
- }
266
- <prism-renderer class="prism-shell__canvas" />
262
+ <div class="prism-canvas-wrap">
263
+ <prism-canvas-toolbar />
264
+ <prism-renderer />
265
+ </div>
266
+ <prism-code-drawer class="prism-main__code-drawer" />
267
+ } @else {
268
+ <prism-view-panel-host class="prism-main__canvas" />
269
+ } @if (showPanel()) {
270
+ <div
271
+ class="prism-resizer-row"
272
+ prismResizer
273
+ axis="y"
274
+ [min]="200"
275
+ [max]="560"
276
+ [value]="layout.panelHeight()"
277
+ (valueChange)="layout.setPanelHeight($event)"
278
+ ></div>
279
+ <div class="prism-main__panel">
280
+ <prism-panel-host />
281
+ </div>
282
+ } } @else if (navigationService.activePage()) {
283
+ <prism-page-renderer class="prism-main__canvas" />
267
284
  } @else {
268
- <prism-view-panel-host class="prism-shell__canvas" />
269
- }
270
- } @else if (navigationService.activePage()) {
271
- <prism-page-renderer class="prism-shell__canvas" />
272
- } @else {
273
285
  <div class="prism-shell__empty">
274
- <div class="prism-shell__empty-inner">
275
- <svg class="prism-shell__empty-icon" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
276
- <path d="M12 2L4 14h16L12 2z" stroke="currentColor" stroke-width="1.5" stroke-linejoin="round"/>
277
- <path d="M4 14l4 8h8l4-8" stroke="currentColor" stroke-width="1.5" stroke-linejoin="round"/>
278
- </svg>
279
- <p class="prism-shell__empty-text">Select a component</p>
280
- <p class="prism-shell__empty-hint">from the sidebar to preview it here</p>
281
- </div>
286
+ <svg
287
+ class="prism-shell__empty-icon"
288
+ viewBox="0 0 24 24"
289
+ fill="none"
290
+ stroke="currentColor"
291
+ stroke-width="1.5"
292
+ stroke-linecap="round"
293
+ stroke-linejoin="round"
294
+ >
295
+ <path d="M12 2L4 14h16L12 2z" />
296
+ <path d="M4 14l4 8h8l4-8" />
297
+ </svg>
298
+ <p class="prism-shell__empty-text">Select a component</p>
299
+ <p class="prism-shell__empty-hint">
300
+ from the sidebar to preview it here
301
+ </p>
282
302
  </div>
283
- }
284
- </main>
285
-
286
- @if (layout.addonsVisible() && panelService.activeViewId() === 'renderer' && !navigationService.activePage()) {
287
- <div
288
- class="prism-shell__panel-handle"
289
- (mousedown)="startPanelResize($event)"
290
- ></div>
291
- <div class="prism-shell__panel">
292
- <prism-panel-host />
293
- </div>
294
- }
303
+ }
304
+ </main>
305
+ </div>
295
306
  </div>
296
- `, 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\n .prism-shell__powered-by {\n grid-area: sidebar;\n align-self: end;\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 10px 16px;\n font-size: 11px;\n color: var(--prism-text-ghost);\n font-family: var(--prism-font-sans);\n border-right: 1px solid var(--prism-border);\n background: var(--prism-bg);\n pointer-events: none;\n user-select: none;\n }\n\n .prism-shell__powered-by-icon {\n width: 14px;\n height: 14px;\n flex-shrink: 0;\n }\n\n .prism-shell[data-sidebar=\"hidden\"] .prism-shell__powered-by {\n display: none;\n }\n "] }]
307
+ `, styles: ["\n :host { display: block; height: 100%; }\n\n .prism-shell {\n height: 100vh;\n display: grid;\n grid-template-rows: 52px 1fr;\n background: var(--prism-void);\n font-family: var(--font-sans, var(--prism-font-sans));\n color: var(--prism-text);\n overflow: hidden;\n }\n\n .prism-body {\n display: grid;\n grid-template-columns: var(--sw, 264px) 4px 1fr;\n min-height: 0;\n }\n .prism-body--no-sidebar {\n grid-template-columns: 1fr;\n }\n\n .prism-sidebar-wrap {\n background: var(--prism-bg);\n border-right: 1px solid var(--prism-border);\n display: flex;\n flex-direction: column;\n min-height: 0;\n overflow: hidden;\n }\n\n .prism-sidebar-wrap prism-sidebar {\n flex: 1;\n min-height: 0;\n }\n\n .prism-sidebar-foot {\n border-top: 1px solid var(--prism-border);\n padding: 10px 14px;\n font-size: 11px;\n color: var(--prism-text-ghost);\n display: flex;\n align-items: center;\n gap: 8px;\n }\n .prism-sidebar-foot__logo {\n width: 16px;\n flex-shrink: 0;\n }\n .prism-sidebar-foot__link {\n color: var(--prism-text-ghost);\n text-decoration: none;\n transition: color var(--dur-fast);\n }\n .prism-sidebar-foot__link:hover {\n color: var(--prism-text-2);\n }\n\n .prism-resizer-col {\n width: 4px;\n background: transparent;\n transition: background var(--dur-fast) var(--ease-default);\n position: relative;\n z-index: 5;\n }\n .prism-resizer-col:hover,\n .prism-resizer-col.active {\n background: var(--prism-primary);\n }\n\n .prism-main {\n display: flex;\n flex-direction: column;\n min-height: 0;\n background: var(--prism-void);\n overflow: hidden;\n }\n\n .prism-resizer-row {\n flex-shrink: 0;\n height: 4px;\n background: transparent;\n transition: background var(--dur-fast) var(--ease-default);\n position: relative;\n z-index: 5;\n }\n .prism-resizer-row:hover,\n .prism-resizer-row.active {\n background: var(--prism-primary);\n }\n\n .prism-canvas-wrap {\n flex: 1;\n min-height: 0;\n display: grid;\n grid-template-rows: auto minmax(0, 1fr);\n background: var(--prism-bg-surface);\n overflow: hidden;\n }\n .prism-main__code-drawer { flex-shrink: 0; }\n .prism-main__view-bar { flex-shrink: 0; }\n .prism-main__canvas { flex: 1; min-height: 0; overflow: auto; }\n\n .prism-main__panel {\n height: var(--ph, 260px);\n flex-shrink: 0;\n overflow: hidden;\n min-height: 0;\n }\n\n .prism-shell__empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 8px;\n grid-row: 1 / -1;\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: var(--fs-xl);\n font-weight: 500;\n color: var(--prism-text-muted);\n }\n .prism-shell__empty-hint {\n margin: 0;\n font-size: var(--fs-lg);\n color: var(--prism-text-ghost);\n }\n "] }]
297
308
  }], () => [], { onKeyDown: [{
298
309
  type: HostListener,
299
310
  args: ['document:keydown', ['$event']]
300
311
  }] }); })();
301
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismShellComponent, { className: "PrismShellComponent", filePath: "app/shell/prism-shell.component.ts", lineNumber: 229 }); })();
312
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismShellComponent, { className: "PrismShellComponent", filePath: "app/shell/prism-shell.component.ts", lineNumber: 283 }); })();
@@ -1,26 +1,32 @@
1
1
  import type { NavigationItem } from '../services/navigation-item.types.js';
2
2
  import { PrismNavigationService } from '../services/prism-navigation.service.js';
3
+ import { PrismSearchService } from '../services/prism-search.service.js';
3
4
  import * as i0 from "@angular/core";
4
5
  interface SidebarCategory {
5
6
  name: string;
7
+ color: string;
6
8
  items: NavigationItem[];
7
9
  }
8
- interface SidebarGroup {
9
- name: string | null;
10
- categories: SidebarCategory[];
11
- }
12
10
  export declare class PrismSidebarComponent {
13
11
  protected readonly navigationService: PrismNavigationService;
14
- private readonly expandedSet;
15
- protected readonly groups: import("@angular/core").Signal<SidebarGroup[]>;
16
- protected isExpanded(key: string, index: number): boolean;
17
- protected toggle(key: string, index: number): void;
12
+ protected readonly searchService: PrismSearchService;
13
+ private readonly manifestService;
14
+ private readonly collapsedSet;
15
+ protected readonly totalPages: import("@angular/core").Signal<number>;
16
+ protected readonly pageCategories: import("@angular/core").Signal<SidebarCategory[]>;
17
+ protected readonly componentCategories: import("@angular/core").Signal<SidebarCategory[]>;
18
+ protected readonly stats: import("@angular/core").Signal<{
19
+ components: number;
20
+ variants: number;
21
+ }>;
22
+ protected isCollapsed(key: string): boolean;
23
+ protected toggleCollapse(key: string): void;
18
24
  protected itemKey(item: NavigationItem): string;
19
25
  protected itemLabel(item: NavigationItem): string;
20
26
  protected isActive(item: NavigationItem): boolean;
21
27
  protected onSelect(item: NavigationItem): void;
22
- private loadExpanded;
23
- private saveExpanded;
28
+ private loadCollapsed;
29
+ private saveCollapsed;
24
30
  static ɵfac: i0.ɵɵFactoryDeclaration<PrismSidebarComponent, never>;
25
31
  static ɵcmp: i0.ɵɵComponentDeclaration<PrismSidebarComponent, "prism-sidebar", never, {}, {}, never, never, true, never>;
26
32
  }
@@ -1 +1 @@
1
- {"version":3,"file":"prism-sidebar.component.d.ts","sourceRoot":"","sources":["../../../src/app/sidebar/prism-sidebar.component.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;;AAIjF,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,cAAc,EAAE,CAAC;CACzB;AAED,UAAU,YAAY;IACpB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,UAAU,EAAE,eAAe,EAAE,CAAC;CAC/B;AAED,qBA2Na,qBAAqB;IAChC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,yBAAkC;IAEtE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA4C;IAExE,SAAS,CAAC,QAAQ,CAAC,MAAM,iDAgCtB;IAEH,SAAS,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;IAOzD,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAoBlD,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;IAQ9C,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,YAAY;yCAxGT,qBAAqB;2CAArB,qBAAqB;CA6GjC"}
1
+ {"version":3,"file":"prism-sidebar.component.d.ts","sourceRoot":"","sources":["../../../src/app/sidebar/prism-sidebar.component.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AACjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;;AAwBzE,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,cAAc,EAAE,CAAC;CACzB;AAED,qBA6Ta,qBAAqB;IAChC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,yBAAkC;IACtE,SAAS,CAAC,QAAQ,CAAC,aAAa,qBAA8B;IAC9D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAgC;IAEhE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA6C;IAE1E,SAAS,CAAC,QAAQ,CAAC,UAAU,yCAE1B;IAEH,SAAS,CAAC,QAAQ,CAAC,cAAc,oDAc9B;IAEH,SAAS,CAAC,QAAQ,CAAC,mBAAmB,oDAanC;IAEH,SAAS,CAAC,QAAQ,CAAC,KAAK;;;OAQrB;IAEH,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAI3C,SAAS,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAU3C,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;IAWjD,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;IAQ9C,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,aAAa;yCA1GV,qBAAqB;2CAArB,qBAAqB;CA+GjC"}