blue-chestnut-solar-expert 0.0.52 → 0.0.54

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 (223) hide show
  1. package/dist/stencil-library/api-90JQS7b6.js +104 -0
  2. package/dist/stencil-library/api-90JQS7b6.js.map +1 -0
  3. package/dist/stencil-library/api-B5514wut.js +102 -0
  4. package/dist/stencil-library/api-B5514wut.js.map +1 -0
  5. package/dist/stencil-library/api-CLbMaqt3.js +103 -0
  6. package/dist/stencil-library/api-CLbMaqt3.js.map +1 -0
  7. package/dist/stencil-library/api-Cfi-C6kT.js +104 -0
  8. package/dist/stencil-library/api-Cfi-C6kT.js.map +1 -0
  9. package/dist/stencil-library/api-CiNFC5mG.js +104 -0
  10. package/dist/stencil-library/api-CiNFC5mG.js.map +1 -0
  11. package/dist/stencil-library/api-D_61gY2X.js +102 -0
  12. package/dist/stencil-library/api-D_61gY2X.js.map +1 -0
  13. package/dist/{components/p-CU_Hozfq.js → stencil-library/api-Did5lAE0.js} +4 -7
  14. package/dist/stencil-library/api-Did5lAE0.js.map +1 -0
  15. package/dist/stencil-library/api-S3oJcLL5.js +103 -0
  16. package/dist/stencil-library/api-S3oJcLL5.js.map +1 -0
  17. package/dist/stencil-library/api-iAs1ZQr1.js +104 -0
  18. package/dist/stencil-library/api-iAs1ZQr1.js.map +1 -0
  19. package/dist/stencil-library/{api-CU_Hozfq.js → api-vropRvpT.js} +5 -4
  20. package/dist/stencil-library/api-vropRvpT.js.map +1 -0
  21. package/dist/stencil-library/{decoder-BdybtJ-v.js → decoder-BDfrXE7e.js} +3 -3
  22. package/dist/stencil-library/{decoder-BdybtJ-v.js.map → decoder-BDfrXE7e.js.map} +1 -1
  23. package/dist/stencil-library/{deflate-BSCfm6tE.js → deflate-BrCNE9ec.js} +3 -3
  24. package/dist/stencil-library/{deflate-BSCfm6tE.js.map → deflate-BrCNE9ec.js.map} +1 -1
  25. package/dist/stencil-library/eraser-icon.entry.esm.js.map +1 -1
  26. package/dist/stencil-library/eraser-icon.entry.js +1 -1
  27. package/dist/stencil-library/eraser-icon.entry.js.map +1 -1
  28. package/dist/stencil-library/house-icon.entry.esm.js.map +1 -1
  29. package/dist/stencil-library/house-icon.entry.js +1 -1
  30. package/dist/stencil-library/house-icon.entry.js.map +1 -1
  31. package/dist/stencil-library/icon-selector.entry.esm.js.map +1 -1
  32. package/dist/stencil-library/icon-selector.entry.js +1 -1
  33. package/dist/stencil-library/icon-selector.entry.js.map +1 -1
  34. package/dist/stencil-library/index.esm.js +13 -1
  35. package/dist/stencil-library/index.esm.js.map +1 -1
  36. package/dist/stencil-library/{jpeg-B7s0bMQh.js → jpeg-CjOJHUd1.js} +3 -3
  37. package/dist/stencil-library/{jpeg-B7s0bMQh.js.map → jpeg-CjOJHUd1.js.map} +1 -1
  38. package/dist/stencil-library/{lerc-BRJzMsmm.js → lerc-BQF80JgE.js} +3 -3
  39. package/dist/stencil-library/{lerc-BRJzMsmm.js.map → lerc-BQF80JgE.js.map} +1 -1
  40. package/dist/stencil-library/loading-widget.entry.esm.js.map +1 -1
  41. package/dist/stencil-library/loading-widget.entry.js +2 -2
  42. package/dist/stencil-library/loading-widget.entry.js.map +1 -1
  43. package/dist/stencil-library/{lzw-B1L94-gJ.js → lzw-PA2aOuVK.js} +3 -3
  44. package/dist/stencil-library/{lzw-B1L94-gJ.js.map → lzw-PA2aOuVK.js.map} +1 -1
  45. package/dist/stencil-library/{map-draw-Dbj9dYlX.js → map-draw-CaQc1QTP.js} +11 -11
  46. package/dist/stencil-library/{map-draw-Dbj9dYlX.js.map → map-draw-CaQc1QTP.js.map} +1 -1
  47. package/dist/stencil-library/map-draw.entry.js +1 -1
  48. package/dist/stencil-library/map-selector.entry.esm.js.map +1 -1
  49. package/dist/stencil-library/map-selector.entry.js +19 -3
  50. package/dist/stencil-library/map-selector.entry.js.map +1 -1
  51. package/dist/stencil-library/move-icon.entry.esm.js.map +1 -1
  52. package/dist/stencil-library/move-icon.entry.js +1 -1
  53. package/dist/stencil-library/move-icon.entry.js.map +1 -1
  54. package/dist/stencil-library/octagon-minus-icon.entry.esm.js.map +1 -1
  55. package/dist/stencil-library/octagon-minus-icon.entry.js +1 -1
  56. package/dist/stencil-library/octagon-minus-icon.entry.js.map +1 -1
  57. package/dist/stencil-library/{packbits-Roq2Ecwq.js → packbits-BMYGgS0z.js} +3 -3
  58. package/dist/stencil-library/{packbits-Roq2Ecwq.js.map → packbits-BMYGgS0z.js.map} +1 -1
  59. package/dist/stencil-library/polygon-buttons.entry.esm.js.map +1 -1
  60. package/dist/stencil-library/polygon-buttons.entry.js +3 -3
  61. package/dist/stencil-library/polygon-buttons.entry.js.map +1 -1
  62. package/dist/stencil-library/polygon-information.entry.esm.js.map +1 -1
  63. package/dist/stencil-library/polygon-information.entry.js +2 -2
  64. package/dist/stencil-library/polygon-information.entry.js.map +1 -1
  65. package/dist/stencil-library/{raw-BSypeTBq.js → raw-D-Vfg78n.js} +3 -3
  66. package/dist/stencil-library/{raw-BSypeTBq.js.map → raw-D-Vfg78n.js.map} +1 -1
  67. package/dist/stencil-library/search-icon.entry.esm.js.map +1 -1
  68. package/dist/stencil-library/search-icon.entry.js +1 -1
  69. package/dist/stencil-library/search-icon.entry.js.map +1 -1
  70. package/dist/stencil-library/settings-icon.entry.esm.js.map +1 -1
  71. package/dist/stencil-library/settings-icon.entry.js +1 -1
  72. package/dist/stencil-library/settings-icon.entry.js.map +1 -1
  73. package/dist/stencil-library/settings-modal.entry.esm.js.map +1 -1
  74. package/dist/stencil-library/settings-modal.entry.js +9 -9
  75. package/dist/stencil-library/settings-modal.entry.js.map +1 -1
  76. package/dist/stencil-library/solar-calculator.entry.esm.js.map +1 -1
  77. package/dist/stencil-library/solar-calculator.entry.js +3 -3
  78. package/dist/stencil-library/solar-calculator.entry.js.map +1 -1
  79. package/dist/stencil-library/solar-expert.entry.esm.js.map +1 -1
  80. package/dist/stencil-library/solar-expert.entry.js +3 -3
  81. package/dist/stencil-library/solar-expert.entry.js.map +1 -1
  82. package/dist/stencil-library/solar-system-form.entry.esm.js.map +1 -1
  83. package/dist/stencil-library/solar-system-form.entry.js +39 -39
  84. package/dist/stencil-library/solar-system-form.entry.js.map +1 -1
  85. package/dist/stencil-library/stencil-library.esm.js +52 -1
  86. package/dist/stencil-library/stencil-library.esm.js.map +1 -1
  87. package/dist/stencil-library/tool-box.entry.esm.js.map +1 -1
  88. package/dist/stencil-library/tool-box.entry.js +3 -3
  89. package/dist/stencil-library/tool-box.entry.js.map +1 -1
  90. package/dist/stencil-library/undo-icon.entry.esm.js.map +1 -1
  91. package/dist/stencil-library/undo-icon.entry.js +1 -1
  92. package/dist/stencil-library/undo-icon.entry.js.map +1 -1
  93. package/dist/stencil-library/{webimage-BZX1CuW8.js → webimage-V5ihYILu.js} +3 -3
  94. package/dist/stencil-library/{webimage-BZX1CuW8.js.map → webimage-V5ihYILu.js.map} +1 -1
  95. package/dist/types/components/map-draw/map-selector.d.ts +1 -0
  96. package/package.json +1 -1
  97. package/dist/components/eraser-icon.js +0 -11
  98. package/dist/components/eraser-icon.js.map +0 -1
  99. package/dist/components/house-icon.js +0 -11
  100. package/dist/components/house-icon.js.map +0 -1
  101. package/dist/components/icon-selector.js +0 -11
  102. package/dist/components/icon-selector.js.map +0 -1
  103. package/dist/components/index.js +0 -1269
  104. package/dist/components/index.js.map +0 -1
  105. package/dist/components/loading-widget.js +0 -38
  106. package/dist/components/loading-widget.js.map +0 -1
  107. package/dist/components/map-draw.js +0 -11
  108. package/dist/components/map-draw.js.map +0 -1
  109. package/dist/components/map-selector.js +0 -11
  110. package/dist/components/map-selector.js.map +0 -1
  111. package/dist/components/move-icon.js +0 -11
  112. package/dist/components/move-icon.js.map +0 -1
  113. package/dist/components/octagon-minus-icon.js +0 -11
  114. package/dist/components/octagon-minus-icon.js.map +0 -1
  115. package/dist/components/p-0Ymx0I1T.js +0 -76
  116. package/dist/components/p-0Ymx0I1T.js.map +0 -1
  117. package/dist/components/p-B-Rps0Lf.js +0 -40
  118. package/dist/components/p-B-Rps0Lf.js.map +0 -1
  119. package/dist/components/p-B54Ul0nf.js +0 -15
  120. package/dist/components/p-B54Ul0nf.js.map +0 -1
  121. package/dist/components/p-B5WTRCh8.js +0 -3241
  122. package/dist/components/p-B5WTRCh8.js.map +0 -1
  123. package/dist/components/p-BGoSj_DR.js +0 -902
  124. package/dist/components/p-BGoSj_DR.js.map +0 -1
  125. package/dist/components/p-BYoCVGKQ.js +0 -105
  126. package/dist/components/p-BYoCVGKQ.js.map +0 -1
  127. package/dist/components/p-BhS0AFyx.js +0 -161
  128. package/dist/components/p-BhS0AFyx.js.map +0 -1
  129. package/dist/components/p-BxeHuNQ0.js +0 -653
  130. package/dist/components/p-BxeHuNQ0.js.map +0 -1
  131. package/dist/components/p-ByX6QP-E.js +0 -33
  132. package/dist/components/p-ByX6QP-E.js.map +0 -1
  133. package/dist/components/p-C61RS5xJ.js +0 -40
  134. package/dist/components/p-C61RS5xJ.js.map +0 -1
  135. package/dist/components/p-CLe0s2gK.js +0 -40
  136. package/dist/components/p-CLe0s2gK.js.map +0 -1
  137. package/dist/components/p-CQxP2hZl.js +0 -414
  138. package/dist/components/p-CQxP2hZl.js.map +0 -1
  139. package/dist/components/p-CU_Hozfq.js.map +0 -1
  140. package/dist/components/p-Cfy4oCWb.js +0 -1909
  141. package/dist/components/p-Cfy4oCWb.js.map +0 -1
  142. package/dist/components/p-Cgchl6bA.js +0 -47
  143. package/dist/components/p-Cgchl6bA.js.map +0 -1
  144. package/dist/components/p-Cqkh0K8d.js +0 -50
  145. package/dist/components/p-Cqkh0K8d.js.map +0 -1
  146. package/dist/components/p-D0KrIPIK.js +0 -40
  147. package/dist/components/p-D0KrIPIK.js.map +0 -1
  148. package/dist/components/p-DSHWNE3m.js +0 -102
  149. package/dist/components/p-DSHWNE3m.js.map +0 -1
  150. package/dist/components/p-DZAFvfH1.js +0 -40
  151. package/dist/components/p-DZAFvfH1.js.map +0 -1
  152. package/dist/components/p-DiLO6lb_.js +0 -15822
  153. package/dist/components/p-DiLO6lb_.js.map +0 -1
  154. package/dist/components/p-DwozqyC_.js +0 -40
  155. package/dist/components/p-DwozqyC_.js.map +0 -1
  156. package/dist/components/p-Mv9J4znK.js +0 -40
  157. package/dist/components/p-Mv9J4znK.js.map +0 -1
  158. package/dist/components/p-Sf357vTW.js +0 -188
  159. package/dist/components/p-Sf357vTW.js.map +0 -1
  160. package/dist/components/p-WmcSqXD8.js +0 -14
  161. package/dist/components/p-WmcSqXD8.js.map +0 -1
  162. package/dist/components/p-XKzdTp2a.js +0 -4423
  163. package/dist/components/p-XKzdTp2a.js.map +0 -1
  164. package/dist/components/p-j-vOrhhh.js +0 -114
  165. package/dist/components/p-j-vOrhhh.js.map +0 -1
  166. package/dist/components/p-q8auDIJ2.js +0 -138
  167. package/dist/components/p-q8auDIJ2.js.map +0 -1
  168. package/dist/components/polygon-buttons.js +0 -11
  169. package/dist/components/polygon-buttons.js.map +0 -1
  170. package/dist/components/polygon-information.js +0 -11
  171. package/dist/components/polygon-information.js.map +0 -1
  172. package/dist/components/search-icon.js +0 -11
  173. package/dist/components/search-icon.js.map +0 -1
  174. package/dist/components/settings-icon.js +0 -11
  175. package/dist/components/settings-icon.js.map +0 -1
  176. package/dist/components/settings-modal.js +0 -11
  177. package/dist/components/settings-modal.js.map +0 -1
  178. package/dist/components/solar-calculator.js +0 -246
  179. package/dist/components/solar-calculator.js.map +0 -1
  180. package/dist/components/solar-expert.js +0 -360
  181. package/dist/components/solar-expert.js.map +0 -1
  182. package/dist/components/solar-system-form.js +0 -11
  183. package/dist/components/solar-system-form.js.map +0 -1
  184. package/dist/components/tool-box.js +0 -11
  185. package/dist/components/tool-box.js.map +0 -1
  186. package/dist/components/undo-icon.js +0 -11
  187. package/dist/components/undo-icon.js.map +0 -1
  188. package/dist/index.cjs.js +0 -1
  189. package/dist/index.js +0 -1
  190. package/dist/stencil-library/api-CU_Hozfq.js.map +0 -1
  191. 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 +0 -1
  192. package/dist/stencil-library/p-6f2848a5.entry.js +0 -2
  193. package/dist/stencil-library/p-6f2848a5.entry.js.map +0 -1
  194. package/dist/stencil-library/p-B54Ul0nf.js +0 -2
  195. package/dist/stencil-library/p-B54Ul0nf.js.map +0 -1
  196. package/dist/stencil-library/p-B5WTRCh8.js +0 -2
  197. package/dist/stencil-library/p-B5WTRCh8.js.map +0 -1
  198. package/dist/stencil-library/p-BGoSj_DR.js +0 -2
  199. package/dist/stencil-library/p-BGoSj_DR.js.map +0 -1
  200. package/dist/stencil-library/p-Brw-XSJB.js +0 -2
  201. package/dist/stencil-library/p-Brw-XSJB.js.map +0 -1
  202. package/dist/stencil-library/p-ByX6QP-E.js +0 -2
  203. package/dist/stencil-library/p-ByX6QP-E.js.map +0 -1
  204. package/dist/stencil-library/p-CX8V3eiN.js +0 -2
  205. package/dist/stencil-library/p-CX8V3eiN.js.map +0 -1
  206. package/dist/stencil-library/p-Cgchl6bA.js +0 -2
  207. package/dist/stencil-library/p-Cgchl6bA.js.map +0 -1
  208. package/dist/stencil-library/p-DXlWibwG.js +0 -10
  209. package/dist/stencil-library/p-DXlWibwG.js.map +0 -1
  210. package/dist/stencil-library/p-LebgAmeq.js +0 -2
  211. package/dist/stencil-library/p-LebgAmeq.js.map +0 -1
  212. package/dist/stencil-library/p-WmcSqXD8.js +0 -2
  213. package/dist/stencil-library/p-WmcSqXD8.js.map +0 -1
  214. package/dist/stencil-library/p-X54eOLJv.js +0 -3
  215. package/dist/stencil-library/p-X54eOLJv.js.map +0 -1
  216. package/dist/stencil-library/p-af021538.entry.js +0 -2
  217. package/dist/stencil-library/p-af021538.entry.js.map +0 -1
  218. package/dist/stencil-library/p-bde0ce8e.entry.js +0 -32
  219. package/dist/stencil-library/p-bde0ce8e.entry.js.map +0 -1
  220. package/dist/stencil-library/p-j-vOrhhh.js +0 -2
  221. package/dist/stencil-library/p-j-vOrhhh.js.map +0 -1
  222. package/dist/stencil-library/p-q8auDIJ2.js +0 -2
  223. package/dist/stencil-library/p-q8auDIJ2.js.map +0 -1
