@ng-prism/core 21.10.2 → 21.11.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 (38) hide show
  1. package/dist/app/canvas/prism-canvas-bg-pill.component.d.ts.map +1 -1
  2. package/dist/app/canvas/prism-canvas-bg-pill.component.js +3 -3
  3. package/dist/app/canvas/prism-canvas-rulers.component.d.ts +1 -0
  4. package/dist/app/canvas/prism-canvas-rulers.component.d.ts.map +1 -1
  5. package/dist/app/canvas/prism-canvas-rulers.component.js +4 -1
  6. package/dist/app/component-head/prism-component-head.component.d.ts +8 -0
  7. package/dist/app/component-head/prism-component-head.component.d.ts.map +1 -1
  8. package/dist/app/component-head/prism-component-head.component.js +119 -49
  9. package/dist/app/icons/prism-icon.component.d.ts.map +1 -1
  10. package/dist/app/icons/prism-icon.component.js +2 -1
  11. package/dist/app/panels/controls/prism-controls-panel.component.d.ts.map +1 -1
  12. package/dist/app/panels/controls/prism-controls-panel.component.js +99 -60
  13. package/dist/app/renderer/prism-renderer.component.d.ts.map +1 -1
  14. package/dist/app/renderer/prism-renderer.component.js +10 -6
  15. package/dist/app/services/prism-renderer.service.d.ts +9 -0
  16. package/dist/app/services/prism-renderer.service.d.ts.map +1 -1
  17. package/dist/app/services/prism-renderer.service.js +81 -30
  18. package/dist/app/sidebar/prism-sidebar.component.d.ts +3 -0
  19. package/dist/app/sidebar/prism-sidebar.component.d.ts.map +1 -1
  20. package/dist/app/sidebar/prism-sidebar.component.js +38 -8
  21. package/dist/builder/scanner/component.scanner.d.ts.map +1 -1
  22. package/dist/builder/scanner/component.scanner.js +19 -0
  23. package/dist/builder/scanner/entry-point.scanner.d.ts +15 -4
  24. package/dist/builder/scanner/entry-point.scanner.d.ts.map +1 -1
  25. package/dist/builder/scanner/entry-point.scanner.js +26 -13
  26. package/dist/builder/scanner/index.d.ts +2 -2
  27. package/dist/builder/scanner/index.d.ts.map +1 -1
  28. package/dist/builder/scanner/scanner.d.ts +15 -6
  29. package/dist/builder/scanner/scanner.d.ts.map +1 -1
  30. package/dist/builder/scanner/scanner.js +44 -7
  31. package/dist/builder/shared/prism-pipeline.d.ts +3 -1
  32. package/dist/builder/shared/prism-pipeline.d.ts.map +1 -1
  33. package/dist/builder/shared/prism-pipeline.js +31 -26
  34. package/dist/decorator/index.d.ts +1 -1
  35. package/dist/decorator/index.d.ts.map +1 -1
  36. package/dist/decorator/showcase.types.d.ts +8 -0
  37. package/dist/decorator/showcase.types.d.ts.map +1 -1
  38. package/package.json +1 -1
@@ -12,110 +12,133 @@ import * as i0 from "@angular/core";
12
12
  const _c0 = (a0, a1) => ({ inputMeta: a0, rendererService: a1 });
13
13
  const _c1 = () => [];
14
14
  const _forTrack0 = ($index, $item) => $item.name;
15
- function PrismControlsPanelComponent_Conditional_0_For_2_Conditional_1_Template(rf, ctx) { if (rf & 1) {
16
- i0.ɵɵelementContainer(0, 3);
15
+ function PrismControlsPanelComponent_Conditional_0_Conditional_1_Template(rf, ctx) { if (rf & 1) {
16
+ const _r1 = i0.ɵɵgetCurrentView();
17
+ i0.ɵɵelementStart(0, "div", 1)(1, "span", 4);
18
+ i0.ɵɵelement(2, "span", 5);
19
+ i0.ɵɵtext(3);
20
+ i0.ɵɵelementEnd();
21
+ i0.ɵɵelementStart(4, "button", 6);
22
+ i0.ɵɵlistener("click", function PrismControlsPanelComponent_Conditional_0_Conditional_1_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.rendererService.resetInputsToVariantDefaults()); });
23
+ i0.ɵɵelementStart(5, "span", 7);
24
+ i0.ɵɵtext(6, "\u21BB");
25
+ i0.ɵɵelementEnd();
26
+ i0.ɵɵtext(7, " Reset ");
27
+ i0.ɵɵelementEnd()();
17
28
  } if (rf & 2) {
18
- const input_r1 = i0.ɵɵnextContext().$implicit;
29
+ const dirtyCount_r3 = ctx;
30
+ i0.ɵɵadvance(3);
31
+ i0.ɵɵtextInterpolate2(" ", dirtyCount_r3, " ", dirtyCount_r3 === 1 ? "input" : "inputs", " modified ");
32
+ } }
33
+ function PrismControlsPanelComponent_Conditional_0_For_3_Conditional_1_Template(rf, ctx) { if (rf & 1) {
34
+ i0.ɵɵelementContainer(0, 8);
35
+ } if (rf & 2) {
36
+ const input_r4 = i0.ɵɵnextContext().$implicit;
19
37
  const ctx_r1 = i0.ɵɵnextContext(2);
20
- i0.ɵɵproperty("ngComponentOutlet", ctx.component)("ngComponentOutletInputs", i0.ɵɵpureFunction2(2, _c0, input_r1, ctx_r1.rendererService));
38
+ i0.ɵɵproperty("ngComponentOutlet", ctx.component)("ngComponentOutletInputs", i0.ɵɵpureFunction2(2, _c0, input_r4, ctx_r1.rendererService));
21
39
  } }
22
- function PrismControlsPanelComponent_Conditional_0_For_2_Conditional_2_Case_7_Template(rf, ctx) { if (rf & 1) {
23
- const _r3 = i0.ɵɵgetCurrentView();
24
- i0.ɵɵelementStart(0, "prism-boolean-control", 10);
25
- i0.ɵɵlistener("valueChange", function PrismControlsPanelComponent_Conditional_0_For_2_Conditional_2_Case_7_Template_prism_boolean_control_valueChange_0_listener($event) { i0.ɵɵrestoreView(_r3); const input_r1 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.rendererService.updateInput(input_r1.name, $event)); });
40
+ function PrismControlsPanelComponent_Conditional_0_For_3_Conditional_2_Case_7_Template(rf, ctx) { if (rf & 1) {
41
+ const _r5 = i0.ɵɵgetCurrentView();
42
+ i0.ɵɵelementStart(0, "prism-boolean-control", 15);
43
+ i0.ɵɵlistener("valueChange", function PrismControlsPanelComponent_Conditional_0_For_3_Conditional_2_Case_7_Template_prism_boolean_control_valueChange_0_listener($event) { i0.ɵɵrestoreView(_r5); const input_r4 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.rendererService.updateInput(input_r4.name, $event)); });
26
44
  i0.ɵɵelementEnd();
27
45
  } if (rf & 2) {
28
- const input_r1 = i0.ɵɵnextContext(2).$implicit;
46
+ const input_r4 = i0.ɵɵnextContext(2).$implicit;
29
47
  const ctx_r1 = i0.ɵɵnextContext(2);
30
- i0.ɵɵproperty("value", ctx_r1.asBoolean(ctx_r1.rendererService.inputValues()[input_r1.name]));
48
+ i0.ɵɵproperty("value", ctx_r1.asBoolean(ctx_r1.rendererService.inputValues()[input_r4.name]));
31
49
  } }
32
- function PrismControlsPanelComponent_Conditional_0_For_2_Conditional_2_Case_8_Template(rf, ctx) { if (rf & 1) {
33
- const _r4 = i0.ɵɵgetCurrentView();
34
- i0.ɵɵelementStart(0, "prism-number-control", 10);
35
- i0.ɵɵlistener("valueChange", function PrismControlsPanelComponent_Conditional_0_For_2_Conditional_2_Case_8_Template_prism_number_control_valueChange_0_listener($event) { i0.ɵɵrestoreView(_r4); const input_r1 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.rendererService.updateInput(input_r1.name, $event)); });
50
+ function PrismControlsPanelComponent_Conditional_0_For_3_Conditional_2_Case_8_Template(rf, ctx) { if (rf & 1) {
51
+ const _r6 = i0.ɵɵgetCurrentView();
52
+ i0.ɵɵelementStart(0, "prism-number-control", 15);
53
+ i0.ɵɵlistener("valueChange", function PrismControlsPanelComponent_Conditional_0_For_3_Conditional_2_Case_8_Template_prism_number_control_valueChange_0_listener($event) { i0.ɵɵrestoreView(_r6); const input_r4 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.rendererService.updateInput(input_r4.name, $event)); });
36
54
  i0.ɵɵelementEnd();
37
55
  } if (rf & 2) {
38
- const input_r1 = i0.ɵɵnextContext(2).$implicit;
56
+ const input_r4 = i0.ɵɵnextContext(2).$implicit;
39
57
  const ctx_r1 = i0.ɵɵnextContext(2);
40
- i0.ɵɵproperty("value", ctx_r1.asNumber(ctx_r1.rendererService.inputValues()[input_r1.name]));
58
+ i0.ɵɵproperty("value", ctx_r1.asNumber(ctx_r1.rendererService.inputValues()[input_r4.name]));
41
59
  } }
