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,13 +1,15 @@
1
1
  import { h } from "@stencil/core";
2
2
  import { getLanguageStrings } from "../../utils/lang/general";
3
3
  import { state } from "../../store";
4
- import { tools } from "../../utils/render/tools";
4
+ import { tools, undoTool } from "../../utils/render/tools";
5
5
  export class ToolBox {
6
6
  currentTool;
7
+ undoCallback;
7
8
  onToolSelect;
8
9
  render() {
9
10
  const t = getLanguageStrings(state.settings.language);
10
- return (h("div", { key: '2150dac3c211d9c2b8588b609c7d92d82295698d', class: "flex lg:gap-4 rounded-4xl bg-[#f3ebda] p-4 flex-wrap justify-center w-full text-xs" }, tools.map((tool) => {
11
+ const undoToolStrings = t.mapDraw.tools[undoTool.name];
12
+ return (h("div", { key: '21ef401acdfa0169902c72c51a7fad31c6fd75c4', class: "flex lg:gap-4 rounded-4xl bg-[#f3ebda] p-4 flex-wrap justify-center w-full text-xs" }, tools.map((tool) => {
11
13
  const toolStrings = t.mapDraw.tools[tool.name];
12
14
  return (h("button", { class: `px-4 py-2 rounded-4xl transition-colors duration-200 hover:bg-[#ffffff] ${this.currentTool.name === tool.name
13
15
  ? "bg-[#271200] hover:bg-gray-500"
@@ -16,7 +18,11 @@ export class ToolBox {
16
18
  ? "#ffffff"
17
19
  : "#000000",
18
20
  }, "aria-label": toolStrings.ariaLabel, title: toolStrings.explanation, onClick: () => this.onToolSelect(tool) }, h("div", { class: "flex items-center gap-1 flex-col" }, h("icon-selector", { name: tool.icon }), h("span", null, toolStrings.name))));
19
- })));
21
+ }), h("button", { key: '2de8094cce52d847d6cf65966876e449b86156af', class: `px-4 py-2 rounded-4xl transition-colors duration-200 hover:bg-[#ffffff] ${this.currentTool.name === undoTool.name
22
+ ? "bg-[#271200] hover:bg-gray-500"
23
+ : "bg-[#f3ebda] hover:bg-[#ffffff]"}`, style: {
24
+ color: "#000000",
25
+ }, "aria-label": undoToolStrings.ariaLabel, title: undoToolStrings.explanation, onClick: () => this.undoCallback() }, h("div", { key: '559227361f76ce39b4c2e48f216d477737e46d6c', class: "flex items-center gap-1 flex-col" }, h("undo-icon", { key: '6b97156dfd7d50c11ad627e9b6d11539e4b0fc7e' }), h("span", { key: '6307014e12640793d7e2511b790d192824a8d2fa' }, undoToolStrings.name)))));
20
26
  }
21
27
  static get is() { return "tool-box"; }
22
28
  static get originalStyleUrls() {
@@ -55,6 +61,24 @@ export class ToolBox {
55
61
  "getter": false,
56
62
  "setter": false
57
63
  },
64
+ "undoCallback": {
65
+ "type": "unknown",
66
+ "attribute": "undo-callback",
67
+ "mutable": false,
68
+ "complexType": {
69
+ "original": "() => void",
70
+ "resolved": "() => void",
71
+ "references": {}
72
+ },
73
+ "required": false,
74
+ "optional": false,
75
+ "docs": {
76
+ "tags": [],
77
+ "text": ""
78
+ },
79
+ "getter": false,
80
+ "setter": false
81
+ },
58
82
  "onToolSelect": {
59
83
  "type": "unknown",
60
84
  "attribute": "on-tool-select",
@@ -1 +1 @@
1
- {"version":3,"file":"tool-box.js","sourceRoot":"","sources":["../../../src/components/map-draw/tool-box.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAEnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAOjD,MAAM,OAAO,OAAO;IAEhB,WAAW,CAAO;IAGlB,YAAY,CAAuB;IAEnC,MAAM;QACF,MAAM,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAEtD,OAAO,CACH,4DAAK,KAAK,EAAC,oFAAoF,IAC1F,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YAChB,MAAM,WAAW,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/C,OAAO,CACH,cACI,KAAK,EAAE,2EACH,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI;oBAC/B,CAAC,CAAC,gCAAgC;oBAClC,CAAC,CAAC,iCACV,EAAE,EACF,KAAK,EAAE;oBACH,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI;wBACtC,CAAC,CAAC,SAAS;wBACX,CAAC,CAAC,SAAS;iBAClB,gBACW,WAAW,CAAC,SAAS,EACjC,KAAK,EAAE,WAAW,CAAC,WAAW,EAC9B,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;gBAEtC,WAAK,KAAK,EAAC,kCAAkC;oBACzC,qBAAe,IAAI,EAAE,IAAI,CAAC,IAAI,GAAI;oBAClC,gBAAO,WAAW,CAAC,IAAI,CAAQ,CAC7B,CACD,CACZ,CAAC;QACN,CAAC,CAAC,CACA,CACT,CAAC;IACN,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACJ","sourcesContent":["import { Component, h, Prop } from \"@stencil/core\";\r\nimport { Tool } from \"../../utils/render/tools\";\r\nimport { getLanguageStrings } from \"../../utils/lang/general\";\r\nimport { state } from \"../../store\";\r\nimport { tools } from \"../../utils/render/tools\";\r\n\r\n@Component({\r\n tag: \"tool-box\",\r\n styleUrl: \"../../output.css\",\r\n shadow: false,\r\n})\r\nexport class ToolBox {\r\n @Prop()\r\n currentTool: Tool;\r\n\r\n @Prop()\r\n onToolSelect: (tool: Tool) => void;\r\n\r\n render() {\r\n const t = getLanguageStrings(state.settings.language);\r\n\r\n return (\r\n <div class=\"flex lg:gap-4 rounded-4xl bg-[#f3ebda] p-4 flex-wrap justify-center w-full text-xs\">\r\n {tools.map((tool) => {\r\n const toolStrings = t.mapDraw.tools[tool.name];\r\n return (\r\n <button\r\n class={`px-4 py-2 rounded-4xl transition-colors duration-200 hover:bg-[#ffffff] ${\r\n this.currentTool.name === tool.name\r\n ? \"bg-[#271200] hover:bg-gray-500\"\r\n : \"bg-[#f3ebda] hover:bg-[#ffffff]\"\r\n }`}\r\n style={{\r\n color: this.currentTool.name === tool.name\r\n ? \"#ffffff\"\r\n : \"#000000\",\r\n }}\r\n aria-label={toolStrings.ariaLabel}\r\n title={toolStrings.explanation}\r\n onClick={() => this.onToolSelect(tool)}\r\n >\r\n <div class=\"flex items-center gap-1 flex-col\">\r\n <icon-selector name={tool.icon} />\r\n <span>{toolStrings.name}</span>\r\n </div>\r\n </button>\r\n );\r\n })}\r\n </div>\r\n );\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"tool-box.js","sourceRoot":"","sources":["../../../src/components/map-draw/tool-box.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAEnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAO3D,MAAM,OAAO,OAAO;IAEhB,WAAW,CAAO;IAElB,YAAY,CAAa;IAEzB,YAAY,CAAuB;IAEnC,MAAM;QACF,MAAM,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACtD,MAAM,eAAe,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEvD,OAAO,CACH,4DAAK,KAAK,EAAC,oFAAoF;YAC1F,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gBAChB,MAAM,WAAW,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC/C,OAAO,CACH,cACI,KAAK,EAAE,2EACH,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI;wBAC/B,CAAC,CAAC,gCAAgC;wBAClC,CAAC,CAAC,iCACV,EAAE,EACF,KAAK,EAAE;wBACH,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI;4BACtC,CAAC,CAAC,SAAS;4BACX,CAAC,CAAC,SAAS;qBAClB,gBACW,WAAW,CAAC,SAAS,EACjC,KAAK,EAAE,WAAW,CAAC,WAAW,EAC9B,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;oBAEtC,WAAK,KAAK,EAAC,kCAAkC;wBACzC,qBAAe,IAAI,EAAE,IAAI,CAAC,IAAI,GAAI;wBAClC,gBAAO,WAAW,CAAC,IAAI,CAAQ,CAC7B,CACD,CACZ,CAAC;YACN,CAAC,CAAC;YACF,+DACI,KAAK,EAAE,2EACH,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI;oBACnC,CAAC,CAAC,gCAAgC;oBAClC,CAAC,CAAC,iCACV,EAAE,EACF,KAAK,EAAE;oBACH,KAAK,EAAE,SAAS;iBACnB,gBACW,eAAe,CAAC,SAAS,EACrC,KAAK,EAAE,eAAe,CAAC,WAAW,EAClC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE;gBAElC,4DAAK,KAAK,EAAC,kCAAkC;oBACzC,mEAAa;oBACb,+DAAO,eAAe,CAAC,IAAI,CAAQ,CACjC,CACD,CACP,CACT,CAAC;IACN,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACJ","sourcesContent":["import { Component, h, Prop } from \"@stencil/core\";\r\nimport { Tool } from \"../../utils/render/tools\";\r\nimport { getLanguageStrings } from \"../../utils/lang/general\";\r\nimport { state } from \"../../store\";\r\nimport { tools, undoTool } from \"../../utils/render/tools\";\r\n\r\n@Component({\r\n tag: \"tool-box\",\r\n styleUrl: \"../../output.css\",\r\n shadow: false,\r\n})\r\nexport class ToolBox {\r\n @Prop()\r\n currentTool: Tool;\r\n @Prop()\r\n undoCallback: () => void;\r\n @Prop()\r\n onToolSelect: (tool: Tool) => void;\r\n\r\n render() {\r\n const t = getLanguageStrings(state.settings.language);\r\n const undoToolStrings = t.mapDraw.tools[undoTool.name];\r\n\r\n return (\r\n <div class=\"flex lg:gap-4 rounded-4xl bg-[#f3ebda] p-4 flex-wrap justify-center w-full text-xs\">\r\n {tools.map((tool) => {\r\n const toolStrings = t.mapDraw.tools[tool.name];\r\n return (\r\n <button\r\n class={`px-4 py-2 rounded-4xl transition-colors duration-200 hover:bg-[#ffffff] ${\r\n this.currentTool.name === tool.name\r\n ? \"bg-[#271200] hover:bg-gray-500\"\r\n : \"bg-[#f3ebda] hover:bg-[#ffffff]\"\r\n }`}\r\n style={{\r\n color: this.currentTool.name === tool.name\r\n ? \"#ffffff\"\r\n : \"#000000\",\r\n }}\r\n aria-label={toolStrings.ariaLabel}\r\n title={toolStrings.explanation}\r\n onClick={() => this.onToolSelect(tool)}\r\n >\r\n <div class=\"flex items-center gap-1 flex-col\">\r\n <icon-selector name={tool.icon} />\r\n <span>{toolStrings.name}</span>\r\n </div>\r\n </button>\r\n );\r\n })}\r\n <button\r\n class={`px-4 py-2 rounded-4xl transition-colors duration-200 hover:bg-[#ffffff] ${\r\n this.currentTool.name === undoTool.name\r\n ? \"bg-[#271200] hover:bg-gray-500\"\r\n : \"bg-[#f3ebda] hover:bg-[#ffffff]\"\r\n }`}\r\n style={{\r\n color: \"#000000\",\r\n }}\r\n aria-label={undoToolStrings.ariaLabel}\r\n title={undoToolStrings.explanation}\r\n onClick={() => this.undoCallback()}\r\n >\r\n <div class=\"flex items-center gap-1 flex-col\">\r\n <undo-icon />\r\n <span>{undoToolStrings.name}</span>\r\n </div>\r\n </button>\r\n </div>\r\n );\r\n }\r\n}\r\n"]}
@@ -31,14 +31,14 @@ export class SettingsModal {
31
31
  };
32
32
  render() {
33
33
  const t = getLanguageStrings(state.settings.language);
34
- return (h("div", { key: '1caea4a1149577ae2202ba32c7a7136bbe113e0f', class: "fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50" }, h("div", { key: '3033c8cc62a3647114904dca61b81523437544dd', class: "bg-[#f3ebda] rounded-4xl p-6 w-full max-w-md" }, h("div", { key: 'beab465b7612935ee58d25211d1c3af5e133f9b1', class: "flex justify-between items-center mb-6" }, h("h2", { key: '43b6c0c93b413abe6e61f169187e750b7c004413', class: "text-xl font-semibold" }, "Settings"), h("button", { key: '3221e8724464ed9a6cecd5167b37214fd357a4b7', class: "p-2 hover:bg-gray-200 rounded-full transition-colors", onClick: this.handleClose }, h("svg", { key: 'c43658814514ff152f90cfd51db1b69f9c733fe5', xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" }, h("line", { key: '5419dead2da7bbaeaf3e6a085403f9417b2a37c8', x1: "18", y1: "6", x2: "6", y2: "18" }), h("line", { key: 'd3bfcb29a26619d5589c7e7c3e5066797395877e', x1: "6", y1: "6", x2: "18", y2: "18" })))), h("div", { key: '92e2f02d580b59a877e26846b204ce0b3a0c5284', class: "space-y-4" }, h("div", { key: 'a4a29eb65f1afa64094af1646a7884a070947e4c' }, h("label", { key: '10c06052e3271db8ba10a007cb4c8786cb6f492a', class: "block text-sm font-medium text-gray-600 mb-1" }, t.settings.language), h("select", { key: '5eca7c1cd78210ab1561bdaf3009f4bed7856c7a', class: "w-full bg-white rounded-4xl p-2", onInput: (e) => this.handleInputChange("language", e.target
35
- .value) }, h("option", { key: '7abdc7b2ef8f00e3274e1e058cf230be2d6fe878', value: "en", selected: this.tempSettings.language ===
36
- "en" }, "English"), h("option", { key: '26e2122e991cad5561870dbd549dc6567161686f', value: "es", selected: this.tempSettings.language ===
37
- "es" }, "Espa\u00F1ol"), h("option", { key: 'b53944de68db27dac4da70c078d9d5a70220c79f', value: "de", selected: this.tempSettings.language ===
38
- "de" }, "Deutsch"))), h("div", { key: 'a9c6f76a93076a13ca5f0c9ca65b4d9d2cddb920' }, h("label", { key: '6699c347a9e3ee9a6192f4114ecb08cc7db819b8', class: "block text-sm font-medium text-gray-600 mb-1" }, t.settings.rowSpacing), h("input", { key: 'd9dfac6b8380806b3696c33e5336914c0de19f5a', type: "number", class: "w-full bg-white rounded-4xl p-2", value: this.tempSettings.rowSpacing, onInput: (e) => this.handleInputChange("rowSpacing", parseFloat(e.target
39
- .value)) })), h("div", { key: 'f5ef550e2b1dde3de5489b8a7432306e05c496fb' }, h("label", { key: '2e6d805dc725720358762546a30f6a4dc0716196', class: "block text-sm font-medium text-gray-600 mb-1" }, t.settings.columnSpacing), h("input", { key: 'ba9e4d8c386f559e90b1c259c1f49e994c6e2ac4', type: "number", class: "w-full bg-white rounded-4xl p-2", value: this.tempSettings.columnSpacing, onInput: (e) => this.handleInputChange("columnSpacing", parseFloat(e.target
40
- .value)) })), h("div", { key: '3fc641db2163783afbebc80dd37728d0cdeef5db' }, h("label", { key: 'b56aba7675f2e69668cd947610871af9a71edd11', class: "block text-sm font-medium text-gray-600 mb-1" }, t.settings.borderInset), h("input", { key: '82373ea669748a5d656f8b3faac334ebd200d646', type: "number", class: "w-full bg-white rounded-4xl p-2", value: this.tempSettings.borderInset, onInput: (e) => this.handleInputChange("borderInset", parseFloat(e.target
41
- .value)) }))), h("div", { key: '1a68adb849e09709a6cef05977b6e9fcb1aabd7f', class: "flex justify-end gap-4 mt-6" }, h("button", { key: '89df32c4f538dde73c58dc9d4ca9e583ceb38732', class: "px-4 py-2 bg-gray-200 rounded-4xl hover:bg-gray-300 transition-colors", onClick: this.handleClose }, "Cancel"), h("button", { key: 'b21daef28ad77aa1be61b6c262dbd8b310980894', class: "px-4 py-2 bg-[#271200] text-white rounded-4xl hover:bg-gray-500 transition-colors", onClick: this.handleSave }, "Save Changes")))));
34
+ return (h("div", { key: '69815a7efeb8f52a5d3422b06dc212a50b9f405b', class: "fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50" }, h("div", { key: '29bdfcdafa5765b3357633d3f6519be2abda0f31', class: "bg-[#f3ebda] rounded-4xl p-6 w-full max-w-md" }, h("div", { key: 'c764738701a7bb98247dd394126c70a257c014bf', class: "flex justify-between items-center mb-6" }, h("h2", { key: '5ebd4cae530c898c297f7db28ec96888c2981f2a', class: "text-xl font-semibold" }, "Settings"), h("button", { key: 'f7bea1c79bb453fbb62b478a361a55de0f2d2765', class: "p-2 hover:bg-gray-200 rounded-full transition-colors", onClick: this.handleClose }, h("svg", { key: '972c54d0ff2815eb425e24d1ad9082a7e0c97f01', xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" }, h("line", { key: 'f11390a3eb51c202edbee1f590a7fa393a9185fd', x1: "18", y1: "6", x2: "6", y2: "18" }), h("line", { key: 'a019cd26820d563689c10961770dd87b09103047', x1: "6", y1: "6", x2: "18", y2: "18" })))), h("div", { key: '4b801dd8b6dbba9c7a2b2e08f03f36202bebbd67', class: "space-y-4" }, h("div", { key: 'f4a1894419edad7da806a2806f77a8fe60ced341' }, h("label", { key: 'da3bb6927298f85bdc73ed89bdb990e52b17ea15', class: "block text-sm font-medium text-gray-600 mb-1" }, t.settings.language), h("select", { key: '825705965ddf8fa20d05905759f2b3b460d52b55', class: "w-full bg-white rounded-4xl p-2", onInput: (e) => this.handleInputChange("language", e.target
35
+ .value) }, h("option", { key: 'cfed58aefbe6ebc59702f663308d2d8561cff28d', value: "en", selected: this.tempSettings.language ===
36
+ "en" }, "English"), h("option", { key: '2318d8bf1585a7a1fd025f46d01b2bb81363497e', value: "es", selected: this.tempSettings.language ===
37
+ "es" }, "Espa\u00F1ol"), h("option", { key: '17b93bbcd8284497f0cef3d6e23ad034621b58af', value: "de", selected: this.tempSettings.language ===
38
+ "de" }, "Deutsch"))), h("div", { key: 'c482c4e8dd6ffab0de3d41cb7e41a391dedb714d' }, h("label", { key: 'c1abc00b0fb193044e73db048bf8eed03770a10d', class: "block text-sm font-medium text-gray-600 mb-1" }, t.settings.rowSpacing), h("input", { key: '55458c275f594da462e5665a4f74dcd117ba1de2', type: "number", class: "w-full bg-white rounded-4xl p-2", value: this.tempSettings.rowSpacing, onInput: (e) => this.handleInputChange("rowSpacing", parseFloat(e.target
39
+ .value)) })), h("div", { key: 'b2ae04d05ba09bd10619c3bf0608864c2a76870a' }, h("label", { key: '8b7959e10de695570f258e10d67e83a7a360ef6d', class: "block text-sm font-medium text-gray-600 mb-1" }, t.settings.columnSpacing), h("input", { key: 'c67d963036385a0a97fc70ea8b6aadd9c9f65a85', type: "number", class: "w-full bg-white rounded-4xl p-2", value: this.tempSettings.columnSpacing, onInput: (e) => this.handleInputChange("columnSpacing", parseFloat(e.target
40
+ .value)) })), h("div", { key: '383a7f16994f833850cb86ba1f1bdd305f94a135' }, h("label", { key: '03605c7ae69c6afeaab0cdfefa491008b49f331c', class: "block text-sm font-medium text-gray-600 mb-1" }, t.settings.borderInset), h("input", { key: '8cb1be4539c7a9677a6138279363e835048e789f', type: "number", class: "w-full bg-white rounded-4xl p-2", value: this.tempSettings.borderInset, onInput: (e) => this.handleInputChange("borderInset", parseFloat(e.target
41
+ .value)) }))), h("div", { key: '6774337949104e019f7fb0b028e4f000308f9aeb', class: "flex justify-end gap-4 mt-6" }, h("button", { key: 'c0ec044e5e67450e65c7fb478afc93e476d9450c', class: "px-4 py-2 bg-gray-200 rounded-4xl hover:bg-gray-300 transition-colors", onClick: this.handleClose }, "Cancel"), h("button", { key: 'c9727418d8e49647f8eb0aa11e6051997766becf', class: "px-4 py-2 bg-[#271200] text-white rounded-4xl hover:bg-gray-500 transition-colors", onClick: this.handleSave }, "Save Changes")))));
42
42
  }
43
43
  static get is() { return "settings-modal"; }
44
44
  static get originalStyleUrls() {
@@ -54,7 +54,7 @@ export class SolarCalculator {
54
54
  });
55
55
  }
56
56
  render() {
57
- return (h("div", { key: '83fdd08b283b03a3435cb33c8c9439185bac3468', class: "flex flex-col w-full h-full p-3" }, h("div", { key: '9e54fecba926dbe53d63eb54b6dc0c1c5ba2cec0', class: "pb-3" }, h("div", { key: '4f972e9cb3a2c1c4db2c2688e2b46d897dac518f', class: "relative" }, h("i", { key: '54c6f397224d3de4f22fb9740f91281144db7381', "data-lucide": "search", class: "absolute left-3 top-1/2 transform -translate-y-1/2 text-gray-400 " }), h("input", { key: 'da7675af0ac98832710381d7a089c922a64e7bae', ref: (el) => this.inputElement = el, type: "text", placeholder: "Search for a location", class: "w-full pl-10 pr-4 py-2 border border-gray-300 rounded-4xl focus:outline-none focus:ring-2 focus:ring-blue-500 bg-white" }))), this.buildingInsights && (h("div", { key: '9518c6a9a1e86f6352a613e957095679aeb89b02' }, "buildingInsights", h("div", { key: 'e9c0d473d08c0c5f0e5e0863e536e5eff2535392' }, JSON.stringify(this.buildingInsights))))));
57
+ return (h("div", { key: 'caa09baccc8825a26b3917be5123d0d25d4e55b0', class: "flex flex-col w-full h-full p-3" }, h("div", { key: '770f517caa0a3e92d4233b1d5e3d29a84b4674be', class: "pb-3" }, h("div", { key: '1e35a2da7b80bd678eaffb81f01baa18ca7a72cf', class: "relative" }, h("i", { key: 'e2a5867e28e59c83c9ba52e25745b5c6de185e20', "data-lucide": "search", class: "absolute left-3 top-1/2 transform -translate-y-1/2 text-gray-400 " }), h("input", { key: 'ef54e7eb669fcf89bf742fe7cd50bc7af5810665', ref: (el) => this.inputElement = el, type: "text", placeholder: "Search for a location", class: "w-full pl-10 pr-4 py-2 border border-gray-300 rounded-4xl focus:outline-none focus:ring-2 focus:ring-blue-500 bg-white" }))), this.buildingInsights && (h("div", { key: 'ded8f8896117935be39ef2da2e9afc770131125f' }, "buildingInsights", h("div", { key: '4bcf38d36a48ed699c66b896434bb6d35d90c61a' }, JSON.stringify(this.buildingInsights))))));
58
58
  }
59
59
  static get is() { return "solar-calculator"; }
60
60
  static get originalStyleUrls() {
@@ -13,6 +13,17 @@ export class SolarExpert {
13
13
  place = null;
14
14
  showMapSelector = false;
15
15
  inputElement;
16
+ iosPolyfill(slider, e) {
17
+ var val = (e.pageX - slider.getBoundingClientRect().left) /
18
+ (slider.getBoundingClientRect().right -
19
+ slider.getBoundingClientRect().left), max = parseInt(slider.getAttribute("max") || "0", 10), segment = 1 / (max - 1), segmentArr = [];
20
+ max++;
21
+ for (var i = 0; i < max; i++) {
22
+ segmentArr.push(segment * i);
23
+ }
24
+ var segCopy = segmentArr.slice(), ind = segmentArr.sort((a, b) => Math.abs(val - a) - Math.abs(val - b))[0];
25
+ slider.value = String(segCopy.indexOf(ind) + 1);
26
+ }
16
27
  componentWillLoad() {
17
28
  state.isMobile =
18
29
  /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i
@@ -25,6 +36,10 @@ export class SolarExpert {
25
36
  }
26
37
  });
27
38
  state.settings.language = this.language;
39
+ const sliders = document.querySelectorAll(".input-slider");
40
+ sliders.forEach((slider) => {
41
+ slider.addEventListener("touchend", (e) => this.iosPolyfill(slider, e), { passive: true });
42
+ });
28
43
  }
29
44
  async loadGoogleMapsScript() {
30
45
  try {
@@ -72,7 +87,7 @@ export class SolarExpert {
72
87
  }
73
88
  render() {
74
89
  const t = getLanguageStrings(this.language);
75
- return (h("div", { key: '65f06186417fb851b85740d8a03008220beebe45', class: "flex flex-col w-full h-full p-3 m-auto", id: "solar-calculator" }, this.showMapSelector
90
+ return (h("div", { key: 'e9007293338ea321ee12563815ec22f625e6abfc', class: "flex flex-col w-full h-full p-3 m-auto", id: "solar-calculator" }, this.showMapSelector
76
91
  ? (h("map-selector", { "api-key": this.apiKey, language: this.language }))
77
92
  : (h(h.Fragment, null, h("div", { class: "pb-3 flex flex-row gap-4 items-stretch w-full" }, h("div", { class: "relative flex-3" }, h("div", { class: "absolute left-3 top-1/2 transform -translate-y-1/2" }, h("search-icon", null)), h("input", { ref: (el) => this.inputElement = el, type: "text", placeholder: t.solarExpert
78
93
  .searchPlaceholder, class: "w-full pl-10 pr-4 py-2 border border-gray-300 rounded-4xl focus:ring-[#271200] bg-white h-full" })), h("button", { onClick: () => this.handleChooseOnMap(), class: "flex-1 pl-4 pr-4 py-2 border border-gray-300 bg-white rounded-4xl focus:ring-[#271200] hover:bg-[#271200] hover:text-white" }, t.mapSelector.chooseOnMap)), h("map-draw", { apiKey: this.apiKey })))));
@@ -1 +1 @@
1
- {"version":3,"file":"solar-expert.js","sourceRoot":"","sources":["../../../src/components/solar-expert/solar-expert.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Element, Env, h, Prop, State } from \"@stencil/core\";\r\nimport { Loader } from \"@googlemaps/js-api-loader\";\r\nimport { Language } from \"../../types/lang\";\r\nimport { getLanguageStrings } from \"../../utils/lang/general\";\r\nimport { onChange, state } from \"../../store\";\r\n\r\n@Component({\r\n tag: \"solar-expert\",\r\n shadow: false,\r\n styleUrl: \"../../output.css\",\r\n})\r\nexport class SolarExpert {\r\n @Element()\r\n el!: HTMLElement;\r\n\r\n @Prop()\r\n apiKey: string = Env.GOOGLE_MAPS_API_KEY;\r\n @Prop()\r\n language: Language = \"en\";\r\n\r\n @State()\r\n latitude: number | null = 40.581614;\r\n @State()\r\n longitude: number | null = -4.128423;\r\n @State()\r\n isLoaded: boolean = false;\r\n @State()\r\n autocomplete: google.maps.places.Autocomplete | null = null;\r\n @State()\r\n place: google.maps.places.PlaceResult | null = null;\r\n @State()\r\n showMapSelector: boolean = false;\r\n\r\n private inputElement?: HTMLInputElement;\r\n\r\n componentWillLoad() {\r\n state.isMobile =\r\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i\r\n .test(navigator.userAgent) || window.innerWidth < 768;\r\n this.loadGoogleMapsScript();\r\n onChange(\"latitude\", () => {\r\n if (this.showMapSelector) {\r\n this.showMapSelector = false;\r\n this.scrollToMapDraw();\r\n }\r\n });\r\n state.settings.language = this.language;\r\n }\r\n\r\n private async loadGoogleMapsScript() {\r\n try {\r\n const loader = new Loader({\r\n apiKey: this.apiKey,\r\n libraries: [\"places\", \"maps\", \"marker\"],\r\n });\r\n\r\n const places = await loader.importLibrary(\"places\");\r\n this.isLoaded = true;\r\n this.initializeAutocomplete(places);\r\n } catch (error) {\r\n console.error(\"Error loading Google Maps: \", error);\r\n }\r\n }\r\n\r\n private initializeAutocomplete(\r\n places: google.maps.PlacesLibrary,\r\n ) {\r\n if (!this.inputElement || !this.isLoaded) return;\r\n this.autocomplete = new places.Autocomplete(this.inputElement);\r\n\r\n this.autocomplete.addListener(\"place_changed\", () => {\r\n const place = this.autocomplete?.getPlace();\r\n this.latitude = place?.geometry?.location?.lat() ?? 0;\r\n this.longitude = place?.geometry?.location?.lng() ?? 0;\r\n state.latitude = this.latitude;\r\n state.longitude = this.longitude;\r\n\r\n this.scrollToMapDraw();\r\n });\r\n }\r\n\r\n private scrollToMapDraw() {\r\n if (state.isMobile) {\r\n const solarSystemFormElement = this.el.querySelector(\r\n \"solar-system-form\",\r\n );\r\n if (solarSystemFormElement) {\r\n solarSystemFormElement.scrollIntoView({ behavior: \"smooth\" });\r\n }\r\n } else {\r\n const mapDrawElement = this.el.querySelector(\"map-draw\");\r\n if (mapDrawElement) {\r\n mapDrawElement.scrollIntoView({ behavior: \"smooth\" });\r\n }\r\n }\r\n }\r\n\r\n private handleChooseOnMap() {\r\n this.showMapSelector = true;\r\n }\r\n\r\n render() {\r\n const t = getLanguageStrings(this.language);\r\n return (\r\n <div\r\n class=\"flex flex-col w-full h-full p-3 m-auto\"\r\n id=\"solar-calculator\"\r\n >\r\n {this.showMapSelector\r\n ? (\r\n <map-selector\r\n api-key={this.apiKey}\r\n language={this.language}\r\n />\r\n )\r\n : (\r\n <>\r\n <div class=\"pb-3 flex flex-row gap-4 items-stretch w-full\">\r\n <div class=\"relative flex-3\">\r\n <div class=\"absolute left-3 top-1/2 transform -translate-y-1/2\">\r\n <search-icon />\r\n </div>\r\n <input\r\n ref={(el) => this.inputElement = el}\r\n type=\"text\"\r\n placeholder={t.solarExpert\r\n .searchPlaceholder}\r\n class=\"w-full pl-10 pr-4 py-2 border border-gray-300 rounded-4xl focus:ring-[#271200] bg-white h-full\"\r\n />\r\n </div>\r\n <button\r\n onClick={() => this.handleChooseOnMap()}\r\n class=\"flex-1 pl-4 pr-4 py-2 border border-gray-300 bg-white rounded-4xl focus:ring-[#271200] hover:bg-[#271200] hover:text-white\"\r\n >\r\n {t.mapSelector.chooseOnMap}\r\n </button>\r\n </div>\r\n <map-draw\r\n apiKey={this.apiKey}\r\n />\r\n </>\r\n )}\r\n </div>\r\n );\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"solar-expert.js","sourceRoot":"","sources":["../../../src/components/solar-expert/solar-expert.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Element, Env, h, Prop, State } from \"@stencil/core\";\r\nimport { Loader } from \"@googlemaps/js-api-loader\";\r\nimport { Language } from \"../../types/lang\";\r\nimport { getLanguageStrings } from \"../../utils/lang/general\";\r\nimport { onChange, state } from \"../../store\";\r\n\r\n@Component({\r\n tag: \"solar-expert\",\r\n shadow: false,\r\n styleUrl: \"../../output.css\",\r\n})\r\nexport class SolarExpert {\r\n @Element()\r\n el!: HTMLElement;\r\n\r\n @Prop()\r\n apiKey: string = Env.GOOGLE_MAPS_API_KEY;\r\n @Prop()\r\n language: Language = \"en\";\r\n\r\n @State()\r\n latitude: number | null = 40.581614;\r\n @State()\r\n longitude: number | null = -4.128423;\r\n @State()\r\n isLoaded: boolean = false;\r\n @State()\r\n autocomplete: google.maps.places.Autocomplete | null = null;\r\n @State()\r\n place: google.maps.places.PlaceResult | null = null;\r\n @State()\r\n showMapSelector: boolean = false;\r\n\r\n private inputElement?: HTMLInputElement;\r\n\r\n private iosPolyfill(slider: HTMLInputElement, e) {\r\n var val = (e.pageX - slider.getBoundingClientRect().left) /\r\n (slider.getBoundingClientRect().right -\r\n slider.getBoundingClientRect().left),\r\n max = parseInt(slider.getAttribute(\"max\") || \"0\", 10),\r\n segment = 1 / (max - 1),\r\n segmentArr = [];\r\n\r\n max++;\r\n\r\n for (var i = 0; i < max; i++) {\r\n segmentArr.push(segment * i);\r\n }\r\n\r\n var segCopy = segmentArr.slice(),\r\n ind =\r\n segmentArr.sort((a, b) =>\r\n Math.abs(val - a) - Math.abs(val - b)\r\n )[0];\r\n\r\n slider.value = String(segCopy.indexOf(ind) + 1);\r\n }\r\n\r\n componentWillLoad() {\r\n state.isMobile =\r\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i\r\n .test(navigator.userAgent) || window.innerWidth < 768;\r\n this.loadGoogleMapsScript();\r\n onChange(\"latitude\", () => {\r\n if (this.showMapSelector) {\r\n this.showMapSelector = false;\r\n this.scrollToMapDraw();\r\n }\r\n });\r\n state.settings.language = this.language;\r\n\r\n const sliders = document.querySelectorAll(\".input-slider\");\r\n sliders.forEach((slider) => {\r\n slider.addEventListener(\r\n \"touchend\",\r\n (e) => this.iosPolyfill(slider as HTMLInputElement, e),\r\n { passive: true },\r\n );\r\n });\r\n }\r\n\r\n private async loadGoogleMapsScript() {\r\n try {\r\n const loader = new Loader({\r\n apiKey: this.apiKey,\r\n libraries: [\"places\", \"maps\", \"marker\"],\r\n });\r\n\r\n const places = await loader.importLibrary(\"places\");\r\n this.isLoaded = true;\r\n this.initializeAutocomplete(places);\r\n } catch (error) {\r\n console.error(\"Error loading Google Maps: \", error);\r\n }\r\n }\r\n\r\n private initializeAutocomplete(\r\n places: google.maps.PlacesLibrary,\r\n ) {\r\n if (!this.inputElement || !this.isLoaded) return;\r\n this.autocomplete = new places.Autocomplete(this.inputElement);\r\n\r\n this.autocomplete.addListener(\"place_changed\", () => {\r\n const place = this.autocomplete?.getPlace();\r\n this.latitude = place?.geometry?.location?.lat() ?? 0;\r\n this.longitude = place?.geometry?.location?.lng() ?? 0;\r\n state.latitude = this.latitude;\r\n state.longitude = this.longitude;\r\n\r\n this.scrollToMapDraw();\r\n });\r\n }\r\n\r\n private scrollToMapDraw() {\r\n if (state.isMobile) {\r\n const solarSystemFormElement = this.el.querySelector(\r\n \"solar-system-form\",\r\n );\r\n if (solarSystemFormElement) {\r\n solarSystemFormElement.scrollIntoView({ behavior: \"smooth\" });\r\n }\r\n } else {\r\n const mapDrawElement = this.el.querySelector(\"map-draw\");\r\n if (mapDrawElement) {\r\n mapDrawElement.scrollIntoView({ behavior: \"smooth\" });\r\n }\r\n }\r\n }\r\n\r\n private handleChooseOnMap() {\r\n this.showMapSelector = true;\r\n }\r\n\r\n render() {\r\n const t = getLanguageStrings(this.language);\r\n return (\r\n <div\r\n class=\"flex flex-col w-full h-full p-3 m-auto\"\r\n id=\"solar-calculator\"\r\n >\r\n {this.showMapSelector\r\n ? (\r\n <map-selector\r\n api-key={this.apiKey}\r\n language={this.language}\r\n />\r\n )\r\n : (\r\n <>\r\n <div class=\"pb-3 flex flex-row gap-4 items-stretch w-full\">\r\n <div class=\"relative flex-3\">\r\n <div class=\"absolute left-3 top-1/2 transform -translate-y-1/2\">\r\n <search-icon />\r\n </div>\r\n <input\r\n ref={(el) => this.inputElement = el}\r\n type=\"text\"\r\n placeholder={t.solarExpert\r\n .searchPlaceholder}\r\n class=\"w-full pl-10 pr-4 py-2 border border-gray-300 rounded-4xl focus:ring-[#271200] bg-white h-full\"\r\n />\r\n </div>\r\n <button\r\n onClick={() => this.handleChooseOnMap()}\r\n class=\"flex-1 pl-4 pr-4 py-2 border border-gray-300 bg-white rounded-4xl focus:ring-[#271200] hover:bg-[#271200] hover:text-white\"\r\n >\r\n {t.mapSelector.chooseOnMap}\r\n </button>\r\n </div>\r\n <map-draw\r\n apiKey={this.apiKey}\r\n />\r\n </>\r\n )}\r\n </div>\r\n );\r\n }\r\n}\r\n"]}