@@ -0,0 +1,104 @@
1
+
2
+ if (typeof global === "undefined") { var global = globalThis || window || self; }
3
+ async function fetchSolarData(latitude, longitude, apiKey) {
4
+ if (latitude === 0 || longitude === 0) {
5
+ return null;
6
+ }
7
+ try {
8
+ const args = {
9
+ "location.latitude": latitude.toFixed(5),
10
+ "location.longitude": longitude.toFixed(5),
11
+ };
12
+ const params = new URLSearchParams({
13
+ ...args,
14
+ key: apiKey,
15
+ });
16
+ const response = await fetch(`https://solar.googleapis.com/v1/buildingInsights:findClosest?${params}`);
17
+ if (!response.ok) {
18
+ const errorText = await response.text();
19
+ throw new Error(`HTTP error! status: ${response.status}, body: ${errorText}`);
20
+ }
21
+ const contentType = response.headers.get("content-type");
22
+ if (!contentType || !contentType.includes("application/json")) {
23
+ const text = await response.text();
24
+ console.error("Unexpected content type:", contentType, "Response:", text);
25
+ return null;
26
+ }
27
+ const rawData = await response.json();
28
+ return rawData;
29
+ }
30
+ catch (error) {
31
+ console.error("Error fetching solar data:", error);
32
+ if (error instanceof TypeError &&
33
+ error.message === "Failed to fetch") {
34
+ throw new Error("Unable to connect to the solar data API.");
35
+ }
36
+ throw error;
37
+ }
38
+ }
39
+ async function sendLeadToNexvoro(leadData) {
40
+ try {
41
+ // Prepare the lead data according to Nexvoro specifications
42
+ const leadPayload = {
43
+ id: "", // Empty for new leads
44
+ leadtype: "A-Lead", // Fixed value
45
+ phase: "10 Anbahnung", // Fixed value
46
+ title: `${leadData.client.name}/solarExpert`, // Short description
47
+ // extradata: JSON.stringify(leadData), // JSON string with all data
48
+ };
49
+ // Build the URL with required parameters
50
+ const baseUrl = "https://workspace.nexvoro.cloud/exchange/extevent";
51
+ const params = new URLSearchParams({
52
+ md: "81.87.84.89.90.", // Encrypted tenant
53
+ token: "rdwetayarqzwtdsqystyraa", // Token for Ruiz
54
+ type: "new", // Action: new lead
55
+ data: "lead", // Data area: leads
56
+ // value: JSON.stringify(leadPayload),
57
+ });
58
+ const url = `${baseUrl}?${params.toString()}`;
59
+ // Send the request
60
+ const response = await fetch(url, {
61
+ method: "POST",
62
+ headers: {
63
+ "Content-Type": "application/x-www-form-urlencoded",
64
+ charset: "utf-8",
65
+ },
66
+ // body: JSON.stringify(leadPayload),
67
+ // body: new URLSearchParams(leadPayload).toString(),
68
+ });
69
+ if (!response.ok) {
70
+ const errorText = await response.text();
71
+ throw new Error(`HTTP error! status: ${response.status}, body: ${errorText}`);
72
+ }
73
+ const result = await response.json();
74
+ // Check if the response contains a lead ID (successful creation)
75
+ if (result.id || result.leadId) {
76
+ return {
77
+ success: true,
78
+ message: "Lead successfully created",
79
+ leadId: result.id || result.leadId,
80
+ };
81
+ }
82
+ else {
83
+ return {
84
+ success: true,
85
+ message: "Lead submitted successfully",
86
+ leadId: undefined,
87
+ };
88
+ }
89
+ }
90
+ catch (error) {
91
+ console.error("Error sending lead to Nexvoro:", error);
92
+ return {
93
+ success: false,
94
+ message: error instanceof Error
95
+ ? error.message
96
+ : "Unknown error occurred",
97
+ };
98
+ }
99
+ }
100
+
101
+ export { fetchSolarData as f, sendLeadToNexvoro as s };
102
+ //# sourceMappingURL=api-90JQS7b6.js.map
103
+
104
+ //# sourceMappingURL=api-90JQS7b6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-90JQS7b6.js","sources":["src/utils/api.ts"],"sourcesContent":["import { BuildingInsightsResponse } from \"harmonia-types\";\r\n\r\nexport async function fetchSolarData(\r\n latitude: number,\r\n longitude: number,\r\n apiKey: string,\r\n) {\r\n if (latitude === 0 || longitude === 0) {\r\n return null;\r\n }\r\n try {\r\n const args = {\r\n \"location.latitude\": latitude.toFixed(5),\r\n \"location.longitude\": longitude.toFixed(5),\r\n };\r\n const params = new URLSearchParams({\r\n ...args,\r\n key: apiKey,\r\n });\r\n const response = await fetch(\r\n `https://solar.googleapis.com/v1/buildingInsights:findClosest?${params}`,\r\n );\r\n\r\n if (!response.ok) {\r\n const errorText = await response.text();\r\n throw new Error(\r\n `HTTP error! status: ${response.status}, body: ${errorText}`,\r\n );\r\n }\r\n\r\n const contentType = response.headers.get(\"content-type\");\r\n if (!contentType || !contentType.includes(\"application/json\")) {\r\n const text = await response.text();\r\n console.error(\"Unexpected content type:\", contentType, \"Response:\", text);\r\n return null;\r\n }\r\n\r\n const rawData: BuildingInsightsResponse = await response.json();\r\n return rawData;\r\n } catch (error) {\r\n console.error(\"Error fetching solar data:\", error);\r\n if (\r\n error instanceof TypeError &&\r\n error.message === \"Failed to fetch\"\r\n ) {\r\n throw new Error(\"Unable to connect to the solar data API.\");\r\n }\r\n throw error;\r\n }\r\n}\r\n\r\nexport interface LeadData {\r\n location: {\r\n name: string;\r\n latitude: number;\r\n longitude: number;\r\n };\r\n systemConfig: {\r\n maxNumberOfPanels: number;\r\n panelPeakPower: number;\r\n polygons: any[];\r\n solarSystems: any;\r\n electricityPrice: number;\r\n compensationRate: number;\r\n annualPriceIncrease: number;\r\n };\r\n client: {\r\n name: string;\r\n email: string;\r\n phone: string;\r\n consumption: number;\r\n consumptionProfile: string;\r\n hasBattery: boolean;\r\n battery: number;\r\n hasHeatPump: boolean;\r\n heatPumpM2: number;\r\n hasElectricCar: boolean;\r\n electricCarChargingTime: string;\r\n electricCarKmPerYear: number;\r\n };\r\n images: {\r\n roof: string;\r\n polygon: string;\r\n };\r\n results: {\r\n autonomy: number;\r\n costSavings: number;\r\n compensation20Years: number;\r\n savedCosts20Years: number;\r\n totalEnergyConsumption: number;\r\n };\r\n}\r\n\r\nexport async function sendLeadToNexvoro(\r\n leadData: LeadData,\r\n): Promise<{ success: boolean; message: string; leadId?: number }> {\r\n try {\r\n // Prepare the lead data according to Nexvoro specifications\r\n const leadPayload = {\r\n id: \"\", // Empty for new leads\r\n leadtype: \"A-Lead\", // Fixed value\r\n phase: \"10 Anbahnung\", // Fixed value\r\n title: `${leadData.client.name}/solarExpert`, // Short description\r\n // extradata: JSON.stringify(leadData), // JSON string with all data\r\n };\r\n\r\n // Build the URL with required parameters\r\n const baseUrl = \"https://workspace.nexvoro.cloud/exchange/extevent\";\r\n const params = new URLSearchParams({\r\n md: \"81.87.84.89.90.\", // Encrypted tenant\r\n token: \"rdwetayarqzwtdsqystyraa\", // Token for Ruiz\r\n type: \"new\", // Action: new lead\r\n data: \"lead\", // Data area: leads\r\n // value: JSON.stringify(leadPayload),\r\n });\r\n\r\n const url = `${baseUrl}?${params.toString()}`;\r\n\r\n // Send the request\r\n const response = await fetch(url, {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/x-www-form-urlencoded\",\r\n charset: \"utf-8\",\r\n },\r\n // body: JSON.stringify(leadPayload),\r\n // body: new URLSearchParams(leadPayload).toString(),\r\n });\r\n\r\n if (!response.ok) {\r\n const errorText = await response.text();\r\n throw new Error(\r\n `HTTP error! status: ${response.status}, body: ${errorText}`,\r\n );\r\n }\r\n\r\n const result = await response.json();\r\n\r\n // Check if the response contains a lead ID (successful creation)\r\n if (result.id || result.leadId) {\r\n return {\r\n success: true,\r\n message: \"Lead successfully created\",\r\n leadId: result.id || result.leadId,\r\n };\r\n } else {\r\n return {\r\n success: true,\r\n message: \"Lead submitted successfully\",\r\n leadId: undefined,\r\n };\r\n }\r\n } catch (error) {\r\n console.error(\"Error sending lead to Nexvoro:\", error);\r\n return {\r\n success: false,\r\n message: error instanceof Error\r\n ? error.message\r\n : \"Unknown error occurred\",\r\n };\r\n }\r\n}\r\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,102 @@
1
+
2
+ if (typeof global === "undefined") { var global = globalThis || window || self; }
3
+ async function fetchSolarData(latitude, longitude, apiKey) {
4
+ if (latitude === 0 || longitude === 0) {
5
+ return null;
6
+ }
7
+ try {
8
+ const args = {
9
+ "location.latitude": latitude.toFixed(5),
10
+ "location.longitude": longitude.toFixed(5),
11
+ };
12
+ const params = new URLSearchParams({
13
+ ...args,
14
+ key: apiKey,
15
+ });
16
+ const response = await fetch(`https://solar.googleapis.com/v1/buildingInsights:findClosest?${params}`);
17
+ if (!response.ok) {
18
+ const errorText = await response.text();
19
+ throw new Error(`HTTP error! status: ${response.status}, body: ${errorText}`);
20
+ }
21
+ const contentType = response.headers.get("content-type");
22
+ if (!contentType || !contentType.includes("application/json")) {
23
+ const text = await response.text();
24
+ console.error("Unexpected content type:", contentType, "Response:", text);
25
+ return null;
26
+ }
27
+ const rawData = await response.json();
28
+ return rawData;
29
+ }
30
+ catch (error) {
31
+ console.error("Error fetching solar data:", error);
32
+ if (error instanceof TypeError &&
33
+ error.message === "Failed to fetch") {
34
+ throw new Error("Unable to connect to the solar data API.");
35
+ }
36
+ throw error;
37
+ }
38
+ }
39
+ async function sendLeadToNexvoro(leadData) {
40
+ try {
41
+ // Prepare the lead data according to Nexvoro specifications
42
+ const leadPayload = {
43
+ id: "", // Empty for new leads
44
+ leadtype: "A-Lead", // Fixed value
45
+ phase: "10 Anbahnung", // Fixed value
46
+ title: `${leadData.client.name}/solarExpert`, // Short description
47
+ extradata: JSON.stringify(leadData), // JSON string with all data
48
+ };
49
+ // Build the URL with required parameters
50
+ const baseUrl = "https://workspace.nexvoro.cloud/exchange/extevent";
51
+ const params = new URLSearchParams({
52
+ md: "81.87.84.89.90.", // Encrypted tenant
53
+ token: "rdwetayarqzwtdsqystyraa", // Token for Ruiz
54
+ type: "new", // Action: new lead
55
+ data: "lead", // Data area: leads
56
+ });
57
+ const url = `${baseUrl}?${params.toString()}`;
58
+ // Send the request
59
+ const response = await fetch(url, {
60
+ method: "GET",
61
+ headers: {
62
+ "Content-Type": "application/x-www-form-urlencoded",
63
+ charset: "utf-8",
64
+ },
65
+ // body: new URLSearchParams(leadPayload).toString(),
66
+ });
67
+ if (!response.ok) {
68
+ const errorText = await response.text();
69
+ throw new Error(`HTTP error! status: ${response.status}, body: ${errorText}`);
70
+ }
71
+ const result = await response.json();
72
+ // Check if the response contains a lead ID (successful creation)
73
+ if (result.id || result.leadId) {
74
+ return {
75
+ success: true,
76
+ message: "Lead successfully created",
77
+ leadId: result.id || result.leadId,
78
+ };
79
+ }
80
+ else {
81
+ return {
82
+ success: true,
83
+ message: "Lead submitted successfully",
84
+ leadId: undefined,
85
+ };
86
+ }
87
+ }
88
+ catch (error) {
89
+ console.error("Error sending lead to Nexvoro:", error);
90
+ return {
91
+ success: false,
92
+ message: error instanceof Error
93
+ ? error.message
94
+ : "Unknown error occurred",
95
+ };
96
+ }
97
+ }
98
+
99
+ export { fetchSolarData as f, sendLeadToNexvoro as s };
100
+ //# sourceMappingURL=api-B5514wut.js.map
101
+
102
+ //# sourceMappingURL=api-B5514wut.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-B5514wut.js","sources":["src/utils/api.ts"],"sourcesContent":["import { BuildingInsightsResponse } from \"harmonia-types\";\r\n\r\nexport async function fetchSolarData(\r\n latitude: number,\r\n longitude: number,\r\n apiKey: string,\r\n) {\r\n if (latitude === 0 || longitude === 0) {\r\n return null;\r\n }\r\n try {\r\n const args = {\r\n \"location.latitude\": latitude.toFixed(5),\r\n \"location.longitude\": longitude.toFixed(5),\r\n };\r\n const params = new URLSearchParams({\r\n ...args,\r\n key: apiKey,\r\n });\r\n const response = await fetch(\r\n `https://solar.googleapis.com/v1/buildingInsights:findClosest?${params}`,\r\n );\r\n\r\n if (!response.ok) {\r\n const errorText = await response.text();\r\n throw new Error(\r\n `HTTP error! status: ${response.status}, body: ${errorText}`,\r\n );\r\n }\r\n\r\n const contentType = response.headers.get(\"content-type\");\r\n if (!contentType || !contentType.includes(\"application/json\")) {\r\n const text = await response.text();\r\n console.error(\"Unexpected content type:\", contentType, \"Response:\", text);\r\n return null;\r\n }\r\n\r\n const rawData: BuildingInsightsResponse = await response.json();\r\n return rawData;\r\n } catch (error) {\r\n console.error(\"Error fetching solar data:\", error);\r\n if (\r\n error instanceof TypeError &&\r\n error.message === \"Failed to fetch\"\r\n ) {\r\n throw new Error(\"Unable to connect to the solar data API.\");\r\n }\r\n throw error;\r\n }\r\n}\r\n\r\nexport interface LeadData {\r\n location: {\r\n name: string;\r\n latitude: number;\r\n longitude: number;\r\n };\r\n systemConfig: {\r\n maxNumberOfPanels: number;\r\n panelPeakPower: number;\r\n polygons: any[];\r\n solarSystems: any;\r\n electricityPrice: number;\r\n compensationRate: number;\r\n annualPriceIncrease: number;\r\n };\r\n client: {\r\n name: string;\r\n email: string;\r\n phone: string;\r\n consumption: number;\r\n consumptionProfile: string;\r\n hasBattery: boolean;\r\n battery: number;\r\n hasHeatPump: boolean;\r\n heatPumpM2: number;\r\n hasElectricCar: boolean;\r\n electricCarChargingTime: string;\r\n electricCarKmPerYear: number;\r\n };\r\n images: {\r\n roof: string;\r\n polygon: string;\r\n };\r\n results: {\r\n autonomy: number;\r\n costSavings: number;\r\n compensation20Years: number;\r\n savedCosts20Years: number;\r\n totalEnergyConsumption: number;\r\n };\r\n}\r\n\r\nexport async function sendLeadToNexvoro(\r\n leadData: LeadData,\r\n): Promise<{ success: boolean; message: string; leadId?: number }> {\r\n try {\r\n // Prepare the lead data according to Nexvoro specifications\r\n const leadPayload = {\r\n id: \"\", // Empty for new leads\r\n leadtype: \"A-Lead\", // Fixed value\r\n phase: \"10 Anbahnung\", // Fixed value\r\n title: `${leadData.client.name}/solarExpert`, // Short description\r\n extradata: JSON.stringify(leadData), // JSON string with all data\r\n };\r\n\r\n // Build the URL with required parameters\r\n const baseUrl = \"https://workspace.nexvoro.cloud/exchange/extevent\";\r\n const params = new URLSearchParams({\r\n md: \"81.87.84.89.90.\", // Encrypted tenant\r\n token: \"rdwetayarqzwtdsqystyraa\", // Token for Ruiz\r\n type: \"new\", // Action: new lead\r\n data: \"lead\", // Data area: leads\r\n });\r\n\r\n const url = `${baseUrl}?${params.toString()}`;\r\n\r\n // Send the request\r\n const response = await fetch(url, {\r\n method: \"GET\",\r\n headers: {\r\n \"Content-Type\": \"application/x-www-form-urlencoded\",\r\n charset: \"utf-8\",\r\n },\r\n // body: new URLSearchParams(leadPayload).toString(),\r\n });\r\n\r\n if (!response.ok) {\r\n const errorText = await response.text();\r\n throw new Error(\r\n `HTTP error! status: ${response.status}, body: ${errorText}`,\r\n );\r\n }\r\n\r\n const result = await response.json();\r\n\r\n // Check if the response contains a lead ID (successful creation)\r\n if (result.id || result.leadId) {\r\n return {\r\n success: true,\r\n message: \"Lead successfully created\",\r\n leadId: result.id || result.leadId,\r\n };\r\n } else {\r\n return {\r\n success: true,\r\n message: \"Lead submitted successfully\",\r\n leadId: undefined,\r\n };\r\n }\r\n } catch (error) {\r\n console.error(\"Error sending lead to Nexvoro:\", error);\r\n return {\r\n success: false,\r\n message: error instanceof Error\r\n ? error.message\r\n : \"Unknown error occurred\",\r\n };\r\n }\r\n}\r\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,103 @@
1
+
2
+ if (typeof global === "undefined") { var global = globalThis || window || self; }
3
+ async function fetchSolarData(latitude, longitude, apiKey) {
4
+ if (latitude === 0 || longitude === 0) {
5
+ return null;
6
+ }
7
+ try {
8
+ const args = {
9
+ "location.latitude": latitude.toFixed(5),
10
+ "location.longitude": longitude.toFixed(5),
11
+ };
12
+ const params = new URLSearchParams({
13
+ ...args,
14
+ key: apiKey,
15
+ });
16
+ const response = await fetch(`https://solar.googleapis.com/v1/buildingInsights:findClosest?${params}`);
17
+ if (!response.ok) {
18
+ const errorText = await response.text();
19
+ throw new Error(`HTTP error! status: ${response.status}, body: ${errorText}`);
20
+ }
21
+ const contentType = response.headers.get("content-type");
22
+ if (!contentType || !contentType.includes("application/json")) {
23
+ const text = await response.text();
24
+ console.error("Unexpected content type:", contentType, "Response:", text);
25
+ return null;
26
+ }
27
+ const rawData = await response.json();
28
+ return rawData;
29
+ }
30
+ catch (error) {
31
+ console.error("Error fetching solar data:", error);
32
+ if (error instanceof TypeError &&
33
+ error.message === "Failed to fetch") {
34
+ throw new Error("Unable to connect to the solar data API.");
35
+ }
36
+ throw error;
37
+ }
38
+ }
39
+ async function sendLeadToNexvoro(leadData) {
40
+ try {
41
+ // Prepare the lead data according to Nexvoro specifications
42
+ const leadPayload = {
43
+ id: "", // Empty for new leads
44
+ leadtype: "A-Lead", // Fixed value
45
+ phase: "10 Anbahnung", // Fixed value
46
+ title: `${leadData.client.name}/solarExpert`, // Short description
47
+ extradata: JSON.stringify(leadData), // JSON string with all data
48
+ };
49
+ // Build the URL with required parameters
50
+ const baseUrl = "https://workspace.nexvoro.cloud/exchange/extevent";
51
+ const params = new URLSearchParams({
52
+ md: "81.87.84.89.90.", // Encrypted tenant
53
+ token: "rdwetayarqzwtdsqystyraa", // Token for Ruiz
54
+ type: "new", // Action: new lead
55
+ data: "lead", // Data area: leads
56
+ });
57
+ const url = `${baseUrl}?${params.toString()}`;
58
+ // Send the request
59
+ const response = await fetch(url, {
60
+ method: "GET",
61
+ headers: {
62
+ "Content-Type": "text/html",
63
+ charset: "utf-8",
64
+ },
65
+ // body: JSON.stringify(leadPayload),
66
+ body: new URLSearchParams(leadPayload).toString(),
67
+ });
68
+ if (!response.ok) {
69
+ const errorText = await response.text();
70
+ throw new Error(`HTTP error! status: ${response.status}, body: ${errorText}`);
71
+ }
72
+ const result = await response.json();
73
+ // Check if the response contains a lead ID (successful creation)
74
+ if (result.id || result.leadId) {
75
+ return {
76
+ success: true,
77
+ message: "Lead successfully created",
78
+ leadId: result.id || result.leadId,
79
+ };
80
+ }
81
+ else {
82
+ return {
83
+ success: true,
84
+ message: "Lead submitted successfully",
85
+ leadId: undefined,
86
+ };
87
+ }
88
+ }
89
+ catch (error) {
90
+ console.error("Error sending lead to Nexvoro:", error);
91
+ return {
92
+ success: false,
93
+ message: error instanceof Error
94
+ ? error.message
95
+ : "Unknown error occurred",
96
+ };
97
+ }
98
+ }
99
+
100
+ export { fetchSolarData as f, sendLeadToNexvoro as s };
101
+ //# sourceMappingURL=api-CLbMaqt3.js.map
102
+
103
+ //# sourceMappingURL=api-CLbMaqt3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-CLbMaqt3.js","sources":["src/utils/api.ts"],"sourcesContent":["import { BuildingInsightsResponse } from \"harmonia-types\";\r\n\r\nexport async function fetchSolarData(\r\n latitude: number,\r\n longitude: number,\r\n apiKey: string,\r\n) {\r\n if (latitude === 0 || longitude === 0) {\r\n return null;\r\n }\r\n try {\r\n const args = {\r\n \"location.latitude\": latitude.toFixed(5),\r\n \"location.longitude\": longitude.toFixed(5),\r\n };\r\n const params = new URLSearchParams({\r\n ...args,\r\n key: apiKey,\r\n });\r\n const response = await fetch(\r\n `https://solar.googleapis.com/v1/buildingInsights:findClosest?${params}`,\r\n );\r\n\r\n if (!response.ok) {\r\n const errorText = await response.text();\r\n throw new Error(\r\n `HTTP error! status: ${response.status}, body: ${errorText}`,\r\n );\r\n }\r\n\r\n const contentType = response.headers.get(\"content-type\");\r\n if (!contentType || !contentType.includes(\"application/json\")) {\r\n const text = await response.text();\r\n console.error(\"Unexpected content type:\", contentType, \"Response:\", text);\r\n return null;\r\n }\r\n\r\n const rawData: BuildingInsightsResponse = await response.json();\r\n return rawData;\r\n } catch (error) {\r\n console.error(\"Error fetching solar data:\", error);\r\n if (\r\n error instanceof TypeError &&\r\n error.message === \"Failed to fetch\"\r\n ) {\r\n throw new Error(\"Unable to connect to the solar data API.\");\r\n }\r\n throw error;\r\n }\r\n}\r\n\r\nexport interface LeadData {\r\n location: {\r\n name: string;\r\n latitude: number;\r\n longitude: number;\r\n };\r\n systemConfig: {\r\n maxNumberOfPanels: number;\r\n panelPeakPower: number;\r\n polygons: any[];\r\n solarSystems: any;\r\n electricityPrice: number;\r\n compensationRate: number;\r\n annualPriceIncrease: number;\r\n };\r\n client: {\r\n name: string;\r\n email: string;\r\n phone: string;\r\n consumption: number;\r\n consumptionProfile: string;\r\n hasBattery: boolean;\r\n battery: number;\r\n hasHeatPump: boolean;\r\n heatPumpM2: number;\r\n hasElectricCar: boolean;\r\n electricCarChargingTime: string;\r\n electricCarKmPerYear: number;\r\n };\r\n images: {\r\n roof: string;\r\n polygon: string;\r\n };\r\n results: {\r\n autonomy: number;\r\n costSavings: number;\r\n compensation20Years: number;\r\n savedCosts20Years: number;\r\n totalEnergyConsumption: number;\r\n };\r\n}\r\n\r\nexport async function sendLeadToNexvoro(\r\n leadData: LeadData,\r\n): Promise<{ success: boolean; message: string; leadId?: number }> {\r\n try {\r\n // Prepare the lead data according to Nexvoro specifications\r\n const leadPayload = {\r\n id: \"\", // Empty for new leads\r\n leadtype: \"A-Lead\", // Fixed value\r\n phase: \"10 Anbahnung\", // Fixed value\r\n title: `${leadData.client.name}/solarExpert`, // Short description\r\n extradata: JSON.stringify(leadData), // JSON string with all data\r\n };\r\n\r\n // Build the URL with required parameters\r\n const baseUrl = \"https://workspace.nexvoro.cloud/exchange/extevent\";\r\n const params = new URLSearchParams({\r\n md: \"81.87.84.89.90.\", // Encrypted tenant\r\n token: \"rdwetayarqzwtdsqystyraa\", // Token for Ruiz\r\n type: \"new\", // Action: new lead\r\n data: \"lead\", // Data area: leads\r\n });\r\n\r\n const url = `${baseUrl}?${params.toString()}`;\r\n\r\n // Send the request\r\n const response = await fetch(url, {\r\n method: \"GET\",\r\n headers: {\r\n \"Content-Type\": \"text/html\",\r\n charset: \"utf-8\",\r\n },\r\n // body: JSON.stringify(leadPayload),\r\n body: new URLSearchParams(leadPayload).toString(),\r\n });\r\n\r\n if (!response.ok) {\r\n const errorText = await response.text();\r\n throw new Error(\r\n `HTTP error! status: ${response.status}, body: ${errorText}`,\r\n );\r\n }\r\n\r\n const result = await response.json();\r\n\r\n // Check if the response contains a lead ID (successful creation)\r\n if (result.id || result.leadId) {\r\n return {\r\n success: true,\r\n message: \"Lead successfully created\",\r\n leadId: result.id || result.leadId,\r\n };\r\n } else {\r\n return {\r\n success: true,\r\n message: \"Lead submitted successfully\",\r\n leadId: undefined,\r\n };\r\n }\r\n } catch (error) {\r\n console.error(\"Error sending lead to Nexvoro:\", error);\r\n return {\r\n success: false,\r\n message: error instanceof Error\r\n ? error.message\r\n : \"Unknown error occurred\",\r\n };\r\n }\r\n}\r\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,104 @@
1
+
2
+ if (typeof global === "undefined") { var global = globalThis || window || self; }
3
+ async function fetchSolarData(latitude, longitude, apiKey) {
4
+ if (latitude === 0 || longitude === 0) {
5
+ return null;
6
+ }
7
+ try {
8
+ const args = {
9
+ "location.latitude": latitude.toFixed(5),
10
+ "location.longitude": longitude.toFixed(5),
11
+ };
12
+ const params = new URLSearchParams({
13
+ ...args,
14
+ key: apiKey,
15
+ });
16
+ const response = await fetch(`https://solar.googleapis.com/v1/buildingInsights:findClosest?${params}`);
17
+ if (!response.ok) {
18
+ const errorText = await response.text();
19
+ throw new Error(`HTTP error! status: ${response.status}, body: ${errorText}`);
20
+ }
21
+ const contentType = response.headers.get("content-type");
22
+ if (!contentType || !contentType.includes("application/json")) {
23
+ const text = await response.text();
24
+ console.error("Unexpected content type:", contentType, "Response:", text);
25
+ return null;
26
+ }
27
+ const rawData = await response.json();
28
+ return rawData;
29
+ }
30
+ catch (error) {
31
+ console.error("Error fetching solar data:", error);
32
+ if (error instanceof TypeError &&
33
+ error.message === "Failed to fetch") {
34
+ throw new Error("Unable to connect to the solar data API.");
35
+ }
36
+ throw error;
37
+ }
38
+ }
39
+ async function sendLeadToNexvoro(leadData) {
40
+ try {
41
+ // Prepare the lead data according to Nexvoro specifications
42
+ const leadPayload = {
43
+ id: "", // Empty for new leads
44
+ leadtype: "A-Lead", // Fixed value
45
+ phase: "10 Anbahnung", // Fixed value
46
+ title: `${leadData.client.name}/solarExpert`, // Short description
47
+ extradata: JSON.stringify(leadData), // JSON string with all data
48
+ };
49
+ // Build the URL with required parameters
50
+ const baseUrl = "https://workspace.nexvoro.cloud/exchange/extevent";
51
+ const params = new URLSearchParams({
52
+ md: "81.87.84.89.90.", // Encrypted tenant
53
+ token: "rdwetayarqzwtdsqystyraa", // Token for Ruiz
54
+ type: "new", // Action: new lead
55
+ data: "lead", // Data area: leads
56
+ value: JSON.stringify(leadPayload),
57
+ });
58
+ const url = `${baseUrl}?${params.toString()}`;
59
+ // Send the request
60
+ const response = await fetch(url, {
61
+ method: "GET",
62
+ headers: {
63
+ "Content-Type": "application/x-www-form-urlencoded",
64
+ charset: "utf-8",
65
+ },
66
+ // body: JSON.stringify(leadPayload),
67
+ body: new URLSearchParams(leadPayload).toString(),
68
+ });
69
+ if (!response.ok) {
70
+ const errorText = await response.text();
71
+ throw new Error(`HTTP error! status: ${response.status}, body: ${errorText}`);
72
+ }
73
+ const result = await response.json();
74
+ // Check if the response contains a lead ID (successful creation)
75
+ if (result.id || result.leadId) {
76
+ return {
77
+ success: true,
78
+ message: "Lead successfully created",
79
+ leadId: result.id || result.leadId,
80
+ };
81
+ }
82
+ else {
83
+ return {
84
+ success: true,
85
+ message: "Lead submitted successfully",
86
+ leadId: undefined,
87
+ };
88
+ }
89
+ }
90
+ catch (error) {
91
+ console.error("Error sending lead to Nexvoro:", error);
92
+ return {
93
+ success: false,
94
+ message: error instanceof Error
95
+ ? error.message
96
+ : "Unknown error occurred",
97
+ };
98
+ }
99
+ }
100
+
101
+ export { fetchSolarData as f, sendLeadToNexvoro as s };
102
+ //# sourceMappingURL=api-Cfi-C6kT.js.map
103
+
104
+ //# sourceMappingURL=api-Cfi-C6kT.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-Cfi-C6kT.js","sources":["src/utils/api.ts"],"sourcesContent":["import { BuildingInsightsResponse } from \"harmonia-types\";\r\n\r\nexport async function fetchSolarData(\r\n latitude: number,\r\n longitude: number,\r\n apiKey: string,\r\n) {\r\n if (latitude === 0 || longitude === 0) {\r\n return null;\r\n }\r\n try {\r\n const args = {\r\n \"location.latitude\": latitude.toFixed(5),\r\n \"location.longitude\": longitude.toFixed(5),\r\n };\r\n const params = new URLSearchParams({\r\n ...args,\r\n key: apiKey,\r\n });\r\n const response = await fetch(\r\n `https://solar.googleapis.com/v1/buildingInsights:findClosest?${params}`,\r\n );\r\n\r\n if (!response.ok) {\r\n const errorText = await response.text();\r\n throw new Error(\r\n `HTTP error! status: ${response.status}, body: ${errorText}`,\r\n );\r\n }\r\n\r\n const contentType = response.headers.get(\"content-type\");\r\n if (!contentType || !contentType.includes(\"application/json\")) {\r\n const text = await response.text();\r\n console.error(\"Unexpected content type:\", contentType, \"Response:\", text);\r\n return null;\r\n }\r\n\r\n const rawData: BuildingInsightsResponse = await response.json();\r\n return rawData;\r\n } catch (error) {\r\n console.error(\"Error fetching solar data:\", error);\r\n if (\r\n error instanceof TypeError &&\r\n error.message === \"Failed to fetch\"\r\n ) {\r\n throw new Error(\"Unable to connect to the solar data API.\");\r\n }\r\n throw error;\r\n }\r\n}\r\n\r\nexport interface LeadData {\r\n location: {\r\n name: string;\r\n latitude: number;\r\n longitude: number;\r\n };\r\n systemConfig: {\r\n maxNumberOfPanels: number;\r\n panelPeakPower: number;\r\n polygons: any[];\r\n solarSystems: any;\r\n electricityPrice: number;\r\n compensationRate: number;\r\n annualPriceIncrease: number;\r\n };\r\n client: {\r\n name: string;\r\n email: string;\r\n phone: string;\r\n consumption: number;\r\n consumptionProfile: string;\r\n hasBattery: boolean;\r\n battery: number;\r\n hasHeatPump: boolean;\r\n heatPumpM2: number;\r\n hasElectricCar: boolean;\r\n electricCarChargingTime: string;\r\n electricCarKmPerYear: number;\r\n };\r\n images: {\r\n roof: string;\r\n polygon: string;\r\n };\r\n results: {\r\n autonomy: number;\r\n costSavings: number;\r\n compensation20Years: number;\r\n savedCosts20Years: number;\r\n totalEnergyConsumption: number;\r\n };\r\n}\r\n\r\nexport async function sendLeadToNexvoro(\r\n leadData: LeadData,\r\n): Promise<{ success: boolean; message: string; leadId?: number }> {\r\n try {\r\n // Prepare the lead data according to Nexvoro specifications\r\n const leadPayload = {\r\n id: \"\", // Empty for new leads\r\n leadtype: \"A-Lead\", // Fixed value\r\n phase: \"10 Anbahnung\", // Fixed value\r\n title: `${leadData.client.name}/solarExpert`, // Short description\r\n extradata: JSON.stringify(leadData), // JSON string with all data\r\n };\r\n\r\n // Build the URL with required parameters\r\n const baseUrl = \"https://workspace.nexvoro.cloud/exchange/extevent\";\r\n const params = new URLSearchParams({\r\n md: \"81.87.84.89.90.\", // Encrypted tenant\r\n token: \"rdwetayarqzwtdsqystyraa\", // Token for Ruiz\r\n type: \"new\", // Action: new lead\r\n data: \"lead\", // Data area: leads\r\n value: JSON.stringify(leadPayload),\r\n });\r\n\r\n const url = `${baseUrl}?${params.toString()}`;\r\n\r\n // Send the request\r\n const response = await fetch(url, {\r\n method: \"GET\",\r\n headers: {\r\n \"Content-Type\": \"application/x-www-form-urlencoded\",\r\n charset: \"utf-8\",\r\n },\r\n // body: JSON.stringify(leadPayload),\r\n body: new URLSearchParams(leadPayload).toString(),\r\n });\r\n\r\n if (!response.ok) {\r\n const errorText = await response.text();\r\n throw new Error(\r\n `HTTP error! status: ${response.status}, body: ${errorText}`,\r\n );\r\n }\r\n\r\n const result = await response.json();\r\n\r\n // Check if the response contains a lead ID (successful creation)\r\n if (result.id || result.leadId) {\r\n return {\r\n success: true,\r\n message: \"Lead successfully created\",\r\n leadId: result.id || result.leadId,\r\n };\r\n } else {\r\n return {\r\n success: true,\r\n message: \"Lead submitted successfully\",\r\n leadId: undefined,\r\n };\r\n }\r\n } catch (error) {\r\n console.error(\"Error sending lead to Nexvoro:\", error);\r\n return {\r\n success: false,\r\n message: error instanceof Error\r\n ? error.message\r\n : \"Unknown error occurred\",\r\n };\r\n }\r\n}\r\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,104 @@
1
+
2
+ if (typeof global === "undefined") { var global = globalThis || window || self; }
3
+ async function fetchSolarData(latitude, longitude, apiKey) {
4
+ if (latitude === 0 || longitude === 0) {
5
+ return null;
6
+ }
7
+ try {
8
+ const args = {
9
+ "location.latitude": latitude.toFixed(5),
10
+ "location.longitude": longitude.toFixed(5),
11
+ };
12
+ const params = new URLSearchParams({
13
+ ...args,
14
+ key: apiKey,
15
+ });
16
+ const response = await fetch(`https://solar.googleapis.com/v1/buildingInsights:findClosest?${params}`);
17
+ if (!response.ok) {
18
+ const errorText = await response.text();
19
+ throw new Error(`HTTP error! status: ${response.status}, body: ${errorText}`);
20
+ }
21
+ const contentType = response.headers.get("content-type");
22
+ if (!contentType || !contentType.includes("application/json")) {
23
+ const text = await response.text();
24
+ console.error("Unexpected content type:", contentType, "Response:", text);
25
+ return null;
26
+ }
27
+ const rawData = await response.json();
28
+ return rawData;
29
+ }
30
+ catch (error) {
31
+ console.error("Error fetching solar data:", error);
32
+ if (error instanceof TypeError &&
33
+ error.message === "Failed to fetch") {
34
+ throw new Error("Unable to connect to the solar data API.");
35
+ }
36
+ throw error;
37
+ }
38
+ }
39
+ async function sendLeadToNexvoro(leadData) {
40
+ try {
41
+ // Prepare the lead data according to Nexvoro specifications
42
+ const leadPayload = {
43
+ id: "", // Empty for new leads
44
+ leadtype: "A-Lead", // Fixed value
45
+ phase: "10 Anbahnung", // Fixed value
46
+ title: `${leadData.client.name}/solarExpert`, // Short description
47
+ // extradata: JSON.stringify(leadData), // JSON string with all data
48
+ };
49
+ // Build the URL with required parameters
50
+ const baseUrl = "https://workspace.nexvoro.cloud/exchange/extevent";
51
+ const params = new URLSearchParams({
52
+ md: "81.87.84.89.90.", // Encrypted tenant
53
+ token: "rdwetayarqzwtdsqystyraa", // Token for Ruiz
54
+ type: "new", // Action: new lead
55
+ data: "lead", // Data area: leads
56
+ value: JSON.stringify(leadPayload),
57
+ });
58
+ const url = `${baseUrl}?${params.toString()}`;
59
+ // Send the request
60
+ const response = await fetch(url, {
61
+ method: "GET",
62
+ headers: {
63
+ "Content-Type": "application/x-www-form-urlencoded",
64
+ charset: "utf-8",
65
+ },
66
+ // body: JSON.stringify(leadPayload),
67
+ // body: new URLSearchParams(leadPayload).toString(),
68
+ });
69
+ if (!response.ok) {
70
+ const errorText = await response.text();
71
+ throw new Error(`HTTP error! status: ${response.status}, body: ${errorText}`);
72
+ }
73
+ const result = await response.json();
74
+ // Check if the response contains a lead ID (successful creation)
75
+ if (result.id || result.leadId) {
76
+ return {
77
+ success: true,
78
+ message: "Lead successfully created",
79
+ leadId: result.id || result.leadId,
80
+ };
81
+ }
82
+ else {
83
+ return {
84
+ success: true,
85
+ message: "Lead submitted successfully",
86
+ leadId: undefined,
87
+ };
88
+ }
89
+ }
90
+ catch (error) {
91
+ console.error("Error sending lead to Nexvoro:", error);
92
+ return {
93
+ success: false,
94
+ message: error instanceof Error
95
+ ? error.message
96
+ : "Unknown error occurred",
97
+ };
98
+ }
99
+ }
100
+
101
+ export { fetchSolarData as f, sendLeadToNexvoro as s };
102
+ //# sourceMappingURL=api-CiNFC5mG.js.map
103
+
104
+ //# sourceMappingURL=api-CiNFC5mG.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-CiNFC5mG.js","sources":["src/utils/api.ts"],"sourcesContent":["import { BuildingInsightsResponse } from \"harmonia-types\";\r\n\r\nexport async function fetchSolarData(\r\n latitude: number,\r\n longitude: number,\r\n apiKey: string,\r\n) {\r\n if (latitude === 0 || longitude === 0) {\r\n return null;\r\n }\r\n try {\r\n const args = {\r\n \"location.latitude\": latitude.toFixed(5),\r\n \"location.longitude\": longitude.toFixed(5),\r\n };\r\n const params = new URLSearchParams({\r\n ...args,\r\n key: apiKey,\r\n });\r\n const response = await fetch(\r\n `https://solar.googleapis.com/v1/buildingInsights:findClosest?${params}`,\r\n );\r\n\r\n if (!response.ok) {\r\n const errorText = await response.text();\r\n throw new Error(\r\n `HTTP error! status: ${response.status}, body: ${errorText}`,\r\n );\r\n }\r\n\r\n const contentType = response.headers.get(\"content-type\");\r\n if (!contentType || !contentType.includes(\"application/json\")) {\r\n const text = await response.text();\r\n console.error(\"Unexpected content type:\", contentType, \"Response:\", text);\r\n return null;\r\n }\r\n\r\n const rawData: BuildingInsightsResponse = await response.json();\r\n return rawData;\r\n } catch (error) {\r\n console.error(\"Error fetching solar data:\", error);\r\n if (\r\n error instanceof TypeError &&\r\n error.message === \"Failed to fetch\"\r\n ) {\r\n throw new Error(\"Unable to connect to the solar data API.\");\r\n }\r\n throw error;\r\n }\r\n}\r\n\r\nexport interface LeadData {\r\n location: {\r\n name: string;\r\n latitude: number;\r\n longitude: number;\r\n };\r\n systemConfig: {\r\n maxNumberOfPanels: number;\r\n panelPeakPower: number;\r\n polygons: any[];\r\n solarSystems: any;\r\n electricityPrice: number;\r\n compensationRate: number;\r\n annualPriceIncrease: number;\r\n };\r\n client: {\r\n name: string;\r\n email: string;\r\n phone: string;\r\n consumption: number;\r\n consumptionProfile: string;\r\n hasBattery: boolean;\r\n battery: number;\r\n hasHeatPump: boolean;\r\n heatPumpM2: number;\r\n hasElectricCar: boolean;\r\n electricCarChargingTime: string;\r\n electricCarKmPerYear: number;\r\n };\r\n images: {\r\n roof: string;\r\n polygon: string;\r\n };\r\n results: {\r\n autonomy: number;\r\n costSavings: number;\r\n compensation20Years: number;\r\n savedCosts20Years: number;\r\n totalEnergyConsumption: number;\r\n };\r\n}\r\n\r\nexport async function sendLeadToNexvoro(\r\n leadData: LeadData,\r\n): Promise<{ success: boolean; message: string; leadId?: number }> {\r\n try {\r\n // Prepare the lead data according to Nexvoro specifications\r\n const leadPayload = {\r\n id: \"\", // Empty for new leads\r\n leadtype: \"A-Lead\", // Fixed value\r\n phase: \"10 Anbahnung\", // Fixed value\r\n title: `${leadData.client.name}/solarExpert`, // Short description\r\n // extradata: JSON.stringify(leadData), // JSON string with all data\r\n };\r\n\r\n // Build the URL with required parameters\r\n const baseUrl = \"https://workspace.nexvoro.cloud/exchange/extevent\";\r\n const params = new URLSearchParams({\r\n md: \"81.87.84.89.90.\", // Encrypted tenant\r\n token: \"rdwetayarqzwtdsqystyraa\", // Token for Ruiz\r\n type: \"new\", // Action: new lead\r\n data: \"lead\", // Data area: leads\r\n value: JSON.stringify(leadPayload),\r\n });\r\n\r\n const url = `${baseUrl}?${params.toString()}`;\r\n\r\n // Send the request\r\n const response = await fetch(url, {\r\n method: \"GET\",\r\n headers: {\r\n \"Content-Type\": \"application/x-www-form-urlencoded\",\r\n charset: \"utf-8\",\r\n },\r\n // body: JSON.stringify(leadPayload),\r\n // body: new URLSearchParams(leadPayload).toString(),\r\n });\r\n\r\n if (!response.ok) {\r\n const errorText = await response.text();\r\n throw new Error(\r\n `HTTP error! status: ${response.status}, body: ${errorText}`,\r\n );\r\n }\r\n\r\n const result = await response.json();\r\n\r\n // Check if the response contains a lead ID (successful creation)\r\n if (result.id || result.leadId) {\r\n return {\r\n success: true,\r\n message: \"Lead successfully created\",\r\n leadId: result.id || result.leadId,\r\n };\r\n } else {\r\n return {\r\n success: true,\r\n message: \"Lead submitted successfully\",\r\n leadId: undefined,\r\n };\r\n }\r\n } catch (error) {\r\n console.error(\"Error sending lead to Nexvoro:\", error);\r\n return {\r\n success: false,\r\n message: error instanceof Error\r\n ? error.message\r\n : \"Unknown error occurred\",\r\n };\r\n }\r\n}\r\n"],"names":[],"mappings":"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"}