@ng-prism/core 21.10.3 → 21.12.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app/canvas/prism-canvas-bg-pill.component.d.ts.map +1 -1
- package/dist/app/canvas/prism-canvas-bg-pill.component.js +3 -3
- package/dist/app/canvas/prism-canvas-rulers.component.d.ts +1 -0
- package/dist/app/canvas/prism-canvas-rulers.component.d.ts.map +1 -1
- package/dist/app/canvas/prism-canvas-rulers.component.js +4 -1
- package/dist/app/component-head/prism-component-head.component.d.ts +8 -0
- package/dist/app/component-head/prism-component-head.component.d.ts.map +1 -1
- package/dist/app/component-head/prism-component-head.component.js +119 -49
- package/dist/app/icons/prism-icon.component.d.ts.map +1 -1
- package/dist/app/icons/prism-icon.component.js +2 -1
- package/dist/app/panels/controls/prism-controls-panel.component.d.ts.map +1 -1
- package/dist/app/panels/controls/prism-controls-panel.component.js +99 -60
- package/dist/app/renderer/prism-renderer.component.d.ts.map +1 -1
- package/dist/app/renderer/prism-renderer.component.js +10 -6
- package/dist/app/services/prism-renderer.service.d.ts +9 -0
- package/dist/app/services/prism-renderer.service.d.ts.map +1 -1
- package/dist/app/services/prism-renderer.service.js +81 -30
- package/dist/app/sidebar/prism-sidebar.component.d.ts +3 -0
- package/dist/app/sidebar/prism-sidebar.component.d.ts.map +1 -1
- package/dist/app/sidebar/prism-sidebar.component.js +38 -8
- package/dist/app/variant-ribbon/prism-variant-ribbon.component.d.ts +4 -1
- package/dist/app/variant-ribbon/prism-variant-ribbon.component.d.ts.map +1 -1
- package/dist/app/variant-ribbon/prism-variant-ribbon.component.js +67 -36
- package/dist/builder/scanner/component.scanner.d.ts.map +1 -1
- package/dist/builder/scanner/component.scanner.js +14 -0
- package/dist/decorator/index.d.ts +1 -1
- package/dist/decorator/index.d.ts.map +1 -1
- package/dist/decorator/showcase.decorator.d.ts +1 -1
- package/dist/decorator/showcase.decorator.d.ts.map +1 -1
- package/dist/decorator/showcase.types.d.ts +28 -6
- package/dist/decorator/showcase.types.d.ts.map +1 -1
- 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
|
|
16
|
-
i0.ɵɵ
|
|
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
|
|
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,
|
|
38
|
+
i0.ɵɵproperty("ngComponentOutlet", ctx.component)("ngComponentOutletInputs", i0.ɵɵpureFunction2(2, _c0, input_r4, ctx_r1.rendererService));
|
|
21
39
|
} }
|
|
22
|
-
function
|
|
23
|
-
const
|
|
24
|
-
i0.ɵɵelementStart(0, "prism-boolean-control",
|
|
25
|
-
i0.ɵɵlistener("valueChange", function
|
|
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
|
|
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()[
|
|
48
|
+
i0.ɵɵproperty("value", ctx_r1.asBoolean(ctx_r1.rendererService.inputValues()[input_r4.name]));
|
|
31
49
|
} }
|
|
32
|
-
function
|
|
33
|
-
const
|
|
34
|
-
i0.ɵɵelementStart(0, "prism-number-control",
|
|
35
|
-
i0.ɵɵlistener("valueChange", function
|
|
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
|
|
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()[
|
|
58
|
+
i0.ɵɵproperty("value", ctx_r1.asNumber(ctx_r1.rendererService.inputValues()[input_r4.name]));
|
|
41
59
|
} }
|
|
42
|
-
function
|
|
43
|
-
const
|
|
44
|
-
i0.ɵɵelementStart(0, "prism-union-control",
|
|
45
|
-
i0.ɵɵlistener("valueChange", function
|
|
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
|
|
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()[
|
|
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
|
|
53
|
-
const
|
|
54
|
-
i0.ɵɵelementStart(0, "prism-string-control",
|
|
55
|
-
i0.ɵɵlistener("valueChange", function
|
|
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
|
|
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()[
|
|
78
|
+
i0.ɵɵproperty("value", ctx_r1.asString(ctx_r1.rendererService.inputValues()[input_r4.name]));
|
|
61
79
|
} }
|
|
62
|
-
function
|
|
63
|
-
const
|
|
64
|
-
i0.ɵɵelementStart(0, "prism-json-control",
|
|
65
|
-
i0.ɵɵlistener("valueChange", function
|
|
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
|
|
86
|
+
const input_r4 = i0.ɵɵnextContext(2).$implicit;
|
|
69
87
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
70
|
-
i0.ɵɵproperty("value", ctx_r1.rendererService.inputValues()[
|
|
88
|
+
i0.ɵɵproperty("value", ctx_r1.rendererService.inputValues()[input_r4.name]);
|
|
71
89
|
} }
|
|
72
|
-
function
|
|
73
|
-
i0.ɵɵelementStart(0, "div",
|
|
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",
|
|
94
|
+
i0.ɵɵelementStart(3, "span", 11)(4, "b");
|
|
77
95
|
i0.ɵɵtext(5);
|
|
78
96
|
i0.ɵɵelementEnd()()();
|
|
79
|
-
i0.ɵɵelementStart(6, "div",
|
|
80
|
-
i0.ɵɵconditionalCreate(7,
|
|
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
|
|
102
|
+
const input_r4 = i0.ɵɵnextContext().$implicit;
|
|
85
103
|
i0.ɵɵadvance(2);
|
|
86
|
-
i0.ɵɵtextInterpolate(
|
|
104
|
+
i0.ɵɵtextInterpolate(input_r4.name);
|
|
87
105
|
i0.ɵɵadvance(3);
|
|
88
|
-
i0.ɵɵtextInterpolate(
|
|
106
|
+
i0.ɵɵtextInterpolate(input_r4.rawType ?? input_r4.type);
|
|
89
107
|
i0.ɵɵadvance(2);
|
|
90
|
-
i0.ɵɵconditional((tmp_15_0 =
|
|
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
|
|
93
|
-
i0.ɵɵelementStart(0, "div",
|
|
94
|
-
i0.ɵɵconditionalCreate(1,
|
|
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
|
|
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(
|
|
119
|
+
i0.ɵɵconditional((tmp_12_0 = ctx_r1.getCustomControl(input_r4)) ? 1 : 2, tmp_12_0);
|
|
102
120
|
} }
|
|
103
|
-
function
|
|
104
|
-
i0.ɵɵelementStart(0, "p",
|
|
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.ɵɵ
|
|
111
|
-
i0.ɵɵ
|
|
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
|
-
|
|
133
|
+
let tmp_2_0;
|
|
134
|
+
const comp_r10 = ctx;
|
|
135
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
115
136
|
i0.ɵɵadvance();
|
|
116
|
-
i0.ɵɵ
|
|
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(
|
|
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,
|
|
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">↻</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:
|
|
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,
|
|
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:
|
|
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:
|
|
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
|
|
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:
|
|
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:
|
|
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;
|
|
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
|
|
62
|
-
|
|
63
|
-
|
|
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(
|
|
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;;
|
|
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"}
|