blue-chestnut-solar-expert 0.0.18 → 0.0.20

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 (181) hide show
  1. package/dist/cjs/eraser-icon.house-icon.icon-selector.map-draw.map-selector.move-icon.octagon-minus-icon.polygon-buttons.polygon-information.search-icon.settings-icon.settings-modal.solar-expert.solar-system-form.tool-box.undo-icon.entry.cjs.js.map +1 -0
  2. package/dist/cjs/eraser-icon_16.cjs.entry.js +3124 -0
  3. package/dist/cjs/eraser-icon_16.cjs.entry.js.map +1 -0
  4. package/dist/cjs/loader.cjs.js +1 -1
  5. package/dist/cjs/loading-widget.cjs.entry.js +2 -2
  6. package/dist/cjs/loading-widget.cjs.entry.js.map +1 -1
  7. package/dist/cjs/loading-widget.entry.cjs.js.map +1 -1
  8. package/dist/cjs/solar-calculator.cjs.entry.js +2 -2
  9. package/dist/cjs/solar-calculator.cjs.entry.js.map +1 -1
  10. package/dist/cjs/solar-calculator.entry.cjs.js.map +1 -1
  11. package/dist/cjs/stencil-library.cjs.js +1 -1
  12. package/dist/collection/collection-manifest.json +1 -0
  13. package/dist/collection/components/icons/icon.js +3 -0
  14. package/dist/collection/components/icons/icon.js.map +1 -1
  15. package/dist/collection/components/icons/undo.js +64 -0
  16. package/dist/collection/components/icons/undo.js.map +1 -0
  17. package/dist/collection/components/map-draw/map-draw.js +65 -22
  18. package/dist/collection/components/map-draw/map-draw.js.map +1 -1
  19. package/dist/collection/components/map-draw/map-selector.js +2 -2
  20. package/dist/collection/components/map-draw/map-selector.js.map +1 -1
  21. package/dist/collection/components/map-draw/polygon-buttons.js +26 -1
  22. package/dist/collection/components/map-draw/polygon-buttons.js.map +1 -1
  23. package/dist/collection/components/map-draw/polygon-information.js +3 -3
  24. package/dist/collection/components/map-draw/polygon-information.js.map +1 -1
  25. package/dist/collection/components/map-draw/tool-box.js +27 -3
  26. package/dist/collection/components/map-draw/tool-box.js.map +1 -1
  27. package/dist/collection/components/settings/settings.js +8 -8
  28. package/dist/collection/components/solar-calculator/solar-calculator.js +1 -1
  29. package/dist/collection/components/solar-expert/solar-expert.js +16 -1
  30. package/dist/collection/components/solar-expert/solar-expert.js.map +1 -1
  31. package/dist/collection/components/solar-system-form/solar-system-form.js +85 -185
  32. package/dist/collection/components/solar-system-form/solar-system-form.js.map +1 -1
  33. package/dist/collection/components/widgets/loading-widget.js +1 -1
  34. package/dist/collection/constants.js +2 -1
  35. package/dist/collection/constants.js.map +1 -1
  36. package/dist/collection/output.css +20 -9
  37. package/dist/collection/store.js +1 -1
  38. package/dist/collection/store.js.map +1 -1
  39. package/dist/collection/types/lang.js.map +1 -1
  40. package/dist/collection/utils/lang/english.js +5 -0
  41. package/dist/collection/utils/lang/english.js.map +1 -1
  42. package/dist/collection/utils/lang/german.js +7 -2
  43. package/dist/collection/utils/lang/german.js.map +1 -1
  44. package/dist/collection/utils/lang/spanish.js +5 -0
  45. package/dist/collection/utils/lang/spanish.js.map +1 -1
  46. package/dist/collection/utils/render/tools.js +7 -0
  47. package/dist/collection/utils/render/tools.js.map +1 -1
  48. package/dist/collection/utils/simulation/simulation.js +109 -0
  49. package/dist/collection/utils/simulation/simulation.js.map +1 -0
  50. package/dist/collection/utils/simulation/solarCurves.js +31 -0
  51. package/dist/collection/utils/simulation/solarCurves.js.map +1 -0
  52. package/dist/collection/utils/simulation/types.js +4 -0
  53. package/dist/collection/utils/simulation/types.js.map +1 -0
  54. package/dist/components/eraser-icon.js +1 -1
  55. package/dist/components/house-icon.js +1 -1
  56. package/dist/components/icon-selector.js +1 -1
  57. package/dist/components/loading-widget.js +2 -2
  58. package/dist/components/loading-widget.js.map +1 -1
  59. package/dist/components/map-draw.js +1 -1
  60. package/dist/components/map-selector.js +1 -1
  61. package/dist/components/move-icon.js +1 -1
  62. package/dist/components/octagon-minus-icon.js +1 -1
  63. package/dist/components/p-BDBrVfn4.js +38 -0
  64. package/dist/components/p-BDBrVfn4.js.map +1 -0
  65. package/dist/components/p-BDrs1Te9.js +38 -0
  66. package/dist/components/p-BDrs1Te9.js.map +1 -0
  67. package/dist/components/p-BbXgEBG5.js +38 -0
  68. package/dist/components/p-BbXgEBG5.js.map +1 -0
  69. package/dist/components/p-Bq1PVegq.js +174 -0
  70. package/dist/components/p-Bq1PVegq.js.map +1 -0
  71. package/dist/components/p-BrVkygdn.js +38 -0
  72. package/dist/components/p-BrVkygdn.js.map +1 -0
  73. package/dist/components/p-BxEeUA4s.js +149 -0
  74. package/dist/components/p-BxEeUA4s.js.map +1 -0
  75. package/dist/components/p-C-_6TJs5.js +164 -0
  76. package/dist/components/p-C-_6TJs5.js.map +1 -0
  77. package/dist/components/{p-BSx-VRl1.js → p-CPLDlLfb.js} +99 -50
  78. package/dist/components/p-CPLDlLfb.js.map +1 -0
  79. package/dist/components/p-CRnyqUKc.js +47 -0
  80. package/dist/components/p-CRnyqUKc.js.map +1 -0
  81. package/dist/components/p-CabEU06O.js +103 -0
  82. package/dist/components/p-CabEU06O.js.map +1 -0
  83. package/dist/components/p-CmFUQbz_.js +507 -0
  84. package/dist/components/p-CmFUQbz_.js.map +1 -0
  85. package/dist/components/p-CumvV0_M.js +38 -0
  86. package/dist/components/p-CumvV0_M.js.map +1 -0
  87. package/dist/components/{p-C5Qpifsm.js → p-CwVUc6Hq.js} +20 -5
  88. package/dist/components/p-CwVUc6Hq.js.map +1 -0
  89. package/dist/components/p-DI6_jwLe.js +38 -0
  90. package/dist/components/p-DI6_jwLe.js.map +1 -0
  91. package/dist/components/p-DPfpDV5e.js +74 -0
  92. package/dist/components/p-DPfpDV5e.js.map +1 -0
  93. package/dist/components/p-DYiK8eDp.js +38 -0
  94. package/dist/components/p-DYiK8eDp.js.map +1 -0
  95. package/dist/components/polygon-buttons.js +1 -1
  96. package/dist/components/polygon-information.js +1 -1
  97. package/dist/components/search-icon.js +1 -1
  98. package/dist/components/settings-icon.js +1 -1
  99. package/dist/components/settings-modal.js +1 -1
  100. package/dist/components/solar-calculator.js +2 -2
  101. package/dist/components/solar-calculator.js.map +1 -1
  102. package/dist/components/solar-expert.js +52 -31
  103. package/dist/components/solar-expert.js.map +1 -1
  104. package/dist/components/solar-system-form.js +1 -1
  105. package/dist/components/tool-box.js +1 -1
  106. package/dist/components/undo-icon.d.ts +11 -0
  107. package/dist/components/undo-icon.js +9 -0
  108. package/dist/components/undo-icon.js.map +1 -0
  109. package/dist/esm/eraser-icon.house-icon.icon-selector.map-draw.map-selector.move-icon.octagon-minus-icon.polygon-buttons.polygon-information.search-icon.settings-icon.settings-modal.solar-expert.solar-system-form.tool-box.undo-icon.entry.js.map +1 -0
  110. package/dist/esm/eraser-icon_16.entry.js +3107 -0
  111. package/dist/esm/eraser-icon_16.entry.js.map +1 -0
  112. package/dist/esm/loader.js +1 -1
  113. package/dist/esm/loading-widget.entry.js +2 -2
  114. package/dist/esm/loading-widget.entry.js.map +1 -1
  115. package/dist/esm/solar-calculator.entry.js +2 -2
  116. package/dist/esm/solar-calculator.entry.js.map +1 -1
  117. package/dist/esm/stencil-library.js +1 -1
  118. package/dist/stencil-library/eraser-icon.house-icon.icon-selector.map-draw.map-selector.move-icon.octagon-minus-icon.polygon-buttons.polygon-information.search-icon.settings-icon.settings-modal.solar-expert.solar-system-form.tool-box.undo-icon.entry.esm.js.map +1 -0
  119. package/dist/stencil-library/loading-widget.entry.esm.js.map +1 -1
  120. package/dist/stencil-library/p-1acfe8c0.entry.js +32 -0
  121. package/dist/stencil-library/{p-04893dc6.entry.js.map → p-1acfe8c0.entry.js.map} +1 -1
  122. package/dist/stencil-library/p-1e2ddc82.entry.js +2 -0
  123. package/dist/stencil-library/p-1e2ddc82.entry.js.map +1 -0
  124. package/dist/stencil-library/p-56f8bd65.entry.js +2 -0
  125. package/dist/stencil-library/p-56f8bd65.entry.js.map +1 -0
  126. package/dist/stencil-library/solar-calculator.entry.esm.js.map +1 -1
  127. package/dist/stencil-library/stencil-library.esm.js +1 -1
  128. package/dist/types/components/icons/undo.d.ts +5 -0
  129. package/dist/types/components/map-draw/map-draw.d.ts +1 -0
  130. package/dist/types/components/map-draw/polygon-buttons.d.ts +1 -0
  131. package/dist/types/components/map-draw/tool-box.d.ts +1 -0
  132. package/dist/types/components/solar-expert/solar-expert.d.ts +1 -0
  133. package/dist/types/components/solar-system-form/solar-system-form.d.ts +3 -2
  134. package/dist/types/components.d.ts +21 -0
  135. package/dist/types/constants.d.ts +2 -1
  136. package/dist/types/types/lang.d.ts +5 -0
  137. package/dist/types/utils/render/tools.d.ts +2 -1
  138. package/dist/types/utils/simulation/simulation.d.ts +8 -0
  139. package/dist/types/utils/simulation/solarCurves.d.ts +3 -0
  140. package/dist/types/utils/simulation/types.d.ts +49 -0
  141. package/package.json +2 -2
  142. package/dist/cjs/eraser-icon.house-icon.icon-selector.map-draw.map-selector.move-icon.octagon-minus-icon.polygon-buttons.polygon-information.search-icon.settings-icon.settings-modal.solar-expert.solar-system-form.tool-box.entry.cjs.js.map +0 -1
  143. package/dist/cjs/eraser-icon_15.cjs.entry.js +0 -3007
  144. package/dist/cjs/eraser-icon_15.cjs.entry.js.map +0 -1
  145. package/dist/components/p-BJFgUvs3.js +0 -38
  146. package/dist/components/p-BJFgUvs3.js.map +0 -1
  147. package/dist/components/p-BP2JkbOB.js +0 -149
  148. package/dist/components/p-BP2JkbOB.js.map +0 -1
  149. package/dist/components/p-BSx-VRl1.js.map +0 -1
  150. package/dist/components/p-BfAeCWO4.js +0 -38
  151. package/dist/components/p-BfAeCWO4.js.map +0 -1
  152. package/dist/components/p-BilSpdUG.js +0 -94
  153. package/dist/components/p-BilSpdUG.js.map +0 -1
  154. package/dist/components/p-Bn39cXBR.js +0 -38
  155. package/dist/components/p-Bn39cXBR.js.map +0 -1
  156. package/dist/components/p-BzuGyPz5.js +0 -493
  157. package/dist/components/p-BzuGyPz5.js.map +0 -1
  158. package/dist/components/p-C4UfrfLc.js +0 -40
  159. package/dist/components/p-C4UfrfLc.js.map +0 -1
  160. package/dist/components/p-C5Qpifsm.js.map +0 -1
  161. package/dist/components/p-CesxKYgJ.js +0 -38
  162. package/dist/components/p-CesxKYgJ.js.map +0 -1
  163. package/dist/components/p-Cm-6HU5f.js +0 -38
  164. package/dist/components/p-Cm-6HU5f.js.map +0 -1
  165. package/dist/components/p-D93MrNOs.js +0 -174
  166. package/dist/components/p-D93MrNOs.js.map +0 -1
  167. package/dist/components/p-DSWRVBhO.js +0 -74
  168. package/dist/components/p-DSWRVBhO.js.map +0 -1
  169. package/dist/components/p-klKuBKKU.js +0 -149
  170. package/dist/components/p-klKuBKKU.js.map +0 -1
  171. package/dist/components/p-metMBa33.js +0 -38
  172. package/dist/components/p-metMBa33.js.map +0 -1
  173. package/dist/esm/eraser-icon.house-icon.icon-selector.map-draw.map-selector.move-icon.octagon-minus-icon.polygon-buttons.polygon-information.search-icon.settings-icon.settings-modal.solar-expert.solar-system-form.tool-box.entry.js.map +0 -1
  174. package/dist/esm/eraser-icon_15.entry.js +0 -2991
  175. package/dist/esm/eraser-icon_15.entry.js.map +0 -1
  176. package/dist/stencil-library/eraser-icon.house-icon.icon-selector.map-draw.map-selector.move-icon.octagon-minus-icon.polygon-buttons.polygon-information.search-icon.settings-icon.settings-modal.solar-expert.solar-system-form.tool-box.entry.esm.js.map +0 -1
  177. package/dist/stencil-library/p-02607fda.entry.js +0 -2
  178. package/dist/stencil-library/p-02607fda.entry.js.map +0 -1
  179. package/dist/stencil-library/p-04893dc6.entry.js +0 -32
  180. package/dist/stencil-library/p-3af1ea82.entry.js +0 -2
  181. package/dist/stencil-library/p-3af1ea82.entry.js.map +0 -1