42
- function PrismControlsPanelComponent_Conditional_0_For_2_Conditional_2_Case_9_Template(rf, ctx) { if (rf & 1) {
43
- const _r5 = i0.ɵɵgetCurrentView();
44
- i0.ɵɵelementStart(0, "prism-union-control", 11);
45
- i0.ɵɵlistener("valueChange", function PrismControlsPanelComponent_Conditional_0_For_2_Conditional_2_Case_9_Template_prism_union_control_valueChange_0_listener($event) { i0.ɵɵrestoreView(_r5); const input_r1 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.rendererService.updateInput(input_r1.name, $event)); });
60
+ function PrismControlsPanelComponent_Conditional_0_For_3_Conditional_2_Case_9_Template(rf, ctx) { if (rf & 1) {
61
+ const _r7 = i0.ɵɵgetCurrentView();
62
+ i0.ɵɵelementStart(0, "prism-union-control", 16);
63
+ i0.ɵɵlistener("valueChange", function PrismControlsPanelComponent_Conditional_0_For_3_Conditional_2_Case_9_Template_prism_union_control_valueChange_0_listener($event) { i0.ɵɵrestoreView(_r7); const input_r4 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.rendererService.updateInput(input_r4.name, $event)); });
46
64
  i0.ɵɵelementEnd();
47
65
  } if (rf & 2) {
48
- const input_r1 = i0.ɵɵnextContext(2).$implicit;
66
+ const input_r4 = i0.ɵɵnextContext(2).$implicit;
49
67
  const ctx_r1 = i0.ɵɵnextContext(2);
50
- i0.ɵɵproperty("value", ctx_r1.asString(ctx_r1.rendererService.inputValues()[input_r1.name]))("options", input_r1.values ?? i0.ɵɵpureFunction0(2, _c1));
68
+ i0.ɵɵproperty("value", ctx_r1.asString(ctx_r1.rendererService.inputValues()[input_r4.name]))("options", input_r4.values ?? i0.ɵɵpureFunction0(2, _c1));
51
69
  } }
52
- function PrismControlsPanelComponent_Conditional_0_For_2_Conditional_2_Case_10_Template(rf, ctx) { if (rf & 1) {
53
- const _r6 = i0.ɵɵgetCurrentView();
54
- i0.ɵɵelementStart(0, "prism-string-control", 10);
55
- i0.ɵɵlistener("valueChange", function PrismControlsPanelComponent_Conditional_0_For_2_Conditional_2_Case_10_Template_prism_string_control_valueChange_0_listener($event) { i0.ɵɵrestoreView(_r6); const input_r1 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.rendererService.updateInput(input_r1.name, $event)); });
70
+ function PrismControlsPanelComponent_Conditional_0_For_3_Conditional_2_Case_10_Template(rf, ctx) { if (rf & 1) {
71
+ const _r8 = i0.ɵɵgetCurrentView();
72
+ i0.ɵɵelementStart(0, "prism-string-control", 15);
73
+ i0.ɵɵlistener("valueChange", function PrismControlsPanelComponent_Conditional_0_For_3_Conditional_2_Case_10_Template_prism_string_control_valueChange_0_listener($event) { i0.ɵɵrestoreView(_r8); const input_r4 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.rendererService.updateInput(input_r4.name, $event)); });
56
74
  i0.ɵɵelementEnd();
57
75
  } if (rf & 2) {
58
- const input_r1 = i0.ɵɵnextContext(2).$implicit;
76
+ const input_r4 = i0.ɵɵnextContext(2).$implicit;
59
77
  const ctx_r1 = i0.ɵɵnextContext(2);
60
- i0.ɵɵproperty("value", ctx_r1.asString(ctx_r1.rendererService.inputValues()[input_r1.name]));
78
+ i0.ɵɵproperty("value", ctx_r1.asString(ctx_r1.rendererService.inputValues()[input_r4.name]));
61
79
  } }
62
- function PrismControlsPanelComponent_Conditional_0_For_2_Conditional_2_Case_11_Template(rf, ctx) { if (rf & 1) {
63
- const _r7 = i0.ɵɵgetCurrentView();
64
- i0.ɵɵelementStart(0, "prism-json-control", 10);
65
- i0.ɵɵlistener("valueChange", function PrismControlsPanelComponent_Conditional_0_For_2_Conditional_2_Case_11_Template_prism_json_control_valueChange_0_listener($event) { i0.ɵɵrestoreView(_r7); const input_r1 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.rendererService.updateInput(input_r1.name, $event)); });
80
+ function PrismControlsPanelComponent_Conditional_0_For_3_Conditional_2_Case_11_Template(rf, ctx) { if (rf & 1) {
81
+ const _r9 = i0.ɵɵgetCurrentView();
82
+ i0.ɵɵelementStart(0, "prism-json-control", 15);
83
+ i0.ɵɵlistener("valueChange", function PrismControlsPanelComponent_Conditional_0_For_3_Conditional_2_Case_11_Template_prism_json_control_valueChange_0_listener($event) { i0.ɵɵrestoreView(_r9); const input_r4 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.rendererService.updateInput(input_r4.name, $event)); });
66
84
  i0.ɵɵelementEnd();
67
85
  } if (rf & 2) {
68
- const input_r1 = i0.ɵɵnextContext(2).$implicit;
86
+ const input_r4 = i0.ɵɵnextContext(2).$implicit;
69
87
  const ctx_r1 = i0.ɵɵnextContext(2);
70
- i0.ɵɵproperty("value", ctx_r1.rendererService.inputValues()[input_r1.name]);
88
+ i0.ɵɵproperty("value", ctx_r1.rendererService.inputValues()[input_r4.name]);
71
89
  } }
