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.