@@ -1,21 +1,19 @@
1
1
  import { h } from "@stencil/core";
2
- // import Chart from "chart.js/auto";
3
2
  import { DEFAULT_SOLAR_PANEL_TYPE } from "../../config";
4
3
  import { getLanguageStrings } from "../../utils/lang/general";
5
4
  import { state } from "../../store";
6
- import { CONSUMPTION_PROFILES, SOLAR_RADIATION } from "../../constants";
5
+ import { generateElectricCarChargingHours, simulate, } from "../../utils/simulation/simulation";
7
6
  export class SolarSystemForm {
8
7
  systemConfigs = {};
9
8
  roofPolygons = {};
10
9
  obstructionPolygons = {};
11
- householdConsumption = 3500;
10
+ householdConsumption = 4500;
12
11
  consumptionProfile = "mostly_at_home";
13
12
  electricityPrice = 0.3;
14
13
  compensationRate = 0.07;
15
14
  annualPriceIncrease = 2;
16
15
  autonomy = 0;
17
16
  costSavings = 0;
18
- costSavings25Years = 0;
19
17
  numberOfPanels = 5;
20
18
  panelPeakPower = 0.4; // kW per panel
21
19
  name = "";
@@ -26,168 +24,67 @@ export class SolarSystemForm {
26
24
  electricCarChargingTime = "day";
27
25
  heatPump = 0;
28
26
  battery = 0;
29
- // private chart: Chart | null = null;
30
- // private chartRef: HTMLCanvasElement | null = null;
27
+ compensation25Years = 0;
28
+ savedCosts25Years = 0;
29
+ maxPanels = 5;
31
30
  updateSystemConfigs() {
32
31
  if (Object.keys(this.systemConfigs).length === 0) {
33
32
  this.numberOfPanels = 0;
33
+ this.maxPanels = 0;
34
34
  return;
35
35
  }
36
36
  this.numberOfPanels = Object.keys(this.systemConfigs).reduce((acc, curr) => acc + this.systemConfigs[curr].positionedPanels.length, 0);
37
+ this.maxPanels = Object.keys(this.systemConfigs).reduce((acc, curr) => acc + this.systemConfigs[curr].positionedPanels.length, 0);
37
38
  this.panelPeakPower =
38
39
  Object.entries(this.systemConfigs)[0][1].positionedPanels[0].panel
39
40
  .kWattPeak;
40
41
  this.recalculate();
41
- this.updateChart();
42
42
  }
43
43
  recalculate() {
44
- const data = CONSUMPTION_PROFILES[this.consumptionProfile];
45
- const norm = data.reduce((acc, curr) => acc + curr, 0);
46
- // Calculate heat pump consumption (0.05 kWh per m² per day)
47
- const heatPumpDailyConsumption = this.heatPump * 0.05;
48
- const heatPumpYearlyConsumption = heatPumpDailyConsumption * 365;
49
- // Calculate electric car consumption (20 kWh per day)
50
- const electricCarDailyConsumption = this.electricCar ? 20 : 0;
51
- const electricCarYearlyConsumption = electricCarDailyConsumption * 365;
52
- // Add heat pump and electric car consumption to total household consumption
53
- const totalHouseholdConsumption = this.householdConsumption +
54
- heatPumpYearlyConsumption + electricCarYearlyConsumption;
55
- const peakKwh = this.numberOfPanels * this.panelPeakPower;
56
- const production = SOLAR_RADIATION.map((radiation) => radiation * peakKwh);
57
- let energyUsageOfProduction = 0;
58
- let soldEnergy = 0;
59
- let batteryCharge = 0; // Current battery charge in kWh
60
- // Calculate hourly electric car consumption
61
- const hourlyCarConsumption = this.electricCar ? 20 / 24 : 0; // Distribute 20 kWh evenly across 24 hours
62
- for (let i = 0; i < data.length; i++) {
63
- // Add electric car consumption to the base consumption
64
- let hourlyConsumption = data[i] * totalHouseholdConsumption / norm /
65
- 365;
66
- // Add electric car consumption based on charging time preference
67
- if (this.electricCar) {
68
- if (this.electricCarChargingTime === "day" && i >= 6 && i <= 18) {
69
- hourlyConsumption += hourlyCarConsumption;
70
- }
71
- else if (this.electricCarChargingTime === "night" &&
72
- (i < 6 || i > 18)) {
73
- hourlyConsumption += hourlyCarConsumption;
74
- }
75
- }
76
- // Calculate energy difference for this hour
77
- const energyDifference = production[i] - hourlyConsumption;
78
- if (energyDifference > 0) {
79
- // Excess production - try to store in battery first
80
- const remainingBatteryCapacity = this.battery - batteryCharge;
81
- const energyToStore = Math.min(energyDifference, remainingBatteryCapacity);
82
- if (energyToStore > 0) {
83
- batteryCharge += energyToStore;
84
- energyUsageOfProduction += hourlyConsumption;
85
- soldEnergy += energyDifference - energyToStore;
86
- }
87
- else {
88
- // Battery full, sell excess
89
- energyUsageOfProduction += hourlyConsumption;
90
- soldEnergy += energyDifference;
91
- }
92
- }
93
- else if (energyDifference < 0) {
94
- // Production deficit - try to use battery
95
- const energyNeeded = -energyDifference;
96
- const energyFromBattery = Math.min(energyNeeded, batteryCharge);
97
- if (energyFromBattery > 0) {
98
- batteryCharge -= energyFromBattery;
99
- energyUsageOfProduction += production[i] +
100
- energyFromBattery;
101
- }
102
- else {
103
- // No battery power available
104
- energyUsageOfProduction += production[i];
44
+ const simulationConfig = {
45
+ general: {
46
+ simulationYears: 25,
47
+ },
48
+ householdConsumption: {
49
+ consumptionProfile: this.consumptionProfile,
50
+ winterConsumptionFactor: 1.2,
51
+ summerConsumptionFactor: 0.8,
52
+ averageConsumption: this.householdConsumption / 365,
53
+ },
54
+ electricityPrice: {
55
+ purchase: this.electricityPrice,
56
+ sell: this.compensationRate,
57
+ increase: this.annualPriceIncrease / 100,
58
+ },
59
+ solarSystem: {
60
+ numberOfPanels: this.numberOfPanels,
61
+ panelType: DEFAULT_SOLAR_PANEL_TYPE,
62
+ pitch: 30,
63
+ },
64
+ batteryKWh: this.battery,
65
+ solarRadiation: {
66
+ winterFactor: 0.2,
67
+ summerFactor: 0.6,
68
+ },
69
+ heatPump: {
70
+ m2: this.heatPump,
71
+ },
72
+ electricCar: this.electricCar
73
+ ? {
74
+ averageKilometersPerDay: 50,
75
+ consumptionkWhPer100km: 17,
76
+ batteryKWh: 20,
77
+ chargingHours: this.electricCarChargingTime === "day"
78
+ ? generateElectricCarChargingHours(6, 18)
79
+ : generateElectricCarChargingHours(18, 6),
105
80
  }
106
- }
107
- else {
108
- // Production equals consumption
109
- energyUsageOfProduction += hourlyConsumption;
110
- }
111
- }
112
- // Calculate the cost savings
113
- this.costSavings = soldEnergy * this.compensationRate * 365 +
114
- energyUsageOfProduction * 365 * this.electricityPrice;
115
- // Calculate 25-year savings with price increase
116
- let totalSavings = 0;
117
- let currentPrice = this.electricityPrice;
118
- for (let year = 0; year < 25; year++) {
119
- const yearlySavings = soldEnergy * this.compensationRate * 365 +
120
- energyUsageOfProduction * 365 * currentPrice;
121
- totalSavings += yearlySavings;
122
- currentPrice *= 1 + this.annualPriceIncrease / 100;
123
- }
124
- this.costSavings25Years = totalSavings;
125
- this.autonomy =
126
- (energyUsageOfProduction / (totalHouseholdConsumption / 365)) *
127
- 100;
128
- }
129
- updateChart() {
130
- // if (!this.chartRef) return;
131
- // const ctx = this.chartRef.getContext("2d");
132
- // if (!ctx) return;
133
- // if (this.chart) {
134
- // this.chart.destroy();
135
- // }
136
- // const hours = Array.from({ length: 24 }, (_, i) => `${i}:00`);
137
- // const data = CONSUMPTION_PROFILES[this.consumptionProfile];
138
- // const norm = data.reduce((acc, curr) => acc + curr, 0);
139
- // const peakKwh = this.numberOfPanels * this.panelPeakPower;
140
- // const production = SOLAR_RADIATION.map((radiation) =>
141
- // radiation * peakKwh
142
- // );
143
- // for (let i = 0; i < data.length; i++) {
144
- // data[i] = data[i] * this.householdConsumption / norm / 365;
145
- // }
146
- // let datasets = [{
147
- // label: "Energy Consumption",
148
- // data: data,
149
- // borderColor: "#964500",
150
- // backgroundColor: "rgba(150, 69, 0, 0.1)",
151
- // fill: true,
152
- // tension: 0.4,
153
- // }, {
154
- // label: "Energy Production",
155
- // data: production,
156
- // borderColor: "#000000",
157
- // backgroundColor: "rgba(0, 0, 0, 0.1)",
158
- // fill: true,
159
- // }];
160
- // this.chart = new Chart(ctx, {
161
- // type: "line",
162
- // data: {
163
- // labels: hours,
164
- // datasets: datasets,
165
- // },
166
- // options: {
167
- // responsive: true,
168
- // plugins: {
169
- // title: {
170
- // display: true,
171
- // text: "Daily Consumption Profile",
172
- // },
173
- // },
174
- // scales: {
175
- // y: {
176
- // beginAtZero: true,
177
- // title: {
178
- // display: true,
179
- // text: "Relative Consumption",
180
- // },
181
- // },
182
- // x: {
183
- // title: {
184
- // display: true,
185
- // text: "Hour of Day",
186
- // },
187
- // },
188
- // },
189
- // },
190
- // });
81
+ : undefined,
82
+ };
83
+ const result = simulate(simulationConfig);
84
+ this.compensation25Years = result.compensationPerDay * 365 * 25;
85
+ this.savedCosts25Years = result.byYearSavedCosts.reduce((acc, curr) => acc + curr, 0);
86
+ this.costSavings = result.compensationPerDay * 365;
87
+ this.autonomy = result.autonomy * 100;
191
88
  }
192
89
  componentWillLoad() {
193
90
  this.updateSystemConfigs();
@@ -236,100 +133,101 @@ export class SolarSystemForm {
236
133
  }
237
134
  render() {
238
135
  const t = getLanguageStrings(state.settings.language);
239
- return (h("div", { key: 'f900386e739e03be601dcbd3b56e9193b9918c9c', class: "flex flex-col justify-center items-center w-full h-full pt-4" // style={{
136
+ return (h("div", { key: '744d980cd58f2d3d04f7f3ff4938781a6c645fe5', class: "flex flex-col justify-center items-center w-full h-full pt-4" // style={{
240
137
  ,
241
138
  // display: (Object.keys(this.systemConfigs).length === 0)
242
139
  // ? "none"
243
140
  // : "flex",
244
141
  // }}
245
- id: "solar-system-form" }, h("h1", { key: '853e513f3c0e29831dae93889d5d95f50373ad9e', class: "text-2xl font-bold text-[#271200] mb-4 w-full" }, t.solarSystemForm.title), h("div", { key: 'a1b1946b52ad2f91b6c97a4cdab6e4df93640b2f', class: "w-full bg-[#f3ebda] rounded-4xl p-6 space-y-6" }, h("div", { key: '7c19d788c86eae08383cf91e90ba23f986a3ff37', class: "space-y-4" }, h("h2", { key: '1405420d65b334691dd3a08347921e6488f6cad5', class: "text-lg font-semibold text-[#271200]" }, t.solarSystemForm.systemInformation), h("div", { key: 'ce01fe0f6be6029cb18f8a3e3aceff91c3f48499', class: "grid grid-rows-2 gap-0" }, h("div", { key: 'aa35d379e3807c08bc733710848696ce711b794c', class: "grid grid-cols-2 gap-4" }, h("label", { key: 'ea961b4b655b9ba0723f27df3d4b520e69bc3fc3', class: "block text-sm font-medium text-gray-600 mb-1" }, t.solarSystemForm.numberOfPanels), h("label", { key: 'cd34f9431f44326985d0d1dc3a92fe24d9789e30', class: "block text-sm font-medium text-gray-600 mb-1" }, t.solarSystemForm.panelPeakPower)), h("div", { key: '9fe68f3f8b2f027b75f0fb9eaeb0ac6281813ae6', class: "grid grid-cols-2 gap-4" }, h("input", { key: '781684a8b347faa29c368cda5e6b3880d0db2a4d', type: "number", class: "w-full px-4 py-2 rounded-4xl border border-gray-300 focus:ring-2 focus:ring-[#964500] focus:border-transparent bg-white", value: this.numberOfPanels, readOnly: true }), h("input", { key: 'b6ffb5c01e8d1ce097e2bf31d3b79c44fe65f3ee', type: "number", class: "w-full px-4 py-2 rounded-4xl border border-gray-300 focus:ring-2 focus:ring-[#964500] focus:border-transparent bg-white", value: this.panelPeakPower, readonly: true }))), h("div", { key: 'bcc627f1f2df822a572e354d54b08d08b5ab380a', class: "bg-white rounded-4xl p-4" }, h("div", { key: '0d78f8bba40b066ec52145e0516edc5497cdddd2', class: "flex items-center justify-between" }, h("span", { key: 'b4165549254fb259c8040ba770dc87901659b061', class: "text-gray-600" }, t.solarSystemForm.totalSystemPeakPower), h("span", { key: 'b20034fcb42c069bdefa4f9c47030bae8f4b1e4b', class: "text-xl font-bold text-[#271200]" }, (DEFAULT_SOLAR_PANEL_TYPE.kWattPeak *
246
- this.numberOfPanels).toFixed(1), " kW")))), h("div", { key: 'c89c679fde1ae597f79686213554c12dd8a22a46', class: "space-y-4" }, h("h2", { key: '23830df1f2ecdba69d02c956183cd362078d2d24', class: "text-lg font-semibold text-[#271200]" }, t.solarSystemForm.householdConsumptionTitle), h("div", { key: '475a4146c7504e52f3bacb283b8af35f47ad5a43', class: "grid grid-rows-2 gap-0" }, h("div", { key: '52fbf01dfdd84e2b5c77870cc1d61164579075aa', class: "grid grid-cols-2 gap-4" }, h("label", { key: '162c72eb189ffcfa6447a5ac5adfed83ceabeec7', class: "block text-sm font-medium text-gray-600" }, t.solarSystemForm.annualConsumption), h("label", { key: 'e283fc023a34c8471aa3177d57ed8c7db3b097b2', class: "block text-sm font-medium text-gray-600" }, t.solarSystemForm.consumptionProfileTitle)), h("div", { key: '61ba7bba4681174974feea2bb367cbc8ccef12e6', class: "grid grid-cols-2 gap-4" }, h("input", { key: 'd9db3dd0fc8358ab66b85396693bc805cd608a32', type: "number", class: "w-full px-4 py-2 rounded-4xl border border-gray-300 focus:ring-2 focus:ring-[#964500] focus:border-transparent bg-white", value: this.householdConsumption, onInput: (e) => {
142
+ id: "solar-system-form" }, h("h1", { key: 'f003bc55e2f63531822bd23ac3d39946d730df69', class: "text-2xl font-bold text-[#271200] mb-4 w-full" }, t.solarSystemForm.title), h("div", { key: '20c215156baabe57b3188759741d7d20c99270ef', class: "w-full bg-[#f3ebda] rounded-4xl p-6 space-y-6" }, h("div", { key: '7372fb2f5dadd14e0bc411773598c1316b7d1607', class: "space-y-4" }, h("h2", { key: '05978eeb5b39b5e37e40cd052bb64f9f239b1a01', class: "text-lg font-semibold text-[#271200]" }, t.solarSystemForm.systemInformation), h("div", { key: '005128f28eee0bba612bcc5b65f81a546d52e754', class: "grid grid-rows-3 gap-0" }, h("div", { key: '9095d807e024286e0ddd505e4f0c4d6311e92f99', class: "grid grid-cols-2 gap-4" }, h("label", { key: 'ce78ba6e92916f72a53698c1372637d065010d22', class: "block text-sm font-medium text-gray-600 mb-1" }, t.solarSystemForm.numberOfPanels), h("label", { key: '4c2f7e8a88baa146a4f01e2dabafaea416c74acd', class: "block text-sm font-medium text-gray-600 mb-1" }, t.solarSystemForm.panelPeakPower)), h("div", { key: 'fc7b28c8de9de709b7116612213f993e37598b09', class: "grid grid-cols-2 gap-4" }, h("input", { key: 'b7b63eb3667e664c6b7dcf251b786a20882b500d', type: "number", class: "w-full px-4 py-2 rounded-4xl border border-gray-300 focus:ring-2 focus:ring-[#964500] focus:border-transparent bg-white", value: this.numberOfPanels, readOnly: true }), h("input", { key: 'c500aa9a91ce6b21f734d95d92532d82be154055', type: "number", class: "w-full px-4 py-2 rounded-4xl border border-gray-300 focus:ring-2 focus:ring-[#964500] focus:border-transparent bg-white", value: this.panelPeakPower, readonly: true })), h("div", { key: 'd69c51ebd1188abaf61de239ce5d537ad9115a7e', class: "grid grid-cols-2 gap-4" }, h("div", { key: 'ecac73eba72e206b678d86ba18b4ba04e72d6e2d', class: "w-full pt-2" }, h("input", { key: '48a2fda42efcbd457df3c21ba63cb73066471052', type: "range", min: "1", max: this.maxPanels, step: "1", class: "input-slider w-full custom-range appearance-none rounded-full bg-transparent [&::-webkit-slider-runnable-track]:rounded-full [&::-webkit-slider-runnable-track]:bg-black/25 [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:h-[10px] [&::-webkit-slider-thumb]:w-[10px] [&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:bg-white", value: this.numberOfPanels, onInput: (e) => {
143
+ this.numberOfPanels = parseInt(e.target
144
+ .value);
145
+ this.recalculate();
146
+ } })))), h("div", { key: 'b01c9bbec27359126ed3283a14e275861ca79194', class: "bg-white rounded-4xl p-4" }, h("div", { key: '4be558f4d94a68bda294dc32155df64243e3f2c7', class: "flex items-center justify-between" }, h("span", { key: '677a12d0236e17349fff064f6fad76279a51299a', class: "text-gray-600" }, t.solarSystemForm.totalSystemPeakPower), h("span", { key: '15f819a867ee238aeeb4f9cfc24b7b5e607176c8', class: "text-xl font-bold text-[#271200]" }, (DEFAULT_SOLAR_PANEL_TYPE.kWattPeak *
147
+ this.numberOfPanels).toFixed(1), " kW")))), h("div", { key: '0adcb579dce8f9357c2631b4b6fa8dc0e66a5727', class: "space-y-4" }, h("h2", { key: '93ce837e4b57123e19629499d371211c82b67f17', class: "text-lg font-semibold text-[#271200]" }, t.solarSystemForm.householdConsumptionTitle), h("div", { key: '7c1b46ffac1807ffa75b98b9ff317250cb7f4f3f', class: "grid grid-rows-2 gap-0" }, h("div", { key: '115981c3667bdd500bb9ed9862dfcf6c57cf3488', class: "grid grid-cols-2 gap-4" }, h("label", { key: '1d36b519882a44f84f948594f2aac031c8b14785', class: "block text-sm font-medium text-gray-600" }, t.solarSystemForm.annualConsumption), h("label", { key: 'd0360fb66300f6a1048d6318ad388a28c25ede1c', class: "block text-sm font-medium text-gray-600" }, t.solarSystemForm.consumptionProfileTitle)), h("div", { key: '830c929bedc1731853b8abb4602c1a183b31c5d9', class: "grid grid-cols-2 gap-4" }, h("input", { key: '1f0625102ccf8711c5d25b8b42086ddacf0f5bce', type: "number", class: "w-full px-4 py-2 rounded-4xl border border-gray-300 focus:ring-2 focus:ring-[#964500] focus:border-transparent bg-white", value: this.householdConsumption, onInput: (e) => {
247
148
  this.householdConsumption = parseInt(e.target
248
149
  .value);
249
150
  this.recalculate();
250
- this.updateChart();
251
- } }), h("select", { key: 'bc3f018b0e3610911a313361b4ccfae5fe3b09b9', class: "w-full px-4 py-2 rounded-4xl border border-gray-300 focus:ring-2 focus:ring-[#964500] focus:border-transparent bg-white", onChange: (e) => {
151
+ } }), h("select", { key: '39cec2d7c15bd3eec6091b3dc6384ab7ed95310c', class: "w-full px-4 py-2 rounded-4xl border border-gray-300 focus:ring-2 focus:ring-[#964500] focus:border-transparent bg-white", onChange: (e) => {
252
152
  this.consumptionProfile =
253
153
  e.target
254
154
  .value;
255
155
  this.recalculate();
256
- this.updateChart();
257
- } }, h("option", { key: 'eed73b9e3f47b5ca6050e29180ea388cd3c915d0', value: "mostly_at_home", selected: this.consumptionProfile ===
156
+ } }, h("option", { key: '74b10c47b8fefb3aee7c818d35797649cd9cf700', value: "mostly_at_home", selected: this.consumptionProfile ===
258
157
  "mostly_at_home" }, t.solarSystemForm.consumptionProfiles
259
- .mostlyAtHome), h("option", { key: '75c4b6dbb160258533d53ffe5105dc80704ce1b5', value: "mostly_away", selected: this.consumptionProfile ===
158
+ .mostlyAtHome), h("option", { key: '650009f75563391223500548984d7c36ad6c13b2', value: "mostly_away", selected: this.consumptionProfile ===
260
159
  "mostly_away" }, t.solarSystemForm.consumptionProfiles
261
- .mostlyAway))))), h("div", { key: '02d03da8ecf11bd3b78c21f1b42cb862879f80d2', class: "space-y-4" }, h("h2", { key: 'f136aa12ba42d5f2752f93c2727523053d0e4e07', class: "text-lg font-semibold text-[#271200]" }, t.solarSystemForm.additionalComponents.title), h("div", { key: 'e84c599231f113dc00dc14d679b4f3c7ec03972f', class: "flex flex-col gap-4" }, h("div", { key: '49496d607698485677692f6e651ca3ad557f83d5', class: "flex flex-col bg-white rounded-4xl p-4 gap-4" }, h("div", { key: '4a77af1f155ff1a2831e4c30cf354d765d1c89f6', class: "flex items-center justify-between" }, h("div", { key: '406d4a5cb7daf2dbe3810c5abba54ce9b9fda8b6', class: "flex items-center gap-2" }, h("input", { key: '0d715601b805f86c050cdd9c4cd526a422441d0a', type: "checkbox", id: "heatPump", class: "w-4 h-4 accent-[#964500] border-gray-300 rounded-full focus:ring-[#964500] focus:ring-offset-0 focus:ring-2", checked: this.heatPump > 0, onChange: (e) => {
160
+ .mostlyAway))))), h("div", { key: '86a106ff0692fe3387ac8cd885120933b4f0e4d0', class: "space-y-4" }, h("h2", { key: 'ec07a0b6a96ed21036fb01ec15b5e14f26c05717', class: "text-lg font-semibold text-[#271200]" }, t.solarSystemForm.additionalComponents.title), h("div", { key: '2406008f140b2e6118a1158c40170db3049d1d0e', class: "flex flex-col gap-4" }, h("div", { key: '7e11cbbb64c167795b8f3d67e81936cbcab7e437', class: "flex flex-col bg-white rounded-4xl p-4 gap-4" }, h("div", { key: '4939f5f7fc79efadbc861f5b5d64730fe6dd08ec', class: "flex items-center justify-between" }, h("div", { key: 'e8a076f0129819d83c021baf76f9051e32a51745', class: "flex items-center gap-2" }, h("input", { key: 'acc0ae74a9fcd0bedce903ffa5d38f2174ba2874', type: "checkbox", id: "heatPump", class: "w-4 h-4 accent-[#964500] border-gray-300 rounded-full focus:ring-[#964500] focus:ring-offset-0 focus:ring-2", checked: this.heatPump > 0, onChange: (e) => {
262
161
  this.heatPump =
263
162
  e.target
264
163
  .checked
265
164
  ? 100
266
165
  : 0;
267
166
  this.recalculate();
268
- } }), h("label", { key: 'ca7f594131c1b38d8354d9b613278fb3b5115421', htmlFor: "heatPump", class: "text-gray-600" }, t.solarSystemForm
167
+ } }), h("label", { key: 'cd903331c1dadec8fb8e32fb292a35e833349dde', htmlFor: "heatPump", class: "text-gray-600" }, t.solarSystemForm
269
168
  .additionalComponents
270
- .heatPump)), this.heatPump > 0 && (h("span", { key: 'c084c1de7c4e5ffeaea41a458d37316b0d10882a', class: "text-gray-600" }, this.heatPump, " m\u00B2"))), this.heatPump > 0 && (h("div", { key: 'c06d4124569d2ece44eccaba71aef3b2187efcb1', class: "flex flex-col gap-2" }, h("input", { key: '3bbc9b18beda8e88ecdcb013c52ac18809a2e8ca', type: "range", min: "10", max: "300", step: "10", class: "custom-range appearance-none rounded-full bg-transparent [&::-webkit-slider-runnable-track]:rounded-full [&::-webkit-slider-runnable-track]:bg-black/25 [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:h-[10px] [&::-webkit-slider-thumb]:w-[10px] [&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:bg-white", value: this.heatPump, onInput: (e) => {
169
+ .heatPump)), this.heatPump > 0 && (h("span", { key: 'a4b28f091c369e7b8167326f6f0ce7ce2ed87403', class: "text-gray-600" }, this.heatPump, " m\u00B2"))), this.heatPump > 0 && (h("div", { key: '21799a5144de79e95bd82efd8e32d9a77d939e82', class: "flex flex-col gap-2" }, h("input", { key: 'c378e59e2421626b59aab30dca50d689318ea1c5', type: "range", min: "10", max: "300", step: "10", class: "input-slider custom-range appearance-none rounded-full bg-transparent [&::-webkit-slider-runnable-track]:rounded-full [&::-webkit-slider-runnable-track]:bg-black/25 [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:h-[10px] [&::-webkit-slider-thumb]:w-[10px] [&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:bg-white", value: this.heatPump, onInput: (e) => {
271
170
  this.heatPump = parseInt(e.target
272
171
  .value);
273
172
  this.recalculate();
274
- } })))), h("div", { key: 'e3c457c9a457d2b8661abcf75a5a518a6a6f507a', class: "flex flex-col bg-white rounded-4xl p-4 gap-4" }, h("div", { key: '4074cb86c2e58229168bd52bc6a71e7af6398ad6', class: "flex items-center justify-between" }, h("div", { key: '16831cc0608c21bd8f8755a3d0934ab665745692', class: "flex items-center gap-2" }, h("input", { key: '91d96004f0dc693578f89d118bcce87093821cf0', type: "checkbox", id: "electricCar", class: "w-4 h-4 accent-[#964500] border-gray-300 rounded focus:ring-[#964500] focus:ring-offset-0 focus:ring-2", checked: this.electricCar, onChange: (e) => {
173
+ } })))), h("div", { key: 'f361c0fc04391089240776a5dd76eb4a1f139dc2', class: "flex flex-col bg-white rounded-4xl p-4 gap-4" }, h("div", { key: '02bc28aff14eb518268cabb806caf30749fee32e', class: "flex items-center justify-between" }, h("div", { key: 'f53cb4db1f15b85743a2ba6d20486d0c12da3447', class: "flex items-center gap-2" }, h("input", { key: 'b6e4a0f08869fa9e7950371d590b9991ec03d452', type: "checkbox", id: "electricCar", class: "w-4 h-4 accent-[#964500] border-gray-300 rounded focus:ring-[#964500] focus:ring-offset-0 focus:ring-2", checked: this.electricCar, onChange: (e) => {
275
174
  this.electricCar =
276
175
  e.target
277
176
  .checked;
278
177
  this.recalculate();
279
- } }), h("label", { key: '2474e63d5479806ae9c2fc800b49504499c2fa6c', htmlFor: "electricCar", class: "text-gray-600" }, t.solarSystemForm
178
+ } }), h("label", { key: 'a607d596e03ee4969111bd4124507814f1ea048d', htmlFor: "electricCar", class: "text-gray-600" }, t.solarSystemForm
280
179
  .additionalComponents
281
- .electricCar))), this.electricCar && (h("div", { key: '9465955a1cf5b742c7589c62e71cbc4a56d0cef9', class: "flex flex-col gap-2" }, h("label", { key: '36443b598c3e95159e0dc2343235e361b805bbbe', class: "text-sm text-gray-600" }, t.solarSystemForm
180
+ .electricCar))), this.electricCar && (h("div", { key: '65681c033ecb581ac19c28034b456d3d2dc8bb6c', class: "flex flex-col gap-2" }, h("label", { key: 'e95874e8b94206c57fe44ed7355be4e38ddbd2ed', class: "text-sm text-gray-600" }, t.solarSystemForm
282
181
  .additionalComponents
283
- .chargingTime), h("select", { key: '21a0baf1b1ec4d58517179c37d058c156661645c', class: "w-full px-4 py-2 rounded-4xl border border-gray-300 focus:ring-2 focus:ring-[#964500] focus:border-transparent bg-white", onChange: (e) => {
182
+ .chargingTime), h("select", { key: '47ed96b55ae0b40ab0bd40236f3f1def09701548', class: "w-full px-4 py-2 rounded-4xl border border-gray-300 focus:ring-2 focus:ring-[#964500] focus:border-transparent bg-white", onChange: (e) => {
284
183
  this.electricCarChargingTime =
285
184
  e.target
286
185
  .value;
287
186
  this.recalculate();
288
- } }, h("option", { key: '207f35aa95436bfcfb10e4eb97a7edf4a0eafa1f', value: "day", selected: this
187
+ } }, h("option", { key: '1c48c51cae0282d0f2663ee0683e0d828e2cc508', value: "day", selected: this
289
188
  .electricCarChargingTime ===
290
189
  "day" }, t.solarSystemForm
291
190
  .additionalComponents
292
- .chargingTimeDay), h("option", { key: '58e5bd73f50127d5e0bce07b9f82d546efe3dea4', value: "night", selected: this
191
+ .chargingTimeDay), h("option", { key: 'a8f55ef8f4bfecca29290ae2bd49975bd3cfc386', value: "night", selected: this
293
192
  .electricCarChargingTime ===
294
193
  "night" }, t.solarSystemForm
295
194
  .additionalComponents
296
- .chargingTimeNight))))), h("div", { key: 'c10fae6c6f9712d0221711539f1735bda5acf123', class: "flex flex-col bg-white rounded-4xl p-4 gap-4" }, h("div", { key: '2e6da0a061db6ea28a4913677c892bd4f0de62bf', class: "flex items-center justify-between" }, h("label", { key: '86855eba836bfbd7e28aabd61a6bc1d804047cba', class: "text-gray-600" }, t.solarSystemForm.additionalComponents
297
- .battery), h("span", { key: '1e77f5431721b4de66aacb08caec4d9315ee2987', class: "text-gray-600" }, this.battery, " kWh")), h("div", { key: 'f0a2477758b2d21ce7afd47e064c379bdf9f220e', class: "flex flex-col gap-2" }, h("input", { key: 'cb6ad0d4131896ad131067bca9818818b869bf4e', type: "range", min: "0", max: "20", step: "1", class: "w-full custom-range appearance-none rounded-full bg-transparent [&::-webkit-slider-runnable-track]:rounded-full [&::-webkit-slider-runnable-track]:bg-black/25 [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:h-[10px] [&::-webkit-slider-thumb]:w-[10px] [&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:bg-white", value: this.battery, onInput: (e) => {
195
+ .chargingTimeNight))))), h("div", { key: '5050cb4356d0f01bd6de72c778efd3d74dc48fcc', class: "flex flex-col bg-white rounded-4xl p-4 gap-4" }, h("div", { key: '94bc81576b9f577edf0eb5a50e5a72ea70a6a23c', class: "flex items-center justify-between" }, h("label", { key: '78374a6a108650c6e9da3d690c5cde3409009b64', class: "text-gray-600" }, t.solarSystemForm.additionalComponents
196
+ .battery), h("span", { key: '7dc59ee19216c1a59a19b3c6cd0889faebb9af85', class: "text-gray-600" }, this.battery, " kWh")), h("div", { key: '6880afe65e17ecfb231d994cc03618457738c68f', class: "flex flex-col gap-2" }, h("input", { key: 'e07afb820af65843e68e34a84730edc5b214440b', type: "range", min: "0", max: "20", step: "1", class: "input-slider w-full custom-range appearance-none rounded-full bg-transparent [&::-webkit-slider-runnable-track]:rounded-full [&::-webkit-slider-runnable-track]:bg-black/25 [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:h-[10px] [&::-webkit-slider-thumb]:w-[10px] [&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:bg-white", value: this.battery, onInput: (e) => {
298
197
  this.battery = parseInt(e.target
299
198
  .value);
300
199
  this.recalculate();
301
- } }))))), h("div", { key: '28db1c220c3748a58a673a634383727a8470ce36', class: "space-y-4" }, h("h2", { key: 'b81b18400b3649aea81b565cbcc9ce1fd01050db', class: "text-lg font-semibold text-[#271200]" }, t.solarSystemForm.electricityCostsTitle), h("div", { key: '5c7b172a9e1fe43c0429be3963d21e45e814b0c6', class: "grid grid-rows-2 gap-0" }, h("div", { key: 'd72f5fc0be4ca75bc25732eb4f51cfbc943de231', class: "grid grid-cols-3 gap-4" }, h("label", { key: '114f86a301efeec32be8422a75fd0678a1b25c51', class: "block text-sm font-medium text-gray-600 mb-1" }, t.solarSystemForm.electricityPrice), h("label", { key: '4530512fdae93be4ae8ec4d679a62c5322dc9802', class: "block text-sm font-medium text-gray-600 mb-1" }, t.solarSystemForm.compensationRate), h("label", { key: 'a82d5c1391a35e5f1fbed03592ec9f8ecca493b4', class: "block text-sm font-medium text-gray-600 mb-1" }, t.solarSystemForm.annualPriceIncrease)), h("div", { key: 'bd31f29e1cd4a9927f850b2c2d8b20a677fae3eb', class: "grid grid-cols-3 gap-4" }, h("input", { key: '56e603dd7ffcde16e6ea30470ee047afe2baedb2', type: "number", step: "0.01", class: "w-full px-4 py-2 rounded-4xl border border-gray-300 focus:ring-2 focus:ring-[#964500] focus:border-transparent bg-white", value: this.electricityPrice.toFixed(2), onInput: (e) => {
200
+ } }))))), h("div", { key: 'a4bfb580de1e3c45a9f3b25acdec60008be691ce', class: "space-y-4" }, h("h2", { key: 'dfd3a5492bc3b57e800b3c946e95ada611190378', class: "text-lg font-semibold text-[#271200]" }, t.solarSystemForm.electricityCostsTitle), h("div", { key: '51e1bce640dd72353ee4f163c4d0db3343a87504', class: "grid grid-rows-2 gap-0" }, h("div", { key: '96422dfb55d394ad3678a924681e954b7ce22df3', class: "grid grid-cols-3 gap-4" }, h("label", { key: 'cf0d91a03cc3daef6fa6d82be31871bab5f7c100', class: "block text-sm font-medium text-gray-600 mb-1" }, t.solarSystemForm.electricityPrice), h("label", { key: '8ddfef1b47fb2ed3408a94244ed34d03d20445b7', class: "block text-sm font-medium text-gray-600 mb-1" }, t.solarSystemForm.compensationRate), h("label", { key: 'b6f72c81858b794c1326c13ebf1e7874d8a73375', class: "block text-sm font-medium text-gray-600 mb-1" }, t.solarSystemForm.annualPriceIncrease)), h("div", { key: '53bb5a5f2332e2a47c1266f22106809128678e56', class: "grid grid-cols-3 gap-4" }, h("input", { key: '5244283ad3af74ecdc19e6007088cb0ce1b36664', type: "number", step: "0.01", class: "w-full px-4 py-2 rounded-4xl border border-gray-300 focus:ring-2 focus:ring-[#964500] focus:border-transparent bg-white", value: this.electricityPrice.toFixed(2), onInput: (e) => {
302
201
  this.electricityPrice = parseFloat(e.target
303
202
  .value);
304
203
  this.recalculate();
305
- this.updateChart();
306
- } }), h("input", { key: 'a9f21bb0ef842975f13528995beb35c7990fbab7', type: "number", step: "0.01", class: "w-full px-4 py-2 rounded-4xl border border-gray-300 focus:ring-2 focus:ring-[#964500] focus:border-transparent bg-white", value: this.compensationRate.toFixed(2), onInput: (e) => {
204
+ } }), h("input", { key: '156f947d4e06d7a3cc6ad217ec5d9fa2951ad4dc', type: "number", step: "0.01", class: "w-full px-4 py-2 rounded-4xl border border-gray-300 focus:ring-2 focus:ring-[#964500] focus:border-transparent bg-white", value: this.compensationRate.toFixed(2), onInput: (e) => {
307
205
  this.compensationRate = parseFloat(e.target
308
206
  .value);
309
207
  this.recalculate();
310
- this.updateChart();
311
- } }), h("input", { key: '6fd5d4dfe880ee443891fdf5a21a6cadf1a85c3f', type: "number", step: "0.1", class: "w-full px-4 py-2 rounded-4xl border border-gray-300 focus:ring-2 focus:ring-[#964500] focus:border-transparent bg-white", value: this.annualPriceIncrease.toFixed(1), onInput: (e) => {
208
+ } }), h("input", { key: '98143e54459b81a7b7264bffc923dd371bc1742f', type: "number", step: "0.1", class: "w-full px-4 py-2 rounded-4xl border border-gray-300 focus:ring-2 focus:ring-[#964500] focus:border-transparent bg-white", value: this.annualPriceIncrease.toFixed(1), onInput: (e) => {
312
209
  this.annualPriceIncrease = parseFloat(e.target
313
210
  .value);
314
211
  this.recalculate();
315
- this.updateChart();
316
- } })))), h("div", { key: 'fd3a7340b7d52bf8f80d16a6dd841c5e51f73222', class: "space-y-4 pt-4 border-t border-gray-200" }, h("h2", { key: 'c73f74d7b8e6ae17f1ecc12d40d48bbb7d27d4fd', class: "text-lg font-semibold text-[#271200]" }, t.solarSystemForm.resultsTitle), h("div", { key: '2c5638f28adff933740af2ef0fef2f6bcb6428cb', class: "bg-white rounded-4xl p-4" }, h("div", { key: 'ba33ed8f3cff389a325e8a74335b50c056b9973d', class: "flex items-center justify-between" }, h("span", { key: '9a6468ff0e8be96ffe7b81de63b26d9b6bdec9b1', class: "text-gray-600" }, t.solarSystemForm.autonomy), h("span", { key: '0c376539bd769b62b8d0103d5d7c5e7c5654704c', class: "text-xl font-bold text-[#271200]" }, this.autonomy.toFixed(1), "%")), h("div", { key: 'b316b179f78843bcdf47963a9b92997c6f9d3a11', class: "flex items-center justify-between mt-4" }, h("div", { key: 'bff0c9af332674cabdd3566f9e86714940810570', class: "flex items-center gap-2" }, h("span", { key: '0d488cc9c359e963b1bd7aeed4b70a1191bdaf9c', class: "text-gray-600" }, t.solarSystemForm.costSavings), h("div", { key: 'e382818ebf3e80c2a88e93a80142e8671163a116', class: "relative group" }, h("svg", { key: 'd5384665b7135e0cdf869053cde0b420340cbf8b', xmlns: "http://www.w3.org/2000/svg", class: "h-5 w-5 text-gray-400 cursor-help", viewBox: "0 0 20 20", fill: "currentColor" }, h("path", { key: 'ced49e7857a8103d87a64f3910d70040cb462212', "fill-rule": "evenodd", d: "M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-3a1 1 0 00-.867.5 1 1 0 11-1.731-1A3 3 0 0113 8a3.001 3.001 0 01-2 2.83V11a1 1 0 11-2 0v-1a1 1 0 011-1 1 1 0 100-2zm0 8a1 1 0 100-2 1 1 0 000 2z", "clip-rule": "evenodd" })), h("div", { key: 'c9be804634970c9ad741141ed2d9117f688c91f4', class: "absolute bottom-full left-1/2 transform -translate-x-1/2 mb-2 w-64 p-2 bg-gray-800 text-white text-sm rounded-lg opacity-0 group-hover:opacity-100 transition-opacity duration-200 pointer-events-none" }, t.solarSystemForm
317
- .savingsDisclaimer))), h("span", { key: '6b0d784381a52d618f999077f8b1f8c5720f556d', class: "text-xl font-bold text-green-600" }, this.costSavings.toFixed(2), "\u20AC/", t
318
- .solarSystemForm.year)), h("div", { key: '20d043402e17310210c77d151e690e99599b44eb', class: "flex items-center justify-between mt-4" }, h("div", { key: '81af26d3e1f16d2bf390dfa5b1313bae981325e0', class: "flex items-center gap-2" }, h("span", { key: '6ed1b80be4e775ec4ded53e404ea168d424f27df', class: "text-gray-600" }, t.solarSystemForm.costSavings25Years)), h("span", { key: '8071db153adefed6eeca2614fbfcbc9de2e9bbba', class: "text-xl font-bold text-green-600" }, this.costSavings25Years.toFixed(2), "\u20AC")))), h("div", { key: '9f382434d1dd435a37d4bc1f7a34d3214af79261', class: "space-y-4 pt-4 border-t border-gray-200" }, h("h2", { key: 'b10014b2612f8a9fda77e3d9cfa7180753982c92', class: "text-lg font-semibold text-[#271200]" }, t.solarSystemForm.requestOffer), h("div", { key: 'd19838f836105b225cdd939aef0fe3f50358d80d', class: "grid grid-rows-2 gap-0" }, h("div", { key: '36d2c6bf02c745eb06c8975c5ede37fd6543a436', class: "grid grid-cols-2 gap-4" }, h("label", { key: '58288d0a2ba4392a2c3b9b2252d7d32b27923cfc', class: "block text-sm font-medium text-gray-600 mb-1" }, t.solarSystemForm.name), h("label", { key: 'd208c5f92e82480b7fce8e9138413cc2f89d21fc', class: "block text-sm font-medium text-gray-600 mb-1" }, t.solarSystemForm.email)), h("div", { key: 'd788fd9f52636dd201616073283c3327e20d78fd', class: "grid grid-cols-2 gap-4" }, h("input", { key: '0db1956f45d25c951046a416c1891cdfe1680860', type: "text", class: `w-full px-4 py-2 rounded-4xl border ${this.nameError
212
+ } })))), h("div", { key: '86b293619777e18d63b305ca07bc7e797fb0d70e', class: "space-y-4 pt-4 border-t border-gray-200" }, h("h2", { key: 'a68bcc7eeec7f0be54aea7c029e52ba1b0609638', class: "text-lg font-semibold text-[#271200]" }, t.solarSystemForm.resultsTitle), h("div", { key: 'b7ba73455969d9bd125c96a1f33dcf48c1418c37', class: "bg-white rounded-4xl p-4" }, h("div", { key: '18c3105018499d3b3a637aed351d91714ba5a612', class: "flex items-center justify-between" }, h("span", { key: '0035e2b15865f8227cbc114d38ebf5ccc00b656b', class: "text-gray-600" }, t.solarSystemForm.autonomy), h("span", { key: 'fb045f2880eeb51734f97d6a77a7319fca895ee9', class: "text-xl font-bold text-[#271200]" }, this.autonomy > 100
213
+ ? "100"
214
+ : this.autonomy.toFixed(1), "%")), h("div", { key: '0b496be58c3105ffd4ce3e8bbb5647cf4b3ed92e', class: "flex items-center justify-between mt-4" }, h("div", { key: '3e08d94b99e63a9b52d9b1ac4eb1662023afebf8', class: "flex items-center gap-2" }, h("span", { key: 'abe46d153767c62c13d2d8b3eef0ccc89fa5f22e', class: "text-gray-600" }, t.solarSystemForm.costSavings), h("div", { key: '51d67b7365530344639c8df9122c4c52803fbe0f', class: "relative group" }, h("svg", { key: '0bc8015429f01fb53ae07c1921152a1493d87a2d', xmlns: "http://www.w3.org/2000/svg", class: "h-5 w-5 text-gray-400 cursor-help", viewBox: "0 0 20 20", fill: "currentColor" }, h("path", { key: '593c7428f06632d9e46d8d7ecb06ca1e25fb6c4f', "fill-rule": "evenodd", d: "M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-3a1 1 0 00-.867.5 1 1 0 11-1.731-1A3 3 0 0113 8a3.001 3.001 0 01-2 2.83V11a1 1 0 11-2 0v-1a1 1 0 011-1 1 1 0 100-2zm0 8a1 1 0 100-2 1 1 0 000 2z", "clip-rule": "evenodd" })), h("div", { key: 'ce7e6f853ea5370a2dbdfd392fef232f21bdc0d1', class: "absolute bottom-full left-1/2 transform -translate-x-1/2 mb-2 w-64 p-2 bg-gray-800 text-white text-sm rounded-lg opacity-0 group-hover:opacity-100 transition-opacity duration-200 pointer-events-none" }, t.solarSystemForm
215
+ .savingsDisclaimer))), h("span", { key: '2d89f0f4d9437d5b75b1bc5c34140bc8502f2b23', class: "text-xl font-bold text-green-600" }, this.costSavings.toFixed(2), "\u20AC/", t
216
+ .solarSystemForm.year)), h("div", { key: 'ae58b2b27ba70aa4f18dce63c507395255452db6', class: "flex items-center justify-between mt-4" }, h("div", { key: '7a0a1c6d8948a475374537eee1d9054b6824c38c', class: "flex items-center gap-2" }, h("span", { key: '4537c21706ee095f3e3ed263f0a99386eec92795', class: "text-gray-600" }, "Einspeiseverg\u00FCtung 25 Jahre")), h("span", { key: '75955814953cb2c9e0f311aaa1e3d04f19fc89fb', class: "text-xl font-bold text-green-600" }, this.compensation25Years.toFixed(2), "\u20AC")), h("div", { key: '06c3fa7e43948fb35f09e6e98716cbcd7d064d6c', class: "flex items-center justify-between mt-4" }, h("div", { key: '01210645e518efbc462feebc9980d24a6c09c163', class: "flex items-center gap-2" }, h("span", { key: 'f2519b5004a17f4ea09ac6ec374b73a553706ab5', class: "text-gray-600" }, "Geldwerter Vorteil 25 Jahre")), h("span", { key: 'b4e92d010609ac4a571e2c2732f62bf8dc836133', class: "text-xl font-bold text-green-600" }, this.savedCosts25Years.toFixed(2), "\u20AC")))), h("div", { key: '8d0dba4bcddfaf4e1509713c54d6474787b6254d', class: "space-y-4 pt-4 border-t border-gray-200" }, h("h2", { key: '26c08b27f7282f261f5a4779caaba766f20a8ca4', class: "text-lg font-semibold text-[#271200]" }, t.solarSystemForm.requestOffer), h("div", { key: 'a9366b58ac1e04aac462f0b9e21513400c053cb0', class: "grid grid-rows-2 gap-0" }, h("div", { key: 'a49322839297e3c7593236f071a8094138a32b47', class: "grid grid-cols-2 gap-4" }, h("label", { key: '3676b60ef2f4fd8edcea20b86c9c0c0321829e95', class: "block text-sm font-medium text-gray-600 mb-1" }, t.solarSystemForm.name), h("label", { key: 'f41e248f056c96db5cfd225a79d1ec70ced03586', class: "block text-sm font-medium text-gray-600 mb-1" }, t.solarSystemForm.email)), h("div", { key: '3facacede4f9f59c96332e8caa76dd017c2640d6', class: "grid grid-cols-2 gap-4" }, h("input", { key: 'e31c14c1bdc5e50b833f1868bd03157e3919a585', type: "text", class: `w-full px-4 py-2 rounded-4xl border ${this.nameError
319
217
  ? "border-red-500"
320
218
  : "border-gray-300"} focus:ring-2 focus:ring-[#964500] focus:border-transparent bg-white`, value: this.name, onInput: (e) => {
321
219
  this.name =
322
220
  e.target
323
221
  .value;
324
222
  this.validateForm();
325
- }, placeholder: "Your name" }), this.nameError && (h("p", { key: '2c440284521554b07572cf41ee32afbd5098d9d0', class: "text-red-500 text-sm mt-1" }, this.nameError)), h("input", { key: '12f13f01ab6c6df21099754cd3d690a9ca2c91ad', type: "email", class: `w-full px-4 py-2 rounded-4xl border ${this.emailError
223
+ }, placeholder: "Your name" }), this.nameError && (h("p", { key: '9d04539c41c625e235ba6589d7bce5599d06a39e', class: "text-red-500 text-sm mt-1" }, this.nameError)), h("input", { key: 'eb8fe3b14a98867a9f62cfd4db4b2104ae2864eb', type: "email", class: `w-full px-4 py-2 rounded-4xl border ${this.emailError
326
224
  ? "border-red-500"
327
225
  : "border-gray-300"} focus:ring-2 focus:ring-[#964500] focus:border-transparent bg-white`, value: this.email, onInput: (e) => {
328
226
  this.email =
329
227
  e.target
330
228
  .value;
331
229
  this.validateForm();
332
- }, placeholder: "your.email@example.com" }), this.emailError && (h("p", { key: '2007c59ddc380d5cbacefd6abccf43913226a071', class: "text-red-500 text-sm mt-1" }, this.emailError)))), h("div", { key: 'ec7c46b011b1f98e3e3bd3dc896d8cc6eaeb752e', class: "flex justify-center" }, h("button", { key: '832975047a4017261414d9d999ba89ee6db3cc58', onClick: () => this.handleRequestOffer(), disabled: !this.name.trim() ||
230
+ }, placeholder: "your.email@example.com" }), this.emailError && (h("p", { key: '0c53594a4dc486f83fd05b09547b2a41297165bb', class: "text-red-500 text-sm mt-1" }, this.emailError)))), h("div", { key: '9a975e258e31e3b1b592b7b6bd4518be55d4c42d', class: "flex justify-center" }, h("button", { key: '5eb37544172e568838477368f62dfc84696d3ba6', onClick: () => this.handleRequestOffer(), disabled: !this.name.trim() ||
333
231
  !this.email.trim() || !!this.nameError ||
334
232
  !!this.emailError, class: "px-4 py-2 bg-[#271200] rounded-4xl hover:bg-[#964500] transition-colors duration-200", style: { color: "white" } }, t.solarSystemForm.requestOfferButton))))));
335
233
  }
@@ -432,7 +330,6 @@ export class SolarSystemForm {
432
330
  "annualPriceIncrease": {},
433
331
  "autonomy": {},
434
332
  "costSavings": {},
435
- "costSavings25Years": {},
436
333
  "numberOfPanels": {},
437
334
  "panelPeakPower": {},
438
335
  "name": {},
@@ -442,7 +339,10 @@ export class SolarSystemForm {
442
339
  "electricCar": {},
443
340
  "electricCarChargingTime": {},
444
341
  "heatPump": {},
445
- "battery": {}
342
+ "battery": {},
343
+ "compensation25Years": {},
344
+ "savedCosts25Years": {},
345
+ "maxPanels": {}
446
346
  };
447
347
  }
448
348
  static get watchers() {