72
- function PrismControlsPanelComponent_Conditional_0_For_2_Conditional_2_Template(rf, ctx) { if (rf & 1) {
73
- i0.ɵɵelementStart(0, "div", 4)(1, "span", 5);
90
+ function PrismControlsPanelComponent_Conditional_0_For_3_Conditional_2_Template(rf, ctx) { if (rf & 1) {
91
+ i0.ɵɵelementStart(0, "div", 9)(1, "span", 10);
74
92
  i0.ɵɵtext(2);
75
93
  i0.ɵɵelementEnd();
76
- i0.ɵɵelementStart(3, "span", 6)(4, "b");
94
+ i0.ɵɵelementStart(3, "span", 11)(4, "b");
77
95
  i0.ɵɵtext(5);
78
96
  i0.ɵɵelementEnd()()();
79
- i0.ɵɵelementStart(6, "div", 7);
80
- i0.ɵɵconditionalCreate(7, PrismControlsPanelComponent_Conditional_0_For_2_Conditional_2_Case_7_Template, 1, 1, "prism-boolean-control", 8)(8, PrismControlsPanelComponent_Conditional_0_For_2_Conditional_2_Case_8_Template, 1, 1, "prism-number-control", 8)(9, PrismControlsPanelComponent_Conditional_0_For_2_Conditional_2_Case_9_Template, 1, 3, "prism-union-control", 9)(10, PrismControlsPanelComponent_Conditional_0_For_2_Conditional_2_Case_10_Template, 1, 1, "prism-string-control", 8)(11, PrismControlsPanelComponent_Conditional_0_For_2_Conditional_2_Case_11_Template, 1, 1, "prism-json-control", 8);
97
+ i0.ɵɵelementStart(6, "div", 12);
98
+ i0.ɵɵconditionalCreate(7, PrismControlsPanelComponent_Conditional_0_For_3_Conditional_2_Case_7_Template, 1, 1, "prism-boolean-control", 13)(8, PrismControlsPanelComponent_Conditional_0_For_3_Conditional_2_Case_8_Template, 1, 1, "prism-number-control", 13)(9, PrismControlsPanelComponent_Conditional_0_For_3_Conditional_2_Case_9_Template, 1, 3, "prism-union-control", 14)(10, PrismControlsPanelComponent_Conditional_0_For_3_Conditional_2_Case_10_Template, 1, 1, "prism-string-control", 13)(11, PrismControlsPanelComponent_Conditional_0_For_3_Conditional_2_Case_11_Template, 1, 1, "prism-json-control", 13);
81
99
  i0.ɵɵelementEnd();
82
100
  } if (rf & 2) {
83
101
  let tmp_15_0;
84
- const input_r1 = i0.ɵɵnextContext().$implicit;
102
+ const input_r4 = i0.ɵɵnextContext().$implicit;
85
103
  i0.ɵɵadvance(2);
86
- i0.ɵɵtextInterpolate(input_r1.name);
104
+ i0.ɵɵtextInterpolate(input_r4.name);
87
105
  i0.ɵɵadvance(3);
88
- i0.ɵɵtextInterpolate(input_r1.rawType ?? input_r1.type);
106
+ i0.ɵɵtextInterpolate(input_r4.rawType ?? input_r4.type);
89
107
  i0.ɵɵadvance(2);
90
- i0.ɵɵconditional((tmp_15_0 = input_r1.type) === "boolean" ? 7 : tmp_15_0 === "number" ? 8 : tmp_15_0 === "union" ? 9 : tmp_15_0 === "string" ? 10 : 11);
108
+ i0.ɵɵconditional((tmp_15_0 = input_r4.type) === "boolean" ? 7 : tmp_15_0 === "number" ? 8 : tmp_15_0 === "union" ? 9 : tmp_15_0 === "string" ? 10 : 11);
91
109
  } }
92
- function PrismControlsPanelComponent_Conditional_0_For_2_Template(rf, ctx) { if (rf & 1) {
93
- i0.ɵɵelementStart(0, "div", 1);
94
- i0.ɵɵconditionalCreate(1, PrismControlsPanelComponent_Conditional_0_For_2_Conditional_1_Template, 1, 5, "ng-container", 3)(2, PrismControlsPanelComponent_Conditional_0_For_2_Conditional_2_Template, 12, 3);
110
+ function PrismControlsPanelComponent_Conditional_0_For_3_Template(rf, ctx) { if (rf & 1) {
111
+ i0.ɵɵelementStart(0, "div", 2);
112
+ i0.ɵɵconditionalCreate(1, PrismControlsPanelComponent_Conditional_0_For_3_Conditional_1_Template, 1, 5, "ng-container", 8)(2, PrismControlsPanelComponent_Conditional_0_For_3_Conditional_2_Template, 12, 3);
95
113
  i0.ɵɵelementEnd();
96
114
  } if (rf & 2) {
97
115
  let tmp_12_0;
98
- const input_r1 = ctx.$implicit;
116
+ const input_r4 = ctx.$implicit;
99
117
  const ctx_r1 = i0.ɵɵnextContext(2);
100
118
  i0.ɵɵadvance();
101
- i0.ɵɵconditional((tmp_12_0 = ctx_r1.getCustomControl(input_r1)) ? 1 : 2, tmp_12_0);
119
+ i0.ɵɵconditional((tmp_12_0 = ctx_r1.getCustomControl(input_r4)) ? 1 : 2, tmp_12_0);
102
120
  } }
103
- function PrismControlsPanelComponent_Conditional_0_Conditional_3_Template(rf, ctx) { if (rf & 1) {
104
- i0.ɵɵelementStart(0, "p", 2);
121
+ function PrismControlsPanelComponent_Conditional_0_Conditional_4_Template(rf, ctx) { if (rf & 1) {
122
+ i0.ɵɵelementStart(0, "p", 3);
105
123
  i0.ɵɵtext(1, "No inputs available");
106
124
  i0.ɵɵelementEnd();
107
125
  } }
108
126
  function PrismControlsPanelComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
109
127
  i0.ɵɵelementStart(0, "div", 0);
110
- i0.ɵɵrepeaterCreate(1, PrismControlsPanelComponent_Conditional_0_For_2_Template, 3, 1, "div", 1, _forTrack0);
111
- i0.ɵɵconditionalCreate(3, PrismControlsPanelComponent_Conditional_0_Conditional_3_Template, 2, 0, "p", 2);
128
+ i0.ɵɵconditionalCreate(1, PrismControlsPanelComponent_Conditional_0_Conditional_1_Template, 8, 2, "div", 1);
129
+ i0.ɵɵrepeaterCreate(2, PrismControlsPanelComponent_Conditional_0_For_3_Template, 3, 1, "div", 2, _forTrack0);
130
+ i0.ɵɵconditionalCreate(4, PrismControlsPanelComponent_Conditional_0_Conditional_4_Template, 2, 0, "p", 3);
112
131
  i0.ɵɵelementEnd();
113
132
  } if (rf & 2) {
114
- const comp_r8 = ctx;
133
+ let tmp_2_0;
134
+ const comp_r10 = ctx;
135
+ const ctx_r1 = i0.ɵɵnextContext();
115
136
  i0.ɵɵadvance();
116
- i0.ɵɵrepeater(comp_r8.meta.inputs);
137
+ i0.ɵɵconditional((tmp_2_0 = ctx_r1.rendererService.dirtyInputCount()) ? 1 : -1, tmp_2_0);
138
+ i0.ɵɵadvance();
139
+ i0.ɵɵrepeater(comp_r10.meta.inputs);
117
140
  i0.ɵɵadvance(2);
118
- i0.ɵɵconditional(comp_r8.meta.inputs.length === 0 ? 3 : -1);
141
+ i0.ɵɵconditional(comp_r10.meta.inputs.length === 0 ? 4 : -1);
119
142
  } }
120
143
  export class PrismControlsPanelComponent {
121
144
  navigationService = inject(PrismNavigationService);
@@ -136,8 +159,8 @@ export class PrismControlsPanelComponent {
136
159
  return String(val ?? '');
137
160
  }
138
161
  static ɵfac = function PrismControlsPanelComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || PrismControlsPanelComponent)(); };
139
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PrismControlsPanelComponent, selectors: [["prism-controls-panel"]], inputs: { activeComponent: [1, "activeComponent"] }, decls: 1, vars: 1, consts: [[1, "ctl-panel"], [1, "ctl-row"], [1, "ctl-empty"], [3, "ngComponentOutlet", "ngComponentOutletInputs"], [1, "ctl-label"], [1, "ctl-name"], [1, "ctl-type"], [1, "ctl-input"], [3, "value"], [3, "value", "options"], [3, "valueChange", "value"], [3, "valueChange", "value", "options"]], template: function PrismControlsPanelComponent_Template(rf, ctx) { if (rf & 1) {
140
- i0.ɵɵconditionalCreate(0, PrismControlsPanelComponent_Conditional_0_Template, 4, 1, "div", 0);
162
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PrismControlsPanelComponent, selectors: [["prism-controls-panel"]], inputs: { activeComponent: [1, "activeComponent"] }, decls: 1, vars: 1, consts: [[1, "ctl-panel"], [1, "ctl-toolbar"], [1, "ctl-row"], [1, "ctl-empty"], [1, "ctl-dirty-info"], ["aria-hidden", "true", 1, "ctl-dirty-dot"], ["type", "button", "title", "Reset all inputs to variant defaults", 1, "ctl-reset-btn", 3, "click"], ["aria-hidden", "true"], [3, "ngComponentOutlet", "ngComponentOutletInputs"], [1, "ctl-label"], [1, "ctl-name"], [1, "ctl-type"], [1, "ctl-input"], [3, "value"], [3, "value", "options"], [3, "valueChange", "value"], [3, "valueChange", "value", "options"]], template: function PrismControlsPanelComponent_Template(rf, ctx) { if (rf & 1) {
163
+ i0.ɵɵconditionalCreate(0, PrismControlsPanelComponent_Conditional_0_Template, 5, 2, "div", 0);
141
164
  } if (rf & 2) {
142
165
  let tmp_0_0;
143
166
  i0.ɵɵconditional((tmp_0_0 = ctx.navigationService.activeComponent()) ? 0 : -1, tmp_0_0);
@@ -146,7 +169,7 @@ export class PrismControlsPanelComponent {
146
169
  StringControlComponent,
147
170
  NumberControlComponent,
148
171
  UnionControlComponent,
149
- JsonControlComponent], styles: [".ctl-panel[_ngcontent-%COMP%] {\n overflow-y: auto;\n height: 100%;\n }\n\n .ctl-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 180px 1fr;\n align-items: center;\n gap: 12px;\n padding: 8px 20px;\n min-height: 40px;\n border-bottom: 1px solid var(--prism-border);\n }\n .ctl-row[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--prism-primary) 3%, transparent);\n }\n\n .ctl-label[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 2px;\n }\n .ctl-name[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--prism-text);\n font-weight: 500;\n }\n .ctl-type[_ngcontent-%COMP%] {\n font-family: var(--font-mono);\n font-size: 10.5px;\n color: var(--prism-text-ghost);\n }\n .ctl-type[_ngcontent-%COMP%] b[_ngcontent-%COMP%] {\n color: var(--prism-primary);\n font-weight: 500;\n }\n\n .ctl-input[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n min-width: 0;\n }\n\n .ctl-empty[_ngcontent-%COMP%] {\n color: var(--prism-text-ghost);\n font-size: 13px;\n margin: 0;\n padding: 16px 20px;\n }"], changeDetection: 0 });
172
+ JsonControlComponent], styles: [".ctl-panel[_ngcontent-%COMP%] {\n overflow-y: auto;\n height: 100%;\n }\n\n .ctl-toolbar[_ngcontent-%COMP%] {\n position: sticky;\n top: 0;\n z-index: 2;\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8px 20px;\n background: var(--prism-bg-elevated);\n border-bottom: 1px solid var(--prism-border);\n }\n .ctl-dirty-info[_ngcontent-%COMP%] {\n font-size: 11.5px;\n font-family: var(--font-mono);\n color: var(--prism-text-muted);\n display: inline-flex;\n align-items: center;\n gap: 6px;\n }\n .ctl-dirty-dot[_ngcontent-%COMP%] {\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background: var(--prism-primary);\n box-shadow: 0 0 6px color-mix(in srgb, var(--prism-primary) 60%, transparent);\n }\n .ctl-reset-btn[_ngcontent-%COMP%] {\n height: 24px;\n padding: 0 10px;\n border-radius: 5px;\n font-size: 11.5px;\n font-weight: 500;\n font-family: var(--font-sans);\n color: var(--prism-text-muted);\n background: transparent;\n border: 1px solid var(--prism-border);\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n gap: 5px;\n transition: color var(--dur-fast), background var(--dur-fast), border-color var(--dur-fast);\n }\n .ctl-reset-btn[_ngcontent-%COMP%]:hover {\n color: var(--prism-text);\n border-color: color-mix(in srgb, var(--prism-primary) 40%, var(--prism-border));\n background: color-mix(in srgb, var(--prism-primary) 8%, transparent);\n }\n .ctl-reset-btn[_ngcontent-%COMP%]:focus-visible {\n outline: 2px solid var(--prism-primary);\n outline-offset: 1px;\n }\n\n .ctl-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 180px 1fr;\n align-items: center;\n gap: 12px;\n padding: 8px 20px;\n min-height: 40px;\n border-bottom: 1px solid var(--prism-border);\n }\n .ctl-row[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--prism-primary) 3%, transparent);\n }\n\n .ctl-label[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 2px;\n }\n .ctl-name[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--prism-text);\n font-weight: 500;\n }\n .ctl-type[_ngcontent-%COMP%] {\n font-family: var(--font-mono);\n font-size: 10.5px;\n color: var(--prism-text-ghost);\n }\n .ctl-type[_ngcontent-%COMP%] b[_ngcontent-%COMP%] {\n color: var(--prism-primary);\n font-weight: 500;\n }\n\n .ctl-input[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n min-width: 0;\n }\n\n .ctl-empty[_ngcontent-%COMP%] {\n color: var(--prism-text-ghost);\n font-size: 13px;\n margin: 0;\n padding: 16px 20px;\n }"], changeDetection: 0 });
150
173
  }
151
174
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PrismControlsPanelComponent, [{
152
175
  type: Component,
@@ -160,6 +183,22 @@ export class PrismControlsPanelComponent {
160
183
  ], template: `
161
184
  @if (navigationService.activeComponent(); as comp) {
162
185
  <div class="ctl-panel">
186
+ @if (rendererService.dirtyInputCount(); as dirtyCount) {
187
+ <div class="ctl-toolbar">
188
+ <span class="ctl-dirty-info">
189
+ <span class="ctl-dirty-dot" aria-hidden="true"></span>
190
+ {{ dirtyCount }} {{ dirtyCount === 1 ? 'input' : 'inputs' }} modified
191
+ </span>
192
+ <button
193
+ type="button"
194
+ class="ctl-reset-btn"
195
+ (click)="rendererService.resetInputsToVariantDefaults()"
196
+ title="Reset all inputs to variant defaults"
197
+ >
198
+ <span aria-hidden="true">&#x21BB;</span> Reset
199
+ </button>
200
+ </div>
201
+ }
163
202
  @for (input of comp.meta.inputs; track input.name) {
164
203
  <div class="ctl-row">
165
204
  @if (getCustomControl(input); as customCtrl) {
@@ -213,6 +252,6 @@ export class PrismControlsPanelComponent {
213
252
  }
214
253
  </div>
215
254
  }
216
- `, styles: ["\n .ctl-panel {\n overflow-y: auto;\n height: 100%;\n }\n\n .ctl-row {\n display: grid;\n grid-template-columns: 180px 1fr;\n align-items: center;\n gap: 12px;\n padding: 8px 20px;\n min-height: 40px;\n border-bottom: 1px solid var(--prism-border);\n }\n .ctl-row:hover {\n background: color-mix(in srgb, var(--prism-primary) 3%, transparent);\n }\n\n .ctl-label {\n display: flex;\n flex-direction: column;\n gap: 2px;\n }\n .ctl-name {\n font-size: 13px;\n color: var(--prism-text);\n font-weight: 500;\n }\n .ctl-type {\n font-family: var(--font-mono);\n font-size: 10.5px;\n color: var(--prism-text-ghost);\n }\n .ctl-type b {\n color: var(--prism-primary);\n font-weight: 500;\n }\n\n .ctl-input {\n display: flex;\n align-items: center;\n gap: 6px;\n min-width: 0;\n }\n\n .ctl-empty {\n color: var(--prism-text-ghost);\n font-size: 13px;\n margin: 0;\n padding: 16px 20px;\n }\n "] }]
255
+ `, styles: ["\n .ctl-panel {\n overflow-y: auto;\n height: 100%;\n }\n\n .ctl-toolbar {\n position: sticky;\n top: 0;\n z-index: 2;\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8px 20px;\n background: var(--prism-bg-elevated);\n border-bottom: 1px solid var(--prism-border);\n }\n .ctl-dirty-info {\n font-size: 11.5px;\n font-family: var(--font-mono);\n color: var(--prism-text-muted);\n display: inline-flex;\n align-items: center;\n gap: 6px;\n }\n .ctl-dirty-dot {\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background: var(--prism-primary);\n box-shadow: 0 0 6px color-mix(in srgb, var(--prism-primary) 60%, transparent);\n }\n .ctl-reset-btn {\n height: 24px;\n padding: 0 10px;\n border-radius: 5px;\n font-size: 11.5px;\n font-weight: 500;\n font-family: var(--font-sans);\n color: var(--prism-text-muted);\n background: transparent;\n border: 1px solid var(--prism-border);\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n gap: 5px;\n transition: color var(--dur-fast), background var(--dur-fast), border-color var(--dur-fast);\n }\n .ctl-reset-btn:hover {\n color: var(--prism-text);\n border-color: color-mix(in srgb, var(--prism-primary) 40%, var(--prism-border));\n background: color-mix(in srgb, var(--prism-primary) 8%, transparent);\n }\n .ctl-reset-btn:focus-visible {\n outline: 2px solid var(--prism-primary);\n outline-offset: 1px;\n }\n\n .ctl-row {\n display: grid;\n grid-template-columns: 180px 1fr;\n align-items: center;\n gap: 12px;\n padding: 8px 20px;\n min-height: 40px;\n border-bottom: 1px solid var(--prism-border);\n }\n .ctl-row:hover {\n background: color-mix(in srgb, var(--prism-primary) 3%, transparent);\n }\n\n .ctl-label {\n display: flex;\n flex-direction: column;\n gap: 2px;\n }\n .ctl-name {\n font-size: 13px;\n color: var(--prism-text);\n font-weight: 500;\n }\n .ctl-type {\n font-family: var(--font-mono);\n font-size: 10.5px;\n color: var(--prism-text-ghost);\n }\n .ctl-type b {\n color: var(--prism-primary);\n font-weight: 500;\n }\n\n .ctl-input {\n display: flex;\n align-items: center;\n gap: 6px;\n min-width: 0;\n }\n\n .ctl-empty {\n color: var(--prism-text-ghost);\n font-size: 13px;\n margin: 0;\n padding: 16px 20px;\n }\n "] }]
217
256
  }], null, { activeComponent: [{ type: i0.Input, args: [{ isSignal: true, alias: "activeComponent", required: false }] }] }); })();
218
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismControlsPanelComponent, { className: "PrismControlsPanelComponent", filePath: "app/panels/controls/prism-controls-panel.component.ts", lineNumber: 140 }); })();
257
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismControlsPanelComponent, { className: "PrismControlsPanelComponent", filePath: "app/panels/controls/prism-controls-panel.component.ts", lineNumber: 208 }); })();
@@ -1 +1 @@
1
- {"version":3,"file":"prism-renderer.component.d.ts","sourceRoot":"","sources":["../../../src/app/renderer/prism-renderer.component.ts"],"names":[],"mappings":"AAAA,OAAO,EASL,QAAQ,EAER,KAAK,IAAI,EAIV,MAAM,eAAe,CAAC;AAYvB,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AAGjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;;AAIhF,qBA8Ha,sBAAsB;IACjC,SAAS,CAAC,QAAQ,CAAC,IAAI,OAAQ;IAC/B,SAAS,CAAC,QAAQ,CAAC,iBAAiB,yBAAkC;IACtE,SAAS,CAAC,QAAQ,CAAC,eAAe,uBAAgC;IAClE,SAAS,CAAC,QAAQ,CAAC,aAAa,qBAA8B;IAC9D,SAAS,CAAC,QAAQ,CAAC,SAAS,wBAAiC;IAC7D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAgC;IAChE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAgC;IAChE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoB;IAC7C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAsB;IACjD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAmC;IACxD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAE3B;IAEH,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA6B;IAC1D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA8B;IAE5D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAEpB;IACH,OAAO,CAAC,YAAY,CAAsC;IAC1D,OAAO,CAAC,mBAAmB,CAAsC;IACjE,OAAO,CAAC,oBAAoB,CAChB;IACZ,OAAO,CAAC,YAAY,CAAS;IAE7B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAoC;IACjE,QAAQ,CAAC,aAAa,+DAAsC;IAC5D,SAAS,CAAC,QAAQ,CAAC,aAAa;;MAA6C;IAC7E,SAAS,CAAC,QAAQ,CAAC,eAAe,yFAG/B;;IA0FH,OAAO,CAAC,eAAe;IA6FvB,OAAO,CAAC,OAAO;yCAxNJ,sBAAsB;2CAAtB,sBAAsB;CAsOlC"}
1
+ {"version":3,"file":"prism-renderer.component.d.ts","sourceRoot":"","sources":["../../../src/app/renderer/prism-renderer.component.ts"],"names":[],"mappings":"AAAA,OAAO,EASL,QAAQ,EAER,KAAK,IAAI,EAIV,MAAM,eAAe,CAAC;AAYvB,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AAGjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;;AAIhF,qBAyIa,sBAAsB;IACjC,SAAS,CAAC,QAAQ,CAAC,IAAI,OAAQ;IAC/B,SAAS,CAAC,QAAQ,CAAC,iBAAiB,yBAAkC;IACtE,SAAS,CAAC,QAAQ,CAAC,eAAe,uBAAgC;IAClE,SAAS,CAAC,QAAQ,CAAC,aAAa,qBAA8B;IAC9D,SAAS,CAAC,QAAQ,CAAC,SAAS,wBAAiC;IAC7D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAgC;IAChE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAgC;IAChE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoB;IAC7C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAsB;IACjD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAmC;IACxD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAE3B;IAEH,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA6B;IAC1D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA8B;IAE5D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAEpB;IACH,OAAO,CAAC,YAAY,CAAsC;IAC1D,OAAO,CAAC,mBAAmB,CAAsC;IACjE,OAAO,CAAC,oBAAoB,CAChB;IACZ,OAAO,CAAC,YAAY,CAAS;IAE7B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAoC;IACjE,QAAQ,CAAC,aAAa,+DAAsC;IAC5D,SAAS,CAAC,QAAQ,CAAC,aAAa;;MAA6C;IAC7E,SAAS,CAAC,QAAQ,CAAC,eAAe,yFAG/B;;IA0FH,OAAO,CAAC,eAAe;IA6FvB,OAAO,CAAC,OAAO;yCAxNJ,sBAAsB;2CAAtB,sBAAsB;CAsOlC"}
@@ -207,7 +207,7 @@ export class PrismRendererComponent {
207
207
  i0.ɵɵviewQuerySignal(ctx.outlet, _c0, 5, ViewContainerRef);
208
208
  } if (rf & 2) {
209
209
  i0.ɵɵqueryAdvance();
210
- } }, decls: 11, vars: 7, consts: [["outlet", ""], [1, "prism-canvas-stage"], [1, "canvas-badges"], [1, "c-badge"], [1, "stage-crosshair"], [1, "demo-wrap"], [4, "ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector"]], template: function PrismRendererComponent_Template(rf, ctx) { if (rf & 1) {
210
+ } }, decls: 11, vars: 8, consts: [["outlet", ""], [1, "prism-canvas-stage"], [1, "canvas-badges"], [1, "c-badge"], [1, "stage-crosshair"], [1, "demo-wrap"], [4, "ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector"]], template: function PrismRendererComponent_Template(rf, ctx) { if (rf & 1) {
211
211
  i0.ɵɵelementStart(0, "div", 1)(1, "div", 2)(2, "span", 3);
212
212
  i0.ɵɵtext(3);
213
213
  i0.ɵɵelementEnd()();
@@ -217,7 +217,7 @@ export class PrismRendererComponent {
217
217
  i0.ɵɵconditionalCreate(10, PrismRendererComponent_Conditional_10_Template, 1, 3, "ng-container");
218
218
  i0.ɵɵelementEnd()();
219
219
  } if (rf & 2) {
220
- i0.ɵɵattribute("data-bg", ctx.variantBg.effective());
220
+ i0.ɵɵattribute("data-bg", ctx.variantBg.effective())("data-rulers", ctx.canvasService.rulers() ? "" : null);
221
221
  i0.ɵɵadvance(3);
222
222
  i0.ɵɵtextInterpolate1("", ctx.Math.round(ctx.canvasService.zoom() * 100), "%");
223
223
  i0.ɵɵadvance();
@@ -228,7 +228,7 @@ export class PrismRendererComponent {
228
228
  i0.ɵɵconditional(ctx.activeOverlay() ? 10 : -1);
229
229
  } }, dependencies: [PrismCanvasRulersComponent,
230
230
  PrismCanvasBgPillComponent,
231
- NgComponentOutlet], styles: ["[_nghost-%COMP%] { display: block; min-height: 0; flex: 1; }\n\n .prism-canvas-stage[_ngcontent-%COMP%] {\n position: relative;\n overflow: auto;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 32px;\n min-height: 200px;\n height: 100%;\n background-color: var(--prism-bg-surface);\n background-image: radial-gradient(circle, var(--prism-dot) 1px, transparent 1px);\n background-size: 20px 20px;\n transition: filter var(--dur-base);\n }\n\n .prism-canvas-stage[data-bg=\"plain\"][_ngcontent-%COMP%] {\n background-image: none;\n }\n .prism-canvas-stage[data-bg=\"light\"][_ngcontent-%COMP%] {\n background-color: var(--prism-void-light, #f7f5fc);\n background-image: radial-gradient(circle, color-mix(in srgb, var(--prism-primary-from) 15%, transparent) 1px, transparent 1px);\n }\n .prism-canvas-stage[data-bg=\"dark\"][_ngcontent-%COMP%] {\n background-color: var(--prism-void-dark, #07050f);\n background-image: radial-gradient(circle, color-mix(in srgb, var(--prism-primary) 18%, transparent) 1px, transparent 1px);\n }\n .prism-canvas-stage[data-bg=\"checker\"][_ngcontent-%COMP%] {\n background-image:\n linear-gradient(45deg, var(--prism-border) 25%, transparent 25%),\n linear-gradient(-45deg, var(--prism-border) 25%, transparent 25%),\n linear-gradient(45deg, transparent 75%, var(--prism-border) 75%),\n linear-gradient(-45deg, transparent 75%, var(--prism-border) 75%);\n background-size: 16px 16px;\n background-position: 0 0, 0 8px, 8px -8px, -8px 0;\n }\n\n .stage-crosshair[_ngcontent-%COMP%] {\n position: absolute;\n inset: 0;\n pointer-events: none;\n opacity: 0;\n transition: opacity var(--dur-base);\n }\n .stage-crosshair.visible[_ngcontent-%COMP%] { opacity: 1; }\n .stage-crosshair[_ngcontent-%COMP%]::before, \n .stage-crosshair[_ngcontent-%COMP%]::after {\n content: '';\n position: absolute;\n background: color-mix(in srgb, var(--prism-primary) 20%, transparent);\n }\n .stage-crosshair[_ngcontent-%COMP%]::before { left: 0; right: 0; top: 50%; height: 1px; }\n .stage-crosshair[_ngcontent-%COMP%]::after { top: 0; bottom: 0; left: 50%; width: 1px; }\n\n .canvas-badges[_ngcontent-%COMP%] {\n position: absolute;\n top: 12px;\n left: 20px;\n display: flex;\n gap: 6px;\n pointer-events: none;\n }\n .c-badge[_ngcontent-%COMP%] {\n font-family: var(--font-mono);\n font-size: var(--fs-xs);\n padding: 3px 7px;\n border-radius: 4px;\n background: color-mix(in srgb, var(--prism-bg-elevated) 90%, transparent);\n border: 1px solid var(--prism-border);\n color: var(--prism-text-muted);\n backdrop-filter: blur(8px);\n }\n\n .demo-wrap[_ngcontent-%COMP%] {\n position: relative;\n transform: scale(var(--zoom, 1));\n transition: transform 0.18s;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n max-width: 600px;\n }"], changeDetection: 0 });
231
+ NgComponentOutlet], styles: ["[_nghost-%COMP%] { display: block; min-height: 0; flex: 1; }\n\n .prism-canvas-stage[_ngcontent-%COMP%] {\n position: relative;\n overflow: auto;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 32px;\n min-height: 200px;\n height: 100%;\n background-color: var(--prism-bg-surface);\n background-image: radial-gradient(circle, var(--prism-dot) 1px, transparent 1px);\n background-size: 20px 20px;\n transition: filter var(--dur-base);\n --prism-canvas-overlay-top: 12px;\n --prism-canvas-overlay-inline: 20px;\n }\n .prism-canvas-stage[data-rulers][_ngcontent-%COMP%] {\n --prism-canvas-overlay-top: 28px;\n --prism-canvas-overlay-inline: 28px;\n }\n\n .prism-canvas-stage[data-bg=\"plain\"][_ngcontent-%COMP%] {\n background-image: none;\n }\n .prism-canvas-stage[data-bg=\"light\"][_ngcontent-%COMP%] {\n background-color: var(--prism-void-light, #f7f5fc);\n background-image: radial-gradient(circle, color-mix(in srgb, var(--prism-primary-from) 15%, transparent) 1px, transparent 1px);\n }\n .prism-canvas-stage[data-bg=\"dark\"][_ngcontent-%COMP%] {\n background-color: var(--prism-void-dark, #07050f);\n background-image: radial-gradient(circle, color-mix(in srgb, var(--prism-primary) 18%, transparent) 1px, transparent 1px);\n }\n .prism-canvas-stage[data-bg=\"checker\"][_ngcontent-%COMP%] {\n background-image:\n linear-gradient(45deg, var(--prism-border) 25%, transparent 25%),\n linear-gradient(-45deg, var(--prism-border) 25%, transparent 25%),\n linear-gradient(45deg, transparent 75%, var(--prism-border) 75%),\n linear-gradient(-45deg, transparent 75%, var(--prism-border) 75%);\n background-size: 16px 16px;\n background-position: 0 0, 0 8px, 8px -8px, -8px 0;\n }\n\n .stage-crosshair[_ngcontent-%COMP%] {\n position: absolute;\n inset: 0;\n pointer-events: none;\n opacity: 0;\n transition: opacity var(--dur-base);\n }\n .stage-crosshair.visible[_ngcontent-%COMP%] { opacity: 1; }\n .stage-crosshair[_ngcontent-%COMP%]::before, \n .stage-crosshair[_ngcontent-%COMP%]::after {\n content: '';\n position: absolute;\n background: color-mix(in srgb, var(--prism-primary) 20%, transparent);\n }\n .stage-crosshair[_ngcontent-%COMP%]::before { left: 0; right: 0; top: 50%; height: 1px; }\n .stage-crosshair[_ngcontent-%COMP%]::after { top: 0; bottom: 0; left: 50%; width: 1px; }\n\n .canvas-badges[_ngcontent-%COMP%] {\n position: absolute;\n top: var(--prism-canvas-overlay-top);\n left: var(--prism-canvas-overlay-inline);\n display: flex;\n gap: 6px;\n pointer-events: none;\n transition: top var(--dur-base), left var(--dur-base);\n }\n .c-badge[_ngcontent-%COMP%] {\n font-family: var(--font-mono);\n font-size: var(--fs-xs);\n padding: 3px 7px;\n border-radius: 4px;\n background: color-mix(in srgb, var(--prism-bg-elevated) 90%, transparent);\n border: 1px solid var(--prism-border);\n color: var(--prism-text-muted);\n backdrop-filter: blur(8px);\n }\n\n .demo-wrap[_ngcontent-%COMP%] {\n position: relative;\n transform: scale(var(--zoom, 1));\n transition: transform 0.18s;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n max-width: 600px;\n }"], changeDetection: 0 });
232
232
  }
233
233
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PrismRendererComponent, [{
234
234
  type: Component,
@@ -237,7 +237,11 @@ export class PrismRendererComponent {
237
237
  PrismCanvasBgPillComponent,
238
238
  NgComponentOutlet,
239
239
  ], template: `
240
- <div class="prism-canvas-stage" [attr.data-bg]="variantBg.effective()">
240
+ <div
241
+ class="prism-canvas-stage"
242
+ [attr.data-bg]="variantBg.effective()"
243
+ [attr.data-rulers]="canvasService.rulers() ? '' : null"
244
+ >
241
245
  <div class="canvas-badges">
242
246
  <span class="c-badge"
243
247
  >{{ Math.round(canvasService.zoom() * 100) }}%</span
@@ -263,11 +267,11 @@ export class PrismRendererComponent {
263
267
  }
264
268
  </div>
265
269
  </div>
266
- `, styles: ["\n :host { display: block; min-height: 0; flex: 1; }\n\n .prism-canvas-stage {\n position: relative;\n overflow: auto;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 32px;\n min-height: 200px;\n height: 100%;\n background-color: var(--prism-bg-surface);\n background-image: radial-gradient(circle, var(--prism-dot) 1px, transparent 1px);\n background-size: 20px 20px;\n transition: filter var(--dur-base);\n }\n\n .prism-canvas-stage[data-bg=\"plain\"] {\n background-image: none;\n }\n .prism-canvas-stage[data-bg=\"light\"] {\n background-color: var(--prism-void-light, #f7f5fc);\n background-image: radial-gradient(circle, color-mix(in srgb, var(--prism-primary-from) 15%, transparent) 1px, transparent 1px);\n }\n .prism-canvas-stage[data-bg=\"dark\"] {\n background-color: var(--prism-void-dark, #07050f);\n background-image: radial-gradient(circle, color-mix(in srgb, var(--prism-primary) 18%, transparent) 1px, transparent 1px);\n }\n .prism-canvas-stage[data-bg=\"checker\"] {\n background-image:\n linear-gradient(45deg, var(--prism-border) 25%, transparent 25%),\n linear-gradient(-45deg, var(--prism-border) 25%, transparent 25%),\n linear-gradient(45deg, transparent 75%, var(--prism-border) 75%),\n linear-gradient(-45deg, transparent 75%, var(--prism-border) 75%);\n background-size: 16px 16px;\n background-position: 0 0, 0 8px, 8px -8px, -8px 0;\n }\n\n .stage-crosshair {\n position: absolute;\n inset: 0;\n pointer-events: none;\n opacity: 0;\n transition: opacity var(--dur-base);\n }\n .stage-crosshair.visible { opacity: 1; }\n .stage-crosshair::before,\n .stage-crosshair::after {\n content: '';\n position: absolute;\n background: color-mix(in srgb, var(--prism-primary) 20%, transparent);\n }\n .stage-crosshair::before { left: 0; right: 0; top: 50%; height: 1px; }\n .stage-crosshair::after { top: 0; bottom: 0; left: 50%; width: 1px; }\n\n .canvas-badges {\n position: absolute;\n top: 12px;\n left: 20px;\n display: flex;\n gap: 6px;\n pointer-events: none;\n }\n .c-badge {\n font-family: var(--font-mono);\n font-size: var(--fs-xs);\n padding: 3px 7px;\n border-radius: 4px;\n background: color-mix(in srgb, var(--prism-bg-elevated) 90%, transparent);\n border: 1px solid var(--prism-border);\n color: var(--prism-text-muted);\n backdrop-filter: blur(8px);\n }\n\n .demo-wrap {\n position: relative;\n transform: scale(var(--zoom, 1));\n transition: transform 0.18s;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n max-width: 600px;\n }\n\n "] }]
270
+ `, styles: ["\n :host { display: block; min-height: 0; flex: 1; }\n\n .prism-canvas-stage {\n position: relative;\n overflow: auto;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 32px;\n min-height: 200px;\n height: 100%;\n background-color: var(--prism-bg-surface);\n background-image: radial-gradient(circle, var(--prism-dot) 1px, transparent 1px);\n background-size: 20px 20px;\n transition: filter var(--dur-base);\n --prism-canvas-overlay-top: 12px;\n --prism-canvas-overlay-inline: 20px;\n }\n .prism-canvas-stage[data-rulers] {\n --prism-canvas-overlay-top: 28px;\n --prism-canvas-overlay-inline: 28px;\n }\n\n .prism-canvas-stage[data-bg=\"plain\"] {\n background-image: none;\n }\n .prism-canvas-stage[data-bg=\"light\"] {\n background-color: var(--prism-void-light, #f7f5fc);\n background-image: radial-gradient(circle, color-mix(in srgb, var(--prism-primary-from) 15%, transparent) 1px, transparent 1px);\n }\n .prism-canvas-stage[data-bg=\"dark\"] {\n background-color: var(--prism-void-dark, #07050f);\n background-image: radial-gradient(circle, color-mix(in srgb, var(--prism-primary) 18%, transparent) 1px, transparent 1px);\n }\n .prism-canvas-stage[data-bg=\"checker\"] {\n background-image:\n linear-gradient(45deg, var(--prism-border) 25%, transparent 25%),\n linear-gradient(-45deg, var(--prism-border) 25%, transparent 25%),\n linear-gradient(45deg, transparent 75%, var(--prism-border) 75%),\n linear-gradient(-45deg, transparent 75%, var(--prism-border) 75%);\n background-size: 16px 16px;\n background-position: 0 0, 0 8px, 8px -8px, -8px 0;\n }\n\n .stage-crosshair {\n position: absolute;\n inset: 0;\n pointer-events: none;\n opacity: 0;\n transition: opacity var(--dur-base);\n }\n .stage-crosshair.visible { opacity: 1; }\n .stage-crosshair::before,\n .stage-crosshair::after {\n content: '';\n position: absolute;\n background: color-mix(in srgb, var(--prism-primary) 20%, transparent);\n }\n .stage-crosshair::before { left: 0; right: 0; top: 50%; height: 1px; }\n .stage-crosshair::after { top: 0; bottom: 0; left: 50%; width: 1px; }\n\n .canvas-badges {\n position: absolute;\n top: var(--prism-canvas-overlay-top);\n left: var(--prism-canvas-overlay-inline);\n display: flex;\n gap: 6px;\n pointer-events: none;\n transition: top var(--dur-base), left var(--dur-base);\n }\n .c-badge {\n font-family: var(--font-mono);\n font-size: var(--fs-xs);\n padding: 3px 7px;\n border-radius: 4px;\n background: color-mix(in srgb, var(--prism-bg-elevated) 90%, transparent);\n border: 1px solid var(--prism-border);\n color: var(--prism-text-muted);\n backdrop-filter: blur(8px);\n }\n\n .demo-wrap {\n position: relative;\n transform: scale(var(--zoom, 1));\n transition: transform 0.18s;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n max-width: 600px;\n }\n\n "] }]
267
271
  }], () => [], { outlet: [{ type: i0.ViewChild, args: ['outlet', { ...{
268
272
  read: ViewContainerRef,
269
273
  }, isSignal: true }] }] }); })();
