PageSourceSearch

https://www.rheem.com/vike/assets/chunks/chunk-BjpMLElX.js

js rheem.com collected 2026-09-24 10:19:43 UTC 46,789 bytes, 981 lines download raw bytes

1import { R as RmcInput } from "./chunk-CaJnFBZC.js";
2import { R as RmcButton, c as classNames } from "./chunk-B7DFmrmH.js";
3import { u as useForm } from "./chunk-Bex0ABu6.js";
4import { a as validateZipCode } from "./chunk-Csv_e5CK.js";
5import { bb as rebateApiClient, j as defineComponent, k as onMounted, c as computed, ak as nextTick, _ as _export_sfc, o as openBlock, e as createElementBlock, f as createBaseVNode, q as createVNode, A as withCtx, I as createTextVNode, h as toDisplayString, F as Fragment, x as renderList, v as normalizeClass, y as createCommentVNode, r as ref, w as watch, n as normalizeStyle, z as createBlock, bc as KeepAlive } from "./chunk-Cy-M6TJt.js";
6/* empty css               */
7/* empty css               */
8const validateNumber = (value) => {
9  if (!value) {
10    return "Value cannot be empty";
11  }
12  const strValue = String(value).trim();
13  if (!strValue) {
14    return "Value cannot be empty";
15  }
16  const num = Number(strValue);
17  if (Number.isNaN(num)) {
18    return "Must be a valid number";
19  }
20};
21const usConfig = {
22  HYBRID_PRICE: 1836,
23  HYBRID_INSTALLATION_PRICE: 3e3,
24  MAX_HYBRID_PRICE: 2500,
25  MAX_HYBRID_INSTALLATION_PRICE: 4e3,
26  ELECTRIC_PRICE: 509,
27  ELECTRIC_INSTALLATION_PRICE: 3e3,
28  ELECTRIC_ANNUAL_KILOWATTS: 3493,
29  HYBRID_ANNUAL_KILOWATTS: 836,
30  HYBRID_MODEL_FOR_API_REQUEST: "XE50T06ST45U1",
31  ZIP_CODE_LENGTH: 5,
32  API_FOR_REBATE_PROGRAMS: "https://rheem.ecorebates.com/api/search/rheem/productRebateDetails.json?sku=XE50T06ST45U1",
33  API_FOR_STATE_BY_ZIP: "https://api.zippopotam.us/us",
34  AVERAGE_RATE: 0.14,
35  RATES: [
36    { state: "Hawaii", rate: 0.3962 },
37    { state: "New Hampshire", rate: 0.2439 },
38    { state: "Massachusetts", rate: 0.3028 },
39    { state: "California", rate: 0.3268 },
40    { state: "Connecticut", rate: 0.2915 },
41    { state: "Rhode Island", rate: 0.2871 },
42    { state: "Alaska", rate: 0.247 },
43    { state: "New York", rate: 0.2469 },
44    { state: "Maine", rate: 0.263 },
45    { state: "Vermont", rate: 0.2535 },
46    { state: "Michigan", rate: 0.1871 },
47    { state: "Pennsylvania", rate: 0.1807 },
48    { state: "Illinois", rate: 0.1721 },
49    { state: "Indiana", rate: 0.1633 },
50    { state: "New Jersey", rate: 0.1964 },
51    { state: "Wisconsin", rate: 0.169 },
52    { state: "Delaware", rate: 0.181 },
53    { state: "Maryland", rate: 0.1842 },
54    { state: "District of Columbia", rate: 0.1893 },
55    { state: "Ohio", rate: 0.1656 },
56    { state: "Nevada", rate: 0.1527 },
57    { state: "Alabama", rate: 0.1548 },
58    { state: "Kansas", rate: 0.1483 },
59    { state: "Colorado", rate: 0.1526 },
60    { state: "Minnesota", rate: 0.1486 },
61    { state: "Texas", rate: 0.156 },
62    { state: "New Mexico", rate: 0.1447 },
63    { state: "South Carolina", rate: 0.1594 },
64    { state: "Virginia", rate: 0.1494 },
65    { state: "Oklahoma", rate: 0.1311 },
66    { state: "West Virginia", rate: 0.1587 },
67    { state: "Georgia", rate: 0.1431 },
68    { state: "Florida", rate: 0.1427 },
69    { state: "Louisiana", rate: 0.1187 },
70    { state: "Kentucky", rate: 0.1377 },
71    { state: "North Carolina", rate: 0.1511 },
72    { state: "Mississippi", rate: 0.1426 },
73    { state: "Iowa", rate: 0.1328 },
74    { state: "South Dakota", rate: 0.1346 },
75    { state: "Arizona", rate: 0.1517 },
76    { state: "Tennessee", rate: 0.1377 },
77    { state: "Arkansas", rate: 0.246 },
78    { state: "Montana", rate: 0.1254 },
79    { state: "Missouri", rate: 0.127 },
80    { state: "Nebraska", rate: 0.1225 },
81    { state: "Wyoming", rate: 0.1278 },
82    { state: "Oregon", rate: 0.1484 },
83    { state: "North Dakota", rate: 0.1131 },
84    { state: "Idaho", rate: 0.1134 },
85    { state: "Utah", rate: 0.1091 },
86    { state: "Washington", rate: 0.1239 }
87  ],
88  GET_REBATE_PROGRAMS: (rebateResponse) => {
89    const productRebateDetails = rebateResponse.productRebateDetails.filter((rebate) => rebate.filters.product_type.indexOf("heatpump") > -1);
90    return productRebateDetails.length > 0 ? productRebateDetails[0].rebatePrograms.filter((item) => item.id !== "22446").map((item) => {
91      let value = 0;
92      let percent = 0;
93      let enabled = false;
94      if (item.purchaseRebate.units === "USD") {
95        value = item.purchaseRebate.amount;
96      } else if (item.purchaseRebate.units === "PCT_OFF_SALE_PRICE") {
97        const regexpRes = item.amountLabel.match(/up\sto\s\$(.*)\)/);
98        if (regexpRes && regexpRes[1]) {
99          value = +regexpRes[1].replace(",", "");
100        }
101      }
102      const regexpResPercent = item.amountLabel.match(/(.*)%\sof\sproject\scost/);
103      if (regexpResPercent && regexpResPercent[1]) {
104        percent = +regexpResPercent[1];
105      }
106      if (!Number.isNaN(value) && value > 0) {
107        enabled = true;
108      }
109      return {
110        ...item,
111        value,
112        percent,
113        enabled,
114        checked: item.id === "21753"
115        // custom pre-checked logic from the old version
116      };
117    }) : [];
118  },
119  ROI_BACKGROUND_IMAGE: "ROI-background.jpg",
120  SHOW_KWIKCOMFORT_BLOCK: true,
121  FULL_LEGAL_DISCLAIMER: true
122};
123const config = {};
124Object.assign(config, usConfig);
125async function getRebatePrograms(location) {
126  const path = `${config.API_FOR_REBATE_PROGRAMS}&zip=${location}`;
127  const response = await rebateApiClient.get(path);
128  return config.GET_REBATE_PROGRAMS(response.EcoRebatesResponse);
129}
130async function getStateByZipCode(zipCode) {
131  const path = `${config.API_FOR_STATE_BY_ZIP}/${zipCode}`;
132  return await rebateApiClient.get(path);
133}
134const _sfc_main$6 = /* @__PURE__ */ defineComponent({
135  __name: "InitialData",
136  props: {
137    zipCode: {},
138    initialCost: {},
139    installationCost: {},
140    averageEnergyRate: {},
141    energyRate: {}
142  },
143  emits: ["updateZipCode", "updateEnergyRate", "nextStep"],
144  setup(__props, { expose: __expose, emit: __emit }) {
145    __expose();
146    const props = __props;
147    const emit = __emit;
148    const { form, isValid, validateForm, values } = useForm({
149      zipCode: {
150        initialValue: props.zipCode,
151        validators: [validateZipCode]
152      },
153      energyRate: {
154        initialValue: props.energyRate,
155        validators: [validateNumber]
156      }
157    });
158    const updateZipCode = (value) => {
159      var _a;
160      (_a = form.zipCode) == null ? void 0 : _a.setValue(value);
161      emit("updateZipCode", value);
162      nextTick(() => {
163        var _a2;
164        if (!((_a2 = form.zipCode) == null ? void 0 : _a2.error.value)) {
165          getRate();
166        }
167      });
168      validateForm();
169    };
170    const updateEnergyRate = (value) => {
171      var _a;
172      (_a = form.energyRate) == null ? void 0 : _a.setValue(value);
173      emit("updateEnergyRate", value);
174      validateForm();
175    };
176    onMounted(async () => {
177      await getRate();
178      validateForm();
179    });
180    const isDisabled = computed(() => !isValid.value);
181    const fetchRateData = async () => {
182      const data = await getStateByZipCode(props.zipCode);
183      return (data == null ? void 0 : data.places[0]) ? data == null ? void 0 : data.places[0]["state"] : null;
184    };
185    const getRateByState = (state) => {
186      var _a;
187      return ((_a = config.RATES.find((item) => item.state.toLowerCase() === state.toLowerCase())) == null ? void 0 : _a.rate) ?? null;
188    };
189    const getRate = async () => {
190      var _a;
191      const state = await fetchRateData();
192      const rate = getRateByState(state);
193      if (rate) {
194        (_a = form.energyRate) == null ? void 0 : _a.setValue(rate);
195        emit("updateEnergyRate", rate);
196      }
197    };
198    fetchRateData();
199    const __returned__ = { props, emit, form, isValid, validateForm, values, updateZipCode, updateEnergyRate, isDisabled, fetchRateData, getRateByState, getRate, RmcInput, RmcButton };
200    Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
201    return __returned__;
202  }
203});
204const _hoisted_1$6 = { class: "row rmc-mb-4xl" };
205const _hoisted_2$6 = { class: "col-12 col-md-3" };
206const _hoisted_3$5 = { class: "row rmc-gx-4xl" };
207const _hoisted_4$5 = { class: "col-12 col-md-6 order-2 order-md-1 rmc-mb-2xl rmc-mb-md-none" };
208const _hoisted_5$4 = { class: "rmc-calculator-block rmc-p-3xl" };
209const _hoisted_6$4 = { class: "rmc-mb-2xl" };
210const _hoisted_7$3 = { class: "rmc-mb-xl" };
211const _hoisted_8$2 = { class: "col-12 col-md-6 order-1 order-md-2 rmc-mb-2xl rmc-mb-md-none" };
212const _hoisted_9$2 = { class: "rmc-calculator-block rmc-p-3xl" };
213const _hoisted_10$1 = { class: "rmc-mb-2xl" };
214const _hoisted_11$1 = { class: "d-flex justify-content-end" };
215function _sfc_render$6(_ctx, _cache, $props, $setup, $data, $options) {
216  var _a, _b, _c, _d, _e, _f;
217  return openBlock(), createElementBlock(Fragment, null, [
218    _cache[14] || (_cache[14] = createBaseVNode("div", { class: "rmc-ty-lg fw-bold rmc-mb-lg" }, "Please confirm the information below is correct.", -1)),
219    createBaseVNode("div", _hoisted_1$6, [
220      createBaseVNode("div", _hoisted_2$6, [
221        createVNode($setup["RmcInput"], {
222          label: "Zip Code",
223          value: (_a = $setup.form.zipCode) == null ? void 0 : _a.value.value,
224          error: (_b = $setup.form.zipCode) == null ? void 0 : _b.error.value,
225          onInput: _cache[0] || (_cache[0] = (e) => $setup.updateZipCode(e.target.value)),
226          onBlur: (_c = $setup.form.zipCode) == null ? void 0 : _c.onBlur
227        }, null, 8, ["value", "error", "onBlur"])
228      ])
229    ]),
230    createBaseVNode("div", _hoisted_3$5, [
231      createBaseVNode("div", _hoisted_4$5, [
232        createBaseVNode("div", _hoisted_5$4, [
233          createBaseVNode("div", _hoisted_6$4, [
234            _cache[5] || (_cache[5] = createBaseVNode("div", { class: "rmc-ty-lg fw-bold rmc-mb-md" }, "Estimated Project Cost:", -1)),
235            _cache[6] || (_cache[6] = createBaseVNode("div", { class: "rmc-calculator-text rmc-ty-md rmc-mb-3xl" }, "We have prefilled the hybrid electric heat pump water heater retail price and average installation costs based on a 50-gallon model. Your local costs may vary.", -1)),
236            createVNode($setup["RmcInput"], {
237              value: $props.initialCost,
238              readonly: "readonly",
239              notFloating: ""
240            }, {
241              prepend: withCtx(() => _cache[3] || (_cache[3] = [
242                createTextVNode("$")
243              ])),
244              "helper-text": withCtx(() => _cache[4] || (_cache[4] = [
245                createBaseVNode("span", null, "Hybrid Electric HPWH estimated price", -1)
246              ])),
247              _: 1
248            }, 8, ["value"])
249          ]),
250          createBaseVNode("div", _hoisted_7$3, [
251            createVNode($setup["RmcInput"], {
252              value: $props.installationCost,
253              readonly: "readonly",
254              notFloating: ""
255            }, {
256              prepend: withCtx(() => _cache[7] || (_cache[7] = [
257                createTextVNode("$")
258              ])),
259              "helper-text": withCtx(() => _cache[8] || (_cache[8] = [
260                createBaseVNode("span", null, "Estimated installation cost", -1)
261              ])),
262              _: 1
263            }, 8, ["value"])
264          ])
265        ])
266      ]),
267      createBaseVNode("div", _hoisted_8$2, [
268        createBaseVNode("div", _hoisted_9$2, [
269          createBaseVNode("div", _hoisted_10$1, [
270            _cache[11] || (_cache[11] = createBaseVNode("div", { class: "rmc-ty-lg fw-bold rmc-mb-md" }, "Average Energy Rate:", -1)),
271            _cache[12] || (_cache[12] = createBaseVNode("div", { class: "rmc-calculator-text rmc-ty-md rmc-mb-3xl" }, "Below please enter the average energy rate for your zip code. Typically, this rate can be found on your utility bill.", -1)),
272            createVNode($setup["RmcInput"], {
273              value: (_d = $setup.form.energyRate) == null ? void 0 : _d.value.value,
274              error: (_e = $setup.form.energyRate) == null ? void 0 : _e.error.value,
275              onInput: _cache[1] || (_cache[1] = (e) => $setup.updateEnergyRate(e.target.value)),
276              onBlur: (_f = $setup.form.energyRate) == null ? void 0 : _f.onBlur,
277              notFloating: ""
278            }, {
279              prepend: withCtx(() => _cache[9] || (_cache[9] = [
280                createTextVNode("$")
281              ])),
282              append: withCtx(() => _cache[10] || (_cache[10] = [
283                createTextVNode("¢/KWH")
284              ])),
285              "helper-text": withCtx(() => {
286                var _a2;
287                return [
288                  createBaseVNode("span", null, toDisplayString(((_a2 = $setup.form.energyRate) == null ? void 0 : _a2.error.value) ?? `The national average rate ${$props.averageEnergyRate}/KWH`), 1)
289                ];
290              }),
291              _: 1
292            }, 8, ["value", "error", "onBlur"])
293          ])
294        ])
295      ])
296    ]),
297    createBaseVNode("div", _hoisted_11$1, [
298      createVNode($setup["RmcButton"], {
299        variant: "primary",
300        class: "rmc-mt-4xl",
301        disabled: $setup.isDisabled,
302        onClick: _cache[2] || (_cache[2] = ($event) => _ctx.$emit("nextStep", "rebate"))
303      }, {
304        default: withCtx(() => _cache[13] || (_cache[13] = [
305          createTextVNode("Next")
306        ])),
307        _: 1
308      }, 8, ["disabled"])
309    ])
310  ], 64);
311}
312const InitialData = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["render", _sfc_render$6], ["__scopeId", "data-v-39e4c240"], ["__file", "InitialData.vue"]]);
313const _sfc_main$5 = /* @__PURE__ */ defineComponent({
314  __name: "TabStepper",
315  props: {
316    items: {},
317    selected: {}
318  },
319  emits: ["change"],
320  setup(__props, { expose: __expose, emit: __emit }) {
321    __expose();
322    const props = __props;
323    const emit = __emit;
324    function handleSelectPreset(item) {
325      emit("change", item.code);
326    }
327    const __returned__ = { props, emit, handleSelectPreset, get classNames() {
328      return classNames;
329    } };
330    Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
331    return __returned__;
332  }
333});
334const _hoisted_1$5 = {
335  role: "tablist",
336  class: "rmc-nav rmc-nav-underline"
337};
338const _hoisted_2$5 = ["onClick", "id", "aria-controls"];
339function _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) {
340  return openBlock(), createElementBlock("ul", _hoisted_1$5, [
341    (openBlock(true), createElementBlock(Fragment, null, renderList($props.items, (item, index) => {
342      return openBlock(), createElementBlock("li", {
343        key: item.code,
344        class: "rmc-nav-item",
345        role: "presentation"
346      }, [
347        createBaseVNode("a", {
348          href: "#",
349          onClick: () => $setup.handleSelectPreset(item),
350          type: "button",
351          role: "tab",
352          "aria-selected": "true",
353          class: normalizeClass($setup.classNames("rmc-nav-link", { active: item.code === $props.selected }, { "rmc-nav-link--disabled": !item.available })),
354          id: `find-a-pro-tab-${item.code}`,
355          "aria-controls": `find-a-pro-tab-${item.code}`
356        }, toDisplayString(item.title), 11, _hoisted_2$5)
357      ]);
358    }), 128))
359  ]);
360}
361const TabStepper = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["render", _sfc_render$5], ["__scopeId", "data-v-8b12b1fe"], ["__file", "TabStepper.vue"]]);
362const _sfc_main$4 = /* @__PURE__ */ defineComponent({
363  __name: "RebateCard",
364  props: {
365    item: {},
366    index: {}
367  },
368  emits: ["toggleChecked"],
369  setup(__props, { expose: __expose, emit: __emit }) {
370    __expose();
371    const props = __props;
372    const emit = __emit;
373    const __returned__ = { props, emit };
374    Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
375    return __returned__;
376  }
377});
378const _hoisted_1$4 = { class: "rmc-ty-text-lg fw-bold rmc-mb-lg" };
379const _hoisted_2$4 = {
380  key: 0,
381  class: "rmc-calculator-slide-disabled rmc-ty-text-xs rmc-mb-lg"
382};
383const _hoisted_3$4 = { class: "d-flex justify-content-between rmc-mb-lg" };
384const _hoisted_4$4 = { class: "rmc-calculator-slide-price" };
385const _hoisted_5$3 = ["href"];
386const _hoisted_6$3 = { class: "rmc-calculator-slide-text rmc-ty-text-xs" };
387function _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {
388  return openBlock(), createElementBlock("div", {
389    class: normalizeClass(["rmc-calculator-slide rmc-p-3xl", { "rmc-calculator-slide--disabled": !$props.item.enabled, "rmc-calculator-slide--active": $props.item.checked }]),
390    onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("toggleChecked", $props.index))
391  }, [
392    createBaseVNode("div", _hoisted_1$4, toDisplayString($props.item.name), 1),
393    !$props.item.enabled ? (openBlock(), createElementBlock("div", _hoisted_2$4, "* calculated savings for this rebate is currently not available")) : createCommentVNode("", true),
394    createBaseVNode("div", _hoisted_3$4, [
395      createBaseVNode("div", _hoisted_4$4, toDisplayString($props.item.amountLabel), 1),
396      createBaseVNode("a", {
397        href: $props.item.claimFormURL,
398        class: "rmc-calculator-slide-link rmc-ty-text-md fw-bold",
399        target: "_blank"
400      }, "Claim Form", 8, _hoisted_5$3)
401    ]),
402    createBaseVNode("div", _hoisted_6$3, [
403      createBaseVNode("ul", null, [
404        (openBlock(true), createElementBlock(Fragment, null, renderList($props.item.importantDetails, (importantDetail, index) => {
405          return openBlock(), createElementBlock("li", {
406            key: "important-detail-" + index
407          }, toDisplayString(importantDetail), 1);
408        }), 128)),
409        (openBlock(true), createElementBlock(Fragment, null, renderList($props.item.validDates, (validDate, index) => {
410          return openBlock(), createElementBlock("li", {
411            key: "valid-date-" + index
412          }, toDisplayString(validDate), 1);
413        }), 128))
414      ])
415    ])
416  ], 2);
417}
418const RebateCard = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["render", _sfc_render$4], ["__scopeId", "data-v-5245ab93"], ["__file", "RebateCard.vue"]]);
419const _sfc_main$3 = /* @__PURE__ */ defineComponent({
420  __name: "RebateData",
421  props: {
422    projectCost: {},
423    zipCode: {}
424  },
425  emits: ["nextStep", "updateTotalSavings"],
426  setup(__props, { expose: __expose, emit: __emit }) {
427    __expose();
428    const props = __props;
429    const emit = __emit;
430    const rebatePrograms = ref([]);
431    const loading = ref(true);
432    onMounted(async () => {
433      await fetchData();
434    });
435    const total = computed(() => {
436      return rebatePrograms.value.reduce((acc, current) => {
437        if (current.checked) {
438          return acc + (current.percent ? Math.min(current.percent * props.projectCost / 100, current.value) : current.value);
439        }
440        return acc;
441      }, 0);
442    });
443    const isDisabled = computed(() => !total.value);
444    const fedTaxCreditWithPercentageProgram = computed(() => {
445      var _a;
446      return ((_a = rebatePrograms.value.find((program) => program.checked && program.percent)) == null ? void 0 : _a.percent) || 0;
447    });
448    const toggleChecked = (index) => {
449      if (rebatePrograms.value[index].enabled) {
450        rebatePrograms.value[index].checked = !rebatePrograms.value[index].checked;
451        emit("updateTotalSavings", total.value, fedTaxCreditWithPercentageProgram.value);
452      }
453    };
454    watch(() => props.zipCode, async () => {
455      rebatePrograms.value = [];
456      loading.value = true;
457      await fetchData();
458    });
459    const fetchData = async () => {
460      try {
461        rebatePrograms.value = await getRebatePrograms(`${props.zipCode}`);
462      } finally {
463        loading.value = false;
464      }
465    };
466    const __returned__ = { props, emit, rebatePrograms, loading, total, isDisabled, fedTaxCreditWithPercentageProgram, toggleChecked, fetchData, RmcButton, RmcInput, RebateCard };
467    Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
468    return __returned__;
469  }
470});
471const _hoisted_1$3 = { key: 0 };
472const _hoisted_2$3 = { style: { "position": "relative", "overflow-x": "auto" } };
473const _hoisted_3$3 = {
474  class: "row rmc-mb-4xl",
475  style: { "flex-wrap": "nowrap", "padding": "5px 0" }
476};
477const _hoisted_4$3 = {
478  key: 1,
479  class: "rmc-preloader d-flex justify-content-center rmc-py-7xl rmc-py-md-10xl"
480};
481const _hoisted_5$2 = { class: "d-flex justify-content-end" };
482const _hoisted_6$2 = { class: "row justify-content-between" };
483const _hoisted_7$2 = { class: "col-auto" };
484const _hoisted_8$1 = { class: "col-auto" };
485const _hoisted_9$1 = { class: "d-flex rmc-gap-xl" };
486function _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {
487  return openBlock(), createElementBlock(Fragment, null, [
488    _cache[9] || (_cache[9] = createBaseVNode("div", { class: "rmc-ty-lg fw-bold rmc-mb-4xl" }, "Select Possible Local Rebates & Incentives", -1)),
489    $setup.rebatePrograms.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_1$3, [
490      createBaseVNode("div", _hoisted_2$3, [
491        createBaseVNode("div", _hoisted_3$3, [
492          (openBlock(true), createElementBlock(Fragment, null, renderList($setup.rebatePrograms, (item, index) => {
493            return openBlock(), createElementBlock("div", {
494              key: index,
495              class: "col-12 col-md-6 col-lg-4"
496            }, [
497              createVNode($setup["RebateCard"], {
498                item,
499                index,
500                onToggleChecked: $setup.toggleChecked
501              }, null, 8, ["item", "index"])
502            ]);
503          }), 128))
504        ])
505      ])
506    ])) : createCommentVNode("", true),
507    $setup.loading ? (openBlock(), createElementBlock("div", _hoisted_4$3, _cache[3] || (_cache[3] = [
508      createBaseVNode("svg", {
509        class: "loader",
510        width: "56",
511        height: "56",
512        viewBox: "0 0 56 56",
513        fill: "none",
514        xmlns: "http://www.w3.org/2000/svg"
515      }, [
516        createBaseVNode("path", {
517          d: "M53 28C53 31.283 52.3534 34.5339 51.097 37.5671C49.8406 40.6002 47.9991 43.3562 45.6777 45.6777C43.3562 47.9991 40.6002 49.8406 37.5671 51.097C34.5339 52.3534 31.283 53 28 53C24.7169 53 21.466 52.3534 18.4329 51.097C15.3998 49.8406 12.6438 47.9991 10.3223 45.6777C8.00086 43.3562 6.15938 40.6002 4.90301 37.5671C3.64664 34.5339 3 31.283 3 28C3 24.7169 3.64665 21.466 4.90302 18.4329C6.15938 15.3998 8.00087 12.6438 10.3223 10.3223C12.6438 8.00086 15.3998 6.15937 18.4329 4.90301C21.4661 3.64664 24.717 3 28 3C31.2831 3 34.534 3.64665 37.5671 4.90302C40.6002 6.15939 43.3562 8.00087 45.6777 10.3223C47.9991 12.6438 49.8406 15.3998 51.097 18.4329C52.3534 21.4661 53 24.717 53 28L53 28Z",
518          stroke: "#F2F5F7",
519          "stroke-width": "6",
520          "stroke-linecap": "round",
521          "stroke-linejoin": "round"
522        }),
523        createBaseVNode("path", {
524          class: "loader__spinner",
525          d: "M28 3C31.283 3 34.5339 3.64664 37.5671 4.90301C40.6002 6.15938 43.3562 8.00087 45.6777 10.3223C47.9991 12.6438 49.8406 15.3998 51.097 18.4329C52.3534 21.4661 53 24.717 53 28",
526          stroke: "#E4002B",
527          "stroke-width": "6",
528          "stroke-linecap": "round",
529          "stroke-linejoin": "round"
530        })
531      ], -1)
532    ]))) : createCommentVNode("", true),
533    createBaseVNode("div", _hoisted_5$2, [
534      createBaseVNode("div", null, [
535        _cache[5] || (_cache[5] = createBaseVNode("div", { class: "rmc-ty-lg fw-bold rmc-mb-md" }, "Total", -1)),
536        createVNode($setup["RmcInput"], {
537          readonly: "readonly",
538          value: $setup.total,
539          notFloating: ""
540        }, {
541          prepend: withCtx(() => _cache[4] || (_cache[4] = [
542            createTextVNode("$")
543          ])),
544          _: 1
545        }, 8, ["value"])
546      ])
547    ]),
548    createBaseVNode("div", _hoisted_6$2, [
549      createBaseVNode("div", _hoisted_7$2, [
550        createVNode($setup["RmcButton"], {
551          class: "rmc-mt-4xl",
552          onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("nextStep", "initial"))
553        }, {
554          default: withCtx(() => _cache[6] || (_cache[6] = [
555            createTextVNode("Previous")
556          ])),
557          _: 1
558        })
559      ]),
560      createBaseVNode("div", _hoisted_8$1, [
561        createBaseVNode("div", _hoisted_9$1, [
562          createVNode($setup["RmcButton"], {
563            class: "rmc-mt-4xl",
564            onClick: _cache[1] || (_cache[1] = ($event) => _ctx.$emit("nextStep", "final"))
565          }, {
566            default: withCtx(() => _cache[7] || (_cache[7] = [
567              createTextVNode("Skip")
568            ])),
569            _: 1
570          }),
571          createVNode($setup["RmcButton"], {
572            variant: "primary",
573            class: "rmc-mt-4xl",
574            disabled: $setup.isDisabled,
575            onClick: _cache[2] || (_cache[2] = ($event) => _ctx.$emit("nextStep", "final"))
576          }, {
577            default: withCtx(() => _cache[8] || (_cache[8] = [
578              createTextVNode("Next")
579            ])),
580            _: 1
581          }, 8, ["disabled"])
582        ])
583      ])
584    ])
585  ], 64);
586}
587const RebateData = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["render", _sfc_render$3], ["__file", "RebateData.vue"]]);
588function calculation(rheemPrice, hybridPrice, validAvgEnergyRate, maxBarHeight) {
589  const electricPrice = config.ELECTRIC_PRICE + config.ELECTRIC_INSTALLATION_PRICE;
590  const electricAnnualKilowatts = config.ELECTRIC_ANNUAL_KILOWATTS;
591  const hybridAnnualKilowatts = config.HYBRID_ANNUAL_KILOWATTS;
592  const maxBarValue = hybridPrice;
593  const investmentElectricBarHeight = Math.round(electricPrice / maxBarValue * maxBarHeight);
594  const investmentHybridBarHeight = Math.max(Math.round(rheemPrice / maxBarValue * maxBarHeight), 0);
595  const annualCostElectric = Math.round(electricAnnualKilowatts * validAvgEnergyRate);
596  const annualCostHybrid = Math.round(hybridAnnualKilowatts * validAvgEnergyRate);
597  const annualCostElectricBarHeight = Math.round(annualCostElectric / maxBarValue * (maxBarHeight * 3));
598  const annualCostHybridBarHeight = Math.round(annualCostHybrid / maxBarValue * (maxBarHeight * 3));
599  const annualCostSavings = annualCostElectric - annualCostHybrid;
600  const paybackYears = Math.round((rheemPrice - electricPrice) / annualCostSavings * 12);
601  const lifetimeROI = 10 * annualCostElectric + electricPrice - (10 * annualCostHybrid + rheemPrice);
602  return {
603    electricPrice,
604    investmentElectricBarHeight,
605    investmentHybridBarHeight,
606    annualCostElectric,
607    annualCostHybrid,
608    annualCostElectricBarHeight,
609    annualCostHybridBarHeight,
610    annualCostSavings,
611    paybackYears,
612    lifetimeROI
613  };
614}
615function formatCurrency(value, decimalPlaces = 0) {
616  return `$${(+value).toFixed(decimalPlaces).replace(/\B(?=(\d{3})+(?!\d))/g, ",")}`;
617}
618const _sfc_main$2 = /* @__PURE__ */ defineComponent({
619  __name: "FinalDiagram",
620  props: {
621    maxBarHeight: {},
622    electricValue: {},
623    electricBarHeight: {},
624    hybridValue: {},
625    hybridBarHeight: {}
626  },
627  setup(__props, { expose: __expose }) {
628    __expose();
629    const props = __props;
630    const __returned__ = { props, get formatCurrency() {
631      return formatCurrency;
632    } };
633    Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
634    return __returned__;
635  }
636});
637const _hoisted_1$2 = { class: "rmc-calculator-diagram-bar-label rmc-ty-text-xs" };
638const _hoisted_2$2 = { class: "rmc-calculator-diagram-bar-value rmc-ty-text-md fw-bold" };
639const _hoisted_3$2 = { class: "rmc-calculator-diagram-bar-label rmc-ty-text-xs" };
640const _hoisted_4$2 = { class: "rmc-calculator-diagram-bar-value rmc-ty-text-md fw-bold" };
641function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {
642  return openBlock(), createElementBlock("div", {
643    class: "rmc-calculator-diagram",
644    style: normalizeStyle(`height: ${$props.maxBarHeight}px`)
645  }, [
646    createBaseVNode("div", {
647      class: "rmc-calculator-diagram-bar rmc-calculator-diagram-bar--electric",
648      style: normalizeStyle(`height: ${$props.electricBarHeight}px`)
649    }, [
650      createBaseVNode("div", _hoisted_1$2, [
651        _cache[0] || (_cache[0] = createTextVNode(" Electric Water Heater ")),
652        createBaseVNode("div", _hoisted_2$2, toDisplayString($setup.formatCurrency($props.electricValue)), 1)
653      ])
654    ], 4),
655    createBaseVNode("div", {
656      class: "rmc-calculator-diagram-bar rmc-calculator-diagram-bar--hybrid",
657      style: normalizeStyle(`height: ${$props.hybridBarHeight}px`)
658    }, [
659      createBaseVNode("div", _hoisted_3$2, [
660        _cache[1] || (_cache[1] = createTextVNode(" Hybrid Water Heater ")),
661        createBaseVNode("div", _hoisted_4$2, toDisplayString($setup.formatCurrency($props.hybridValue)), 1)
662      ])
663    ], 4)
664  ], 4);
665}
666const FinalDiagram = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["render", _sfc_render$2], ["__scopeId", "data-v-86023b8c"], ["__file", "FinalDiagram.vue"]]);
667const _sfc_main$1 = /* @__PURE__ */ defineComponent({
668  __name: "FinalData",
669  props: {
670    projectCost: {},
671    totalSavings: {},
672    energyRate: {},
673    percentage: {}
674  },
675  emits: ["nextStep"],
676  setup(__props, { expose: __expose, emit: __emit }) {
677    __expose();
678    const props = __props;
679    const emit = __emit;
680    const rheemPrice = computed(() => Math.round(props.projectCost - props.totalSavings));
681    const {
682      investmentElectricBarHeight,
683      investmentHybridBarHeight,
684      annualCostElectric,
685      annualCostHybrid,
686      annualCostElectricBarHeight,
687      annualCostHybridBarHeight,
688      annualCostSavings,
689      paybackYears,
690      lifetimeROI,
691      electricPrice
692    } = calculation(rheemPrice.value, props.projectCost, props.energyRate, 300);
693    const paybackYearsText = paybackYears > 0 ? `${paybackYears} <span>months</span>` : "<span>a year or less</span>";
694    const maxBarHeight = Math.max(investmentElectricBarHeight, investmentHybridBarHeight, annualCostElectricBarHeight, annualCostHybridBarHeight) + 80;
695    const print = () => {
696      if (typeof window !== "undefined") {
697        window.print();
698      }
699    };
700    const __returned__ = { props, emit, rheemPrice, investmentElectricBarHeight, investmentHybridBarHeight, annualCostElectric, annualCostHybrid, annualCostElectricBarHeight, annualCostHybridBarHeight, annualCostSavings, paybackYears, lifetimeROI, electricPrice, paybackYearsText, maxBarHeight, print, RmcButton, get formatCurrency() {
701      return formatCurrency;
702    }, FinalDiagram };
703    Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
704    return __returned__;
705  }
706});
707const _hoisted_1$1 = { class: "printable" };
708const _hoisted_2$1 = { class: "row" };
709const _hoisted_3$1 = { class: "col-6 col-md-3 rmc-mb-2xl rmc-mb-md-none" };
710const _hoisted_4$1 = { class: "rmc-calculator-result-card rmc-p-xl" };
711const _hoisted_5$1 = { class: "col-6 col-md-3 rmc-mb-2xl rmc-mb-md-none" };
712const _hoisted_6$1 = { class: "rmc-calculator-result-card rmc-p-xl" };
713const _hoisted_7$1 = { class: "col-12 col-md-6" };
714const _hoisted_8 = { class: "rmc-calculator-result-card rmc-p-xl" };
715const _hoisted_9 = { class: "row align-items-end" };
716const _hoisted_10 = { class: "col" };
717const _hoisted_11 = { class: "rmc-calculator-result-value rmc-ty-display-sm fw-bold rmc-mb-2xl" };
718const _hoisted_12 = { class: "rmc-calculator-result-value rmc-ty-display-sm fw-bold rmc-mb-2xl" };
719const _hoisted_13 = ["innerHTML"];
720const _hoisted_14 = { class: "rmc-calculator-comment rmc-ty-text-xs d-flex justify-content-center rmc-m-2xl text-center" };
721const _hoisted_15 = { class: "row justify-content-between d-print-none" };
722const _hoisted_16 = { class: "col-auto" };
723const _hoisted_17 = { class: "col-auto" };
724const _hoisted_18 = { class: "d-flex rmc-gap-xl" };
725function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {
726  return openBlock(), createElementBlock("div", _hoisted_1$1, [
727    _cache[14] || (_cache[14] = createBaseVNode("div", { class: "rmc-ty-lg fw-bold rmc-mb-4xl" }, "Total Savings for a Rheem Hybrid Electric HPWH", -1)),
728    createBaseVNode("div", _hoisted_2$1, [
729      createBaseVNode("div", _hoisted_3$1, [
730        createBaseVNode("div", _hoisted_4$1, [
731          _cache[2] || (_cache[2] = createBaseVNode("div", { class: "rmc-ty-lg fw-bold rmc-mb-4xl" }, "Initial Project Investment", -1)),
732          createVNode($setup["FinalDiagram"], {
733            "max-bar-height": $setup.maxBarHeight,
734            "electric-value": $setup.electricPrice,
735            "electric-bar-height": $setup.investmentElectricBarHeight,
736            "hybrid-value": $setup.rheemPrice,
737            "hybrid-bar-height": $setup.investmentHybridBarHeight
738          }, null, 8, ["electric-value", "electric-bar-height", "hybrid-value", "hybrid-bar-height"])
739        ])
740      ]),
741      createBaseVNode("div", _hoisted_5$1, [
742        createBaseVNode("div", _hoisted_6$1, [
743          _cache[3] || (_cache[3] = createBaseVNode("div", { class: "rmc-ty-lg fw-bold rmc-mb-4xl" }, "Annual Energy Operating Costs", -1)),
744          createVNode($setup["FinalDiagram"], {
745            "max-bar-height": $setup.maxBarHeight,
746            "electric-value": $setup.annualCostElectric,
747            "electric-bar-height": $setup.annualCostElectricBarHeight,
748            "hybrid-value": $setup.annualCostHybrid,
749            "hybrid-bar-height": $setup.annualCostHybridBarHeight
750          }, null, 8, ["electric-value", "electric-bar-height", "hybrid-value", "hybrid-bar-height"])
751        ])
752      ]),
753      createBaseVNode("div", _hoisted_7$1, [
754        createBaseVNode("div", _hoisted_8, [
755          _cache[8] || (_cache[8] = createBaseVNode("div", { class: "rmc-ty-lg fw-bold rmc-mb-4xl" }, "Hybrid Electric Heat Pump Water Heater - Return on Investment", -1)),
756          createBaseVNode("div", _hoisted_9, [
757            createBaseVNode("div", _hoisted_10, [
758              _cache[4] || (_cache[4] = createBaseVNode("div", { class: "rmc-calculator-result-label rmc-ty-text-xs" }, "Lifetime Savings:", -1)),
759              createBaseVNode("div", _hoisted_11, toDisplayString($setup.formatCurrency($setup.lifetimeROI)), 1),
760              _cache[5] || (_cache[5] = createBaseVNode("div", { class: "rmc-calculator-result-label rmc-ty-text-xs" }, "Annual Energy Operating Costs Savings:", -1)),
761              createBaseVNode("div", _hoisted_12, toDisplayString($setup.formatCurrency($setup.annualCostSavings, 2)), 1),
762              _cache[6] || (_cache[6] = createBaseVNode("div", { class: "rmc-calculator-result-label rmc-ty-text-xs" }, "Pays for Itself in:", -1)),
763              createBaseVNode("div", {
764                class: "rmc-calculator-result-value rmc-ty-display-sm fw-bold rmc-mb-2xl",
765                innerHTML: $setup.paybackYearsText
766              }, null, 8, _hoisted_13)
767            ]),
768            _cache[7] || (_cache[7] = createBaseVNode("div", { class: "col-auto" }, [
769              createBaseVNode("img", {
770                src: "https://files.rheem.com/blobazrheem/wp-content/uploads/sites/2/wh-calculator.webp",
771                alt: ""
772              })
773            ], -1))
774          ])
775        ])
776      ])
777    ]),
778    createBaseVNode("div", _hoisted_14, [
779      $props.percentage ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
780        createTextVNode(" Initial Investment and Lifetime Return Savings calculations are based on project cost (product + installation costs) of 50-gallon models minus estimated tax credits and rebates. Estimated federal tax credit is calculated as " + toDisplayString($props.percentage) + "% of project cost.", 1),
781        _cache[9] || (_cache[9] = createBaseVNode("br", null, null, -1)),
782        _cache[10] || (_cache[10] = createTextVNode(" Default water heater prices do not include tax or delivery fees. Rheem is not responsible for tax and rebate filing. Consult with a tax advisor and local utility for complete filing and eligibility requirements. "))
783      ], 64)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
784        createTextVNode(" On average, a Rheem Hybrid Water heater pays for itself in under two years. ")
785      ], 64))
786    ]),
787    createBaseVNode("div", _hoisted_15, [
788      createBaseVNode("div", _hoisted_16, [
789        createVNode($setup["RmcButton"], {
790          class: "rmc-mt-4xl",
791          onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("nextStep", "rebate"))
792        }, {
793          default: withCtx(() => _cache[11] || (_cache[11] = [
794            createTextVNode("Previous")
795          ])),
796          _: 1
797        })
798      ]),
799      createBaseVNode("div", _hoisted_17, [
800        createBaseVNode("div", _hoisted_18, [
801          createVNode($setup["RmcButton"], {
802            class: "rmc-mt-4xl",
803            onClick: $setup.print
804          }, {
805            default: withCtx(() => _cache[12] || (_cache[12] = [
806              createTextVNode("Print")
807            ])),
808            _: 1
809          }),
810          createVNode($setup["RmcButton"], {
811            variant: "primary",
812            class: "rmc-mt-4xl",
813            onClick: _cache[1] || (_cache[1] = ($event) => _ctx.$emit("nextStep", "initial"))
814          }, {
815            default: withCtx(() => _cache[13] || (_cache[13] = [
816              createTextVNode("Start over")
817            ])),
818            _: 1
819          })
820        ])
821      ])
822    ])
823  ]);
824}
825const FinalData = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["render", _sfc_render$1], ["__scopeId", "data-v-5a3bbce5"], ["__file", "FinalData.vue"]]);
826const initialCost = 1836;
827const installationCost = 3e3;
828const _sfc_main = /* @__PURE__ */ defineComponent({
829  __name: "+Page",
830  setup(__props, { expose: __expose }) {
831    __expose();
832    const energyRate = ref(null);
833    const averageEnergyRate = ref(0.14);
834    const zipCode = ref("30303");
835    const projectCost = initialCost + installationCost;
836    const totalSavings = ref(0);
837    const fedTaxCreditWithPercentageProgram = ref(0);
838    const steps = [
839      { code: "initial", title: "price & rate" },
840      { code: "rebate", title: "rebates & incentives" },
841      { code: "final", title: "return on investment" }
842    ];
843    const selected = ref("initial");
844    const showLegal = ref(false);
845    const updateZipCode = (zip) => {
846      zipCode.value = zip;
847    };
848    const updateEnergyRate = (rate) => {
849      energyRate.value = rate;
850    };
851    const updateTotalSavings = (amount, percent) => {
852      totalSavings.value = amount;
853      fedTaxCreditWithPercentageProgram.value = percent;
854    };
855    const changeTab = (code) => {
856      selected.value = code;
857    };
858    const availableSteps = computed(() => {
859      return steps.map((item, index) => {
860        if (index === 0) {
861          return { ...item, available: true };
862        } else {
863          return { ...item, available: !!(zipCode.value && energyRate.value) };
864        }
865      });
866    });
867    const __returned__ = { initialCost, installationCost, energyRate, averageEnergyRate, zipCode, projectCost, totalSavings, fedTaxCreditWithPercentageProgram, steps, selected, showLegal, updateZipCode, updateEnergyRate, updateTotalSavings, changeTab, availableSteps, InitialData, TabStepper, RebateData, FinalData };
868    Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
869    return __returned__;
870  }
871});
872const _hoisted_1 = { class: "rmc-tab-step rmc-pt-5xl rmc-mb-4xl" };
873const _hoisted_2 = { class: "rmc-container" };
874const _hoisted_3 = { class: "rmc-container rmc-pm-5xl" };
875const _hoisted_4 = { class: "rmc-my-3xl" };
876const _hoisted_5 = { class: "rmc-calculator-legal-wrap rmc-mt-md" };
877const _hoisted_6 = { class: "text-center" };
878const _hoisted_7 = {
879  key: 0,
880  class: "rmc-calculator-legal rmc-ty-text-xs rmc-px-2xl rmc-py-4xl"
881};
882function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
883  return openBlock(), createElementBlock(Fragment, null, [
884    createBaseVNode("div", _hoisted_1, [
885      createBaseVNode("div", _hoisted_2, [
886        createVNode($setup["TabStepper"], {
887          items: $setup.availableSteps,
888          selected: $setup.selected,
889          onChange: $setup.changeTab
890        }, null, 8, ["items", "selected"])
891      ])
892    ]),
893    createBaseVNode("div", _hoisted_3, [
894      (openBlock(), createBlock(KeepAlive, null, [
895        $setup.selected === "initial" ? (openBlock(), createBlock($setup["InitialData"], {
896          key: 0,
897          "zip-code": $setup.zipCode,
898          "energy-rate": $setup.energyRate,
899          "average-energy-rate": $setup.averageEnergyRate,
900          "initial-cost": $setup.initialCost,
901          "installation-cost": $setup.installationCost,
902          onUpdateZipCode: $setup.updateZipCode,
903          onUpdateEnergyRate: $setup.updateEnergyRate,
904          onNextStep: $setup.changeTab
905        }, null, 8, ["zip-code", "energy-rate", "average-energy-rate"])) : createCommentVNode("", true)
906      ], 1024)),
907      (openBlock(), createBlock(KeepAlive, null, [
908        $setup.selected === "rebate" ? (openBlock(), createBlock($setup["RebateData"], {
909          key: 0,
910          "project-cost": $setup.projectCost,
911          "zip-code": $setup.zipCode,
912          onUpdateTotalSavings: $setup.updateTotalSavings,
913          onNextStep: $setup.changeTab
914        }, null, 8, ["zip-code"])) : createCommentVNode("", true)
915      ], 1024)),
916      $setup.selected === "final" ? (openBlock(), createBlock($setup["FinalData"], {
917        key: 0,
918        "project-cost": $setup.projectCost,
919        "total-savings": $setup.totalSavings,
920        "energy-rate": $setup.energyRate,
921        percentage: $setup.fedTaxCreditWithPercentageProgram,
922        onNextStep: $setup.changeTab
923      }, null, 8, ["total-savings", "energy-rate", "percentage"])) : createCommentVNode("", true),
924      createBaseVNode("div", _hoisted_4, [
925        createBaseVNode("div", null, [
926          _cache[11] || (_cache[11] = createBaseVNode("div", { class: "text-center" }, [
927            createBaseVNode("a", { href: "/kwikcomfort-residential/" }, [
928              createBaseVNode("img", {
929                src: "https://files.rheem.com/blobazrheem/wp-content/uploads/sites/2/kwikcomfort-btn.webp",
930                alt: "kwikcomfort"
931              })
932            ])
933          ], -1)),
934          createBaseVNode("div", _hoisted_5, [
935            createBaseVNode("div", _hoisted_6, [
936              createBaseVNode("a", {
937                class: "rmc-calculator-legal-link rmc-ty-text-sm",
938                onClick: _cache[0] || (_cache[0] = ($event) => $setup.showLegal = !$setup.showLegal)
939              }, "Legal Disclaimer")
940            ]),
941            $setup.showLegal ? (openBlock(), createElementBlock("div", _hoisted_7, [
942              (openBlock(), createElementBlock("svg", {
943                width: "32",
944                height: "32",
945                viewBox: "0 0 32 32",
946                xmlns: "http://www.w3.org/2000/svg",
947                class: "rmc-calculator-legal-close",
948                onClick: _cache[1] || (_cache[1] = ($event) => $setup.showLegal = !$setup.showLegal)
949              }, _cache[2] || (_cache[2] = [
950                createBaseVNode("path", {
951                  d: "M6.808 23.778l1.415 1.414L25.192 8.222l-1.414-1.414L6.808 23.778z",
952                  fill: "#323232"
953                }, null, -1),
954                createBaseVNode("path", {
955                  d: "M8.222 6.808L6.808 8.222l16.97 16.97 1.414-1.414L8.222 6.808z",
956                  fill: "#323232"
957                }, null, -1)
958              ]))),
959              _cache[3] || (_cache[3] = createBaseVNode("p", null, " Based on the comparison of a 50-gallon Rheem Hybrid Electric model to a standard electric water heater of like capacity with minimum efficiency; Payback based on average retail cost difference less available incentives and annual operating cost savings. ", -1)),
960              _cache[4] || (_cache[4] = createBaseVNode("p", null, " RHEEM provides this Calculator as a convenience to help customers in analyzing potential cost savings when purchasing water heating products. THE CALCULATOR IS ONLY INTENDED FOR USE IN THE UNITED STATES and assumes a 365-day operation period by the user. The estimates provided by the Calculator are provided to help you determine whether you desire to further investigate combined water heating solutions with RHEEM. THE CALCULATOR ONLY PROVIDES ESTIMATES. SUCH ESTIMATES ARE NOT A GUARANTEE OF SAVINGS. A NUMBER OF OTHER FACTORS MAY AFFECT YOUR ACTUAL SAVINGS, AND YOUR ACTUAL SAVINGS MAY DIFFER. Please carefully read all of the terms of this Disclaimer. By viewing and utilizing this Cost Savings Tool, you acknowledge that you have read, agreed to, and understand this Disclaimer. ", -1)),
961              _cache[5] || (_cache[5] = createBaseVNode("p", null, " RHEEM PROVIDES THE CALCULATOR “AS IS” AND WITH ALL FAULTS, AND HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS, EITHER EXPRESS, IMPLIED, OR STATUTORY, INCLUDING BUT NOT LIMITED TO ANY IMPLIED WARRANTIES OR CONDITIONS OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE, QUIET ENJOYMENT, OR NON-INFRINGEMENT. ", -1)),
962              _cache[6] || (_cache[6] = createBaseVNode("p", null, " IN NO EVENT SHALL RHEEM BE LIABLE FOR ANY DAMAGES, INCLUDING CONSEQUENTIAL, INCIDENTAL, DIRECT, INDIRECT, SPECIAL, PUNITIVE, OR EXEMPLARY DAMAGES ARISING OUT OF OR IN ANY WAY RELATED TO THE USE OF OR INABILITY TO USE THE CALCULATOR, WHETHER BASED ON CONTRACT, TORT, NEGLIGENCE, STRICT LIABILITY OR OTHERWISE, EVEN IF RHEEM HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. THIS EXCLUSION OF DAMAGES SHALL BE EFFECTIVE EVEN IF ANY REMEDY FAILS ITS ESSENTIAL PURPOSE. ", -1)),
963              _cache[7] || (_cache[7] = createBaseVNode("p", null, " The Calculator is provided to you at no charge. Rheem has included in this Disclaimer terms that disclaim all warranties and liability for the Calculator. To the full extent allowed by law, BY USING THIS CALCULATOR, YOU HEREBY RELEASE RHEEM FROM ANY AND ALL LIABILITY ARISING FROM OR RELATED TO THE CALCULATOR OR ITS USE. ", -1)),
964              _cache[8] || (_cache[8] = createBaseVNode("p", null, " All title and copyrights in and to the Calculator are owned by Rheem Manufacturing Company. All trademarks are the property of Rheem Manufacturing Company or its respective owners. ", -1)),
965              _cache[9] || (_cache[9] = createBaseVNode("p", null, " The laws of the State of Georgia, USA will apply to this Disclaimer. ", -1)),
966              _cache[10] || (_cache[10] = createBaseVNode("p", null, " If you have any questions or you desire to contact RHEEM for any reason, please write: RHEEM Manufacturing Company; 1100 Abernathy Rd., Suite 1400; Atlanta, GA 30342. ", -1))
967            ])) : createCommentVNode("", true)
968          ])
969        ])
970      ])
971    ])
972  ], 64);
973}
974const _Page = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-71efb175"], ["__file", "+Page.vue"]]);
975const import4 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
976  __proto__: null,
977  default: _Page
978}, Symbol.toStringTag, { value: "Module" }));
979export {
980  import4 as i
981};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.