@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
package/README.md CHANGED
@@ -57,7 +57,7 @@ export class ButtonComponent {
57
57
  ### 3. Run the schematic
58
58
 
59
59
  ```bash
60
- ng add ng-prism
60
+ ng add @ng-prism/core
61
61
  ```
62
62
 
63
63
  This creates the prism app project, configures Angular builders, and generates `ng-prism.config.ts`.
@@ -0,0 +1,16 @@
1
+ import { PrismCanvasService } from '../services/prism-canvas.service.js';
2
+ import * as i0 from "@angular/core";
3
+ export declare class PrismCanvasRulersComponent {
4
+ protected readonly canvas: PrismCanvasService;
5
+ private readonly rulerTop;
6
+ private readonly rulerLeft;
7
+ private ro;
8
+ constructor();
9
+ private observeResize;
10
+ private paint;
11
+ private paintH;
12
+ private paintV;
13
+ static ɵfac: i0.ɵɵFactoryDeclaration<PrismCanvasRulersComponent, never>;
14
+ static ɵcmp: i0.ɵɵComponentDeclaration<PrismCanvasRulersComponent, "prism-canvas-rulers", never, {}, {}, never, never, true, never>;
15
+ }
16
+ //# sourceMappingURL=prism-canvas-rulers.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prism-canvas-rulers.component.d.ts","sourceRoot":"","sources":["../../../src/app/canvas/prism-canvas-rulers.component.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;;AAIzE,qBAkDa,0BAA0B;IACrC,SAAS,CAAC,QAAQ,CAAC,MAAM,qBAA8B;IAEvD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAC8B;IACvD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAC8B;IAExD,OAAO,CAAC,EAAE,CAA+B;;IAoBzC,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,KAAK;IAKb,OAAO,CAAC,MAAM;IA4Dd,OAAO,CAAC,MAAM;yCArGH,0BAA0B;2CAA1B,0BAA0B;CAoKtC"}
@@ -0,0 +1,177 @@
1
+ import { Component, ChangeDetectionStrategy, effect, inject, viewChild, } from '@angular/core';
2
+ import { PrismCanvasService } from '../services/prism-canvas.service.js';
3
+ import * as i0 from "@angular/core";
4
+ const _c0 = ["rulerTop"];
5
+ const _c1 = ["rulerLeft"];
6
+ function PrismCanvasRulersComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
7
+ i0.ɵɵdomElementStart(0, "div", 2);
8
+ i0.ɵɵdomElement(1, "canvas", 3, 0)(3, "canvas", 4, 1)(5, "div", 5);
9
+ i0.ɵɵdomElementEnd();
10
+ } }
11
+ const R = 20;
12
+ export class PrismCanvasRulersComponent {
13
+ canvas = inject(PrismCanvasService);
14
+ rulerTop = viewChild('rulerTop', ...(ngDevMode ? [{ debugName: "rulerTop" }] : []));
15
+ rulerLeft = viewChild('rulerLeft', ...(ngDevMode ? [{ debugName: "rulerLeft" }] : []));
16
+ ro = null;
17
+ constructor() {
18
+ effect(() => {
19
+ const show = this.canvas.rulers();
20
+ const zoom = this.canvas.zoom();
21
+ if (!show) {
22
+ this.ro?.disconnect();
23
+ this.ro = null;
24
+ return;
25
+ }
26
+ requestAnimationFrame(() => {
27
+ this.paint(zoom);
28
+ this.observeResize(zoom);
29
+ });
30
+ });
31
+ }
32
+ observeResize(zoom) {
33
+ if (this.ro)
34
+ return;
35
+ const wrap = this.rulerTop()?.nativeElement?.parentElement;
36
+ if (!wrap)
37
+ return;
38
+ this.ro = new ResizeObserver(() => this.paint(this.canvas.zoom()));
39
+ this.ro.observe(wrap);
40
+ }
41
+ paint(zoom) {
42
+ this.paintH(zoom);
43
+ this.paintV(zoom);
44
+ }
45
+ paintH(zoom) {
46
+ const el = this.rulerTop()?.nativeElement;
47
+ if (!el)
48
+ return;
49
+ const wrap = el.parentElement;
50
+ const w = wrap.clientWidth - R;
51
+ const h = R;
52
+ if (w <= 0)
53
+ return;
54
+ const dpr = devicePixelRatio;
55
+ el.width = w * dpr;
56
+ el.height = h * dpr;
57
+ el.style.width = w + 'px';
58
+ el.style.height = h + 'px';
59
+ const ctx = el.getContext('2d');
60
+ ctx.scale(dpr, dpr);
61
+ const cs = getComputedStyle(document.documentElement);
62
+ const bg = cs.getPropertyValue('--prism-bg').trim() || '#0d0b1c';
63
+ const fg = cs.getPropertyValue('--prism-text-ghost').trim() || '#6a5d87';
64
+ const border = cs.getPropertyValue('--prism-border').trim() || 'rgba(255,255,255,0.08)';
65
+ ctx.fillStyle = bg;
66
+ ctx.fillRect(0, 0, w, h);
67
+ ctx.strokeStyle = border;
68
+ ctx.lineWidth = 1;
69
+ ctx.beginPath();
70
+ ctx.moveTo(0, h - 0.5);
71
+ ctx.lineTo(w, h - 0.5);
72
+ ctx.stroke();
73
+ const step = stepFor(zoom);
74
+ const pxStep = step * zoom;
75
+ ctx.strokeStyle = fg;
76
+ ctx.fillStyle = fg;
77
+ ctx.lineWidth = 0.5;
78
+ ctx.font = '9px monospace';
79
+ ctx.textAlign = 'left';
80
+ ctx.textBaseline = 'top';
81
+ let logical = 0;
82
+ for (let x = 0; x < w; x += pxStep, logical += step) {
83
+ const xr = Math.round(x) + 0.5;
84
+ const major = logical % (step * 5) === 0;
85
+ ctx.beginPath();
86
+ ctx.moveTo(xr, h);
87
+ ctx.lineTo(xr, h - (major ? 12 : 6));
88
+ ctx.stroke();
89
+ if (major) {
90
+ ctx.fillText(String(logical), xr + 2, 2);
91
+ }
92
+ }
93
+ }
94
+ paintV(zoom) {
95
+ const el = this.rulerLeft()?.nativeElement;
96
+ if (!el)
97
+ return;
98
+ const wrap = el.parentElement;
99
+ const w = R;
100
+ const h = wrap.clientHeight - R;
101
+ if (h <= 0)
102
+ return;
103
+ const dpr = devicePixelRatio;
104
+ el.width = w * dpr;
105
+ el.height = h * dpr;
106
+ el.style.width = w + 'px';
107
+ el.style.height = h + 'px';
108
+ const ctx = el.getContext('2d');
109
+ ctx.scale(dpr, dpr);
110
+ const cs = getComputedStyle(document.documentElement);
111
+ const bg = cs.getPropertyValue('--prism-bg').trim() || '#0d0b1c';
112
+ const fg = cs.getPropertyValue('--prism-text-ghost').trim() || '#6a5d87';
113
+ const border = cs.getPropertyValue('--prism-border').trim() || 'rgba(255,255,255,0.08)';
114
+ ctx.fillStyle = bg;
115
+ ctx.fillRect(0, 0, w, h);
116
+ ctx.strokeStyle = border;
117
+ ctx.lineWidth = 1;
118
+ ctx.beginPath();
119
+ ctx.moveTo(w - 0.5, 0);
120
+ ctx.lineTo(w - 0.5, h);
121
+ ctx.stroke();
122
+ const step = stepFor(zoom);
123
+ const pxStep = step * zoom;
124
+ ctx.strokeStyle = fg;
125
+ ctx.fillStyle = fg;
126
+ ctx.lineWidth = 0.5;
127
+ ctx.font = '9px monospace';
128
+ let logical = 0;
129
+ for (let y = 0; y < h; y += pxStep, logical += step) {
130
+ const yr = Math.round(y) + 0.5;
131
+ const major = logical % (step * 5) === 0;
132
+ ctx.beginPath();
133
+ ctx.moveTo(w, yr);
134
+ ctx.lineTo(w - (major ? 12 : 6), yr);
135
+ ctx.stroke();
136
+ if (major) {
137
+ ctx.save();
138
+ ctx.translate(9, yr + 2);
139
+ ctx.rotate(-Math.PI / 2);
140
+ ctx.textAlign = 'left';
141
+ ctx.textBaseline = 'top';
142
+ ctx.fillText(String(logical), 0, 0);
143
+ ctx.restore();
144
+ }
145
+ }
146
+ }
147
+ static ɵfac = function PrismCanvasRulersComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || PrismCanvasRulersComponent)(); };
148
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PrismCanvasRulersComponent, selectors: [["prism-canvas-rulers"]], viewQuery: function PrismCanvasRulersComponent_Query(rf, ctx) { if (rf & 1) {
149
+ i0.ɵɵviewQuerySignal(ctx.rulerTop, _c0, 5)(ctx.rulerLeft, _c1, 5);
150
+ } if (rf & 2) {
151
+ i0.ɵɵqueryAdvance(2);
152
+ } }, decls: 1, vars: 1, consts: [["rulerTop", ""], ["rulerLeft", ""], [1, "ruler-wrap"], [1, "ruler", "ruler--top"], [1, "ruler", "ruler--left"], [1, "ruler-corner"]], template: function PrismCanvasRulersComponent_Template(rf, ctx) { if (rf & 1) {
153
+ i0.ɵɵconditionalCreate(0, PrismCanvasRulersComponent_Conditional_0_Template, 6, 0, "div", 2);
154
+ } if (rf & 2) {
155
+ i0.ɵɵconditional(ctx.canvas.rulers() ? 0 : -1);
156
+ } }, styles: ["[_nghost-%COMP%] { display: contents; }\n\n .ruler-wrap[_ngcontent-%COMP%] {\n position: absolute;\n inset: 0;\n pointer-events: none;\n z-index: 4;\n overflow: hidden;\n }\n\n .ruler[_ngcontent-%COMP%] { position: absolute; }\n .ruler--top[_ngcontent-%COMP%] {\n top: 0;\n left: 20px;\n right: 0;\n height: 20px;\n }\n .ruler--left[_ngcontent-%COMP%] {\n top: 20px;\n left: 0;\n bottom: 0;\n width: 20px;\n }\n .ruler-corner[_ngcontent-%COMP%] {\n position: absolute;\n top: 0;\n left: 0;\n width: 20px;\n height: 20px;\n background: var(--prism-bg);\n border-right: 1px solid var(--prism-border);\n border-bottom: 1px solid var(--prism-border);\n z-index: 1;\n }"], changeDetection: 0 });
157
+ }
158
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PrismCanvasRulersComponent, [{
159
+ type: Component,
160
+ args: [{ selector: 'prism-canvas-rulers', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: `
161
+ @if (canvas.rulers()) {
162
+ <div class="ruler-wrap">
163
+ <canvas #rulerTop class="ruler ruler--top"></canvas>
164
+ <canvas #rulerLeft class="ruler ruler--left"></canvas>
165
+ <div class="ruler-corner"></div>
166
+ </div>
167
+ }
168
+ `, styles: ["\n :host { display: contents; }\n\n .ruler-wrap {\n position: absolute;\n inset: 0;\n pointer-events: none;\n z-index: 4;\n overflow: hidden;\n }\n\n .ruler { position: absolute; }\n .ruler--top {\n top: 0;\n left: 20px;\n right: 0;\n height: 20px;\n }\n .ruler--left {\n top: 20px;\n left: 0;\n bottom: 0;\n width: 20px;\n }\n .ruler-corner {\n position: absolute;\n top: 0;\n left: 0;\n width: 20px;\n height: 20px;\n background: var(--prism-bg);\n border-right: 1px solid var(--prism-border);\n border-bottom: 1px solid var(--prism-border);\n z-index: 1;\n }\n "] }]
169
+ }], () => [], { rulerTop: [{ type: i0.ViewChild, args: ['rulerTop', { isSignal: true }] }], rulerLeft: [{ type: i0.ViewChild, args: ['rulerLeft', { isSignal: true }] }] }); })();
170
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismCanvasRulersComponent, { className: "PrismCanvasRulersComponent", filePath: "app/canvas/prism-canvas-rulers.component.ts", lineNumber: 63 }); })();
171
+ function stepFor(zoom) {
172
+ if (zoom >= 2)
173
+ return 10;
174
+ if (zoom >= 1)
175
+ return 20;
176
+ return 50;
177
+ }
@@ -0,0 +1,14 @@
1
+ import { PrismCanvasService, type CanvasBg } from '../services/prism-canvas.service.js';
2
+ import * as i0 from "@angular/core";
3
+ export declare class PrismCanvasToolbarComponent {
4
+ protected readonly canvas: PrismCanvasService;
5
+ protected readonly bgs: CanvasBg[];
6
+ protected readonly zooms: {
7
+ value: number;
8
+ label: string;
9
+ }[];
10
+ protected capitalize(s: string): string;
11
+ static ɵfac: i0.ɵɵFactoryDeclaration<PrismCanvasToolbarComponent, never>;
12
+ static ɵcmp: i0.ɵɵComponentDeclaration<PrismCanvasToolbarComponent, "prism-canvas-toolbar", never, {}, {}, never, never, true, never>;
13
+ }
14
+ //# sourceMappingURL=prism-canvas-toolbar.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prism-canvas-toolbar.component.d.ts","sourceRoot":"","sources":["../../../src/app/canvas/prism-canvas-toolbar.component.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,kBAAkB,EAClB,KAAK,QAAQ,EACd,MAAM,qCAAqC,CAAC;;AAE7C,qBAwHa,2BAA2B;IACtC,SAAS,CAAC,QAAQ,CAAC,MAAM,qBAA8B;IAEvD,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,CAMhC;IACF,SAAS,CAAC,QAAQ,CAAC,KAAK;;;QAKtB;IAEF,SAAS,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;yCAjB5B,2BAA2B;2CAA3B,2BAA2B;CAoBvC"}
@@ -0,0 +1,144 @@
1
+ import { Component, inject, ChangeDetectionStrategy } from '@angular/core';
2
+ import { PrismIconComponent } from '../icons/prism-icon.component.js';
3
+ import { PrismCanvasService, } from '../services/prism-canvas.service.js';
4
+ import * as i0 from "@angular/core";
5
+ const _forTrack0 = ($index, $item) => $item.value;
6
+ function PrismCanvasToolbarComponent_For_5_Template(rf, ctx) { if (rf & 1) {
7
+ const _r1 = i0.ɵɵgetCurrentView();
8
+ i0.ɵɵelementStart(0, "button", 9);
9
+ i0.ɵɵlistener("click", function PrismCanvasToolbarComponent_For_5_Template_button_click_0_listener() { const bg_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.canvas.setBg(bg_r2)); });
10
+ i0.ɵɵtext(1);
11
+ i0.ɵɵelementEnd();
12
+ } if (rf & 2) {
13
+ const bg_r2 = ctx.$implicit;
14
+ const ctx_r2 = i0.ɵɵnextContext();
15
+ i0.ɵɵclassProp("tool-btn--active", ctx_r2.canvas.bg() === bg_r2);
16
+ i0.ɵɵadvance();
17
+ i0.ɵɵtextInterpolate1(" ", ctx_r2.capitalize(bg_r2), " ");
18
+ } }
19
+ function PrismCanvasToolbarComponent_For_11_Template(rf, ctx) { if (rf & 1) {
20
+ const _r4 = i0.ɵɵgetCurrentView();
21
+ i0.ɵɵelementStart(0, "button", 9);
22
+ i0.ɵɵlistener("click", function PrismCanvasToolbarComponent_For_11_Template_button_click_0_listener() { const z_r5 = i0.ɵɵrestoreView(_r4).$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.canvas.setZoom(z_r5.value)); });
23
+ i0.ɵɵtext(1);
24
+ i0.ɵɵelementEnd();
25
+ } if (rf & 2) {
26
+ const z_r5 = ctx.$implicit;
27
+ const ctx_r2 = i0.ɵɵnextContext();
28
+ i0.ɵɵclassProp("tool-btn--active", ctx_r2.canvas.zoom() === z_r5.value);
29
+ i0.ɵɵadvance();
30
+ i0.ɵɵtextInterpolate1(" ", z_r5.label, " ");
31
+ } }
32
+ export class PrismCanvasToolbarComponent {
33
+ canvas = inject(PrismCanvasService);
34
+ bgs = [
35
+ 'dots',
36
+ 'plain',
37
+ 'light',
38
+ 'dark',
39
+ 'checker',
40
+ ];
41
+ zooms = [
42
+ { value: 0.75, label: '75%' },
43
+ { value: 1, label: '100%' },
44
+ { value: 1.5, label: '150%' },
45
+ { value: 2, label: '200%' },
46
+ ];
47
+ capitalize(s) {
48
+ return s.charAt(0).toUpperCase() + s.slice(1);
49
+ }
50
+ static ɵfac = function PrismCanvasToolbarComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || PrismCanvasToolbarComponent)(); };
51
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PrismCanvasToolbarComponent, selectors: [["prism-canvas-toolbar"]], decls: 19, vars: 6, consts: [[1, "canvas-toolbar"], [1, "tool-label"], [1, "tool-group"], [1, "tool-btn", 3, "tool-btn--active"], [1, "tool-sep"], ["title", "Toggle guides", "aria-label", "Toggle guides", 1, "tool-btn", 3, "click"], ["name", "crosshair", 3, "size"], ["title", "Toggle rulers", "aria-label", "Toggle rulers", 1, "tool-btn", 3, "click"], ["name", "move", 3, "size"], [1, "tool-btn", 3, "click"]], template: function PrismCanvasToolbarComponent_Template(rf, ctx) { if (rf & 1) {
52
+ i0.ɵɵelementStart(0, "div", 0)(1, "span", 1);
53
+ i0.ɵɵtext(2, "Canvas");
54
+ i0.ɵɵelementEnd();
55
+ i0.ɵɵelementStart(3, "div", 2);
56
+ i0.ɵɵrepeaterCreate(4, PrismCanvasToolbarComponent_For_5_Template, 2, 3, "button", 3, i0.ɵɵrepeaterTrackByIdentity);
57
+ i0.ɵɵelementEnd();
58
+ i0.ɵɵelement(6, "div", 4);
59
+ i0.ɵɵelementStart(7, "span", 1);
60
+ i0.ɵɵtext(8, "Zoom");
61
+ i0.ɵɵelementEnd();
62
+ i0.ɵɵelementStart(9, "div", 2);
63
+ i0.ɵɵrepeaterCreate(10, PrismCanvasToolbarComponent_For_11_Template, 2, 3, "button", 3, _forTrack0);
64
+ i0.ɵɵelementEnd();
65
+ i0.ɵɵelement(12, "div", 4);
66
+ i0.ɵɵelementStart(13, "button", 5);
67
+ i0.ɵɵlistener("click", function PrismCanvasToolbarComponent_Template_button_click_13_listener() { return ctx.canvas.toggleGuides(); });
68
+ i0.ɵɵelement(14, "prism-icon", 6);
69
+ i0.ɵɵtext(15, " Guides ");
70
+ i0.ɵɵelementEnd();
71
+ i0.ɵɵelementStart(16, "button", 7);
72
+ i0.ɵɵlistener("click", function PrismCanvasToolbarComponent_Template_button_click_16_listener() { return ctx.canvas.toggleRulers(); });
73
+ i0.ɵɵelement(17, "prism-icon", 8);
74
+ i0.ɵɵtext(18, " Rulers ");
75
+ i0.ɵɵelementEnd()();
76
+ } if (rf & 2) {
77
+ i0.ɵɵadvance(4);
78
+ i0.ɵɵrepeater(ctx.bgs);
79
+ i0.ɵɵadvance(6);
80
+ i0.ɵɵrepeater(ctx.zooms);
81
+ i0.ɵɵadvance(3);
82
+ i0.ɵɵclassProp("tool-btn--active", ctx.canvas.guides());
83
+ i0.ɵɵadvance();
84
+ i0.ɵɵproperty("size", 13);
85
+ i0.ɵɵadvance(2);
86
+ i0.ɵɵclassProp("tool-btn--active", ctx.canvas.rulers());
87
+ i0.ɵɵadvance();
88
+ i0.ɵɵproperty("size", 13);
89
+ } }, dependencies: [PrismIconComponent], styles: [".canvas-toolbar[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 8px 20px;\n border-bottom: 1px solid var(--prism-border);\n background: var(--prism-bg);\n min-height: 44px;\n }\n\n .tool-group[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 1px;\n padding: 2px;\n background: var(--prism-input-bg);\n border: 1px solid var(--prism-border);\n border-radius: var(--radius-md);\n }\n\n .tool-btn[_ngcontent-%COMP%] {\n height: 24px;\n padding: 0 9px;\n border-radius: var(--radius-sm);\n display: flex;\n align-items: center;\n gap: 5px;\n font-size: var(--fs-sm);\n color: var(--prism-text-muted);\n transition: all var(--dur-fast);\n font-weight: 500;\n background: none;\n border: none;\n cursor: pointer;\n font-family: var(--font-sans);\n }\n .tool-btn[_ngcontent-%COMP%]:hover {\n color: var(--prism-text);\n background: color-mix(in srgb, var(--prism-primary) 8%, transparent);\n }\n .tool-btn--active[_ngcontent-%COMP%] {\n color: var(--prism-text);\n background: color-mix(in srgb, var(--prism-primary) 15%, transparent);\n box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--prism-primary) 30%, transparent);\n }\n\n .tool-sep[_ngcontent-%COMP%] {\n width: 1px;\n height: 18px;\n background: var(--prism-border);\n margin: 0 4px;\n }\n\n .tool-label[_ngcontent-%COMP%] {\n font-size: var(--fs-xs);\n color: var(--prism-text-ghost);\n text-transform: uppercase;\n letter-spacing: 0.08em;\n font-weight: 600;\n margin-right: 2px;\n }"], changeDetection: 0 });
90
+ }
91
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PrismCanvasToolbarComponent, [{
92
+ type: Component,
93
+ args: [{ selector: 'prism-canvas-toolbar', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [PrismIconComponent], template: `
94
+ <div class="canvas-toolbar">
95
+ <span class="tool-label">Canvas</span>
96
+ <div class="tool-group">
97
+ @for (bg of bgs; track bg) {
98
+ <button
99
+ class="tool-btn"
100
+ [class.tool-btn--active]="canvas.bg() === bg"
101
+ (click)="canvas.setBg(bg)"
102
+ >
103
+ {{ capitalize(bg) }}
104
+ </button>
105
+ }
106
+ </div>
107
+ <div class="tool-sep"></div>
108
+ <span class="tool-label">Zoom</span>
109
+ <div class="tool-group">
110
+ @for (z of zooms; track z.value) {
111
+ <button
112
+ class="tool-btn"
113
+ [class.tool-btn--active]="canvas.zoom() === z.value"
114
+ (click)="canvas.setZoom(z.value)"
115
+ >
116
+ {{ z.label }}
117
+ </button>
118
+ }
119
+ </div>
120
+ <div class="tool-sep"></div>
121
+ <button
122
+ class="tool-btn"
123
+ [class.tool-btn--active]="canvas.guides()"
124
+ (click)="canvas.toggleGuides()"
125
+ title="Toggle guides"
126
+ aria-label="Toggle guides"
127
+ >
128
+ <prism-icon name="crosshair" [size]="13" />
129
+ Guides
130
+ </button>
131
+ <button
132
+ class="tool-btn"
133
+ [class.tool-btn--active]="canvas.rulers()"
134
+ (click)="canvas.toggleRulers()"
135
+ title="Toggle rulers"
136
+ aria-label="Toggle rulers"
137
+ >
138
+ <prism-icon name="move" [size]="13" />
139
+ Rulers
140
+ </button>
141
+ </div>
142
+ `, styles: ["\n .canvas-toolbar {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 8px 20px;\n border-bottom: 1px solid var(--prism-border);\n background: var(--prism-bg);\n min-height: 44px;\n }\n\n .tool-group {\n display: flex;\n align-items: center;\n gap: 1px;\n padding: 2px;\n background: var(--prism-input-bg);\n border: 1px solid var(--prism-border);\n border-radius: var(--radius-md);\n }\n\n .tool-btn {\n height: 24px;\n padding: 0 9px;\n border-radius: var(--radius-sm);\n display: flex;\n align-items: center;\n gap: 5px;\n font-size: var(--fs-sm);\n color: var(--prism-text-muted);\n transition: all var(--dur-fast);\n font-weight: 500;\n background: none;\n border: none;\n cursor: pointer;\n font-family: var(--font-sans);\n }\n .tool-btn:hover {\n color: var(--prism-text);\n background: color-mix(in srgb, var(--prism-primary) 8%, transparent);\n }\n .tool-btn--active {\n color: var(--prism-text);\n background: color-mix(in srgb, var(--prism-primary) 15%, transparent);\n box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--prism-primary) 30%, transparent);\n }\n\n .tool-sep {\n width: 1px;\n height: 18px;\n background: var(--prism-border);\n margin: 0 4px;\n }\n\n .tool-label {\n font-size: var(--fs-xs);\n color: var(--prism-text-ghost);\n text-transform: uppercase;\n letter-spacing: 0.08em;\n font-weight: 600;\n margin-right: 2px;\n }\n\n "] }]
143
+ }], null, null); })();
144
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismCanvasToolbarComponent, { className: "PrismCanvasToolbarComponent", filePath: "app/canvas/prism-canvas-toolbar.component.ts", lineNumber: 128 }); })();
@@ -0,0 +1,12 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class PrismCodeDrawerComponent {
3
+ private readonly navigationService;
4
+ private readonly rendererService;
5
+ protected readonly collapsed: import("@angular/core").WritableSignal<boolean>;
6
+ protected readonly snippet: import("@angular/core").Signal<string>;
7
+ protected readonly highlighted: import("@angular/core").Signal<string>;
8
+ protected copy(e: MouseEvent): void;
9
+ static ɵfac: i0.ɵɵFactoryDeclaration<PrismCodeDrawerComponent, never>;
10
+ static ɵcmp: i0.ɵɵComponentDeclaration<PrismCodeDrawerComponent, "prism-code-drawer", never, {}, {}, never, never, true, never>;
11
+ }
12
+ //# sourceMappingURL=prism-code-drawer.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prism-code-drawer.component.d.ts","sourceRoot":"","sources":["../../../src/app/canvas/prism-code-drawer.component.ts"],"names":[],"mappings":";AAyCA,qBAuGa,wBAAwB;IACnC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAkC;IACpE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAgC;IAEhE,SAAS,CAAC,QAAQ,CAAC,SAAS,kDAAiB;IAE7C,SAAS,CAAC,QAAQ,CAAC,OAAO,yCAqBvB;IAEH,SAAS,CAAC,QAAQ,CAAC,WAAW,yCAI3B;IAEH,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,GAAG,IAAI;yCAnCxB,wBAAwB;2CAAxB,wBAAwB;CAwCpC"}
@@ -0,0 +1,114 @@
1
+ import { Component, inject, computed, signal, ChangeDetectionStrategy, } from '@angular/core';
2
+ import { PrismIconComponent } from '../icons/prism-icon.component.js';
3
+ import { PrismNavigationService } from '../services/prism-navigation.service.js';
4
+ import { PrismRendererService } from '../services/prism-renderer.service.js';
5
+ import { generateSnippet } from '../renderer/snippet-generator.js';
6
+ import * as i0 from "@angular/core";
7
+ function esc(s) {
8
+ return s.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
9
+ }
10
+ function tokenizeXml(code) {
11
+ const re = /(\/\/[^\n]*)|(<\/?[\w-]+)|(\[[\w.]+\]|[\w-]+)=|"([^"]*)"|(\/>|>)|(\n)|([^<\["\n/>=]+|[/=])/g;
12
+ let out = '';
13
+ let m;
14
+ while ((m = re.exec(code)) !== null) {
15
+ if (m[1] != null) {
16
+ out += `<span class="tok-com">${esc(m[1])}</span>`;
17
+ }
18
+ else if (m[2] != null) {
19
+ out += `<span class="tok-tag">${esc(m[2])}</span>`;
20
+ }
21
+ else if (m[3] != null) {
22
+ out += `<span class="tok-attr">${esc(m[3])}</span>=`;
23
+ }
24
+ else if (m[4] != null) {
25
+ out += `"<span class="tok-str">${esc(m[4])}</span>"`;
26
+ }
27
+ else if (m[5] != null) {
28
+ out += `<span class="tok-tag">${esc(m[5])}</span>`;
29
+ }
30
+ else if (m[6] != null) {
31
+ out += '\n';
32
+ }
33
+ else {
34
+ out += esc(m[0]);
35
+ }
36
+ }
37
+ return out;
38
+ }
39
+ export class PrismCodeDrawerComponent {
40
+ navigationService = inject(PrismNavigationService);
41
+ rendererService = inject(PrismRendererService);
42
+ collapsed = signal(false, ...(ngDevMode ? [{ debugName: "collapsed" }] : []));
43
+ snippet = computed(() => {
44
+ const comp = this.navigationService.activeComponent();
45
+ if (!comp)
46
+ return '';
47
+ const variant = comp.meta.showcaseConfig.variants?.[this.rendererService.activeVariantIndex()];
48
+ const explicitKeys = variant?.inputs
49
+ ? new Set(Object.keys(variant.inputs))
50
+ : undefined;
51
+ const directiveOptions = comp.meta.componentMeta.isDirective
52
+ ? { host: comp.meta.showcaseConfig.host }
53
+ : undefined;
54
+ return generateSnippet(comp.meta.componentMeta.selector, comp.meta.inputs, this.rendererService.inputValues(), explicitKeys, this.rendererService.activeContent(), directiveOptions);
55
+ }, ...(ngDevMode ? [{ debugName: "snippet" }] : []));
56
+ highlighted = computed(() => {
57
+ const code = this.snippet();
58
+ if (!code)
59
+ return '';
60
+ return tokenizeXml(code);
61
+ }, ...(ngDevMode ? [{ debugName: "highlighted" }] : []));
62
+ copy(e) {
63
+ e.stopPropagation();
64
+ const code = this.snippet();
65
+ if (code)
66
+ navigator.clipboard.writeText(code);
67
+ }
68
+ static ɵfac = function PrismCodeDrawerComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || PrismCodeDrawerComponent)(); };
69
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PrismCodeDrawerComponent, selectors: [["prism-code-drawer"]], decls: 11, vars: 6, consts: [[1, "code-drawer"], [1, "code-head", 3, "click"], ["name", "chevron-down", 1, "chev", 3, "size"], ["name", "copy", 3, "size"], [1, "code-head-actions"], ["title", "Copy to clipboard", 1, "mini", 3, "click"], [1, "code-body", 3, "innerHTML"]], template: function PrismCodeDrawerComponent_Template(rf, ctx) { if (rf & 1) {
70
+ i0.ɵɵelementStart(0, "div", 0)(1, "div", 1);
71
+ i0.ɵɵlistener("click", function PrismCodeDrawerComponent_Template_div_click_1_listener() { return ctx.collapsed.update(v => !v); });
72
+ i0.ɵɵelement(2, "prism-icon", 2)(3, "prism-icon", 3);
73
+ i0.ɵɵelementStart(4, "span");
74
+ i0.ɵɵtext(5, "Angular Template");
75
+ i0.ɵɵelementEnd();
76
+ i0.ɵɵelementStart(6, "div", 4)(7, "button", 5);
77
+ i0.ɵɵlistener("click", function PrismCodeDrawerComponent_Template_button_click_7_listener($event) { return ctx.copy($event); });
78
+ i0.ɵɵelement(8, "prism-icon", 3);
79
+ i0.ɵɵtext(9, " Copy ");
80
+ i0.ɵɵelementEnd()()();
81
+ i0.ɵɵelement(10, "pre", 6);
82
+ i0.ɵɵelementEnd();
83
+ } if (rf & 2) {
84
+ i0.ɵɵclassProp("is-collapsed", ctx.collapsed());
85
+ i0.ɵɵadvance(2);
86
+ i0.ɵɵproperty("size", 12);
87
+ i0.ɵɵadvance();
88
+ i0.ɵɵproperty("size", 12);
89
+ i0.ɵɵadvance(5);
90
+ i0.ɵɵproperty("size", 11);
91
+ i0.ɵɵadvance(2);
92
+ i0.ɵɵproperty("innerHTML", ctx.highlighted(), i0.ɵɵsanitizeHtml);
93
+ } }, dependencies: [PrismIconComponent], styles: [".code-drawer[_ngcontent-%COMP%] {\n border-top: 1px solid var(--prism-border);\n background: var(--prism-bg);\n max-height: 260px;\n transition: max-height 0.25s var(--ease-default), opacity var(--dur-base);\n overflow: hidden;\n }\n .code-drawer.is-collapsed[_ngcontent-%COMP%] { max-height: 40px; }\n .code-drawer.is-collapsed[_ngcontent-%COMP%] .code-body[_ngcontent-%COMP%] { opacity: 0; }\n\n .code-head[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n height: 40px;\n padding: 0 20px;\n color: var(--prism-text-muted);\n font-size: var(--fs-sm);\n font-weight: 600;\n letter-spacing: 0.04em;\n cursor: pointer;\n border-bottom: 1px solid var(--prism-border);\n background: linear-gradient(180deg, var(--prism-bg-surface), var(--prism-bg));\n }\n .code-head[_ngcontent-%COMP%] > span[_ngcontent-%COMP%]:first-of-type {\n text-transform: uppercase;\n letter-spacing: 0.08em;\n color: var(--prism-text-2);\n }\n .code-head[_ngcontent-%COMP%] .chev[_ngcontent-%COMP%] {\n transition: transform var(--dur-fast);\n }\n .is-collapsed[_ngcontent-%COMP%] .code-head[_ngcontent-%COMP%] .chev[_ngcontent-%COMP%] {\n transform: rotate(-90deg);\n }\n\n .code-head-actions[_ngcontent-%COMP%] {\n margin-left: auto;\n display: flex;\n gap: 2px;\n }\n .mini[_ngcontent-%COMP%] {\n height: 22px;\n padding: 0 8px;\n font-size: 10.5px;\n border-radius: 4px;\n color: var(--prism-text-ghost);\n display: flex;\n align-items: center;\n gap: 4px;\n background: none;\n border: none;\n cursor: pointer;\n font-family: var(--font-sans);\n }\n .mini[_ngcontent-%COMP%]:hover {\n color: var(--prism-text);\n background: var(--prism-input-bg);\n }\n\n .code-body[_ngcontent-%COMP%] {\n margin: 0;\n padding: 12px 20px 16px;\n font-family: var(--font-mono);\n font-size: var(--fs-md);\n line-height: 1.7;\n color: var(--prism-text-2);\n overflow-x: auto;\n transition: opacity var(--dur-base);\n background: var(--prism-bg);\n white-space: pre;\n }\n .code-body[_ngcontent-%COMP%]::-webkit-scrollbar { height: 6px; }\n .code-body[_ngcontent-%COMP%]::-webkit-scrollbar-thumb { background: var(--prism-border-strong); border-radius: 3px; }\n\n [_nghost-%COMP%] .tok-tag { color: var(--prism-code-tag); }\n [_nghost-%COMP%] .tok-attr { color: var(--prism-code-attr); }\n [_nghost-%COMP%] .tok-str { color: var(--prism-code-str); }\n [_nghost-%COMP%] .tok-com { color: var(--prism-code-com); font-style: italic; }"], changeDetection: 0 });
94
+ }
95
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PrismCodeDrawerComponent, [{
96
+ type: Component,
97
+ args: [{ selector: 'prism-code-drawer', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [PrismIconComponent], template: `
98
+ <div class="code-drawer" [class.is-collapsed]="collapsed()">
99
+ <div class="code-head" (click)="collapsed.update(v => !v)">
100
+ <prism-icon name="chevron-down" [size]="12" class="chev" />
101
+ <prism-icon name="copy" [size]="12" />
102
+ <span>Angular Template</span>
103
+ <div class="code-head-actions">
104
+ <button class="mini" (click)="copy($event)" title="Copy to clipboard">
105
+ <prism-icon name="copy" [size]="11" />
106
+ Copy
107
+ </button>
108
+ </div>
109
+ </div>
110
+ <pre class="code-body" [innerHTML]="highlighted()"></pre>
111
+ </div>
112
+ `, styles: ["\n .code-drawer {\n border-top: 1px solid var(--prism-border);\n background: var(--prism-bg);\n max-height: 260px;\n transition: max-height 0.25s var(--ease-default), opacity var(--dur-base);\n overflow: hidden;\n }\n .code-drawer.is-collapsed { max-height: 40px; }\n .code-drawer.is-collapsed .code-body { opacity: 0; }\n\n .code-head {\n display: flex;\n align-items: center;\n gap: 8px;\n height: 40px;\n padding: 0 20px;\n color: var(--prism-text-muted);\n font-size: var(--fs-sm);\n font-weight: 600;\n letter-spacing: 0.04em;\n cursor: pointer;\n border-bottom: 1px solid var(--prism-border);\n background: linear-gradient(180deg, var(--prism-bg-surface), var(--prism-bg));\n }\n .code-head > span:first-of-type {\n text-transform: uppercase;\n letter-spacing: 0.08em;\n color: var(--prism-text-2);\n }\n .code-head .chev {\n transition: transform var(--dur-fast);\n }\n .is-collapsed .code-head .chev {\n transform: rotate(-90deg);\n }\n\n .code-head-actions {\n margin-left: auto;\n display: flex;\n gap: 2px;\n }\n .mini {\n height: 22px;\n padding: 0 8px;\n font-size: 10.5px;\n border-radius: 4px;\n color: var(--prism-text-ghost);\n display: flex;\n align-items: center;\n gap: 4px;\n background: none;\n border: none;\n cursor: pointer;\n font-family: var(--font-sans);\n }\n .mini:hover {\n color: var(--prism-text);\n background: var(--prism-input-bg);\n }\n\n .code-body {\n margin: 0;\n padding: 12px 20px 16px;\n font-family: var(--font-mono);\n font-size: var(--fs-md);\n line-height: 1.7;\n color: var(--prism-text-2);\n overflow-x: auto;\n transition: opacity var(--dur-base);\n background: var(--prism-bg);\n white-space: pre;\n }\n .code-body::-webkit-scrollbar { height: 6px; }\n .code-body::-webkit-scrollbar-thumb { background: var(--prism-border-strong); border-radius: 3px; }\n\n :host ::ng-deep .tok-tag { color: var(--prism-code-tag); }\n :host ::ng-deep .tok-attr { color: var(--prism-code-attr); }\n :host ::ng-deep .tok-str { color: var(--prism-code-str); }\n :host ::ng-deep .tok-com { color: var(--prism-code-com); font-style: italic; }\n "] }]
113
+ }], null, null); })();
114
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismCodeDrawerComponent, { className: "PrismCodeDrawerComponent", filePath: "app/canvas/prism-code-drawer.component.ts", lineNumber: 145 }); })();
@@ -0,0 +1,15 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class PrismComponentHeadComponent {
3
+ private readonly navigationService;
4
+ private readonly auditService;
5
+ protected readonly comp: import("@angular/core").Signal<import("../../index.js").RuntimeComponent | null>;
6
+ protected readonly category: import("@angular/core").Signal<string>;
7
+ protected readonly variantCount: import("@angular/core").Signal<number>;
8
+ protected readonly coveragePercent: import("@angular/core").Signal<number | null>;
9
+ protected readonly bundleSize: import("@angular/core").Signal<string | null>;
10
+ protected readonly a11yScore: import("@angular/core").Signal<number | null>;
11
+ private readonly componentMeta;
12
+ static ɵfac: i0.ɵɵFactoryDeclaration<PrismComponentHeadComponent, never>;
13
+ static ɵcmp: i0.ɵɵComponentDeclaration<PrismComponentHeadComponent, "prism-component-head", never, {}, {}, never, never, true, never>;
14
+ }
15
+ //# sourceMappingURL=prism-component-head.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prism-component-head.component.d.ts","sourceRoot":"","sources":["../../../src/app/component-head/prism-component-head.component.ts"],"names":[],"mappings":";AAWA,qBAoJa,2BAA2B;IACtC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAkC;IACpE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA4B;IAEzD,SAAS,CAAC,QAAQ,CAAC,IAAI,mFAErB;IAEF,SAAS,CAAC,QAAQ,CAAC,QAAQ,yCAGxB;IAEH,SAAS,CAAC,QAAQ,CAAC,YAAY,yCAG5B;IAEH,SAAS,CAAC,QAAQ,CAAC,eAAe,gDAM/B;IAEH,SAAS,CAAC,QAAQ,CAAC,UAAU,gDAS1B;IAEH,SAAS,CAAC,QAAQ,CAAC,SAAS,gDAEzB;IAEH,OAAO,CAAC,QAAQ,CAAC,aAAa,CAM3B;yCA/CQ,2BAA2B;2CAA3B,2BAA2B;CAgDvC"}