270
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismRendererComponent, { className: "PrismRendererComponent", filePath: "app/renderer/prism-renderer.component.ts", lineNumber: 163 }); })();
274
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismRendererComponent, { className: "PrismRendererComponent", filePath: "app/renderer/prism-renderer.component.ts", lineNumber: 174 }); })();
271
275
  function parseContentToNodes(content) {
272
276
  if (typeof content === 'string') {
273
277
  return [htmlToNodes(content)];
@@ -1,16 +1,25 @@
1
1
  import type { RuntimeComponent } from '../../plugin/plugin.types.js';
2
2
  import * as i0 from "@angular/core";
3
+ export interface ComputedVariantState {
4
+ values: Record<string, unknown>;
5
+ activeContent: string | Record<string, string> | undefined;
6
+ }
7
+ export declare function computeVariantState(comp: RuntimeComponent, index: number, options?: {
8
+ onUnknownInput?: (variantName: string, key: string) => void;
9
+ }): ComputedVariantState;
3
10
  export declare class PrismRendererService {
4
11
  private readonly navigationService;
5
12
  readonly activeVariantIndex: import("@angular/core").WritableSignal<number>;
6
13
  readonly inputValues: import("@angular/core").WritableSignal<Record<string, unknown>>;
7
14
  readonly activeContent: import("@angular/core").WritableSignal<string | Record<string, string> | undefined>;
8
15
  readonly renderedElement: import("@angular/core").WritableSignal<Element | null>;
16
+ readonly dirtyInputCount: import("@angular/core").Signal<number>;
9
17
  private _lastClassName;
10
18
  resetForComponent(comp: RuntimeComponent): void;
11
19
  reconcileForComponent(comp: RuntimeComponent): void;
12
20
  selectVariant(index: number): void;
13
21
  updateInput(name: string, value: unknown): void;
22
+ resetInputsToVariantDefaults(): void;
14
23
  private applyVariant;
15
24
  static ɵfac: i0.ɵɵFactoryDeclaration<PrismRendererService, never>;
16
25
  static ɵprov: i0.ɵɵInjectableDeclaration<PrismRendererService>;
@@ -1 +1 @@
1
- {"version":3,"file":"prism-renderer.service.d.ts","sourceRoot":"","sources":["../../../src/app/services/prism-renderer.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;;AAGrE,qBACa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAkC;IAEpE,QAAQ,CAAC,kBAAkB,iDAAa;IACxC,QAAQ,CAAC,WAAW,kEAAuC;IAC3D,QAAQ,CAAC,aAAa,sFAAkE;IACxF,QAAQ,CAAC,eAAe,yDAAgC;IAExD,OAAO,CAAC,cAAc,CAAuB;IAE7C,iBAAiB,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI;IAM/C,qBAAqB,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI;IA2CnD,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAMlC,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAI/C,OAAO,CAAC,YAAY;yCArET,oBAAoB;6CAApB,oBAAoB;CA8GhC"}
1
+ {"version":3,"file":"prism-renderer.service.d.ts","sourceRoot":"","sources":["../../../src/app/services/prism-renderer.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;;AAGrE,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,aAAa,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;CAC5D;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,gBAAgB,EACtB,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;IAAE,cAAc,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;CAAO,GAC5E,oBAAoB,CA+CtB;AAaD,qBACa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAkC;IAEpE,QAAQ,CAAC,kBAAkB,iDAAa;IACxC,QAAQ,CAAC,WAAW,kEAAuC;IAC3D,QAAQ,CAAC,aAAa,sFAAkE;IACxF,QAAQ,CAAC,eAAe,yDAAgC;IAExD,QAAQ,CAAC,eAAe,yCAcrB;IAEH,OAAO,CAAC,cAAc,CAAuB;IAE7C,iBAAiB,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI;IAM/C,qBAAqB,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI;IA2CnD,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAMlC,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAI/C,4BAA4B,IAAI,IAAI;IAMpC,OAAO,CAAC,YAAY;yCA3FT,oBAAoB;6CAApB,oBAAoB;CAqGhC"}
@@ -1,12 +1,82 @@
1
- import { inject, Injectable, signal } from '@angular/core';
1
+ import { computed, inject, Injectable, signal } from '@angular/core';
2
2
  import { PrismNavigationService } from './prism-navigation.service.js';
3
3
  import * as i0 from "@angular/core";
4
+ export function computeVariantState(comp, index, options = {}) {
5
+ const defaults = {};
6
+ for (const input of comp.meta.inputs) {
7
+ if (input.defaultValue !== undefined) {
8
+ defaults[input.name] = input.defaultValue;
9
+ }
10
+ }
11
+ const requiredInputNames = new Set(comp.meta.inputs.filter((i) => i.required).map((i) => i.name));
12
+ const reset = {};
13
+ for (const v of comp.meta.showcaseConfig.variants ?? []) {
14
+ for (const key of Object.keys(v.inputs ?? {})) {
15
+ if (!requiredInputNames.has(key) && !(key in reset)) {
16
+ reset[key] = undefined;
17
+ }
18
+ }
19
+ }
20
+ const variant = comp.meta.showcaseConfig.variants?.[index];
21
+ const variantInputs = variant?.inputs ?? {};
22
+ const validInputNames = new Set(comp.meta.inputs.map((i) => i.name));
23
+ for (const key of Object.keys(variantInputs)) {
24
+ if (!validInputNames.has(key)) {
25
+ options.onUnknownInput?.(variant?.name ?? String(index), key);
26
+ }
27
+ }
28
+ const filteredVariantInputs = Object.fromEntries(Object.entries(variantInputs).filter(([key]) => validInputNames.has(key)));
29
+ const values = {
30
+ ...reset,
31
+ ...defaults,
32
+ ...filteredVariantInputs,
33
+ };
34
+ if (comp.meta.componentMeta.isDirective && variant?.content) {
35
+ values['__prismContent__'] =
36
+ typeof variant.content === 'string' ? variant.content : '';
37
+ }
38
+ return {
39
+ values,
40
+ activeContent: comp.meta.componentMeta.isDirective ? undefined : variant?.content,
41
+ };
42
+ }
43
+ function valuesEqual(a, b) {
44
+ if (a === b)
45
+ return true;
46
+ if (a == null || b == null)
47
+ return false;
48
+ if (typeof a !== 'object' || typeof b !== 'object')
49
+ return false;
50
+ try {
51
+ return JSON.stringify(a) === JSON.stringify(b);
52
+ }
53
+ catch {
54
+ return false;
55
+ }
56
+ }
4
57
  export class PrismRendererService {
5
58
  navigationService = inject(PrismNavigationService);
6
59
  activeVariantIndex = signal(0, ...(ngDevMode ? [{ debugName: "activeVariantIndex" }] : []));
7
60
  inputValues = signal({}, ...(ngDevMode ? [{ debugName: "inputValues" }] : []));
8
61
  activeContent = signal(undefined, ...(ngDevMode ? [{ debugName: "activeContent" }] : []));
9
62
  renderedElement = signal(null, ...(ngDevMode ? [{ debugName: "renderedElement" }] : []));
63
+ dirtyInputCount = computed(() => {
64
+ const comp = this.navigationService.activeComponent();
65
+ if (!comp)
66
+ return 0;
67
+ const { values: expected } = computeVariantState(comp, this.activeVariantIndex());
68
+ const current = this.inputValues();
69
+ const keys = new Set([
70
+ ...Object.keys(expected),
71
+ ...Object.keys(current),
72
+ ]);
73
+ let count = 0;
74
+ for (const key of keys) {
75
+ if (!valuesEqual(expected[key], current[key]))
76
+ count++;
77
+ }
78
+ return count;
79
+ }, ...(ngDevMode ? [{ debugName: "dirtyInputCount" }] : []));
10
80
  _lastClassName = null;
11
81
  resetForComponent(comp) {
12
82
  this._lastClassName = comp.meta.className;
@@ -57,37 +127,18 @@ export class PrismRendererService {
57
127
  updateInput(name, value) {
58
128
  this.inputValues.update((prev) => ({ ...prev, [name]: value }));
59
129
  }
130
+ resetInputsToVariantDefaults() {
131
+ const comp = this.navigationService.activeComponent();
132
+ if (!comp)
133
+ return;
134
+ this.applyVariant(this.activeVariantIndex(), comp);
135
+ }
60
136
  applyVariant(index, comp) {
61
- const defaults = {};
62
- for (const input of comp.meta.inputs) {
63
- if (input.defaultValue !== undefined) {
64
- defaults[input.name] = input.defaultValue;
65
- }
66
- }
67
- const requiredInputNames = new Set(comp.meta.inputs.filter((i) => i.required).map((i) => i.name));
68
- const reset = {};
69
- for (const v of comp.meta.showcaseConfig.variants ?? []) {
70
- for (const key of Object.keys(v.inputs ?? {})) {
71
- if (!requiredInputNames.has(key) && !(key in reset)) {
72
- reset[key] = undefined;
73
- }
74
- }
75
- }
76
- const variant = comp.meta.showcaseConfig.variants?.[index];
77
- const variantInputs = variant?.inputs ?? {};
78
- const validInputNames = new Set(comp.meta.inputs.map((i) => i.name));
79
- for (const key of Object.keys(variantInputs)) {
80
- if (!validInputNames.has(key)) {
81
- console.warn(`[ng-prism] Variant "${variant?.name ?? index}" references unknown input "${key}" on ${comp.meta.className} — ignoring.`);
82
- }
83
- }
84
- const filteredVariantInputs = Object.fromEntries(Object.entries(variantInputs).filter(([key]) => validInputNames.has(key)));
85
- const values = { ...reset, ...defaults, ...filteredVariantInputs };
86
- if (comp.meta.componentMeta.isDirective && variant?.content) {
87
- values['__prismContent__'] = typeof variant.content === 'string' ? variant.content : '';
88
- }
137
+ const { values, activeContent } = computeVariantState(comp, index, {
138
+ onUnknownInput: (variantName, key) => console.warn(`[ng-prism] Variant "${variantName}" references unknown input "${key}" on ${comp.meta.className} — ignoring.`),
139
+ });
89
140
  this.inputValues.set(values);
90
- this.activeContent.set(comp.meta.componentMeta.isDirective ? undefined : variant?.content);
141
+ this.activeContent.set(activeContent);
91
142
  }
92
143
  static ɵfac = function PrismRendererService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || PrismRendererService)(); };
93
144
  static ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: PrismRendererService, factory: PrismRendererService.ɵfac, providedIn: 'root' });
@@ -1,6 +1,7 @@
1
1
  import type { NavigationItem } from '../services/navigation-item.types.js';
2
2
  import { PrismNavigationService } from '../services/prism-navigation.service.js';
3
3
  import { PrismSearchService } from '../services/prism-search.service.js';
4
+ import type { ComponentStatus } from '../../decorator/showcase.types.js';
4
5
  import * as i0 from "@angular/core";
5
6
  interface SidebarCategory {
6
7
  name: string;
@@ -22,6 +23,8 @@ export declare class PrismSidebarComponent {
22
23
  protected toggleCollapse(key: string): void;
23
24
  protected itemKey(item: NavigationItem): string;
24
25
  protected itemLabel(item: NavigationItem): string;
26
+ protected itemStatus(item: NavigationItem): ComponentStatus | undefined;
27
+ protected itemTooltip(item: NavigationItem): string | null;
25
28
  protected isActive(item: NavigationItem): boolean;
26
29
  protected onSelect(item: NavigationItem): void;
27
30
  private loadCollapsed;
@@ -1 +1 @@
1
- {"version":3,"file":"prism-sidebar.component.d.ts","sourceRoot":"","sources":["../../../src/app/sidebar/prism-sidebar.component.ts"],"names":[],"mappings":"AAWA,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,qBAuRa,qBAAqB;IAChC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,yBAAkC;IACtE,SAAS,CAAC,QAAQ,CAAC,aAAa,qBAA8B;IAC9D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAgC;IAChE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA0D;IAGtF,SAAS,CAAC,WAAW,CAAC,CAAC,EAAE,aAAa,GAAG,IAAI;IAQ7C,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,eAAe,yCAEhC;IAEF,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;yCA9GV,qBAAqB;2CAArB,qBAAqB;CAmHjC"}
1
+ {"version":3,"file":"prism-sidebar.component.d.ts","sourceRoot":"","sources":["../../../src/app/sidebar/prism-sidebar.component.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AACjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAEzE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;;AAuBzE,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,cAAc,EAAE,CAAC;CACzB;AAED,qBAkTa,qBAAqB;IAChC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,yBAAkC;IACtE,SAAS,CAAC,QAAQ,CAAC,aAAa,qBAA8B;IAC9D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAgC;IAChE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA0D;IAGtF,SAAS,CAAC,WAAW,CAAC,CAAC,EAAE,aAAa,GAAG,IAAI;IAQ7C,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,eAAe,yCAEhC;IAEF,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,UAAU,CAAC,IAAI,EAAE,cAAc,GAAG,eAAe,GAAG,SAAS;IAMvE,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,GAAG,IAAI;IAO1D,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;yCA3HV,qBAAqB;2CAArB,qBAAqB;CAgIjC"}